@@ -149,6 +149,18 @@ else()
149149 endif ()
150150endif ()
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+
152164if (DEFINED ENV{PAIMON_GLOG_URL})
153165 set (GLOG_SOURCE_URL "$ENV{PAIMON_GLOG_URL} " )
154166else ()
@@ -645,6 +657,34 @@ macro(build_boost)
645657 add_dependencies (boost_system boost_ep )
646658endmacro (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+
648688macro (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
13921441build_fmt ()
13931442build_rapidjson ()
1443+ build_re2 ()
13941444build_snappy ()
13951445build_zstd ()
13961446build_zlib ()
0 commit comments