diff options
author | Jo-Philipp Wich <jow@openwrt.org> | 2014-06-15 16:31:14 +0200 |
---|---|---|
committer | Jo-Philipp Wich <jow@openwrt.org> | 2014-06-15 20:59:37 +0200 |
commit | f3830138661374ca10fe6a0b6f2f4b949dea3e5c (patch) | |
tree | 22c1e28df47e02f941dba8160090186481941a0c /CMakeLists.txt | |
parent | 960dafd0b61eb14032d13c1562566618be55133f (diff) | |
download | jsonpath-f3830138661374ca10fe6a0b6f2f4b949dea3e5c.tar.gz |
Switch to sqlite3's lemon parser generator.
This commit drops the flex + bison code in favor to a hand-written
lexer and a new grammar file in lemon syntax.
The change results in a much smaller binary and easier to maintain
code. Code required to build and maintain the AST has been split
off into the ast.c and ast.h files.
Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r-- | CMakeLists.txt | 42 |
1 files changed, 18 insertions, 24 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index ef1a089..8db786e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,7 +1,7 @@ cmake_minimum_required(VERSION 2.6) PROJECT(jsonpath C) -ADD_DEFINITIONS(-Os -Wall -Werror --std=gnu99 -Wmissing-declarations -ffunction-sections) +ADD_DEFINITIONS(-Os -Wall -Werror --std=gnu99 -Wmissing-declarations -Wno-error=unused-variable -ffunction-sections -D_GNU_SOURCE) SET(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "-Wl,--gc-sections") @@ -23,29 +23,23 @@ IF(JSONC_FOUND) INCLUDE_DIRECTORIES(${JSONC_INCLUDE_DIRS}) ENDIF() -FIND_PACKAGE(BISON REQUIRED) -IF(BISON_FOUND) - ADD_CUSTOM_COMMAND( - OUTPUT parser.c - DEPENDS parser.y - COMMAND ${BISON_EXECUTABLE} parser.y - COMMENT "Generating parser.c" - ) -ENDIF() - -FIND_PACKAGE(FLEX REQUIRED) -IF(FLEX_FOUND) - ADD_CUSTOM_COMMAND( - OUTPUT lexer.c - DEPENDS lexer.l - COMMAND ${FLEX_EXECUTABLE} lexer.l - COMMENT "Generating lexer.c" - ) -ENDIF() - -SET_PROPERTY(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES "lexer.h;parser.h") -SET_SOURCE_FILES_PROPERTIES("lexer.c;parser.c" PROPERTIES GENERATED TRUE) -ADD_EXECUTABLE(jsonpath main.c lexer.c parser.c matcher.c) +ADD_CUSTOM_COMMAND( + OUTPUT contrib/lemon + DEPENDS contrib/lemon.c contrib/lempar.c + COMMAND gcc -o contrib/lemon contrib/lemon.c + COMMENT "Generating lemon parser generator" +) + +ADD_CUSTOM_COMMAND( + OUTPUT parser.c + DEPENDS parser.y contrib/lemon + COMMAND ./contrib/lemon parser.y + COMMENT "Generating parser.c" +) + +SET_PROPERTY(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES "lemon;parser.h;parser.out") +SET_SOURCE_FILES_PROPERTIES("parser.c" PROPERTIES GENERATED TRUE) +ADD_EXECUTABLE(jsonpath main.c ast.c lexer.c parser.c matcher.c) TARGET_LINK_LIBRARIES(jsonpath ubox ${json}) INSTALL(TARGETS jsonpath RUNTIME DESTINATION bin) |