You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@arrow.apache.org by ko...@apache.org on 2023/04/12 20:46:54 UTC

[arrow] branch main updated: GH-35018: [CI][Java][C++] Use ARROW_ZSTD_USE_SHARED=OFF for LLVM (#35023)

This is an automated email from the ASF dual-hosted git repository.

kou pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/arrow.git


The following commit(s) were added to refs/heads/main by this push:
     new 0434ab6507 GH-35018: [CI][Java][C++] Use ARROW_ZSTD_USE_SHARED=OFF for LLVM (#35023)
0434ab6507 is described below

commit 0434ab65075ecd1d2ab9245bcd7ec6038934ed29
Author: Sutou Kouhei <ko...@clear-code.com>
AuthorDate: Thu Apr 13 05:46:42 2023 +0900

    GH-35018: [CI][Java][C++] Use ARROW_ZSTD_USE_SHARED=OFF for LLVM (#35023)
    
    ### Rationale for this change
    
    LLVM may use Zstandard. For example `llvm@ 15` in Homebrew uses Zstandard. LLVM finds
    Zstandared by itself. So libzstd.dylib may be used even when `ARROW_ZSTD_USE_SHARED` is `OFF`.
    
    ### What changes are included in this PR?
    
    This change adjusts Zstandared used by LLVM to reflect `ARROW_ZSTD_USE_SHARED`.
    
    ### Are these changes tested?
    
    Yes.
    
    ### Are there any user-facing changes?
    
    Yes.
    * Closes: #35018
    
    Authored-by: Sutou Kouhei <ko...@clear-code.com>
    Signed-off-by: Sutou Kouhei <ko...@clear-code.com>
---
 cpp/cmake_modules/FindLLVMAlt.cmake    | 15 +++++++++++++++
 cpp/src/gandiva/CMakeLists.txt         |  3 +++
 cpp/src/gandiva/GandivaConfig.cmake.in |  3 +++
 3 files changed, 21 insertions(+)

diff --git a/cpp/cmake_modules/FindLLVMAlt.cmake b/cpp/cmake_modules/FindLLVMAlt.cmake
index c44c480228..b3d77978f1 100644
--- a/cpp/cmake_modules/FindLLVMAlt.cmake
+++ b/cpp/cmake_modules/FindLLVMAlt.cmake
@@ -96,6 +96,21 @@ if(LLVM_FOUND)
   add_library(LLVM::LLVM_LIBS INTERFACE IMPORTED)
   set_target_properties(LLVM::LLVM_LIBS PROPERTIES INTERFACE_LINK_LIBRARIES
                                                    "${LLVM_LIBS}")
+
+  if(TARGET LLVMSupport AND NOT ARROW_ZSTD_USE_SHARED)
+    get_target_property(LLVM_SUPPORT_INTERFACE_LINK_LIBRARIES LLVMSupport
+                        INTERFACE_LINK_LIBRARIES)
+    list(FIND LLVM_SUPPORT_INTERFACE_LINK_LIBRARIES zstd::libzstd_shared
+         LLVM_SUPPORT_LIBZSTD_INDEX)
+    if(NOT LLVM_SUPPORT_LIBZSTD_INDEX EQUAL -1)
+      list(REMOVE_AT LLVM_SUPPORT_INTERFACE_LINK_LIBRARIES ${LLVM_SUPPORT_LIBZSTD_INDEX})
+      list(INSERT LLVM_SUPPORT_INTERFACE_LINK_LIBRARIES ${LLVM_SUPPORT_LIBZSTD_INDEX}
+           zstd::libzstd_static)
+    endif()
+    set_target_properties(LLVMSupport
+                          PROPERTIES INTERFACE_LINK_LIBRARIES
+                                     "${LLVM_SUPPORT_INTERFACE_LINK_LIBRARIES}")
+  endif()
 endif()
 
 mark_as_advanced(CLANG_EXECUTABLE LLVM_LINK_EXECUTABLE)
diff --git a/cpp/src/gandiva/CMakeLists.txt b/cpp/src/gandiva/CMakeLists.txt
index 312ab84f65..36c7ac356b 100644
--- a/cpp/src/gandiva/CMakeLists.txt
+++ b/cpp/src/gandiva/CMakeLists.txt
@@ -27,6 +27,9 @@ add_dependencies(gandiva-all gandiva gandiva-tests gandiva-benchmarks)
 
 find_package(LLVMAlt REQUIRED)
 provide_find_module(LLVMAlt "Gandiva")
+if(ARROW_WITH_ZSTD)
+  provide_find_module(zstdAlt "Gandiva")
+endif()
 
 add_definitions(-DGANDIVA_LLVM_VERSION=${LLVM_VERSION_MAJOR})
 
diff --git a/cpp/src/gandiva/GandivaConfig.cmake.in b/cpp/src/gandiva/GandivaConfig.cmake.in
index 18d194f1e4..36e8fa4bb3 100644
--- a/cpp/src/gandiva/GandivaConfig.cmake.in
+++ b/cpp/src/gandiva/GandivaConfig.cmake.in
@@ -36,6 +36,9 @@ else()
   unset(GANDIVA_CMAKE_MODULE_PATH_OLD)
 endif()
 set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}")
+if(ARROW_WITH_ZSTD)
+  find_dependency(zstdAlt)
+endif()
 find_dependency(LLVMAlt)
 if(DEFINED GANDIVA_CMAKE_MODULE_PATH_OLD)
   set(CMAKE_MODULE_PATH ${GANDIVA_CMAKE_MODULE_PATH_OLD})