mirror of
https://github.com/mariadb-corporation/mariadb-columnstore-engine.git
synced 2025-04-18 21:44:02 +03:00
75 lines
2.9 KiB
CMake
75 lines
2.9 KiB
CMake
# This is the modified version of:
|
|
# https://stackoverflow.com/questions/73935448/installing-and-linking-to-apache-arrow-inside-cmake
|
|
|
|
# Build the Arrow C++ libraries.
|
|
include(ExternalProject)
|
|
|
|
set(ARROW_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/external/arrow")
|
|
set(ARROW_STATIC_LIBRARY_DIR "${ARROW_PREFIX}/lib")
|
|
|
|
set(ARROW_STATIC_LIB_FILENAME
|
|
"${CMAKE_STATIC_LIBRARY_PREFIX}arrow${CMAKE_STATIC_LIBRARY_SUFFIX}")
|
|
set(ARROW_STATIC_LIB "${ARROW_STATIC_LIBRARY_DIR}/${ARROW_STATIC_LIB_FILENAME}")
|
|
|
|
set(ARROW_DEPS_STATIC_LIB_FILENAME
|
|
"${CMAKE_STATIC_LIBRARY_PREFIX}arrow_bundled_dependencies${CMAKE_STATIC_LIBRARY_SUFFIX}")
|
|
set(ARROW_DEPS_STATIC_LIB "${ARROW_STATIC_LIBRARY_DIR}/${ARROW_DEPS_STATIC_LIB_FILENAME}")
|
|
|
|
set(PARQUET_STATIC_LIB_FILENAME
|
|
"${CMAKE_STATIC_LIBRARY_PREFIX}parquet${CMAKE_STATIC_LIBRARY_SUFFIX}")
|
|
set(PARQUET_STATIC_LIB "${ARROW_STATIC_LIBRARY_DIR}/${PARQUET_STATIC_LIB_FILENAME}")
|
|
|
|
link_directories("${ARROW_STATIC_LIBRARY_DIR}")
|
|
|
|
set(ARROW_BINARY_DIR "${ARROW_PREFIX}/bin")
|
|
set(ARROW_CMAKE_ARGS "-DCMAKE_INSTALL_PREFIX=${ARROW_PREFIX}"
|
|
"-DCMAKE_INSTALL_LIBDIR=lib"
|
|
"-DARROW_BUILD_STATIC=ON"
|
|
"-DARROW_BUILD_SHARED=OFF"
|
|
"-DARROW_DEPENDENCY_SOURCE=BUNDLED"
|
|
"-DARROW_DEPENDENCY_USE_SHARED=OFF"
|
|
"-DARROW_DATASET=ON"
|
|
"-DARROW_PARQUET=ON"
|
|
"-DARROW_FILESYSTEM=ON"
|
|
"-DARROW_RUNTIME_SIMD_LEVEL=SSE4_2"
|
|
"-DThrift_ROOT=${CMAKE_CURRENT_BINARY_DIR}/external/thrift"
|
|
"-DARROW_BOOST_BUILD_VERSION=1.84.0"
|
|
"-DARROW_BOOST_BUILD_SHA256_CHECKSUM=a5800f405508f5df8114558ca9855d2640a2de8f0445f051fa1c7c3383045724"
|
|
)
|
|
set(ARROW_INCLUDE_DIR "${ARROW_PREFIX}/include")
|
|
set(ARROW_BUILD_BYPRODUCTS "${ARROW_STATIC_LIB}" "${PARQUET_STATIC_LIB}")
|
|
|
|
externalproject_add(external_arrow
|
|
URL https://github.com/apache/arrow/archive/refs/tags/apache-arrow-15.0.2.tar.gz
|
|
URL_HASH SHA256=4735b349845bff1fe95ed11abbfed204eb092cabc37523aa13a80cb830fe5b5e
|
|
SOURCE_SUBDIR cpp
|
|
BINARY_DIR "${ARROW_BINARY_DIR}"
|
|
CMAKE_ARGS "${ARROW_CMAKE_ARGS}"
|
|
BUILD_BYPRODUCTS "${ARROW_BUILD_BYPRODUCTS}")
|
|
|
|
|
|
file(MAKE_DIRECTORY "${ARROW_INCLUDE_DIR}")
|
|
|
|
add_library(arrow STATIC IMPORTED)
|
|
add_library(parquet STATIC IMPORTED)
|
|
add_library(arrow_bundled_dependencies STATIC IMPORTED)
|
|
|
|
set_target_properties(arrow
|
|
PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${ARROW_INCLUDE_DIR}
|
|
IMPORTED_LOCATION ${ARROW_STATIC_LIB})
|
|
|
|
set_target_properties(arrow_bundled_dependencies
|
|
PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${ARROW_INCLUDE_DIR}
|
|
IMPORTED_LOCATION ${ARROW_DEPS_STATIC_LIB})
|
|
|
|
set_target_properties(parquet
|
|
PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${ARROW_INCLUDE_DIR}
|
|
IMPORTED_LOCATION ${PARQUET_STATIC_LIB})
|
|
|
|
|
|
target_link_libraries(arrow INTERFACE arrow_bundled_dependencies)
|
|
target_link_libraries(parquet INTERFACE arrow)
|
|
|
|
add_dependencies(external_arrow external_thrift)
|
|
add_dependencies(arrow external_arrow)
|