mirror of
https://github.com/apache/arrow.git
synced 2026-10-28 16:47:19 +08:00
ARROW-4363: [CI] [C++] Add CMake format checks
- Add a top-level script that reformats all known CMake files in the source tree - Add a lint step in Travis that checks CMake files are properly formatted Requires [cmake_format](https://github.com/cheshirekow/cmake_format) and Python 3.
This commit is contained in:
1 parent
133d4022bb
commit
9073af986d
35 files changed
+1744
-1717
No files matched your search
@@ -50,8 +50,6 @@ matrix:
|
||||
os: linux
|
||||
language: python
|
||||
python: "3.6"
|
||||
env:
|
||||
- ARROW_TRAVIS_CLANG_FORMAT=1
|
||||
before_script:
|
||||
# Always run RAT checks, in case another build in matrix breaks RAT
|
||||
- $TRAVIS_BUILD_DIR/ci/travis_release_audit.sh
|
||||
|
||||
+5
-4
@@ -23,6 +23,10 @@ set -ex
|
||||
export ARROW_TRAVIS_USE_TOOLCHAIN=0
|
||||
source $TRAVIS_BUILD_DIR/ci/travis_env_common.sh
|
||||
|
||||
# CMake formatting check
|
||||
pip install cmake_format
|
||||
$TRAVIS_BUILD_DIR/run-cmake-format.py --check
|
||||
|
||||
# C++ code linting
|
||||
if [ "$ARROW_CI_CPP_AFFECTED" != "0" ]; then
|
||||
mkdir $ARROW_CPP_DIR/lint
|
||||
@@ -30,10 +34,7 @@ if [ "$ARROW_CI_CPP_AFFECTED" != "0" ]; then
|
||||
|
||||
cmake .. -DARROW_ONLY_LINT=ON
|
||||
make lint
|
||||
|
||||
if [ "$ARROW_TRAVIS_CLANG_FORMAT" == "1" ]; then
|
||||
make check-format
|
||||
fi
|
||||
make check-format
|
||||
|
||||
python $ARROW_CPP_DIR/build-support/lint_cpp_cli.py $ARROW_CPP_DIR/src
|
||||
|
||||
|
||||
@@ -0,0 +1,59 @@
|
||||
# Licensed to the Apache Software Foundation (ASF) under one
|
||||
# or more contributor license agreements. See the NOTICE file
|
||||
# distributed with this work for additional information
|
||||
# regarding copyright ownership. The ASF licenses this file
|
||||
# to you under the Apache License, Version 2.0 (the
|
||||
# "License"); you may not use this file except in compliance
|
||||
# with the License. You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing,
|
||||
# software distributed under the License is distributed on an
|
||||
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
# KIND, either express or implied. See the License for the
|
||||
# specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
# cmake-format configuration file
|
||||
# Use run-cmake-format.py to reformat all cmake files in the source tree
|
||||
|
||||
# How wide to allow formatted cmake files
|
||||
line_width = 90
|
||||
|
||||
# How many spaces to tab for indent
|
||||
tab_size = 2
|
||||
|
||||
# If arglists are longer than this, break them always
|
||||
max_subargs_per_line = 4
|
||||
|
||||
# If true, separate flow control names from their parentheses with a space
|
||||
separate_ctrl_name_with_space = False
|
||||
|
||||
# If true, separate function names from parentheses with a space
|
||||
separate_fn_name_with_space = False
|
||||
|
||||
# If a statement is wrapped to more than one line, than dangle the closing
|
||||
# parenthesis on it's own line
|
||||
dangle_parens = False
|
||||
|
||||
# What style line endings to use in the output.
|
||||
line_ending = 'unix'
|
||||
|
||||
# Format command names consistently as 'lower' or 'upper' case
|
||||
command_case = 'lower'
|
||||
|
||||
# Format keywords consistently as 'lower' or 'upper' case
|
||||
keyword_case = 'unchanged'
|
||||
|
||||
# enable comment markup parsing and reflow
|
||||
enable_markup = False
|
||||
|
||||
# If comment markup is enabled, don't reflow the first comment block in
|
||||
# eachlistfile. Use this to preserve formatting of your
|
||||
# copyright/licensestatements.
|
||||
first_comment_is_literal = False
|
||||
|
||||
# If comment markup is enabled, don't reflow any comment block which matchesthis
|
||||
# (regex) pattern. Default is `None` (disabled).
|
||||
literal_comment_pattern = None
|
||||
+343
-373
File diff suppressed because it is too large.
Load diff
+184
-170
@@ -26,193 +26,191 @@ function(ADD_ARROW_TEST REL_TEST_NAME)
|
||||
set(options)
|
||||
set(one_value_args PREFIX)
|
||||
set(multi_value_args LABELS)
|
||||
cmake_parse_arguments(ARG "${options}" "${one_value_args}" "${multi_value_args}" ${ARGN})
|
||||
cmake_parse_arguments(ARG
|
||||
"${options}"
|
||||
"${one_value_args}"
|
||||
"${multi_value_args}"
|
||||
${ARGN})
|
||||
|
||||
if (ARG_PREFIX)
|
||||
if(ARG_PREFIX)
|
||||
set(PREFIX ${ARG_PREFIX})
|
||||
else()
|
||||
set(PREFIX "arrow")
|
||||
endif()
|
||||
|
||||
if (ARG_LABELS)
|
||||
if(ARG_LABELS)
|
||||
set(LABELS ${ARG_LABELS})
|
||||
else()
|
||||
set(LABELS "arrow-tests")
|
||||
endif()
|
||||
|
||||
ADD_TEST_CASE(${REL_TEST_NAME}
|
||||
PREFIX ${PREFIX}
|
||||
LABELS ${LABELS}
|
||||
${ARG_UNPARSED_ARGUMENTS})
|
||||
add_test_case(${REL_TEST_NAME}
|
||||
PREFIX
|
||||
${PREFIX}
|
||||
LABELS
|
||||
${LABELS}
|
||||
${ARG_UNPARSED_ARGUMENTS})
|
||||
endfunction()
|
||||
|
||||
function(ADD_ARROW_BENCHMARK REL_TEST_NAME)
|
||||
set(options)
|
||||
set(one_value_args PREFIX)
|
||||
set(multi_value_args)
|
||||
cmake_parse_arguments(ARG "${options}" "${one_value_args}" "${multi_value_args}" ${ARGN})
|
||||
if (ARG_PREFIX)
|
||||
cmake_parse_arguments(ARG
|
||||
"${options}"
|
||||
"${one_value_args}"
|
||||
"${multi_value_args}"
|
||||
${ARGN})
|
||||
if(ARG_PREFIX)
|
||||
set(PREFIX ${ARG_PREFIX})
|
||||
else()
|
||||
set(PREFIX "arrow")
|
||||
endif()
|
||||
ADD_BENCHMARK(${REL_TEST_NAME}
|
||||
PREFIX ${PREFIX}
|
||||
LABELS "arrow-benchmarks"
|
||||
${ARG_UNPARSED_ARGUMENTS})
|
||||
add_benchmark(${REL_TEST_NAME}
|
||||
PREFIX
|
||||
${PREFIX}
|
||||
LABELS
|
||||
"arrow-benchmarks"
|
||||
${ARG_UNPARSED_ARGUMENTS})
|
||||
endfunction()
|
||||
|
||||
set(ARROW_SRCS
|
||||
array.cc
|
||||
array.cc
|
||||
builder.cc
|
||||
array/builder_adaptive.cc
|
||||
array/builder_base.cc
|
||||
array/builder_binary.cc
|
||||
array/builder_decimal.cc
|
||||
array/builder_dict.cc
|
||||
array/builder_nested.cc
|
||||
array/builder_primitive.cc
|
||||
array/builder_union.cc
|
||||
buffer.cc
|
||||
compare.cc
|
||||
memory_pool.cc
|
||||
pretty_print.cc
|
||||
record_batch.cc
|
||||
status.cc
|
||||
table.cc
|
||||
table_builder.cc
|
||||
tensor.cc
|
||||
sparse_tensor.cc
|
||||
type.cc
|
||||
visitor.cc
|
||||
csv/converter.cc
|
||||
csv/chunker.cc
|
||||
csv/column-builder.cc
|
||||
csv/options.cc
|
||||
csv/parser.cc
|
||||
csv/reader.cc
|
||||
io/buffered.cc
|
||||
io/compressed.cc
|
||||
io/file.cc
|
||||
io/interfaces.cc
|
||||
io/memory.cc
|
||||
io/readahead.cc
|
||||
testing/util.cc
|
||||
util/basic_decimal.cc
|
||||
util/bit-util.cc
|
||||
util/compression.cc
|
||||
util/cpu-info.cc
|
||||
util/decimal.cc
|
||||
util/int-util.cc
|
||||
util/io-util.cc
|
||||
util/logging.cc
|
||||
util/key_value_metadata.cc
|
||||
util/task-group.cc
|
||||
util/thread-pool.cc
|
||||
util/trie.cc
|
||||
util/utf8.cc
|
||||
vendored/datetime/tz.cpp)
|
||||
|
||||
builder.cc
|
||||
array/builder_adaptive.cc
|
||||
array/builder_base.cc
|
||||
array/builder_binary.cc
|
||||
array/builder_decimal.cc
|
||||
array/builder_dict.cc
|
||||
array/builder_nested.cc
|
||||
array/builder_primitive.cc
|
||||
array/builder_union.cc
|
||||
|
||||
buffer.cc
|
||||
compare.cc
|
||||
memory_pool.cc
|
||||
pretty_print.cc
|
||||
record_batch.cc
|
||||
status.cc
|
||||
table.cc
|
||||
table_builder.cc
|
||||
tensor.cc
|
||||
sparse_tensor.cc
|
||||
type.cc
|
||||
visitor.cc
|
||||
|
||||
csv/converter.cc
|
||||
csv/chunker.cc
|
||||
csv/column-builder.cc
|
||||
csv/options.cc
|
||||
csv/parser.cc
|
||||
csv/reader.cc
|
||||
|
||||
io/buffered.cc
|
||||
io/compressed.cc
|
||||
io/file.cc
|
||||
io/interfaces.cc
|
||||
io/memory.cc
|
||||
io/readahead.cc
|
||||
|
||||
testing/util.cc
|
||||
|
||||
util/basic_decimal.cc
|
||||
util/bit-util.cc
|
||||
util/compression.cc
|
||||
util/cpu-info.cc
|
||||
util/decimal.cc
|
||||
util/int-util.cc
|
||||
util/io-util.cc
|
||||
util/logging.cc
|
||||
util/key_value_metadata.cc
|
||||
util/task-group.cc
|
||||
util/thread-pool.cc
|
||||
util/trie.cc
|
||||
util/utf8.cc
|
||||
|
||||
vendored/datetime/tz.cpp
|
||||
)
|
||||
|
||||
if ("${COMPILER_FAMILY}" STREQUAL "clang")
|
||||
if("${COMPILER_FAMILY}" STREQUAL "clang")
|
||||
set_property(SOURCE util/io-util.cc
|
||||
APPEND_STRING
|
||||
PROPERTY COMPILE_FLAGS
|
||||
" -Wno-unused-macros ")
|
||||
APPEND_STRING
|
||||
PROPERTY COMPILE_FLAGS " -Wno-unused-macros ")
|
||||
endif()
|
||||
|
||||
if (ARROW_COMPUTE)
|
||||
if(ARROW_COMPUTE)
|
||||
add_subdirectory(compute)
|
||||
set(ARROW_SRCS ${ARROW_SRCS}
|
||||
compute/context.cc
|
||||
compute/kernels/aggregate.cc
|
||||
compute/kernels/boolean.cc
|
||||
compute/kernels/cast.cc
|
||||
compute/kernels/hash.cc
|
||||
compute/kernels/sum.cc
|
||||
compute/kernels/util-internal.cc
|
||||
)
|
||||
set(ARROW_SRCS
|
||||
${ARROW_SRCS}
|
||||
compute/context.cc
|
||||
compute/kernels/aggregate.cc
|
||||
compute/kernels/boolean.cc
|
||||
compute/kernels/cast.cc
|
||||
compute/kernels/hash.cc
|
||||
compute/kernels/sum.cc
|
||||
compute/kernels/util-internal.cc)
|
||||
endif()
|
||||
|
||||
if (ARROW_CUDA)
|
||||
if(ARROW_CUDA)
|
||||
# IPC extensions required to build the CUDA library
|
||||
set(ARROW_IPC ON)
|
||||
add_subdirectory(gpu)
|
||||
endif()
|
||||
|
||||
if (ARROW_JEMALLOC AND JEMALLOC_VENDORED)
|
||||
if(ARROW_JEMALLOC AND JEMALLOC_VENDORED)
|
||||
add_dependencies(arrow_dependencies jemalloc_static)
|
||||
endif()
|
||||
|
||||
if (ARROW_WITH_BROTLI)
|
||||
if(ARROW_WITH_BROTLI)
|
||||
add_definitions(-DARROW_WITH_BROTLI)
|
||||
SET(ARROW_SRCS util/compression_brotli.cc ${ARROW_SRCS})
|
||||
set(ARROW_SRCS util/compression_brotli.cc ${ARROW_SRCS})
|
||||
endif()
|
||||
|
||||
if (ARROW_WITH_BZ2)
|
||||
if(ARROW_WITH_BZ2)
|
||||
add_definitions(-DARROW_WITH_BZ2)
|
||||
SET(ARROW_SRCS util/compression_bz2.cc ${ARROW_SRCS})
|
||||
set(ARROW_SRCS util/compression_bz2.cc ${ARROW_SRCS})
|
||||
endif()
|
||||
|
||||
if (ARROW_WITH_LZ4)
|
||||
if(ARROW_WITH_LZ4)
|
||||
add_definitions(-DARROW_WITH_LZ4)
|
||||
SET(ARROW_SRCS util/compression_lz4.cc ${ARROW_SRCS})
|
||||
set(ARROW_SRCS util/compression_lz4.cc ${ARROW_SRCS})
|
||||
endif()
|
||||
|
||||
if (ARROW_WITH_SNAPPY)
|
||||
if(ARROW_WITH_SNAPPY)
|
||||
add_definitions(-DARROW_WITH_SNAPPY)
|
||||
SET(ARROW_SRCS util/compression_snappy.cc ${ARROW_SRCS})
|
||||
set(ARROW_SRCS util/compression_snappy.cc ${ARROW_SRCS})
|
||||
endif()
|
||||
|
||||
if (ARROW_WITH_ZLIB)
|
||||
if(ARROW_WITH_ZLIB)
|
||||
add_definitions(-DARROW_WITH_ZLIB)
|
||||
SET(ARROW_SRCS util/compression_zlib.cc ${ARROW_SRCS})
|
||||
set(ARROW_SRCS util/compression_zlib.cc ${ARROW_SRCS})
|
||||
endif()
|
||||
|
||||
if (ARROW_WITH_ZSTD)
|
||||
if(ARROW_WITH_ZSTD)
|
||||
add_definitions(-DARROW_WITH_ZSTD)
|
||||
SET(ARROW_SRCS util/compression_zstd.cc ${ARROW_SRCS})
|
||||
set(ARROW_SRCS util/compression_zstd.cc ${ARROW_SRCS})
|
||||
endif()
|
||||
|
||||
if (ARROW_ORC)
|
||||
if(ARROW_ORC)
|
||||
add_subdirectory(adapters/orc)
|
||||
SET(ARROW_SRCS adapters/orc/adapter.cc ${ARROW_SRCS})
|
||||
set(ARROW_SRCS adapters/orc/adapter.cc ${ARROW_SRCS})
|
||||
endif()
|
||||
|
||||
if (ARROW_TENSORFLOW)
|
||||
if(ARROW_TENSORFLOW)
|
||||
add_subdirectory(adapters/tensorflow)
|
||||
endif()
|
||||
|
||||
if (NOT ARROW_BOOST_HEADER_ONLY)
|
||||
set(ARROW_SRCS ${ARROW_SRCS}
|
||||
io/hdfs.cc
|
||||
io/hdfs-internal.cc
|
||||
)
|
||||
if(NOT ARROW_BOOST_HEADER_ONLY)
|
||||
set(ARROW_SRCS ${ARROW_SRCS} io/hdfs.cc io/hdfs-internal.cc)
|
||||
endif()
|
||||
|
||||
if (ARROW_IPC)
|
||||
if(ARROW_IPC)
|
||||
add_subdirectory(ipc)
|
||||
|
||||
set(ARROW_IPC_SRCS
|
||||
ipc/dictionary.cc
|
||||
ipc/feather.cc
|
||||
ipc/json.cc
|
||||
ipc/json-internal.cc
|
||||
ipc/json-simple.cc
|
||||
ipc/message.cc
|
||||
ipc/metadata-internal.cc
|
||||
ipc/reader.cc
|
||||
ipc/writer.cc
|
||||
)
|
||||
SET(ARROW_SRCS ${ARROW_SRCS}
|
||||
${ARROW_IPC_SRCS})
|
||||
ipc/dictionary.cc
|
||||
ipc/feather.cc
|
||||
ipc/json.cc
|
||||
ipc/json-internal.cc
|
||||
ipc/json-simple.cc
|
||||
ipc/message.cc
|
||||
ipc/metadata-internal.cc
|
||||
ipc/reader.cc
|
||||
ipc/writer.cc)
|
||||
set(ARROW_SRCS ${ARROW_SRCS} ${ARROW_IPC_SRCS})
|
||||
|
||||
add_dependencies(arrow_dependencies metadata_fbs)
|
||||
endif()
|
||||
@@ -221,86 +219,102 @@ if(NOT APPLE AND NOT MSVC)
|
||||
# Localize thirdparty symbols using a linker version script. This hides them
|
||||
# from the client application. The OS X linker does not support the
|
||||
# version-script option.
|
||||
set(ARROW_SHARED_LINK_FLAGS "-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/symbols.map")
|
||||
set(ARROW_SHARED_LINK_FLAGS
|
||||
"-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/symbols.map")
|
||||
endif()
|
||||
|
||||
set(ARROW_ALL_SRCS
|
||||
${ARROW_SRCS})
|
||||
set(ARROW_ALL_SRCS ${ARROW_SRCS})
|
||||
|
||||
ADD_ARROW_LIB(arrow
|
||||
SOURCES ${ARROW_ALL_SRCS}
|
||||
OUTPUTS ARROW_LIBRARIES
|
||||
DEPENDENCIES arrow_dependencies
|
||||
SHARED_LINK_FLAGS ${ARROW_SHARED_LINK_FLAGS}
|
||||
SHARED_LINK_LIBS ${ARROW_LINK_LIBS}
|
||||
SHARED_PRIVATE_LINK_LIBS ${ARROW_SHARED_PRIVATE_LINK_LIBS}
|
||||
STATIC_LINK_LIBS ${ARROW_STATIC_LINK_LIBS}
|
||||
SHARED_INSTALL_INTERFACE_LIBS ${ARROW_SHARED_INSTALL_INTERFACE_LIBS}
|
||||
STATIC_INSTALL_INTERFACE_LIBS ${ARROW_STATIC_INSTALL_INTERFACE_LIBS})
|
||||
add_arrow_lib(arrow
|
||||
SOURCES
|
||||
${ARROW_ALL_SRCS}
|
||||
OUTPUTS
|
||||
ARROW_LIBRARIES
|
||||
DEPENDENCIES
|
||||
arrow_dependencies
|
||||
SHARED_LINK_FLAGS
|
||||
${ARROW_SHARED_LINK_FLAGS}
|
||||
SHARED_LINK_LIBS
|
||||
${ARROW_LINK_LIBS}
|
||||
SHARED_PRIVATE_LINK_LIBS
|
||||
${ARROW_SHARED_PRIVATE_LINK_LIBS}
|
||||
STATIC_LINK_LIBS
|
||||
${ARROW_STATIC_LINK_LIBS}
|
||||
SHARED_INSTALL_INTERFACE_LIBS
|
||||
${ARROW_SHARED_INSTALL_INTERFACE_LIBS}
|
||||
STATIC_INSTALL_INTERFACE_LIBS
|
||||
${ARROW_STATIC_INSTALL_INTERFACE_LIBS})
|
||||
|
||||
add_dependencies(arrow ${ARROW_LIBRARIES})
|
||||
|
||||
if (ARROW_BUILD_STATIC AND WIN32)
|
||||
if(ARROW_BUILD_STATIC AND WIN32)
|
||||
target_compile_definitions(arrow_static PUBLIC ARROW_STATIC)
|
||||
endif()
|
||||
|
||||
if (ARROW_BUILD_TESTS OR ARROW_BUILD_BENCHMARKS)
|
||||
if(ARROW_BUILD_TESTS OR ARROW_BUILD_BENCHMARKS)
|
||||
# that depend on gtest
|
||||
ADD_ARROW_LIB(arrow_testing
|
||||
SOURCES testing/gtest_util.cc testing/random.cc
|
||||
OUTPUTS ARROW_TESTING_LIBRARIES
|
||||
DEPENDENCIES ${GTEST_LIBRARY}
|
||||
SHARED_LINK_LIBS arrow_shared ${GTEST_LIBRARY}
|
||||
STATIC_LINK_LIBS arrow_static)
|
||||
add_arrow_lib(arrow_testing
|
||||
SOURCES
|
||||
testing/gtest_util.cc
|
||||
testing/random.cc
|
||||
OUTPUTS
|
||||
ARROW_TESTING_LIBRARIES
|
||||
DEPENDENCIES
|
||||
${GTEST_LIBRARY}
|
||||
SHARED_LINK_LIBS
|
||||
arrow_shared
|
||||
${GTEST_LIBRARY}
|
||||
STATIC_LINK_LIBS
|
||||
arrow_static)
|
||||
|
||||
if (ARROW_BUILD_STATIC AND WIN32)
|
||||
if(ARROW_BUILD_STATIC AND WIN32)
|
||||
target_compile_definitions(arrow_testing_static PUBLIC ARROW_STATIC)
|
||||
endif()
|
||||
|
||||
set(ARROW_LIBRARIES
|
||||
${ARROW_LIBRARIES}
|
||||
${ARROW_TESTING_LIBRARIES})
|
||||
set(ARROW_LIBRARIES ${ARROW_LIBRARIES} ${ARROW_TESTING_LIBRARIES})
|
||||
endif()
|
||||
|
||||
find_package(Backtrace)
|
||||
|
||||
foreach(LIB_TARGET ${ARROW_LIBRARIES})
|
||||
target_compile_definitions(${LIB_TARGET}
|
||||
PRIVATE ARROW_EXPORTING)
|
||||
if (Backtrace_FOUND AND ARROW_WITH_BACKTRACE)
|
||||
target_compile_definitions(${LIB_TARGET}
|
||||
PRIVATE ARROW_WITH_BACKTRACE)
|
||||
target_compile_definitions(${LIB_TARGET} PRIVATE ARROW_EXPORTING)
|
||||
if(Backtrace_FOUND AND ARROW_WITH_BACKTRACE)
|
||||
target_compile_definitions(${LIB_TARGET} PRIVATE ARROW_WITH_BACKTRACE)
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
# Headers: top level
|
||||
ARROW_INSTALL_ALL_HEADERS("arrow")
|
||||
arrow_install_all_headers("arrow")
|
||||
|
||||
# pkg-config support
|
||||
ARROW_ADD_PKG_CONFIG("arrow")
|
||||
arrow_add_pkg_config("arrow")
|
||||
|
||||
#######################################
|
||||
#
|
||||
# Unit tests
|
||||
#######################################
|
||||
#
|
||||
|
||||
ADD_ARROW_TEST(allocator-test)
|
||||
ADD_ARROW_TEST(array-test
|
||||
SOURCES array-test.cc array-binary-test.cc array-dict-test.cc
|
||||
array-list-test.cc array-struct-test.cc)
|
||||
ADD_ARROW_TEST(buffer-test)
|
||||
ADD_ARROW_TEST(memory_pool-test)
|
||||
ADD_ARROW_TEST(pretty_print-test)
|
||||
ADD_ARROW_TEST(public-api-test)
|
||||
ADD_ARROW_TEST(status-test)
|
||||
ADD_ARROW_TEST(stl-test)
|
||||
ADD_ARROW_TEST(type-test)
|
||||
ADD_ARROW_TEST(table-test)
|
||||
ADD_ARROW_TEST(table_builder-test)
|
||||
ADD_ARROW_TEST(tensor-test)
|
||||
ADD_ARROW_TEST(sparse_tensor-test)
|
||||
add_arrow_test(allocator-test)
|
||||
add_arrow_test(array-test
|
||||
SOURCES
|
||||
array-test.cc
|
||||
array-binary-test.cc
|
||||
array-dict-test.cc
|
||||
array-list-test.cc
|
||||
array-struct-test.cc)
|
||||
add_arrow_test(buffer-test)
|
||||
add_arrow_test(memory_pool-test)
|
||||
add_arrow_test(pretty_print-test)
|
||||
add_arrow_test(public-api-test)
|
||||
add_arrow_test(status-test)
|
||||
add_arrow_test(stl-test)
|
||||
add_arrow_test(type-test)
|
||||
add_arrow_test(table-test)
|
||||
add_arrow_test(table_builder-test)
|
||||
add_arrow_test(tensor-test)
|
||||
add_arrow_test(sparse_tensor-test)
|
||||
|
||||
ADD_ARROW_BENCHMARK(builder-benchmark)
|
||||
ADD_ARROW_BENCHMARK(column-benchmark)
|
||||
add_arrow_benchmark(builder-benchmark)
|
||||
add_arrow_benchmark(column-benchmark)
|
||||
|
||||
add_subdirectory(array)
|
||||
add_subdirectory(csv)
|
||||
|
||||
@@ -15,19 +15,14 @@
|
||||
# specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
#######################################
|
||||
#
|
||||
# arrow_orc
|
||||
#######################################
|
||||
#
|
||||
|
||||
# Headers: top level
|
||||
install(FILES
|
||||
adapter.h
|
||||
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/arrow/adapters/orc")
|
||||
install(FILES adapter.h DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/arrow/adapters/orc")
|
||||
|
||||
# pkg-config support
|
||||
configure_file(arrow-orc.pc.in
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/arrow-orc.pc"
|
||||
@ONLY)
|
||||
install(
|
||||
FILES "${CMAKE_CURRENT_BINARY_DIR}/arrow-orc.pc"
|
||||
DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig/")
|
||||
configure_file(arrow-orc.pc.in "${CMAKE_CURRENT_BINARY_DIR}/arrow-orc.pc" @ONLY)
|
||||
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/arrow-orc.pc"
|
||||
DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig/")
|
||||
@@ -15,4 +15,4 @@
|
||||
# specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
ARROW_INSTALL_ALL_HEADERS("arrow/adapters/tensorflow")
|
||||
arrow_install_all_headers("arrow/adapters/tensorflow")
|
||||
@@ -16,4 +16,4 @@
|
||||
# under the License.
|
||||
|
||||
# Headers: top level
|
||||
ARROW_INSTALL_ALL_HEADERS("arrow/array")
|
||||
arrow_install_all_headers("arrow/array")
|
||||
@@ -15,16 +15,16 @@
|
||||
# specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
ARROW_INSTALL_ALL_HEADERS("arrow/compute")
|
||||
arrow_install_all_headers("arrow/compute")
|
||||
|
||||
# pkg-config support
|
||||
ARROW_ADD_PKG_CONFIG("arrow-compute")
|
||||
arrow_add_pkg_config("arrow-compute")
|
||||
|
||||
#######################################
|
||||
#
|
||||
# Unit tests
|
||||
#######################################
|
||||
#
|
||||
|
||||
ADD_ARROW_TEST(compute-test)
|
||||
ADD_ARROW_BENCHMARK(compute-benchmark)
|
||||
add_arrow_test(compute-test)
|
||||
add_arrow_benchmark(compute-benchmark)
|
||||
|
||||
add_subdirectory(kernels)
|
||||
@@ -15,12 +15,12 @@
|
||||
# specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
ARROW_INSTALL_ALL_HEADERS("arrow/compute/kernels")
|
||||
arrow_install_all_headers("arrow/compute/kernels")
|
||||
|
||||
ADD_ARROW_TEST(boolean-test PREFIX "arrow-compute")
|
||||
ADD_ARROW_TEST(cast-test PREFIX "arrow-compute")
|
||||
ADD_ARROW_TEST(hash-test PREFIX "arrow-compute")
|
||||
add_arrow_test(boolean-test PREFIX "arrow-compute")
|
||||
add_arrow_test(cast-test PREFIX "arrow-compute")
|
||||
add_arrow_test(hash-test PREFIX "arrow-compute")
|
||||
|
||||
# Aggregates
|
||||
ADD_ARROW_TEST(aggregate-test PREFIX "arrow-compute")
|
||||
ADD_ARROW_BENCHMARK(aggregate-benchmark PREFIX "arrow-compute")
|
||||
add_arrow_test(aggregate-test PREFIX "arrow-compute")
|
||||
add_arrow_benchmark(aggregate-benchmark PREFIX "arrow-compute")
|
||||
@@ -15,18 +15,12 @@
|
||||
# specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
ADD_ARROW_TEST(chunker-test
|
||||
PREFIX "arrow-csv")
|
||||
ADD_ARROW_TEST(column-builder-test
|
||||
PREFIX "arrow-csv")
|
||||
ADD_ARROW_TEST(converter-test
|
||||
PREFIX "arrow-csv")
|
||||
ADD_ARROW_TEST(parser-test
|
||||
PREFIX "arrow-csv")
|
||||
add_arrow_test(chunker-test PREFIX "arrow-csv")
|
||||
add_arrow_test(column-builder-test PREFIX "arrow-csv")
|
||||
add_arrow_test(converter-test PREFIX "arrow-csv")
|
||||
add_arrow_test(parser-test PREFIX "arrow-csv")
|
||||
|
||||
ADD_ARROW_BENCHMARK(converter-benchmark
|
||||
PREFIX "arrow-csv")
|
||||
ADD_ARROW_BENCHMARK(parser-benchmark
|
||||
PREFIX "arrow-csv")
|
||||
add_arrow_benchmark(converter-benchmark PREFIX "arrow-csv")
|
||||
add_arrow_benchmark(parser-benchmark PREFIX "arrow-csv")
|
||||
|
||||
ARROW_INSTALL_ALL_HEADERS("arrow/csv")
|
||||
arrow_install_all_headers("arrow/csv")
|
||||
@@ -19,47 +19,48 @@ add_custom_target(arrow_hiveserver2)
|
||||
add_custom_target(arrow_hiveserver2-tests)
|
||||
|
||||
# Headers: top level
|
||||
ARROW_INSTALL_ALL_HEADERS("arrow/dbi/hiveserver2")
|
||||
arrow_install_all_headers("arrow/dbi/hiveserver2")
|
||||
|
||||
set(ARROW_HIVESERVER2_SRCS
|
||||
columnar-row-set.cc
|
||||
service.cc
|
||||
session.cc
|
||||
operation.cc
|
||||
sample-usage.cc
|
||||
thrift-internal.cc
|
||||
types.cc
|
||||
util.cc
|
||||
)
|
||||
columnar-row-set.cc
|
||||
service.cc
|
||||
session.cc
|
||||
operation.cc
|
||||
sample-usage.cc
|
||||
thrift-internal.cc
|
||||
types.cc
|
||||
util.cc)
|
||||
|
||||
add_subdirectory(thrift)
|
||||
|
||||
set(HIVESERVER2_THRIFT_SRC
|
||||
ErrorCodes_constants.cpp
|
||||
ErrorCodes_types.cpp
|
||||
ImpalaService.cpp
|
||||
ImpalaService_constants.cpp
|
||||
ImpalaService_types.cpp
|
||||
ImpalaHiveServer2Service.cpp
|
||||
beeswax_constants.cpp
|
||||
beeswax_types.cpp
|
||||
BeeswaxService.cpp
|
||||
TCLIService.cpp
|
||||
TCLIService_constants.cpp
|
||||
TCLIService_types.cpp
|
||||
ExecStats_constants.cpp
|
||||
ExecStats_types.cpp
|
||||
hive_metastore_constants.cpp
|
||||
hive_metastore_types.cpp
|
||||
Status_constants.cpp
|
||||
Status_types.cpp
|
||||
Types_constants.cpp
|
||||
Types_types.cpp
|
||||
)
|
||||
ErrorCodes_constants.cpp
|
||||
ErrorCodes_types.cpp
|
||||
ImpalaService.cpp
|
||||
ImpalaService_constants.cpp
|
||||
ImpalaService_types.cpp
|
||||
ImpalaHiveServer2Service.cpp
|
||||
beeswax_constants.cpp
|
||||
beeswax_types.cpp
|
||||
BeeswaxService.cpp
|
||||
TCLIService.cpp
|
||||
TCLIService_constants.cpp
|
||||
TCLIService_types.cpp
|
||||
ExecStats_constants.cpp
|
||||
ExecStats_types.cpp
|
||||
hive_metastore_constants.cpp
|
||||
hive_metastore_types.cpp
|
||||
Status_constants.cpp
|
||||
Status_types.cpp
|
||||
Types_constants.cpp
|
||||
Types_types.cpp)
|
||||
|
||||
set_source_files_properties(${HIVESERVER2_THRIFT_SRC} PROPERTIES
|
||||
COMPILE_FLAGS "-Wno-unused-variable -Wno-shadow-field"
|
||||
GENERATED TRUE)
|
||||
set_source_files_properties(${HIVESERVER2_THRIFT_SRC}
|
||||
PROPERTIES
|
||||
COMPILE_FLAGS
|
||||
"-Wno-unused-variable -Wno-shadow-field"
|
||||
GENERATED
|
||||
TRUE)
|
||||
|
||||
# keep everything in one library, the object files reference
|
||||
# each other
|
||||
@@ -74,43 +75,47 @@ add_library(arrow_hiveserver2_thrift STATIC ${HIVESERVER2_THRIFT_SRC})
|
||||
|
||||
add_dependencies(arrow_hiveserver2_thrift hs2-thrift-cpp)
|
||||
|
||||
set_target_properties(arrow_hiveserver2_thrift
|
||||
PROPERTIES
|
||||
LIBRARY_OUTPUT_DIRECTORY "${BUILD_OUTPUT_ROOT_DIRECTORY}")
|
||||
set_target_properties(
|
||||
arrow_hiveserver2_thrift
|
||||
PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${BUILD_OUTPUT_ROOT_DIRECTORY}")
|
||||
|
||||
ADD_ARROW_LIB(arrow_hiveserver2
|
||||
SOURCES ${ARROW_HIVESERVER2_SRCS}
|
||||
OUTPUTS ARROW_HIVESERVER2_LIBRARIES
|
||||
DEPENDENCIES arrow_hiveserver2_thrift
|
||||
SHARED_LINK_FLAGS ""
|
||||
SHARED_LINK_LIBS ${ARROW_PYTHON_SHARED_LINK_LIBS}
|
||||
)
|
||||
add_arrow_lib(arrow_hiveserver2
|
||||
SOURCES
|
||||
${ARROW_HIVESERVER2_SRCS}
|
||||
OUTPUTS
|
||||
ARROW_HIVESERVER2_LIBRARIES
|
||||
DEPENDENCIES
|
||||
arrow_hiveserver2_thrift
|
||||
SHARED_LINK_FLAGS
|
||||
""
|
||||
SHARED_LINK_LIBS
|
||||
${ARROW_PYTHON_SHARED_LINK_LIBS})
|
||||
|
||||
add_dependencies(arrow_hiveserver2 ${ARROW_HIVESERVER2_LIBRARIES})
|
||||
|
||||
foreach(LIB_TARGET ${ARROW_HIVESERVER2_LIBRARIES})
|
||||
target_compile_definitions(${LIB_TARGET}
|
||||
PRIVATE ARROW_EXPORTING)
|
||||
target_compile_definitions(${LIB_TARGET} PRIVATE ARROW_EXPORTING)
|
||||
endforeach()
|
||||
|
||||
set_property(SOURCE ${ARROW_HIVESERVER2_SRCS}
|
||||
APPEND_STRING PROPERTY COMPILE_FLAGS
|
||||
" -Wno-shadow-field")
|
||||
APPEND_STRING
|
||||
PROPERTY COMPILE_FLAGS " -Wno-shadow-field")
|
||||
|
||||
set(ARROW_HIVESERVER2_TEST_LINK_LIBS
|
||||
arrow_hiveserver2_static
|
||||
arrow_hiveserver2_thrift
|
||||
${ARROW_TEST_LINK_LIBS}
|
||||
thriftstatic)
|
||||
arrow_hiveserver2_static
|
||||
arrow_hiveserver2_thrift
|
||||
${ARROW_TEST_LINK_LIBS}
|
||||
thriftstatic)
|
||||
|
||||
if (ARROW_BUILD_TESTS)
|
||||
ADD_TEST_CASE(hiveserver2-test
|
||||
STATIC_LINK_LIBS "${ARROW_HIVESERVER2_TEST_LINK_LIBS}"
|
||||
LABELS "arrow_hiveserver2-tests"
|
||||
)
|
||||
if (TARGET arrow-hiveserver2-test)
|
||||
if(ARROW_BUILD_TESTS)
|
||||
add_test_case(hiveserver2-test
|
||||
STATIC_LINK_LIBS
|
||||
"${ARROW_HIVESERVER2_TEST_LINK_LIBS}"
|
||||
LABELS
|
||||
"arrow_hiveserver2-tests")
|
||||
if(TARGET arrow-hiveserver2-test)
|
||||
set_property(TARGET arrow-hiveserver2-test
|
||||
APPEND_STRING PROPERTY COMPILE_FLAGS
|
||||
" -Wno-shadow-field")
|
||||
APPEND_STRING
|
||||
PROPERTY COMPILE_FLAGS " -Wno-shadow-field")
|
||||
endif()
|
||||
endif(ARROW_BUILD_TESTS)
|
||||
@@ -27,10 +27,10 @@
|
||||
# cmake seems to be case sensitive for some keywords. Changing the first IF check to lower
|
||||
# case makes it not work. TODO: investigate this
|
||||
function(HS2_THRIFT_GEN VAR)
|
||||
IF (NOT ARGN)
|
||||
MESSAGE(SEND_ERROR "Error: THRIFT_GEN called without any src files")
|
||||
RETURN()
|
||||
ENDIF(NOT ARGN)
|
||||
if(NOT ARGN)
|
||||
message(SEND_ERROR "Error: THRIFT_GEN called without any src files")
|
||||
return()
|
||||
endif(NOT ARGN)
|
||||
|
||||
set(${VAR})
|
||||
foreach(FIL ${ARGN})
|
||||
@@ -45,10 +45,10 @@ function(HS2_THRIFT_GEN VAR)
|
||||
# - Does not include .skeleton.cpp files
|
||||
# - Does not include java output files
|
||||
set(OUTPUT_BE_FILE
|
||||
"${GEN_DIR}/${FIL_WE}_types.cpp"
|
||||
"${GEN_DIR}/${FIL_WE}_types.h"
|
||||
"${GEN_DIR}/${FIL_WE}_constants.cpp"
|
||||
"${GEN_DIR}/${FIL_WE}_constants.h")
|
||||
"${GEN_DIR}/${FIL_WE}_types.cpp"
|
||||
"${GEN_DIR}/${FIL_WE}_types.h"
|
||||
"${GEN_DIR}/${FIL_WE}_constants.cpp"
|
||||
"${GEN_DIR}/${FIL_WE}_constants.h")
|
||||
list(APPEND ${VAR} ${OUTPUT_BE_FILE})
|
||||
|
||||
# BeeswaxService thrift generation
|
||||
@@ -56,21 +56,19 @@ function(HS2_THRIFT_GEN VAR)
|
||||
# The java dependency is handled by maven.
|
||||
# We need to generate C++ src file for the parent dependencies using the "-r" option.
|
||||
set(CPP_ARGS -nowarn --gen cpp -out ${GEN_DIR})
|
||||
IF (FIL STREQUAL "beeswax.thrift")
|
||||
if(FIL STREQUAL "beeswax.thrift")
|
||||
set(CPP_ARGS -r -nowarn --gen cpp -out ${GEN_DIR})
|
||||
ENDIF(FIL STREQUAL "beeswax.thrift")
|
||||
endif(FIL STREQUAL "beeswax.thrift")
|
||||
|
||||
# Be able to include generated ErrorCodes.thrift file
|
||||
set(CPP_ARGS ${CPP_ARGS} -I ${CMAKE_CURRENT_BINARY_DIR})
|
||||
|
||||
add_custom_command(
|
||||
OUTPUT ${OUTPUT_BE_FILE}
|
||||
COMMAND ${THRIFT_COMPILER} ${CPP_ARGS} ${FIL}
|
||||
DEPENDS ${ABS_FIL}
|
||||
COMMENT "Running thrift compiler on ${FIL}"
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
VERBATIM
|
||||
)
|
||||
add_custom_command(OUTPUT ${OUTPUT_BE_FILE}
|
||||
COMMAND ${THRIFT_COMPILER} ${CPP_ARGS} ${FIL}
|
||||
DEPENDS ${ABS_FIL}
|
||||
COMMENT "Running thrift compiler on ${FIL}"
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
VERBATIM)
|
||||
endforeach(FIL)
|
||||
|
||||
set(${VAR} ${${VAR}} PARENT_SCOPE)
|
||||
@@ -82,30 +80,29 @@ set(OUTPUT_DIR ${ARROW_BINARY_DIR}/src)
|
||||
file(MAKE_DIRECTORY ${OUTPUT_DIR})
|
||||
|
||||
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/ErrorCodes.thrift
|
||||
COMMAND python generate_error_codes.py ${CMAKE_CURRENT_BINARY_DIR}
|
||||
DEPENDS generate_error_codes.py
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
|
||||
COMMAND python generate_error_codes.py ${CMAKE_CURRENT_BINARY_DIR}
|
||||
DEPENDS generate_error_codes.py
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
|
||||
|
||||
set(SRC_FILES
|
||||
${CMAKE_CURRENT_BINARY_DIR}/ErrorCodes.thrift
|
||||
beeswax.thrift
|
||||
TCLIService.thrift
|
||||
ExecStats.thrift
|
||||
ImpalaService.thrift
|
||||
Status.thrift
|
||||
Types.thrift
|
||||
)
|
||||
${CMAKE_CURRENT_BINARY_DIR}/ErrorCodes.thrift
|
||||
beeswax.thrift
|
||||
TCLIService.thrift
|
||||
ExecStats.thrift
|
||||
ImpalaService.thrift
|
||||
Status.thrift
|
||||
Types.thrift)
|
||||
|
||||
SET_SOURCE_FILES_PROPERTIES(Status.thrift PROPERTIES OBJECT_DEPENDS
|
||||
${CMAKE_CURRENT_BINARY_DIR}/ErrorCodes.thrift)
|
||||
set_source_files_properties(Status.thrift PROPERTIES OBJECT_DEPENDS
|
||||
${CMAKE_CURRENT_BINARY_DIR}/ErrorCodes.thrift)
|
||||
|
||||
# Create a build command for each of the thrift src files and generate
|
||||
# a list of files they produce
|
||||
HS2_THRIFT_GEN(THRIFT_ALL_FILES ${SRC_FILES})
|
||||
hs2_thrift_gen(THRIFT_ALL_FILES ${SRC_FILES})
|
||||
|
||||
# Add a custom target that generates all the thrift files
|
||||
add_custom_target(hs2-thrift-cpp ALL DEPENDS ${THRIFT_ALL_FILES})
|
||||
|
||||
add_custom_target(hs2-thrift-generated-files-error DEPENDS
|
||||
${CMAKE_CURRENT_BINARY_DIR}/ErrorCodes.thrift)
|
||||
add_custom_target(hs2-thrift-generated-files-error
|
||||
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/ErrorCodes.thrift)
|
||||
add_dependencies(hs2-thrift-cpp hs2-thrift-generated-files-error)
|
||||
@@ -18,22 +18,22 @@
|
||||
add_custom_target(arrow_flight)
|
||||
|
||||
# Header files
|
||||
ARROW_INSTALL_ALL_HEADERS("arrow/flight")
|
||||
arrow_install_all_headers("arrow/flight")
|
||||
|
||||
SET(ARROW_FLIGHT_STATIC_LINK_LIBS
|
||||
protobuf_static
|
||||
grpc_grpcpp_static
|
||||
grpc_grpc_static
|
||||
grpc_gpr_static
|
||||
grpc_address_sorting_static
|
||||
cares_static)
|
||||
set(ARROW_FLIGHT_STATIC_LINK_LIBS
|
||||
protobuf_static
|
||||
grpc_grpcpp_static
|
||||
grpc_grpc_static
|
||||
grpc_gpr_static
|
||||
grpc_address_sorting_static
|
||||
cares_static)
|
||||
|
||||
SET(ARROW_FLIGHT_TEST_STATIC_LINK_LIBS
|
||||
arrow_static
|
||||
arrow_flight_static
|
||||
arrow_testing_static
|
||||
${ARROW_FLIGHT_STATIC_LINK_LIBS}
|
||||
${PROTOBUF_LIBRARY})
|
||||
set(ARROW_FLIGHT_TEST_STATIC_LINK_LIBS
|
||||
arrow_static
|
||||
arrow_flight_static
|
||||
arrow_testing_static
|
||||
${ARROW_FLIGHT_STATIC_LINK_LIBS}
|
||||
${PROTOBUF_LIBRARY})
|
||||
|
||||
# TODO(wesm): Protobuf shared vs static linking
|
||||
|
||||
@@ -41,108 +41,94 @@ set(FLIGHT_PROTO_PATH "${ARROW_SOURCE_DIR}/../format")
|
||||
set(FLIGHT_PROTO ${ARROW_SOURCE_DIR}/../format/Flight.proto)
|
||||
|
||||
set(FLIGHT_GENERATED_PROTO_FILES
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/Flight.pb.cc"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/Flight.pb.h"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/Flight.grpc.pb.cc"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/Flight.grpc.pb.h")
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/Flight.pb.cc"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/Flight.pb.h"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/Flight.grpc.pb.cc"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/Flight.grpc.pb.h")
|
||||
|
||||
set(PROTO_DEPENDS ${FLIGHT_PROTO} ${PROTOBUF_LIBRARY} grpc)
|
||||
|
||||
add_custom_command(
|
||||
OUTPUT ${FLIGHT_GENERATED_PROTO_FILES}
|
||||
COMMAND ${PROTOBUF_EXECUTABLE}
|
||||
"-I${FLIGHT_PROTO_PATH}"
|
||||
"--cpp_out=${CMAKE_CURRENT_BINARY_DIR}"
|
||||
"${FLIGHT_PROTO}"
|
||||
DEPENDS ${PROTO_DEPENDS}
|
||||
ARGS
|
||||
COMMAND ${PROTOBUF_EXECUTABLE}
|
||||
"-I${FLIGHT_PROTO_PATH}"
|
||||
"--grpc_out=${CMAKE_CURRENT_BINARY_DIR}"
|
||||
"--plugin=protoc-gen-grpc=${GRPC_CPP_PLUGIN}"
|
||||
"${FLIGHT_PROTO}")
|
||||
COMMAND ${PROTOBUF_EXECUTABLE} "-I${FLIGHT_PROTO_PATH}"
|
||||
"--cpp_out=${CMAKE_CURRENT_BINARY_DIR}" "${FLIGHT_PROTO}"
|
||||
DEPENDS ${PROTO_DEPENDS} ARGS
|
||||
COMMAND ${PROTOBUF_EXECUTABLE} "-I${FLIGHT_PROTO_PATH}"
|
||||
"--grpc_out=${CMAKE_CURRENT_BINARY_DIR}"
|
||||
"--plugin=protoc-gen-grpc=${GRPC_CPP_PLUGIN}" "${FLIGHT_PROTO}")
|
||||
|
||||
set_source_files_properties(${FLIGHT_GENERATED_PROTO_FILES}
|
||||
PROPERTIES GENERATED TRUE)
|
||||
set_source_files_properties(${FLIGHT_GENERATED_PROTO_FILES} PROPERTIES GENERATED TRUE)
|
||||
|
||||
set(ARROW_FLIGHT_SRCS
|
||||
client.cc
|
||||
Flight.pb.cc
|
||||
Flight.grpc.pb.cc
|
||||
internal.cc
|
||||
serialization-internal.cc
|
||||
server.cc
|
||||
types.cc
|
||||
)
|
||||
client.cc
|
||||
Flight.pb.cc
|
||||
Flight.grpc.pb.cc
|
||||
internal.cc
|
||||
serialization-internal.cc
|
||||
server.cc
|
||||
types.cc)
|
||||
|
||||
ADD_ARROW_LIB(arrow_flight
|
||||
SOURCES ${ARROW_FLIGHT_SRCS}
|
||||
SHARED_LINK_LIBS arrow_shared ${ARROW_FLIGHT_STATIC_LINK_LIBS}
|
||||
STATIC_LINK_LIBS arrow_static ${ARROW_FLIGHT_STATIC_LINK_LIBS})
|
||||
add_arrow_lib(arrow_flight
|
||||
SOURCES
|
||||
${ARROW_FLIGHT_SRCS}
|
||||
SHARED_LINK_LIBS
|
||||
arrow_shared
|
||||
${ARROW_FLIGHT_STATIC_LINK_LIBS}
|
||||
STATIC_LINK_LIBS
|
||||
arrow_static
|
||||
${ARROW_FLIGHT_STATIC_LINK_LIBS})
|
||||
|
||||
ADD_ARROW_TEST(flight-test
|
||||
EXTRA_LINK_LIBS ${ARROW_FLIGHT_TEST_STATIC_LINK_LIBS}
|
||||
LABELS "arrow_flight")
|
||||
add_arrow_test(flight-test
|
||||
EXTRA_LINK_LIBS
|
||||
${ARROW_FLIGHT_TEST_STATIC_LINK_LIBS}
|
||||
LABELS
|
||||
"arrow_flight")
|
||||
|
||||
# Build test server for unit tests or benchmarks
|
||||
if (ARROW_BUILD_TESTS OR ARROW_BUILD_BENCHMARKS)
|
||||
if(ARROW_BUILD_TESTS OR ARROW_BUILD_BENCHMARKS)
|
||||
add_executable(flight-test-server test-server.cc)
|
||||
target_link_libraries(flight-test-server
|
||||
${ARROW_FLIGHT_TEST_STATIC_LINK_LIBS}
|
||||
gflags_static
|
||||
${GTEST_LIBRARY})
|
||||
target_link_libraries(flight-test-server ${ARROW_FLIGHT_TEST_STATIC_LINK_LIBS}
|
||||
gflags_static ${GTEST_LIBRARY})
|
||||
|
||||
add_executable(flight-test-integration-server test-integration-server.cc)
|
||||
target_link_libraries(flight-test-integration-server
|
||||
${ARROW_FLIGHT_TEST_STATIC_LINK_LIBS}
|
||||
gflags_static
|
||||
gtest_static)
|
||||
${ARROW_FLIGHT_TEST_STATIC_LINK_LIBS} gflags_static gtest_static)
|
||||
|
||||
add_executable(flight-test-integration-client test-integration-client.cc)
|
||||
target_link_libraries(flight-test-integration-client
|
||||
${ARROW_FLIGHT_TEST_STATIC_LINK_LIBS}
|
||||
gflags_static
|
||||
gtest_static)
|
||||
${ARROW_FLIGHT_TEST_STATIC_LINK_LIBS} gflags_static gtest_static)
|
||||
|
||||
# This is needed for the unit tests
|
||||
if (ARROW_BUILD_TESTS)
|
||||
if(ARROW_BUILD_TESTS)
|
||||
add_dependencies(arrow-flight-test flight-test-server)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if (ARROW_BUILD_BENCHMARKS)
|
||||
if(ARROW_BUILD_BENCHMARKS)
|
||||
# Perf server for benchmarks
|
||||
set(PERF_PROTO_GENERATED_FILES
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/perf.pb.cc"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/perf.pb.h")
|
||||
set(PERF_PROTO_GENERATED_FILES "${CMAKE_CURRENT_BINARY_DIR}/perf.pb.cc"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/perf.pb.h")
|
||||
|
||||
add_custom_command(
|
||||
OUTPUT ${PERF_PROTO_GENERATED_FILES}
|
||||
COMMAND ${PROTOBUF_EXECUTABLE}
|
||||
"-I${CMAKE_CURRENT_SOURCE_DIR}"
|
||||
"--cpp_out=${CMAKE_CURRENT_BINARY_DIR}"
|
||||
"perf.proto"
|
||||
DEPENDS ${PROTO_DEPENDS})
|
||||
add_custom_command(OUTPUT ${PERF_PROTO_GENERATED_FILES}
|
||||
COMMAND ${PROTOBUF_EXECUTABLE} "-I${CMAKE_CURRENT_SOURCE_DIR}"
|
||||
"--cpp_out=${CMAKE_CURRENT_BINARY_DIR}" "perf.proto"
|
||||
DEPENDS ${PROTO_DEPENDS})
|
||||
|
||||
add_executable(flight-perf-server
|
||||
perf-server.cc
|
||||
perf.pb.cc)
|
||||
add_executable(flight-perf-server perf-server.cc perf.pb.cc)
|
||||
target_link_libraries(flight-perf-server
|
||||
arrow_flight_static
|
||||
arrow_testing_static
|
||||
${ARROW_FLIGHT_STATIC_LINK_LIBS}
|
||||
gflags_static
|
||||
${GTEST_LIBRARY})
|
||||
arrow_flight_static
|
||||
arrow_testing_static
|
||||
${ARROW_FLIGHT_STATIC_LINK_LIBS}
|
||||
gflags_static
|
||||
${GTEST_LIBRARY})
|
||||
|
||||
add_executable(flight-benchmark
|
||||
flight-benchmark.cc
|
||||
perf.pb.cc)
|
||||
add_executable(flight-benchmark flight-benchmark.cc perf.pb.cc)
|
||||
target_link_libraries(flight-benchmark
|
||||
arrow_flight_static
|
||||
arrow_testing_static
|
||||
${ARROW_FLIGHT_STATIC_LINK_LIBS}
|
||||
gflags_static
|
||||
${GTEST_LIBRARY})
|
||||
arrow_flight_static
|
||||
arrow_testing_static
|
||||
${ARROW_FLIGHT_STATIC_LINK_LIBS}
|
||||
gflags_static
|
||||
${GTEST_LIBRARY})
|
||||
|
||||
add_dependencies(flight-benchmark flight-perf-server)
|
||||
endif(ARROW_BUILD_BENCHMARKS)
|
||||
@@ -15,9 +15,9 @@
|
||||
# specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
#######################################
|
||||
#
|
||||
# arrow_cuda
|
||||
#######################################
|
||||
#
|
||||
|
||||
add_custom_target(arrow_cuda-all)
|
||||
add_custom_target(arrow_cuda)
|
||||
@@ -25,7 +25,7 @@ add_custom_target(arrow_cuda-benchmarks)
|
||||
add_custom_target(arrow_cuda-tests)
|
||||
add_dependencies(arrow_cuda-all arrow_cuda arrow_cuda-tests arrow_cuda-benchmarks)
|
||||
|
||||
if (DEFINED ENV{CUDA_HOME})
|
||||
if(DEFINED ENV{CUDA_HOME})
|
||||
set(CUDA_TOOLKIT_ROOT_DIR "$ENV{CUDA_HOME}")
|
||||
endif()
|
||||
|
||||
@@ -34,61 +34,49 @@ include_directories(SYSTEM ${CUDA_INCLUDE_DIRS})
|
||||
|
||||
message(STATUS "CUDA Libraries: ${CUDA_LIBRARIES}")
|
||||
|
||||
set(ARROW_CUDA_SRCS
|
||||
cuda_arrow_ipc.cc
|
||||
cuda_context.cc
|
||||
cuda_memory.cc
|
||||
)
|
||||
set(ARROW_CUDA_SRCS cuda_arrow_ipc.cc cuda_context.cc cuda_memory.cc)
|
||||
|
||||
set(ARROW_CUDA_SHARED_LINK_LIBS
|
||||
${CUDA_LIBRARIES}
|
||||
${CUDA_CUDA_LIBRARY}
|
||||
)
|
||||
set(ARROW_CUDA_SHARED_LINK_LIBS ${CUDA_LIBRARIES} ${CUDA_CUDA_LIBRARY})
|
||||
|
||||
ADD_ARROW_LIB(arrow_cuda
|
||||
SOURCES ${ARROW_CUDA_SRCS}
|
||||
OUTPUTS ARROW_CUDA_LIBRARIES
|
||||
DEPENDENCIES metadata_fbs
|
||||
SHARED_LINK_FLAGS ""
|
||||
SHARED_LINK_LIBS arrow_shared ${ARROW_CUDA_SHARED_LINK_LIBS}
|
||||
# Static arrow_cuda must also link against CUDA shared libs
|
||||
STATIC_LINK_LIBS ${ARROW_CUDA_SHARED_LINK_LIBS}
|
||||
)
|
||||
add_arrow_lib(arrow_cuda
|
||||
SOURCES
|
||||
${ARROW_CUDA_SRCS}
|
||||
OUTPUTS
|
||||
ARROW_CUDA_LIBRARIES
|
||||
DEPENDENCIES
|
||||
metadata_fbs
|
||||
SHARED_LINK_FLAGS
|
||||
""
|
||||
SHARED_LINK_LIBS
|
||||
arrow_shared
|
||||
${ARROW_CUDA_SHARED_LINK_LIBS}
|
||||
# Static arrow_cuda must also link against CUDA shared libs
|
||||
STATIC_LINK_LIBS ${ARROW_CUDA_SHARED_LINK_LIBS})
|
||||
|
||||
add_dependencies(arrow_cuda ${ARROW_CUDA_LIBRARIES})
|
||||
|
||||
foreach(LIB_TARGET ${ARROW_CUDA_LIBRARIES})
|
||||
target_compile_definitions(${LIB_TARGET}
|
||||
PRIVATE ARROW_EXPORTING)
|
||||
target_compile_definitions(${LIB_TARGET} PRIVATE ARROW_EXPORTING)
|
||||
endforeach()
|
||||
|
||||
# CUDA build version
|
||||
configure_file(cuda_version.h.in
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/cuda_version.h"
|
||||
@ONLY)
|
||||
configure_file(cuda_version.h.in "${CMAKE_CURRENT_BINARY_DIR}/cuda_version.h" @ONLY)
|
||||
|
||||
install(FILES
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/cuda_version.h"
|
||||
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/arrow/gpu")
|
||||
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/cuda_version.h"
|
||||
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/arrow/gpu")
|
||||
|
||||
ARROW_INSTALL_ALL_HEADERS("arrow/gpu")
|
||||
ARROW_ADD_PKG_CONFIG("arrow-cuda")
|
||||
arrow_install_all_headers("arrow/gpu")
|
||||
arrow_add_pkg_config("arrow-cuda")
|
||||
|
||||
set(ARROW_CUDA_TEST_LINK_LIBS
|
||||
arrow_cuda_shared
|
||||
${ARROW_TEST_LINK_LIBS})
|
||||
set(ARROW_CUDA_TEST_LINK_LIBS arrow_cuda_shared ${ARROW_TEST_LINK_LIBS})
|
||||
|
||||
if (ARROW_BUILD_TESTS)
|
||||
ADD_ARROW_TEST(cuda-test
|
||||
STATIC_LINK_LIBS ${ARROW_CUDA_TEST_LINK_LIBS}
|
||||
NO_VALGRIND)
|
||||
if(ARROW_BUILD_TESTS)
|
||||
add_arrow_test(cuda-test STATIC_LINK_LIBS ${ARROW_CUDA_TEST_LINK_LIBS} NO_VALGRIND)
|
||||
endif()
|
||||
|
||||
if (ARROW_BUILD_BENCHMARKS)
|
||||
if(ARROW_BUILD_BENCHMARKS)
|
||||
cuda_add_executable(arrow-cuda-benchmark cuda-benchmark.cc)
|
||||
target_link_libraries(arrow-cuda-benchmark
|
||||
arrow_cuda_shared
|
||||
${GTEST_LIBRARY}
|
||||
${ARROW_BENCHMARK_LINK_LIBS})
|
||||
target_link_libraries(arrow-cuda-benchmark arrow_cuda_shared ${GTEST_LIBRARY}
|
||||
${ARROW_BENCHMARK_LINK_LIBS})
|
||||
add_dependencies(arrow_cuda-benchmarks arrow-cuda-benchmark)
|
||||
endif()
|
||||
@@ -18,27 +18,19 @@
|
||||
# ----------------------------------------------------------------------
|
||||
# arrow_io : Arrow IO interfaces
|
||||
|
||||
ADD_ARROW_TEST(buffered-test
|
||||
PREFIX "arrow-io")
|
||||
ADD_ARROW_TEST(compressed-test
|
||||
PREFIX "arrow-io")
|
||||
ADD_ARROW_TEST(file-test
|
||||
PREFIX "arrow-io")
|
||||
add_arrow_test(buffered-test PREFIX "arrow-io")
|
||||
add_arrow_test(compressed-test PREFIX "arrow-io")
|
||||
add_arrow_test(file-test PREFIX "arrow-io")
|
||||
|
||||
if (ARROW_HDFS AND NOT ARROW_BOOST_HEADER_ONLY)
|
||||
ADD_ARROW_TEST(hdfs-test NO_VALGRIND
|
||||
PREFIX "arrow-io")
|
||||
if(ARROW_HDFS AND NOT ARROW_BOOST_HEADER_ONLY)
|
||||
add_arrow_test(hdfs-test NO_VALGRIND PREFIX "arrow-io")
|
||||
endif()
|
||||
|
||||
ADD_ARROW_TEST(memory-test
|
||||
PREFIX "arrow-io")
|
||||
ADD_ARROW_TEST(readahead-test
|
||||
PREFIX "arrow-io")
|
||||
add_arrow_test(memory-test PREFIX "arrow-io")
|
||||
add_arrow_test(readahead-test PREFIX "arrow-io")
|
||||
|
||||
ADD_ARROW_BENCHMARK(file-benchmark
|
||||
PREFIX "arrow-io")
|
||||
ADD_ARROW_BENCHMARK(memory-benchmark
|
||||
PREFIX "arrow-io")
|
||||
add_arrow_benchmark(file-benchmark PREFIX "arrow-io")
|
||||
add_arrow_benchmark(memory-benchmark PREFIX "arrow-io")
|
||||
|
||||
# Headers: top level
|
||||
ARROW_INSTALL_ALL_HEADERS("arrow/io")
|
||||
arrow_install_all_headers("arrow/io")
|
||||
@@ -19,28 +19,24 @@
|
||||
add_custom_target(integration)
|
||||
add_dependencies(arrow-tests integration)
|
||||
|
||||
#######################################
|
||||
#
|
||||
# Messaging and interprocess communication
|
||||
|
||||
ADD_ARROW_TEST(feather-test)
|
||||
ADD_ARROW_TEST(read-write-test
|
||||
PREFIX "arrow-ipc")
|
||||
ADD_ARROW_TEST(json-simple-test
|
||||
PREFIX "arrow-ipc")
|
||||
ADD_ARROW_TEST(json-test
|
||||
PREFIX "arrow-ipc")
|
||||
add_arrow_test(feather-test)
|
||||
add_arrow_test(read-write-test PREFIX "arrow-ipc")
|
||||
add_arrow_test(json-simple-test PREFIX "arrow-ipc")
|
||||
add_arrow_test(json-test PREFIX "arrow-ipc")
|
||||
|
||||
if (NOT ARROW_BOOST_HEADER_ONLY)
|
||||
ADD_ARROW_TEST(json-integration-test
|
||||
EXTRA_LINK_LIBS gflags_static)
|
||||
if(NOT ARROW_BOOST_HEADER_ONLY)
|
||||
add_arrow_test(json-integration-test EXTRA_LINK_LIBS gflags_static)
|
||||
|
||||
# Test is being built
|
||||
if (TARGET arrow-json-integration-test)
|
||||
if(TARGET arrow-json-integration-test)
|
||||
add_dependencies(integration arrow-json-integration-test)
|
||||
if (UNIX)
|
||||
if (APPLE)
|
||||
if(UNIX)
|
||||
if(APPLE)
|
||||
set_target_properties(arrow-json-integration-test
|
||||
PROPERTIES LINK_FLAGS "-undefined dynamic_lookup")
|
||||
PROPERTIES LINK_FLAGS "-undefined dynamic_lookup")
|
||||
else()
|
||||
target_link_libraries(arrow-json-integration-test PRIVATE pthread)
|
||||
endif()
|
||||
@@ -54,17 +50,15 @@ set_source_files_properties(feather_generated.h PROPERTIES GENERATED TRUE)
|
||||
set_source_files_properties(File_generated.h PROPERTIES GENERATED TRUE)
|
||||
|
||||
set(OUTPUT_DIR ${ARROW_BINARY_DIR}/src/arrow/ipc)
|
||||
set(FBS_OUTPUT_FILES
|
||||
"${OUTPUT_DIR}/File_generated.h"
|
||||
"${OUTPUT_DIR}/Message_generated.h"
|
||||
"${OUTPUT_DIR}/feather_generated.h")
|
||||
set(FBS_OUTPUT_FILES "${OUTPUT_DIR}/File_generated.h" "${OUTPUT_DIR}/Message_generated.h"
|
||||
"${OUTPUT_DIR}/feather_generated.h")
|
||||
|
||||
set(FBS_SRC
|
||||
${ARROW_SOURCE_DIR}/../format/Message.fbs
|
||||
${ARROW_SOURCE_DIR}/../format/File.fbs
|
||||
${ARROW_SOURCE_DIR}/../format/Schema.fbs
|
||||
${ARROW_SOURCE_DIR}/../format/Tensor.fbs
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/feather.fbs)
|
||||
${ARROW_SOURCE_DIR}/../format/Message.fbs
|
||||
${ARROW_SOURCE_DIR}/../format/File.fbs
|
||||
${ARROW_SOURCE_DIR}/../format/Schema.fbs
|
||||
${ARROW_SOURCE_DIR}/../format/Tensor.fbs
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/feather.fbs)
|
||||
|
||||
foreach(FIL ${FBS_SRC})
|
||||
get_filename_component(ABS_FIL ${FIL} ABSOLUTE)
|
||||
@@ -77,26 +71,24 @@ else()
|
||||
set(FBS_DEPENDS ${ABS_FBS_SRC})
|
||||
endif()
|
||||
|
||||
add_custom_command(
|
||||
OUTPUT ${FBS_OUTPUT_FILES}
|
||||
COMMAND ${FLATBUFFERS_COMPILER} -c -o ${OUTPUT_DIR} ${ABS_FBS_SRC}
|
||||
DEPENDS ${FBS_DEPENDS}
|
||||
COMMENT "Running flatc compiler on ${ABS_FBS_SRC}"
|
||||
VERBATIM
|
||||
)
|
||||
add_custom_command(OUTPUT ${FBS_OUTPUT_FILES}
|
||||
COMMAND ${FLATBUFFERS_COMPILER} -c -o ${OUTPUT_DIR} ${ABS_FBS_SRC}
|
||||
DEPENDS ${FBS_DEPENDS}
|
||||
COMMENT "Running flatc compiler on ${ABS_FBS_SRC}"
|
||||
VERBATIM)
|
||||
|
||||
add_custom_target(metadata_fbs DEPENDS ${FBS_OUTPUT_FILES})
|
||||
|
||||
# Headers: top level
|
||||
ARROW_INSTALL_ALL_HEADERS("arrow/ipc")
|
||||
arrow_install_all_headers("arrow/ipc")
|
||||
|
||||
if (ARROW_BUILD_STATIC)
|
||||
if(ARROW_BUILD_STATIC)
|
||||
set(ARROW_UTIL_LIB arrow_static)
|
||||
else()
|
||||
set(ARROW_UTIL_LIB arrow_shared)
|
||||
endif()
|
||||
|
||||
if (ARROW_BUILD_UTILITIES)
|
||||
if(ARROW_BUILD_UTILITIES)
|
||||
add_executable(arrow-file-to-stream file-to-stream.cc)
|
||||
target_link_libraries(arrow-file-to-stream ${ARROW_UTIL_LIB})
|
||||
add_executable(arrow-stream-to-file stream-to-file.cc)
|
||||
@@ -106,6 +98,5 @@ if (ARROW_BUILD_UTILITIES)
|
||||
add_dependencies(integration arrow-stream-to-file)
|
||||
endif()
|
||||
|
||||
ADD_ARROW_BENCHMARK(read-write-benchmark
|
||||
PREFIX "arrow-ipc")
|
||||
ADD_ARROW_FUZZING(ipc-fuzzing-test)
|
||||
add_arrow_benchmark(read-write-benchmark PREFIX "arrow-ipc")
|
||||
add_arrow_fuzzing(ipc-fuzzing-test)
|
||||
@@ -15,9 +15,9 @@
|
||||
# specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
#######################################
|
||||
#
|
||||
# arrow_python
|
||||
#######################################
|
||||
#
|
||||
|
||||
find_package(PythonLibsNew REQUIRED)
|
||||
find_package(NumPy REQUIRED)
|
||||
@@ -28,113 +28,103 @@ add_custom_target(arrow_python-tests)
|
||||
add_dependencies(arrow_python-all arrow_python arrow_python-tests)
|
||||
|
||||
set(ARROW_PYTHON_SRCS
|
||||
arrow_to_pandas.cc
|
||||
benchmark.cc
|
||||
common.cc
|
||||
config.cc
|
||||
decimal.cc
|
||||
deserialize.cc
|
||||
helpers.cc
|
||||
inference.cc
|
||||
init.cc
|
||||
io.cc
|
||||
numpy_convert.cc
|
||||
numpy_to_arrow.cc
|
||||
python_to_arrow.cc
|
||||
pyarrow.cc
|
||||
serialize.cc
|
||||
)
|
||||
arrow_to_pandas.cc
|
||||
benchmark.cc
|
||||
common.cc
|
||||
config.cc
|
||||
decimal.cc
|
||||
deserialize.cc
|
||||
helpers.cc
|
||||
inference.cc
|
||||
init.cc
|
||||
io.cc
|
||||
numpy_convert.cc
|
||||
numpy_to_arrow.cc
|
||||
python_to_arrow.cc
|
||||
pyarrow.cc
|
||||
serialize.cc)
|
||||
|
||||
if ("${COMPILER_FAMILY}" STREQUAL "clang")
|
||||
set_property(SOURCE pyarrow.cc
|
||||
APPEND_STRING
|
||||
PROPERTY COMPILE_FLAGS
|
||||
" -Wno-cast-qual ")
|
||||
if("${COMPILER_FAMILY}" STREQUAL "clang")
|
||||
set_property(SOURCE pyarrow.cc APPEND_STRING PROPERTY COMPILE_FLAGS " -Wno-cast-qual ")
|
||||
endif()
|
||||
|
||||
set(ARROW_PYTHON_SHARED_LINK_LIBS
|
||||
arrow_shared
|
||||
${PYTHON_OTHER_LIBS}
|
||||
)
|
||||
set(ARROW_PYTHON_SHARED_LINK_LIBS arrow_shared ${PYTHON_OTHER_LIBS})
|
||||
|
||||
if (WIN32)
|
||||
set(ARROW_PYTHON_SHARED_LINK_LIBS
|
||||
${ARROW_PYTHON_SHARED_LINK_LIBS}
|
||||
${PYTHON_LIBRARIES}
|
||||
)
|
||||
if(WIN32)
|
||||
set(ARROW_PYTHON_SHARED_LINK_LIBS ${ARROW_PYTHON_SHARED_LINK_LIBS} ${PYTHON_LIBRARIES})
|
||||
endif()
|
||||
|
||||
set(ARROW_PYTHON_INCLUDES
|
||||
${NUMPY_INCLUDE_DIRS}
|
||||
${PYTHON_INCLUDE_DIRS})
|
||||
set(ARROW_PYTHON_INCLUDES ${NUMPY_INCLUDE_DIRS} ${PYTHON_INCLUDE_DIRS})
|
||||
|
||||
ADD_ARROW_LIB(arrow_python
|
||||
SOURCES ${ARROW_PYTHON_SRCS}
|
||||
OUTPUTS ARROW_PYTHON_LIBRARIES
|
||||
SHARED_LINK_FLAGS ""
|
||||
SHARED_LINK_LIBS ${ARROW_PYTHON_SHARED_LINK_LIBS}
|
||||
STATIC_LINK_LIBS ${PYTHON_OTHER_LIBS}
|
||||
EXTRA_INCLUDES "${ARROW_PYTHON_INCLUDES}"
|
||||
)
|
||||
add_arrow_lib(arrow_python
|
||||
SOURCES
|
||||
${ARROW_PYTHON_SRCS}
|
||||
OUTPUTS
|
||||
ARROW_PYTHON_LIBRARIES
|
||||
SHARED_LINK_FLAGS
|
||||
""
|
||||
SHARED_LINK_LIBS
|
||||
${ARROW_PYTHON_SHARED_LINK_LIBS}
|
||||
STATIC_LINK_LIBS
|
||||
${PYTHON_OTHER_LIBS}
|
||||
EXTRA_INCLUDES
|
||||
"${ARROW_PYTHON_INCLUDES}")
|
||||
|
||||
add_dependencies(arrow_python ${ARROW_PYTHON_LIBRARIES})
|
||||
|
||||
foreach(LIB_TARGET ${ARROW_PYTHON_LIBRARIES})
|
||||
target_compile_definitions(${LIB_TARGET}
|
||||
PRIVATE ARROW_PYTHON_EXPORTING)
|
||||
target_compile_definitions(${LIB_TARGET} PRIVATE ARROW_PYTHON_EXPORTING)
|
||||
endforeach()
|
||||
|
||||
if (ARROW_BUILD_STATIC AND MSVC)
|
||||
if(ARROW_BUILD_STATIC AND MSVC)
|
||||
target_compile_definitions(arrow_python_static PUBLIC ARROW_STATIC)
|
||||
endif()
|
||||
|
||||
if ("${COMPILER_FAMILY}" STREQUAL "clang")
|
||||
if("${COMPILER_FAMILY}" STREQUAL "clang")
|
||||
# Clang, be quiet. Python C API has lots of macros
|
||||
set_property(SOURCE ${ARROW_PYTHON_SRCS}
|
||||
APPEND_STRING
|
||||
PROPERTY
|
||||
COMPILE_FLAGS -Wno-parentheses-equality)
|
||||
APPEND_STRING
|
||||
PROPERTY COMPILE_FLAGS -Wno-parentheses-equality)
|
||||
endif()
|
||||
|
||||
ARROW_INSTALL_ALL_HEADERS("arrow/python")
|
||||
arrow_install_all_headers("arrow/python")
|
||||
|
||||
# pkg-config support
|
||||
ARROW_ADD_PKG_CONFIG("arrow-python")
|
||||
arrow_add_pkg_config("arrow-python")
|
||||
|
||||
# ----------------------------------------------------------------------
|
||||
|
||||
if (ARROW_BUILD_TESTS)
|
||||
add_library(arrow_python_test_main STATIC
|
||||
util/test_main.cc)
|
||||
if(ARROW_BUILD_TESTS)
|
||||
add_library(arrow_python_test_main STATIC util/test_main.cc)
|
||||
|
||||
target_link_libraries(arrow_python_test_main
|
||||
${GTEST_LIBRARY})
|
||||
target_include_directories(arrow_python_test_main SYSTEM PUBLIC
|
||||
${ARROW_PYTHON_INCLUDES})
|
||||
target_link_libraries(arrow_python_test_main ${GTEST_LIBRARY})
|
||||
target_include_directories(arrow_python_test_main SYSTEM
|
||||
PUBLIC ${ARROW_PYTHON_INCLUDES})
|
||||
|
||||
if (APPLE)
|
||||
target_link_libraries(arrow_python_test_main
|
||||
${CMAKE_DL_LIBS})
|
||||
set_target_properties(arrow_python_test_main
|
||||
PROPERTIES LINK_FLAGS "-undefined dynamic_lookup")
|
||||
if(APPLE)
|
||||
target_link_libraries(arrow_python_test_main ${CMAKE_DL_LIBS})
|
||||
set_target_properties(arrow_python_test_main
|
||||
PROPERTIES LINK_FLAGS "-undefined dynamic_lookup")
|
||||
elseif(NOT MSVC)
|
||||
target_link_libraries(arrow_python_test_main
|
||||
pthread
|
||||
${CMAKE_DL_LIBS})
|
||||
target_link_libraries(arrow_python_test_main pthread ${CMAKE_DL_LIBS})
|
||||
endif()
|
||||
|
||||
set(ARROW_PYTHON_MIN_TEST_LIBS
|
||||
arrow_python_test_main
|
||||
arrow_python_shared
|
||||
arrow_testing_shared
|
||||
arrow_shared)
|
||||
arrow_python_test_main
|
||||
arrow_python_shared
|
||||
arrow_testing_shared
|
||||
arrow_shared)
|
||||
|
||||
set(ARROW_PYTHON_TEST_LINK_LIBS ${ARROW_PYTHON_MIN_TEST_LIBS})
|
||||
|
||||
ADD_ARROW_TEST(python-test
|
||||
STATIC_LINK_LIBS "${ARROW_PYTHON_TEST_LINK_LIBS}"
|
||||
EXTRA_LINK_LIBS ${PYTHON_LIBRARIES}
|
||||
EXTRA_INCLUDES "${ARROW_PYTHON_INCLUDES}"
|
||||
LABELS "arrow_python-tests"
|
||||
NO_VALGRIND)
|
||||
add_arrow_test(python-test
|
||||
STATIC_LINK_LIBS
|
||||
"${ARROW_PYTHON_TEST_LINK_LIBS}"
|
||||
EXTRA_LINK_LIBS
|
||||
${PYTHON_LIBRARIES}
|
||||
EXTRA_INCLUDES
|
||||
"${ARROW_PYTHON_INCLUDES}"
|
||||
LABELS
|
||||
"arrow_python-tests"
|
||||
NO_VALGRIND)
|
||||
endif()
|
||||
@@ -15,25 +15,18 @@
|
||||
# specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
#######################################
|
||||
#
|
||||
# arrow/python_test_main
|
||||
#######################################
|
||||
#
|
||||
|
||||
if (PYARROW_BUILD_TESTS)
|
||||
add_library(arrow/python_test_main STATIC
|
||||
test_main.cc)
|
||||
if(PYARROW_BUILD_TESTS)
|
||||
add_library(arrow/python_test_main STATIC test_main.cc)
|
||||
|
||||
if (APPLE)
|
||||
target_link_libraries(arrow/python_test_main
|
||||
${GTEST_LIBRARY}
|
||||
dl)
|
||||
set_target_properties(arrow/python_test_main
|
||||
PROPERTIES LINK_FLAGS "-undefined dynamic_lookup")
|
||||
if(APPLE)
|
||||
target_link_libraries(arrow/python_test_main ${GTEST_LIBRARY} dl)
|
||||
set_target_properties(arrow/python_test_main
|
||||
PROPERTIES LINK_FLAGS "-undefined dynamic_lookup")
|
||||
else()
|
||||
target_link_libraries(arrow/python_test_main
|
||||
${GTEST_LIBRARY}
|
||||
pthread
|
||||
dl
|
||||
)
|
||||
target_link_libraries(arrow/python_test_main ${GTEST_LIBRARY} pthread dl)
|
||||
endif()
|
||||
endif()
|
||||
@@ -15,64 +15,56 @@
|
||||
# specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
#######################################
|
||||
#
|
||||
# arrow_util
|
||||
#######################################
|
||||
#
|
||||
|
||||
# Headers: top level
|
||||
ARROW_INSTALL_ALL_HEADERS("arrow/util")
|
||||
arrow_install_all_headers("arrow/util")
|
||||
|
||||
#######################################
|
||||
#
|
||||
# arrow_test_main
|
||||
#######################################
|
||||
#
|
||||
|
||||
if (ARROW_BUILD_BENCHMARKS)
|
||||
if(ARROW_BUILD_BENCHMARKS)
|
||||
add_library(arrow_benchmark_main benchmark_main.cc)
|
||||
if (APPLE)
|
||||
target_link_libraries(arrow_benchmark_main
|
||||
gbenchmark_static
|
||||
)
|
||||
if(APPLE)
|
||||
target_link_libraries(arrow_benchmark_main gbenchmark_static)
|
||||
elseif(MSVC)
|
||||
target_link_libraries(arrow_benchmark_main
|
||||
gbenchmark_static
|
||||
Shlwapi.lib
|
||||
)
|
||||
target_link_libraries(arrow_benchmark_main gbenchmark_static Shlwapi.lib)
|
||||
else()
|
||||
target_link_libraries(arrow_benchmark_main
|
||||
gbenchmark_static
|
||||
pthread
|
||||
)
|
||||
target_link_libraries(arrow_benchmark_main gbenchmark_static pthread)
|
||||
endif()
|
||||
|
||||
# TODO(wesm): Some benchmarks include gtest.h
|
||||
add_dependencies(arrow_benchmark_main ${GTEST_LIBRARY})
|
||||
endif()
|
||||
|
||||
ADD_ARROW_TEST(bit-util-test)
|
||||
ADD_ARROW_TEST(checked-cast-test)
|
||||
ADD_ARROW_TEST(compression-test)
|
||||
ADD_ARROW_TEST(decimal-test)
|
||||
ADD_ARROW_TEST(hashing-test)
|
||||
ADD_ARROW_TEST(int-util-test)
|
||||
ADD_ARROW_TEST(key-value-metadata-test)
|
||||
ADD_ARROW_TEST(lazy-test)
|
||||
ADD_ARROW_TEST(logging-test)
|
||||
ADD_ARROW_TEST(parsing-util-test)
|
||||
ADD_ARROW_TEST(rle-encoding-test)
|
||||
ADD_ARROW_TEST(stl-util-test)
|
||||
ADD_ARROW_TEST(task-group-test)
|
||||
ADD_ARROW_TEST(thread-pool-test)
|
||||
ADD_ARROW_TEST(trie-test)
|
||||
ADD_ARROW_TEST(utf8-util-test)
|
||||
add_arrow_test(bit-util-test)
|
||||
add_arrow_test(checked-cast-test)
|
||||
add_arrow_test(compression-test)
|
||||
add_arrow_test(decimal-test)
|
||||
add_arrow_test(hashing-test)
|
||||
add_arrow_test(int-util-test)
|
||||
add_arrow_test(key-value-metadata-test)
|
||||
add_arrow_test(lazy-test)
|
||||
add_arrow_test(logging-test)
|
||||
add_arrow_test(parsing-util-test)
|
||||
add_arrow_test(rle-encoding-test)
|
||||
add_arrow_test(stl-util-test)
|
||||
add_arrow_test(task-group-test)
|
||||
add_arrow_test(thread-pool-test)
|
||||
add_arrow_test(trie-test)
|
||||
add_arrow_test(utf8-util-test)
|
||||
|
||||
ADD_ARROW_BENCHMARK(bit-util-benchmark)
|
||||
ADD_ARROW_BENCHMARK(compression-benchmark)
|
||||
ADD_ARROW_BENCHMARK(decimal-benchmark)
|
||||
ADD_ARROW_BENCHMARK(hashing-benchmark)
|
||||
ADD_ARROW_BENCHMARK(int-util-benchmark)
|
||||
ADD_ARROW_BENCHMARK(lazy-benchmark)
|
||||
ADD_ARROW_BENCHMARK(machine-benchmark)
|
||||
ADD_ARROW_BENCHMARK(number-parsing-benchmark)
|
||||
ADD_ARROW_BENCHMARK(thread-pool-benchmark)
|
||||
ADD_ARROW_BENCHMARK(trie-benchmark)
|
||||
ADD_ARROW_BENCHMARK(utf8-util-benchmark)
|
||||
add_arrow_benchmark(bit-util-benchmark)
|
||||
add_arrow_benchmark(compression-benchmark)
|
||||
add_arrow_benchmark(decimal-benchmark)
|
||||
add_arrow_benchmark(hashing-benchmark)
|
||||
add_arrow_benchmark(int-util-benchmark)
|
||||
add_arrow_benchmark(lazy-benchmark)
|
||||
add_arrow_benchmark(machine-benchmark)
|
||||
add_arrow_benchmark(number-parsing-benchmark)
|
||||
add_arrow_benchmark(thread-pool-benchmark)
|
||||
add_arrow_benchmark(trie-benchmark)
|
||||
add_arrow_benchmark(utf8-util-benchmark)
|
||||
@@ -15,6 +15,6 @@
|
||||
# specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
ARROW_INSTALL_ALL_HEADERS("arrow/vendored")
|
||||
arrow_install_all_headers("arrow/vendored")
|
||||
|
||||
add_subdirectory(variant)
|
||||
@@ -15,4 +15,4 @@
|
||||
# specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
ARROW_INSTALL_ALL_HEADERS("arrow/vendored/variant")
|
||||
arrow_install_all_headers("arrow/vendored/variant")
|
||||
+104
-109
@@ -28,71 +28,61 @@ add_dependencies(gandiva-all gandiva gandiva-tests gandiva-benchmarks)
|
||||
find_package(LLVM)
|
||||
|
||||
# Set the path where the byte-code files will be installed.
|
||||
set(GANDIVA_BC_INSTALL_DIR
|
||||
${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/gandiva)
|
||||
set(GANDIVA_BC_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/gandiva)
|
||||
|
||||
set(GANDIVA_BC_FILE_NAME irhelpers.bc)
|
||||
set(GANDIVA_BC_INSTALL_PATH "${GANDIVA_BC_INSTALL_DIR}/${GANDIVA_BC_FILE_NAME}")
|
||||
set(GANDIVA_BC_OUTPUT_PATH "${CMAKE_CURRENT_BINARY_DIR}/${GANDIVA_BC_FILE_NAME}")
|
||||
install(FILES
|
||||
${GANDIVA_BC_OUTPUT_PATH}
|
||||
DESTINATION ${GANDIVA_BC_INSTALL_DIR})
|
||||
install(FILES ${GANDIVA_BC_OUTPUT_PATH} DESTINATION ${GANDIVA_BC_INSTALL_DIR})
|
||||
|
||||
set(BC_FILE_PATH_CC "${CMAKE_CURRENT_BINARY_DIR}/bc_file_path.cc")
|
||||
configure_file(bc_file_path.cc.in ${BC_FILE_PATH_CC})
|
||||
add_definitions(-DGANDIVA_BYTE_COMPILE_FILE_PATH="${GANDIVA_BC_OUTPUT_PATH}")
|
||||
|
||||
set(SRC_FILES annotator.cc
|
||||
bitmap_accumulator.cc
|
||||
cast_time.cc
|
||||
configuration.cc
|
||||
context_helper.cc
|
||||
decimal_ir.cc
|
||||
decimal_type_util.cc
|
||||
engine.cc
|
||||
date_utils.cc
|
||||
expr_decomposer.cc
|
||||
expr_validator.cc
|
||||
expression.cc
|
||||
expression_registry.cc
|
||||
exported_funcs_registry.cc
|
||||
filter.cc
|
||||
function_ir_builder.cc
|
||||
function_registry.cc
|
||||
function_registry_arithmetic.cc
|
||||
function_registry_datetime.cc
|
||||
function_registry_hash.cc
|
||||
function_registry_math_ops.cc
|
||||
function_registry_string.cc
|
||||
function_registry_timestamp_arithmetic.cc
|
||||
function_signature.cc
|
||||
gdv_function_stubs.cc
|
||||
llvm_generator.cc
|
||||
llvm_types.cc
|
||||
like_holder.cc
|
||||
projector.cc
|
||||
regex_util.cc
|
||||
selection_vector.cc
|
||||
tree_expr_builder.cc
|
||||
to_date_holder.cc
|
||||
${BC_FILE_PATH_CC})
|
||||
set(SRC_FILES
|
||||
annotator.cc
|
||||
bitmap_accumulator.cc
|
||||
cast_time.cc
|
||||
configuration.cc
|
||||
context_helper.cc
|
||||
decimal_ir.cc
|
||||
decimal_type_util.cc
|
||||
engine.cc
|
||||
date_utils.cc
|
||||
expr_decomposer.cc
|
||||
expr_validator.cc
|
||||
expression.cc
|
||||
expression_registry.cc
|
||||
exported_funcs_registry.cc
|
||||
filter.cc
|
||||
function_ir_builder.cc
|
||||
function_registry.cc
|
||||
function_registry_arithmetic.cc
|
||||
function_registry_datetime.cc
|
||||
function_registry_hash.cc
|
||||
function_registry_math_ops.cc
|
||||
function_registry_string.cc
|
||||
function_registry_timestamp_arithmetic.cc
|
||||
function_signature.cc
|
||||
gdv_function_stubs.cc
|
||||
llvm_generator.cc
|
||||
llvm_types.cc
|
||||
like_holder.cc
|
||||
projector.cc
|
||||
regex_util.cc
|
||||
selection_vector.cc
|
||||
tree_expr_builder.cc
|
||||
to_date_holder.cc
|
||||
${BC_FILE_PATH_CC})
|
||||
|
||||
set(GANDIVA_SHARED_PRIVATE_LINK_LIBS
|
||||
arrow_shared
|
||||
LLVM::LLVM_INTERFACE
|
||||
${RE2_LIBRARY})
|
||||
set(GANDIVA_SHARED_PRIVATE_LINK_LIBS arrow_shared LLVM::LLVM_INTERFACE ${RE2_LIBRARY})
|
||||
|
||||
set(GANDIVA_STATIC_LINK_LIBS
|
||||
arrow_static
|
||||
LLVM::LLVM_INTERFACE
|
||||
${RE2_LIBRARY})
|
||||
set(GANDIVA_STATIC_LINK_LIBS arrow_static LLVM::LLVM_INTERFACE ${RE2_LIBRARY})
|
||||
|
||||
if (ARROW_GANDIVA_STATIC_LIBSTDCPP
|
||||
AND (CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX))
|
||||
set(GANDIVA_STATIC_LINK_LIBS
|
||||
${GANDIVA_STATIC_LINK_LIBS}
|
||||
-static-libstdc++
|
||||
-static-libgcc)
|
||||
if(ARROW_GANDIVA_STATIC_LIBSTDCPP
|
||||
AND (CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX))
|
||||
set(GANDIVA_STATIC_LINK_LIBS ${GANDIVA_STATIC_LINK_LIBS} -static-libstdc++
|
||||
-static-libgcc)
|
||||
endif()
|
||||
|
||||
# if (MSVC)
|
||||
@@ -104,23 +94,30 @@ endif()
|
||||
# endforeach()
|
||||
# endif()
|
||||
|
||||
ADD_ARROW_LIB(gandiva
|
||||
SOURCES ${SRC_FILES}
|
||||
OUTPUTS GANDIVA_LIBRARIES
|
||||
DEPENDENCIES arrow_dependencies precompiled
|
||||
EXTRA_INCLUDES
|
||||
$<TARGET_PROPERTY:LLVM::LLVM_INTERFACE,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
SHARED_LINK_FLAGS ${GANDIVA_SHARED_LINK_FLAGS}
|
||||
SHARED_LINK_LIBS arrow_shared
|
||||
SHARED_PRIVATE_LINK_LIBS ${GANDIVA_SHARED_PRIVATE_LINK_LIBS}
|
||||
STATIC_LINK_LIBS ${GANDIVA_STATIC_LINK_LIBS})
|
||||
add_arrow_lib(gandiva
|
||||
SOURCES
|
||||
${SRC_FILES}
|
||||
OUTPUTS
|
||||
GANDIVA_LIBRARIES
|
||||
DEPENDENCIES
|
||||
arrow_dependencies
|
||||
precompiled
|
||||
EXTRA_INCLUDES
|
||||
$<TARGET_PROPERTY:LLVM::LLVM_INTERFACE,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
SHARED_LINK_FLAGS
|
||||
${GANDIVA_SHARED_LINK_FLAGS}
|
||||
SHARED_LINK_LIBS
|
||||
arrow_shared
|
||||
SHARED_PRIVATE_LINK_LIBS
|
||||
${GANDIVA_SHARED_PRIVATE_LINK_LIBS}
|
||||
STATIC_LINK_LIBS
|
||||
${GANDIVA_STATIC_LINK_LIBS})
|
||||
|
||||
foreach(LIB_TARGET ${GANDIVA_LIBRARIES})
|
||||
target_compile_definitions(${LIB_TARGET}
|
||||
PRIVATE GANDIVA_EXPORTING)
|
||||
target_compile_definitions(${LIB_TARGET} PRIVATE GANDIVA_EXPORTING)
|
||||
endforeach()
|
||||
|
||||
if (ARROW_BUILD_STATIC AND WIN32)
|
||||
if(ARROW_BUILD_STATIC AND WIN32)
|
||||
target_compile_definitions(gandiva_static PUBLIC GANDIVA_STATIC)
|
||||
endif()
|
||||
|
||||
@@ -130,78 +127,76 @@ add_dependencies(gandiva ${GANDIVA_LIBRARIES})
|
||||
include(GNUInstallDirs)
|
||||
|
||||
# install the header files.
|
||||
ARROW_INSTALL_ALL_HEADERS("gandiva")
|
||||
arrow_install_all_headers("gandiva")
|
||||
|
||||
# pkg-config support
|
||||
ARROW_ADD_PKG_CONFIG("gandiva")
|
||||
arrow_add_pkg_config("gandiva")
|
||||
|
||||
set(GANDIVA_STATIC_TEST_LINK_LIBS
|
||||
gandiva_static
|
||||
${RE2_LIBRARY}
|
||||
${ARROW_TEST_LINK_LIBS})
|
||||
set(GANDIVA_STATIC_TEST_LINK_LIBS gandiva_static ${RE2_LIBRARY} ${ARROW_TEST_LINK_LIBS})
|
||||
|
||||
set(GANDIVA_SHARED_TEST_LINK_LIBS
|
||||
gandiva_shared
|
||||
${RE2_LIBRARY}
|
||||
${ARROW_TEST_LINK_LIBS})
|
||||
set(GANDIVA_SHARED_TEST_LINK_LIBS gandiva_shared ${RE2_LIBRARY} ${ARROW_TEST_LINK_LIBS})
|
||||
|
||||
function(ADD_GANDIVA_TEST REL_TEST_NAME)
|
||||
set(options USE_STATIC_LINKING)
|
||||
set(one_value_args)
|
||||
set(multi_value_args)
|
||||
cmake_parse_arguments(ARG "${options}" "${one_value_args}" "${multi_value_args}" ${ARGN})
|
||||
cmake_parse_arguments(ARG
|
||||
"${options}"
|
||||
"${one_value_args}"
|
||||
"${multi_value_args}"
|
||||
${ARGN})
|
||||
|
||||
if (NO_TESTS)
|
||||
if(NO_TESTS)
|
||||
return()
|
||||
endif()
|
||||
|
||||
set(TEST_ARGUMENTS
|
||||
ENABLED
|
||||
PREFIX "gandiva"
|
||||
LABELS "gandiva-tests"
|
||||
${ARG_UNPARSED_ARGUMENTS})
|
||||
ENABLED
|
||||
PREFIX
|
||||
"gandiva"
|
||||
LABELS
|
||||
"gandiva-tests"
|
||||
${ARG_UNPARSED_ARGUMENTS})
|
||||
|
||||
# and uses less disk space, but in some cases we need to force static
|
||||
# linking (see rationale below).
|
||||
if (ARG_USE_STATIC_LINKING)
|
||||
ADD_TEST_CASE(${REL_TEST_NAME}
|
||||
${TEST_ARGUMENTS}
|
||||
STATIC_LINK_LIBS ${GANDIVA_STATIC_TEST_LINK_LIBS})
|
||||
if(ARG_USE_STATIC_LINKING)
|
||||
add_test_case(${REL_TEST_NAME} ${TEST_ARGUMENTS} STATIC_LINK_LIBS
|
||||
${GANDIVA_STATIC_TEST_LINK_LIBS})
|
||||
else()
|
||||
ADD_TEST_CASE(${REL_TEST_NAME}
|
||||
${TEST_ARGUMENTS}
|
||||
STATIC_LINK_LIBS ${GANDIVA_SHARED_TEST_LINK_LIBS})
|
||||
add_test_case(${REL_TEST_NAME} ${TEST_ARGUMENTS} STATIC_LINK_LIBS
|
||||
${GANDIVA_SHARED_TEST_LINK_LIBS})
|
||||
endif()
|
||||
|
||||
set(TARGET_NAME gandiva-${REL_TEST_NAME})
|
||||
|
||||
if((TARGET ${TARGET_NAME}) AND
|
||||
(${REL_TEST_NAME} MATCHES "llvm" OR
|
||||
${REL_TEST_NAME} MATCHES "expression_registry"))
|
||||
if((TARGET ${TARGET_NAME})
|
||||
AND (${REL_TEST_NAME} MATCHES "llvm"
|
||||
OR ${REL_TEST_NAME} MATCHES "expression_registry"))
|
||||
# If the unit test has llvm in its name, include llvm.
|
||||
add_dependencies(${TARGET_NAME} LLVM::LLVM_INTERFACE)
|
||||
target_link_libraries(${TARGET_NAME} PRIVATE LLVM::LLVM_INTERFACE)
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
ADD_GANDIVA_TEST(bitmap_accumulator_test)
|
||||
ADD_GANDIVA_TEST(engine_llvm_test)
|
||||
ADD_GANDIVA_TEST(function_signature_test)
|
||||
ADD_GANDIVA_TEST(function_registry_test)
|
||||
ADD_GANDIVA_TEST(llvm_types_test)
|
||||
ADD_GANDIVA_TEST(llvm_generator_test)
|
||||
ADD_GANDIVA_TEST(annotator_test)
|
||||
ADD_GANDIVA_TEST(tree_expr_test)
|
||||
ADD_GANDIVA_TEST(expr_decomposer_test)
|
||||
ADD_GANDIVA_TEST(expression_registry_test)
|
||||
ADD_GANDIVA_TEST(selection_vector_test)
|
||||
ADD_GANDIVA_TEST(lru_cache_test)
|
||||
ADD_GANDIVA_TEST(to_date_holder_test)
|
||||
ADD_GANDIVA_TEST(simple_arena_test)
|
||||
ADD_GANDIVA_TEST(like_holder_test)
|
||||
ADD_GANDIVA_TEST(decimal_type_util_test)
|
||||
add_gandiva_test(bitmap_accumulator_test)
|
||||
add_gandiva_test(engine_llvm_test)
|
||||
add_gandiva_test(function_signature_test)
|
||||
add_gandiva_test(function_registry_test)
|
||||
add_gandiva_test(llvm_types_test)
|
||||
add_gandiva_test(llvm_generator_test)
|
||||
add_gandiva_test(annotator_test)
|
||||
add_gandiva_test(tree_expr_test)
|
||||
add_gandiva_test(expr_decomposer_test)
|
||||
add_gandiva_test(expression_registry_test)
|
||||
add_gandiva_test(selection_vector_test)
|
||||
add_gandiva_test(lru_cache_test)
|
||||
add_gandiva_test(to_date_holder_test)
|
||||
add_gandiva_test(simple_arena_test)
|
||||
add_gandiva_test(like_holder_test)
|
||||
add_gandiva_test(decimal_type_util_test)
|
||||
|
||||
if (ARROW_GANDIVA_JAVA)
|
||||
if(ARROW_GANDIVA_JAVA)
|
||||
add_subdirectory(jni)
|
||||
endif()
|
||||
|
||||
|
||||
@@ -28,15 +28,17 @@ set(PROTO_OUTPUT_FILES ${PROTO_OUTPUT_FILES} "${PROTO_OUTPUT_DIR}/Types.pb.h")
|
||||
|
||||
set_source_files_properties(${PROTO_OUTPUT_FILES} PROPERTIES GENERATED TRUE)
|
||||
|
||||
get_filename_component(ABS_GANDIVA_PROTO ${CMAKE_SOURCE_DIR}/src/gandiva/proto/Types.proto ABSOLUTE)
|
||||
get_filename_component(ABS_GANDIVA_PROTO ${CMAKE_SOURCE_DIR}/src/gandiva/proto/Types.proto
|
||||
ABSOLUTE)
|
||||
|
||||
add_custom_command(
|
||||
OUTPUT ${PROTO_OUTPUT_FILES}
|
||||
COMMAND ${PROTOBUF_EXECUTABLE} --proto_path ${CMAKE_SOURCE_DIR}/src/gandiva/proto --cpp_out ${PROTO_OUTPUT_DIR} ${CMAKE_SOURCE_DIR}/src/gandiva/proto/Types.proto
|
||||
DEPENDS ${ABS_GANDIVA_PROTO} ${PROTOBUF_LIBRARY}
|
||||
COMMENT "Running PROTO compiler on Types.proto"
|
||||
VERBATIM
|
||||
)
|
||||
add_custom_command(OUTPUT ${PROTO_OUTPUT_FILES}
|
||||
COMMAND ${PROTOBUF_EXECUTABLE}
|
||||
--proto_path ${CMAKE_SOURCE_DIR}/src/gandiva/proto
|
||||
--cpp_out ${PROTO_OUTPUT_DIR}
|
||||
${CMAKE_SOURCE_DIR}/src/gandiva/proto/Types.proto
|
||||
DEPENDS ${ABS_GANDIVA_PROTO} ${PROTOBUF_LIBRARY}
|
||||
COMMENT "Running PROTO compiler on Types.proto"
|
||||
VERBATIM)
|
||||
|
||||
add_custom_target(gandiva_jni_proto ALL DEPENDS ${PROTO_OUTPUT_FILES})
|
||||
set(PROTO_SRCS "${PROTO_OUTPUT_DIR}/Types.pb.cc")
|
||||
@@ -46,37 +48,47 @@ set(PROTO_HDRS "${PROTO_OUTPUT_DIR}/Types.pb.h")
|
||||
set(JNI_HEADERS_DIR "${CMAKE_CURRENT_BINARY_DIR}/java")
|
||||
add_subdirectory(../../../../java/gandiva ./java/gandiva)
|
||||
|
||||
set(GANDIVA_LINK_LIBS
|
||||
${PROTOBUF_LIBRARY}
|
||||
gandiva_static)
|
||||
set(GANDIVA_LINK_LIBS ${PROTOBUF_LIBRARY} gandiva_static)
|
||||
|
||||
set(GANDIVA_JNI_SOURCES config_builder.cc
|
||||
config_holder.cc
|
||||
expression_registry_helper.cc
|
||||
jni_common.cc
|
||||
${PROTO_SRCS})
|
||||
set(GANDIVA_JNI_SOURCES
|
||||
config_builder.cc
|
||||
config_holder.cc
|
||||
expression_registry_helper.cc
|
||||
jni_common.cc
|
||||
${PROTO_SRCS})
|
||||
|
||||
# For users of gandiva_jni library (including integ tests), include-dir is :
|
||||
# /usr/**/include dir after install,
|
||||
# cpp/include during build
|
||||
# For building gandiva_jni library itself, include-dir (in addition to above) is :
|
||||
# cpp/src
|
||||
ADD_ARROW_LIB(gandiva_jni
|
||||
SOURCES ${GANDIVA_JNI_SOURCES}
|
||||
OUTPUTS GANDIVA_JNI_LIBRARIES
|
||||
SHARED_PRIVATE_LINK_LIBS ${GANDIVA_LINK_LIBS}
|
||||
STATIC_LINK_LIBS ${GANDIVA_LINK_LIBS}
|
||||
DEPENDENCIES gandiva_java gandiva_jni_proto
|
||||
EXTRA_INCLUDES $<INSTALL_INTERFACE:include>
|
||||
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/include>
|
||||
${JNI_HEADERS_DIR}
|
||||
PRIVATE_INCLUDES ${JNI_INCLUDE_DIRS} ${CMAKE_CURRENT_BINARY_DIR})
|
||||
add_arrow_lib(gandiva_jni
|
||||
SOURCES
|
||||
${GANDIVA_JNI_SOURCES}
|
||||
OUTPUTS
|
||||
GANDIVA_JNI_LIBRARIES
|
||||
SHARED_PRIVATE_LINK_LIBS
|
||||
${GANDIVA_LINK_LIBS}
|
||||
STATIC_LINK_LIBS
|
||||
${GANDIVA_LINK_LIBS}
|
||||
DEPENDENCIES
|
||||
gandiva_java
|
||||
gandiva_jni_proto
|
||||
EXTRA_INCLUDES
|
||||
$<INSTALL_INTERFACE:include>
|
||||
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/include>
|
||||
${JNI_HEADERS_DIR}
|
||||
PRIVATE_INCLUDES
|
||||
${JNI_INCLUDE_DIRS}
|
||||
${CMAKE_CURRENT_BINARY_DIR})
|
||||
|
||||
add_dependencies(gandiva ${GANDIVA_JNI_LIBRARIES})
|
||||
|
||||
# filter out everything that is not needed for the jni bridge
|
||||
# statically linked stdc++ has conflicts with stdc++ loaded by other libraries.
|
||||
if (NOT APPLE)
|
||||
set_target_properties(gandiva_jni_shared PROPERTIES
|
||||
LINK_FLAGS "-Wl,--version-script=${CMAKE_SOURCE_DIR}/src/gandiva/jni/symbols.map")
|
||||
if(NOT APPLE)
|
||||
set_target_properties(
|
||||
gandiva_jni_shared
|
||||
PROPERTIES LINK_FLAGS
|
||||
"-Wl,--version-script=${CMAKE_SOURCE_DIR}/src/gandiva/jni/symbols.map")
|
||||
endif()
|
||||
@@ -30,16 +30,14 @@ set(PRECOMPILED_SRCS
|
||||
timestamp_arithmetic.cc
|
||||
../../arrow/util/basic_decimal.cc)
|
||||
|
||||
if (MSVC)
|
||||
if(MSVC)
|
||||
# clang pretends to be a particular version of MSVC. Version 1900 is
|
||||
# Visual Studio 2015, and the standard library uses C++14 features,
|
||||
# so we have to use that -std version to get the IR compilation to
|
||||
# work
|
||||
set(PLATFORM_CLANG_OPTIONS
|
||||
-std=c++14 -fms-compatibility -fms-compatibility-version=19)
|
||||
set(PLATFORM_CLANG_OPTIONS -std=c++14 -fms-compatibility -fms-compatibility-version=19)
|
||||
else()
|
||||
set(PLATFORM_CLANG_OPTIONS
|
||||
-std=c++11)
|
||||
set(PLATFORM_CLANG_OPTIONS -std=c++11)
|
||||
endif()
|
||||
|
||||
# Create bitcode for each of the source files.
|
||||
@@ -55,8 +53,13 @@ foreach(SRC_FILE ${PRECOMPILED_SRCS})
|
||||
-DNDEBUG # DCHECK macros not implemented in precompiled code
|
||||
-DARROW_STATIC # Do not set __declspec(dllimport) on MSVC on Arrow symbols
|
||||
-DGANDIVA_STATIC # Do not set __declspec(dllimport) on MSVC on Gandiva symbols
|
||||
-fno-use-cxa-atexit # Workaround for unresolved __dso_handle
|
||||
-emit-llvm -O3 -c ${ABSOLUTE_SRC} -o ${BC_FILE}
|
||||
-fno-use-cxa-atexit # Workaround for unresolved __dso_handle
|
||||
-emit-llvm
|
||||
-O3
|
||||
-c
|
||||
${ABSOLUTE_SRC}
|
||||
-o
|
||||
${BC_FILE}
|
||||
${ARROW_GANDIVA_PC_CXX_FLAGS}
|
||||
-I${CMAKE_SOURCE_DIR}/src
|
||||
DEPENDS ${SRC_FILE})
|
||||
@@ -64,12 +67,10 @@ foreach(SRC_FILE ${PRECOMPILED_SRCS})
|
||||
endforeach()
|
||||
|
||||
# link all of the bitcode files into a single bitcode file.
|
||||
add_custom_command(
|
||||
OUTPUT ${GANDIVA_BC_OUTPUT_PATH}
|
||||
COMMAND ${LLVM_LINK_EXECUTABLE}
|
||||
-o ${GANDIVA_BC_OUTPUT_PATH}
|
||||
${BC_FILES}
|
||||
DEPENDS ${BC_FILES})
|
||||
add_custom_command(OUTPUT ${GANDIVA_BC_OUTPUT_PATH}
|
||||
COMMAND ${LLVM_LINK_EXECUTABLE} -o ${GANDIVA_BC_OUTPUT_PATH}
|
||||
${BC_FILES}
|
||||
DEPENDS ${BC_FILES})
|
||||
|
||||
add_custom_target(precompiled ALL DEPENDS ${GANDIVA_BC_OUTPUT_PATH})
|
||||
|
||||
@@ -80,29 +81,32 @@ function(add_precompiled_unit_test REL_TEST_NAME)
|
||||
|
||||
add_executable(${TEST_NAME} ${REL_TEST_NAME} ${ARGN})
|
||||
target_include_directories(${TEST_NAME} PRIVATE ${CMAKE_SOURCE_DIR}/src)
|
||||
target_link_libraries(${TEST_NAME}
|
||||
PRIVATE ${ARROW_TEST_LINK_LIBS} ${RE2_LIBRARY}
|
||||
)
|
||||
target_compile_definitions(${TEST_NAME} PRIVATE
|
||||
GANDIVA_UNIT_TEST=1
|
||||
ARROW_STATIC
|
||||
GANDIVA_STATIC)
|
||||
target_link_libraries(${TEST_NAME} PRIVATE ${ARROW_TEST_LINK_LIBS} ${RE2_LIBRARY})
|
||||
target_compile_definitions(${TEST_NAME}
|
||||
PRIVATE
|
||||
GANDIVA_UNIT_TEST=1
|
||||
ARROW_STATIC
|
||||
GANDIVA_STATIC)
|
||||
set(TEST_PATH "${EXECUTABLE_OUTPUT_PATH}/${TEST_NAME}")
|
||||
add_test(${TEST_NAME} ${TEST_PATH})
|
||||
set_property(TEST ${TEST_NAME}
|
||||
APPEND PROPERTY
|
||||
LABELS "unittest;gandiva-tests")
|
||||
set_property(TEST ${TEST_NAME} APPEND PROPERTY LABELS "unittest;gandiva-tests")
|
||||
add_dependencies(gandiva-tests ${TEST_NAME})
|
||||
endfunction(add_precompiled_unit_test REL_TEST_NAME)
|
||||
|
||||
# testing
|
||||
if (ARROW_BUILD_TESTS)
|
||||
if(ARROW_BUILD_TESTS)
|
||||
add_precompiled_unit_test(bitmap_test.cc bitmap.cc)
|
||||
add_precompiled_unit_test(epoch_time_point_test.cc)
|
||||
add_precompiled_unit_test(time_test.cc time.cc timestamp_arithmetic.cc ../context_helper.cc ../cast_time.cc ../../arrow/vendored/datetime/tz.cpp)
|
||||
add_precompiled_unit_test(time_test.cc
|
||||
time.cc
|
||||
timestamp_arithmetic.cc
|
||||
../context_helper.cc
|
||||
../cast_time.cc
|
||||
../../arrow/vendored/datetime/tz.cpp)
|
||||
add_precompiled_unit_test(hash_test.cc hash.cc)
|
||||
add_precompiled_unit_test(string_ops_test.cc string_ops.cc ../context_helper.cc)
|
||||
add_precompiled_unit_test(arithmetic_ops_test.cc arithmetic_ops.cc ../context_helper.cc)
|
||||
add_precompiled_unit_test(extended_math_ops_test.cc extended_math_ops.cc ../context_helper.cc)
|
||||
add_precompiled_unit_test(extended_math_ops_test.cc extended_math_ops.cc
|
||||
../context_helper.cc)
|
||||
add_precompiled_unit_test(decimal_ops_test.cc decimal_ops.cc ../decimal_type_util.cc)
|
||||
endif()
|
||||
@@ -15,25 +15,21 @@
|
||||
# specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
ADD_GANDIVA_TEST(filter_test)
|
||||
ADD_GANDIVA_TEST(projector_test)
|
||||
ADD_GANDIVA_TEST(projector_build_validation_test)
|
||||
ADD_GANDIVA_TEST(if_expr_test)
|
||||
ADD_GANDIVA_TEST(literal_test)
|
||||
ADD_GANDIVA_TEST(boolean_expr_test)
|
||||
ADD_GANDIVA_TEST(binary_test)
|
||||
ADD_GANDIVA_TEST(date_time_test)
|
||||
ADD_GANDIVA_TEST(to_string_test)
|
||||
ADD_GANDIVA_TEST(hash_test)
|
||||
ADD_GANDIVA_TEST(in_expr_test)
|
||||
ADD_GANDIVA_TEST(null_validity_test)
|
||||
ADD_GANDIVA_TEST(decimal_test)
|
||||
ADD_GANDIVA_TEST(decimal_single_test)
|
||||
add_gandiva_test(filter_test)
|
||||
add_gandiva_test(projector_test)
|
||||
add_gandiva_test(projector_build_validation_test)
|
||||
add_gandiva_test(if_expr_test)
|
||||
add_gandiva_test(literal_test)
|
||||
add_gandiva_test(boolean_expr_test)
|
||||
add_gandiva_test(binary_test)
|
||||
add_gandiva_test(date_time_test)
|
||||
add_gandiva_test(to_string_test)
|
||||
add_gandiva_test(hash_test)
|
||||
add_gandiva_test(in_expr_test)
|
||||
add_gandiva_test(null_validity_test)
|
||||
add_gandiva_test(decimal_test)
|
||||
add_gandiva_test(decimal_single_test)
|
||||
|
||||
ADD_GANDIVA_TEST(projector_test_static
|
||||
SOURCES projector_test.cc
|
||||
USE_STATIC_LINKING)
|
||||
add_gandiva_test(projector_test_static SOURCES projector_test.cc USE_STATIC_LINKING)
|
||||
|
||||
ADD_ARROW_BENCHMARK(micro_benchmarks
|
||||
PREFIX "gandiva"
|
||||
EXTRA_LINK_LIBS gandiva_static)
|
||||
add_arrow_benchmark(micro_benchmarks PREFIX "gandiva" EXTRA_LINK_LIBS gandiva_static)
|
||||
+149
-167
@@ -32,26 +32,26 @@ function(ADD_PARQUET_TEST REL_TEST_NAME)
|
||||
set(options USE_STATIC_LINKING)
|
||||
set(one_value_args)
|
||||
set(multi_value_args EXTRA_DEPENDENCIES LABELS)
|
||||
cmake_parse_arguments(ARG "${options}" "${one_value_args}" "${multi_value_args}" ${ARGN})
|
||||
cmake_parse_arguments(ARG
|
||||
"${options}"
|
||||
"${one_value_args}"
|
||||
"${multi_value_args}"
|
||||
${ARGN})
|
||||
if(ARG_UNPARSED_ARGUMENTS)
|
||||
message(SEND_ERROR "Error: unrecognized arguments: ${ARG_UNPARSED_ARGUMENTS}")
|
||||
endif()
|
||||
|
||||
set(TEST_ARGUMENTS
|
||||
PREFIX "parquet"
|
||||
LABELS "parquet-tests")
|
||||
set(TEST_ARGUMENTS PREFIX "parquet" LABELS "parquet-tests")
|
||||
|
||||
# By default we prefer shared linking with libparquet, as it's faster
|
||||
# and uses less disk space, but in some cases we need to force static
|
||||
# linking (see rationale below).
|
||||
if (ARG_USE_STATIC_LINKING)
|
||||
ADD_TEST_CASE(${REL_TEST_NAME}
|
||||
STATIC_LINK_LIBS ${PARQUET_STATIC_TEST_LINK_LIBS}
|
||||
${TEST_ARGUMENTS})
|
||||
if(ARG_USE_STATIC_LINKING)
|
||||
add_test_case(${REL_TEST_NAME} STATIC_LINK_LIBS ${PARQUET_STATIC_TEST_LINK_LIBS}
|
||||
${TEST_ARGUMENTS})
|
||||
else()
|
||||
ADD_TEST_CASE(${REL_TEST_NAME}
|
||||
STATIC_LINK_LIBS ${PARQUET_SHARED_TEST_LINK_LIBS}
|
||||
${TEST_ARGUMENTS})
|
||||
add_test_case(${REL_TEST_NAME} STATIC_LINK_LIBS ${PARQUET_SHARED_TEST_LINK_LIBS}
|
||||
${TEST_ARGUMENTS})
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
@@ -59,17 +59,23 @@ function(ADD_PARQUET_BENCHMARK REL_TEST_NAME)
|
||||
set(options)
|
||||
set(one_value_args PREFIX)
|
||||
set(multi_value_args)
|
||||
cmake_parse_arguments(ARG "${options}" "${one_value_args}" "${multi_value_args}" ${ARGN})
|
||||
if (ARG_PREFIX)
|
||||
cmake_parse_arguments(ARG
|
||||
"${options}"
|
||||
"${one_value_args}"
|
||||
"${multi_value_args}"
|
||||
${ARGN})
|
||||
if(ARG_PREFIX)
|
||||
set(PREFIX ${ARG_PREFIX})
|
||||
else()
|
||||
set(PREFIX "parquet")
|
||||
endif()
|
||||
ADD_BENCHMARK(${REL_TEST_NAME}
|
||||
PREFIX ${PREFIX}
|
||||
LABELS "parquet-benchmarks"
|
||||
${PARQUET_BENCHMARK_LINK_OPTION}
|
||||
${ARG_UNPARSED_ARGUMENTS})
|
||||
add_benchmark(${REL_TEST_NAME}
|
||||
PREFIX
|
||||
${PREFIX}
|
||||
LABELS
|
||||
"parquet-benchmarks"
|
||||
${PARQUET_BENCHMARK_LINK_OPTION}
|
||||
${ARG_UNPARSED_ARGUMENTS})
|
||||
endfunction()
|
||||
|
||||
# ----------------------------------------------------------------------
|
||||
@@ -77,153 +83,124 @@ endfunction()
|
||||
|
||||
# TODO(wesm): Handling of ABI/SO version
|
||||
|
||||
if (ARROW_BUILD_STATIC)
|
||||
set(PARQUET_STATIC_LINK_LIBS
|
||||
arrow_static)
|
||||
set(ARROW_LIBRARIES_FOR_STATIC_TESTS
|
||||
arrow_testing_static
|
||||
arrow_static)
|
||||
if(ARROW_BUILD_STATIC)
|
||||
set(PARQUET_STATIC_LINK_LIBS arrow_static)
|
||||
set(ARROW_LIBRARIES_FOR_STATIC_TESTS arrow_testing_static arrow_static)
|
||||
else()
|
||||
set(ARROW_LIBRARIES_FOR_STATIC_TESTS
|
||||
arrow_testing_shared
|
||||
arrow_shared)
|
||||
set(ARROW_LIBRARIES_FOR_STATIC_TESTS arrow_testing_shared arrow_shared)
|
||||
endif()
|
||||
|
||||
set(PARQUET_BOOST_LINK_LIBS
|
||||
${BOOST_REGEX_LIBRARY})
|
||||
set(PARQUET_BOOST_LINK_LIBS ${BOOST_REGEX_LIBRARY})
|
||||
|
||||
if(MSVC)
|
||||
set(PARQUET_BOOST_LINK_LIBS ${PARQUET_BOOST_LINK_LIBS}
|
||||
${BOOST_SYSTEM_LIBRARY})
|
||||
set(PARQUET_BOOST_LINK_LIBS ${PARQUET_BOOST_LINK_LIBS} ${BOOST_SYSTEM_LIBRARY})
|
||||
endif()
|
||||
|
||||
set(PARQUET_MIN_TEST_LIBS
|
||||
${GTEST_MAIN_LIBRARY}
|
||||
${GTEST_LIBRARY})
|
||||
set(PARQUET_MIN_TEST_LIBS ${GTEST_MAIN_LIBRARY} ${GTEST_LIBRARY})
|
||||
|
||||
if (APPLE)
|
||||
set(PARQUET_MIN_TEST_LIBS
|
||||
${PARQUET_MIN_TEST_LIBS}
|
||||
${CMAKE_DL_LIBS})
|
||||
if(APPLE)
|
||||
set(PARQUET_MIN_TEST_LIBS ${PARQUET_MIN_TEST_LIBS} ${CMAKE_DL_LIBS})
|
||||
elseif(NOT MSVC)
|
||||
set(PARQUET_MIN_TEST_LIBS
|
||||
${PARQUET_MIN_TEST_LIBS}
|
||||
pthread
|
||||
${CMAKE_DL_LIBS})
|
||||
set(PARQUET_MIN_TEST_LIBS ${PARQUET_MIN_TEST_LIBS} pthread ${CMAKE_DL_LIBS})
|
||||
endif()
|
||||
|
||||
set(PARQUET_SHARED_TEST_LINK_LIBS
|
||||
arrow_testing_shared
|
||||
${PARQUET_MIN_TEST_LIBS}
|
||||
parquet_shared
|
||||
thriftstatic)
|
||||
arrow_testing_shared
|
||||
${PARQUET_MIN_TEST_LIBS}
|
||||
parquet_shared
|
||||
thriftstatic)
|
||||
|
||||
set(PARQUET_STATIC_TEST_LINK_LIBS
|
||||
${PARQUET_MIN_TEST_LIBS}
|
||||
${ARROW_LIBRARIES_FOR_STATIC_TESTS}
|
||||
parquet_static)
|
||||
set(PARQUET_STATIC_TEST_LINK_LIBS ${PARQUET_MIN_TEST_LIBS}
|
||||
${ARROW_LIBRARIES_FOR_STATIC_TESTS} parquet_static)
|
||||
|
||||
if (WIN32)
|
||||
if(WIN32)
|
||||
# The benchmarks depend on some static Thrift symbols
|
||||
set(PARQUET_BENCHMARK_LINK_OPTION
|
||||
STATIC_LINK_LIBS arrow_benchmark_main
|
||||
parquet_static)
|
||||
set(PARQUET_BENCHMARK_LINK_OPTION STATIC_LINK_LIBS arrow_benchmark_main parquet_static)
|
||||
else()
|
||||
set(PARQUET_BENCHMARK_LINK_OPTION
|
||||
EXTRA_LINK_LIBS parquet_shared)
|
||||
set(PARQUET_BENCHMARK_LINK_OPTION EXTRA_LINK_LIBS parquet_shared)
|
||||
endif()
|
||||
|
||||
############################################################
|
||||
#
|
||||
# Generated Thrift sources
|
||||
|
||||
if (NOT MSVC)
|
||||
set_source_files_properties(src/parquet/parquet_types.cpp PROPERTIES
|
||||
COMPILE_FLAGS -Wno-unused-variable)
|
||||
if(NOT MSVC)
|
||||
set_source_files_properties(src/parquet/parquet_types.cpp PROPERTIES COMPILE_FLAGS
|
||||
-Wno-unused-variable)
|
||||
endif()
|
||||
|
||||
# List of thrift output targets
|
||||
set(THRIFT_OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR})
|
||||
set(THRIFT_OUTPUT_FILES "${THRIFT_OUTPUT_DIR}/parquet_types.cpp")
|
||||
set(THRIFT_OUTPUT_FILES ${THRIFT_OUTPUT_FILES} "${THRIFT_OUTPUT_DIR}/parquet_types.h")
|
||||
set(THRIFT_OUTPUT_FILES ${THRIFT_OUTPUT_FILES} "${THRIFT_OUTPUT_DIR}/parquet_constants.cpp")
|
||||
set(THRIFT_OUTPUT_FILES ${THRIFT_OUTPUT_FILES}
|
||||
"${THRIFT_OUTPUT_DIR}/parquet_constants.cpp")
|
||||
set(THRIFT_OUTPUT_FILES ${THRIFT_OUTPUT_FILES} "${THRIFT_OUTPUT_DIR}/parquet_constants.h")
|
||||
|
||||
set_source_files_properties(${THRIFT_OUTPUT_FILES} PROPERTIES GENERATED TRUE)
|
||||
|
||||
get_filename_component(ABS_PARQUET_THRIFT parquet.thrift ABSOLUTE)
|
||||
|
||||
add_custom_command(
|
||||
OUTPUT ${THRIFT_OUTPUT_FILES}
|
||||
COMMAND ${THRIFT_COMPILER} --gen cpp -out ${THRIFT_OUTPUT_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/parquet.thrift
|
||||
DEPENDS ${ABS_PARQUET_THRIFT} thriftstatic
|
||||
COMMENT "Running thrift compiler on parquet.thrift"
|
||||
VERBATIM
|
||||
)
|
||||
add_custom_command(OUTPUT ${THRIFT_OUTPUT_FILES}
|
||||
COMMAND ${THRIFT_COMPILER}
|
||||
--gen cpp -out ${THRIFT_OUTPUT_DIR}
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/parquet.thrift
|
||||
DEPENDS ${ABS_PARQUET_THRIFT} thriftstatic
|
||||
COMMENT "Running thrift compiler on parquet.thrift"
|
||||
VERBATIM)
|
||||
|
||||
############################################################
|
||||
#
|
||||
# Library config
|
||||
|
||||
set(PARQUET_SRCS
|
||||
arrow/reader.cc
|
||||
arrow/record_reader.cc
|
||||
arrow/schema.cc
|
||||
arrow/writer.cc
|
||||
bloom_filter.cc
|
||||
column_reader.cc
|
||||
column_scanner.cc
|
||||
column_writer.cc
|
||||
encoding.cc
|
||||
file_reader.cc
|
||||
file_writer.cc
|
||||
metadata.cc
|
||||
murmur3.cc
|
||||
parquet_constants.cpp
|
||||
parquet_types.cpp
|
||||
printer.cc
|
||||
schema.cc
|
||||
statistics.cc
|
||||
types.cc
|
||||
util/comparison.cc
|
||||
util/memory.cc
|
||||
)
|
||||
arrow/reader.cc
|
||||
arrow/record_reader.cc
|
||||
arrow/schema.cc
|
||||
arrow/writer.cc
|
||||
bloom_filter.cc
|
||||
column_reader.cc
|
||||
column_scanner.cc
|
||||
column_writer.cc
|
||||
encoding.cc
|
||||
file_reader.cc
|
||||
file_writer.cc
|
||||
metadata.cc
|
||||
murmur3.cc
|
||||
parquet_constants.cpp
|
||||
parquet_types.cpp
|
||||
printer.cc
|
||||
schema.cc
|
||||
statistics.cc
|
||||
types.cc
|
||||
util/comparison.cc
|
||||
util/memory.cc)
|
||||
|
||||
# Ensure that thrift compilation is done before using its generated headers
|
||||
# in parquet code.
|
||||
add_custom_target(parquet-thrift-deps ALL
|
||||
DEPENDS ${THRIFT_OUTPUT_FILES})
|
||||
add_custom_target(parquet-thrift-deps ALL DEPENDS ${THRIFT_OUTPUT_FILES})
|
||||
set(PARQUET_DEPENDENCIES ${PARQUET_DEPENDENCIES} parquet-thrift-deps)
|
||||
|
||||
if (NOT PARQUET_MINIMAL_DEPENDENCY)
|
||||
set(PARQUET_SHARED_LINK_LIBS
|
||||
arrow_shared)
|
||||
if(NOT PARQUET_MINIMAL_DEPENDENCY)
|
||||
set(PARQUET_SHARED_LINK_LIBS arrow_shared)
|
||||
|
||||
# These are libraries that we will link privately with parquet_shared (as they
|
||||
# do not need to be linked transitively by other linkers)
|
||||
set(PARQUET_SHARED_PRIVATE_LINK_LIBS
|
||||
${PARQUET_BOOST_LINK_LIBS}
|
||||
thriftstatic
|
||||
)
|
||||
# These are libraries that we will link privately with parquet_shared (as they
|
||||
# do not need to be linked transitively by other linkers)
|
||||
set(PARQUET_SHARED_PRIVATE_LINK_LIBS ${PARQUET_BOOST_LINK_LIBS} thriftstatic)
|
||||
|
||||
# Link publicly with # parquet_static (because internal users need to
|
||||
# transitively link all dependencies)
|
||||
set(PARQUET_STATIC_LINK_LIBS
|
||||
${PARQUET_STATIC_LINK_LIBS}
|
||||
${PARQUET_BOOST_LINK_LIBS}
|
||||
thriftstatic
|
||||
)
|
||||
# Link publicly with # parquet_static (because internal users need to
|
||||
# transitively link all dependencies)
|
||||
set(PARQUET_STATIC_LINK_LIBS ${PARQUET_STATIC_LINK_LIBS} ${PARQUET_BOOST_LINK_LIBS}
|
||||
thriftstatic)
|
||||
|
||||
# Although we don't link parquet_objlib against anything, we need it to depend
|
||||
# on these libs as we may generate their headers via ExternalProject_Add
|
||||
if (ARROW_BUILD_SHARED)
|
||||
set(PARQUET_DEPENDENCIES ${PARQUET_DEPENDENCIES}
|
||||
${PARQUET_SHARED_LINK_LIBS}
|
||||
${PARQUET_SHARED_PRIVATE_LINK_LIBS})
|
||||
endif()
|
||||
# Although we don't link parquet_objlib against anything, we need it to depend
|
||||
# on these libs as we may generate their headers via ExternalProject_Add
|
||||
if(ARROW_BUILD_SHARED)
|
||||
set(PARQUET_DEPENDENCIES ${PARQUET_DEPENDENCIES} ${PARQUET_SHARED_LINK_LIBS}
|
||||
${PARQUET_SHARED_PRIVATE_LINK_LIBS})
|
||||
endif()
|
||||
|
||||
if (ARROW_BUILD_STATIC)
|
||||
set(PARQUET_DEPENDENCIES ${PARQUET_DEPENDENCIES}
|
||||
${PARQUET_STATIC_LINK_LIBS})
|
||||
endif()
|
||||
if(ARROW_BUILD_STATIC)
|
||||
set(PARQUET_DEPENDENCIES ${PARQUET_DEPENDENCIES} ${PARQUET_STATIC_LINK_LIBS})
|
||||
endif()
|
||||
|
||||
endif(NOT PARQUET_MINIMAL_DEPENDENCY)
|
||||
|
||||
@@ -231,49 +208,57 @@ if(NOT APPLE AND NOT MSVC)
|
||||
# Localize thirdparty symbols using a linker version script. This hides them
|
||||
# from the client application. The OS X linker does not support the
|
||||
# version-script option.
|
||||
set(SHARED_LINK_FLAGS "-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/src/parquet/symbols.map")
|
||||
set(SHARED_LINK_FLAGS
|
||||
"-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/src/parquet/symbols.map")
|
||||
endif()
|
||||
|
||||
# Because of PARQUET-1420 (Thrift-generated symbols not exported in DLL),
|
||||
# parquet tests must be linked against the static parquet lib.
|
||||
if (NO_TESTS)
|
||||
if(NO_TESTS)
|
||||
set(PARQUET_LIB_OPTIONS)
|
||||
else ()
|
||||
else()
|
||||
set(PARQUET_LIB_OPTIONS "BUILD_STATIC")
|
||||
endif()
|
||||
|
||||
ADD_ARROW_LIB(parquet
|
||||
${PARQUET_LIB_OPTIONS}
|
||||
SOURCES ${PARQUET_SRCS}
|
||||
OUTPUTS PARQUET_LIBRARIES
|
||||
DEPENDENCIES ${PARQUET_DEPENDENCIES}
|
||||
SHARED_LINK_FLAGS ${PARQUET_SHARED_LINK_FLAGS}
|
||||
SHARED_LINK_LIBS ${PARQUET_SHARED_LINK_LIBS}
|
||||
SHARED_PRIVATE_LINK_LIBS ${PARQUET_SHARED_PRIVATE_LINK_LIBS}
|
||||
STATIC_LINK_LIBS ${PARQUET_STATIC_LINK_LIBS}
|
||||
)
|
||||
add_arrow_lib(parquet
|
||||
${PARQUET_LIB_OPTIONS}
|
||||
SOURCES
|
||||
${PARQUET_SRCS}
|
||||
OUTPUTS
|
||||
PARQUET_LIBRARIES
|
||||
DEPENDENCIES
|
||||
${PARQUET_DEPENDENCIES}
|
||||
SHARED_LINK_FLAGS
|
||||
${PARQUET_SHARED_LINK_FLAGS}
|
||||
SHARED_LINK_LIBS
|
||||
${PARQUET_SHARED_LINK_LIBS}
|
||||
SHARED_PRIVATE_LINK_LIBS
|
||||
${PARQUET_SHARED_PRIVATE_LINK_LIBS}
|
||||
STATIC_LINK_LIBS
|
||||
${PARQUET_STATIC_LINK_LIBS})
|
||||
|
||||
add_dependencies(parquet ${PARQUET_LIBRARIES})
|
||||
|
||||
# Thrift requires these definitions for some types that we use
|
||||
foreach(LIB_TARGET ${PARQUET_LIBRARIES})
|
||||
target_compile_definitions(${LIB_TARGET}
|
||||
PRIVATE PARQUET_EXPORTING
|
||||
PRIVATE HAVE_INTTYPES_H
|
||||
PRIVATE HAVE_NETDB_H)
|
||||
if (MSVC)
|
||||
target_compile_definitions(${LIB_TARGET}
|
||||
PRIVATE NOMINMAX)
|
||||
PRIVATE
|
||||
PARQUET_EXPORTING
|
||||
PRIVATE
|
||||
HAVE_INTTYPES_H
|
||||
PRIVATE
|
||||
HAVE_NETDB_H)
|
||||
if(MSVC)
|
||||
target_compile_definitions(${LIB_TARGET} PRIVATE NOMINMAX)
|
||||
else()
|
||||
target_compile_definitions(${LIB_TARGET}
|
||||
PRIVATE HAVE_NETINET_IN_H)
|
||||
target_compile_definitions(${LIB_TARGET} PRIVATE HAVE_NETINET_IN_H)
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
# We always build the Parquet static libraries (see PARQUET-1420) so we add the
|
||||
# PARQUET_STATIC public compile definition if we are building the unit tests OR
|
||||
# if we are building the static library
|
||||
if (WIN32 AND (NOT NO_TESTS OR ARROW_BUILD_STATIC))
|
||||
if(WIN32 AND (NOT NO_TESTS OR ARROW_BUILD_STATIC))
|
||||
target_compile_definitions(parquet_static PUBLIC PARQUET_STATIC)
|
||||
endif()
|
||||
|
||||
@@ -281,41 +266,38 @@ add_subdirectory(api)
|
||||
add_subdirectory(arrow)
|
||||
add_subdirectory(util)
|
||||
|
||||
ARROW_INSTALL_ALL_HEADERS("parquet")
|
||||
arrow_install_all_headers("parquet")
|
||||
|
||||
configure_file(parquet_version.h.in
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/parquet_version.h"
|
||||
@ONLY)
|
||||
configure_file(parquet_version.h.in "${CMAKE_CURRENT_BINARY_DIR}/parquet_version.h" @ONLY)
|
||||
|
||||
install(FILES
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/parquet_version.h"
|
||||
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/parquet")
|
||||
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/parquet_version.h"
|
||||
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/parquet")
|
||||
|
||||
# pkg-config support
|
||||
ARROW_ADD_PKG_CONFIG("parquet")
|
||||
arrow_add_pkg_config("parquet")
|
||||
|
||||
ADD_PARQUET_TEST(bloom_filter-test)
|
||||
ADD_PARQUET_TEST(column_reader-test)
|
||||
ADD_PARQUET_TEST(column_scanner-test)
|
||||
ADD_PARQUET_TEST(column_writer-test)
|
||||
ADD_PARQUET_TEST(file-serialize-test)
|
||||
ADD_PARQUET_TEST(properties-test)
|
||||
ADD_PARQUET_TEST(statistics-test)
|
||||
ADD_PARQUET_TEST(encoding-test)
|
||||
ADD_PARQUET_TEST(metadata-test)
|
||||
ADD_PARQUET_TEST(public-api-test)
|
||||
ADD_PARQUET_TEST(types-test)
|
||||
ADD_PARQUET_TEST(reader-test)
|
||||
add_parquet_test(bloom_filter-test)
|
||||
add_parquet_test(column_reader-test)
|
||||
add_parquet_test(column_scanner-test)
|
||||
add_parquet_test(column_writer-test)
|
||||
add_parquet_test(file-serialize-test)
|
||||
add_parquet_test(properties-test)
|
||||
add_parquet_test(statistics-test)
|
||||
add_parquet_test(encoding-test)
|
||||
add_parquet_test(metadata-test)
|
||||
add_parquet_test(public-api-test)
|
||||
add_parquet_test(types-test)
|
||||
add_parquet_test(reader-test)
|
||||
|
||||
# Those tests need to use static linking as they access thrift-generated
|
||||
# symbols which are not exported by parquet.dll on Windows (PARQUET-1420).
|
||||
ADD_PARQUET_TEST(file-deserialize-test USE_STATIC_LINKING)
|
||||
ADD_PARQUET_TEST(schema-test USE_STATIC_LINKING)
|
||||
add_parquet_test(file-deserialize-test USE_STATIC_LINKING)
|
||||
add_parquet_test(schema-test USE_STATIC_LINKING)
|
||||
|
||||
ADD_PARQUET_BENCHMARK(column-io-benchmark)
|
||||
ADD_PARQUET_BENCHMARK(encoding-benchmark)
|
||||
add_parquet_benchmark(column-io-benchmark)
|
||||
add_parquet_benchmark(encoding-benchmark)
|
||||
|
||||
# Required for tests, the ExternalProject for zstd does not build on CMake < 3.7
|
||||
if (ARROW_WITH_ZSTD)
|
||||
if(ARROW_WITH_ZSTD)
|
||||
add_definitions(-DARROW_WITH_ZSTD)
|
||||
endif()
|
||||
@@ -16,4 +16,4 @@
|
||||
# under the License.
|
||||
|
||||
# Headers: public api
|
||||
ARROW_INSTALL_ALL_HEADERS("parquet/api")
|
||||
arrow_install_all_headers("parquet/api")
|
||||
@@ -15,10 +15,9 @@
|
||||
# specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
ADD_PARQUET_TEST(arrow-schema-test)
|
||||
ADD_PARQUET_TEST(arrow-reader-writer-test)
|
||||
add_parquet_test(arrow-schema-test)
|
||||
add_parquet_test(arrow-reader-writer-test)
|
||||
|
||||
ADD_PARQUET_BENCHMARK(reader-writer-benchmark
|
||||
PREFIX "parquet-arrow")
|
||||
add_parquet_benchmark(reader-writer-benchmark PREFIX "parquet-arrow")
|
||||
|
||||
ARROW_INSTALL_ALL_HEADERS("parquet/arrow")
|
||||
arrow_install_all_headers("parquet/arrow")
|
||||
@@ -16,7 +16,7 @@
|
||||
# under the License.
|
||||
|
||||
# Headers: util
|
||||
ARROW_INSTALL_ALL_HEADERS("parquet/util")
|
||||
arrow_install_all_headers("parquet/util")
|
||||
|
||||
ADD_PARQUET_TEST(comparison-test)
|
||||
ADD_PARQUET_TEST(memory-test)
|
||||
add_parquet_test(comparison-test)
|
||||
add_parquet_test(memory-test)
|
||||
+105
-81
@@ -31,18 +31,20 @@ find_package(Threads)
|
||||
set(PLASMA_SO_VERSION "${ARROW_SO_VERSION}")
|
||||
set(PLASMA_FULL_SO_VERSION "${ARROW_FULL_SO_VERSION}")
|
||||
|
||||
include_directories("${FLATBUFFERS_INCLUDE_DIR}" "${CMAKE_CURRENT_LIST_DIR}/" "${CMAKE_CURRENT_LIST_DIR}/thirdparty/" "${CMAKE_CURRENT_LIST_DIR}/../")
|
||||
include_directories("${FLATBUFFERS_INCLUDE_DIR}" "${CMAKE_CURRENT_LIST_DIR}/"
|
||||
"${CMAKE_CURRENT_LIST_DIR}/thirdparty/"
|
||||
"${CMAKE_CURRENT_LIST_DIR}/../")
|
||||
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-conversion")
|
||||
|
||||
# Compile flatbuffers
|
||||
|
||||
set(PLASMA_FBS_SRC "${CMAKE_CURRENT_LIST_DIR}/format/plasma.fbs" "${CMAKE_CURRENT_LIST_DIR}/format/common.fbs")
|
||||
set(PLASMA_FBS_SRC "${CMAKE_CURRENT_LIST_DIR}/format/plasma.fbs"
|
||||
"${CMAKE_CURRENT_LIST_DIR}/format/common.fbs")
|
||||
set(OUTPUT_DIR ${ARROW_BINARY_DIR}/src/plasma)
|
||||
|
||||
set(PLASMA_FBS_OUTPUT_FILES
|
||||
"${OUTPUT_DIR}/common_generated.h"
|
||||
"${OUTPUT_DIR}/plasma_generated.h")
|
||||
set(PLASMA_FBS_OUTPUT_FILES "${OUTPUT_DIR}/common_generated.h"
|
||||
"${OUTPUT_DIR}/plasma_generated.h")
|
||||
|
||||
add_custom_target(gen_plasma_fbs DEPENDS ${PLASMA_FBS_OUTPUT_FILES})
|
||||
|
||||
@@ -52,11 +54,13 @@ endif()
|
||||
|
||||
add_custom_command(
|
||||
OUTPUT ${PLASMA_FBS_OUTPUT_FILES}
|
||||
# The --gen-object-api flag generates a C++ class MessageT for each
|
||||
# flatbuffers message Message, which can be used to store deserialized
|
||||
# messages in data structures. This is currently used for ObjectInfo for
|
||||
# example.
|
||||
COMMAND ${FLATBUFFERS_COMPILER} -c -o ${OUTPUT_DIR} ${PLASMA_FBS_SRC} --gen-object-api --scoped-enums
|
||||
# The --gen-object-api flag generates a C++ class MessageT for each
|
||||
# flatbuffers message Message, which can be used to store deserialized
|
||||
# messages in data structures. This is currently used for ObjectInfo for
|
||||
# example.
|
||||
COMMAND ${FLATBUFFERS_COMPILER} -c -o ${OUTPUT_DIR} ${PLASMA_FBS_SRC}
|
||||
--gen-object-api
|
||||
--scoped-enums
|
||||
DEPENDS ${PLASMA_FBS_SRC}
|
||||
COMMENT "Running flatc compiler on ${PLASMA_FBS_SRC}"
|
||||
VERBATIM)
|
||||
@@ -64,61 +68,60 @@ add_custom_command(
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC")
|
||||
|
||||
set(PLASMA_SRCS
|
||||
client.cc
|
||||
common.cc
|
||||
eviction_policy.cc
|
||||
events.cc
|
||||
fling.cc
|
||||
io.cc
|
||||
malloc.cc
|
||||
plasma.cc
|
||||
plasma_allocator.cc
|
||||
protocol.cc
|
||||
thirdparty/ae/ae.c)
|
||||
client.cc
|
||||
common.cc
|
||||
eviction_policy.cc
|
||||
events.cc
|
||||
fling.cc
|
||||
io.cc
|
||||
malloc.cc
|
||||
plasma.cc
|
||||
plasma_allocator.cc
|
||||
protocol.cc
|
||||
thirdparty/ae/ae.c)
|
||||
|
||||
set(PLASMA_LINK_LIBS arrow_shared)
|
||||
set(PLASMA_STATIC_LINK_LIBS arrow_static)
|
||||
|
||||
if (ARROW_CUDA)
|
||||
if(ARROW_CUDA)
|
||||
set(PLASMA_LINK_LIBS ${PLASMA_LINK_LIBS} arrow_cuda_shared)
|
||||
set(PLASMA_STATIC_LINK_LIBS arrow_cuda_static ${PLASMA_STATIC_LINK_LIBS})
|
||||
add_definitions(-DPLASMA_CUDA)
|
||||
endif()
|
||||
|
||||
ADD_ARROW_LIB(plasma
|
||||
SOURCES ${PLASMA_SRCS}
|
||||
OUTPUTS PLASMA_LIBRARIES
|
||||
DEPENDENCIES gen_plasma_fbs
|
||||
SHARED_LINK_LIBS ${PLASMA_LINK_LIBS}
|
||||
STATIC_LINK_LIBS ${PLASMA_STATIC_LINK_LIBS})
|
||||
add_arrow_lib(plasma
|
||||
SOURCES
|
||||
${PLASMA_SRCS}
|
||||
OUTPUTS
|
||||
PLASMA_LIBRARIES
|
||||
DEPENDENCIES
|
||||
gen_plasma_fbs
|
||||
SHARED_LINK_LIBS
|
||||
${PLASMA_LINK_LIBS}
|
||||
STATIC_LINK_LIBS
|
||||
${PLASMA_STATIC_LINK_LIBS})
|
||||
|
||||
add_dependencies(plasma ${PLASMA_LIBRARIES})
|
||||
|
||||
foreach(LIB_TARGET ${PLASMA_LIBRARIES})
|
||||
target_compile_definitions(${LIB_TARGET}
|
||||
PRIVATE ARROW_EXPORTING)
|
||||
target_compile_definitions(${LIB_TARGET} PRIVATE ARROW_EXPORTING)
|
||||
endforeach()
|
||||
|
||||
# The optimization flag -O3 is suggested by dlmalloc.c, which is #included in
|
||||
# malloc.cc; we set it here regardless of whether we do a debug or release build.
|
||||
set_source_files_properties(malloc.cc PROPERTIES
|
||||
COMPILE_FLAGS "-O3")
|
||||
set_source_files_properties(malloc.cc PROPERTIES COMPILE_FLAGS "-O3")
|
||||
|
||||
if ("${COMPILER_FAMILY}" STREQUAL "clang")
|
||||
if("${COMPILER_FAMILY}" STREQUAL "clang")
|
||||
set_property(SOURCE malloc.cc
|
||||
APPEND_STRING
|
||||
PROPERTY COMPILE_FLAGS
|
||||
" -Wno-parentheses-equality \
|
||||
APPEND_STRING
|
||||
PROPERTY COMPILE_FLAGS " -Wno-parentheses-equality \
|
||||
-Wno-null-pointer-arithmetic \
|
||||
-Wno-shorten-64-to-32 \
|
||||
-Wno-unused-macros")
|
||||
endif()
|
||||
|
||||
if ("${COMPILER_FAMILY}" STREQUAL "gcc")
|
||||
set_property(SOURCE malloc.cc
|
||||
APPEND_STRING
|
||||
PROPERTY COMPILE_FLAGS
|
||||
" -Wno-conversion")
|
||||
if("${COMPILER_FAMILY}" STREQUAL "gcc")
|
||||
set_property(SOURCE malloc.cc APPEND_STRING PROPERTY COMPILE_FLAGS " -Wno-conversion")
|
||||
endif()
|
||||
|
||||
list(APPEND PLASMA_EXTERNAL_STORE_SOURCES "external_store.cc" "hash_table_store.cc")
|
||||
@@ -129,32 +132,30 @@ add_executable(plasma_store_server ${PLASMA_EXTERNAL_STORE_SOURCES} store.cc)
|
||||
target_link_libraries(plasma_store_server plasma_static ${PLASMA_STATIC_LINK_LIBS})
|
||||
add_dependencies(plasma plasma_store_server)
|
||||
|
||||
if (ARROW_RPATH_ORIGIN)
|
||||
if (APPLE)
|
||||
if(ARROW_RPATH_ORIGIN)
|
||||
if(APPLE)
|
||||
set(_lib_install_rpath "@loader_path")
|
||||
else()
|
||||
set(_lib_install_rpath "\$ORIGIN")
|
||||
endif()
|
||||
set_target_properties(plasma_store_server PROPERTIES
|
||||
INSTALL_RPATH ${_lib_install_rpath})
|
||||
set_target_properties(plasma_store_server
|
||||
PROPERTIES INSTALL_RPATH ${_lib_install_rpath})
|
||||
endif()
|
||||
|
||||
install(FILES
|
||||
common.h
|
||||
compat.h
|
||||
client.h
|
||||
events.h
|
||||
test-util.h
|
||||
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/plasma")
|
||||
install(FILES common.h
|
||||
compat.h
|
||||
client.h
|
||||
events.h
|
||||
test-util.h
|
||||
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/plasma")
|
||||
|
||||
# Plasma store
|
||||
set_target_properties(plasma_store_server PROPERTIES INSTALL_RPATH_USE_LINK_PATH TRUE)
|
||||
install(TARGETS plasma_store_server
|
||||
${INSTALL_IS_OPTIONAL}
|
||||
DESTINATION ${CMAKE_INSTALL_BINDIR})
|
||||
install(TARGETS plasma_store_server ${INSTALL_IS_OPTIONAL}
|
||||
DESTINATION ${CMAKE_INSTALL_BINDIR})
|
||||
|
||||
# pkg-config support
|
||||
ARROW_ADD_PKG_CONFIG("plasma")
|
||||
arrow_add_pkg_config("plasma")
|
||||
|
||||
if(ARROW_PLASMA_JAVA_CLIENT)
|
||||
# Plasma java client support
|
||||
@@ -162,11 +163,11 @@ if(ARROW_PLASMA_JAVA_CLIENT)
|
||||
# add jni support
|
||||
include_directories(${JAVA_INCLUDE_PATH})
|
||||
include_directories(${JAVA_INCLUDE_PATH2})
|
||||
if (JNI_FOUND)
|
||||
message (STATUS "JNI_INCLUDE_DIRS = ${JNI_INCLUDE_DIRS}")
|
||||
message (STATUS "JNI_LIBRARIES = ${JNI_LIBRARIES}")
|
||||
if(JNI_FOUND)
|
||||
message(STATUS "JNI_INCLUDE_DIRS = ${JNI_INCLUDE_DIRS}")
|
||||
message(STATUS "JNI_LIBRARIES = ${JNI_LIBRARIES}")
|
||||
else()
|
||||
message (WARNING "Could not find JNI")
|
||||
message(WARNING "Could not find JNI")
|
||||
endif()
|
||||
|
||||
add_compile_options("-I$ENV{JAVA_HOME}/include/")
|
||||
@@ -180,38 +181,61 @@ if(ARROW_PLASMA_JAVA_CLIENT)
|
||||
|
||||
include_directories("${CMAKE_CURRENT_LIST_DIR}/lib/java")
|
||||
|
||||
file(GLOB PLASMA_LIBRARY_EXT_java_SRC
|
||||
lib/java/*.cc lib/*.cc)
|
||||
add_library(plasma_java SHARED
|
||||
${PLASMA_LIBRARY_EXT_java_SRC})
|
||||
file(GLOB PLASMA_LIBRARY_EXT_java_SRC lib/java/*.cc lib/*.cc)
|
||||
add_library(plasma_java SHARED ${PLASMA_LIBRARY_EXT_java_SRC})
|
||||
|
||||
if(APPLE)
|
||||
target_link_libraries(plasma_java plasma_shared ${PLASMA_LINK_LIBS} "-undefined dynamic_lookup" -Wl,-force_load,${FLATBUFFERS_STATIC_LIB} ${FLATBUFFERS_STATIC_LIB} ${PTHREAD_LIBRARY})
|
||||
target_link_libraries(plasma_java
|
||||
plasma_shared
|
||||
${PLASMA_LINK_LIBS}
|
||||
"-undefined dynamic_lookup"
|
||||
-Wl,-force_load,${FLATBUFFERS_STATIC_LIB}
|
||||
${FLATBUFFERS_STATIC_LIB}
|
||||
${PTHREAD_LIBRARY})
|
||||
else(APPLE)
|
||||
target_link_libraries(plasma_java plasma_shared ${PLASMA_LINK_LIBS} -Wl,--whole-archive ${FLATBUFFERS_STATIC_LIB} -Wl,--no-whole-archive ${FLATBUFFERS_STATIC_LIB} ${PTHREAD_LIBRARY})
|
||||
target_link_libraries(plasma_java
|
||||
plasma_shared
|
||||
${PLASMA_LINK_LIBS}
|
||||
-Wl,--whole-archive
|
||||
${FLATBUFFERS_STATIC_LIB}
|
||||
-Wl,--no-whole-archive
|
||||
${FLATBUFFERS_STATIC_LIB}
|
||||
${PTHREAD_LIBRARY})
|
||||
endif(APPLE)
|
||||
endif()
|
||||
#######################################
|
||||
#
|
||||
# Unit tests
|
||||
#######################################
|
||||
#
|
||||
|
||||
# Adding unit tests part of the "arrow" portion of the test suite
|
||||
function(ADD_PLASMA_TEST REL_TEST_NAME)
|
||||
set(options)
|
||||
set(one_value_args)
|
||||
set(multi_value_args)
|
||||
cmake_parse_arguments(ARG "${options}" "${one_value_args}" "${multi_value_args}" ${ARGN})
|
||||
ADD_TEST_CASE(${REL_TEST_NAME}
|
||||
PREFIX "plasma"
|
||||
LABELS "plasma-tests"
|
||||
${ARG_UNPARSED_ARGUMENTS})
|
||||
cmake_parse_arguments(ARG
|
||||
"${options}"
|
||||
"${one_value_args}"
|
||||
"${multi_value_args}"
|
||||
${ARGN})
|
||||
add_test_case(${REL_TEST_NAME}
|
||||
PREFIX
|
||||
"plasma"
|
||||
LABELS
|
||||
"plasma-tests"
|
||||
${ARG_UNPARSED_ARGUMENTS})
|
||||
endfunction()
|
||||
|
||||
ADD_PLASMA_TEST(test/serialization_tests
|
||||
EXTRA_LINK_LIBS plasma_shared ${PLASMA_LINK_LIBS})
|
||||
ADD_PLASMA_TEST(test/client_tests
|
||||
EXTRA_LINK_LIBS plasma_shared ${PLASMA_LINK_LIBS}
|
||||
EXTRA_DEPENDENCIES plasma_store_server)
|
||||
ADD_PLASMA_TEST(test/external_store_tests
|
||||
EXTRA_LINK_LIBS plasma_shared ${PLASMA_LINK_LIBS}
|
||||
EXTRA_DEPENDENCIES plasma_store_server)
|
||||
add_plasma_test(test/serialization_tests EXTRA_LINK_LIBS plasma_shared
|
||||
${PLASMA_LINK_LIBS})
|
||||
add_plasma_test(test/client_tests
|
||||
EXTRA_LINK_LIBS
|
||||
plasma_shared
|
||||
${PLASMA_LINK_LIBS}
|
||||
EXTRA_DEPENDENCIES
|
||||
plasma_store_server)
|
||||
add_plasma_test(test/external_store_tests
|
||||
EXTRA_LINK_LIBS
|
||||
plasma_shared
|
||||
${PLASMA_LINK_LIBS}
|
||||
EXTRA_DEPENDENCIES
|
||||
plasma_store_server)
|
||||
@@ -15,20 +15,16 @@
|
||||
# specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
if (PARQUET_BUILD_EXECUTABLES)
|
||||
set(PARQUET_TOOLS
|
||||
parquet-dump-schema
|
||||
parquet-reader
|
||||
parquet-scan)
|
||||
if(PARQUET_BUILD_EXECUTABLES)
|
||||
set(PARQUET_TOOLS parquet-dump-schema parquet-reader parquet-scan)
|
||||
|
||||
foreach(TOOL ${PARQUET_TOOLS})
|
||||
add_executable(${TOOL} "${TOOL}.cc")
|
||||
target_link_libraries(${TOOL} parquet_static)
|
||||
# Avoid unsetting RPATH when installing
|
||||
set_target_properties(${TOOL} PROPERTIES INSTALL_RPATH_USE_LINK_PATH TRUE)
|
||||
install(TARGETS ${TOOL}
|
||||
${INSTALL_IS_OPTIONAL}
|
||||
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
|
||||
install(TARGETS ${TOOL} ${INSTALL_IS_OPTIONAL}
|
||||
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
|
||||
endforeach(TOOL)
|
||||
|
||||
add_dependencies(parquet ${PARQUET_TOOLS})
|
||||
|
||||
@@ -23,12 +23,12 @@ include(UseJava)
|
||||
include(FindJNI)
|
||||
|
||||
message("generating headers to ${JNI_HEADERS_DIR}/jni")
|
||||
add_jar(
|
||||
gandiva_java
|
||||
src/main/java/org/apache/arrow/gandiva/evaluator/ConfigurationBuilder.java
|
||||
src/main/java/org/apache/arrow/gandiva/evaluator/JniWrapper.java
|
||||
src/main/java/org/apache/arrow/gandiva/evaluator/ExpressionRegistryJniHelper.java
|
||||
src/main/java/org/apache/arrow/gandiva/exceptions/GandivaException.java
|
||||
GENERATE_NATIVE_HEADERS gandivajni_headers
|
||||
DESTINATION ${JNI_HEADERS_DIR}/jni
|
||||
)
|
||||
add_jar(gandiva_java
|
||||
src/main/java/org/apache/arrow/gandiva/evaluator/ConfigurationBuilder.java
|
||||
src/main/java/org/apache/arrow/gandiva/evaluator/JniWrapper.java
|
||||
src/main/java/org/apache/arrow/gandiva/evaluator/ExpressionRegistryJniHelper.java
|
||||
src/main/java/org/apache/arrow/gandiva/exceptions/GandivaException.java
|
||||
GENERATE_NATIVE_HEADERS
|
||||
gandivajni_headers
|
||||
DESTINATION
|
||||
${JNI_HEADERS_DIR}/jni)
|
||||
+223
-255
@@ -23,13 +23,13 @@ project(pyarrow)
|
||||
|
||||
# Running from a Python sdist tarball
|
||||
set(LOCAL_CMAKE_MODULES "${CMAKE_SOURCE_DIR}/cmake_modules")
|
||||
if (EXISTS "${LOCAL_CMAKE_MODULES}")
|
||||
if(EXISTS "${LOCAL_CMAKE_MODULES}")
|
||||
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${LOCAL_CMAKE_MODULES})
|
||||
endif()
|
||||
|
||||
# Running from a git source tree
|
||||
set(CPP_CMAKE_MODULES "${CMAKE_SOURCE_DIR}/../cpp/cmake_modules")
|
||||
if (EXISTS "${CPP_CMAKE_MODULES}")
|
||||
if(EXISTS "${CPP_CMAKE_MODULES}")
|
||||
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CPP_CMAKE_MODULES})
|
||||
endif()
|
||||
|
||||
@@ -52,47 +52,25 @@ set(CMAKE_OSX_DEPLOYMENT_TARGET 10.9)
|
||||
# Generate a Clang compile_commands.json "compilation database" file for use
|
||||
# with various development tools, such as Vim's YouCompleteMe plugin.
|
||||
# See http://clang.llvm.org/docs/JSONCompilationDatabase.html
|
||||
if ("$ENV{CMAKE_EXPORT_COMPILE_COMMANDS}" STREQUAL "1")
|
||||
if("$ENV{CMAKE_EXPORT_COMPILE_COMMANDS}" STREQUAL "1")
|
||||
set(CMAKE_EXPORT_COMPILE_COMMANDS 1)
|
||||
endif()
|
||||
|
||||
# Top level cmake dir
|
||||
if("${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_CURRENT_SOURCE_DIR}")
|
||||
option(PYARROW_BUILD_CUDA
|
||||
"Build the PyArrow CUDA support"
|
||||
OFF)
|
||||
option(PYARROW_BUILD_GANDIVA
|
||||
"Build the PyArrow Gandiva integration"
|
||||
OFF)
|
||||
option(PYARROW_BUILD_PARQUET
|
||||
"Build the PyArrow Parquet integration"
|
||||
OFF)
|
||||
option(PYARROW_PARQUET_USE_SHARED
|
||||
"Rely on parquet shared libraries where relevant"
|
||||
ON)
|
||||
option(PYARROW_BUILD_CUDA "Build the PyArrow CUDA support" OFF)
|
||||
option(PYARROW_BUILD_GANDIVA "Build the PyArrow Gandiva integration" OFF)
|
||||
option(PYARROW_BUILD_PARQUET "Build the PyArrow Parquet integration" OFF)
|
||||
option(PYARROW_PARQUET_USE_SHARED "Rely on parquet shared libraries where relevant" ON)
|
||||
option(PYARROW_BOOST_USE_SHARED
|
||||
"Rely on boost shared libraries on linking static parquet"
|
||||
ON)
|
||||
option(PYARROW_BUILD_PLASMA
|
||||
"Build the PyArrow Plasma integration"
|
||||
OFF)
|
||||
option(PYARROW_USE_TENSORFLOW
|
||||
"Build PyArrow with TensorFlow support"
|
||||
OFF)
|
||||
option(PYARROW_BUILD_ORC
|
||||
"Build the PyArrow ORC integration"
|
||||
OFF)
|
||||
option(PYARROW_BUNDLE_ARROW_CPP
|
||||
"Bundle the Arrow C++ libraries"
|
||||
OFF)
|
||||
option(PYARROW_BUNDLE_BOOST
|
||||
"Bundle the Boost libraries when we bundle Arrow C++"
|
||||
OFF)
|
||||
option(PYARROW_GENERATE_COVERAGE
|
||||
"Build with Cython code coverage enabled"
|
||||
OFF)
|
||||
set(PYARROW_CXXFLAGS "" CACHE STRING
|
||||
"Compiler flags to append when compiling Arrow")
|
||||
"Rely on boost shared libraries on linking static parquet" ON)
|
||||
option(PYARROW_BUILD_PLASMA "Build the PyArrow Plasma integration" OFF)
|
||||
option(PYARROW_USE_TENSORFLOW "Build PyArrow with TensorFlow support" OFF)
|
||||
option(PYARROW_BUILD_ORC "Build the PyArrow ORC integration" OFF)
|
||||
option(PYARROW_BUNDLE_ARROW_CPP "Bundle the Arrow C++ libraries" OFF)
|
||||
option(PYARROW_BUNDLE_BOOST "Bundle the Boost libraries when we bundle Arrow C++" OFF)
|
||||
option(PYARROW_GENERATE_COVERAGE "Build with Cython code coverage enabled" OFF)
|
||||
set(PYARROW_CXXFLAGS "" CACHE STRING "Compiler flags to append when compiling Arrow")
|
||||
endif()
|
||||
|
||||
find_program(CCACHE_FOUND ccache)
|
||||
@@ -101,9 +79,9 @@ if(CCACHE_FOUND)
|
||||
set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ccache)
|
||||
endif(CCACHE_FOUND)
|
||||
|
||||
############################################################
|
||||
#
|
||||
# Compiler flags
|
||||
############################################################
|
||||
#
|
||||
|
||||
include(BuildUtils)
|
||||
include(CompilerInfo)
|
||||
@@ -117,7 +95,7 @@ include(SetupCxxFlags)
|
||||
set(CMAKE_CXX_FLAGS "${CXX_COMMON_FLAGS} ${CMAKE_CXX_FLAGS}")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${PYARROW_CXXFLAGS}")
|
||||
|
||||
if (NOT MSVC)
|
||||
if(NOT MSVC)
|
||||
# Enable perf and other tools to work properly
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-omit-frame-pointer")
|
||||
|
||||
@@ -140,7 +118,7 @@ else()
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4804")
|
||||
endif()
|
||||
|
||||
if ("${COMPILER_FAMILY}" STREQUAL "clang")
|
||||
if("${COMPILER_FAMILY}" STREQUAL "clang")
|
||||
# Cython warnings in clang
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-parentheses-equality")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-constant-logical-operand")
|
||||
@@ -158,27 +136,28 @@ set(CMAKE_C_FLAGS "${CMAKE_CXX_FLAGS}")
|
||||
# Add C++-only flags, like -std=c++11
|
||||
set(CMAKE_CXX_FLAGS "${CXX_ONLY_FLAGS} ${CMAKE_CXX_FLAGS}")
|
||||
|
||||
if (MSVC)
|
||||
if(MSVC)
|
||||
# MSVC makes its own output directories based on the build configuration
|
||||
set(BUILD_SUBDIR_NAME "")
|
||||
else()
|
||||
# Set compile output directory
|
||||
string (TOLOWER ${CMAKE_BUILD_TYPE} BUILD_SUBDIR_NAME)
|
||||
string(TOLOWER ${CMAKE_BUILD_TYPE} BUILD_SUBDIR_NAME)
|
||||
endif()
|
||||
|
||||
# If build in-source, create the latest symlink. If build out-of-source, which is
|
||||
# preferred, simply output the binaries in the build folder
|
||||
if (${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_CURRENT_BINARY_DIR})
|
||||
set(BUILD_OUTPUT_ROOT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/build/${BUILD_SUBDIR_NAME}")
|
||||
if(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_CURRENT_BINARY_DIR})
|
||||
set(BUILD_OUTPUT_ROOT_DIRECTORY
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/build/${BUILD_SUBDIR_NAME}")
|
||||
# Link build/latest to the current build directory, to avoid developers
|
||||
# accidentally running the latest debug build when in fact they're building
|
||||
# release builds.
|
||||
FILE(MAKE_DIRECTORY ${BUILD_OUTPUT_ROOT_DIRECTORY})
|
||||
if (NOT APPLE)
|
||||
file(MAKE_DIRECTORY ${BUILD_OUTPUT_ROOT_DIRECTORY})
|
||||
if(NOT APPLE)
|
||||
set(MORE_ARGS "-T")
|
||||
endif()
|
||||
EXECUTE_PROCESS(COMMAND ln ${MORE_ARGS} -sf ${BUILD_OUTPUT_ROOT_DIRECTORY}
|
||||
${CMAKE_CURRENT_BINARY_DIR}/build/latest)
|
||||
execute_process(COMMAND ln ${MORE_ARGS} -sf ${BUILD_OUTPUT_ROOT_DIRECTORY}
|
||||
${CMAKE_CURRENT_BINARY_DIR}/build/latest)
|
||||
else()
|
||||
set(BUILD_OUTPUT_ROOT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/${BUILD_SUBDIR_NAME}")
|
||||
endif()
|
||||
@@ -196,26 +175,23 @@ set(LIBRARY_OUTPUT_DIRECTORY "${BUILD_OUTPUT_ROOT_DIRECTORY}")
|
||||
# where to put generated binaries
|
||||
set(EXECUTABLE_OUTPUT_PATH "${BUILD_OUTPUT_ROOT_DIRECTORY}")
|
||||
|
||||
if (PYARROW_USE_TENSORFLOW)
|
||||
if(PYARROW_USE_TENSORFLOW)
|
||||
# TensorFlow uses the old GLIBCXX ABI, so we have to use it too
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_GLIBCXX_USE_CXX11_ABI=0")
|
||||
endif()
|
||||
|
||||
## Python and libraries
|
||||
# Python and libraries
|
||||
find_package(PythonLibsNew REQUIRED)
|
||||
find_package(NumPy REQUIRED)
|
||||
include(UseCython)
|
||||
|
||||
include_directories(SYSTEM
|
||||
${NUMPY_INCLUDE_DIRS}
|
||||
${PYTHON_INCLUDE_DIRS}
|
||||
src)
|
||||
include_directories(SYSTEM ${NUMPY_INCLUDE_DIRS} ${PYTHON_INCLUDE_DIRS} src)
|
||||
|
||||
############################################################
|
||||
#
|
||||
# Dependencies
|
||||
############################################################
|
||||
#
|
||||
|
||||
## Arrow
|
||||
# Arrow
|
||||
find_package(Arrow REQUIRED)
|
||||
include_directories(SYSTEM ${ARROW_INCLUDE_DIR})
|
||||
|
||||
@@ -223,31 +199,39 @@ function(bundle_arrow_lib library_path)
|
||||
set(options)
|
||||
set(one_value_args ABI_VERSION SO_VERSION)
|
||||
set(multi_value_args)
|
||||
cmake_parse_arguments(ARG "${options}" "${one_value_args}" "${multi_value_args}" ${ARGN})
|
||||
cmake_parse_arguments(ARG
|
||||
"${options}"
|
||||
"${one_value_args}"
|
||||
"${multi_value_args}"
|
||||
${ARGN})
|
||||
if(ARG_UNPARSED_ARGUMENTS)
|
||||
message(SEND_ERROR "Error: unrecognized arguments: ${ARG_UNPARSED_ARGUMENTS}")
|
||||
endif()
|
||||
|
||||
get_filename_component(LIBRARY_DIR ${${library_path}} DIRECTORY)
|
||||
get_filename_component(LIBRARY_NAME ${${library_path}} NAME_WE)
|
||||
configure_file(${${library_path}}
|
||||
${BUILD_OUTPUT_ROOT_DIRECTORY}/${LIBRARY_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX}
|
||||
COPYONLY)
|
||||
configure_file(
|
||||
${${library_path}}
|
||||
${BUILD_OUTPUT_ROOT_DIRECTORY}/${LIBRARY_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX} COPYONLY)
|
||||
|
||||
if (APPLE)
|
||||
configure_file(${LIBRARY_DIR}/${LIBRARY_NAME}.${ARG_ABI_VERSION}${CMAKE_SHARED_LIBRARY_SUFFIX}
|
||||
${BUILD_OUTPUT_ROOT_DIRECTORY}/${LIBRARY_NAME}.${ARG_ABI_VERSION}${CMAKE_SHARED_LIBRARY_SUFFIX}
|
||||
COPYONLY)
|
||||
configure_file(${LIBRARY_DIR}/${LIBRARY_NAME}.${ARG_SO_VERSION}${CMAKE_SHARED_LIBRARY_SUFFIX}
|
||||
${BUILD_OUTPUT_ROOT_DIRECTORY}/${LIBRARY_NAME}.${ARG_SO_VERSION}${CMAKE_SHARED_LIBRARY_SUFFIX}
|
||||
COPYONLY)
|
||||
if(APPLE)
|
||||
configure_file(
|
||||
${LIBRARY_DIR}/${LIBRARY_NAME}.${ARG_ABI_VERSION}${CMAKE_SHARED_LIBRARY_SUFFIX}
|
||||
${BUILD_OUTPUT_ROOT_DIRECTORY}/${LIBRARY_NAME}.${ARG_ABI_VERSION}${CMAKE_SHARED_LIBRARY_SUFFIX}
|
||||
COPYONLY)
|
||||
configure_file(
|
||||
${LIBRARY_DIR}/${LIBRARY_NAME}.${ARG_SO_VERSION}${CMAKE_SHARED_LIBRARY_SUFFIX}
|
||||
${BUILD_OUTPUT_ROOT_DIRECTORY}/${LIBRARY_NAME}.${ARG_SO_VERSION}${CMAKE_SHARED_LIBRARY_SUFFIX}
|
||||
COPYONLY)
|
||||
elseif(NOT MSVC)
|
||||
configure_file(${${library_path}}.${ARG_ABI_VERSION}
|
||||
${BUILD_OUTPUT_ROOT_DIRECTORY}/${LIBRARY_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX}.${ARG_ABI_VERSION}
|
||||
COPYONLY)
|
||||
configure_file(${${library_path}}.${ARG_SO_VERSION}
|
||||
${BUILD_OUTPUT_ROOT_DIRECTORY}/${LIBRARY_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX}.${ARG_SO_VERSION}
|
||||
COPYONLY)
|
||||
configure_file(
|
||||
${${library_path}}.${ARG_ABI_VERSION}
|
||||
${BUILD_OUTPUT_ROOT_DIRECTORY}/${LIBRARY_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX}.${ARG_ABI_VERSION}
|
||||
COPYONLY)
|
||||
configure_file(
|
||||
${${library_path}}.${ARG_SO_VERSION}
|
||||
${BUILD_OUTPUT_ROOT_DIRECTORY}/${LIBRARY_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX}.${ARG_SO_VERSION}
|
||||
COPYONLY)
|
||||
endif()
|
||||
|
||||
endfunction(bundle_arrow_lib)
|
||||
@@ -255,26 +239,27 @@ endfunction(bundle_arrow_lib)
|
||||
function(bundle_arrow_implib library_path)
|
||||
get_filename_component(LIBRARY_DIR ${${library_path}} DIRECTORY)
|
||||
get_filename_component(LIBRARY_NAME ${${library_path}} NAME_WE)
|
||||
configure_file(${${library_path}}
|
||||
${BUILD_OUTPUT_ROOT_DIRECTORY}/${LIBRARY_NAME}.lib
|
||||
COPYONLY)
|
||||
configure_file(${${library_path}} ${BUILD_OUTPUT_ROOT_DIRECTORY}/${LIBRARY_NAME}.lib
|
||||
COPYONLY)
|
||||
endfunction(bundle_arrow_implib)
|
||||
|
||||
function(bundle_boost_lib library_path)
|
||||
get_filename_component(LIBRARY_NAME ${${library_path}} NAME)
|
||||
get_filename_component(LIBRARY_NAME_WE ${${library_path}} NAME_WE)
|
||||
configure_file(${${library_path}}
|
||||
${BUILD_OUTPUT_ROOT_DIRECTORY}/${LIBRARY_NAME}
|
||||
configure_file(${${library_path}} ${BUILD_OUTPUT_ROOT_DIRECTORY}/${LIBRARY_NAME}
|
||||
COPYONLY)
|
||||
set(Boost_SO_VERSION
|
||||
"${Boost_MAJOR_VERSION}.${Boost_MINOR_VERSION}.${Boost_SUBMINOR_VERSION}")
|
||||
if(APPLE)
|
||||
configure_file(
|
||||
${${library_path}}
|
||||
${BUILD_OUTPUT_ROOT_DIRECTORY}/${LIBRARY_NAME_WE}.${Boost_SO_VERSION}${CMAKE_SHARED_LIBRARY_SUFFIX}
|
||||
COPYONLY)
|
||||
set(Boost_SO_VERSION "${Boost_MAJOR_VERSION}.${Boost_MINOR_VERSION}.${Boost_SUBMINOR_VERSION}")
|
||||
if (APPLE)
|
||||
configure_file(${${library_path}}
|
||||
${BUILD_OUTPUT_ROOT_DIRECTORY}/${LIBRARY_NAME_WE}.${Boost_SO_VERSION}${CMAKE_SHARED_LIBRARY_SUFFIX}
|
||||
COPYONLY)
|
||||
else()
|
||||
configure_file(${${library_path}}
|
||||
${BUILD_OUTPUT_ROOT_DIRECTORY}/${LIBRARY_NAME_WE}${CMAKE_SHARED_LIBRARY_SUFFIX}.${Boost_SO_VERSION}
|
||||
COPYONLY)
|
||||
configure_file(
|
||||
${${library_path}}
|
||||
${BUILD_OUTPUT_ROOT_DIRECTORY}/${LIBRARY_NAME_WE}${CMAKE_SHARED_LIBRARY_SUFFIX}.${Boost_SO_VERSION}
|
||||
COPYONLY)
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
@@ -282,27 +267,26 @@ function(bundle_zlib)
|
||||
# We can assume that manylinux1 and macosx have system zlib.
|
||||
# See https://mail.python.org/mm3/archives/list/distutils-sig@python.org/thread/ZZG6GL3XTBLBJXSITYHEXMFKN43EREB7/
|
||||
# for manylinux1.
|
||||
if (MSVC)
|
||||
if(MSVC)
|
||||
# zlib uses zlib.dll for Windows
|
||||
set(ZLIB_SHARED_LIB_NAME zlib.dll)
|
||||
if (DEFINED ENV{ARROW_BUILD_TOOLCHAIN})
|
||||
if(DEFINED ENV{ARROW_BUILD_TOOLCHAIN})
|
||||
set(ZLIB_HOME "$ENV{ARROW_BUILD_TOOLCHAIN}")
|
||||
endif()
|
||||
if (DEFINED ENV{ZLIB_HOME})
|
||||
if(DEFINED ENV{ZLIB_HOME})
|
||||
set(ZLIB_HOME "$ENV{ZLIB_HOME}")
|
||||
endif()
|
||||
if ("${ZLIB_HOME}" STREQUAL "")
|
||||
if("${ZLIB_HOME}" STREQUAL "")
|
||||
find_library(ZLIB_SHARED_LIB NAMES ${ZLIB_SHARED_LIB_NAME})
|
||||
else()
|
||||
find_library(ZLIB_SHARED_LIB
|
||||
NAMES ${ZLIB_SHARED_LIB_NAME}
|
||||
PATHS ${ZLIB_HOME} NO_DEFAULT_PATH
|
||||
PATH_SUFFIXES "bin")
|
||||
NAMES ${ZLIB_SHARED_LIB_NAME}
|
||||
PATHS ${ZLIB_HOME}
|
||||
NO_DEFAULT_PATH
|
||||
PATH_SUFFIXES "bin")
|
||||
endif()
|
||||
if (ZLIB_SHARED_LIB)
|
||||
file(COPY
|
||||
${ZLIB_SHARED_LIB}
|
||||
DESTINATION ${BUILD_OUTPUT_ROOT_DIRECTORY})
|
||||
if(ZLIB_SHARED_LIB)
|
||||
file(COPY ${ZLIB_SHARED_LIB} DESTINATION ${BUILD_OUTPUT_ROOT_DIRECTORY})
|
||||
endif()
|
||||
endif()
|
||||
endfunction()
|
||||
@@ -310,33 +294,44 @@ endfunction()
|
||||
# Always bundle includes
|
||||
file(COPY ${ARROW_INCLUDE_DIR}/arrow DESTINATION ${BUILD_OUTPUT_ROOT_DIRECTORY}/include)
|
||||
|
||||
if (PYARROW_BUNDLE_ARROW_CPP)
|
||||
if(PYARROW_BUNDLE_ARROW_CPP)
|
||||
# arrow
|
||||
bundle_arrow_lib(ARROW_SHARED_LIB
|
||||
ABI_VERSION ${ARROW_ABI_VERSION}
|
||||
SO_VERSION ${ARROW_SO_VERSION})
|
||||
ABI_VERSION
|
||||
${ARROW_ABI_VERSION}
|
||||
SO_VERSION
|
||||
${ARROW_SO_VERSION})
|
||||
bundle_arrow_lib(ARROW_PYTHON_SHARED_LIB
|
||||
ABI_VERSION ${ARROW_ABI_VERSION}
|
||||
SO_VERSION ${ARROW_SO_VERSION})
|
||||
ABI_VERSION
|
||||
${ARROW_ABI_VERSION}
|
||||
SO_VERSION
|
||||
${ARROW_SO_VERSION})
|
||||
|
||||
# boost
|
||||
if (PYARROW_BOOST_USE_SHARED AND PYARROW_BUNDLE_BOOST)
|
||||
if(PYARROW_BOOST_USE_SHARED AND PYARROW_BUNDLE_BOOST)
|
||||
set(Boost_USE_STATIC_LIBS OFF)
|
||||
set(Boost_USE_MULTITHREADED ON)
|
||||
if (MSVC AND ARROW_USE_STATIC_CRT)
|
||||
if(MSVC AND ARROW_USE_STATIC_CRT)
|
||||
set(Boost_USE_STATIC_RUNTIME ON)
|
||||
endif()
|
||||
set(Boost_ADDITIONAL_VERSIONS
|
||||
"1.66.0" "1.66"
|
||||
"1.65.0" "1.65"
|
||||
"1.64.0" "1.64"
|
||||
"1.63.0" "1.63"
|
||||
"1.62.0" "1.61"
|
||||
"1.61.0" "1.62"
|
||||
"1.60.0" "1.60")
|
||||
"1.66.0"
|
||||
"1.66"
|
||||
"1.65.0"
|
||||
"1.65"
|
||||
"1.64.0"
|
||||
"1.64"
|
||||
"1.63.0"
|
||||
"1.63"
|
||||
"1.62.0"
|
||||
"1.61"
|
||||
"1.61.0"
|
||||
"1.62"
|
||||
"1.60.0"
|
||||
"1.60")
|
||||
list(GET Boost_ADDITIONAL_VERSIONS 0 BOOST_LATEST_VERSION)
|
||||
string(REPLACE "." "_" BOOST_LATEST_VERSION_IN_PATH ${BOOST_LATEST_VERSION})
|
||||
if (MSVC)
|
||||
if(MSVC)
|
||||
# disable autolinking in boost
|
||||
add_definitions(-DBOOST_ALL_NO_LIB)
|
||||
endif()
|
||||
@@ -348,69 +343,60 @@ if (PYARROW_BUNDLE_ARROW_CPP)
|
||||
|
||||
bundle_zlib()
|
||||
|
||||
if (MSVC)
|
||||
if(MSVC)
|
||||
bundle_arrow_implib(ARROW_SHARED_IMP_LIB)
|
||||
bundle_arrow_implib(ARROW_PYTHON_SHARED_IMP_LIB)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if (MSVC)
|
||||
ADD_THIRDPARTY_LIB(arrow
|
||||
SHARED_LIB ${ARROW_SHARED_IMP_LIB})
|
||||
ADD_THIRDPARTY_LIB(arrow_python
|
||||
SHARED_LIB ${ARROW_PYTHON_SHARED_IMP_LIB})
|
||||
if(MSVC)
|
||||
add_thirdparty_lib(arrow SHARED_LIB ${ARROW_SHARED_IMP_LIB})
|
||||
add_thirdparty_lib(arrow_python SHARED_LIB ${ARROW_PYTHON_SHARED_IMP_LIB})
|
||||
else()
|
||||
ADD_THIRDPARTY_LIB(arrow
|
||||
SHARED_LIB ${ARROW_SHARED_LIB})
|
||||
ADD_THIRDPARTY_LIB(arrow_python
|
||||
SHARED_LIB ${ARROW_PYTHON_SHARED_LIB})
|
||||
add_thirdparty_lib(arrow SHARED_LIB ${ARROW_SHARED_LIB})
|
||||
add_thirdparty_lib(arrow_python SHARED_LIB ${ARROW_PYTHON_SHARED_LIB})
|
||||
endif()
|
||||
|
||||
############################################################
|
||||
#
|
||||
# Subdirectories
|
||||
############################################################
|
||||
#
|
||||
|
||||
if (UNIX)
|
||||
if(UNIX)
|
||||
set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
|
||||
endif()
|
||||
|
||||
set(CYTHON_EXTENSIONS
|
||||
lib _csv
|
||||
)
|
||||
set(CYTHON_EXTENSIONS lib _csv)
|
||||
|
||||
set(LINK_LIBS
|
||||
arrow_shared
|
||||
arrow_python_shared
|
||||
)
|
||||
set(LINK_LIBS arrow_shared arrow_python_shared)
|
||||
|
||||
if (PYARROW_BUILD_CUDA)
|
||||
## Arrow CUDA
|
||||
if(PYARROW_BUILD_CUDA)
|
||||
# Arrow CUDA
|
||||
find_package(ArrowCuda)
|
||||
if(NOT ARROW_CUDA_FOUND)
|
||||
message(FATAL_ERROR "Unable to locate Arrow CUDA libraries")
|
||||
else()
|
||||
if (PYARROW_BUNDLE_ARROW_CPP)
|
||||
if(PYARROW_BUNDLE_ARROW_CPP)
|
||||
bundle_arrow_lib(ARROW_CUDA_SHARED_LIB
|
||||
ABI_VERSION ${ARROW_ABI_VERSION}
|
||||
SO_VERSION ${ARROW_SO_VERSION})
|
||||
if (MSVC)
|
||||
ABI_VERSION
|
||||
${ARROW_ABI_VERSION}
|
||||
SO_VERSION
|
||||
${ARROW_SO_VERSION})
|
||||
if(MSVC)
|
||||
bundle_arrow_implib(ARROW_CUDA_SHARED_IMP_LIB)
|
||||
endif()
|
||||
endif()
|
||||
if (MSVC)
|
||||
ADD_THIRDPARTY_LIB(arrow_cuda
|
||||
SHARED_LIB ${ARROW_CUDA_SHARED_IMP_LIB})
|
||||
if(MSVC)
|
||||
add_thirdparty_lib(arrow_cuda SHARED_LIB ${ARROW_CUDA_SHARED_IMP_LIB})
|
||||
else()
|
||||
ADD_THIRDPARTY_LIB(arrow_cuda
|
||||
SHARED_LIB ${ARROW_CUDA_SHARED_LIB})
|
||||
add_thirdparty_lib(arrow_cuda SHARED_LIB ${ARROW_CUDA_SHARED_LIB})
|
||||
endif()
|
||||
set(LINK_LIBS ${LINK_LIBS} arrow_cuda_shared)
|
||||
set(CYTHON_EXTENSIONS ${CYTHON_EXTENSIONS} _cuda)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if (PYARROW_BUILD_PARQUET)
|
||||
## Parquet
|
||||
if(PYARROW_BUILD_PARQUET)
|
||||
# Parquet
|
||||
find_package(Parquet)
|
||||
|
||||
if(NOT PARQUET_FOUND)
|
||||
@@ -418,56 +404,46 @@ if (PYARROW_BUILD_PARQUET)
|
||||
endif()
|
||||
include_directories(SYSTEM ${PARQUET_INCLUDE_DIR})
|
||||
|
||||
if (PYARROW_BUNDLE_ARROW_CPP)
|
||||
file(COPY ${PARQUET_INCLUDE_DIR}/parquet DESTINATION ${BUILD_OUTPUT_ROOT_DIRECTORY}/include)
|
||||
if(PYARROW_BUNDLE_ARROW_CPP)
|
||||
file(COPY ${PARQUET_INCLUDE_DIR}/parquet DESTINATION
|
||||
${BUILD_OUTPUT_ROOT_DIRECTORY}/include)
|
||||
endif()
|
||||
|
||||
if (PYARROW_PARQUET_USE_SHARED)
|
||||
if (PYARROW_BUNDLE_ARROW_CPP)
|
||||
if(PYARROW_PARQUET_USE_SHARED)
|
||||
if(PYARROW_BUNDLE_ARROW_CPP)
|
||||
bundle_arrow_lib(PARQUET_SHARED_LIB
|
||||
ABI_VERSION ${PARQUET_ABI_VERSION}
|
||||
SO_VERSION ${PARQUET_SO_VERSION})
|
||||
if (MSVC)
|
||||
ABI_VERSION
|
||||
${PARQUET_ABI_VERSION}
|
||||
SO_VERSION
|
||||
${PARQUET_SO_VERSION})
|
||||
if(MSVC)
|
||||
bundle_arrow_implib(PARQUET_SHARED_IMP_LIB)
|
||||
endif()
|
||||
endif()
|
||||
if (MSVC)
|
||||
ADD_THIRDPARTY_LIB(parquet
|
||||
SHARED_LIB ${PARQUET_SHARED_IMP_LIB})
|
||||
if(MSVC)
|
||||
add_thirdparty_lib(parquet SHARED_LIB ${PARQUET_SHARED_IMP_LIB})
|
||||
else()
|
||||
ADD_THIRDPARTY_LIB(parquet
|
||||
SHARED_LIB ${PARQUET_SHARED_LIB})
|
||||
add_thirdparty_lib(parquet SHARED_LIB ${PARQUET_SHARED_LIB})
|
||||
endif()
|
||||
set(LINK_LIBS
|
||||
${LINK_LIBS}
|
||||
parquet_shared)
|
||||
set(LINK_LIBS ${LINK_LIBS} parquet_shared)
|
||||
else()
|
||||
find_package(Thrift)
|
||||
if (PYARROW_BOOST_USE_SHARED)
|
||||
if(PYARROW_BOOST_USE_SHARED)
|
||||
set(Boost_USE_STATIC_LIBS OFF)
|
||||
else()
|
||||
set(Boost_USE_STATIC_LIBS ON)
|
||||
endif()
|
||||
find_package(Boost COMPONENTS regex REQUIRED)
|
||||
ADD_THIRDPARTY_LIB(boost_regex
|
||||
STATIC_LIB ${Boost_REGEX_LIBRARY_RELEASE})
|
||||
ADD_THIRDPARTY_LIB(parquet
|
||||
STATIC_LIB ${PARQUET_STATIC_LIB})
|
||||
ADD_THIRDPARTY_LIB(thrift
|
||||
STATIC_LIB ${THRIFT_STATIC_LIB})
|
||||
set(LINK_LIBS
|
||||
${LINK_LIBS}
|
||||
parquet_static
|
||||
thrift_static
|
||||
boost_regex_static)
|
||||
add_thirdparty_lib(boost_regex STATIC_LIB ${Boost_REGEX_LIBRARY_RELEASE})
|
||||
add_thirdparty_lib(parquet STATIC_LIB ${PARQUET_STATIC_LIB})
|
||||
add_thirdparty_lib(thrift STATIC_LIB ${THRIFT_STATIC_LIB})
|
||||
set(LINK_LIBS ${LINK_LIBS} parquet_static thrift_static boost_regex_static)
|
||||
endif()
|
||||
set(CYTHON_EXTENSIONS
|
||||
${CYTHON_EXTENSIONS}
|
||||
_parquet)
|
||||
set(CYTHON_EXTENSIONS ${CYTHON_EXTENSIONS} _parquet)
|
||||
endif()
|
||||
|
||||
## Plasma
|
||||
if (PYARROW_BUILD_PLASMA)
|
||||
# Plasma
|
||||
if(PYARROW_BUILD_PLASMA)
|
||||
find_package(Plasma)
|
||||
|
||||
if(NOT PLASMA_FOUND)
|
||||
@@ -475,34 +451,31 @@ if (PYARROW_BUILD_PLASMA)
|
||||
endif()
|
||||
|
||||
include_directories(SYSTEM ${PLASMA_INCLUDE_DIR})
|
||||
ADD_THIRDPARTY_LIB(libplasma
|
||||
SHARED_LIB ${PLASMA_SHARED_LIB})
|
||||
add_thirdparty_lib(libplasma SHARED_LIB ${PLASMA_SHARED_LIB})
|
||||
|
||||
file(COPY ${ARROW_INCLUDE_DIR}/plasma DESTINATION ${BUILD_OUTPUT_ROOT_DIRECTORY}/include)
|
||||
file(COPY ${ARROW_INCLUDE_DIR}/plasma DESTINATION
|
||||
${BUILD_OUTPUT_ROOT_DIRECTORY}/include)
|
||||
|
||||
if (PYARROW_BUNDLE_ARROW_CPP)
|
||||
if(PYARROW_BUNDLE_ARROW_CPP)
|
||||
bundle_arrow_lib(PLASMA_SHARED_LIB
|
||||
ABI_VERSION ${ARROW_ABI_VERSION}
|
||||
SO_VERSION ${ARROW_SO_VERSION})
|
||||
ABI_VERSION
|
||||
${ARROW_ABI_VERSION}
|
||||
SO_VERSION
|
||||
${ARROW_SO_VERSION})
|
||||
endif()
|
||||
set(LINK_LIBS
|
||||
${LINK_LIBS}
|
||||
libplasma_shared)
|
||||
set(LINK_LIBS ${LINK_LIBS} libplasma_shared)
|
||||
|
||||
set(CYTHON_EXTENSIONS ${CYTHON_EXTENSIONS} _plasma)
|
||||
file(COPY ${PLASMA_EXECUTABLE} DESTINATION ${BUILD_OUTPUT_ROOT_DIRECTORY})
|
||||
endif()
|
||||
|
||||
|
||||
if (PYARROW_BUILD_ORC)
|
||||
## ORC
|
||||
set(CYTHON_EXTENSIONS
|
||||
${CYTHON_EXTENSIONS}
|
||||
_orc)
|
||||
if(PYARROW_BUILD_ORC)
|
||||
# ORC
|
||||
set(CYTHON_EXTENSIONS ${CYTHON_EXTENSIONS} _orc)
|
||||
endif()
|
||||
|
||||
## Gandiva
|
||||
if (PYARROW_BUILD_GANDIVA)
|
||||
# Gandiva
|
||||
if(PYARROW_BUILD_GANDIVA)
|
||||
find_package(Gandiva)
|
||||
|
||||
if(NOT GANDIVA_FOUND)
|
||||
@@ -511,92 +484,87 @@ if (PYARROW_BUILD_GANDIVA)
|
||||
|
||||
include_directories(SYSTEM ${GANDIVA_INCLUDE_DIR})
|
||||
|
||||
if (PYARROW_BUNDLE_ARROW_CPP)
|
||||
file(COPY ${GANDIVA_INCLUDE_DIR}/gandiva DESTINATION ${BUILD_OUTPUT_ROOT_DIRECTORY}/include)
|
||||
if(PYARROW_BUNDLE_ARROW_CPP)
|
||||
file(COPY ${GANDIVA_INCLUDE_DIR}/gandiva DESTINATION
|
||||
${BUILD_OUTPUT_ROOT_DIRECTORY}/include)
|
||||
|
||||
bundle_arrow_lib(GANDIVA_SHARED_LIB
|
||||
ABI_VERSION ${ARROW_ABI_VERSION}
|
||||
SO_VERSION ${ARROW_SO_VERSION})
|
||||
ABI_VERSION
|
||||
${ARROW_ABI_VERSION}
|
||||
SO_VERSION
|
||||
${ARROW_SO_VERSION})
|
||||
|
||||
if (MSVC)
|
||||
if(MSVC)
|
||||
bundle_arrow_implib(GANDIVA_SHARED_IMP_LIB)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if (MSVC)
|
||||
ADD_THIRDPARTY_LIB(gandiva
|
||||
SHARED_LIB ${GANDIVA_SHARED_IMP_LIB})
|
||||
if(MSVC)
|
||||
add_thirdparty_lib(gandiva SHARED_LIB ${GANDIVA_SHARED_IMP_LIB})
|
||||
else()
|
||||
ADD_THIRDPARTY_LIB(gandiva
|
||||
SHARED_LIB ${GANDIVA_SHARED_LIB})
|
||||
add_thirdparty_lib(gandiva SHARED_LIB ${GANDIVA_SHARED_LIB})
|
||||
endif()
|
||||
|
||||
set(LINK_LIBS
|
||||
${LINK_LIBS}
|
||||
gandiva_shared)
|
||||
set(LINK_LIBS ${LINK_LIBS} gandiva_shared)
|
||||
set(CYTHON_EXTENSIONS ${CYTHON_EXTENSIONS} gandiva)
|
||||
endif()
|
||||
|
||||
|
||||
############################################################
|
||||
#
|
||||
# Setup and build Cython modules
|
||||
############################################################
|
||||
#
|
||||
|
||||
if (PYARROW_GENERATE_COVERAGE)
|
||||
if(PYARROW_GENERATE_COVERAGE)
|
||||
set(CYTHON_FLAGS "${CYTHON_FLAGS}" "-Xlinetrace=True")
|
||||
endif()
|
||||
|
||||
foreach(module ${CYTHON_EXTENSIONS})
|
||||
string(REPLACE "." ";" directories ${module})
|
||||
list(GET directories -1 module_name)
|
||||
list(REMOVE_AT directories -1)
|
||||
string(REPLACE "." ";" directories ${module})
|
||||
list(GET directories -1 module_name)
|
||||
list(REMOVE_AT directories -1)
|
||||
|
||||
string(REPLACE "." "/" module_root "${module}")
|
||||
set(module_SRC pyarrow/${module_root}.pyx)
|
||||
set_source_files_properties(${module_SRC} PROPERTIES CYTHON_IS_CXX 1)
|
||||
string(REPLACE "." "/" module_root "${module}")
|
||||
set(module_SRC pyarrow/${module_root}.pyx)
|
||||
set_source_files_properties(${module_SRC} PROPERTIES CYTHON_IS_CXX 1)
|
||||
|
||||
cython_add_module(${module_name}
|
||||
${module_name}_pyx
|
||||
${module_name}_output
|
||||
${module_SRC})
|
||||
cython_add_module(${module_name} ${module_name}_pyx ${module_name}_output ${module_SRC})
|
||||
|
||||
if (directories)
|
||||
string(REPLACE ";" "/" module_output_directory ${directories})
|
||||
set_target_properties(${module_name} PROPERTIES
|
||||
LIBRARY_OUTPUT_DIRECTORY ${module_output_directory})
|
||||
if(directories)
|
||||
string(REPLACE ";" "/" module_output_directory ${directories})
|
||||
set_target_properties(${module_name}
|
||||
PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${module_output_directory})
|
||||
endif()
|
||||
|
||||
if(PYARROW_BUNDLE_ARROW_CPP)
|
||||
# In the event that we are bundling the shared libraries (e.g. in a
|
||||
# manylinux1 wheel), we need to set the RPATH of the extensions to the
|
||||
# root of the pyarrow/ package so that libarrow/libarrow_python are able
|
||||
# to be loaded properly
|
||||
if(APPLE)
|
||||
set(module_install_rpath "@loader_path/")
|
||||
else()
|
||||
set(module_install_rpath "\$ORIGIN")
|
||||
endif()
|
||||
|
||||
if (PYARROW_BUNDLE_ARROW_CPP)
|
||||
# In the event that we are bundling the shared libraries (e.g. in a
|
||||
# manylinux1 wheel), we need to set the RPATH of the extensions to the
|
||||
# root of the pyarrow/ package so that libarrow/libarrow_python are able
|
||||
# to be loaded properly
|
||||
if(APPLE)
|
||||
set(module_install_rpath "@loader_path/")
|
||||
else()
|
||||
set(module_install_rpath "\$ORIGIN")
|
||||
endif()
|
||||
# XXX(wesm): ARROW-2326 this logic is only needed when we have Cython
|
||||
# modules in interior directories. Since all of our C extensions and
|
||||
# bundled libraries are in the same place, we can skip this part
|
||||
|
||||
# XXX(wesm): ARROW-2326 this logic is only needed when we have Cython
|
||||
# modules in interior directories. Since all of our C extensions and
|
||||
# bundled libraries are in the same place, we can skip this part
|
||||
# list(LENGTH directories i)
|
||||
# while(${i} GREATER 0)
|
||||
# set(module_install_rpath "${module_install_rpath}/..")
|
||||
# math(EXPR i "${i} - 1" )
|
||||
# endwhile(${i} GREATER 0)
|
||||
|
||||
# list(LENGTH directories i)
|
||||
# while(${i} GREATER 0)
|
||||
# set(module_install_rpath "${module_install_rpath}/..")
|
||||
# math(EXPR i "${i} - 1" )
|
||||
# endwhile(${i} GREATER 0)
|
||||
set_target_properties(${module_name} PROPERTIES INSTALL_RPATH ${module_install_rpath})
|
||||
endif()
|
||||
|
||||
set_target_properties(${module_name} PROPERTIES
|
||||
INSTALL_RPATH ${module_install_rpath})
|
||||
endif()
|
||||
if(PYARROW_GENERATE_COVERAGE)
|
||||
set_target_properties(${module_name}
|
||||
PROPERTIES COMPILE_DEFINITIONS
|
||||
"CYTHON_TRACE=1;CYTHON_TRACE_NOGIL=1")
|
||||
endif()
|
||||
|
||||
if (PYARROW_GENERATE_COVERAGE)
|
||||
set_target_properties(${module_name} PROPERTIES
|
||||
COMPILE_DEFINITIONS "CYTHON_TRACE=1;CYTHON_TRACE_NOGIL=1")
|
||||
endif()
|
||||
target_link_libraries(${module_name} ${LINK_LIBS})
|
||||
|
||||
target_link_libraries(${module_name} ${LINK_LIBS})
|
||||
|
||||
# Generated files will be moved to the right directory by setup.py.
|
||||
# Generated files will be moved to the right directory by setup.py.
|
||||
endforeach(module)
|
||||
Executable
+86
@@ -0,0 +1,86 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
# Licensed to the Apache Software Foundation (ASF) under one
|
||||
# or more contributor license agreements. See the NOTICE file
|
||||
# distributed with this work for additional information
|
||||
# regarding copyright ownership. The ASF licenses this file
|
||||
# to you under the Apache License, Version 2.0 (the
|
||||
# "License"); you may not use this file except in compliance
|
||||
# with the License. You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing,
|
||||
# software distributed under the License is distributed on an
|
||||
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
# KIND, either express or implied. See the License for the
|
||||
# specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import hashlib
|
||||
import pathlib
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
|
||||
patterns = [
|
||||
'cpp/CMakeLists.txt',
|
||||
'cpp/src/**/CMakeLists.txt',
|
||||
'cpp/tools/**/CMakeLists.txt',
|
||||
'java/gandiva/CMakeLists.txt',
|
||||
'python/CMakeLists.txt',
|
||||
]
|
||||
|
||||
here = pathlib.Path(__file__).parent
|
||||
|
||||
|
||||
def find_cmake_files():
|
||||
for pat in patterns:
|
||||
yield from here.glob(pat)
|
||||
|
||||
|
||||
def run_cmake_format(paths):
|
||||
# cmake-format is fast enough that running in parallel doesn't seem necessary
|
||||
cmd = ['cmake-format', '--in-place'] + paths
|
||||
try:
|
||||
subprocess.run(cmd, check=True)
|
||||
except FileNotFoundError:
|
||||
try:
|
||||
import cmake_format
|
||||
except ImportError:
|
||||
raise ImportError(
|
||||
"Please install cmake-format: `pip install cmake_format`")
|
||||
else:
|
||||
# Other error, re-raise
|
||||
raise
|
||||
|
||||
|
||||
def check_cmake_format(paths):
|
||||
hashes = {}
|
||||
for p in paths:
|
||||
contents = p.read_bytes()
|
||||
hashes[p] = hashlib.sha256(contents).digest()
|
||||
|
||||
run_cmake_format(paths)
|
||||
|
||||
# Check contents didn't change
|
||||
changed = []
|
||||
for p in paths:
|
||||
contents = p.read_bytes()
|
||||
if hashes[p] != hashlib.sha256(contents).digest():
|
||||
changed.append(p)
|
||||
|
||||
if changed:
|
||||
items = "\n".join("- %s" % p for p in sorted(changed))
|
||||
print("The following cmake files need re-formatting:\n%s" % (items,))
|
||||
print()
|
||||
print("Consider running `run-cmake-format.py`")
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
paths = list(find_cmake_files())
|
||||
if "--check" in sys.argv:
|
||||
check_cmake_format(paths)
|
||||
else:
|
||||
run_cmake_format(paths)
|
||||
Reference in new issue
Block a user