3FS/cmake/ApacheArrow.cmake
SF-Zhou fc90de1110
Fix build parallel for arrow (#70)
Co-authored-by: dev <noreply@deepseek.com>
2025-03-04 13:28:01 +08:00

62 lines
2.6 KiB
CMake

add_library(apache_arrow_static INTERFACE)
add_library(arrow_static STATIC IMPORTED)
add_library(parquet_static STATIC IMPORTED)
add_library(arrow_dependencies STATIC IMPORTED)
set(PREFIX "${CMAKE_CURRENT_BINARY_DIR}")
set(ARROW_RELEASE_BUILD_DIR "${CMAKE_CURRENT_BINARY_DIR}/src/apache-arrow-cpp/cpp/build/release")
# https://cmake.org/cmake/help/latest/policy/CMP0097.html
# Starting with CMake 3.16, explicitly setting GIT_SUBMODULES to an empty string
# means no submodules will be initialized or updated.
cmake_policy(SET CMP0097 NEW)
if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.28)
set(ARROW_BUILD_PARALLEL "")
else()
set(ARROW_BUILD_PARALLEL "-j8")
endif()
include(ExternalProject)
ExternalProject_Add(
apache-arrow-cpp
PREFIX ${PREFIX}
GIT_REPOSITORY https://github.com/apache/arrow.git
GIT_TAG b7d2f7ffca66c868bd2fce5b3749c6caa002a7f0
GIT_SHALLOW ON
GIT_PROGRESS ON
GIT_SUBMODULES ""
SOURCE_SUBDIR "cpp"
BUILD_IN_SOURCE ON
INSTALL_DIR ${PREFIX}
CONFIGURE_COMMAND bash -x -c "\
( cd thirdparty && [[ -f export.sh ]] || ./download_dependencies.sh | tee export.sh ) && \
source thirdparty/export.sh && cmake -S . -B . \
-DCMAKE_BUILD_TYPE=Release \
-DARROW_USE_CCACHE=OFF \
-DARROW_USE_SCCACHE=OFF \
-DARROW_DEPENDENCY_SOURCE=BUNDLED \
-DARROW_BUILD_STATIC=ON \
-DARROW_JEMALLOC=ON \
-DARROW_SIMD_LEVEL=DEFAULT \
-DARROW_BUILD_EXAMPLES=OFF \
-DARROW_PARQUET=ON -DARROW_CSV=ON \
-DARROW_WITH_ZSTD=ON -DARROW_WITH_LZ4=ON -DARROW_WITH_ZLIB=ON"
BUILD_COMMAND bash -x -c "source thirdparty/export.sh && cmake --build . ${ARROW_BUILD_PARALLEL}"
BUILD_JOB_SERVER_AWARE 1
INSTALL_COMMAND cmake --install . --prefix "${PREFIX}"
BUILD_BYPRODUCTS
"${ARROW_RELEASE_BUILD_DIR}/libarrow.a"
"${ARROW_RELEASE_BUILD_DIR}/libparquet.a"
"${ARROW_RELEASE_BUILD_DIR}/libarrow_bundled_dependencies.a"
)
add_dependencies(arrow_static apache-arrow-cpp)
add_dependencies(parquet_static apache-arrow-cpp)
add_dependencies(arrow_dependencies apache-arrow-cpp)
set_target_properties(arrow_static PROPERTIES IMPORTED_LOCATION "${ARROW_RELEASE_BUILD_DIR}/libarrow.a")
set_target_properties(parquet_static PROPERTIES IMPORTED_LOCATION "${ARROW_RELEASE_BUILD_DIR}/libparquet.a")
set_target_properties(arrow_dependencies PROPERTIES IMPORTED_LOCATION "${ARROW_RELEASE_BUILD_DIR}/libarrow_bundled_dependencies.a")
target_include_directories(apache_arrow_static SYSTEM INTERFACE "${PREFIX}/include")
target_link_libraries(apache_arrow_static INTERFACE parquet_static arrow_static arrow_dependencies)