###-------------------------------------------------------------------------###
### CMakeList.txt for examples using pio
###-------------------------------------------------------------------------###

# Include PIO include and lib directories
INCLUDE_DIRECTORIES(${PIO_INCLUDE_DIRS} "${CMAKE_BINARY_DIR}")
include_directories("${CMAKE_SOURCE_DIR}/examples/c")
LINK_DIRECTORIES(${PIO_LIB_DIR})

set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -g -O0")
# Compiler-specific compiler options
if ("${CMAKE_C_COMPILER_ID}" STREQUAL "GNU")
  set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c99")
  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c99")
elseif ("${CMAKE_C_COMPILER_ID}" STREQUAL "PGI")
  set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -c99")
  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -c99")
elseif ("${CMAKE_C_COMPILER_ID}" STREQUAL "Intel")
  set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c99")
  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c99")
elseif ("${CMAKE_C_COMPILER_ID}" STREQUAL "Clang")
  set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c99")
  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c99")
endif()
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g -O0")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -O0")

ADD_EXECUTABLE(examplePio EXCLUDE_FROM_ALL examplePio.c)
TARGET_LINK_LIBRARIES(examplePio pioc)
add_dependencies(tests examplePio)

ADD_EXECUTABLE(piorcw piorcw.c)
TARGET_LINK_LIBRARIES(piorcw pioc)
add_dependencies(tests piorcw)

ADD_EXECUTABLE(example1 example1.c)
TARGET_LINK_LIBRARIES(example1 pioc)
add_dependencies(tests example1)

ADD_EXECUTABLE(darray_no_async darray_no_async.c)
TARGET_LINK_LIBRARIES(darray_no_async pioc)
add_dependencies(tests darray_no_async)

# ADD_EXECUTABLE(darray_async darray_async.c)
# TARGET_LINK_LIBRARIES(darray_async pioc)
# add_dependencies(tests darray_async)

if (PIO_USE_MPISERIAL)
  add_test(NAME examplePio COMMAND examplePio)
  add_test(NAME example1 COMMAND example1)
else ()
  add_mpi_test(examplePio EXECUTABLE ${CMAKE_CURRENT_BINARY_DIR}/examplePio NUMPROCS 4 TIMEOUT 60)
  add_mpi_test(example1 EXECUTABLE ${CMAKE_CURRENT_BINARY_DIR}/example1 NUMPROCS 4 TIMEOUT 60)
  #add_mpi_test(piorcw EXECUTABLE ${CMAKE_CURRENT_BINARY_DIR}/piorcw  NUMPROCS 16 TIMEOUT 600)
  #add_mpi_test(darray_async EXECUTABLE ${CMAKE_CURRENT_BINARY_DIR}/darray_async NUMPROCS 5 TIMEOUT 60)
  add_mpi_test(darray_no_async EXECUTABLE ${CMAKE_CURRENT_BINARY_DIR}/darray_no_async NUMPROCS 4 TIMEOUT 60)
endif ()


#===== MPE =====
find_package (MPE "2.4.8" COMPONENTS C)
if (PIO_ENABLE_FORTRAN)
  if (MPE_C_FOUND)
    SET(SRC example2.c)
    ADD_EXECUTABLE(example2 ${SRC})
    TARGET_LINK_LIBRARIES(example2 pioc)
    target_include_directories (example2
      PUBLIC ${MPE_C_INCLUDE_DIRS})
    target_compile_definitions (example2
      PUBLIC HAVE_MPE)
    target_link_libraries (example2 pioc lmpe mpe pthread m)
  endif ()
endif ()
