@@ -4573,11 +4573,16 @@ target_include_directories(arrow::hadoop INTERFACE "${HADOOP_HOME}/include")
4573
4573
function (build_orc )
4574
4574
message (STATUS "Building Apache ORC from source" )
4575
4575
4576
+ # Remove this and "patch" in "ci/docker/{debian,ubuntu}-*.dockerfile" once we have a patch for ORC 2.1.1
4577
+ find_program (PATCH patch REQUIRED )
4578
+ set (ORC_PATCH_COMMAND ${PATCH} -p1 -i ${CMAKE_CURRENT_LIST_DIR} /orc.diff )
4579
+
4576
4580
if (CMAKE_VERSION VERSION_GREATER_EQUAL 3.29 )
4577
4581
fetchcontent_declare (orc
4578
4582
${FC_DECLARE_COMMON_OPTIONS}
4579
4583
URL ${ORC_SOURCE_URL}
4580
- URL_HASH "SHA256=${ARROW_ORC_BUILD_SHA256_CHECKSUM} " )
4584
+ URL_HASH "SHA256=${ARROW_ORC_BUILD_SHA256_CHECKSUM} "
4585
+ PATCH_COMMAND ${ORC_PATCH_COMMAND} )
4581
4586
prepare_fetchcontent ()
4582
4587
4583
4588
set (CMAKE_UNITY_BUILD FALSE )
@@ -4667,16 +4672,10 @@ function(build_orc)
4667
4672
OFF
4668
4673
CACHE BOOL "" FORCE )
4669
4674
4670
- # We can remove this with ORC 2.0.2 or later.
4671
- list (PREPEND CMAKE_MODULE_PATH
4672
- ${CMAKE_CURRENT_BINARY_DIR} /_deps/orc-src/cmake_modules )
4673
-
4674
4675
fetchcontent_makeavailable (orc )
4675
4676
4676
4677
add_library (orc::orc INTERFACE IMPORTED )
4677
4678
target_link_libraries (orc::orc INTERFACE orc )
4678
- target_include_directories (orc::orc INTERFACE "${orc_BINARY_DIR} /c++/include"
4679
- "${orc_SOURCE_DIR} /c++/include" )
4680
4679
4681
4680
list (APPEND ARROW_BUNDLED_STATIC_LIBS orc )
4682
4681
else ()
@@ -4701,6 +4700,9 @@ function(build_orc)
4701
4700
get_target_property (ORC_ZSTD_ROOT ${ARROW_ZSTD_LIBZSTD} INTERFACE_INCLUDE_DIRECTORIES )
4702
4701
get_filename_component (ORC_ZSTD_ROOT "${ORC_ZSTD_ROOT} " DIRECTORY )
4703
4702
4703
+ get_target_property (ORC_ZLIB_ROOT ZLIB::ZLIB INTERFACE_INCLUDE_DIRECTORIES )
4704
+ get_filename_component (ORC_ZLIB_ROOT "${ORC_ZLIB_ROOT} " DIRECTORY )
4705
+
4704
4706
set (ORC_CMAKE_ARGS
4705
4707
${EP_COMMON_CMAKE_ARGS}
4706
4708
"-DCMAKE_INSTALL_PREFIX=${ORC_PREFIX} "
@@ -4710,24 +4712,24 @@ function(build_orc)
4710
4712
-DBUILD_TOOLS=OFF
4711
4713
-DBUILD_CPP_TESTS=OFF
4712
4714
-DINSTALL_VENDORED_LIBS=OFF
4713
- "-DLZ4_HOME=${ORC_LZ4_ROOT} "
4714
4715
"-DPROTOBUF_EXECUTABLE=$<TARGET_FILE:${ARROW_PROTOBUF_PROTOC} >"
4715
4716
"-DPROTOBUF_HOME=${ORC_PROTOBUF_ROOT} "
4716
4717
"-DPROTOBUF_INCLUDE_DIR=$<TARGET_PROPERTY:${ARROW_PROTOBUF_LIBPROTOBUF} ,INTERFACE_INCLUDE_DIRECTORIES>"
4717
4718
"-DPROTOBUF_LIBRARY=$<TARGET_FILE:${ARROW_PROTOBUF_LIBPROTOBUF} >"
4718
4719
"-DPROTOC_LIBRARY=$<TARGET_FILE:${ARROW_PROTOBUF_LIBPROTOC} >"
4719
4720
"-DSNAPPY_HOME=${ORC_SNAPPY_ROOT} "
4720
4721
"-DSNAPPY_LIBRARY=$<TARGET_FILE:${Snappy_TARGET} >"
4722
+ "-DLZ4_HOME=${ORC_LZ4_ROOT} "
4721
4723
"-DLZ4_LIBRARY=$<TARGET_FILE:LZ4::lz4>"
4722
4724
"-DLZ4_STATIC_LIB=$<TARGET_FILE:LZ4::lz4>"
4723
4725
"-DLZ4_INCLUDE_DIR=${ORC_LZ4_ROOT} /include"
4724
4726
"-DSNAPPY_INCLUDE_DIR=${ORC_SNAPPY_INCLUDE_DIR} "
4725
4727
"-DZSTD_HOME=${ORC_ZSTD_ROOT} "
4726
4728
"-DZSTD_INCLUDE_DIR=$<TARGET_PROPERTY:${ARROW_ZSTD_LIBZSTD} ,INTERFACE_INCLUDE_DIRECTORIES>"
4727
- "-DZSTD_LIBRARY=$<TARGET_FILE:${ARROW_ZSTD_LIBZSTD} >" )
4728
- if ( ZLIB_ROOT )
4729
- set ( ORC_CMAKE_ARGS ${ORC_CMAKE_ARGS} "-DZLIB_HOME= ${ZLIB_ROOT} " )
4730
- endif ( )
4729
+ "-DZSTD_LIBRARY=$<TARGET_FILE:${ARROW_ZSTD_LIBZSTD} >"
4730
+ "-DZLIB_HOME= ${ORC_ZLIB_ROOT} "
4731
+ "-DZLIB_INCLUDE_DIR=$<TARGET_PROPERTY:ZLIB::ZLIB,INTERFACE_INCLUDE_DIRECTORIES>"
4732
+ "-DZLIB_LIBRARY=$<TARGET_FILE:ZLIB::ZLIB>" )
4731
4733
4732
4734
# Work around CMake bug
4733
4735
file (MAKE_DIRECTORY ${ORC_INCLUDE_DIR} )
@@ -4743,7 +4745,8 @@ function(build_orc)
4743
4745
${ARROW_ZSTD_LIBZSTD}
4744
4746
${Snappy_TARGET}
4745
4747
LZ4::lz4
4746
- ZLIB::ZLIB )
4748
+ ZLIB::ZLIB
4749
+ PATCH_COMMAND ${ORC_PATCH_COMMAND} )
4747
4750
add_library (orc::orc STATIC IMPORTED )
4748
4751
set_target_properties (orc::orc PROPERTIES IMPORTED_LOCATION "${ORC_STATIC_LIB} " )
4749
4752
target_include_directories (orc::orc BEFORE INTERFACE "${ORC_INCLUDE_DIR} " )
0 commit comments