########################################################################
#Process MPI settings
########################################################################
+include(CheckCSourceCompiles) # for gmxTestMPI_IN_PLACE
if(GMX_MPI)
MESSAGE(WARNING "
There are known problems with some MPI implementations:
+++ /dev/null
-
-#include <mpi.h>
-
-int main(void)
-{
- void *buf;
- MPI_Allreduce(MPI_IN_PLACE, buf, 10, MPI_FLOAT, MPI_SUM, MPI_COMM_WORLD);
-}
-
-
MACRO(GMX_TEST_MPI_IN_PLACE VARIABLE)
MESSAGE(STATUS "Checking for MPI_IN_PLACE")
- # First check without any special flags
- TRY_COMPILE(MPI_IN_PLACE_COMPILE_OK ${CMAKE_BINARY_DIR}
- "${CMAKE_SOURCE_DIR}/cmake/TestMPI_IN_PLACE.c"
- COMPILE_DEFINITIONS )
+
+ set(CMAKE_REQUIRED_DEFINITIONS ${MPI_COMPILE_FLAGS})
+ set(CMAKE_REQUIRED_INCLUDES ${MPI_INCLUDE_PATH})
+ set(CMAKE_REQUIRED_LIBRARIES ${MPI_LIBRARIES})
+ check_c_source_compiles(
+ "#include <mpi.h>
+int main(void) {
+ void* buf;
+ MPI_Allreduce(MPI_IN_PLACE, buf, 10, MPI_FLOAT, MPI_SUM, MPI_COMM_WORLD);
+}" MPI_IN_PLACE_COMPILE_OK)
if(MPI_IN_PLACE_COMPILE_OK)
- MESSAGE(STATUS "Checking for MPI_IN_PLACE - yes")
- set(${VARIABLE} ${MPI_IN_PLACE_COMPILE_OK}
+ MESSAGE(STATUS "Checking for MPI_IN_PLACE - yes")
+ set(${VARIABLE} ${MPI_IN_PLACE_COMPILE_OK}
"Result of test for MPI_IN_PLACE")
else(MPI_IN_PLACE_COMPILE_OK)
MESSAGE(STATUS "Checking for MPI_IN_PLACE - no")