Skip to content

Commit 2de5638

Browse files
authored
feat: add RE2 as a third-party dependency for Arrow build (alibaba#213)
1 parent 2b81df4 commit 2de5638

2 files changed

Lines changed: 56 additions & 1 deletion

File tree

cmake_modules/ThirdpartyToolchain.cmake

Lines changed: 51 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,18 @@ else()
149149
endif()
150150
endif()
151151

152+
if(DEFINED ENV{PAIMON_RE2_URL})
153+
set(RE2_SOURCE_URL "$ENV{PAIMON_RE2_URL}")
154+
else()
155+
if(EXISTS "${THIRDPARTY_DIR}/${PAIMON_RE2_PKG_NAME}")
156+
set_urls(RE2_SOURCE_URL "${THIRDPARTY_DIR}/${PAIMON_RE2_PKG_NAME}")
157+
else()
158+
set_urls(RE2_SOURCE_URL
159+
"${THIRDPARTY_MIRROR_URL}https://github.com/google/re2/archive/${PAIMON_RE2_BUILD_VERSION}.tar.gz"
160+
)
161+
endif()
162+
endif()
163+
152164
if(DEFINED ENV{PAIMON_GLOG_URL})
153165
set(GLOG_SOURCE_URL "$ENV{PAIMON_GLOG_URL}")
154166
else()
@@ -645,6 +657,34 @@ macro(build_boost)
645657
add_dependencies(boost_system boost_ep)
646658
endmacro(build_boost)
647659

660+
macro(build_re2)
661+
message(STATUS "Building RE2 from source")
662+
set(RE2_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/re2_ep-install")
663+
set(RE2_INCLUDE_DIR "${RE2_PREFIX}/include")
664+
set(RE2_STATIC_LIB
665+
"${RE2_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}re2${CMAKE_STATIC_LIBRARY_SUFFIX}"
666+
)
667+
set(RE2_LIBRARIES ${RE2_STATIC_LIB})
668+
669+
set(RE2_CMAKE_ARGS ${EP_COMMON_CMAKE_ARGS} "-DCMAKE_INSTALL_PREFIX=${RE2_PREFIX}")
670+
671+
externalproject_add(re2_ep
672+
${EP_COMMON_OPTIONS}
673+
INSTALL_DIR ${RE2_PREFIX}
674+
URL ${RE2_SOURCE_URL}
675+
URL_HASH "SHA256=${PAIMON_RE2_BUILD_SHA256_CHECKSUM}"
676+
CMAKE_ARGS ${RE2_CMAKE_ARGS} ${THIRDPARTY_LOG_OPTIONS}
677+
BUILD_BYPRODUCTS "${RE2_STATIC_LIB}")
678+
679+
file(MAKE_DIRECTORY "${RE2_INCLUDE_DIR}")
680+
681+
include_directories(SYSTEM ${RE2_INCLUDE_DIR})
682+
add_library(re2::re2 STATIC IMPORTED)
683+
set_target_properties(re2::re2 PROPERTIES IMPORTED_LOCATION "${RE2_STATIC_LIB}")
684+
target_include_directories(re2::re2 INTERFACE "${RE2_INCLUDE_DIR}")
685+
add_dependencies(re2::re2 re2_ep)
686+
endmacro()
687+
648688
macro(build_snappy)
649689
message(STATUS "Building snappy from source")
650690
set(SNAPPY_HOME "${CMAKE_CURRENT_BINARY_DIR}/snappy_ep-install")
@@ -1080,6 +1120,9 @@ macro(build_arrow)
10801120
get_target_property(ARROW_ZLIB_INCLUDE_DIR zlib INTERFACE_INCLUDE_DIRECTORIES)
10811121
get_filename_component(ARROW_ZLIB_ROOT "${ARROW_ZLIB_INCLUDE_DIR}" DIRECTORY)
10821122

1123+
get_target_property(ARROW_RE2_INCLUDE_DIR re2::re2 INTERFACE_INCLUDE_DIRECTORIES)
1124+
get_filename_component(ARROW_RE2_ROOT "${ARROW_RE2_INCLUDE_DIR}" DIRECTORY)
1125+
10831126
set(ARROW_CMAKE_CXX_FLAGS "${EP_CXX_FLAGS} -Wno-error")
10841127
set(ARROW_CMAKE_C_FLAGS "${EP_C_FLAGS} -Wno-error")
10851128
string(REPLACE "-Werror" "" ARROW_CMAKE_CXX_FLAGS ${ARROW_CMAKE_CXX_FLAGS})
@@ -1146,6 +1189,7 @@ macro(build_arrow)
11461189
-DZLIB_ROOT=${ARROW_ZLIB_ROOT}
11471190
-DSnappy_ROOT=${ARROW_SNAPPY_ROOT}
11481191
-DLZ4_ROOT=${ARROW_LZ4_ROOT}
1192+
-Dre2_ROOT=${ARROW_RE2_ROOT}
11491193
-DBUILD_WARNING_LEVEL=PRODUCTION) # ignore warnings under gcc8
11501194

11511195
set(ARROW_CONFIGURE SOURCE_SUBDIR "cpp" CMAKE_ARGS ${ARROW_CMAKE_ARGS})
@@ -1163,7 +1207,11 @@ macro(build_arrow)
11631207
"${PARQUET_STATIC_LIB}"
11641208
"${ARROW_DATASET_STATIC_LIB}"
11651209
"${ARROW_ACERO_STATIC_LIB}"
1166-
DEPENDS zstd snappy lz4 zlib)
1210+
DEPENDS zstd
1211+
snappy
1212+
lz4
1213+
zlib
1214+
re2::re2)
11671215

