Skip to content

Commit 468d002

Browse files
committed
Allow for manually specifying MPI flags
1 parent e527317 commit 468d002

File tree

1 file changed

+17
-7
lines changed

1 file changed

+17
-7
lines changed

CMakeLists.txt

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ project(BabelStream VERSION 4.0 LANGUAGES CXX)
66
# set(CMAKE_VERBOSE_MAKEFILE ON)
77

88
option(WITH_MPI "Enable MPI" OFF)
9-
find_package(MPI)
109

1110
# some nicer defaults for standard C++
1211
set(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`)")
7170
hint_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
7578
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_
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
169174
if (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 ()
177187
endif ()
178188

0 commit comments

Comments
 (0)