@@ -6,7 +6,6 @@ project(BabelStream VERSION 4.0 LANGUAGES CXX)
6
6
# set(CMAKE_VERBOSE_MAKEFILE ON)
7
7
8
8
option (WITH_MPI "Enable MPI" OFF )
9
- find_package (MPI)
10
9
11
10
# some nicer defaults for standard C++
12
11
set (CMAKE_CXX_EXTENSIONS OFF )
@@ -70,6 +69,10 @@ hint_flag(CXX_EXTRA_LIBRARIES "
70
69
Use this for linking extra libraries (e.g `-lmylib`, or simply `mylib`)" )
71
70
hint_flag(CXX_EXTRA_LINKER_FLAGS "
72
71
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." )
73
76
74
77
# Honor user's CXX_EXTRA_LINK_FLAGS
75
78
set (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_
143
146
Default = `${DEFAULT_${BUILD_TYPE} _FLAGS}`
144
147
Override (RELEASE_FLAGS) = `${${BUILD_TYPE} _FLAGS}`
145
148
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} " )
150
155
151
156
# below we have all the usual CMake target setup steps
152
157
@@ -167,12 +172,17 @@ target_link_options(${EXE_NAME} PUBLIC ${LINK_FLAGS} ${CXX_EXTRA_LINK_FLAGS})
167
172
168
173
# If MPI is requested, link relevant libraries
169
174
if (WITH_MPI)
175
+ add_definitions (-DUSE_MPI)
176
+ find_package (MPI)
170
177
if (MPI_FOUND)
171
178
message (STATUS "MPI requested and found. Linking relevant MPI libraries." )
172
179
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} )
174
184
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. " )
176
186
endif ()
177
187
endif ()
178
188
0 commit comments