diff --git a/Builds/CMake/RippledCompiler.cmake b/Builds/CMake/RippledCompiler.cmake index aa8f1d1eb76..43afc628bc3 100644 --- a/Builds/CMake/RippledCompiler.cmake +++ b/Builds/CMake/RippledCompiler.cmake @@ -131,7 +131,16 @@ else () >) endif () -if (use_gold AND is_gcc) +if (use_mold) + # use mold linker if available + execute_process ( + COMMAND ${CMAKE_CXX_COMPILER} -fuse-ld=mold -Wl,--version + ERROR_QUIET OUTPUT_VARIABLE LD_VERSION) + if ("${LD_VERSION}" MATCHES "mold") + target_link_libraries (common INTERFACE -fuse-ld=mold) + endif () + unset (LD_VERSION) +elseif (use_gold AND is_gcc) # use gold linker if available execute_process ( COMMAND ${CMAKE_CXX_COMPILER} -fuse-ld=gold -Wl,--version @@ -163,9 +172,7 @@ if (use_gold AND is_gcc) $<$>:-Wl,--disable-new-dtags>) endif () unset (LD_VERSION) -endif () - -if (use_lld) +elseif (use_lld) # use lld linker if available execute_process ( COMMAND ${CMAKE_CXX_COMPILER} -fuse-ld=lld -Wl,--version @@ -176,6 +183,7 @@ if (use_lld) unset (LD_VERSION) endif() + if (assert) foreach (var_ CMAKE_C_FLAGS_RELEASE CMAKE_CXX_FLAGS_RELEASE) STRING (REGEX REPLACE "[-/]DNDEBUG" "" ${var_} "${${var_}}") diff --git a/Builds/CMake/RippledSettings.cmake b/Builds/CMake/RippledSettings.cmake index 0cdfb8e84db..c8195c7b922 100644 --- a/Builds/CMake/RippledSettings.cmake +++ b/Builds/CMake/RippledSettings.cmake @@ -37,6 +37,7 @@ if (is_linux) option (static "link protobuf, openssl, libc++, and boost statically" ON) option (perf "Enables flags that assist with perf recording" OFF) option (use_gold "enables detection of gold (binutils) linker" ON) + option (use_mold "enables detection of mold (binutils) linker" ON) else () # we are not ready to allow shared-libs on windows because it would require # export declarations. On macos it's more feasible, but static openssl @@ -45,6 +46,7 @@ else () set (static ON CACHE BOOL "static link, linux only. ON for WIN/macos" FORCE) set (perf OFF CACHE BOOL "perf flags, linux only" FORCE) set (use_gold OFF CACHE BOOL "gold linker, linux only" FORCE) + set (use_mold OFF CACHE BOOL "mold linker, linux only" FORCE) endif () if (is_clang) option (use_lld "enables detection of lld linker" ON)