diff --git a/cmake/Modules/Testing.cmake b/cmake/Modules/Testing.cmake index 4862a0d38e..7aa3506642 100644 --- a/cmake/Modules/Testing.cmake +++ b/cmake/Modules/Testing.cmake @@ -21,22 +21,15 @@ if(ENABLE_TESTING) # also only verified with Fedora Linux > 30 and Ubuntu 18.04 or 22.04+(Ubuntu 20.04 fails) if((CMAKE_SYSTEM_NAME STREQUAL "Linux") AND ((CMAKE_CXX_COMPILER_ID STREQUAL "GNU") OR (CMAKE_CXX_COMPILER_ID STREQUAL "Clang"))) - if(((CMAKE_LINUX_DISTRO STREQUAL "Ubuntu") AND - ((CMAKE_DISTRO_VERSION VERSION_LESS_EQUAL 18.04) OR (CMAKE_DISTRO_VERSION VERSION_GREATER_EQUAL 22.04))) + if(((CMAKE_LINUX_DISTRO STREQUAL "Ubuntu") AND (CMAKE_DISTRO_VERSION VERSION_GREATER_EQUAL 22.04)) OR ((CMAKE_LINUX_DISTRO STREQUAL "Fedora") AND (CMAKE_DISTRO_VERSION VERSION_GREATER 30))) include(CheckCXXCompilerFlag) set(CMAKE_CUSTOM_LINKER_DEFAULT default) - if((CMAKE_CXX_COMPILER_ID STREQUAL "Clang") AND (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 19.9)) - check_cxx_compiler_flag(--ld-path=mold HAVE_MOLD_LINKER_FLAG) - check_cxx_compiler_flag(--ld-path=lld HAVE_LLD_LINKER_FLAG) - check_cxx_compiler_flag(--ld-path=gold HAVE_GOLD_LINKER_FLAG) - check_cxx_compiler_flag(--ld-path=bfd HAVE_BFD_LINKER_FLAG) - else() - check_cxx_compiler_flag(-fuse-ld=mold HAVE_MOLD_LINKER_FLAG) - check_cxx_compiler_flag(-fuse-ld=lld HAVE_LLD_LINKER_FLAG) - check_cxx_compiler_flag(-fuse-ld=gold HAVE_GOLD_LINKER_FLAG) - check_cxx_compiler_flag(-fuse-ld=bfd HAVE_BFD_LINKER_FLAG) - endif() + check_cxx_compiler_flag(--ld-path=${CMAKE_LINKER} HAVE_LD_PATH_FLAG) + check_cxx_compiler_flag(-fuse-ld=mold HAVE_MOLD_LINKER_FLAG) + check_cxx_compiler_flag(-fuse-ld=lld HAVE_LLD_LINKER_FLAG) + check_cxx_compiler_flag(-fuse-ld=gold HAVE_GOLD_LINKER_FLAG) + check_cxx_compiler_flag(-fuse-ld=bfd HAVE_BFD_LINKER_FLAG) find_program(HAVE_MOLD_LINKER_BIN ld.mold) find_program(HAVE_LLD_LINKER_BIN lld ld.lld) find_program(HAVE_GOLD_LINKER_BIN ld.gold) @@ -55,10 +48,17 @@ if(ENABLE_TESTING) validate_option(CMAKE_CUSTOM_LINKER CMAKE_CUSTOM_LINKER_VALUES) mark_as_advanced(CMAKE_CUSTOM_LINKER) if(NOT "${CMAKE_CUSTOM_LINKER}" STREQUAL "default") - if((CMAKE_CXX_COMPILER_ID STREQUAL "Clang") AND (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 19.9)) - target_link_options(lammps PUBLIC --ld-path=${CMAKE_CUSTOM_LINKER}) - else() - target_link_options(lammps PUBLIC -fuse-ld=${CMAKE_CUSTOM_LINKER}) + target_link_options(lammps PUBLIC -fuse-ld=${CMAKE_CUSTOM_LINKER}) + endif() + if(HAVE_LD_PATH_FLAG) + if("${CMAKE_CUSTOM_LINKER}" STREQUAL "mold") + target_link_options(lammps PUBLIC --ld-path=${HAVE_MOLD_LINKER_BIN}) + elseif("${CMAKE_CUSTOM_LINKER}" STREQUAL "lld") + target_link_options(lammps PUBLIC --ld-path=${HAVE_LLD_LINKER_BIN}) + elseif("${CMAKE_CUSTOM_LINKER}" STREQUAL "gold") + target_link_options(lammps PUBLIC --ld-path=${HAVE_GOLD_LINKER_BIN}) + elseif("${CMAKE_CUSTOM_LINKER}" STREQUAL "bfd") + target_link_options(lammps PUBLIC --ld-path=${HAVE_BFD_LINKER_BIN}) endif() endif() endif()