chore: import upstream snapshot with attribution
This commit is contained in:
Vendored
+34
@@ -0,0 +1,34 @@
|
||||
cmake_minimum_required(VERSION 3.13 FATAL_ERROR)
|
||||
cmake_policy(SET CMP0048 NEW)
|
||||
project(thirdparty)
|
||||
|
||||
include(${PROJECT_ROOT_DIR}/cmake/utils.cmake)
|
||||
|
||||
set(CMAKE_MACOSX_RPATH ON)
|
||||
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
|
||||
set(EXTERNAL_BINARY_DIR ${CMAKE_BINARY_DIR}/external)
|
||||
set(EXTERNAL_INC_DIR ${CMAKE_BINARY_DIR}/external/usr/local/include)
|
||||
#TODO(windows): fix EXTERNAL_LIB_DIR on Windows
|
||||
set(EXTERNAL_LIB_DIR ${CMAKE_BINARY_DIR}/external/usr/local/lib)
|
||||
file(MAKE_DIRECTORY ${EXTERNAL_INC_DIR})
|
||||
file(MAKE_DIRECTORY ${EXTERNAL_LIB_DIR})
|
||||
|
||||
add_subdirectory(sparsehash sparsehash EXCLUDE_FROM_ALL)
|
||||
add_subdirectory(magic_enum magic_enum EXCLUDE_FROM_ALL)
|
||||
add_subdirectory(RaBitQ-Library RaBitQ-Library EXCLUDE_FROM_ALL)
|
||||
add_subdirectory(googletest googletest EXCLUDE_FROM_ALL)
|
||||
|
||||
add_subdirectory(arrow arrow EXCLUDE_FROM_ALL)
|
||||
add_subdirectory(gflags gflags EXCLUDE_FROM_ALL)
|
||||
add_subdirectory(glog glog EXCLUDE_FROM_ALL)
|
||||
add_subdirectory(yaml-cpp yaml-cpp EXCLUDE_FROM_ALL)
|
||||
add_subdirectory(protobuf protobuf EXCLUDE_FROM_ALL)
|
||||
add_subdirectory(antlr antlr EXCLUDE_FROM_ALL)
|
||||
add_subdirectory(lz4 lz4 EXCLUDE_FROM_ALL)
|
||||
add_subdirectory(rocksdb rocksdb EXCLUDE_FROM_ALL)
|
||||
add_subdirectory(CRoaring CRoaring EXCLUDE_FROM_ALL)
|
||||
add_subdirectory(FastPFOR FastPFOR EXCLUDE_FROM_ALL)
|
||||
add_subdirectory(limonp limonp EXCLUDE_FROM_ALL)
|
||||
add_subdirectory(cppjieba cppjieba EXCLUDE_FROM_ALL)
|
||||
add_subdirectory(utf8proc utf8proc EXCLUDE_FROM_ALL)
|
||||
add_subdirectory(snowball snowball EXCLUDE_FROM_ALL)
|
||||
Vendored
+62
@@ -0,0 +1,62 @@
|
||||
# CRoaring v2.0.4 - integrated as a single-file amalgamation build.
|
||||
#
|
||||
# We deliberately do NOT pull the upstream repository as a git submodule
|
||||
# anymore: it ships ~292M of benchmarks/test data that we never build, which
|
||||
# made `git submodule update --init --recursive` painfully slow and bloated
|
||||
# the local checkout.
|
||||
#
|
||||
# Instead, the official amalgamation produced by CRoaring's release pipeline
|
||||
# (https://github.com/RoaringBitmap/CRoaring/releases/tag/v2.0.4) is checked
|
||||
# into CRoaring-2.0.4/:
|
||||
#
|
||||
# CRoaring-2.0.4/roaring.c - single C TU containing the entire library
|
||||
# CRoaring-2.0.4/roaring.h - public C API (from official release)
|
||||
# CRoaring-2.0.4/roaring.hh - public C++ wrapper (from official release)
|
||||
# CRoaring-2.0.4/roaring64map.hh - 64-bit C++ wrapper (from cpp/ in tarball)
|
||||
# CRoaring-2.0.4/include/roaring/roaring.h
|
||||
# - identical to roaring.h, exposed under the
|
||||
# historical <roaring/roaring.h> path so
|
||||
# existing callers keep working.
|
||||
#
|
||||
# To upgrade, replace these files with the assets from a newer release tag
|
||||
# (and grab cpp/roaring64map.hh from the source tarball if it is still split).
|
||||
set(_ROARING_AMAL_DIR ${CMAKE_CURRENT_SOURCE_DIR}/CRoaring-2.0.4)
|
||||
|
||||
add_library(roaring STATIC ${_ROARING_AMAL_DIR}/roaring.c)
|
||||
set_target_properties(roaring PROPERTIES
|
||||
POSITION_INDEPENDENT_CODE ON
|
||||
ARCHIVE_OUTPUT_DIRECTORY ${EXTERNAL_LIB_DIR}
|
||||
)
|
||||
|
||||
# Two include roots:
|
||||
# - CRoaring-2.0.4/ -> <roaring.h>, <roaring.hh>, <roaring64map.hh>
|
||||
# - CRoaring-2.0.4/include/ -> <roaring/roaring.h> (legacy path used in code)
|
||||
target_include_directories(roaring SYSTEM PUBLIC
|
||||
$<BUILD_INTERFACE:${_ROARING_AMAL_DIR}>
|
||||
$<BUILD_INTERFACE:${_ROARING_AMAL_DIR}/include>
|
||||
)
|
||||
|
||||
# The amalgamation is plain C11; the C++ wrappers in roaring.hh require C++11+.
|
||||
target_compile_features(roaring PUBLIC c_std_11)
|
||||
|
||||
# Silence warnings that come from the third-party amalgamation itself; we do
|
||||
# not want them polluting our build.
|
||||
if(CMAKE_C_COMPILER_ID STREQUAL "GNU" OR CMAKE_C_COMPILER_ID STREQUAL "Clang"
|
||||
OR CMAKE_C_COMPILER_ID STREQUAL "AppleClang")
|
||||
target_compile_options(roaring PRIVATE
|
||||
-Wno-unused-parameter
|
||||
-Wno-unused-but-set-variable
|
||||
-Wno-unused-function
|
||||
)
|
||||
endif()
|
||||
|
||||
# Preserve the legacy ROARING_* variables so any consumer that still reads
|
||||
# them (instead of linking the `roaring` target directly) keeps working.
|
||||
set(ROARING_FOUND TRUE PARENT_SCOPE)
|
||||
set(ROARING_INCLUDE_DIR ${_ROARING_AMAL_DIR} PARENT_SCOPE)
|
||||
set(ROARING_INCLUDE_DIRS ${_ROARING_AMAL_DIR}
|
||||
${_ROARING_AMAL_DIR}/include PARENT_SCOPE)
|
||||
set(ROARING_LIBRARY $<TARGET_FILE:roaring> PARENT_SCOPE)
|
||||
set(ROARING_LIBRARIES $<TARGET_FILE:roaring> PARENT_SCOPE)
|
||||
|
||||
unset(_ROARING_AMAL_DIR)
|
||||
+48
@@ -0,0 +1,48 @@
|
||||
The CRoaring project is under a dual license (Apache/MIT).
|
||||
Users of the library may choose one or the other license.
|
||||
|
||||
=======================================================================
|
||||
Apache License, Version 2.0
|
||||
=======================================================================
|
||||
|
||||
Copyright 2016-2022 The CRoaring authors
|
||||
|
||||
Licensed 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.
|
||||
|
||||
SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
=======================================================================
|
||||
MIT License
|
||||
=======================================================================
|
||||
|
||||
Copyright 2016-2022 The CRoaring authors
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a
|
||||
copy of this software and associated documentation files (the "Software"),
|
||||
to deal in the Software without restriction, including without limitation
|
||||
the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
and/or sell copies of the Software, and to permit persons to whom the
|
||||
Software is furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
DEALINGS IN THE SOFTWARE.
|
||||
|
||||
SPDX-License-Identifier: MIT
|
||||
File diff suppressed because it is too large
Load Diff
+21180
File diff suppressed because it is too large
Load Diff
+2020
File diff suppressed because it is too large
Load Diff
+2881
File diff suppressed because it is too large
Load Diff
+1864
File diff suppressed because it is too large
Load Diff
Vendored
+54
@@ -0,0 +1,54 @@
|
||||
include(${PROJECT_ROOT_DIR}/cmake/bazel.cmake)
|
||||
|
||||
# On non-x86 platforms, FastPFOR uses SIMDe to emulate SSE intrinsics.
|
||||
# Detection covers native ARM/RISC-V builds AND cross-compilation (e.g. iOS/Android).
|
||||
set(_FASTPFOR_NEEDS_SIMDE FALSE)
|
||||
if(CMAKE_SYSTEM_PROCESSOR MATCHES "arm|aarch64|ARM64|arm64")
|
||||
set(_FASTPFOR_NEEDS_SIMDE TRUE)
|
||||
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "riscv64|riscv32")
|
||||
set(_FASTPFOR_NEEDS_SIMDE TRUE)
|
||||
elseif(CMAKE_OSX_ARCHITECTURES MATCHES "arm64")
|
||||
set(_FASTPFOR_NEEDS_SIMDE TRUE)
|
||||
elseif(CMAKE_SYSTEM_NAME STREQUAL "iOS")
|
||||
set(_FASTPFOR_NEEDS_SIMDE TRUE)
|
||||
endif()
|
||||
|
||||
# RISC-V: patch FastPFOR common.h to include SIMDe header for __riscv
|
||||
if(CMAKE_SYSTEM_PROCESSOR MATCHES "riscv64|riscv32")
|
||||
set(FASTPFOR_RISCV_PATCH ${CMAKE_CURRENT_SOURCE_DIR}/fastpfor.riscv.patch)
|
||||
apply_patch_once("fastpfor_riscv_fix" "${CMAKE_CURRENT_SOURCE_DIR}/FastPFOR-0.4.0" "${FASTPFOR_RISCV_PATCH}")
|
||||
endif()
|
||||
|
||||
if(_FASTPFOR_NEEDS_SIMDE)
|
||||
include(FetchContent)
|
||||
FetchContent_Declare(
|
||||
simde
|
||||
GIT_REPOSITORY https://github.com/simd-everywhere/simde.git
|
||||
GIT_TAG v0.8.2
|
||||
)
|
||||
FetchContent_MakeAvailable(simde)
|
||||
set(FASTPFOR_EXTRA_INCS ${simde_SOURCE_DIR})
|
||||
set(FASTPFOR_EXTRA_CXXFLAGS "")
|
||||
set(FASTPFOR_EXTRA_DEFS SIMDE_ENABLE_NATIVE_ALIASES)
|
||||
elseif(MSVC)
|
||||
set(FASTPFOR_EXTRA_INCS "")
|
||||
set(FASTPFOR_EXTRA_CXXFLAGS "")
|
||||
set(FASTPFOR_EXTRA_DEFS "")
|
||||
else()
|
||||
set(FASTPFOR_EXTRA_INCS "")
|
||||
set(FASTPFOR_EXTRA_CXXFLAGS -msse4.1)
|
||||
set(FASTPFOR_EXTRA_DEFS "")
|
||||
endif()
|
||||
|
||||
cc_library(
|
||||
NAME FastPFOR STATIC
|
||||
SRCS FastPFOR-0.4.0/src/simdbitpacking.cpp
|
||||
FastPFOR-0.4.0/src/bitpacking.cpp
|
||||
FastPFOR-0.4.0/src/bitpackingaligned.cpp
|
||||
FastPFOR-0.4.0/src/bitpackingunaligned.cpp
|
||||
FastPFOR-0.4.0/src/simdunalignedbitpacking.cpp
|
||||
INCS FastPFOR-0.4.0/headers ${FASTPFOR_EXTRA_INCS}
|
||||
PUBINCS FastPFOR-0.4.0/headers ${FASTPFOR_EXTRA_INCS}
|
||||
DEFS ${FASTPFOR_EXTRA_DEFS}
|
||||
CXXFLAGS ${FASTPFOR_EXTRA_CXXFLAGS}
|
||||
)
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
diff --git a/headers/common.h b/headers/common.h
|
||||
index 1234567..abcdefg 100644
|
||||
--- a/headers/common.h
|
||||
+++ b/headers/common.h
|
||||
@@ -12,7 +12,7 @@
|
||||
#include <fcntl.h>
|
||||
#if defined(__GNUC__) && (defined(__x86_64__) || defined(__i386__))
|
||||
#include <immintrin.h>
|
||||
-#elif defined(__GNUC__) && defined(__aarch64__)
|
||||
+#elif defined(__GNUC__) && (defined(__aarch64__) || defined(__riscv))
|
||||
#include <simde/x86/sse4.1.h>
|
||||
#endif
|
||||
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
add_library(rabitqlib INTERFACE)
|
||||
target_include_directories(
|
||||
rabitqlib SYSTEM INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}/RaBitQ-Library-0.1/include"
|
||||
)
|
||||
Vendored
+28
@@ -0,0 +1,28 @@
|
||||
set(ANTLR_SRC_DIR ${CMAKE_CURRENT_SOURCE_DIR}/antlr4)
|
||||
set(ANTLR_PATCH ${CMAKE_CURRENT_SOURCE_DIR}/antlr4.patch)
|
||||
apply_patch_once("antlr4_fix" "${ANTLR_SRC_DIR}" "${ANTLR_PATCH}")
|
||||
if(MSVC)
|
||||
# Replace /Zi with /Z7 for sccache compatibility (/Z7 embeds debug info in .obj, no .pdb).
|
||||
set(ANTLR_WINDOWS_PATCH ${CMAKE_CURRENT_SOURCE_DIR}/antlr4.windows.patch)
|
||||
apply_patch_once("antlr4_windows_fix" "${ANTLR_SRC_DIR}" "${ANTLR_WINDOWS_PATCH}")
|
||||
endif()
|
||||
|
||||
if(MSVC)
|
||||
set(WITH_STATIC_CRT ${ZVEC_USE_STATIC_CRT} CACHE BOOL "" FORCE)
|
||||
endif()
|
||||
add_subdirectory(antlr4/runtime/Cpp/)
|
||||
|
||||
target_include_directories(antlr4_static SYSTEM INTERFACE
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/antlr4/runtime/Cpp/runtime/src/"
|
||||
)
|
||||
mark_target_includes_system(antlr4_static)
|
||||
|
||||
if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
|
||||
target_compile_options(antlr4_static PRIVATE -Wno-unknown-pragmas -Wno-unqualified-std-cast-call)
|
||||
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
|
||||
target_compile_options(antlr4_static PRIVATE -Wno-unknown-pragmas -Wno-unqualified-std-cast-call -Wno-attributes -Wno-implicit-fallthrough)
|
||||
elseif (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
|
||||
target_compile_definitions(antlr4_static INTERFACE ANTLR4CPP_STATIC)
|
||||
endif ()
|
||||
|
||||
add_library(antlr4 ALIAS antlr4_static)
|
||||
Vendored
+48
@@ -0,0 +1,48 @@
|
||||
diff --git a/runtime/Cpp/CMakeLists.txt b/runtime/Cpp/CMakeLists.txt
|
||||
index 390078151..213258ac8 100644
|
||||
--- a/runtime/Cpp/CMakeLists.txt
|
||||
+++ b/runtime/Cpp/CMakeLists.txt
|
||||
@@ -28,21 +28,21 @@ project(LIBANTLR4)
|
||||
if(CMAKE_VERSION VERSION_EQUAL "3.0.0" OR
|
||||
CMAKE_VERSION VERSION_GREATER "3.0.0")
|
||||
CMAKE_POLICY(SET CMP0026 NEW)
|
||||
- CMAKE_POLICY(SET CMP0054 OLD)
|
||||
- CMAKE_POLICY(SET CMP0045 OLD)
|
||||
- CMAKE_POLICY(SET CMP0042 OLD)
|
||||
+ CMAKE_POLICY(SET CMP0054 NEW)
|
||||
+ CMAKE_POLICY(SET CMP0045 NEW)
|
||||
+ CMAKE_POLICY(SET CMP0042 NEW)
|
||||
endif()
|
||||
|
||||
if(CMAKE_VERSION VERSION_EQUAL "3.3.0" OR
|
||||
CMAKE_VERSION VERSION_GREATER "3.3.0")
|
||||
- CMAKE_POLICY(SET CMP0059 OLD)
|
||||
- CMAKE_POLICY(SET CMP0054 OLD)
|
||||
+ CMAKE_POLICY(SET CMP0059 NEW)
|
||||
+ CMAKE_POLICY(SET CMP0054 NEW)
|
||||
endif()
|
||||
|
||||
-if(CMAKE_SYSTEM_NAME MATCHES "Linux")
|
||||
- find_package(PkgConfig REQUIRED)
|
||||
- pkg_check_modules(UUID REQUIRED uuid)
|
||||
-endif()
|
||||
+#if(CMAKE_SYSTEM_NAME MATCHES "Linux")
|
||||
+# find_package(PkgConfig REQUIRED)
|
||||
+# pkg_check_modules(UUID REQUIRED uuid)
|
||||
+#endif()
|
||||
if(APPLE)
|
||||
find_library(COREFOUNDATION_LIBRARY CoreFoundation)
|
||||
endif()
|
||||
diff --git a/runtime/Cpp/runtime/CMakeLists.txt b/runtime/Cpp/runtime/CMakeLists.txt
|
||||
index 2c5e7376f..ae992f9cc 100644
|
||||
--- a/runtime/Cpp/runtime/CMakeLists.txt
|
||||
+++ b/runtime/Cpp/runtime/CMakeLists.txt
|
||||
@@ -25,7 +25,7 @@ file(GLOB libantlrcpp_SRC
|
||||
add_library(antlr4_shared SHARED ${libantlrcpp_SRC})
|
||||
add_library(antlr4_static STATIC ${libantlrcpp_SRC})
|
||||
|
||||
-set(LIB_OUTPUT_DIR "${CMAKE_HOME_DIRECTORY}/dist") # put generated libraries here.
|
||||
+set(LIB_OUTPUT_DIR "${EXTERNAL_LIB_DIR}")
|
||||
message(STATUS "Output libraries to ${LIB_OUTPUT_DIR}")
|
||||
|
||||
# make sure 'make' works fine even if ${LIB_OUTPUT_DIR} is deleted.
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
diff --git a/runtime/Cpp/CMakeLists.txt b/runtime/Cpp/CMakeLists.txt
|
||||
index 1234567..abcdefg 100644
|
||||
--- a/runtime/Cpp/CMakeLists.txt
|
||||
+++ b/runtime/Cpp/CMakeLists.txt
|
||||
@@ -85,10 +85,10 @@
|
||||
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${MY_CXX_WARNING_FLAGS}")
|
||||
if(MSVC_VERSION)
|
||||
- set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /Od /Zi /MP ${MY_CXX_WARNING_FLAGS}")
|
||||
- set(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL} /O1 /Oi /Ob2 /Gy /MP /DNDEBUG ${MY_CXX_WARNING_FLAGS}")
|
||||
- set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /O2 /Oi /Ob2 /Gy /MP /DNDEBUG ${MY_CXX_WARNING_FLGAS}")
|
||||
- set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} /O2 /Oi /Ob2 /Gy /MP /Zi ${MY_CXX_WARNING_FLAGS}")
|
||||
+ set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /Od /Z7 ${MY_CXX_WARNING_FLAGS}")
|
||||
+ set(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL} /O1 /Oi /Ob2 /Gy /DNDEBUG ${MY_CXX_WARNING_FLAGS}")
|
||||
+ set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /O2 /Oi /Ob2 /Gy /DNDEBUG ${MY_CXX_WARNING_FLGAS}")
|
||||
+ set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} /O2 /Oi /Ob2 /Gy /Z7 ${MY_CXX_WARNING_FLAGS}")
|
||||
else()
|
||||
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -O0 -g ${MY_CXX_WARNING_FLAGS}")
|
||||
set(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL} -Os -DNDEBUG ${MY_CXX_WARNING_FLAGS}")
|
||||
Vendored
+235
@@ -0,0 +1,235 @@
|
||||
set(ARROW_SRC_DIR ${CMAKE_CURRENT_SOURCE_DIR}/apache-arrow-21.0.0)
|
||||
if(ANDROID)
|
||||
set(ARROW_PATCH ${CMAKE_CURRENT_SOURCE_DIR}/arrow.android.patch)
|
||||
apply_patch_once("arrow_android_fix" "${ARROW_SRC_DIR}" "${ARROW_PATCH}")
|
||||
elseif(IOS)
|
||||
set(ARROW_IOS_PATCH ${CMAKE_CURRENT_SOURCE_DIR}/arrow.ios.patch)
|
||||
apply_patch_once("arrow_ios_fix" "${ARROW_SRC_DIR}" "${ARROW_IOS_PATCH}")
|
||||
else()
|
||||
set(ARROW_PATCH ${CMAKE_CURRENT_SOURCE_DIR}/arrow.patch)
|
||||
apply_patch_once("arrow_fix" "${ARROW_SRC_DIR}" "${ARROW_PATCH}")
|
||||
endif()
|
||||
if(MSVC)
|
||||
set(ARROW_WIN_PATCH ${CMAKE_CURRENT_SOURCE_DIR}/arrow.windows.patch)
|
||||
apply_patch_once("arrow_windows_crt_fix" "${ARROW_SRC_DIR}" "${ARROW_WIN_PATCH}")
|
||||
endif()
|
||||
|
||||
include(ExternalProject)
|
||||
include(ProcessorCount)
|
||||
|
||||
ProcessorCount(NPROC)
|
||||
|
||||
set(ARROW_CMAKE_BUILD_TYPE "${CMAKE_BUILD_TYPE}")
|
||||
if(NOT ARROW_CMAKE_BUILD_TYPE)
|
||||
set(ARROW_CMAKE_BUILD_TYPE Release)
|
||||
endif()
|
||||
|
||||
if(MSVC)
|
||||
set(LIB_PARQUET ${EXTERNAL_LIB_DIR}/parquet_static.lib)
|
||||
set(LIB_ARROW ${EXTERNAL_LIB_DIR}/arrow_static.lib)
|
||||
set(LIB_COMPUTE ${EXTERNAL_LIB_DIR}/arrow_compute_static.lib)
|
||||
set(LIB_ACERO ${EXTERNAL_LIB_DIR}/arrow_acero_static.lib)
|
||||
set(LIB_ARROW_DEPENDS ${EXTERNAL_LIB_DIR}/arrow_bundled_dependencies.lib)
|
||||
set(LIB_ARROW_DATASET ${EXTERNAL_LIB_DIR}/arrow_dataset_static.lib)
|
||||
else()
|
||||
set(LIB_PARQUET ${EXTERNAL_LIB_DIR}/libparquet.a)
|
||||
set(LIB_ARROW ${EXTERNAL_LIB_DIR}/libarrow.a)
|
||||
set(LIB_COMPUTE ${EXTERNAL_LIB_DIR}/libarrow_compute.a)
|
||||
set(LIB_ACERO ${EXTERNAL_LIB_DIR}/libarrow_acero.a)
|
||||
set(LIB_ARROW_DEPENDS ${EXTERNAL_LIB_DIR}/libarrow_bundled_dependencies.a)
|
||||
set(LIB_ARROW_DATASET ${EXTERNAL_LIB_DIR}/libarrow_dataset.a)
|
||||
endif()
|
||||
|
||||
set(CONFIGURE_ENV_LIST "")
|
||||
if(USE_OSS_MIRROR)
|
||||
list(APPEND CONFIGURE_ENV_LIST
|
||||
"ARROW_BOOST_URL=https://zvec-bj.oss-cn-beijing.aliyuncs.com/thirdparty/boost-1.88.0-cmake.tar.gz"
|
||||
"ARROW_RAPIDJSON_URL=https://zvec-bj.oss-cn-beijing.aliyuncs.com/thirdparty/rapidjson-232389d4f1012dddec4ef84861face2d2ba85709.tar.gz"
|
||||
"ARROW_RE2_URL=https://zvec-bj.oss-cn-beijing.aliyuncs.com/thirdparty/re2-2022-06-01.tar.gz"
|
||||
"ARROW_THRIFT_URL=https://zvec-bj.oss-cn-beijing.aliyuncs.com/thirdparty/thrift-0.22.0.tar.gz"
|
||||
"ARROW_UTF8PROC_URL=https://zvec-bj.oss-cn-beijing.aliyuncs.com/thirdparty/utf8proc-2.10.0.tar.gz"
|
||||
"ARROW_XSIMD_URL=https://zvec-bj.oss-cn-beijing.aliyuncs.com/thirdparty/xsimd-13.0.0.tar.gz"
|
||||
"ARROW_ZLIB_URL=https://zvec-bj.oss-cn-beijing.aliyuncs.com/thirdparty/zlib-1.3.1.tar.gz"
|
||||
)
|
||||
message(STATUS "Using OSS mirror for third-party downloads")
|
||||
endif()
|
||||
|
||||
# Propagate compiler launcher (ccache/sccache) to Arrow's ExternalProject
|
||||
set(_ARROW_COMPILER_LAUNCHER_ARGS "")
|
||||
if(CMAKE_C_COMPILER_LAUNCHER)
|
||||
set(_ARROW_COMPILER_LAUNCHER_ARGS
|
||||
-DCMAKE_C_COMPILER_LAUNCHER=${CMAKE_C_COMPILER_LAUNCHER}
|
||||
-DCMAKE_CXX_COMPILER_LAUNCHER=${CMAKE_CXX_COMPILER_LAUNCHER}
|
||||
)
|
||||
endif()
|
||||
|
||||
# Propagate compiler settings to Arrow's ExternalProject to ensure consistent
|
||||
# compiler and headers are used throughout the build. This prevents linker
|
||||
# errors like "multiple definition of std::placeholders::_1" when the system
|
||||
# has multiple GCC versions installed.
|
||||
# See: https://github.com/alibaba/zvec/issues/346
|
||||
set(_ARROW_COMPILER_ARGS
|
||||
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
|
||||
-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
|
||||
)
|
||||
|
||||
if(ANDROID)
|
||||
ExternalProject_Add(
|
||||
ARROW.BUILD PREFIX arrow
|
||||
SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/apache-arrow-21.0.0
|
||||
DOWNLOAD_COMMAND ""
|
||||
BUILD_IN_SOURCE false
|
||||
CONFIGURE_COMMAND env ${CONFIGURE_ENV_LIST} "${CMAKE_COMMAND}" ${CMAKE_CACHE_ARGS} ${_ARROW_COMPILER_LAUNCHER_ARGS} ${_ARROW_COMPILER_ARGS} -DCMAKE_BUILD_TYPE=${ARROW_CMAKE_BUILD_TYPE} -DCMAKE_DEBUG_POSTFIX= -DARROW_BUILD_SHARED=OFF -DARROW_ACERO=ON -DARROW_FILESYSTEM=ON -DARROW_DATASET=ON -DARROW_PARQUET=ON -DARROW_COMPUTE=ON -DARROW_WITH_ZLIB=OFF -DARROW_DEPENDENCY_SOURCE=BUNDLED -DARROW_MIMALLOC=OFF -DCMAKE_INSTALL_LIBDIR=lib -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE} -DANDROID_ABI=${ANDROID_ABI} -DANDROID_NATIVE_API_LEVEL=${ANDROID_NATIVE_API_LEVEL} -DARROW_WITH_MUSL=OFF "<SOURCE_DIR>/cpp"
|
||||
BUILD_COMMAND "${CMAKE_COMMAND}" --build . --target all -- -j ${NPROC}
|
||||
INSTALL_COMMAND "${CMAKE_COMMAND}" --install "<BINARY_DIR>" --prefix=${EXTERNAL_BINARY_DIR}/usr/local
|
||||
BYPRODUCTS ${LIB_PARQUET} ${LIB_ARROW} ${LIB_COMPUTE} ${LIB_ACERO} ${LIB_ARROW_DEPENDS} ${LIB_ARROW_DATASET}
|
||||
LOG_DOWNLOAD ON
|
||||
LOG_CONFIGURE ON
|
||||
LOG_BUILD ON
|
||||
LOG_INSTALL ON
|
||||
)
|
||||
elseif(IOS)
|
||||
# Determine ARROW_CPU_FLAG based on architecture
|
||||
if(CMAKE_OSX_ARCHITECTURES MATCHES "arm64")
|
||||
set(IOS_ARROW_CPU_FLAG "aarch64")
|
||||
elseif(CMAKE_OSX_ARCHITECTURES MATCHES "x86_64")
|
||||
set(IOS_ARROW_CPU_FLAG "x86")
|
||||
else()
|
||||
set(IOS_ARROW_CPU_FLAG "aarch64")
|
||||
endif()
|
||||
# Propagate deployment target to Arrow's bundled dependencies via env var.
|
||||
# Without this, sub-ExternalProjects (re2, utf8proc, etc.) pick up the SDK
|
||||
# version instead of the intended deployment target, causing linker warnings.
|
||||
set(_arrow_ios_env ${CONFIGURE_ENV_LIST} "IPHONEOS_DEPLOYMENT_TARGET=${CMAKE_OSX_DEPLOYMENT_TARGET}")
|
||||
ExternalProject_Add(
|
||||
ARROW.BUILD PREFIX arrow
|
||||
SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/apache-arrow-21.0.0
|
||||
DOWNLOAD_COMMAND ""
|
||||
BUILD_IN_SOURCE false
|
||||
CONFIGURE_COMMAND env ${_arrow_ios_env} "${CMAKE_COMMAND}" ${CMAKE_CACHE_ARGS} ${_ARROW_COMPILER_LAUNCHER_ARGS} ${_ARROW_COMPILER_ARGS} -DCMAKE_BUILD_TYPE=${ARROW_CMAKE_BUILD_TYPE} -DCMAKE_DEBUG_POSTFIX= -DARROW_BUILD_SHARED=OFF -DARROW_ACERO=ON -DARROW_FILESYSTEM=ON -DARROW_DATASET=ON -DARROW_PARQUET=ON -DARROW_COMPUTE=ON -DARROW_WITH_ZLIB=OFF -DARROW_DEPENDENCY_SOURCE=BUNDLED -DARROW_MIMALLOC=OFF -DCMAKE_INSTALL_LIBDIR=lib -DCMAKE_SYSTEM_NAME=iOS -DCMAKE_OSX_DEPLOYMENT_TARGET=${CMAKE_OSX_DEPLOYMENT_TARGET} -DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES} -DCMAKE_OSX_SYSROOT=${CMAKE_OSX_SYSROOT} -DARROW_CPU_FLAG=${IOS_ARROW_CPU_FLAG} "<SOURCE_DIR>/cpp"
|
||||
BUILD_COMMAND env "IPHONEOS_DEPLOYMENT_TARGET=${CMAKE_OSX_DEPLOYMENT_TARGET}" "${CMAKE_COMMAND}" --build . --target all -- -j ${NPROC}
|
||||
INSTALL_COMMAND "${CMAKE_COMMAND}" --install "<BINARY_DIR>" --prefix=${EXTERNAL_BINARY_DIR}/usr/local
|
||||
BYPRODUCTS ${LIB_PARQUET} ${LIB_ARROW} ${LIB_COMPUTE} ${LIB_ACERO} ${LIB_ARROW_DEPENDS} ${LIB_ARROW_DATASET}
|
||||
LOG_DOWNLOAD ON
|
||||
LOG_CONFIGURE ON
|
||||
LOG_BUILD ON
|
||||
LOG_INSTALL ON
|
||||
)
|
||||
elseif (MSVC)
|
||||
if(ZVEC_USE_STATIC_CRT)
|
||||
set(_ARROW_CRT_FLAG "/MT")
|
||||
set(_ARROW_MSVC_RUNTIME "MultiThreaded$<$<CONFIG:Debug>:Debug>")
|
||||
else()
|
||||
set(_ARROW_CRT_FLAG "/MD")
|
||||
set(_ARROW_MSVC_RUNTIME "MultiThreadedDLL$<$<CONFIG:Debug>:Debug>")
|
||||
endif()
|
||||
set(ARROW_EXTRA_CMAKE_ARGS
|
||||
"-DCMAKE_C_FLAGS=${_ARROW_CRT_FLAG}"
|
||||
"-DCMAKE_CXX_FLAGS=${_ARROW_CRT_FLAG}"
|
||||
-DARROW_USE_STATIC_CRT=${ZVEC_USE_STATIC_CRT}
|
||||
"-DCMAKE_MSVC_RUNTIME_LIBRARY=${_ARROW_MSVC_RUNTIME}"
|
||||
)
|
||||
ExternalProject_Add(
|
||||
ARROW.BUILD PREFIX arrow
|
||||
SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/apache-arrow-21.0.0
|
||||
DOWNLOAD_COMMAND ""
|
||||
BUILD_IN_SOURCE false
|
||||
CONFIGURE_COMMAND "${CMAKE_COMMAND}" -E env ${CONFIGURE_ENV_LIST} "${CMAKE_COMMAND}" ${CMAKE_CACHE_ARGS} ${ARROW_EXTRA_CMAKE_ARGS} ${_ARROW_COMPILER_LAUNCHER_ARGS} ${_ARROW_COMPILER_ARGS} -DCMAKE_BUILD_TYPE=$<CONFIG> -DCMAKE_DEBUG_POSTFIX= -DARROW_BUILD_SHARED=OFF -DARROW_ACERO=ON -DARROW_FILESYSTEM=ON -DARROW_DATASET=ON -DARROW_PARQUET=ON -DARROW_COMPUTE=ON -DARROW_WITH_ZLIB=OFF -DARROW_DEPENDENCY_SOURCE=BUNDLED -DARROW_MIMALLOC=OFF -DCMAKE_INSTALL_LIBDIR=lib "<SOURCE_DIR>/cpp"
|
||||
BUILD_COMMAND "${CMAKE_COMMAND}" --build . -j ${NPROC} --config $<CONFIG>
|
||||
INSTALL_COMMAND "${CMAKE_COMMAND}" --install "<BINARY_DIR>" --prefix=${EXTERNAL_BINARY_DIR}/usr/local --config $<CONFIG>
|
||||
BYPRODUCTS ${LIB_PARQUET} ${LIB_ARROW} ${LIB_COMPUTE} ${LIB_ACERO} ${LIB_ARROW_DEPENDS} ${LIB_ARROW_DATASET}
|
||||
LOG_DOWNLOAD ON
|
||||
LOG_CONFIGURE ON
|
||||
LOG_BUILD ON
|
||||
LOG_INSTALL ON
|
||||
)
|
||||
else ()
|
||||
ExternalProject_Add(
|
||||
ARROW.BUILD PREFIX arrow
|
||||
SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/apache-arrow-21.0.0
|
||||
DOWNLOAD_COMMAND ""
|
||||
BUILD_IN_SOURCE false
|
||||
CONFIGURE_COMMAND env ${CONFIGURE_ENV_LIST} "${CMAKE_COMMAND}" ${CMAKE_CACHE_ARGS} ${_ARROW_COMPILER_LAUNCHER_ARGS} ${_ARROW_COMPILER_ARGS} -DCMAKE_BUILD_TYPE=${ARROW_CMAKE_BUILD_TYPE} -DCMAKE_DEBUG_POSTFIX= -DARROW_BUILD_SHARED=OFF -DARROW_ACERO=ON -DARROW_FILESYSTEM=ON -DARROW_DATASET=ON -DARROW_PARQUET=ON -DARROW_COMPUTE=ON -DARROW_WITH_ZLIB=OFF -DARROW_DEPENDENCY_SOURCE=BUNDLED -DARROW_MIMALLOC=OFF -DCMAKE_INSTALL_LIBDIR=lib "<SOURCE_DIR>/cpp"
|
||||
BUILD_COMMAND "${CMAKE_COMMAND}" --build . --target all -- -j ${NPROC}
|
||||
INSTALL_COMMAND "${CMAKE_COMMAND}" --install "<BINARY_DIR>" --prefix=${EXTERNAL_BINARY_DIR}/usr/local
|
||||
BYPRODUCTS ${LIB_PARQUET} ${LIB_ARROW} ${LIB_COMPUTE} ${LIB_ACERO} ${LIB_ARROW_DEPENDS} ${LIB_ARROW_DATASET}
|
||||
LOG_DOWNLOAD ON
|
||||
LOG_CONFIGURE ON
|
||||
LOG_BUILD ON
|
||||
LOG_INSTALL ON
|
||||
)
|
||||
endif()
|
||||
|
||||
add_library(arrow UNKNOWN IMPORTED GLOBAL)
|
||||
add_dependencies(arrow ARROW.BUILD)
|
||||
|
||||
set(Arrow_FOUND TRUE PARENT_SCOPE)
|
||||
set(Arrow_INCLUDE_DIR ${EXTERNAL_INC_DIR} PARENT_SCOPE)
|
||||
set(Arrow_LIBRARIES ${LIB_ARROW} PARENT_SCOPE)
|
||||
set(Arrow_DIR ${EXTERNAL_BINARY_DIR} PARENT_SCOPE)
|
||||
set(Arrow_LIBRARY_DIR ${EXTERNAL_BINARY_DIR} PARENT_SCOPE)
|
||||
|
||||
add_library(Arrow::arrow_depends UNKNOWN IMPORTED GLOBAL)
|
||||
set_target_properties(
|
||||
Arrow::arrow_depends PROPERTIES
|
||||
INTERFACE_INCLUDE_DIRECTORIES ${EXTERNAL_INC_DIR}
|
||||
INTERFACE_SYSTEM_INCLUDE_DIRECTORIES ${EXTERNAL_INC_DIR}
|
||||
IMPORTED_LOCATION "${LIB_ARROW_DEPENDS}"
|
||||
)
|
||||
add_dependencies(Arrow::arrow_depends ARROW.BUILD)
|
||||
|
||||
|
||||
add_library(Arrow::arrow_static UNKNOWN IMPORTED GLOBAL)
|
||||
set_target_properties(
|
||||
Arrow::arrow_static PROPERTIES
|
||||
INTERFACE_INCLUDE_DIRECTORIES ${EXTERNAL_INC_DIR}
|
||||
INTERFACE_SYSTEM_INCLUDE_DIRECTORIES ${EXTERNAL_INC_DIR}
|
||||
IMPORTED_LOCATION "${LIB_ARROW}"
|
||||
INTERFACE_LINK_LIBRARIES "Arrow::arrow_depends"
|
||||
INTERFACE_COMPILE_DEFINITIONS "ARROW_STATIC" #TODO(windows): see if this can be removed
|
||||
)
|
||||
add_dependencies(Arrow::arrow_static ARROW.BUILD)
|
||||
|
||||
add_library(Arrow::parquet_static UNKNOWN IMPORTED GLOBAL)
|
||||
set_target_properties(
|
||||
Arrow::parquet_static PROPERTIES
|
||||
INTERFACE_INCLUDE_DIRECTORIES ${EXTERNAL_INC_DIR}
|
||||
INTERFACE_SYSTEM_INCLUDE_DIRECTORIES ${EXTERNAL_INC_DIR}
|
||||
IMPORTED_LOCATION "${LIB_PARQUET}"
|
||||
INTERFACE_LINK_LIBRARIES "Arrow::arrow_depends;Arrow::arrow_static"
|
||||
INTERFACE_COMPILE_DEFINITIONS "PARQUET_STATIC"
|
||||
)
|
||||
add_dependencies(Arrow::parquet_static ARROW.BUILD)
|
||||
|
||||
add_library(Arrow::arrow_compute UNKNOWN IMPORTED GLOBAL)
|
||||
set_target_properties(
|
||||
Arrow::arrow_compute PROPERTIES
|
||||
INTERFACE_INCLUDE_DIRECTORIES ${EXTERNAL_INC_DIR}
|
||||
INTERFACE_SYSTEM_INCLUDE_DIRECTORIES ${EXTERNAL_INC_DIR}
|
||||
IMPORTED_LOCATION "${LIB_COMPUTE}"
|
||||
INTERFACE_LINK_LIBRARIES "Arrow::arrow_depends;Arrow::arrow_static"
|
||||
INTERFACE_COMPILE_DEFINITIONS "ARROW_COMPUTE_STATIC"
|
||||
)
|
||||
add_dependencies(Arrow::arrow_compute ARROW.BUILD)
|
||||
|
||||
add_library(Arrow::arrow_acero UNKNOWN IMPORTED GLOBAL)
|
||||
set_target_properties(
|
||||
Arrow::arrow_acero PROPERTIES
|
||||
INTERFACE_INCLUDE_DIRECTORIES ${EXTERNAL_INC_DIR}
|
||||
INTERFACE_SYSTEM_INCLUDE_DIRECTORIES ${EXTERNAL_INC_DIR}
|
||||
IMPORTED_LOCATION "${LIB_ACERO}"
|
||||
INTERFACE_LINK_LIBRARIES "Arrow::arrow_depends;Arrow::arrow_static;Arrow::arrow_compute"
|
||||
INTERFACE_COMPILE_DEFINITIONS "ARROW_ACERO_STATIC"
|
||||
)
|
||||
add_dependencies(Arrow::arrow_acero ARROW.BUILD)
|
||||
|
||||
add_library(Arrow::arrow_dataset UNKNOWN IMPORTED GLOBAL)
|
||||
set_target_properties(
|
||||
Arrow::arrow_dataset PROPERTIES
|
||||
INTERFACE_INCLUDE_DIRECTORIES ${EXTERNAL_INC_DIR}
|
||||
INTERFACE_SYSTEM_INCLUDE_DIRECTORIES ${EXTERNAL_INC_DIR}
|
||||
IMPORTED_LOCATION "${LIB_ARROW_DATASET}"
|
||||
INTERFACE_LINK_LIBRARIES "Arrow::arrow_depends;Arrow::arrow_static;Arrow::arrow_compute;Arrow::arrow_acero"
|
||||
INTERFACE_COMPILE_DEFINITIONS "ARROW_DS_STATIC"
|
||||
)
|
||||
add_dependencies(Arrow::arrow_dataset ARROW.BUILD)
|
||||
Vendored
+82
@@ -0,0 +1,82 @@
|
||||
diff --git a/cpp/cmake_modules/ThirdpartyToolchain.cmake b/cpp/cmake_modules/ThirdpartyToolchain.cmake
|
||||
index 7fa4b66d4b..78bcb6d47e 100644
|
||||
--- a/cpp/cmake_modules/ThirdpartyToolchain.cmake
|
||||
+++ b/cpp/cmake_modules/ThirdpartyToolchain.cmake
|
||||
@@ -950,6 +950,13 @@ set(EP_COMMON_CMAKE_ARGS
|
||||
# https://github.com/apache/arrow/issues/45985
|
||||
-DCMAKE_POLICY_VERSION_MINIMUM=3.5)
|
||||
|
||||
+if(ANDROID)
|
||||
+ list(APPEND EP_COMMON_CMAKE_ARGS
|
||||
+ -DANDROID_ABI=${ANDROID_ABI}
|
||||
+ -DANDROID_NATIVE_API_LEVEL=${ANDROID_NATIVE_API_LEVEL}
|
||||
+ -DANDROID_NDK=${ANDROID_NDK})
|
||||
+endif()
|
||||
+
|
||||
# if building with a toolchain file, pass that through
|
||||
if(CMAKE_TOOLCHAIN_FILE)
|
||||
list(APPEND EP_COMMON_CMAKE_ARGS -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE})
|
||||
diff --git a/cpp/src/arrow/acero/source_node.cc b/cpp/src/arrow/acero/source_node.cc
|
||||
index 0f58406760..cf68bfdcbe 100644
|
||||
--- a/cpp/src/arrow/acero/source_node.cc
|
||||
+++ b/cpp/src/arrow/acero/source_node.cc
|
||||
@@ -407,7 +407,7 @@ struct SchemaSourceNode : public SourceNode {
|
||||
struct RecordBatchReaderSourceNode : public SourceNode {
|
||||
RecordBatchReaderSourceNode(ExecPlan* plan, std::shared_ptr<Schema> schema,
|
||||
arrow::AsyncGenerator<std::optional<ExecBatch>> generator)
|
||||
- : SourceNode(plan, schema, generator) {}
|
||||
+ : SourceNode(plan, schema, generator, Ordering::Implicit()) {}
|
||||
|
||||
static Result<ExecNode*> Make(ExecPlan* plan, std::vector<ExecNode*> inputs,
|
||||
const ExecNodeOptions& options) {
|
||||
diff --git a/cpp/src/arrow/vendored/datetime/tz.cpp b/cpp/src/arrow/vendored/datetime/tz.cpp
|
||||
index 2cf6c62a84..9e64b62297 100644
|
||||
--- a/cpp/src/arrow/vendored/datetime/tz.cpp
|
||||
+++ b/cpp/src/arrow/vendored/datetime/tz.cpp
|
||||
@@ -605,7 +605,9 @@ tzdb_list
|
||||
create_tzdb()
|
||||
{
|
||||
tzdb_list tz_db;
|
||||
+#if !defined(ANDROID) && !defined(__ANDROID__)
|
||||
tzdb_list::undocumented_helper::push_front(tz_db, init_tzdb().release());
|
||||
+#endif // !defined(ANDROID) && !defined(__ANDROID__)
|
||||
return tz_db;
|
||||
}
|
||||
|
||||
@@ -3900,7 +3902,9 @@ reload_tzdb()
|
||||
if (!v.empty() && v == remote_version())
|
||||
return get_tzdb_list().front();
|
||||
#endif // AUTO_DOWNLOAD
|
||||
+#if !defined(ANDROID) && !defined(__ANDROID__)
|
||||
tzdb_list::undocumented_helper::push_front(get_tzdb_list(), init_tzdb().release());
|
||||
+#endif // !defined(ANDROID) && !defined(__ANDROID__)
|
||||
return get_tzdb_list().front();
|
||||
}
|
||||
|
||||
diff --git a/cpp/src/arrow/vendored/datetime/tz.h b/cpp/src/arrow/vendored/datetime/tz.h
|
||||
index 61ab3df106..d456d6765f 100644
|
||||
--- a/cpp/src/arrow/vendored/datetime/tz.h
|
||||
+++ b/cpp/src/arrow/vendored/datetime/tz.h
|
||||
@@ -858,7 +858,9 @@ private:
|
||||
load_data(std::istream& inf, std::int32_t tzh_leapcnt, std::int32_t tzh_timecnt,
|
||||
std::int32_t tzh_typecnt, std::int32_t tzh_charcnt);
|
||||
# if defined(ANDROID) || defined(__ANDROID__)
|
||||
+public:
|
||||
void parse_from_android_tzdata(std::ifstream& inf, const std::size_t off);
|
||||
+private:
|
||||
# endif // defined(ANDROID) || defined(__ANDROID__)
|
||||
#else // !USE_OS_TZDB
|
||||
DATE_API sys_info get_info_impl(sys_seconds tp, int tz_int) const;
|
||||
diff --git a/cpp/src/arrow/vendored/musl/strptime.c b/cpp/src/arrow/vendored/musl/strptime.c
|
||||
index 41912fd1bb..9d0b4dc1bf 100644
|
||||
--- a/cpp/src/arrow/vendored/musl/strptime.c
|
||||
+++ b/cpp/src/arrow/vendored/musl/strptime.c
|
||||
@@ -17,7 +17,7 @@
|
||||
|
||||
#undef HAVE_LANGINFO
|
||||
|
||||
-#ifndef _WIN32
|
||||
+#if !defined(_WIN32) && !defined(__ANDROID__)
|
||||
#define HAVE_LANGINFO 1
|
||||
#endif
|
||||
|
||||
Vendored
+39
@@ -0,0 +1,39 @@
|
||||
diff --git a/cpp/src/arrow/CMakeLists.txt b/cpp/src/arrow/CMakeLists.txt
|
||||
index 1234567..abcdefg 100644
|
||||
--- a/cpp/src/arrow/CMakeLists.txt
|
||||
+++ b/cpp/src/arrow/CMakeLists.txt
|
||||
@@ -173,7 +173,7 @@ list(APPEND ARROW_STATIC_INSTALL_INTERFACE_LIBS ${ARROW_SYSTEM_LINK_LIBS})
|
||||
|
||||
# Need -latomic on Raspbian.
|
||||
# See also: https://issues.apache.org/jira/browse/ARROW-12860
|
||||
-if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux" AND ${CMAKE_SYSTEM_PROCESSOR} MATCHES "armv7")
|
||||
+if("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux" AND "${CMAKE_SYSTEM_PROCESSOR}" MATCHES "armv7")
|
||||
string(APPEND ARROW_PC_LIBS_PRIVATE " -latomic")
|
||||
list(APPEND ARROW_SHARED_INSTALL_INTERFACE_LIBS "atomic")
|
||||
list(APPEND ARROW_STATIC_INSTALL_INTERFACE_LIBS "atomic")
|
||||
diff --git a/cpp/src/arrow/acero/source_node.cc b/cpp/src/arrow/acero/source_node.cc
|
||||
index 0f5840676..cf68bfdcb 100644
|
||||
--- a/cpp/src/arrow/acero/source_node.cc
|
||||
+++ b/cpp/src/arrow/acero/source_node.cc
|
||||
@@ -407,7 +407,7 @@ struct SchemaSourceNode : public SourceNode {
|
||||
struct RecordBatchReaderSourceNode : public SourceNode {
|
||||
RecordBatchReaderSourceNode(ExecPlan* plan, std::shared_ptr<Schema> schema,
|
||||
arrow::AsyncGenerator<std::optional<ExecBatch>> generator)
|
||||
- : SourceNode(plan, schema, generator) {}
|
||||
+ : SourceNode(plan, schema, generator, Ordering::Implicit()) {}
|
||||
|
||||
static Result<ExecNode*> Make(ExecPlan* plan, std::vector<ExecNode*> inputs,
|
||||
const ExecNodeOptions& options) {
|
||||
diff --git a/cpp/cmake_modules/BuildUtils.cmake b/cpp/cmake_modules/BuildUtils.cmake
|
||||
index 1234567..abcdefg 100644
|
||||
--- a/cpp/cmake_modules/BuildUtils.cmake
|
||||
+++ b/cpp/cmake_modules/BuildUtils.cmake
|
||||
@@ -110,7 +110,7 @@
|
||||
execute_process(COMMAND ${LIBTOOL_MACOS} -V
|
||||
OUTPUT_VARIABLE LIBTOOL_V_OUTPUT
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
- if(NOT "${LIBTOOL_V_OUTPUT}" MATCHES ".*cctools-([0-9.]+).*")
|
||||
+ if(NOT "${LIBTOOL_V_OUTPUT}" MATCHES ".*cctools[-_a-z]*([0-9.]+).*")
|
||||
message(FATAL_ERROR "libtool found appears not to be Apple's libtool: ${LIBTOOL_MACOS}"
|
||||
)
|
||||
endif()
|
||||
Vendored
+26
@@ -0,0 +1,26 @@
|
||||
diff --git a/cpp/cmake_modules/BuildUtils.cmake b/cpp/cmake_modules/BuildUtils.cmake
|
||||
index 1234567..abcdefg 100644
|
||||
--- a/cpp/cmake_modules/BuildUtils.cmake
|
||||
+++ b/cpp/cmake_modules/BuildUtils.cmake
|
||||
@@ -110,7 +110,7 @@
|
||||
execute_process(COMMAND ${LIBTOOL_MACOS} -V
|
||||
OUTPUT_VARIABLE LIBTOOL_V_OUTPUT
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
- if(NOT "${LIBTOOL_V_OUTPUT}" MATCHES ".*cctools-([0-9.]+).*")
|
||||
+ if(NOT "${LIBTOOL_V_OUTPUT}" MATCHES ".*cctools[-_a-z]*([0-9.]+).*")
|
||||
message(FATAL_ERROR "libtool found appears not to be Apple's libtool: ${LIBTOOL_MACOS}"
|
||||
)
|
||||
endif()
|
||||
diff --git a/cpp/src/arrow/acero/source_node.cc b/cpp/src/arrow/acero/source_node.cc
|
||||
index 0f5840676..cf68bfdcb 100644
|
||||
--- a/cpp/src/arrow/acero/source_node.cc
|
||||
+++ b/cpp/src/arrow/acero/source_node.cc
|
||||
@@ -407,7 +407,7 @@ struct SchemaSourceNode : public SourceNode {
|
||||
struct RecordBatchReaderSourceNode : public SourceNode {
|
||||
RecordBatchReaderSourceNode(ExecPlan* plan, std::shared_ptr<Schema> schema,
|
||||
arrow::AsyncGenerator<std::optional<ExecBatch>> generator)
|
||||
- : SourceNode(plan, schema, generator) {}
|
||||
+ : SourceNode(plan, schema, generator, Ordering::Implicit()) {}
|
||||
|
||||
static Result<ExecNode*> Make(ExecPlan* plan, std::vector<ExecNode*> inputs,
|
||||
const ExecNodeOptions& options) {
|
||||
Vendored
+25
@@ -0,0 +1,25 @@
|
||||
diff --git a/cpp/cmake_modules/ThirdpartyToolchain.cmake b/cpp/cmake_modules/ThirdpartyToolchain.cmake
|
||||
--- a/cpp/cmake_modules/ThirdpartyToolchain.cmake
|
||||
+++ b/cpp/cmake_modules/ThirdpartyToolchain.cmake
|
||||
@@ -862,10 +862,18 @@
|
||||
foreach(CONFIG DEBUG MINSIZEREL RELEASE RELWITHDEBINFO)
|
||||
set(EP_CXX_FLAGS_${CONFIG} "${CMAKE_CXX_FLAGS_${CONFIG}}")
|
||||
set(EP_C_FLAGS_${CONFIG} "${CMAKE_C_FLAGS_${CONFIG}}")
|
||||
- if(CONFIG STREQUAL DEBUG)
|
||||
- set(EP_MSVC_RUNTIME_LIBRARY MultiThreadedDebugDLL)
|
||||
+ if(ARROW_USE_STATIC_CRT)
|
||||
+ if(CONFIG STREQUAL DEBUG)
|
||||
+ set(EP_MSVC_RUNTIME_LIBRARY MultiThreadedDebug)
|
||||
+ else()
|
||||
+ set(EP_MSVC_RUNTIME_LIBRARY MultiThreaded)
|
||||
+ endif()
|
||||
else()
|
||||
- set(EP_MSVC_RUNTIME_LIBRARY MultiThreadedDLL)
|
||||
+ if(CONFIG STREQUAL DEBUG)
|
||||
+ set(EP_MSVC_RUNTIME_LIBRARY MultiThreadedDebugDLL)
|
||||
+ else()
|
||||
+ set(EP_MSVC_RUNTIME_LIBRARY MultiThreadedDLL)
|
||||
+ endif()
|
||||
endif()
|
||||
string(APPEND EP_CXX_FLAGS_${CONFIG}
|
||||
" ${CMAKE_CXX_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_${EP_MSVC_RUNTIME_LIBRARY}}")
|
||||
Vendored
+17
@@ -0,0 +1,17 @@
|
||||
set(cppjieba_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/cppjieba-5.6.7")
|
||||
|
||||
if(NOT TARGET cppjieba)
|
||||
add_library(cppjieba INTERFACE)
|
||||
target_include_directories(cppjieba SYSTEM INTERFACE
|
||||
${cppjieba_SOURCE_DIR}/include
|
||||
)
|
||||
target_link_libraries(cppjieba INTERFACE limonp)
|
||||
endif()
|
||||
|
||||
set(cppjieba_FOUND TRUE PARENT_SCOPE)
|
||||
set(cppjieba_INCLUDE_DIR ${cppjieba_SOURCE_DIR}/include PARENT_SCOPE)
|
||||
set(cppjieba_INCLUDE_DIRS
|
||||
${cppjieba_SOURCE_DIR}/include
|
||||
${limonp_INCLUDE_DIR}
|
||||
PARENT_SCOPE)
|
||||
set(cppjieba_DICT_DIR ${cppjieba_SOURCE_DIR}/dict PARENT_SCOPE)
|
||||
Vendored
+57
@@ -0,0 +1,57 @@
|
||||
set(BUILD_TESTING OFF CACHE BOOL "Disable Unit Tests" FORCE)
|
||||
set(GFLAGS_BUILD_TESTING OFF CACHE BOOL "Disable unittest in gflags" FORCE)
|
||||
if(NOT BUILD_SHARED_LIBS)
|
||||
set(GFLAGS_BUILD_SHARED_LIBS OFF)
|
||||
set(GFLAGS_BUILD_STATIC_LIBS ON)
|
||||
else()
|
||||
set(GFLAGS_BUILD_SHARED_LIBS ON)
|
||||
set(GFLAGS_BUILD_STATIC_LIBS OFF)
|
||||
endif()
|
||||
|
||||
set(GFLAGS_IS_SUBPROJECT ON)
|
||||
set(_SAVED_CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_ARCHIVE_OUTPUT_DIRECTORY})
|
||||
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${EXTERNAL_LIB_DIR})
|
||||
add_subdirectory(gflags-2.2.2)
|
||||
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${_SAVED_CMAKE_ARCHIVE_OUTPUT_DIRECTORY})
|
||||
unset(_SAVED_CMAKE_ARCHIVE_OUTPUT_DIRECTORY)
|
||||
|
||||
mark_target_includes_system(gflags gflags_static gflags_nothreads_static)
|
||||
|
||||
get_target_property(gflags_OUTPUT_NAME gflags OUTPUT_NAME)
|
||||
get_target_property(gflags_BINARY_DIR gflags BINARY_DIR)
|
||||
get_target_property(gflags_SOURCE_DIR gflags SOURCE_DIR)
|
||||
get_target_property(gflags_PREFIX gflags PREFIX)
|
||||
get_target_property(gflags_SUFFIX gflags SUFFIX)
|
||||
|
||||
set(gflags_OUTPUT_DIR ${gflags_BINARY_DIR})
|
||||
if(NOT BUILD_SHARED_LIBS)
|
||||
if (NOT gflags_PREFIX)
|
||||
set(gflags_PREFIX ${CMAKE_STATIC_LIBRARY_PREFIX})
|
||||
endif()
|
||||
if (NOT gflags_SUFFIX)
|
||||
set(gflags_SUFFIX ${CMAKE_STATIC_LIBRARY_SUFFIX})
|
||||
endif()
|
||||
if(CMAKE_ARCHIVE_OUTPUT_DIRECTORY)
|
||||
set(gflags_OUTPUT_DIR ${CMAKE_ARCHIVE_OUTPUT_DIRECTORY})
|
||||
endif()
|
||||
else()
|
||||
if (NOT gflags_PREFIX)
|
||||
set(gflags_PREFIX ${CMAKE_SHARED_LIBRARY_PREFIX})
|
||||
endif()
|
||||
if (NOT gflags_SUFFIX)
|
||||
set(gflags_SUFFIX ${CMAKE_SHARED_LIBRARY_SUFFIX})
|
||||
endif()
|
||||
if(CMAKE_LIBRARY_OUTPUT_DIRECTORY)
|
||||
set(gflags_OUTPUT_DIR ${CMAKE_LIBRARY_OUTPUT_DIRECTORY})
|
||||
endif()
|
||||
endif()
|
||||
|
||||
set(gflags_FOUND TRUE PARENT_SCOPE)
|
||||
set(gflags_INCLUDE_DIR ${gflags_BINARY_DIR}/include PARENT_SCOPE)
|
||||
set(gflags_LIBRARIES ${gflags_OUTPUT_DIR}/${gflags_PREFIX}${gflags_OUTPUT_NAME}${gflags_SUFFIX} PARENT_SCOPE)
|
||||
set(gflags_DIR ${gflags_BINARY_DIR} PARENT_SCOPE)
|
||||
|
||||
set(GFLAGS_FOUND TRUE PARENT_SCOPE)
|
||||
set(GFLAGS_INCLUDE_DIR ${gflags_BINARY_DIR}/include PARENT_SCOPE)
|
||||
set(GFLAGS_LIBRARIES ${gflags_OUTPUT_DIR}/${gflags_PREFIX}${gflags_OUTPUT_NAME}${gflags_SUFFIX} PARENT_SCOPE)
|
||||
set(GFLAGS_DIR ${gflags_BINARY_DIR} PARENT_SCOPE)
|
||||
Vendored
+48
@@ -0,0 +1,48 @@
|
||||
set(BUILD_TESTING OFF CACHE BOOL "Disable Unit Tests" FORCE)
|
||||
set(WITH_GFLAGS OFF CACHE BOOL "Disable find_package(gflags) in glog" FORCE)
|
||||
set(WITH_UNWIND OFF CACHE BOOL "Disable find_package(unwind) in glog" FORCE)
|
||||
set(HAVE_LIB_GFLAGS TRUE CACHE BOOL "")
|
||||
|
||||
if(NOT MSVC)
|
||||
add_compile_options(-Wno-deprecated-declarations)
|
||||
endif()
|
||||
|
||||
set(GLOG_SRC_DIR ${CMAKE_CURRENT_SOURCE_DIR}/glog-0.5.0)
|
||||
if (ANDROID)
|
||||
set(GLOG_ANDROID_PATCH ${CMAKE_CURRENT_SOURCE_DIR}/glog.android.patch)
|
||||
apply_patch_once("glog_android_fix" "${GLOG_SRC_DIR}" "${GLOG_ANDROID_PATCH}")
|
||||
else()
|
||||
set(GLOG_PATCH ${CMAKE_CURRENT_SOURCE_DIR}/glog.patch)
|
||||
apply_patch_once("glog_fix" "${GLOG_SRC_DIR}" "${GLOG_PATCH}")
|
||||
endif()
|
||||
|
||||
set(_SAVED_CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_ARCHIVE_OUTPUT_DIRECTORY})
|
||||
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${EXTERNAL_LIB_DIR})
|
||||
add_subdirectory(glog-0.5.0)
|
||||
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${_SAVED_CMAKE_ARCHIVE_OUTPUT_DIRECTORY})
|
||||
unset(_SAVED_CMAKE_ARCHIVE_OUTPUT_DIRECTORY)
|
||||
|
||||
add_dependencies(glog gflags)
|
||||
|
||||
mark_target_includes_system(glog)
|
||||
|
||||
if(MSVC)
|
||||
# Modern MSVC (1900+/VS2015+) provides snprintf in the CRT.
|
||||
# Suppress glog's own declaration which conflicts with the SDK header.
|
||||
target_compile_definitions(glog PRIVATE HAVE_SNPRINTF)
|
||||
endif()
|
||||
|
||||
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
|
||||
target_compile_options(glog PRIVATE -Wno-sign-compare)
|
||||
endif()
|
||||
|
||||
get_target_property(glog_BINARY_DIR glog BINARY_DIR)
|
||||
get_target_property(glog_SOURCE_DIR glog SOURCE_DIR)
|
||||
# get_target_property(GLOG_INCLUDE_DIRS glog INTERFACE_INCLUDE_DIRECTORIES)
|
||||
|
||||
set(GLOG_INCLUDE_DIRS ${glog_BINARY_DIR} ${glog_SOURCE_DIR}/src)
|
||||
set(GLOG_FOUND TRUE PARENT_SCOPE)
|
||||
set(GLOG_INCLUDE_DIR ${GLOG_INCLUDE_DIRS} PARENT_SCOPE)
|
||||
set(GLOG_INCLUDE_DIRS ${GLOG_INCLUDE_DIRS} PARENT_SCOPE)
|
||||
set(GLOG_LIBRARY $<TARGET_FILE:glog> PARENT_SCOPE)
|
||||
set(GLOG_LIBRARIES $<TARGET_FILE:glog> PARENT_SCOPE)
|
||||
Vendored
+78
@@ -0,0 +1,78 @@
|
||||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||
index 62ebbcc..e17f67e 100644
|
||||
--- a/CMakeLists.txt
|
||||
+++ b/CMakeLists.txt
|
||||
@@ -17,7 +17,7 @@ set (CPACK_PACKAGE_VERSION_MINOR ${PROJECT_VERSION_MINOR})
|
||||
set (CPACK_PACKAGE_VERSION_PATCH ${PROJECT_VERSION_PATCH})
|
||||
set (CPACK_PACKAGE_VERSION ${PROJECT_VERSION})
|
||||
|
||||
-option (BUILD_SHARED_LIBS "Build shared libraries" ON)
|
||||
+option (BUILD_STATIC_LIBS "Build shared libraries" ON)
|
||||
option (PRINT_UNSYMBOLIZED_STACK_TRACES
|
||||
"Print file offsets in traces instead of symbolizing" OFF)
|
||||
option (WITH_CUSTOM_PREFIX "Enable support for user-generated message prefixes" OFF)
|
||||
@@ -802,12 +802,12 @@ if (BUILD_TESTING)
|
||||
FIXTURES_REQUIRED "cmake_package_config;cmake_package_config_working")
|
||||
endif (BUILD_TESTING)
|
||||
|
||||
-install (TARGETS glog
|
||||
- EXPORT glog-targets
|
||||
- RUNTIME DESTINATION ${_glog_CMake_BINDIR}
|
||||
- PUBLIC_HEADER DESTINATION ${_glog_CMake_INCLUDE_DIR}/glog
|
||||
- LIBRARY DESTINATION ${_glog_CMake_LIBDIR}
|
||||
- ARCHIVE DESTINATION ${_glog_CMake_LIBDIR})
|
||||
+#install (TARGETS glog
|
||||
+# EXPORT glog-targets
|
||||
+# RUNTIME DESTINATION ${_glog_CMake_BINDIR}
|
||||
+# PUBLIC_HEADER DESTINATION ${_glog_CMake_INCLUDE_DIR}/glog
|
||||
+# LIBRARY DESTINATION ${_glog_CMake_LIBDIR}
|
||||
+# ARCHIVE DESTINATION ${_glog_CMake_LIBDIR})
|
||||
|
||||
if (WITH_PKGCONFIG)
|
||||
install (
|
||||
@@ -840,8 +840,8 @@ write_basic_package_version_file (
|
||||
${CMAKE_CURRENT_BINARY_DIR}/glog-config-version.cmake
|
||||
COMPATIBILITY SameMajorVersion)
|
||||
|
||||
-export (TARGETS glog NAMESPACE glog:: FILE glog-targets.cmake)
|
||||
-export (PACKAGE glog)
|
||||
+#export (TARGETS glog NAMESPACE glog:: FILE glog-targets.cmake)
|
||||
+#export (PACKAGE glog)
|
||||
|
||||
get_filename_component (_PREFIX "${CMAKE_INSTALL_PREFIX}" ABSOLUTE)
|
||||
|
||||
@@ -885,5 +885,5 @@ install (DIRECTORY ${_glog_BINARY_CMake_DATADIR}
|
||||
FILES_MATCHING PATTERN "*.cmake"
|
||||
)
|
||||
|
||||
-install (EXPORT glog-targets NAMESPACE glog:: DESTINATION
|
||||
- ${_glog_CMake_INSTALLDIR})
|
||||
+#install (EXPORT glog-targets NAMESPACE glog:: DESTINATION
|
||||
+# ${_glog_CMake_INSTALLDIR})
|
||||
diff --git a/src/stacktrace_generic-inl.h b/src/stacktrace_generic-inl.h
|
||||
index fad81d3..67209ac 100644
|
||||
--- a/src/stacktrace_generic-inl.h
|
||||
+++ b/src/stacktrace_generic-inl.h
|
||||
@@ -39,21 +39,7 @@ _START_GOOGLE_NAMESPACE_
|
||||
|
||||
// If you change this function, also change GetStackFrames below.
|
||||
int GetStackTrace(void** result, int max_depth, int skip_count) {
|
||||
- static const int kStackLength = 64;
|
||||
- void * stack[kStackLength];
|
||||
- int size;
|
||||
-
|
||||
- size = backtrace(stack, kStackLength);
|
||||
- skip_count++; // we want to skip the current frame as well
|
||||
- int result_count = size - skip_count;
|
||||
- if (result_count < 0)
|
||||
- result_count = 0;
|
||||
- if (result_count > max_depth)
|
||||
- result_count = max_depth;
|
||||
- for (int i = 0; i < result_count; i++)
|
||||
- result[i] = stack[i + skip_count];
|
||||
-
|
||||
- return result_count;
|
||||
+ return 0;
|
||||
}
|
||||
|
||||
_END_GOOGLE_NAMESPACE_
|
||||
Vendored
+51
@@ -0,0 +1,51 @@
|
||||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||
index 62ebbcc..e17f67e 100644
|
||||
--- a/CMakeLists.txt
|
||||
+++ b/CMakeLists.txt
|
||||
@@ -17,7 +17,7 @@ set (CPACK_PACKAGE_VERSION_MINOR ${PROJECT_VERSION_MINOR})
|
||||
set (CPACK_PACKAGE_VERSION_PATCH ${PROJECT_VERSION_PATCH})
|
||||
set (CPACK_PACKAGE_VERSION ${PROJECT_VERSION})
|
||||
|
||||
-option (BUILD_SHARED_LIBS "Build shared libraries" ON)
|
||||
+option (BUILD_STATIC_LIBS "Build shared libraries" ON)
|
||||
option (PRINT_UNSYMBOLIZED_STACK_TRACES
|
||||
"Print file offsets in traces instead of symbolizing" OFF)
|
||||
option (WITH_CUSTOM_PREFIX "Enable support for user-generated message prefixes" OFF)
|
||||
@@ -802,12 +802,12 @@ if (BUILD_TESTING)
|
||||
FIXTURES_REQUIRED "cmake_package_config;cmake_package_config_working")
|
||||
endif (BUILD_TESTING)
|
||||
|
||||
-install (TARGETS glog
|
||||
- EXPORT glog-targets
|
||||
- RUNTIME DESTINATION ${_glog_CMake_BINDIR}
|
||||
- PUBLIC_HEADER DESTINATION ${_glog_CMake_INCLUDE_DIR}/glog
|
||||
- LIBRARY DESTINATION ${_glog_CMake_LIBDIR}
|
||||
- ARCHIVE DESTINATION ${_glog_CMake_LIBDIR})
|
||||
+#install (TARGETS glog
|
||||
+# EXPORT glog-targets
|
||||
+# RUNTIME DESTINATION ${_glog_CMake_BINDIR}
|
||||
+# PUBLIC_HEADER DESTINATION ${_glog_CMake_INCLUDE_DIR}/glog
|
||||
+# LIBRARY DESTINATION ${_glog_CMake_LIBDIR}
|
||||
+# ARCHIVE DESTINATION ${_glog_CMake_LIBDIR})
|
||||
|
||||
if (WITH_PKGCONFIG)
|
||||
install (
|
||||
@@ -840,8 +840,8 @@ write_basic_package_version_file (
|
||||
${CMAKE_CURRENT_BINARY_DIR}/glog-config-version.cmake
|
||||
COMPATIBILITY SameMajorVersion)
|
||||
|
||||
-export (TARGETS glog NAMESPACE glog:: FILE glog-targets.cmake)
|
||||
-export (PACKAGE glog)
|
||||
+#export (TARGETS glog NAMESPACE glog:: FILE glog-targets.cmake)
|
||||
+#export (PACKAGE glog)
|
||||
|
||||
get_filename_component (_PREFIX "${CMAKE_INSTALL_PREFIX}" ABSOLUTE)
|
||||
|
||||
@@ -885,5 +885,5 @@ install (DIRECTORY ${_glog_BINARY_CMake_DATADIR}
|
||||
FILES_MATCHING PATTERN "*.cmake"
|
||||
)
|
||||
|
||||
-install (EXPORT glog-targets NAMESPACE glog:: DESTINATION
|
||||
- ${_glog_CMake_INSTALLDIR})
|
||||
+#install (EXPORT glog-targets NAMESPACE glog:: DESTINATION
|
||||
+# ${_glog_CMake_INSTALLDIR})
|
||||
Vendored
+48
@@ -0,0 +1,48 @@
|
||||
if(NOT MSVC)
|
||||
add_compile_options(-Wno-deprecated-copy)
|
||||
endif()
|
||||
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
|
||||
add_compile_options(-Wno-maybe-uninitialized)
|
||||
endif()
|
||||
|
||||
if (MSVC)
|
||||
if(NOT ZVEC_USE_STATIC_CRT)
|
||||
set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
|
||||
else()
|
||||
set(gtest_force_shared_crt OFF CACHE BOOL "" FORCE)
|
||||
endif()
|
||||
endif ()
|
||||
|
||||
if(MSVC)
|
||||
# Replace -Zi with /Z7 for sccache compatibility (/Z7 embeds debug info in .obj, no .pdb).
|
||||
set(GTEST_SRC_DIR ${CMAKE_CURRENT_SOURCE_DIR}/googletest-1.10.0)
|
||||
set(GTEST_WINDOWS_PATCH ${CMAKE_CURRENT_SOURCE_DIR}/googletest.windows.patch)
|
||||
apply_patch_once("googletest_windows_fix" "${GTEST_SRC_DIR}" "${GTEST_WINDOWS_PATCH}")
|
||||
endif()
|
||||
|
||||
set(_SAVED_CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_ARCHIVE_OUTPUT_DIRECTORY})
|
||||
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${EXTERNAL_LIB_DIR})
|
||||
add_subdirectory(googletest-1.10.0)
|
||||
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${_SAVED_CMAKE_ARCHIVE_OUTPUT_DIRECTORY})
|
||||
unset(_SAVED_CMAKE_ARCHIVE_OUTPUT_DIRECTORY)
|
||||
|
||||
# Clear COMPILE_PDB_NAME to prevent CMake from adding /Fd<path> — with /Z7 no .pdb is
|
||||
# generated, but sccache would try to collect the nonexistent .pdb and fail.
|
||||
if(MSVC)
|
||||
foreach(_gt_target gtest gtest_main gmock gmock_main)
|
||||
set_target_properties(${_gt_target} PROPERTIES COMPILE_PDB_NAME "")
|
||||
endforeach()
|
||||
endif()
|
||||
|
||||
mark_target_includes_system(gtest gtest_main gmock gmock_main)
|
||||
|
||||
get_target_property(GTEST_INCLUDE_DIRS gtest INTERFACE_INCLUDE_DIRECTORIES)
|
||||
|
||||
set(GTEST_FOUND TRUE PARENT_SCOPE)
|
||||
set(GTEST_INCLUDE_DIRS ${GTEST_INCLUDE_DIRS} PARENT_SCOPE)
|
||||
set(GTEST_INCLUDE_DIR ${GTEST_INCLUDE_DIRS} PARENT_SCOPE)
|
||||
set(GTEST_LIBRARIES $<TARGET_FILE:gtest> PARENT_SCOPE)
|
||||
set(GTEST_LIBRARY ${GTEST_LIBRARIES} PARENT_SCOPE)
|
||||
set(GTEST_MAIN_LIBRARIES $<TARGET_FILE:gtest_main> PARENT_SCOPE)
|
||||
set(GTEST_MAIN_LIBRARY ${GTEST_MAIN_LIBRARIES} PARENT_SCOPE)
|
||||
set(GTEST_BOTH_LIBRARIES $<TARGET_FILE:gtest> $<TARGET_FILE:gtest_main> PARENT_SCOPE)
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
diff --git a/googletest/cmake/internal_utils.cmake b/googletest/cmake/internal_utils.cmake
|
||||
index 1234567..abcdefg 100644
|
||||
--- a/googletest/cmake/internal_utils.cmake
|
||||
+++ b/googletest/cmake/internal_utils.cmake
|
||||
@@ -72,7 +72,7 @@ macro(config_compiler_and_linker)
|
||||
fix_default_compiler_settings_()
|
||||
if (MSVC)
|
||||
# Newlines inside flags variables break CMake's NMake generator.
|
||||
# TODO(vladl@google.com): Add -RTCs and -RTCu to debug builds.
|
||||
- set(cxx_base_flags "-GS -W4 -WX -wd4251 -wd4275 -nologo -J -Zi")
|
||||
+ set(cxx_base_flags "-GS -W4 -WX -wd4251 -wd4275 -nologo -J /Z7")
|
||||
set(cxx_base_flags "${cxx_base_flags} -D_UNICODE -DUNICODE -DWIN32 -D_WIN32")
|
||||
set(cxx_base_flags "${cxx_base_flags} -DSTRICT -DWIN32_LEAN_AND_MEAN")
|
||||
set(cxx_exception_flags "-EHsc -D_HAS_EXCEPTIONS=1")
|
||||
Vendored
+12
@@ -0,0 +1,12 @@
|
||||
set(limonp_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/limonp-v1.0.2")
|
||||
|
||||
if(NOT TARGET limonp)
|
||||
add_library(limonp INTERFACE)
|
||||
target_include_directories(limonp SYSTEM INTERFACE
|
||||
${limonp_SOURCE_DIR}/include
|
||||
)
|
||||
endif()
|
||||
|
||||
set(limonp_FOUND TRUE PARENT_SCOPE)
|
||||
set(limonp_INCLUDE_DIR ${limonp_SOURCE_DIR}/include PARENT_SCOPE)
|
||||
set(limonp_INCLUDE_DIRS ${limonp_SOURCE_DIR}/include PARENT_SCOPE)
|
||||
Vendored
+154
@@ -0,0 +1,154 @@
|
||||
set(lz4_INCLUDE_DIR "${EXTERNAL_BINARY_DIR}/usr/local/include")
|
||||
set(lz4_LIBRARY_DIR "${EXTERNAL_BINARY_DIR}/usr/local/lib/")
|
||||
file(MAKE_DIRECTORY ${lz4_INCLUDE_DIR})
|
||||
file(MAKE_DIRECTORY ${lz4_LIBRARY_DIR})
|
||||
|
||||
if(MSVC)
|
||||
set(LZ4_LIB_NAME lz4.lib)
|
||||
else()
|
||||
set(LZ4_LIB_NAME liblz4.a)
|
||||
endif()
|
||||
|
||||
include(ExternalProject)
|
||||
|
||||
set(_lz4_env "")
|
||||
if(ANDROID)
|
||||
string(REGEX REPLACE "^android-([0-9]+)$" "\\1" ANDROID_API_LEVEL "${ANDROID_PLATFORM}")
|
||||
|
||||
if(ANDROID_ABI STREQUAL "arm64-v8a")
|
||||
set(TARGET_TRIPLE "aarch64-linux-android")
|
||||
elseif(ANDROID_ABI STREQUAL "armeabi-v7a")
|
||||
set(TARGET_TRIPLE "armv7a-linux-androideabi")
|
||||
elseif(ANDROID_ABI STREQUAL "x86")
|
||||
set(TARGET_TRIPLE "i686-linux-android")
|
||||
elseif(ANDROID_ABI STREQUAL "x86_64")
|
||||
set(TARGET_TRIPLE "x86_64-linux-android")
|
||||
else()
|
||||
message(FATAL_ERROR "Unsupported ANDROID_ABI: ${ANDROID_ABI}")
|
||||
endif()
|
||||
|
||||
set(SYSROOT "${ANDROID_NDK}/toolchains/llvm/prebuilt/${ANDROID_HOST_TAG}/sysroot")
|
||||
set(COMMON_FLAGS
|
||||
"--sysroot=${SYSROOT}"
|
||||
"-target ${TARGET_TRIPLE}${ANDROID_API_LEVEL}"
|
||||
"-fPIC"
|
||||
"-D__ANDROID_API__=${ANDROID_API_LEVEL}"
|
||||
)
|
||||
|
||||
list(APPEND COMMON_FLAGS ${CMAKE_C_FLAGS} ${CMAKE_C_FLAGS_${CMAKE_BUILD_TYPE}})
|
||||
|
||||
string(JOIN " " _lz4_cflags ${COMMON_FLAGS})
|
||||
|
||||
list(APPEND _lz4_env
|
||||
"CC=${CMAKE_C_COMPILER}"
|
||||
"AR=${CMAKE_AR}"
|
||||
"RANLIB=${CMAKE_RANLIB}"
|
||||
"STRIP=${ANDROID_NDK}/toolchains/llvm/prebuilt/${ANDROID_HOST_TAG}/bin/llvm-strip"
|
||||
"CFLAGS=${_lz4_cflags}"
|
||||
)
|
||||
|
||||
elseif(IOS)
|
||||
# iOS cross-compilation
|
||||
set(_ios_arch ${CMAKE_OSX_ARCHITECTURES})
|
||||
if(NOT _ios_arch)
|
||||
set(_ios_arch "arm64")
|
||||
endif()
|
||||
|
||||
set(_ios_min_version ${CMAKE_OSX_DEPLOYMENT_TARGET})
|
||||
if(NOT _ios_min_version)
|
||||
set(_ios_min_version "13.0")
|
||||
endif()
|
||||
|
||||
# Get iOS SDK path - detect from CMAKE_OSX_SYSROOT or IOS_PLATFORM
|
||||
string(TOLOWER "${CMAKE_OSX_SYSROOT}" _sysroot_lower)
|
||||
if(IOS_PLATFORM STREQUAL "OS" OR _sysroot_lower MATCHES "iphoneos")
|
||||
set(_ios_sdk "iphoneos")
|
||||
set(_ios_target_flag "-miphoneos-version-min=${_ios_min_version}")
|
||||
else()
|
||||
set(_ios_sdk "iphonesimulator")
|
||||
set(_ios_target_flag "-mios-simulator-version-min=${_ios_min_version}")
|
||||
endif()
|
||||
|
||||
execute_process(
|
||||
COMMAND xcrun --sdk ${_ios_sdk} --show-sdk-path
|
||||
OUTPUT_VARIABLE _ios_sysroot
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
)
|
||||
|
||||
set(_lz4_cflags "-arch ${_ios_arch} -isysroot ${_ios_sysroot} ${_ios_target_flag} -fPIC")
|
||||
|
||||
list(APPEND _lz4_env
|
||||
"CC=${CMAKE_C_COMPILER}"
|
||||
"AR=${CMAKE_AR}"
|
||||
"RANLIB=${CMAKE_RANLIB}"
|
||||
"CFLAGS=${_lz4_cflags}"
|
||||
)
|
||||
else()
|
||||
# `make` can't auto detect the sdk root on Apple platforms
|
||||
if (APPLE)
|
||||
list(APPEND _lz4_env "SDKROOT=${CMAKE_OSX_SYSROOT}")
|
||||
endif ()
|
||||
|
||||
list(APPEND _lz4_env
|
||||
"CC=${CMAKE_C_COMPILER}"
|
||||
"CFLAGS=-fPIC"
|
||||
)
|
||||
endif()
|
||||
|
||||
if(MSVC)
|
||||
ExternalProject_Add(
|
||||
Lz4.BUILD
|
||||
PREFIX lz4
|
||||
URL "${CMAKE_CURRENT_SOURCE_DIR}/lz4-1.9.4"
|
||||
SOURCE_SUBDIR build/cmake
|
||||
CMAKE_ARGS
|
||||
-DCMAKE_INSTALL_PREFIX=${EXTERNAL_BINARY_DIR}/usr/local
|
||||
-DCMAKE_INSTALL_LIBDIR=lib
|
||||
-DCMAKE_MSVC_RUNTIME_LIBRARY=${CMAKE_MSVC_RUNTIME_LIBRARY}
|
||||
-DBUILD_SHARED_LIBS=OFF
|
||||
-DBUILD_STATIC_LIBS=ON
|
||||
-DLZ4_BUILD_CLI=OFF
|
||||
-DLZ4_BUILD_LEGACY_LZ4C=OFF
|
||||
-DCMAKE_C_COMPILER_LAUNCHER=${CMAKE_C_COMPILER_LAUNCHER}
|
||||
-DCMAKE_POLICY_DEFAULT_CMP0141=NEW
|
||||
-DCMAKE_MSVC_DEBUG_INFORMATION_FORMAT=Embedded
|
||||
BUILD_COMMAND "${CMAKE_COMMAND}" --build . --config $<CONFIG> -j
|
||||
INSTALL_COMMAND "${CMAKE_COMMAND}" --install . --config $<CONFIG>
|
||||
BUILD_IN_SOURCE OFF
|
||||
LOG_DOWNLOAD ON
|
||||
LOG_CONFIGURE ON
|
||||
LOG_BUILD ON
|
||||
LOG_INSTALL ON
|
||||
BUILD_BYPRODUCTS ${lz4_LIBRARY_DIR}/${LZ4_LIB_NAME}
|
||||
)
|
||||
else()
|
||||
ExternalProject_Add(
|
||||
Lz4.BUILD
|
||||
PREFIX lz4
|
||||
URL "${CMAKE_CURRENT_SOURCE_DIR}/lz4-1.9.4"
|
||||
CONFIGURE_COMMAND ""
|
||||
BUILD_COMMAND env ${_lz4_env} BUILD_SHARED=no make -j
|
||||
INSTALL_COMMAND make DESTDIR=${EXTERNAL_BINARY_DIR} BUILD_SHARED=no install
|
||||
BUILD_IN_SOURCE ON
|
||||
LOG_DOWNLOAD ON
|
||||
LOG_CONFIGURE ON
|
||||
LOG_BUILD ON
|
||||
LOG_INSTALL ON
|
||||
BUILD_BYPRODUCTS ${lz4_LIBRARY_DIR}/liblz4.a
|
||||
)
|
||||
endif()
|
||||
add_library(lz4 STATIC IMPORTED GLOBAL)
|
||||
set_target_properties(
|
||||
lz4 PROPERTIES
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${lz4_INCLUDE_DIR}"
|
||||
INTERFACE_SYSTEM_INCLUDE_DIRECTORIES "${lz4_INCLUDE_DIR}"
|
||||
IMPORTED_LOCATION "${lz4_LIBRARY_DIR}/${LZ4_LIB_NAME}"
|
||||
)
|
||||
add_dependencies(lz4 Lz4.BUILD)
|
||||
|
||||
set(lz4_FOUND TRUE PARENT_SCOPE)
|
||||
set(lz4_LIBRARY ${lz4_LIBRARY_DIR}/${LZ4_LIB_NAME} PARENT_SCOPE)
|
||||
set(lz4_LIBRARIES ${lz4_LIBRARY_DIR}/${LZ4_LIB_NAME} PARENT_SCOPE)
|
||||
set(lz4_INCLUDE_DIR "${EXTERNAL_BINARY_DIR}/usr/local/include" PARENT_SCOPE)
|
||||
set(lz4_INCLUDE_DIRS "${EXTERNAL_BINARY_DIR}/usr/local/include" PARENT_SCOPE)
|
||||
set(lz4_VERSION 1.9.4 PARENT_SCOPE)
|
||||
Vendored
+4
@@ -0,0 +1,4 @@
|
||||
add_library(magic_enum INTERFACE)
|
||||
target_include_directories(
|
||||
magic_enum SYSTEM INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}/magic_enum-0.9.7/include/"
|
||||
)
|
||||
Vendored
+76
@@ -0,0 +1,76 @@
|
||||
set(protobuf_BUILD_TESTS OFF CACHE BOOL "Disable testing in protobuf" FORCE)
|
||||
set(protobuf_WITH_ZLIB ON CACHE BOOL "Disable zlib support in protobuf" FORCE)
|
||||
if(MSVC)
|
||||
set(protobuf_MSVC_STATIC_RUNTIME ${ZVEC_USE_STATIC_CRT} CACHE BOOL "" FORCE)
|
||||
endif()
|
||||
|
||||
if(MSVC)
|
||||
# Remove /MP for sccache compatibility (sccache cannot cache multi-file compilations).
|
||||
set(PROTOBUF_SRC_DIR ${CMAKE_CURRENT_SOURCE_DIR}/protobuf-3.21.12)
|
||||
set(PROTOBUF_WINDOWS_PATCH ${CMAKE_CURRENT_SOURCE_DIR}/protobuf.windows.patch)
|
||||
apply_patch_once("protobuf_windows_fix" "${PROTOBUF_SRC_DIR}" "${PROTOBUF_WINDOWS_PATCH}")
|
||||
endif()
|
||||
|
||||
set(_SAVED_CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_ARCHIVE_OUTPUT_DIRECTORY})
|
||||
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${EXTERNAL_LIB_DIR})
|
||||
add_subdirectory(protobuf-3.21.12/cmake protobuf-3.21.12)
|
||||
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${_SAVED_CMAKE_ARCHIVE_OUTPUT_DIRECTORY})
|
||||
unset(_SAVED_CMAKE_ARCHIVE_OUTPUT_DIRECTORY)
|
||||
|
||||
mark_target_includes_system(libprotobuf libprotobuf-lite libprotoc)
|
||||
|
||||
if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
|
||||
target_compile_options(libprotobuf PRIVATE
|
||||
-Wno-deprecated-declarations
|
||||
-Wno-invalid-noreturn
|
||||
-Wno-unused-function
|
||||
)
|
||||
target_compile_options(libprotoc PRIVATE
|
||||
-Wno-unused-private-field
|
||||
-Wno-unused-function
|
||||
)
|
||||
target_compile_options(protoc PRIVATE
|
||||
-Wno-unused-private-field
|
||||
-Wno-unused-function
|
||||
)
|
||||
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
|
||||
target_compile_options(libprotobuf PRIVATE
|
||||
-Wno-deprecated-declarations
|
||||
-Wno-unused-function
|
||||
-Wno-maybe-uninitialized
|
||||
-Wno-sign-compare
|
||||
-Wno-return-type
|
||||
-Wno-stringop-overflow
|
||||
-Wno-stringop-overread
|
||||
-Wno-array-bounds
|
||||
)
|
||||
target_compile_options(libprotoc PRIVATE
|
||||
-Wno-unused-private-field
|
||||
-Wno-unused-function
|
||||
-Wno-unused-but-set-variable
|
||||
-Wno-sign-compare
|
||||
)
|
||||
target_compile_options(protoc PRIVATE
|
||||
-Wno-unused-private-field
|
||||
-Wno-unused-function
|
||||
-Wno-unused-but-set-variable
|
||||
-Wno-sign-compare
|
||||
)
|
||||
endif()
|
||||
|
||||
get_target_property(libprotobuf_SOURCE_DIR libprotobuf SOURCE_DIR)
|
||||
get_filename_component(libprotobuf_INCLUDE_DIR ${libprotobuf_SOURCE_DIR}/../src ABSOLUTE)
|
||||
|
||||
set(PROTOBUF_FOUND TRUE PARENT_SCOPE)
|
||||
set(PROTOBUF_INCLUDE_DIR ${libprotobuf_INCLUDE_DIR} PARENT_SCOPE)
|
||||
set(PROTOBUF_INCLUDE_DIRS ${libprotobuf_INCLUDE_DIR} PARENT_SCOPE)
|
||||
|
||||
set(PROTOBUF_LIBRARY $<TARGET_FILE:libprotobuf> PARENT_SCOPE)
|
||||
set(PROTOBUF_LIBRARIES $<TARGET_FILE:libprotobuf> PARENT_SCOPE)
|
||||
|
||||
set(PROTOBUF_LITE_LIBRARY $<TARGET_FILE:libprotobuf-lite> PARENT_SCOPE)
|
||||
set(PROTOBUF_LITE_LIBRARIES $<TARGET_FILE:libprotobuf-lite> PARENT_SCOPE)
|
||||
|
||||
set(PROTOBUF_PROTOC_LIBRARY $<TARGET_FILE:libprotoc> PARENT_SCOPE)
|
||||
set(PROTOBUF_PROTOC_LIBRARIES $<TARGET_FILE:libprotoc> PARENT_SCOPE)
|
||||
set(PROTOBUF_PROTOC_EXECUTABLE $<TARGET_FILE:protoc> PARENT_SCOPE)
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||
index 1234567..abcdefg 100644
|
||||
--- a/CMakeLists.txt
|
||||
+++ b/CMakeLists.txt
|
||||
@@ -241,10 +241,6 @@
|
||||
|
||||
if (MSVC)
|
||||
- if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
|
||||
- # Build with multiple processes
|
||||
- add_definitions(/MP)
|
||||
- endif()
|
||||
# Set source file and execution character sets to UTF-8
|
||||
add_definitions(/utf-8)
|
||||
# MSVC warning suppressions
|
||||
add_definitions(
|
||||
Vendored
+83
@@ -0,0 +1,83 @@
|
||||
set(ROCKSDB_SRC_DIR ${CMAKE_CURRENT_SOURCE_DIR}/rocksdb-8.1.1)
|
||||
if (ANDROID)
|
||||
set(ROCKSDB_ANDROID_PATCH ${CMAKE_CURRENT_SOURCE_DIR}/rocksdb.android.patch)
|
||||
apply_patch_once("rocksdb_android_fix" "${ROCKSDB_SRC_DIR}" "${ROCKSDB_ANDROID_PATCH}")
|
||||
elseif(IOS)
|
||||
# iOS-specific patch for endianness detection
|
||||
set(ROCKSDB_IOS_PATCH ${CMAKE_CURRENT_SOURCE_DIR}/rocksdb.ios.patch)
|
||||
apply_patch_once("rocksdb_ios_fix" "${ROCKSDB_SRC_DIR}" "${ROCKSDB_IOS_PATCH}")
|
||||
# iOS-specific options
|
||||
set(WITH_JNI OFF CACHE BOOL "Disable JNI for iOS" FORCE)
|
||||
set(WITH_GFLAGS OFF CACHE BOOL "Disable gflags for iOS" FORCE)
|
||||
# Define OS_MACOSX for iOS to disable O_DIRECT and enable Apple-specific code paths
|
||||
add_definitions(-DOS_MACOSX)
|
||||
# Apple Clang for arm64 always supports CRC32 intrinsics (__ARM_FEATURE_CRC32 is
|
||||
# always defined), but may reject the GCC-style -march=armv8-a+crc+crypto flag
|
||||
# (especially for the simulator target). Pre-set the cache variable so RocksDB's
|
||||
# CHECK_C_COMPILER_FLAG is skipped and crc32c_arm64.cc is included in the build.
|
||||
if(CMAKE_OSX_ARCHITECTURES MATCHES "arm64")
|
||||
set(HAS_ARMV8_CRC ON CACHE INTERNAL "Force ARM CRC for iOS arm64")
|
||||
endif()
|
||||
endif()
|
||||
if(MSVC)
|
||||
# Replace /Zi with /Z7 for sccache compatibility (/Z7 embeds debug info in .obj, no .pdb).
|
||||
set(ROCKSDB_WINDOWS_PATCH ${CMAKE_CURRENT_SOURCE_DIR}/rocksdb.windows.patch)
|
||||
apply_patch_once("rocksdb_windows_fix" "${ROCKSDB_SRC_DIR}" "${ROCKSDB_WINDOWS_PATCH}")
|
||||
endif()
|
||||
|
||||
set(ROCKSDB_BUILD_SHARED OFF CACHE BOOL "Disable install in rocksdb" FORCE)
|
||||
|
||||
if(MSVC)
|
||||
if(ZVEC_USE_STATIC_CRT)
|
||||
set(WITH_MD_LIBRARY OFF CACHE BOOL "build rocksdb with MT to match project CRT" FORCE)
|
||||
else()
|
||||
set(WITH_MD_LIBRARY ON CACHE BOOL "build rocksdb with MD to match project CRT" FORCE)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
set(WITH_TESTS OFF CACHE BOOL "Disable testing in rocksdb" FORCE)
|
||||
set(WITH_ALL_TESTS OFF CACHE BOOL "Build all test, rather than a small subset" FORCE)
|
||||
set(WITH_BENCHMARK_TOOLS OFF CACHE BOOL "Disable benchmarks in rocksdb" FORCE)
|
||||
set(WITH_CORE_TOOLS OFF CACHE BOOL "build with ldb and sst_dump" FORCE)
|
||||
set(WITH_TOOLS OFF CACHE BOOL "build with tools" FORCE)
|
||||
set(WITH_LZ4 ON CACHE BOOL "build with lz4" FORCE)
|
||||
set(USE_RTTI ON CACHE BOOL "build with RTTI" FORCE)
|
||||
set(WITH_WINDOWS_UTF8_FILENAMES ON CACHE BOOL "use UTF8 as characterset for opening files, regardles of the system code page" FORCE)
|
||||
# TODO(windows): verify
|
||||
set(ROCKSDB_SKIP_THIRDPARTY ON CACHE BOOL "skip thirdparty.inc" FORCE)
|
||||
set(FAIL_ON_WARNINGS OFF CACHE BOOL "build with no Werror" FORCE)
|
||||
set(PORTABLE ON CACHE BOOL "build a portable lib" FORCE)
|
||||
|
||||
set(lz4_INCLUDE_DIRS "${lz4_INCLUDE_DIR}" CACHE PATH "lz4 include directory" FORCE)
|
||||
set(lz4_LIBRARIES "${lz4_LIBRARY}" CACHE FILEPATH "lz4 library" FORCE)
|
||||
set(lz4_FOUND TRUE CACHE BOOL "lz4 found" FORCE)
|
||||
|
||||
# TODO(windows): may remove
|
||||
if(NOT TARGET lz4::lz4)
|
||||
add_library(lz4::lz4 UNKNOWN IMPORTED GLOBAL)
|
||||
set_target_properties(lz4::lz4 PROPERTIES
|
||||
IMPORTED_LOCATION "${lz4_LIBRARY}"
|
||||
IMPORTED_LOCATION_DEBUG "${lz4_LIBRARY}"
|
||||
IMPORTED_LOCATION_RELEASE "${lz4_LIBRARY}"
|
||||
IMPORTED_LOCATION_MINSIZEREL "${lz4_LIBRARY}"
|
||||
IMPORTED_LOCATION_RELWITHDEBINFO "${lz4_LIBRARY}"
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${lz4_INCLUDE_DIR}"
|
||||
INTERFACE_SYSTEM_INCLUDE_DIRECTORIES "${lz4_INCLUDE_DIR}"
|
||||
)
|
||||
add_dependencies(lz4::lz4 Lz4.BUILD)
|
||||
endif()
|
||||
|
||||
set(_SAVED_CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_ARCHIVE_OUTPUT_DIRECTORY})
|
||||
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${EXTERNAL_LIB_DIR})
|
||||
add_subdirectory(rocksdb-8.1.1)
|
||||
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${_SAVED_CMAKE_ARCHIVE_OUTPUT_DIRECTORY})
|
||||
|
||||
unset(_SAVED_CMAKE_ARCHIVE_OUTPUT_DIRECTORY)
|
||||
|
||||
get_target_property(rocksdb_SOURCE_DIR rocksdb SOURCE_DIR)
|
||||
set(ROCKSDB_INCLUDE_DIR ${rocksdb_SOURCE_DIR}/include)
|
||||
|
||||
target_include_directories(rocksdb SYSTEM PUBLIC $<BUILD_INTERFACE:${ROCKSDB_INCLUDE_DIR}>)
|
||||
target_include_directories(rocksdb SYSTEM PRIVATE ${lz4_INCLUDE_DIR})
|
||||
mark_target_includes_system(rocksdb)
|
||||
add_dependencies(rocksdb Lz4.BUILD)
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
diff --git a/env/io_posix.cc b/env/io_posix.cc
|
||||
index 0ec0e9c83..a78ac5a13 100644
|
||||
--- a/env/io_posix.cc
|
||||
+++ b/env/io_posix.cc
|
||||
@@ -27,7 +27,7 @@
|
||||
#include <sys/mman.h>
|
||||
#include <sys/stat.h>
|
||||
#include <sys/types.h>
|
||||
-#ifdef OS_LINUX
|
||||
+#if defined(OS_LINUX) || defined(OS_ANDROID)
|
||||
#include <sys/statfs.h>
|
||||
#include <sys/sysmacros.h>
|
||||
#endif
|
||||
Vendored
+29
@@ -0,0 +1,29 @@
|
||||
diff --git a/port/port_posix.h b/port/port_posix.h
|
||||
index 1234567..abcdefg 100644
|
||||
--- a/port/port_posix.h
|
||||
+++ b/port/port_posix.h
|
||||
@@ -58,6 +58,15 @@
|
||||
#include <limits>
|
||||
#include <string>
|
||||
|
||||
+// iOS/macOS endianness detection
|
||||
+#if defined(__APPLE__)
|
||||
+#include <machine/endian.h>
|
||||
+#if !defined(__BYTE_ORDER) && defined(BYTE_ORDER)
|
||||
+#define __BYTE_ORDER BYTE_ORDER
|
||||
+#define __LITTLE_ENDIAN LITTLE_ENDIAN
|
||||
+#endif
|
||||
+#endif
|
||||
+
|
||||
#ifndef PLATFORM_IS_LITTLE_ENDIAN
|
||||
#define PLATFORM_IS_LITTLE_ENDIAN (__BYTE_ORDER == __LITTLE_ENDIAN)
|
||||
#endif
|
||||
@@ -65,7 +74,7 @@
|
||||
|
||||
#if defined(OS_MACOSX) || defined(OS_SOLARIS) || defined(OS_FREEBSD) || \
|
||||
defined(OS_NETBSD) || defined(OS_OPENBSD) || defined(OS_DRAGONFLYBSD) || \
|
||||
- defined(OS_ANDROID) || defined(CYGWIN) || defined(OS_AIX)
|
||||
+ defined(OS_ANDROID) || defined(CYGWIN) || defined(OS_AIX) || (defined(__APPLE__) && !defined(OS_MACOSX))
|
||||
// Use fread/fwrite/fflush on platforms without _unlocked variants
|
||||
#define fread_unlocked fread
|
||||
#define fwrite_unlocked fwrite
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||
index 1234567..abcdefg 100644
|
||||
--- a/CMakeLists.txt
|
||||
+++ b/CMakeLists.txt
|
||||
@@ -186,7 +186,7 @@ endif()
|
||||
endif()
|
||||
|
||||
if(MSVC)
|
||||
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /Zi /nologo /EHsc /GS /Gd /GR /GF /fp:precise /Zc:wchar_t /Zc:forScope /errorReport:queue")
|
||||
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /Z7 /nologo /EHsc /GS /Gd /GR /GF /fp:precise /Zc:wchar_t /Zc:forScope /errorReport:queue")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /FC /d2Zi+ /W4 /wd4127 /wd4800 /wd4996 /wd4351 /wd4100 /wd4204 /wd4324")
|
||||
else()
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -W -Wextra -Wall -pthread")
|
||||
Vendored
+100
@@ -0,0 +1,100 @@
|
||||
include(ExternalProject)
|
||||
|
||||
set(SNOWBALL_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/snowball-3.1.1")
|
||||
set(SNOWBALL_BUILD_DIR "${CMAKE_CURRENT_BINARY_DIR}/snowball-codegen")
|
||||
set(SNOWBALL_HOST_CC "" CACHE STRING
|
||||
"Optional host C compiler for building the Snowball code generator")
|
||||
find_program(_SNOWBALL_MAKE NAMES make gmake REQUIRED)
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Parse modules.txt → UTF-8 algorithm list
|
||||
# ---------------------------------------------------------------------------
|
||||
set(_snowball_gen_srcs)
|
||||
set(_snowball_gen_hdrs)
|
||||
set(_snowball_make_targets)
|
||||
file(STRINGS "${SNOWBALL_SOURCE_DIR}/libstemmer/modules.txt" _lines)
|
||||
foreach(_line IN LISTS _lines)
|
||||
if(_line MATCHES "^#" OR _line MATCHES "^[ \t]*$")
|
||||
continue()
|
||||
endif()
|
||||
if(_line MATCHES "^([a-z_]+)[ \t]+([A-Z_0-9,]+)")
|
||||
set(_alg "${CMAKE_MATCH_1}")
|
||||
list(APPEND _snowball_gen_srcs
|
||||
"${SNOWBALL_BUILD_DIR}/src_c/stem_UTF_8_${_alg}.c")
|
||||
list(APPEND _snowball_gen_hdrs
|
||||
"${SNOWBALL_BUILD_DIR}/src_c/stem_UTF_8_${_alg}.h")
|
||||
list(APPEND _snowball_make_targets
|
||||
"src_c/stem_UTF_8_${_alg}.c")
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
set(_snowball_make_args "CFLAGS=-O2")
|
||||
if(NOT SNOWBALL_HOST_CC STREQUAL "")
|
||||
list(APPEND _snowball_make_args "CC=${SNOWBALL_HOST_CC}")
|
||||
endif()
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Phase 1 (host): build snowball compiler & generate UTF-8 sources only
|
||||
# ---------------------------------------------------------------------------
|
||||
# Copy source tree into the build directory so the original stays clean.
|
||||
# Request only the UTF-8 stemmer sources, the utf8 libstemmer entry point,
|
||||
# and the utf8 modules header — no ISO-8859/KOI8 stemmers, no host .a.
|
||||
# Each src_c/stem_UTF_8_*.c target implicitly builds the snowball compiler
|
||||
# (host executable) as a dependency.
|
||||
# By default make uses system `cc`; set SNOWBALL_HOST_CC to override when
|
||||
# the environment CC points to a cross-compiler.
|
||||
ExternalProject_Add(snowball_codegen
|
||||
DOWNLOAD_COMMAND ${CMAKE_COMMAND} -E copy_directory
|
||||
${SNOWBALL_SOURCE_DIR} ${SNOWBALL_BUILD_DIR}
|
||||
SOURCE_DIR ${SNOWBALL_BUILD_DIR}
|
||||
CONFIGURE_COMMAND ""
|
||||
BUILD_COMMAND ${_SNOWBALL_MAKE}
|
||||
libstemmer/libstemmer_utf8.c
|
||||
libstemmer/modules_utf8.h
|
||||
${_snowball_make_targets}
|
||||
${_snowball_make_args}
|
||||
BUILD_IN_SOURCE TRUE
|
||||
INSTALL_COMMAND ""
|
||||
BUILD_BYPRODUCTS
|
||||
${SNOWBALL_BUILD_DIR}/runtime/api.c
|
||||
${SNOWBALL_BUILD_DIR}/runtime/utilities.c
|
||||
${SNOWBALL_BUILD_DIR}/libstemmer/libstemmer_utf8.c
|
||||
${SNOWBALL_BUILD_DIR}/libstemmer/modules_utf8.h
|
||||
${_snowball_gen_srcs}
|
||||
${_snowball_gen_hdrs}
|
||||
)
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Phase 2 (target): compile generated sources with the project toolchain
|
||||
# ---------------------------------------------------------------------------
|
||||
set(_snowball_target_srcs
|
||||
${SNOWBALL_BUILD_DIR}/runtime/api.c
|
||||
${SNOWBALL_BUILD_DIR}/runtime/utilities.c
|
||||
${SNOWBALL_BUILD_DIR}/libstemmer/libstemmer_utf8.c
|
||||
${_snowball_gen_srcs}
|
||||
)
|
||||
|
||||
set_source_files_properties(${_snowball_target_srcs}
|
||||
PROPERTIES GENERATED TRUE)
|
||||
|
||||
if(NOT TARGET snowball)
|
||||
add_library(snowball STATIC ${_snowball_target_srcs})
|
||||
add_dependencies(snowball snowball_codegen)
|
||||
# Public include points to the SOURCE directory — libstemmer.h exists at
|
||||
# configure time and does not depend on the codegen step.
|
||||
target_include_directories(snowball SYSTEM PUBLIC
|
||||
${SNOWBALL_SOURCE_DIR}/include
|
||||
)
|
||||
# Private includes for generated headers (modules_utf8.h, stem_*.h).
|
||||
target_include_directories(snowball PRIVATE
|
||||
${SNOWBALL_BUILD_DIR}
|
||||
${SNOWBALL_BUILD_DIR}/libstemmer
|
||||
${SNOWBALL_BUILD_DIR}/src_c
|
||||
)
|
||||
set_target_properties(snowball PROPERTIES
|
||||
POSITION_INDEPENDENT_CODE ON
|
||||
C_STANDARD 99
|
||||
)
|
||||
endif()
|
||||
|
||||
set(snowball_FOUND TRUE PARENT_SCOPE)
|
||||
Vendored
+16
@@ -0,0 +1,16 @@
|
||||
set(SPARSE_SRC "${CMAKE_CURRENT_SOURCE_DIR}/sparseconfig.h")
|
||||
set(SPARSE_DST "${CMAKE_CURRENT_SOURCE_DIR}/sparsehash-2.0.4/src/sparsehash/internal/sparseconfig.h")
|
||||
get_filename_component(DESTINATION_DIR "${SPARSE_DST}" DIRECTORY)
|
||||
if(NOT EXISTS "${SPARSE_DST}")
|
||||
file(COPY "${SPARSE_SRC}" DESTINATION "${DESTINATION_DIR}")
|
||||
endif()
|
||||
|
||||
if(MSVC)
|
||||
set(SPARSEHASH_WINDOWS_PATCH ${CMAKE_CURRENT_SOURCE_DIR}/sparsehash.windows.patch)
|
||||
apply_patch_once("sparsehash.windows.patch" "${DESTINATION_DIR}" "${SPARSEHASH_WINDOWS_PATCH}")
|
||||
endif()
|
||||
|
||||
add_library(sparsehash INTERFACE)
|
||||
target_include_directories(
|
||||
sparsehash SYSTEM INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}/sparsehash-2.0.4/src/"
|
||||
)
|
||||
Vendored
+46
@@ -0,0 +1,46 @@
|
||||
/*
|
||||
* NOTE: This file is for internal use only.
|
||||
* Do not use these #defines in your own program!
|
||||
*/
|
||||
|
||||
/* Namespace for Google classes */
|
||||
#define GOOGLE_NAMESPACE ::google
|
||||
|
||||
/* the location of the header defining hash functions */
|
||||
#define HASH_FUN_H <functional>
|
||||
|
||||
/* the namespace of the hash<> function */
|
||||
#define HASH_NAMESPACE std
|
||||
|
||||
/* Define to 1 if you have the <inttypes.h> header file. */
|
||||
#define HAVE_INTTYPES_H 1
|
||||
|
||||
/* Define to 1 if the system has the type `long long'. */
|
||||
#define HAVE_LONG_LONG 1
|
||||
|
||||
/* Define to 1 if you have the `memcpy' function. */
|
||||
#define HAVE_MEMCPY 1
|
||||
|
||||
/* Define to 1 if you have the <stdint.h> header file. */
|
||||
#define HAVE_STDINT_H 1
|
||||
|
||||
/* Define to 1 if you have the <sys/types.h> header file. */
|
||||
#define HAVE_SYS_TYPES_H 1
|
||||
|
||||
/* Define to 1 if the system has the type `uint16_t'. */
|
||||
#define HAVE_UINT16_T 1
|
||||
|
||||
/* Define to 1 if the system has the type `u_int16_t'. */
|
||||
#define HAVE_U_INT16_T 1
|
||||
|
||||
/* Define to 1 if the system has the type `__uint16'. */
|
||||
/* #undef HAVE___UINT16 */
|
||||
|
||||
/* The system-provided hash function including the namespace. */
|
||||
#define SPARSEHASH_HASH HASH_NAMESPACE::hash
|
||||
|
||||
/* Stops putting the code inside the Google namespace */
|
||||
#define _END_GOOGLE_NAMESPACE_ }
|
||||
|
||||
/* Puts following code inside the Google namespace */
|
||||
#define _START_GOOGLE_NAMESPACE_ namespace google {
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
diff --git a/src/sparsehash/internal/hashtable-common.h b/src/sparsehash/internal/hashtable-common.h
|
||||
index bac2b88..59c752c 100644
|
||||
--- a/src/sparsehash/internal/hashtable-common.h
|
||||
+++ b/src/sparsehash/internal/hashtable-common.h
|
||||
@@ -51,7 +51,7 @@ _START_GOOGLE_NAMESPACE_
|
||||
|
||||
template <bool> struct SparsehashCompileAssert { };
|
||||
#define SPARSEHASH_COMPILE_ASSERT(expr, msg) \
|
||||
- __attribute__((unused)) typedef SparsehashCompileAssert<(bool(expr))> msg[bool(expr) ? 1 : -1]
|
||||
+ static_assert(bool(expr), #msg)
|
||||
|
||||
namespace sparsehash_internal {
|
||||
|
||||
Vendored
+4
@@ -0,0 +1,4 @@
|
||||
set(UTF8PROC_INSTALL OFF CACHE BOOL "" FORCE)
|
||||
add_subdirectory(utf8proc-2.11.3 utf8proc EXCLUDE_FROM_ALL)
|
||||
|
||||
set(utf8proc_FOUND TRUE PARENT_SCOPE)
|
||||
Vendored
+17
@@ -0,0 +1,17 @@
|
||||
set(YAML_CPP_BUILD_TESTS OFF CACHE BOOL "Disable testing in yaml-cpp" FORCE)
|
||||
set(YAML_CPP_BUILD_TOOLS OFF CACHE BOOL "Disable parse tools in yaml-cpp" FORCE)
|
||||
set(YAML_CPP_BUILD_CONTRIB OFF CACHE BOOL "Disable contrib stuff in yaml-cpp" FORCE)
|
||||
|
||||
set(_SAVED_CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_ARCHIVE_OUTPUT_DIRECTORY})
|
||||
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${EXTERNAL_LIB_DIR})
|
||||
add_subdirectory(yaml-cpp-0.6.3)
|
||||
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${_SAVED_CMAKE_ARCHIVE_OUTPUT_DIRECTORY})
|
||||
unset(_SAVED_CMAKE_ARCHIVE_OUTPUT_DIRECTORY)
|
||||
|
||||
mark_target_includes_system(yaml-cpp)
|
||||
|
||||
if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
|
||||
target_compile_options(yaml-cpp PRIVATE -Wno-shadow)
|
||||
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
|
||||
target_compile_options(yaml-cpp PRIVATE -Wno-effc++)
|
||||
endif()
|
||||
Reference in New Issue
Block a user