1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-18 18:42:46 +02:00

llvm-shlib: Create object libraries for each component and link against them

This makes it possible to build libLLVM.so without first creating a
static library for each component.  In the case where only libLLVM.so is
built (i.e. ninja LLVM) this eliminates 150 linker jobs.

Reviewed By: stellaraccident

Differential Revision: https://reviews.llvm.org/D95727
This commit is contained in:
Tom Stellard 2021-03-31 21:35:04 -07:00
parent 678c8737df
commit 26663577f0
2 changed files with 6 additions and 1 deletions

View File

@ -488,6 +488,7 @@ function(llvm_add_library name)
add_dependencies(${obj_name} ${link_lib})
endif()
endforeach()
target_link_libraries(${obj_name} ${ARG_LINK_LIBS})
endif()
endif()
@ -746,7 +747,7 @@ function(add_llvm_component_library name)
"COMPONENT_NAME;ADD_TO_COMPONENT"
""
${ARGN})
add_llvm_library(${name} COMPONENT_LIB ${ARG_UNPARSED_ARGUMENTS})
add_llvm_library(${name} COMPONENT_LIB OBJECT ${ARG_UNPARSED_ARGUMENTS})
string(REGEX REPLACE "^LLVM" "" component_name ${name})
set_property(TARGET ${name} PROPERTY LLVM_COMPONENT_NAME ${component_name})

View File

@ -33,6 +33,10 @@ if(LLVM_BUILD_LLVM_DYLIB)
add_llvm_library(LLVM SHARED DISABLE_LLVM_LINK_LLVM_DYLIB SONAME ${INSTALL_WITH_TOOLCHAIN} ${SOURCES})
list(REMOVE_DUPLICATES LIB_NAMES)
# Link against the object libraries instead of static libraries.
list(TRANSFORM LIB_NAMES PREPEND "obj.")
if(("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux") OR (MINGW) OR (HAIKU)
OR ("${CMAKE_SYSTEM_NAME}" STREQUAL "FreeBSD")
OR ("${CMAKE_SYSTEM_NAME}" STREQUAL "GNU")