Skip to content

Commit 93b63e8

Browse files
authored
ARROW-12175: [C++] Fix CMake packages (apache#13892)
ARROW-9171 and ARROW-17231 are also fixed. Our CMake packages are broken. For example, `find_package(Parquet)` doesn't work without specifying `CMAKE_MODULE_PATH`. `find_package(${PACKAGE})` searches `${PREFIX}/${PACKAGE}/${PACKAGE}Config.cmake` or `${PREFIX}/${PACKAGE}/Find${PACKAGE}.cmake`. But our .cmake files are always installed `${PREFIX}/arrow/`. So `find_package(Parquet)` can't find `${PREFIX}/arrow/FindParquet.cmake` because "`/arrow/`" isn't "`/${PACKAGE}`". This change fixes this by installing `${PACKAGE}Config.cmake` to `${PREFIX}/${PACKAGE}/` instead of `${PREFIX}/arrow/`. This also removes all `Find${PACKAGE}.cmake`. We only provides `${PACKAGE}Config.cmake`. Our `Find${PACKAGE}.cmake` can find `${PACKAGE}` by CMake, pkg-config or manual .so/.h search. But we don't need to support pkg-config nor manual .so/.h search. We can use `${PACKAGE}Config.cmake` to support CMake package search. So this removes all `Find${PACKAGE}.cmake`. This also introduces namespace to our CMake targets. For example, `arrow_shared` is exported as `Arrow::arrow_shared` and `parquet_static` is exported as `Parquet::parquet_static`. But no namespace targets such as `arrow_shared` and `parquet_static` are still also exported for keeping backward compatibility. But this requires CMake 3.18 or later for users because `add_library(ALIAS)` for non-global `IMPORTED` library is available since CMake 3.18. (`Plasma::plasma-store-server` target is also added for `plasma-store-server` executable.) FYI: We can resolve this problem by using `COMPONENTS` feature of `find_package()`. For example, `find_package(Arrow COMPONENTS Parquet)` is used instead of `find_package(Parquet)`. With `COMPONENTS`, `${PACKAGE}` is always "Arrow". So we can still install our .cmake files to `${PREFIX}/arrow/`. But this approach breaks backward compatibility. So I choose `${PREFIX}/${PACKAGE}/*.cmake` approach. Authored-by: Sutou Kouhei <kou@clear-code.com> Signed-off-by: Sutou Kouhei <kou@clear-code.com>
1 parent b43c6f6 commit 93b63e8

85 files changed

Lines changed: 761 additions & 2214 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

ci/scripts/python_wheel_macos_build.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,7 @@ export PYARROW_WITH_S3=${ARROW_S3}
158158
export PYARROW_CMAKE_OPTIONS="-DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES} -DARROW_SIMD_LEVEL=${ARROW_SIMD_LEVEL}"
159159
export ARROW_HOME=${build_dir}/install
160160
# PyArrow build configuration
161-
export PKG_CONFIG_PATH=/usr/lib/pkgconfig:${build_dir}/install/lib/pkgconfig
161+
export CMAKE_PREFIX_PATH=${build_dir}/install
162162
# Set PyArrow version explicitly
163163
export SETUPTOOLS_SCM_PRETEND_VERSION=${PYARROW_VERSION}
164164

ci/scripts/python_wheel_manylinux_build.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ export PYARROW_WITH_SUBSTRAIT=${ARROW_SUBSTRAIT}
153153
export PYARROW_WITH_S3=${ARROW_S3}
154154
export ARROW_HOME=/tmp/arrow-dist
155155
# PyArrow build configuration
156-
export PKG_CONFIG_PATH=/usr/lib/pkgconfig:/tmp/arrow-dist/lib/pkgconfig
156+
export CMAKE_PREFIX_PATH=/tmp/arrow-dist
157157

158158
pushd /arrow/python
159159
python setup.py bdist_wheel

ci/scripts/python_wheel_windows_build.bat

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,7 @@ set PYARROW_WITH_PARQUET_ENCRYPTION=%PARQUET_REQUIRE_ENCRYPTION%
113113
set PYARROW_WITH_SUBSTRAIT=%ARROW_SUBSTRAIT%
114114
set PYARROW_WITH_S3=%ARROW_S3%
115115
set ARROW_HOME=C:\arrow-dist
116+
set CMAKE_PREFIX_PATH=C:\arrow-dist
116117

117118
pushd C:\arrow\python
118119
@REM bundle the msvc runtime

cpp/CMakeLists.txt

Lines changed: 23 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ endif()
122122
set(ARROW_GDB_DIR "${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}/gdb")
123123
set(ARROW_FULL_GDB_DIR "${CMAKE_INSTALL_FULL_DATADIR}/${PROJECT_NAME}/gdb")
124124
set(ARROW_GDB_AUTO_LOAD_DIR "${CMAKE_INSTALL_DATADIR}/gdb/auto-load")
125-
set(ARROW_CMAKE_DIR "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}")
125+
set(ARROW_CMAKE_DIR "${CMAKE_INSTALL_LIBDIR}/cmake")
126126
set(ARROW_DOC_DIR "share/doc/${PROJECT_NAME}")
127127

128128
set(BUILD_SUPPORT_DIR "${CMAKE_SOURCE_DIR}/build-support")
@@ -148,30 +148,6 @@ string(REGEX REPLACE "^CLANG_TOOLS=" "" ARROW_CLANG_TOOLS_VERSION
148148
string(REGEX REPLACE "^([0-9]+)(\\..+)?" "\\1" ARROW_CLANG_TOOLS_VERSION_MAJOR
149149
"${ARROW_CLANG_TOOLS_VERSION}")
150150

151-
if(APPLE)
152-
find_program(BREW_BIN brew)
153-
if(BREW_BIN)
154-
execute_process(COMMAND ${BREW_BIN} --prefix
155-
"llvm@${ARROW_LLVM_VERSION_PRIMARY_MAJOR}"
156-
OUTPUT_VARIABLE LLVM_BREW_PREFIX
157-
OUTPUT_STRIP_TRAILING_WHITESPACE)
158-
if(NOT LLVM_BREW_PREFIX)
159-
execute_process(COMMAND ${BREW_BIN} --prefix llvm
160-
OUTPUT_VARIABLE LLVM_BREW_PREFIX
161-
OUTPUT_STRIP_TRAILING_WHITESPACE)
162-
endif()
163-
164-
execute_process(COMMAND ${BREW_BIN} --prefix "llvm@${ARROW_CLANG_TOOLS_VERSION_MAJOR}"
165-
OUTPUT_VARIABLE CLANG_TOOLS_BREW_PREFIX
166-
OUTPUT_STRIP_TRAILING_WHITESPACE)
167-
if(NOT CLANG_TOOLS_BREW_PREFIX)
168-
execute_process(COMMAND ${BREW_BIN} --prefix llvm
169-
OUTPUT_VARIABLE CLANG_TOOLS_BREW_PREFIX
170-
OUTPUT_STRIP_TRAILING_WHITESPACE)
171-
endif()
172-
endif()
173-
endif()
174-
175151
if(WIN32 AND NOT MINGW)
176152
# This is used to handle builds using e.g. clang in an MSVC setting.
177153
set(MSVC_TOOLCHAIN TRUE)
@@ -719,26 +695,27 @@ endif()
719695
# Note that arrow::hadoop is a header only target that refers
720696
# cpp/thirdparty/hadoop/include/. See
721697
# cpp/cmake_modules/ThirdpartyToolchain.cmake for details.
722-
set(ARROW_LINK_LIBS arrow::flatbuffers arrow::hadoop)
698+
set(ARROW_SHARED_LINK_LIBS arrow::flatbuffers arrow::hadoop)
699+
set(ARROW_SHARED_INSTALL_INTERFACE_LIBS)
723700
set(ARROW_STATIC_LINK_LIBS arrow::flatbuffers arrow::hadoop)
724701
set(ARROW_STATIC_INSTALL_INTERFACE_LIBS)
725702
726703
if(ARROW_USE_BOOST)
727-
list(APPEND ARROW_LINK_LIBS Boost::headers)
704+
list(APPEND ARROW_SHARED_LINK_LIBS Boost::headers)
728705
list(APPEND ARROW_STATIC_LINK_LIBS Boost::headers)
729706
endif()
730707
731708
if(ARROW_USE_OPENSSL)
732709
set(ARROW_OPENSSL_LIBS OpenSSL::Crypto OpenSSL::SSL)
733-
list(APPEND ARROW_LINK_LIBS ${ARROW_OPENSSL_LIBS})
710+
list(APPEND ARROW_SHARED_LINK_LIBS ${ARROW_OPENSSL_LIBS})
734711
list(APPEND ARROW_STATIC_LINK_LIBS ${ARROW_OPENSSL_LIBS})
735712
list(APPEND ARROW_STATIC_INSTALL_INTERFACE_LIBS ${ARROW_OPENSSL_LIBS})
736713
endif()
737714
738715
if(ARROW_WITH_BROTLI)
739716
# Order is important for static linking
740717
set(ARROW_BROTLI_LIBS Brotli::brotlienc Brotli::brotlidec Brotli::brotlicommon)
741-
list(APPEND ARROW_LINK_LIBS ${ARROW_BROTLI_LIBS})
718+
list(APPEND ARROW_SHARED_LINK_LIBS ${ARROW_BROTLI_LIBS})
742719
list(APPEND ARROW_STATIC_LINK_LIBS ${ARROW_BROTLI_LIBS})
743720
if(Brotli_SOURCE STREQUAL "SYSTEM")
744721
list(APPEND ARROW_STATIC_INSTALL_INTERFACE_LIBS ${ARROW_BROTLI_LIBS})
@@ -781,7 +758,7 @@ if(ARROW_WITH_ZSTD)
781758
endif()
782759
783760
if(ARROW_ORC)
784-
list(APPEND ARROW_LINK_LIBS orc::liborc ${ARROW_PROTOBUF_LIBPROTOBUF})
761+
list(APPEND ARROW_SHARED_LINK_LIBS orc::liborc ${ARROW_PROTOBUF_LIBPROTOBUF})
785762
list(APPEND ARROW_STATIC_LINK_LIBS orc::liborc ${ARROW_PROTOBUF_LIBPROTOBUF})
786763
if(ORC_SOURCE STREQUAL "SYSTEM")
787764
list(APPEND ARROW_STATIC_INSTALL_INTERFACE_LIBS orc::liborc
@@ -790,15 +767,15 @@ if(ARROW_ORC)
790767
endif()
791768
792769
if(ARROW_GCS)
793-
list(APPEND ARROW_LINK_LIBS google-cloud-cpp::storage)
770+
list(APPEND ARROW_SHARED_LINK_LIBS google-cloud-cpp::storage)
794771
list(APPEND ARROW_STATIC_LINK_LIBS google-cloud-cpp::storage)
795772
if(google_cloud_cpp_storage_SOURCE STREQUAL "SYSTEM")
796773
list(APPEND ARROW_STATIC_INSTALL_INTERFACE_LIBS google-cloud-cpp::storage)
797774
endif()
798775
endif()
799776
800777
if(ARROW_USE_GLOG)
801-
list(APPEND ARROW_LINK_LIBS glog::glog)
778+
list(APPEND ARROW_SHARED_LINK_LIBS glog::glog)
802779
list(APPEND ARROW_STATIC_LINK_LIBS glog::glog)
803780
if(GLOG_SOURCE STREQUAL "SYSTEM")
804781
list(APPEND ARROW_STATIC_INSTALL_INTERFACE_LIBS glog::glog)
@@ -807,13 +784,13 @@ if(ARROW_USE_GLOG)
807784
endif()
808785
809786
if(ARROW_S3)
810-
list(APPEND ARROW_LINK_LIBS ${AWSSDK_LINK_LIBRARIES})
787+
list(APPEND ARROW_SHARED_LINK_LIBS ${AWSSDK_LINK_LIBRARIES})
811788
list(APPEND ARROW_STATIC_LINK_LIBS ${AWSSDK_LINK_LIBRARIES})
812789
endif()
813790
814791
if(ARROW_WITH_OPENTELEMETRY)
815792
list(APPEND
816-
ARROW_LINK_LIBS
793+
ARROW_SHARED_LINK_LIBS
817794
opentelemetry-cpp::trace
818795
opentelemetry-cpp::ostream_span_exporter
819796
opentelemetry-cpp::otlp_http_exporter)
@@ -836,28 +813,28 @@ if(ARROW_WITH_OPENTELEMETRY)
836813
endif()
837814
838815
if(ARROW_WITH_UTF8PROC)
839-
list(APPEND ARROW_LINK_LIBS utf8proc::utf8proc)
816+
list(APPEND ARROW_SHARED_LINK_LIBS utf8proc::utf8proc)
840817
list(APPEND ARROW_STATIC_LINK_LIBS utf8proc::utf8proc)
841818
if(utf8proc_SOURCE STREQUAL "SYSTEM")
842819
list(APPEND ARROW_STATIC_INSTALL_INTERFACE_LIBS utf8proc::utf8proc)
843820
endif()
844821
endif()
845822
846823
if(ARROW_WITH_RE2)
847-
list(APPEND ARROW_LINK_LIBS re2::re2)
824+
list(APPEND ARROW_SHARED_LINK_LIBS re2::re2)
848825
list(APPEND ARROW_STATIC_LINK_LIBS re2::re2)
849826
if(re2_SOURCE STREQUAL "SYSTEM")
850827
list(APPEND ARROW_STATIC_INSTALL_INTERFACE_LIBS re2::re2)
851828
endif()
852829
endif()
853830
854831
if(ARROW_WITH_RAPIDJSON)
855-
list(APPEND ARROW_LINK_LIBS rapidjson::rapidjson)
832+
list(APPEND ARROW_SHARED_LINK_LIBS rapidjson::rapidjson)
856833
list(APPEND ARROW_STATIC_LINK_LIBS rapidjson::rapidjson)
857834
endif()
858835
859836
if(ARROW_USE_XSIMD)
860-
list(APPEND ARROW_LINK_LIBS xsimd)
837+
list(APPEND ARROW_SHARED_LINK_LIBS xsimd)
861838
list(APPEND ARROW_STATIC_LINK_LIBS xsimd)
862839
endif()
863840
@@ -884,8 +861,7 @@ endif()
884861
set(ARROW_SHARED_PRIVATE_LINK_LIBS ${ARROW_STATIC_LINK_LIBS})
885862
886863
if(NOT MSVC_TOOLCHAIN)
887-
list(APPEND ARROW_LINK_LIBS ${CMAKE_DL_LIBS})
888-
list(APPEND ARROW_SHARED_INSTALL_INTERFACE_LIBS ${CMAKE_DL_LIBS})
864+
list(APPEND ARROW_SHARED_LINK_LIBS ${CMAKE_DL_LIBS})
889865
endif()
890866
891867
set(ARROW_TEST_LINK_TOOLCHAIN arrow::flatbuffers GTest::gtest_main GTest::gtest
@@ -901,11 +877,11 @@ if(ARROW_BUILD_BENCHMARKS)
901877
toolchain-benchmarks)
902878
endif()
903879
904-
set(ARROW_TEST_STATIC_LINK_LIBS arrow_testing_static arrow_static ${ARROW_LINK_LIBS}
905-
${ARROW_TEST_LINK_TOOLCHAIN})
880+
set(ARROW_TEST_STATIC_LINK_LIBS arrow_testing_static arrow_static
881+
${ARROW_SHARED_LINK_LIBS} ${ARROW_TEST_LINK_TOOLCHAIN})
906882
907-
set(ARROW_TEST_SHARED_LINK_LIBS arrow_testing_shared arrow_shared ${ARROW_LINK_LIBS}
908-
${ARROW_TEST_LINK_TOOLCHAIN})
883+
set(ARROW_TEST_SHARED_LINK_LIBS arrow_testing_shared arrow_shared
884+
${ARROW_SHARED_LINK_LIBS} ${ARROW_TEST_LINK_TOOLCHAIN})
909885
910886
if(NOT MSVC)
911887
set(ARROW_TEST_SHARED_LINK_LIBS ${ARROW_TEST_SHARED_LINK_LIBS} ${CMAKE_DL_LIBS})
@@ -945,13 +921,13 @@ if(ARROW_BUILD_BENCHMARKS)
945921
endif()
946922
947923
if(ARROW_JEMALLOC)
948-
list(APPEND ARROW_LINK_LIBS jemalloc)
924+
list(APPEND ARROW_SHARED_LINK_LIBS jemalloc)
949925
list(APPEND ARROW_STATIC_LINK_LIBS jemalloc)
950926
endif()
951927
952928
if(ARROW_MIMALLOC)
953929
add_definitions(-DARROW_MIMALLOC)
954-
list(APPEND ARROW_LINK_LIBS mimalloc::mimalloc)
930+
list(APPEND ARROW_SHARED_LINK_LIBS mimalloc::mimalloc)
955931
list(APPEND ARROW_STATIC_LINK_LIBS mimalloc::mimalloc)
956932
endif()
957933
@@ -975,7 +951,7 @@ if(NOT WIN32 AND NOT APPLE)
975951
list(APPEND ARROW_SYSTEM_LINK_LIBS rt)
976952
endif()
977953
978-
list(APPEND ARROW_LINK_LIBS ${ARROW_SYSTEM_LINK_LIBS})
954+
list(APPEND ARROW_SHARED_LINK_LIBS ${ARROW_SYSTEM_LINK_LIBS})
979955
list(APPEND ARROW_STATIC_LINK_LIBS ${ARROW_SYSTEM_LINK_LIBS})
980956
list(APPEND ARROW_STATIC_INSTALL_INTERFACE_LIBS ${ARROW_SYSTEM_LINK_LIBS})
981957

cpp/cmake_modules/BuildUtils.cmake

Lines changed: 46 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ endfunction()
7373

7474
# Based on MIT-licensed
7575
# https://gist.github.com/cristianadam/ef920342939a89fae3e8a85ca9459b49
76-
function(create_merged_static_lib output_target)
76+
function(arrow_create_merged_static_lib output_target)
7777
set(options)
7878
set(one_value_args NAME ROOT)
7979
set(multi_value_args TO_MERGE)
@@ -136,17 +136,37 @@ function(create_merged_static_lib output_target)
136136
message(FATAL_ERROR "Unknown bundle scenario!")
137137
endif()
138138

139-
add_custom_command(COMMAND ${BUNDLE_COMMAND}
140-
OUTPUT ${output_lib_path}
141-
COMMENT "Bundling ${output_lib_path}"
142-
VERBATIM)
139+
add_custom_target(${output_target}_merge ALL
140+
${BUNDLE_COMMAND}
141+
DEPENDS ${ARG_ROOT} ${ARG_TO_MERGE}
142+
BYPRODUCTS ${output_lib_path}
143+
COMMENT "Bundling ${output_lib_path}"
144+
VERBATIM)
143145

144146
message(STATUS "Creating bundled static library target ${output_target} at ${output_lib_path}"
145147
)
146148

147-
add_custom_target(${output_target} ALL DEPENDS ${output_lib_path})
148-
add_dependencies(${output_target} ${ARG_ROOT} ${ARG_TO_MERGE})
149-
install(FILES ${output_lib_path} DESTINATION ${CMAKE_INSTALL_LIBDIR})
149+
add_library(${output_target} STATIC IMPORTED)
150+
set_target_properties(${output_target} PROPERTIES IMPORTED_LOCATION ${output_lib_path})
151+
add_dependencies(${output_target} ${output_target}_merge)
152+
endfunction()
153+
154+
function(arrow_install_cmake_package PACKAGE_NAME EXPORT_NAME)
155+
set(CONFIG_CMAKE "${PACKAGE_NAME}Config.cmake")
156+
set(BUILT_CONFIG_CMAKE "${CMAKE_CURRENT_BINARY_DIR}/${CONFIG_CMAKE}")
157+
configure_package_config_file("${CONFIG_CMAKE}.in" "${BUILT_CONFIG_CMAKE}"
158+
INSTALL_DESTINATION "${ARROW_CMAKE_DIR}/${PACKAGE_NAME}")
159+
set(CONFIG_VERSION_CMAKE "${PACKAGE_NAME}ConfigVersion.cmake")
160+
set(BUILT_CONFIG_VERSION_CMAKE "${CMAKE_CURRENT_BINARY_DIR}/${CONFIG_VERSION_CMAKE}")
161+
write_basic_package_version_file("${BUILT_CONFIG_VERSION_CMAKE}"
162+
COMPATIBILITY SameMajorVersion)
163+
install(FILES "${BUILT_CONFIG_CMAKE}" "${BUILT_CONFIG_VERSION_CMAKE}"
164+
DESTINATION "${ARROW_CMAKE_DIR}/${PACKAGE_NAME}")
165+
set(TARGETS_CMAKE "${PACKAGE_NAME}Targets.cmake")
166+
install(EXPORT ${EXPORT_NAME}
167+
DESTINATION "${ARROW_CMAKE_DIR}/${PACKAGE_NAME}"
168+
NAMESPACE "${PACKAGE_NAME}::"
169+
FILE "${TARGETS_CMAKE}")
150170
endfunction()
151171

152172
# \arg OUTPUTS list to append built targets to
@@ -247,9 +267,17 @@ function(ADD_ARROW_LIB LIB_NAME)
247267
if(ARG_PRIVATE_INCLUDES)
248268
target_include_directories(${LIB_NAME}_objlib PRIVATE ${ARG_PRIVATE_INCLUDES})
249269
endif()
250-
target_link_libraries(${LIB_NAME}_objlib
251-
PRIVATE ${ARG_SHARED_LINK_LIBS} ${ARG_SHARED_PRIVATE_LINK_LIBS}
252-
${ARG_STATIC_LINK_LIBS})
270+
if(BUILD_SHARED)
271+
if(ARG_SHARED_LINK_LIBS)
272+
target_link_libraries(${LIB_NAME}_objlib PRIVATE ${ARG_SHARED_LINK_LIBS})
273+
endif()
274+
if(ARG_SHARED_PRIVATE_LINK_LIBS)
275+
target_link_libraries(${LIB_NAME}_objlib PRIVATE ${ARG_SHARED_PRIVATE_LINK_LIBS})
276+
endif()
277+
endif()
278+
if(BUILD_STATIC AND ARG_STATIC_LINK_LIBS)
279+
target_link_libraries(${LIB_NAME}_objlib PRIVATE ${ARG_STATIC_LINK_LIBS})
280+
endif()
253281
else()
254282
# Prepare arguments for separate compilation of static and shared libs below
255283
# TODO: add PCH directives
@@ -309,11 +337,9 @@ function(ADD_ARROW_LIB LIB_NAME)
309337
SOVERSION "${ARROW_SO_VERSION}")
310338

311339
target_link_libraries(${LIB_NAME}_shared
312-
LINK_PUBLIC
313-
"$<BUILD_INTERFACE:${ARG_SHARED_LINK_LIBS}>"
314-
"$<INSTALL_INTERFACE:${ARG_SHARED_INSTALL_INTERFACE_LIBS}>"
315-
LINK_PRIVATE
316-
${ARG_SHARED_PRIVATE_LINK_LIBS})
340+
PUBLIC "$<BUILD_INTERFACE:${ARG_SHARED_LINK_LIBS}>"
341+
"$<INSTALL_INTERFACE:${ARG_SHARED_INSTALL_INTERFACE_LIBS}>"
342+
PRIVATE ${ARG_SHARED_PRIVATE_LINK_LIBS})
317343

318344
if(USE_OBJLIB)
319345
# Ensure that dependencies are built before compilation of objects in
@@ -394,8 +420,9 @@ function(ADD_ARROW_LIB LIB_NAME)
394420
OUTPUT_NAME ${LIB_NAME_STATIC})
395421

