include(${CMAKE_CURRENT_LIST_DIR}/../utils.cmake)
file(READ "${DEPENDENCY_JSON_FILE}" DEP_JSON_STRING)
download_open_source("${OPENSOURCE_COMPONENT_NAME}" "*.tar.gz" "${THIRD_PARTY_CACHE_DIR}")
set(THREAD_NUM "${THREAD_NUM}") # clean warning
set(ABSEILCPP_OUTPUT_DIR "${ABSEILCPP_OUTPUT_DIR}") # clean warning
set(FILE_GLOB_PATTERN "${FILE_GLOB_PATTERN}") # clean warning
list(JOIN THIRD_PARTY_CXX_FLAGS " " THIRD_PARTY_CXX_FLAGS_STR)
if(EXISTS "${RE2_OUTPUT_DIR}/include/re2/re2.h")
message(STATUS "${OPENSOURCE_COMPONENT_NAME} already built, skipping.")
return()
endif()
set(PKG_DOWNLOAD_DIR "${THIRD_PARTY_SRC_DIR}/${OPENSOURCE_COMPONENT_NAME}")
file(MAKE_DIRECTORY "${PKG_DOWNLOAD_DIR}/SOURCE")
file(GLOB RE2_TAR "${PKG_DOWNLOAD_DIR}/*.tar.*")
execute_process(
COMMAND tar xf ${RE2_TAR} -C ${PKG_DOWNLOAD_DIR}/SOURCE
)
file(GLOB SOURCE_DIR_LIST "${PKG_DOWNLOAD_DIR}/SOURCE/re2-*")
list(GET SOURCE_DIR_LIST 0 SOURCE_DIR)
set(RE2_BUILD_DIR "${SOURCE_DIR}/build")
file(MAKE_DIRECTORY "${RE2_BUILD_DIR}")
execute_process(
COMMAND ${CMAKE_COMMAND}
-S ${SOURCE_DIR}
-B ${RE2_BUILD_DIR}
-DCMAKE_INSTALL_PREFIX=${RE2_OUTPUT_DIR}
-DCMAKE_BUILD_TYPE=Release
-DBUILD_SHARED_LIBS=ON
-DCMAKE_POSITION_INDEPENDENT_CODE=ON
-DRE2_BUILD_TESTING=OFF
-DCMAKE_CXX_FLAGS=${THIRD_PARTY_CXX_FLAGS_STR}
-Dabsl_DIR=${ABSEILCPP_OUTPUT_DIR}/lib/cmake/absl
WORKING_DIRECTORY ${RE2_BUILD_DIR}
OUTPUT_QUIET
)
execute_process(
COMMAND ${CMAKE_COMMAND} --build . --parallel ${THREAD_NUM}
WORKING_DIRECTORY ${RE2_BUILD_DIR}
OUTPUT_QUIET
)
execute_process(
COMMAND ${CMAKE_COMMAND} --install .
WORKING_DIRECTORY ${RE2_BUILD_DIR}
OUTPUT_QUIET
)
message(STATUS "${OPENSOURCE_COMPONENT_NAME} has been built and installed to ${RE2_OUTPUT_DIR}")