X-Git-Url: http://git.openwrt.org//?a=blobdiff_plain;f=CMakeLists.txt;h=0301db5655b0a4e37dc810950f6c6209d9b87575;hb=101870cbc23e6373161958132f83a9968d4a0c53;hp=9b2fd506df43570959bf44a79616f8814051d7a1;hpb=ba3e89199b78c33fc5b0dce6a4456096c71c2e19;p=project%2Fjsonpath.git diff --git a/CMakeLists.txt b/CMakeLists.txt index 9b2fd50..0301db5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,9 +1,9 @@ cmake_minimum_required(VERSION 2.6) PROJECT(jsonpath C) -ADD_DEFINITIONS(-Os -Wall -Werror --std=gnu99 -Wmissing-declarations) +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 "") +SET(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "-Wl,--gc-sections") IF(APPLE) INCLUDE_DIRECTORIES(/opt/local/include) @@ -23,25 +23,26 @@ IF(JSONC_FOUND) INCLUDE_DIRECTORIES(${JSONC_INCLUDE_DIRS}) ENDIF() -FIND_PACKAGE(BISON REQUIRED) -IF(BISON_FOUND) - ADD_CUSTOM_COMMAND( - OUTPUT parser.c - COMMAND ${BISON_EXECUTABLE} parser.y - COMMENT "Generating parser.c" - ) -ENDIF() - -FIND_PACKAGE(FLEX REQUIRED) -IF(FLEX_FOUND) - ADD_CUSTOM_COMMAND( - OUTPUT lexer.c - COMMAND ${FLEX_EXECUTABLE} lexer.l - COMMENT "Generating lexer.c" - ) -ENDIF() - -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" +) + +FIND_PATH(ubox_include_dir libubox/list.h) +INCLUDE_DIRECTORIES(${ubox_include_dir}) + +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)