From 468d0026f0b115715114116634fa88e31f48e8ed Mon Sep 17 00:00:00 2001 From: Thomas Gibson <14180421+thomasgibson@users.noreply.github.com> Date: Mon, 17 Oct 2022 22:04:42 -0700 Subject: [PATCH] Allow for manually specifying MPI flags --- CMakeLists.txt | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 8e599e7a..88f73df1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,7 +6,6 @@ project(BabelStream VERSION 4.0 LANGUAGES CXX) # set(CMAKE_VERBOSE_MAKEFILE ON) option(WITH_MPI "Enable MPI" OFF) -find_package(MPI) # some nicer defaults for standard C++ set(CMAKE_CXX_EXTENSIONS OFF) @@ -70,6 +69,10 @@ hint_flag(CXX_EXTRA_LIBRARIES " Use this for linking extra libraries (e.g `-lmylib`, or simply `mylib`)") hint_flag(CXX_EXTRA_LINKER_FLAGS " Append to linker flags (i.e GCC's `-Wl` or equivalent)") +hint_flag(MPI_CXX_FLAGS " + Append MPI flags to common compile flags.") +hint_flag(MPI_CXX_LINKER_FLAGS " + Append linking flags specific to MPI.") # Honor user's CXX_EXTRA_LINK_FLAGS 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_ Default = `${DEFAULT_${BUILD_TYPE}_FLAGS}` Override (RELEASE_FLAGS) = `${${BUILD_TYPE}_FLAGS}` Extras (CXX_EXTRA_FLAGS) = `${CXX_EXTRA_FLAGS}`") -message(STATUS "Link Flags : ${LINK_FLAGS} ${CXX_EXTRA_LINK_FLAGS}") -message(STATUS "Linker Flags: ${CMAKE_EXE_LINKER_FLAGS} ${CXX_EXTRA_LINKER_FLAGS} ") -message(STATUS "Defs : ${IMPL_DEFINITIONS}") -message(STATUS "Executable : ${EXE_NAME}") +message(STATUS "MPI CXX Flags : ${MPI_CXX_FLAGS}") +message(STATUS "Link Flags : ${LINK_FLAGS} ${CXX_EXTRA_LINK_FLAGS}") +message(STATUS "MPI Link Flags : ${MPI_CXX_LINKER_FLAGS}") +message(STATUS "Linker Flags : ${CMAKE_EXE_LINKER_FLAGS} ${CXX_EXTRA_LINKER_FLAGS} ") +message(STATUS "Defs : ${IMPL_DEFINITIONS}") +message(STATUS "Executable : ${EXE_NAME}") # below we have all the usual CMake target setup steps @@ -167,12 +172,17 @@ target_link_options(${EXE_NAME} PUBLIC ${LINK_FLAGS} ${CXX_EXTRA_LINK_FLAGS}) # If MPI is requested, link relevant libraries if (WITH_MPI) + add_definitions(-DUSE_MPI) + find_package(MPI) if (MPI_FOUND) message(STATUS "MPI requested and found. Linking relevant MPI libraries.") target_link_libraries(${EXE_NAME} PUBLIC MPI::MPI_CXX) - add_definitions(-DUSE_MPI) + elseif (MPI_CXX_FLAGS OR MPI_CXX_LINKER_FLAGS) + message(STATUS "MPI requested. Using provided MPI_CXX_FLAGS and MPI_CXX_LINKER_FLAGS.") + target_compile_options(${EXE_NAME} PUBLIC ${MPI_CXX_FLAGS}) + target_link_libraries(${EXE_NAME} PUBLIC ${MPI_CXX_LINKER_FLAGS}) else () - message(FATAL_ERROR "MPI requested, but no implementation has been detected.") + message(FATAL_ERROR "MPI requested, but no implementation has been detected. Please specify MPI_CXX_FLAGS and MPI_CXX_LINKER_FLAGS.") endif () endif ()