@@ -1050,25 +1050,36 @@ function(build_boost)
1050
1050
message (STATUS "Building from source" )
1051
1051
1052
1052
fetchcontent_declare (boost
1053
- ${FC_DECLARE_COMMON_OPTIONS}
1053
+ ${FC_DECLARE_COMMON_OPTIONS} OVERRIDE_FIND_PACKAGE
1054
1054
URL ${BOOST_SOURCE_URL}
1055
1055
URL_HASH "SHA256=${ARROW_BOOST_BUILD_SHA256_CHECKSUM} " )
1056
1056
1057
1057
prepare_fetchcontent ()
1058
-
1059
1058
set (BOOST_ENABLE_COMPATIBILITY_TARGETS ON )
1060
1059
set (BOOST_SKIP_INSTALL_RULES ON )
1061
- set (BOOST_INCLUDE_LIBRARIES ${ARROW_BOOST_COMPONENTS}
1062
- ${ARROW_BOOST_OPTIONAL_COMPONENTS} )
1060
+ set (BOOST_INCLUDE_LIBRARIES
1061
+ ${ARROW_BOOST_COMPONENTS}
1062
+ ${ARROW_BOOST_OPTIONAL_COMPONENTS}
1063
+ algorithm
1064
+ locale
1065
+ multiprecision
1066
+ numeric/conversion
1067
+ scope_exit )
1063
1068
if (ARROW_WITH_THRIFT )
1064
1069
list (APPEND BOOST_INCLUDE_LIBRARIES uuid )
1065
1070
endif ()
1066
1071
1067
1072
fetchcontent_makeavailable (boost )
1068
1073
1069
1074
foreach (library ${BOOST_INCLUDE_LIBRARIES} )
1070
- target_link_libraries (boost_${library} INTERFACE Boost::disable_autolinking )
1075
+ # boost_numeric/conversion ->
1076
+ # boost_numeric_conversion
1077
+ string (REPLACE "/" "_" target_name "boost_${library} " )
1078
+ target_link_libraries (${target_name} INTERFACE Boost::disable_autolinking )
1071
1079
endforeach ()
1080
+ target_link_libraries (boost_headers
1081
+ INTERFACE Boost::algorithm Boost::multiprecision
1082
+ Boost::numeric_conversion Boost::scope_exit )
1072
1083
1073
1084
set (BOOST_VENDORED
1074
1085
TRUE
@@ -1630,102 +1641,63 @@ endif()
1630
1641
# ----------------------------------------------------------------------
1631
1642
# Thrift
1632
1643
1633
- macro (build_thrift )
1634
- message (STATUS "Building Apache Thrift from source" )
1635
- set (THRIFT_PREFIX "${CMAKE_CURRENT_BINARY_DIR} /thrift_ep-install" )
1636
- set (THRIFT_INCLUDE_DIR "${THRIFT_PREFIX} /include" )
1637
- set (THRIFT_CMAKE_ARGS
1638
- ${EP_COMMON_CMAKE_ARGS}
1639
- "-DCMAKE_INSTALL_PREFIX=${THRIFT_PREFIX} "
1640
- "-DCMAKE_INSTALL_RPATH=${THRIFT_PREFIX} /lib"
1641
- # Work around https://gitlab.kitware.com/cmake/cmake/issues/18865
1642
- -DBoost_NO_BOOST_CMAKE=ON
1643
- -DBUILD_COMPILER=OFF
1644
- -DBUILD_EXAMPLES=OFF
1645
- -DBUILD_TUTORIALS=OFF
1646
- -DCMAKE_DEBUG_POSTFIX=
1647
- -DWITH_AS3=OFF
1648
- -DWITH_CPP=ON
1649
- -DWITH_C_GLIB=OFF
1650
- -DWITH_JAVA=OFF
1651
- -DWITH_JAVASCRIPT=OFF
1652
- -DWITH_LIBEVENT=OFF
1653
- -DWITH_NODEJS=OFF
1654
- -DWITH_PYTHON=OFF
1655
- -DWITH_QT5=OFF
1656
- -DWITH_ZLIB=OFF )
1657
-
1658
- # Thrift also uses boost. Forward important boost settings if there were ones passed.
1659
- if (DEFINED BOOST_ROOT )
1660
- list (APPEND THRIFT_CMAKE_ARGS "-DBOOST_ROOT=${BOOST_ROOT} " )
1661
- endif ()
1662
- list (APPEND
1663
- THRIFT_CMAKE_ARGS
1664
- "-DBoost_INCLUDE_DIR=$<TARGET_PROPERTY:Boost::headers,INTERFACE_INCLUDE_DIRECTORIES>"
1665
- )
1666
- if (DEFINED Boost_NAMESPACE )
1667
- list (APPEND THRIFT_CMAKE_ARGS "-DBoost_NAMESPACE=${Boost_NAMESPACE} " )
1668
- endif ()
1644
+ function (build_thrift )
1645
+ list (APPEND CMAKE_MESSAGE_INDENT "Thrift: " )
1646
+ message (STATUS "Building from source" )
1669
1647
1648
+ fetchcontent_declare (thrift
1649
+ ${FC_DECLARE_COMMON_OPTIONS}
1650
+ URL ${THRIFT_SOURCE_URL}
1651
+ URL_HASH "SHA256=${ARROW_THRIFT_BUILD_SHA256_CHECKSUM} " )
1652
+
1653
+ prepare_fetchcontent ()
1654
+ set (BUILD_COMPILER OFF )
1655
+ set (BUILD_EXAMPLES OFF )
1656
+ set (BUILD_TUTORIALS OFF )
1657
+ set (CMAKE_UNITY_BUILD OFF )
1658
+ set (WITH_AS3 OFF )
1659
+ set (WITH_CPP ON )
1660
+ set (WITH_C_GLIB OFF )
1661
+ set (WITH_JAVA OFF )
1662
+ set (WITH_JAVASCRIPT OFF )
1663
+ set (WITH_LIBEVENT OFF )
1670
1664
if (MSVC )
1671
1665
if (ARROW_USE_STATIC_CRT )
1672
- set (THRIFT_LIB_SUFFIX "mt" )
1673
- list (APPEND THRIFT_CMAKE_ARGS "-DWITH_MT=ON" )
1666
+ set (WITH_MT ON )
1674
1667
else ()
1675
- set (THRIFT_LIB_SUFFIX "md" )
1676
- list (APPEND THRIFT_CMAKE_ARGS "-DWITH_MT=OFF" )
1668
+ set (WITH_MT OFF )
1677
1669
endif ()
1678
- # NOTE(amoeba): When you bump Thrift to >=0.21.0, change bin to lib
1679
- set (THRIFT_LIB
1680
- "${THRIFT_PREFIX} /bin/${CMAKE_IMPORT_LIBRARY_PREFIX} thrift${THRIFT_LIB_SUFFIX}${CMAKE_IMPORT_LIBRARY_SUFFIX} "
1681
- )
1682
- else ()
1683
- set (THRIFT_LIB
1684
- "${THRIFT_PREFIX} /lib/${CMAKE_STATIC_LIBRARY_PREFIX} thrift${CMAKE_STATIC_LIBRARY_SUFFIX} "
1685
- )
1686
1670
endif ()
1671
+ set (WITH_NODEJS OFF )
1672
+ set (WITH_PYTHON OFF )
1673
+ set (WITH_QT5 OFF )
1674
+ set (WITH_ZLIB OFF )
1675
+
1676
+ # Remove Apache Arrow's CMAKE_MODULE_PATH to ensure using Apache
1677
+ # Thrift's cmake_modules/.
1678
+ list (POP_FRONT CMAKE_MODULE_PATH )
1679
+ fetchcontent_makeavailable (thrift )
1687
1680
1688
1681
if (BOOST_VENDORED )
1689
- set (THRIFT_DEPENDENCIES ${THRIFT_DEPENDENCIES} Boost::headers )
1682
+ target_link_libraries (thrift PRIVATE $< BUILD_LOCAL_INTERFACE:Boost::headers>
1683
+ $< BUILD_LOCAL_INTERFACE:Boost::locale> )
1690
1684
endif ()
1691
1685
1692
- set (THRIFT_PATCH_COMMAND )
1693
- if (CMAKE_COMPILER_IS_GNUCC AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 15.0 )
1694
- # Thrift 0.21.0 doesn't support GCC 15.
1695
- # https://github.com/apache/arrow/issues/45096
1696
- # https://github.com/apache/thrift/pull/3078
1697
- find_program (PATCH patch REQUIRED )
1698
- list (APPEND
1699
- THRIFT_PATCH_COMMAND
1700
- ${PATCH}
1701
- -p1
1702
- -i
1703
- ${CMAKE_CURRENT_LIST_DIR} /thrift-cstdint.patch )
1704
- endif ()
1686
+ add_library (thrift::thrift INTERFACE IMPORTED )
1687
+ target_link_libraries (thrift::thrift INTERFACE thrift )
1705
1688
1706
- externalproject_add (thrift_ep
1707
- ${EP_COMMON_OPTIONS}
1708
- URL ${THRIFT_SOURCE_URL}
1709
- URL_HASH "SHA256=${ARROW_THRIFT_BUILD_SHA256_CHECKSUM} "
1710
- BUILD_BYPRODUCTS "${THRIFT_LIB} "
1711
- CMAKE_ARGS ${THRIFT_CMAKE_ARGS}
1712
- DEPENDS ${THRIFT_DEPENDENCIES}
1713
- PATCH_COMMAND ${THRIFT_PATCH_COMMAND} )
1714
-
1715
- add_library (thrift::thrift STATIC IMPORTED )
1716
- # The include directory must exist before it is referenced by a target.
1717
- file (MAKE_DIRECTORY "${THRIFT_INCLUDE_DIR} " )
1718
- set_target_properties (thrift::thrift PROPERTIES IMPORTED_LOCATION "${THRIFT_LIB} " )
1719
- target_include_directories (thrift::thrift BEFORE INTERFACE "${THRIFT_INCLUDE_DIR} " )
1720
- if (ARROW_USE_BOOST )
1721
- target_link_libraries (thrift::thrift INTERFACE Boost::headers )
1722
- endif ()
1723
- add_dependencies (thrift::thrift thrift_ep )
1724
- set (Thrift_VERSION ${ARROW_THRIFT_BUILD_VERSION} )
1725
- set (THRIFT_VENDORED TRUE )
1689
+ set (Thrift_VERSION
1690
+ ${ARROW_THRIFT_BUILD_VERSION}
1691
+ PARENT_SCOPE )
1692
+ set (THRIFT_VENDORED
1693
+ TRUE
1694
+ PARENT_SCOPE )
1695
+ set (ARROW_BUNDLED_STATIC_LIBS
1696
+ ${ARROW_BUNDLED_STATIC_LIBS} thrift
1697
+ PARENT_SCOPE )
1726
1698
1727
- list (APPEND ARROW_BUNDLED_STATIC_LIBS thrift::thrift )
1728
- endmacro ()
1699
+ list (POP_BACK CMAKE_MESSAGE_INDENT )
1700
+ endfunction ()
1729
1701
1730
1702
if (ARROW_WITH_THRIFT )
1731
1703
# Thrift C++ code generated by 0.13 requires 0.11 or greater
@@ -2580,9 +2552,8 @@ function(build_lz4)
2580
2552
2581
2553
# Add to bundled static libs.
2582
2554
# We must use lz4_static (not imported target) not LZ4::lz4 (imported target).
2583
- list (APPEND ARROW_BUNDLED_STATIC_LIBS lz4_static )
2584
2555
set (ARROW_BUNDLED_STATIC_LIBS
2585
- ${ARROW_BUNDLED_STATIC_LIBS}
2556
+ ${ARROW_BUNDLED_STATIC_LIBS} lz4_static
2586
2557
PARENT_SCOPE )
2587
2558
endfunction ()
2588
2559
@@ -5151,9 +5122,8 @@ function(build_awssdk)
5151
5122
set (AWSSDK_VENDORED
5152
5123
TRUE
5153
5124
PARENT_SCOPE )
5154
- list (APPEND ARROW_BUNDLED_STATIC_LIBS ${AWSSDK_LINK_LIBRARIES} )
5155
5125
set (ARROW_BUNDLED_STATIC_LIBS
5156
- ${ARROW_BUNDLED_STATIC_LIBS}
5126
+ ${ARROW_BUNDLED_STATIC_LIBS} ${AWSSDK_LINK_LIBRARIES}
5157
5127
PARENT_SCOPE )
5158
5128
set (AWSSDK_LINK_LIBRARIES
5159
5129
${AWSSDK_LINK_LIBRARIES}
@@ -5219,15 +5189,13 @@ function(build_azure_sdk)
5219
5189
set (AZURE_SDK_VENDORED
5220
5190
TRUE
5221
5191
PARENT_SCOPE )
5222
- list (APPEND
5223
- ARROW_BUNDLED_STATIC_LIBS
5224
- Azure::azure-core
5225
- Azure::azure-identity
5226
- Azure::azure-storage-blobs
5227
- Azure::azure-storage-common
5228
- Azure::azure-storage-files-datalake )
5229
5192
set (ARROW_BUNDLED_STATIC_LIBS
5230
5193
${ARROW_BUNDLED_STATIC_LIBS}
5194
+ Azure::azure-core
5195
+ Azure::azure-identity
5196
+ Azure::azure-storage-blobs
5197
+ Azure::azure-storage-common
5198
+ Azure::azure-storage-files-datalake
5231
5199
PARENT_SCOPE )
5232
5200
endfunction ()
5233
5201
0 commit comments