From d6e246a0035003a555aca1f0e7311cb16c0e1862 Mon Sep 17 00:00:00 2001 From: zeshanpeng Date: Mon, 10 Jun 2024 12:05:48 -0400 Subject: [PATCH] [XVM] Add a list of targets called via dynlib. Description: When a dynamic per target library is generated, it should be tested and meet the requirements. This is to create the list of such targets. The XVM target is the first target of the list. Issue: https://gitee.com/openharmony/third_party_llvm-project/issues/I9Q9C0 Test: self-tested. Signed-off-by: zeshanpeng --- llvm/CMakeLists.txt | 5 +++ .../modules/LLVMDistributionSupport.cmake | 10 +++++ 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 | 38 +++++++------------ 6 files changed, 33 insertions(+), 28 deletions(-) diff --git a/llvm/CMakeLists.txt b/llvm/CMakeLists.txt index 372678612f0d..b27b07c7eeff 100644 --- a/llvm/CMakeLists.txt +++ b/llvm/CMakeLists.txt @@ -389,6 +389,11 @@ set(LLVM_ALL_TARGETS XVM ) +# OHOS_LOCAL begin +# List of all targets called via dynamic libraries: +set(LLVM_TARGETS_CALLED_VIA_DYLIB XVM) +# OHOS_LOCAL end + # List of targets with JIT support: set(LLVM_TARGETS_WITH_JIT X86 PowerPC AArch64 ARM Mips SystemZ) diff --git a/llvm/cmake/modules/LLVMDistributionSupport.cmake b/llvm/cmake/modules/LLVMDistributionSupport.cmake index 526f36dcda83..891af3543b2d 100644 --- a/llvm/cmake/modules/LLVMDistributionSupport.cmake +++ b/llvm/cmake/modules/LLVMDistributionSupport.cmake @@ -235,6 +235,16 @@ function(llvm_distribution_add_targets) endif() endif() + # OHOS_LOCAL begin + if (LLVM_SPLIT_LLVM_DYLIB_TARGETS) + foreach(target ${LLVM_TARGETS_CALLED_VIA_DYLIB}) + if (target IN_LIST LLVM_TARGETS_TO_BUILD) + list(APPEND LLVM_DISTRIBUTION_COMPONENTS "LLVM${target}Target") + endif() + endforeach() + endif() + # OHOS_LOCAL end + set(distributions "${LLVM_DISTRIBUTIONS}") if(NOT distributions) # CMake seemingly doesn't distinguish between an empty list and a list diff --git a/llvm/lib/Target/XVM/CMakeLists.txt b/llvm/lib/Target/XVM/CMakeLists.txt index 0fe324ea3f8b..f203cf837bb3 100644 --- a/llvm/lib/Target/XVM/CMakeLists.txt +++ b/llvm/lib/Target/XVM/CMakeLists.txt @@ -1,5 +1,5 @@ -if(LLVM_SPLIT_LLVM_DYLIB_TARGETS) +if(XVM IN_LIST LLVM_TARGETS_CALLED_VIA_DYLIB AND 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 d290513bf911..8f8c771a7658 100644 --- a/llvm/lib/Target/XVM/MCTargetDesc/CMakeLists.txt +++ b/llvm/lib/Target/XVM/MCTargetDesc/CMakeLists.txt @@ -1,5 +1,5 @@ -if(LLVM_SPLIT_LLVM_DYLIB_TARGETS) +if(XVM IN_LIST LLVM_TARGETS_CALLED_VIA_DYLIB AND 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 3d9481cfe3e6..2032722ee9a1 100644 --- a/llvm/lib/Target/XVM/TargetInfo/CMakeLists.txt +++ b/llvm/lib/Target/XVM/TargetInfo/CMakeLists.txt @@ -1,6 +1,6 @@ -if(LLVM_SPLIT_LLVM_DYLIB_TARGETS) -ADD_DEFINITIONS("-DXVM_DYLIB_MODE=1") +if(XVM IN_LIST LLVM_TARGETS_CALLED_VIA_DYLIB AND 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 45adda0b88e5..798bb937fa6b 100644 --- a/llvm/tools/llvm-shlib/CMakeLists.txt +++ b/llvm/tools/llvm-shlib/CMakeLists.txt @@ -29,18 +29,20 @@ if(LLVM_BUILD_LLVM_DYLIB) # OHOS_LOCAL begin 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}) + foreach(target ${LLVM_TARGETS_CALLED_VIA_DYLIB}) + if (target IN_LIST 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}) + endif() endforeach() endif() # OHOS_LOCAL end @@ -51,11 +53,6 @@ if(LLVM_BUILD_LLVM_DYLIB) endif() add_llvm_library(LLVM SHARED DISABLE_LLVM_LINK_LLVM_DYLIB SONAME ${INSTALL_WITH_TOOLCHAIN} ${SOURCES}) - # 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) @@ -89,13 +86,6 @@ if(LLVM_BUILD_LLVM_DYLIB) endif() target_link_libraries(LLVM PRIVATE ${LIB_NAMES}) - # OHOS_LOCAL begin - 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) set_property(TARGET LLVM APPEND_STRING PROPERTY -- Gitee