You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
|
if(NOT CMAKE_CROSSCOMPILING)
|
|
|
|
|
find_program(
|
|
|
|
|
LD_MOLD_PATH
|
|
|
|
|
ld
|
|
|
|
|
PATHS
|
|
|
|
|
${CMAKE_INSTALL_PREFIX}/libexec/mold
|
|
|
|
|
ENV LD_MOLD_PATH
|
|
|
|
|
NO_DEFAULT_PATH
|
|
|
|
|
)
|
|
|
|
|
if(NOT LD_MOLD_PATH STREQUAL "LD_MOLD_PATH-NOTFOUND")
|
|
|
|
|
set(_have_ld_mold ON)
|
|
|
|
|
else()
|
|
|
|
|
set(_have_ld_mold OFF)
|
|
|
|
|
endif()
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
option(USE_LD_MOLD "Use mold linker" ${_have_ld_mold})
|
|
|
|
|
|
|
|
|
|
if(USE_LD_MOLD)
|
|
|
|
|
message("-- Using Mold linker (pass -DUSE_LD_MOLD=OFF to disable)")
|
|
|
|
|
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 12)
|
|
|
|
|
if (_have_ld_mold)
|
|
|
|
|
get_filename_component(_mold_dir ${LD_MOLD_PATH} DIRECTORY)
|
|
|
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -B${_mold_dir}")
|
|
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -B${_mold_dir}")
|
|
|
|
|
else()
|
|
|
|
|
message(WARNING "Cannot use mold linker: mold ld directory not found")
|
|
|
|
|
endif()
|
|
|
|
|
elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang|GNU")
|
|
|
|
|
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fuse-ld=mold")
|
|
|
|
|
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -fuse-ld=mold")
|
|
|
|
|
endif()
|
|
|
|
|
endif()
|