X-Git-Url: https://git.librecmc.org/?p=oweals%2Fjsonpath.git;a=blobdiff_plain;f=CMakeLists.txt;h=8db786e949225d63cf2cd70707672baff5ef13a8;hp=9b2fd506df43570959bf44a79616f8814051d7a1;hb=691f1065ad33b5d53d342e8705a37563d9ebb8b5;hpb=ba3e89199b78c33fc5b0dce6a4456096c71c2e19 diff --git a/CMakeLists.txt b/CMakeLists.txt index 9b2fd50..8db786e 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,23 @@ 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" +) + +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)