@@ -6,7 +6,6 @@ project(BabelStream VERSION 4.0 LANGUAGES CXX)
66# set(CMAKE_VERBOSE_MAKEFILE ON)
77
88option (WITH_MPI "Enable MPI" OFF )
9- find_package (MPI)
109
1110# some nicer defaults for standard C++
1211set (CMAKE_CXX_EXTENSIONS OFF )
@@ -70,6 +69,10 @@ hint_flag(CXX_EXTRA_LIBRARIES "
7069 Use this for linking extra libraries (e.g `-lmylib`, or simply `mylib`)" )
7170hint_flag(CXX_EXTRA_LINKER_FLAGS "
7271 Append to linker flags (i.e GCC's `-Wl` or equivalent)" )
72+ hint_flag(MPI_CXX_FLAGS "
73+ Append MPI flags to common compile flags." )
74+ hint_flag(MPI_CXX_LINKER_FLAGS "
75+ Append linking flags specific to MPI." )
7376
7477# Honor user's CXX_EXTRA_LINK_FLAGS
7578set (CXX_EXTRA_LINK_FLAGS ${CXX_EXTRA_FLAGS} ${CXX_EXTRA_LINK_FLAGS} )
@@ -143,10 +146,12 @@ message(STATUS "CXX Flags : ${CMAKE_CXX_FLAGS_${BUILD_TYPE}} ${ACTUAL_${BUILD_
143146 Default = `${DEFAULT_${BUILD_TYPE} _FLAGS}`
144147 Override (RELEASE_FLAGS) = `${${BUILD_TYPE} _FLAGS}`
145148 Extras (CXX_EXTRA_FLAGS) = `${CXX_EXTRA_FLAGS} `" )
146- message (STATUS "Link Flags : ${LINK_FLAGS} ${CXX_EXTRA_LINK_FLAGS} " )
147- message (STATUS "Linker Flags: ${CMAKE_EXE_LINKER_FLAGS} ${CXX_EXTRA_LINKER_FLAGS} " )
148- message (STATUS "Defs : ${IMPL_DEFINITIONS} " )
149- message (STATUS "Executable : ${EXE_NAME} " )
149+ message (STATUS "MPI CXX Flags : ${MPI_CXX_FLAGS} " )
150+ message (STATUS "Link Flags : ${LINK_FLAGS} ${CXX_EXTRA_LINK_FLAGS} " )
151+ message (STATUS "MPI Link Flags : ${MPI_CXX_LINKER_FLAGS} " )
152+ message (STATUS "Linker Flags : ${CMAKE_EXE_LINKER_FLAGS} ${CXX_EXTRA_LINKER_FLAGS} " )
153+ message (STATUS "Defs : ${IMPL_DEFINITIONS} " )
154+ message (STATUS "Executable : ${EXE_NAME} " )
150155
151156# below we have all the usual CMake target setup steps
152157
@@ -167,12 +172,17 @@ target_link_options(${EXE_NAME} PUBLIC ${LINK_FLAGS} ${CXX_EXTRA_LINK_FLAGS})
167172
168173# If MPI is requested, link relevant libraries
169174if (WITH_MPI)
175+ add_definitions (-DUSE_MPI)
176+ find_package (MPI)
170177 if (MPI_FOUND)
171178 message (STATUS "MPI requested and found. Linking relevant MPI libraries." )
172179 target_link_libraries (${EXE_NAME} PUBLIC MPI::MPI_CXX)
173- add_definitions (-DUSE_MPI)
180+ elseif (MPI_CXX_FLAGS OR MPI_CXX_LINKER_FLAGS)
181+ message (STATUS "MPI requested. Using provided MPI_CXX_FLAGS and MPI_CXX_LINKER_FLAGS." )
182+ target_compile_options (${EXE_NAME} PUBLIC ${MPI_CXX_FLAGS} )
183+ target_link_libraries (${EXE_NAME} PUBLIC ${MPI_CXX_LINKER_FLAGS} )
174184 else ()
175- message (FATAL_ERROR "MPI requested, but no implementation has been detected." )
185+ message (FATAL_ERROR "MPI requested, but no implementation has been detected. Please specify MPI_CXX_FLAGS and MPI_CXX_LINKER_FLAGS. " )
176186 endif ()
177187endif ()
178188
0 commit comments