12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- cmake_minimum_required(VERSION 3.8)
- project(TestFindMPI NONE)
- include(CTest)
- macro(source_code_mapper_helper LANG_NAME)
- if("${LANG_NAME}" STREQUAL "C")
- set(MPITEST_SOURCE_FILE "main.c")
- elseif("${LANG_NAME}" STREQUAL "CXX")
- configure_file("main.c" "main.cxx" COPYONLY)
- set(MPITEST_SOURCE_FILE "main.cxx")
- elseif("${LANG_NAME}" STREQUAL "Fortran")
- set(MPITEST_SOURCE_FILE "main.f90")
- endif()
- endmacro()
- foreach(c C CXX Fortran)
- if("${MPI_TEST_${c}}")
- message("Testing ${c}")
- enable_language(${c})
- endif()
- endforeach()
- set(MPI_CXX_SKIP_MPICXX TRUE)
- set(MPI_CXX_VALIDATE_SKIP_MPICXX TRUE)
- find_package(MPI REQUIRED)
- foreach(c C CXX Fortran)
- if(NOT "${MPI_TEST_${c}}")
- continue()
- endif()
- if(${c} STREQUAL CXX AND MPI_MPICXX_FOUND)
- message(FATAL_ERROR "Could not suppress MPI-2 C++ bindings for this MPI.")
- endif()
- source_code_mapper_helper(${c})
- add_executable(test_tgt_${c} ${MPITEST_SOURCE_FILE})
- target_link_libraries(test_tgt_${c} MPI::MPI_${c})
- add_test(NAME test_tgt_${c} COMMAND test_tgt_${c})
- add_executable(test_var_${c} ${MPITEST_SOURCE_FILE})
- target_include_directories(test_var_${c} PRIVATE "${MPI_${c}_INCLUDE_PATH}")
- target_link_libraries(test_var_${c} PRIVATE "${MPI_${c}_LINK_FLAGS}" "${MPI_${c}_LIBRARIES}")
- set(copied_MPI_${c}_OPTIONS "${MPI_${c}_COMPILE_FLAGS}")
- separate_arguments(copied_MPI_${c}_OPTIONS)
- target_compile_options(test_var_${c} PRIVATE "${copied_MPI_${c}_OPTIONS}")
- add_test(NAME test_var_${c} COMMAND test_var_${c})
- endforeach()
|