Skip to content

Commit 12eef2e

Browse files
committed
cmake build
1 parent 9ba9672 commit 12eef2e

File tree

16 files changed

+66
-2335
lines changed

16 files changed

+66
-2335
lines changed

cpp/cmake_modules/ThirdpartyToolchain.cmake

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ set(ARROW_THIRDPARTY_DEPENDENCIES
4949
Boost
5050
Brotli
5151
BZip2
52+
fsst
5253
c-ares
5354
gflags
5455
glog
@@ -183,6 +184,8 @@ macro(build_dependency DEPENDENCY_NAME)
183184
build_brotli()
184185
elseif("${DEPENDENCY_NAME}" STREQUAL "BZip2")
185186
build_bzip2()
187+
elseif("${DEPENDENCY_NAME}" STREQUAL "fsst")
188+
build_fsst()
186189
elseif("${DEPENDENCY_NAME}" STREQUAL "c-ares")
187190
build_cares()
188191
elseif("${DEPENDENCY_NAME}" STREQUAL "gflags")
@@ -382,6 +385,7 @@ endif()
382385
if(ARROW_PARQUET)
383386
set(ARROW_WITH_RAPIDJSON ON)
384387
set(ARROW_WITH_THRIFT ON)
388+
set(ARROW_WITH_FSST ON)
385389
endif()
386390

387391
if(ARROW_WITH_THRIFT)
@@ -637,6 +641,14 @@ else()
637641
)
638642
endif()
639643

644+
if(DEFINED ENV{ARROW_FSST_URL})
645+
set(FSST_SOURCE_URL "$ENV{ARROW_FSST_URL}")
646+
else()
647+
set_urls(FSST_SOURCE_URL
648+
"https://github.com/cwida/fsst/archive/${ARROW_FSST_BUILD_VERSION}.tar.gz"
649+
"${THIRDPARTY_MIRROR_URL}/fsst-${ARROW_FSST_BUILD_VERSION}.tar.gz")
650+
endif()
651+
640652
if(DEFINED ENV{ARROW_GBENCHMARK_URL})
641653
set(GBENCHMARK_SOURCE_URL "$ENV{ARROW_GBENCHMARK_URL}")
642654
else()
@@ -2604,6 +2616,29 @@ if(ARROW_USE_XSIMD)
26042616
endif()
26052617
endif()
26062618

2619+
function(build_fsst)
2620+
message(STATUS "Building FSST from source using FetchContent")
2621+
2622+
fetchcontent_declare(fsst
2623+
URL ${FSST_SOURCE_URL}
2624+
URL_HASH "SHA256=${ARROW_FSST_BUILD_SHA256_CHECKSUM}")
2625+
2626+
prepare_fetchcontent()
2627+
fetchcontent_makeavailable(fsst)
2628+
2629+
set(ARROW_FSST_INCLUDE_DIR
2630+
"${fsst_SOURCE_DIR}"
2631+
CACHE INTERNAL "FSST include directory")
2632+
set(ARROW_FSST_SOURCES
2633+
"${fsst_SOURCE_DIR}/libfsst.cpp;${fsst_SOURCE_DIR}/fsst_avx512.cpp"
2634+
CACHE INTERNAL "FSST source files")
2635+
set(FSST_VENDORED TRUE CACHE INTERNAL "Whether FSST is built from source")
2636+
endfunction()
2637+
2638+
if(ARROW_WITH_FSST)
2639+
resolve_dependency(fsst IS_RUNTIME_DEPENDENCY FALSE)
2640+
endif()
2641+
26072642
macro(build_zlib)
26082643
message(STATUS "Building ZLIB from source")
26092644

cpp/src/parquet/CMakeLists.txt

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,21 +42,25 @@ function(ADD_PARQUET_TEST REL_TEST_NAME)
4242
${ARGN})
4343

4444
set(TEST_ARGUMENTS PREFIX "parquet" LABELS "parquet-tests")
45+
set(_PARQUET_TEST_EXTRA_ARGS ${ARG_UNPARSED_ARGUMENTS})
46+
if(PARQUET_TEST_EXTRA_INCLUDES)
47+
list(APPEND _PARQUET_TEST_EXTRA_ARGS EXTRA_INCLUDES ${PARQUET_TEST_EXTRA_INCLUDES})
48+
endif()
4549

