enh: lemon

This commit is contained in:
xsren 2024-11-04 20:24:23 +08:00
parent 02ed4f457d
commit 7085e25388
3 changed files with 32 additions and 0 deletions

View File

@ -0,0 +1,10 @@
# lemon
ExternalProject_Add(
lemon
URL https://www.sqlite.org/src/tarball/sqlite.tar.gz?r=release
CONFIGURE_COMMAND ""
BUILD_COMMAND ${CMAKE_C_COMPILER} -o ${TD_CONTRIB_DIR}/deps-download/lemon-prefix/src/lemon-build/lemon ${TD_CONTRIB_DIR}/deps-download/lemon-prefix/src/lemon/tool/lemon.c
INSTALL_COMMAND cp ${TD_CONTRIB_DIR}/deps-download/lemon-prefix/src/lemon-build/lemon ${CMAKE_BINARY_DIR}/bin/lemon
INSTALL_COMMAND cp ${TD_CONTRIB_DIR}/deps-download/lemon-prefix/src/lemon/tool/lempar.c ${CMAKE_BINARY_DIR}/bin/lempar.c
BUILD_IN_SOURCE 1
)

View File

@ -184,6 +184,9 @@ if(${BUILD_PCRE2})
cat("${TD_SUPPORT_DIR}/pcre2_CMakeLists.txt.in" ${CONTRIB_TMP_FILE})
endif()
# lemon
cat("${TD_SUPPORT_DIR}/lemon_CMakeLists.txt.in" ${CONTRIB_TMP_FILE})
# download dependencies
configure_file(${CONTRIB_TMP_FILE} "${TD_CONTRIB_DIR}/deps-download/CMakeLists.txt")
execute_process(COMMAND "${CMAKE_COMMAND}" -G "${CMAKE_GENERATOR}" .

View File

@ -4,7 +4,26 @@ IF(TD_ENTERPRISE)
LIST(APPEND PARSER_SRC ${TD_ENTERPRISE_DIR}/src/plugins/view/src/parserView.c)
ENDIF()
add_custom_command(
OUTPUT ${TD_SOURCE_DIR}/source/libs/parser/src/sql.c
COMMAND echo "Running lemon process in ${TD_SOURCE_DIR}/source/libs/parser/inc"
COMMAND ${CMAKE_BINARY_DIR}/bin/lemon sql.y || true
COMMAND echo "copy sql.c from ${TD_SOURCE_DIR}/source/libs/parser/inc/sql.c to ${TD_SOURCE_DIR}/source/libs/parser/src/"
COMMAND cp ${TD_SOURCE_DIR}/source/libs/parser/inc/sql.c ${TD_SOURCE_DIR}/source/libs/parser/src/
COMMAND echo "lemon process completed."
DEPENDS ${TD_SOURCE_DIR}/source/libs/parser/inc/sql.y
WORKING_DIRECTORY ${TD_SOURCE_DIR}/source/libs/parser/inc
COMMENT "Generating sql.c using lemon"
)
add_custom_target(lemon_target
DEPENDS ${TD_SOURCE_DIR}/source/libs/parser/src/sql.c
)
list(APPEND PARSER_SRC ${TD_SOURCE_DIR}/source/libs/parser/src/sql.c)
add_library(parser STATIC ${PARSER_SRC})
add_dependencies(parser lemon_target)
target_include_directories(
parser
PUBLIC "${TD_SOURCE_DIR}/include/libs/parser"