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}"
- "${DEAL_II_LINKER_FLAGS} ${DEAL_II_LINKER_FLAGS_SAVED} ${MPI_LINKER_FLAGS}"
+ "${_linker_flags} ${DEAL_II_LINKER_FLAGS_SAVED} ${MPI_LINKER_FLAGS}"
MPI_WORKING_COMPILER
${DEAL_II_LIBRARIES} ${MPI_LIBRARIES}
)
- IF(NOT MPI_WORKING_COMPILER)
- #
- # Try a workaround and drop "-fuse-ld=gold" (if present) from the
- # linker invocation
- #
- MESSAGE(STATUS "Unable to compile a simple test program. "
- "Try to drop \"-fuse-ld=gold\" from the linker flags."
+ 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."
)
- STRING(REPLACE "-fuse-ld=gold" "" _filtered_flags "${DEAL_II_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}"
- "${_filtered_flags} ${DEAL_II_LINKER_FLAGS_SAVED} ${MPI_LINKER_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 "${_filtered_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()
+ 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()