From 2a996c877af09308d4676a16cefb59d1ef1d2eb4 Mon Sep 17 00:00:00 2001 From: Roman Zhuykov Date: Fri, 17 May 2024 18:31:27 +0300 Subject: [PATCH] Introduce option for splitting libllvm.so MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Issue:https://gitee.com/openharmony/third_party_llvm-project/issues/I9Q9EY Signed-off-by: Roman Zhuykov --- llvm-build/build.py | 2 +- llvm/CMakeLists.txt | 1 + llvm/lib/Target/XVM/CMakeLists.txt | 2 +- .../Target/XVM/MCTargetDesc/CMakeLists.txt | 2 +- llvm/lib/Target/XVM/TargetInfo/CMakeLists.txt | 4 +- llvm/tools/llvm-shlib/CMakeLists.txt | 45 +++++++++++-------- 6 files changed, 33 insertions(+), 23 deletions(-) diff --git a/llvm-build/build.py b/llvm-build/build.py index b378ac12cc9e..e5fbddec070e 100755 --- a/llvm-build/build.py +++ b/llvm-build/build.py @@ -82,7 +82,7 @@ class BuildConfig(): self.enable_check_abi = args.enable_check_abi self.discover_paths() - self.TARGETS = 'AArch64;ARM;BPF;Mips;RISCV;X86' + self.TARGETS = 'AArch64;ARM;BPF;XVM;Mips;RISCV;X86' self.ORIG_ENV = dict(os.environ) self.VERSION = None # autodetected diff --git a/llvm/CMakeLists.txt b/llvm/CMakeLists.txt index 34c1f19a9f95..7034d7f2076e 100644 --- a/llvm/CMakeLists.txt +++ b/llvm/CMakeLists.txt @@ -704,6 +704,7 @@ else() set(LLVM_BUILD_LLVM_DYLIB_default ON) endif() option(LLVM_BUILD_LLVM_DYLIB "Build libllvm dynamic library" ${LLVM_BUILD_LLVM_DYLIB_default}) + option(LLVM_SPLIT_LLVM_DYLIB_TARGETS "Split libllvm dynamic library per targets" OFF) # OHOS_LOCAL endif() if (LLVM_LINK_LLVM_DYLIB AND BUILD_SHARED_LIBS) diff --git a/llvm/lib/Target/XVM/CMakeLists.txt b/llvm/lib/Target/XVM/CMakeLists.txt index 0f5ef89440fd..0fe324ea3f8b 100644 --- a/llvm/lib/Target/XVM/CMakeLists.txt +++ b/llvm/lib/Target/XVM/CMakeLists.txt @@ -1,5 +1,5 @@ -if(LLVM_BUILD_LLVM_DYLIB) +if(LLVM_SPLIT_LLVM_DYLIB_TARGETS) ADD_DEFINITIONS("-DXVM_DYLIB_MODE=1") endif() diff --git a/llvm/lib/Target/XVM/MCTargetDesc/CMakeLists.txt b/llvm/lib/Target/XVM/MCTargetDesc/CMakeLists.txt index 04738c3f0a8c..d290513bf911 100644 --- a/llvm/lib/Target/XVM/MCTargetDesc/CMakeLists.txt +++ b/llvm/lib/Target/XVM/MCTargetDesc/CMakeLists.txt @@ -1,5 +1,5 @@ -if(LLVM_BUILD_LLVM_DYLIB) +if(LLVM_SPLIT_LLVM_DYLIB_TARGETS) ADD_DEFINITIONS("-DXVM_DYLIB_MODE=1") endif() diff --git a/llvm/lib/Target/XVM/TargetInfo/CMakeLists.txt b/llvm/lib/Target/XVM/TargetInfo/CMakeLists.txt index aad77bae6d27..efe91ea71359 100644 --- a/llvm/lib/Target/XVM/TargetInfo/CMakeLists.txt +++ b/llvm/lib/Target/XVM/TargetInfo/CMakeLists.txt @@ -1,6 +1,6 @@ -if(LLVM_BUILD_LLVM_DYLIB) -ADD_DEFINITIONS("-DXVM_DYLIB_MODE=1") +if(LLVM_SPLIT_LLVM_DYLIB_TARGETS) + ADD_DEFINITIONS("-DXVM_DYLIB_MODE=1") endif() add_llvm_component_library(LLVMXVMInfo diff --git a/llvm/tools/llvm-shlib/CMakeLists.txt b/llvm/tools/llvm-shlib/CMakeLists.txt index f48196378489..a8b2d53f630b 100644 --- a/llvm/tools/llvm-shlib/CMakeLists.txt +++ b/llvm/tools/llvm-shlib/CMakeLists.txt @@ -14,6 +14,7 @@ if(LLVM_BUILD_LLVM_DYLIB) if(MSVC) message(FATAL_ERROR "Generating libLLVM is not supported on MSVC") endif() + # OHOS_LOCAL begin if (LLVM_LINK_LLVM_DYLIB) set(INSTALL_WITH_TOOLCHAIN INSTALL_WITH_TOOLCHAIN) @@ -28,20 +29,21 @@ if(LLVM_BUILD_LLVM_DYLIB) list(REMOVE_ITEM LIB_NAMES "LLVMTableGen") # OHOS_LOCAL begin - foreach(target ${LLVM_TARGETS_TO_BUILD}) - get_property(target_link_components TARGET ${target} PROPERTY LLVM_LINK_COMPONENTS) - set(objects "") - foreach(component ${target_link_components}) - list(REMOVE_ITEM LIB_NAMES "LLVM${component}") - list(APPEND objects "$") + if (LLVM_SPLIT_LLVM_DYLIB_TARGETS) + foreach(target ${LLVM_TARGETS_TO_BUILD}) + get_property(target_link_components TARGET ${target} PROPERTY LLVM_LINK_COMPONENTS) + set(objects "") + foreach(component ${target_link_components}) + list(REMOVE_ITEM LIB_NAMES "LLVM${component}") + list(APPEND objects "$") + endforeach() + add_llvm_library("LLVM${target}Target" + MODULE + DISABLE_LLVM_LINK_LLVM_DYLIB + ${INSTALL_WITH_TOOLCHAIN} + OBJLIBS ${objects}) endforeach() - add_llvm_library("LLVM${target}Target" - MODULE - DISABLE_LLVM_LINK_LLVM_DYLIB - ${INSTALL_WITH_TOOLCHAIN} - OBJLIBS ${objects}) - - endforeach() + endif() # OHOS_LOCAL end if(LLVM_DYLIB_EXPORTED_SYMBOL_FILE) @@ -50,8 +52,12 @@ if(LLVM_BUILD_LLVM_DYLIB) endif() add_llvm_library(LLVM SHARED DISABLE_LLVM_LINK_LLVM_DYLIB SONAME ${INSTALL_WITH_TOOLCHAIN} ${SOURCES}) - # OHOS_LOCAL - target_compile_definitions(LLVM PRIVATE "LLVM_BUILD_BACKEND_MODULE") + + # OHOS_LOCAL begin + if (LLVM_SPLIT_LLVM_DYLIB_TARGETS) + target_compile_definitions(LLVM PRIVATE "LLVM_BUILD_BACKEND_MODULE") + endif() + # OHOS_LOCAL end list(REMOVE_DUPLICATES LIB_NAMES) if(("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux") OR (MINGW) OR (HAIKU) @@ -85,10 +91,13 @@ if(LLVM_BUILD_LLVM_DYLIB) endif() target_link_libraries(LLVM PRIVATE ${LIB_NAMES}) + # OHOS_LOCAL begin - foreach(target ${LLVM_TARGETS_TO_BUILD}) - add_dependencies(LLVM LLVM${target}Target) - endforeach() + if (LLVM_SPLIT_LLVM_DYLIB_TARGETS) + foreach(target ${LLVM_TARGETS_TO_BUILD}) + add_dependencies(LLVM LLVM${target}Target) + endforeach() + endif() # OHOS_LOCAL end if (APPLE) -- Gitee