11681216
add_library(arrow STATIC IMPORTED)
11691217
set_target_properties(arrow
@@ -1218,6 +1266,7 @@ macro(build_arrow)
12181266
snappy
12191267
lz4
12201268
zlib
1269+
re2::re2
12211270
arrow_bundled_dependencies)
12221271

12231272
target_link_libraries(parquet
@@ -1391,6 +1440,7 @@ endmacro()
13911440

13921441
build_fmt()
13931442
build_rapidjson()
1443+
build_re2()
13941444
build_snappy()
13951445
build_zstd()
13961446
build_zlib()

third_party/versions.txt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,10 @@ PAIMON_GLOG_BUILD_VERSION=v0.7.1
7676
PAIMON_GLOG_BUILD_SHA256_CHECKSUM=00e4a87e87b7e7612f519a41e491f16623b12423620006f59f5688bfd8d13b08
7777
PAIMON_GLOG_PKG_NAME=glog-${PAIMON_GLOG_BUILD_VERSION}.tar.gz
7878

79+
PAIMON_RE2_BUILD_VERSION=2022-06-01
80+
PAIMON_RE2_BUILD_SHA256_CHECKSUM=f89c61410a072e5cbcf8c27e3a778da7d6fd2f2b5b1445cd4f4508bee946ab0f
81+
PAIMON_RE2_PKG_NAME=re2-${PAIMON_RE2_BUILD_VERSION}.tar.gz
82+
7983
PAIMON_RAPIDJSON_BUILD_VERSION=232389d4f1012dddec4ef84861face2d2ba85709
8084
PAIMON_RAPIDJSON_BUILD_SHA256_CHECKSUM=b9290a9a6d444c8e049bd589ab804e0ccf2b05dc5984a19ed5ae75d090064806
8185
PAIMON_RAPIDJSON_PKG_NAME=rapidjson-${PAIMON_RAPIDJSON_BUILD_VERSION}.tar.gz
@@ -125,6 +129,7 @@ DEPENDENCIES=(
125129
"PAIMON_FMT_URL ${PAIMON_FMT_PKG_NAME} ${THIRDPARTY_MIRROR_URL}https://github.com/fmtlib/fmt/archive/refs/tags/${PAIMON_FMT_BUILD_VERSION}.tar.gz"
126130
"PAIMON_GLOG_URL ${PAIMON_GLOG_PKG_NAME} ${THIRDPARTY_MIRROR_URL}https://github.com/google/glog/archive/${PAIMON_GLOG_BUILD_VERSION}.tar.gz"
127131
"PAIMON_RAPIDJSON_URL ${PAIMON_RAPIDJSON_PKG_NAME} ${THIRDPARTY_MIRROR_URL}https://github.com/miloyip/rapidjson/archive/${PAIMON_RAPIDJSON_BUILD_VERSION}.tar.gz"
132+
"PAIMON_RE2_URL ${PAIMON_RE2_PKG_NAME} ${THIRDPARTY_MIRROR_URL}https://github.com/google/re2/archive/${PAIMON_RE2_BUILD_VERSION}.tar.gz"
128133
"PAIMON_JINDOSDK_C_LINUX_X86_64_URL ${PAIMON_JINDOSDK_C_LINUX_X86_64_PKG_NAME} https://jindodata-binary.oss-cn-shanghai.aliyuncs.com/release/${PAIMON_JINDOSDK_C_BUILD_VERSION}/jindosdk-${PAIMON_JINDOSDK_C_BUILD_VERSION}-linux.tar.gz"
129134
"PAIMON_JINDOSDK_C_LINUX_AARCH64_URL ${PAIMON_JINDOSDK_C_LINUX_AARCH64_PKG_NAME} https://jindodata-binary.oss-cn-shanghai.aliyuncs.com/release/${PAIMON_JINDOSDK_C_BUILD_VERSION}/jindosdk-${PAIMON_JINDOSDK_C_BUILD_VERSION}-linux-el7-aarch64.tar.gz"
130135
"PAIMON_JINDOSDK_C_MACOS_X86_64_URL ${PAIMON_JINDOSDK_C_MACOS_X86_64_PKG_NAME} https://jindodata-binary.oss-cn-shanghai.aliyuncs.com/release/${PAIMON_JINDOSDK_C_BUILD_VERSION}/jindosdk-${PAIMON_JINDOSDK_C_BUILD_VERSION}-macos-11_0-x86_64.tar.gz"

0 commit comments

Comments
 (0)