396422
if(ARG_STATIC_INSTALL_INTERFACE_LIBS)
397-
target_link_libraries(${LIB_NAME}_static LINK_PUBLIC
398-
"$<INSTALL_INTERFACE:${ARG_STATIC_INSTALL_INTERFACE_LIBS}>")
423+
target_link_libraries(${LIB_NAME}_static
424+
INTERFACE "$<INSTALL_INTERFACE:${ARG_STATIC_INSTALL_INTERFACE_LIBS}>"
425+
)
399426
endif()
400427

401428
if(ARG_STATIC_LINK_LIBS)
@@ -422,26 +449,7 @@ function(ADD_ARROW_LIB LIB_NAME)
422449
endif()
423450

424451
if(ARG_CMAKE_PACKAGE_NAME)
425-
arrow_install_cmake_find_module("${ARG_CMAKE_PACKAGE_NAME}")
426-
427-
set(TARGETS_CMAKE "${ARG_CMAKE_PACKAGE_NAME}Targets.cmake")
428-
install(EXPORT ${LIB_NAME}_targets
429-
FILE "${TARGETS_CMAKE}"
430-
DESTINATION "${ARROW_CMAKE_DIR}")
431-
432-
set(CONFIG_CMAKE "${ARG_CMAKE_PACKAGE_NAME}Config.cmake")
433-
set(BUILT_CONFIG_CMAKE "${CMAKE_CURRENT_BINARY_DIR}/${CONFIG_CMAKE}")
434-
configure_package_config_file("${CONFIG_CMAKE}.in" "${BUILT_CONFIG_CMAKE}"
435-
INSTALL_DESTINATION "${ARROW_CMAKE_DIR}")
436-
install(FILES "${BUILT_CONFIG_CMAKE}" DESTINATION "${ARROW_CMAKE_DIR}")
437-
438-
set(CONFIG_VERSION_CMAKE "${ARG_CMAKE_PACKAGE_NAME}ConfigVersion.cmake")
439-
set(BUILT_CONFIG_VERSION_CMAKE "${CMAKE_CURRENT_BINARY_DIR}/${CONFIG_VERSION_CMAKE}")
440-
write_basic_package_version_file(
441-
"${BUILT_CONFIG_VERSION_CMAKE}"
442-
VERSION ${${PROJECT_NAME}_VERSION}
443-
COMPATIBILITY AnyNewerVersion)
444-
install(FILES "${BUILT_CONFIG_VERSION_CMAKE}" DESTINATION "${ARROW_CMAKE_DIR}")
452+
arrow_install_cmake_package(${ARG_CMAKE_PACKAGE_NAME} ${LIB_NAME}_targets)
445453
endif()
446454

447455
if(ARG_PKG_CONFIG_NAME)
@@ -906,11 +914,6 @@ function(ARROW_ADD_PKG_CONFIG MODULE)
906914
DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig/")
907915
endfunction()
908916

909-
function(ARROW_INSTALL_CMAKE_FIND_MODULE MODULE)
910-
install(FILES "${ARROW_SOURCE_DIR}/cmake_modules/Find${MODULE}.cmake"
911-
DESTINATION "${ARROW_CMAKE_DIR}")
912-
endfunction()
913-
914917
# Implementations of lisp "car" and "cdr" functions
915918
macro(ARROW_CAR var)
916919
set(${var} ${ARGV1})

0 commit comments

Comments
 (0)