4650
if(ARROW_TEST_LINKAGE STREQUAL "static")
4751
add_test_case(${REL_TEST_NAME}
4852
STATIC_LINK_LIBS
4953
parquet_static
5054
${PARQUET_TEST_LINK_LIBS}
5155
${TEST_ARGUMENTS}
52-
${ARG_UNPARSED_ARGUMENTS})
56+
${_PARQUET_TEST_EXTRA_ARGS})
5357
else()
5458
add_test_case(${REL_TEST_NAME}
5559
STATIC_LINK_LIBS
5660
parquet_shared
5761
${PARQUET_TEST_LINK_LIBS}
5862
${TEST_ARGUMENTS}
59-
${ARG_UNPARSED_ARGUMENTS})
63+
${_PARQUET_TEST_EXTRA_ARGS})
6064
endif()
6165
endfunction()
6266

@@ -134,6 +138,9 @@ elseif(NOT MSVC)
134138
list(APPEND PARQUET_TEST_LINK_LIBS ${CMAKE_DL_LIBS})
135139
endif()
136140

141+
set(PARQUET_TEST_EXTRA_INCLUDES)
142+
set(PARQUET_PRIVATE_INCLUDE_DIRS)
143+
137144
#
138145
# Generated Thrift sources
139146
set(PARQUET_THRIFT_SOURCE_DIR "${ARROW_SOURCE_DIR}/src/generated/")
@@ -171,8 +178,6 @@ set(PARQUET_SRCS
171178
encryption/internal_file_encryptor.cc
172179
exception.cc
173180
file_reader.cc
174-
thirdparty/fsst/libfsst.cpp
175-
thirdparty/fsst/fsst_avx512.cpp
176181
file_writer.cc
177182
geospatial/statistics.cc
178183
geospatial/util_internal.cc
@@ -193,6 +198,14 @@ set(PARQUET_SRCS
193198
stream_writer.cc
194199
types.cc)
195200

201+
if(DEFINED ARROW_FSST_SOURCES)
202+
list(APPEND PARQUET_SRCS ${ARROW_FSST_SOURCES})
203+
endif()
204+
if(DEFINED ARROW_FSST_INCLUDE_DIR)
205+
list(APPEND PARQUET_PRIVATE_INCLUDE_DIRS ${ARROW_FSST_INCLUDE_DIR})
206+
list(APPEND PARQUET_TEST_EXTRA_INCLUDES ${ARROW_FSST_INCLUDE_DIR})
207+
endif()
208+
196209
if(ARROW_HAVE_RUNTIME_AVX2)
197210
# AVX2 is used as a proxy for BMI2.
198211
list(APPEND PARQUET_SRCS level_comparison_avx2.cc level_conversion_bmi2.cc)
@@ -308,6 +321,14 @@ add_arrow_lib(parquet
308321
STATIC_INSTALL_INTERFACE_LIBS
309322
${PARQUET_STATIC_INSTALL_INTERFACE_LIBS})
310323

324+
if(PARQUET_PRIVATE_INCLUDE_DIRS)
325+
foreach(_parquet_target parquet_objlib parquet_shared parquet_static)
326+
if(TARGET ${_parquet_target})
327+
target_include_directories(${_parquet_target} PRIVATE ${PARQUET_PRIVATE_INCLUDE_DIRS})
328+
endif()
329+
endforeach()
330+
endif()
331+
311332
if(WIN32 AND NOT (ARROW_TEST_LINKAGE STREQUAL "static"))
312333
add_library(parquet_test_support STATIC
313334
"${PARQUET_THRIFT_SOURCE_DIR}/parquet_types.cpp")

cpp/src/parquet/decoder.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@
5353
#include "parquet/exception.h"
5454
#include "parquet/platform.h"
5555
#include "parquet/schema.h"
56-
#include "parquet/thirdparty/fsst/fsst.h"
56+
#include "fsst.h"
5757
#include "parquet/types.h"
5858

5959
#ifdef _MSC_VER

cpp/src/parquet/encoder.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@
5050
#include "parquet/exception.h"
5151
#include "parquet/platform.h"
5252
#include "parquet/schema.h"
53-
#include "parquet/thirdparty/fsst/fsst.h"
53+
#include "fsst.h"
5454
#include "parquet/types.h"
5555

5656
#ifdef _MSC_VER

cpp/src/parquet/encoding_test.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@
5353
#include "parquet/platform.h"
5454
#include "parquet/schema.h"
5555
#include "parquet/test_util.h"
56-
#include "parquet/thirdparty/fsst/fsst.h"
56+
#include "fsst.h"
5757
#include "parquet/types.h"
5858

5959
using arrow::default_memory_pool;

cpp/src/parquet/thirdparty/fsst/fsst.cpp

Lines changed: 0 additions & 200 deletions
This file was deleted.

0 commit comments

Comments
 (0)