From 06a02074212136dd533c23d5c8460a22179a40e0 Mon Sep 17 00:00:00 2001 From: Matthias Maier Date: Mon, 18 Mar 2019 13:06:20 -0500 Subject: [PATCH] CMake: Refactor MPI sanity check into setup_finalize.cmake --- cmake/configure/configure_1_mpi.cmake | 74 --------------------------- cmake/setup_finalize.cmake | 52 ++++++++++++++++--- 2 files changed, 46 insertions(+), 80 deletions(-) diff --git a/cmake/configure/configure_1_mpi.cmake b/cmake/configure/configure_1_mpi.cmake index f3f27eb92e..a5929c5908 100644 --- a/cmake/configure/configure_1_mpi.cmake +++ b/cmake/configure/configure_1_mpi.cmake @@ -39,80 +39,6 @@ MACRO(FEATURE_MPI_FIND_EXTERNAL var) SET(${var} FALSE) ENDIF() - # - # Check that we can link with the full MPI interface: - # - - SET(_linker_flags "${DEAL_II_LINKER_FLAGS}") - - CHECK_COMPILER_SETUP( - "${DEAL_II_CXX_FLAGS} ${DEAL_II_CXX_FLAGS_SAVED} ${MPI_CXX_FLAGS}" - "${_linker_flags} ${DEAL_II_LINKER_FLAGS_SAVED} ${MPI_LINKER_FLAGS}" - MPI_WORKING_COMPILER - ${DEAL_II_LIBRARIES} ${MPI_LIBRARIES} - ) - - IF(NOT MPI_WORKING_COMPILER AND DEAL_II_COMPILER_HAS_FUSE_LD_LLD) - MESSAGE(STATUS - "Unable to compile a simple test program. " - "Trying to drop \"-fuse-ld=lld\" from the linker flags." - ) - - IF(DEAL_II_COMPILER_HAS_FUSE_LD_GOLD) - STRING(REPLACE "-fuse-ld=lld" "-fuse-ld=gold" - _linker_flags "${_linker_flags}" - ) - ELSE() - STRING(REPLACE "-fuse-ld=lld" "" - _linker_flags "${_linker_flags}" - ) - ENDIF() - - SET(DEAL_II_COMPILER_HAS_FUSE_LD_LLD FALSE CACHE INTERNAL "" FORCE) - SET(DEAL_II_COMPILER_HAS_FUSE_LD_LLD FALSE) - - CHECK_COMPILER_SETUP( - "${DEAL_II_CXX_FLAGS} ${DEAL_II_CXX_FLAGS_SAVED} ${MPI_CXX_FLAGS}" - "${_linker_flags} ${DEAL_II_LINKER_FLAGS_SAVED} ${MPI_LINKER_FLAGS}" - MPI_WORKING_COMPILER - ${DEAL_II_LIBRARIES} ${MPI_LIBRARIES} - ) - ENDIF() - - IF(NOT MPI_WORKING_COMPILER AND DEAL_II_COMPILER_HAS_FUSE_LD_GOLD) - MESSAGE(STATUS - "Unable to compile a simple test program. " - "Trying to drop \"-fuse-ld=gold\" from the linker flags." - ) - - STRING(REPLACE "-fuse-ld=gold" "" - _linker_flags "${_linker_flags}" - ) - - SET(DEAL_II_COMPILER_HAS_FUSE_LD_GOLD FALSE CACHE INTERNAL "" FORCE) - SET(DEAL_II_COMPILER_HAS_FUSE_LD_GOLD FALSE) - - CHECK_COMPILER_SETUP( - "${DEAL_II_CXX_FLAGS} ${DEAL_II_CXX_FLAGS_SAVED} ${MPI_CXX_FLAGS}" - "${_linker_flags} ${DEAL_II_LINKER_FLAGS_SAVED} ${MPI_LINKER_FLAGS}" - MPI_WORKING_COMPILER - ${DEAL_II_LIBRARIES} ${MPI_LIBRARIES} - ) - ENDIF() - - IF(MPI_WORKING_COMPILER) - SET(DEAL_II_LINKER_FLAGS "${_linker_flags}") - ELSE() - MESSAGE(STATUS "Could not find a sufficient MPI installation: " - "Unable to compile a simple test program." - ) - SET(MPI_ADDITIONAL_ERROR_STRING - ${MPI_ADDITIONAL_ERROR_STRING} - "Unable to compile and link a simple test program with your MPI installation. \n" - ) - SET(${var} FALSE) - ENDIF() - ENDIF() ENDMACRO() diff --git a/cmake/setup_finalize.cmake b/cmake/setup_finalize.cmake index da1d0b9e77..1df5d7b271 100644 --- a/cmake/setup_finalize.cmake +++ b/cmake/setup_finalize.cmake @@ -84,12 +84,52 @@ ENDFOREACH() # FOREACH(build ${DEAL_II_BUILD_TYPES}) - CHECK_COMPILER_SETUP( - "${DEAL_II_CXX_FLAGS} ${DEAL_II_CXX_FLAGS_${build}}" - "${DEAL_II_LINKER_FLAGS} ${DEAL_II_LINKER_FLAGS_${build}}" - DEAL_II_HAVE_USABLE_FLAGS_${build} - ${DEAL_II_LIBRARIES} ${DEAL_II_LIBRARIES_${build}} - ) + + MACRO(_check_linker_flags) + CHECK_COMPILER_SETUP( + "${DEAL_II_CXX_FLAGS} ${DEAL_II_CXX_FLAGS_${build}}" + "${DEAL_II_LINKER_FLAGS} ${DEAL_II_LINKER_FLAGS_${build}}" + DEAL_II_HAVE_USABLE_FLAGS_${build} + ${DEAL_II_LIBRARIES} ${DEAL_II_LIBRARIES_${build}} + ) + ENDMACRO() + + MACRO(_drop_linker_flag _linker_flag _replacement_flag _variable) + MESSAGE(STATUS + "Unable to compile a simple test program. " + "Trying to drop \"${_linker_flag}\" from the linker flags." + ) + STRING(REPLACE "${_linker_flag}" "${_replacement_flag}" + DEAL_II_LINKER_FLAGS "${DEAL_II_LINKER_FLAGS}" + ) + STRING(REPLACE "${_linker_flag}" "${_replacement_flag}" + DEAL_II_LINKER_FLAGS_${build} "${DEAL_II_LINKER_FLAGS_${_build}}" + ) + SET(${_variable} FALSE CACHE INTERNAL "" FORCE) + SET(${_variable} FALSE) + ENDMACRO() + + _check_linker_flags() + + IF(NOT DEAL_II_HAVE_USABLE_FLAGS_${build} AND DEAL_II_COMPILER_HAS_FUSE_LD_LLD) + SET(_replacement "") + IF(DEAL_II_COMPILER_HAS_FUSE_LD_GOLD) + SET(_replacement "-fuse-ld=gold") + ENDIF() + _drop_linker_flag( + "-fuse-ld=lld" ${_replacement} + DEAL_II_COMPILER_HAS_FUSE_LD_LLD + ) + _check_linker_flags() + ENDIF() + + IF(NOT DEAL_II_HAVE_USABLE_FLAGS_${build} AND DEAL_II_COMPILER_HAS_FUSE_LD_GOLD) + _drop_linker_flag( + "-fuse-ld=gold" "" + DEAL_II_COMPILER_HAS_FUSE_LD_GOLD + ) + _check_linker_flags() + ENDIF() IF(NOT DEAL_II_HAVE_USABLE_FLAGS_${build}) MESSAGE(FATAL_ERROR " -- 2.39.5