Skip to content

Commit 0b50cfd

Browse files
ccat3zzhejiangxiaomai
authored andcommitted
Update build dependencies (#185)
Updated dependencies: libhdfs3: Try find_package first gflags: Allow static library xsimd, gtest: Allow finding from system Arrow, Parquet: Prefer external build if -D<package>_DIR=/path/to/arrow/install is defined flex 2.5.13 -> 2.6.0 (2.6.0 removed register keyword) Compat boost >= 1.79
1 parent 70b9cfb commit 0b50cfd

File tree

4 files changed

+52
-13
lines changed

4 files changed

+52
-13
lines changed

CMakeLists.txt

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -171,10 +171,15 @@ if(VELOX_ENABLE_S3)
171171
endif()
172172

173173
if(VELOX_ENABLE_HDFS)
174-
find_library(
175-
LIBHDFS3
176-
NAMES libhdfs3.so libhdfs3.dylib
177-
HINTS "${CMAKE_SOURCE_DIR}/hawq/depends/libhdfs3/_build/src/" REQUIRED)
174+
find_package(libhdfs3)
175+
if(libhdfs3_FOUND AND TARGET HDFS::hdfs3)
176+
set(LIBHDFS3 HDFS::hdfs3)
177+
else()
178+
find_library(
179+
LIBHDFS3
180+
NAMES libhdfs3.so libhdfs3.dylib
181+
HINTS "${CMAKE_SOURCE_DIR}/hawq/depends/libhdfs3/_build/src/" REQUIRED)
182+
endif()
178183
add_definitions(-DVELOX_ENABLE_HDFS3)
179184
endif()
180185

@@ -329,7 +334,7 @@ resolve_dependency(Boost 1.66.0 COMPONENTS ${BOOST_INCLUDE_LIBRARIES})
329334
# for reference. find_package(range-v3)
330335

331336
set_source(gflags)
332-
resolve_dependency(gflags COMPONENTS shared)
337+
resolve_dependency(gflags)
333338
if(NOT TARGET gflags::gflags)
334339
# This is a bit convoluted, but we want to be able to use gflags::gflags as a
335340
# target even when velox is built as a subproject which uses
@@ -469,7 +474,7 @@ if(CMAKE_HOST_SYSTEM_NAME MATCHES "Darwin")
469474
endif()
470475
endif()
471476
find_package(BISON 3.0.4 REQUIRED)
472-
find_package(FLEX 2.5.13 REQUIRED)
477+
find_package(FLEX 2.6.0 REQUIRED) # for cxx17
473478

474479
include_directories(SYSTEM velox)
475480
include_directories(SYSTEM velox/external)
@@ -478,14 +483,17 @@ include_directories(SYSTEM velox/external/duckdb/tpch/dbgen/include)
478483

479484
# these were previously vendored in third-party/
480485
if(NOT VELOX_DISABLE_GOOGLETEST)
481-
set(gtest_SOURCE BUNDLED)
482-
resolve_dependency(gtest)
483-
set(VELOX_GTEST_INCUDE_DIR
484-
"${gtest_SOURCE_DIR}/googletest/include"
485-
PARENT_SCOPE)
486+
set_source(GTest)
487+
resolve_dependency(GTest)
488+
foreach(tgt gtest gtest_main gmock gmock_main)
489+
if (NOT TARGET ${tgt} AND TARGET GTest::${tgt})
490+
add_library(${tgt} INTERFACE IMPORTED)
491+
target_link_libraries(${tgt} INTERFACE GTest::${tgt})
492+
endif()
493+
endforeach(tgt)
486494
endif()
487495

488-
set(xsimd_SOURCE BUNDLED)
496+
set_source(xsimd)
489497
resolve_dependency(xsimd)
490498

491499
include(CTest) # include after project() but before add_subdirectory()

third_party/CMakeLists.txt

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,35 @@ if(VELOX_ENABLE_ARROW)
2424
else()
2525
set(THRIFT_SOURCE "BUNDLED")
2626
endif()
27+
28+
# Use external arrow & parquet only if <package>_DIR is defined
29+
if(Thrift_FOUND AND DEFINED Arrow_DIR AND DEFINED Parquet_DIR)
30+
find_package(Arrow PATHS "${Arrow_DIR}" NO_DEFAULT_PATH)
31+
find_package(Parquet PATHS "${Parquet_DIR}" NO_DEFAULT_PATH)
32+
if(Arrow_FOUND AND Parquet_FOUND)
33+
add_library(arrow INTERFACE)
34+
add_library(parquet INTERFACE)
35+
add_library(thrift INTERFACE)
36+
37+
if(TARGET Arrow::arrow_static)
38+
target_link_libraries(arrow INTERFACE Arrow::arrow_static)
39+
else()
40+
target_link_libraries(arrow INTERFACE Arrow::arrow_shared)
41+
endif()
42+
43+
if(TARGET Parquet::parquet_static)
44+
target_link_libraries(parquet INTERFACE Parquet::parquet_static)
45+
else()
46+
target_link_libraries(parquet INTERFACE Parquet::parquet_shared)
47+
endif()
48+
49+
target_link_libraries(thrift INTERFACE thrift::thrift)
50+
51+
message(STATUS "Using external arrow")
52+
return()
53+
endif()
54+
endif()
55+
2756
set(ARROW_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/arrow_ep")
2857
set(ARROW_CMAKE_ARGS
2958
-DARROW_PARQUET=ON

velox/connectors/hive/storage_adapters/hdfs/tests/HdfsMiniCluster.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ HdfsMiniCluster::HdfsMiniCluster() {
7272
"Failed to find minicluster executable {}'", miniClusterExecutableName);
7373
}
7474
boost::filesystem::path hadoopHomeDirectory = exePath_;
75-
hadoopHomeDirectory.remove_leaf().remove_leaf();
75+
hadoopHomeDirectory.remove_filename().remove_filename();
7676
setupEnvironment(hadoopHomeDirectory.string());
7777
}
7878

velox/type/UnscaledLongDecimal.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -217,7 +217,9 @@ struct UnscaledLongDecimal {
217217

218218
static inline UnscaledLongDecimal convert(int256_t in, bool* overflow) {
219219
int128_t result;
220+
#ifndef INT128_MAX
220221
int128_t INT128_MAX = int128_t(int128_t(-1L)) >> 1;
222+
#endif
221223
constexpr int256_t UINT128_MASK = std::numeric_limits<uint128_t>::max();
222224

223225
int256_t inAbs = abs(in);

0 commit comments

Comments
 (0)