chore: import upstream snapshot with attribution

This commit is contained in:
wehub-resource-sync
2026-07-13 12:47:42 +08:00
commit be3ef883e1
1214 changed files with 431743 additions and 0 deletions
+34
View File
@@ -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)
+62
View File
@@ -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
View File
@@ -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
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+54
View File
@@ -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
View File
@@ -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
View File
@@ -0,0 +1,4 @@
add_library(rabitqlib INTERFACE)
target_include_directories(
rabitqlib SYSTEM INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}/RaBitQ-Library-0.1/include"
)
+28
View File
@@ -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)
+48
View File
@@ -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
View File
@@ -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}")
+235
View File
@@ -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)
+82
View File
@@ -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
+39
View File
@@ -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()
+26
View File
@@ -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) {
+25
View File
@@ -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}}")
+17
View File
@@ -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)
+57
View File
@@ -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)
+48
View File
@@ -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)
+78
View File
@@ -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_
+51
View File
@@ -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})
+48
View File
@@ -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
View File
@@ -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")
+12
View File
@@ -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)
+154
View File
@@ -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)
+4
View File
@@ -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/"
)
+76
View File
@@ -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
View File
@@ -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(
+83
View File
@@ -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
View File
@@ -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
+29
View File
@@ -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
View File
@@ -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")
+100
View File
@@ -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)
+16
View File
@@ -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/"
)
+46
View File
@@ -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
View File
@@ -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 {
+4
View File
@@ -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)
+17
View File
@@ -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()