macOS/Linker: support mold and lld
If someone buys "sold", mold should work on macOS too. With lld, Blender (700 MB) intel i5: 26s -> 17s. Pull Request #106843
This commit is contained in:
parent
da75495ada
commit
9ffd413008
@ -645,15 +645,15 @@ if(WIN32)
|
||||
endif()
|
||||
|
||||
# Compiler tool-chain.
|
||||
if(UNIX AND NOT APPLE)
|
||||
if(UNIX)
|
||||
if(CMAKE_COMPILER_IS_GNUCC)
|
||||
option(WITH_LINKER_GOLD "Use ld.gold linker which is usually faster than ld.bfd" ON)
|
||||
mark_as_advanced(WITH_LINKER_GOLD)
|
||||
option(WITH_LINKER_LLD "Use ld.lld linker which is usually faster than ld.gold" OFF)
|
||||
mark_as_advanced(WITH_LINKER_LLD)
|
||||
endif()
|
||||
if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID MATCHES "Clang")
|
||||
option(WITH_LINKER_MOLD "Use ld.mold linker which is usually faster than ld.gold & ld.lld." OFF)
|
||||
option(WITH_LINKER_LLD "Use ld.lld linker which is usually faster than ld.gold" OFF)
|
||||
mark_as_advanced(WITH_LINKER_LLD)
|
||||
option(WITH_LINKER_MOLD "Use ld.mold linker which is usually faster than ld.gold & ld.lld. Needs \"sold\" subscription on macOS." OFF)
|
||||
mark_as_advanced(WITH_LINKER_MOLD)
|
||||
endif()
|
||||
endif()
|
||||
|
@ -451,6 +451,31 @@ if(WITH_COMPILER_CCACHE)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
unset(_custom_LINKER_FUSE_FLAG)
|
||||
if(WITH_LINKER_LLD)
|
||||
find_program(LLD_PROGRAM ld.lld)
|
||||
if(LLD_PROGRAM)
|
||||
set(_custom_LINKER_FUSE_FLAG "-fuse-ld=lld")
|
||||
else()
|
||||
message(WARNING "LLD linker NOT found, disabling WITH_LINKER_LLD")
|
||||
set(WITH_LINKER_LLD OFF)
|
||||
endif()
|
||||
endif()
|
||||
if(WITH_LINKER_MOLD)
|
||||
find_program(MOLD_PROGRAM mold)
|
||||
if(MOLD_PROGRAM)
|
||||
set(_custom_LINKER_FUSE_FLAG "-fuse-ld=mold")
|
||||
else()
|
||||
message(WARNING "Mold linker NOT found, disabling WITH_LINKER_MOLD")
|
||||
set(WITH_LINKER_MOLD OFF)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(_custom_LINKER_FUSE_FLAG)
|
||||
add_link_options(${_custom_LINKER_FUSE_FLAG})
|
||||
endif()
|
||||
|
||||
|
||||
if(WITH_COMPILER_ASAN)
|
||||
list(APPEND PLATFORM_BUNDLED_LIBRARIES ${COMPILER_ASAN_LIBRARY})
|
||||
endif()
|
||||
|
Loading…
Reference in New Issue
Block a user