diff --git a/CMakeLists.txt b/CMakeLists.txt index c4c8b3e..dd55f05 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -17,14 +17,38 @@ FIND_PROGRAM(CTYPESGEN_FOUND ctypesgen.py) FIND_PACKAGE(BISON 3) FIND_PACKAGE(FLEX) IF (BISON_FOUND) - BISON_TARGET(graphqlparser parser.ypp ${CMAKE_CURRENT_SOURCE_DIR}/parser.tab.cpp) + BISON_TARGET(graphqlparser_bison parser.ypp ${CMAKE_CURRENT_BINARY_DIR}/parser.tab.cpp) + SET(BISON_LOCATION_HEADER ${CMAKE_CURRENT_BINARY_DIR}/location.hh) +ELSE() + SET(BISON_graphqlparser_bison_OUTPUT_SOURCE ${CMAKE_CURRENT_BINARY_DIR}/parser.tab.cpp) + SET(BISON_graphqlparser_bison_OUTPUT_HEADER ${CMAKE_CURRENT_BINARY_DIR}/parser.tab.hpp) + SET(BISON_graphqlparser_bison_OUTPUTS + ${BISON_graphqlparser_bison_OUTPUT_SOURCE} + ${BISON_graphqlparser_bison_OUTPUT_HEADER} + ${CMAKE_CURRENT_BINARY_DIR}/location.hh + ${CMAKE_CURRENT_BINARY_DIR}/position.hh + ${CMAKE_CURRENT_BINARY_DIR}/stack.hh) + SET(BISON_LOCATION_HEADER ${CMAKE_CURRENT_BINARY_DIR}/location.hh) + FILE(COPY + ${CMAKE_CURRENT_SOURCE_DIR}/parsergen/parser.tab.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/parsergen/parser.tab.hpp + ${CMAKE_CURRENT_SOURCE_DIR}/parsergen/location.hh + ${CMAKE_CURRENT_SOURCE_DIR}/parsergen/position.hh + ${CMAKE_CURRENT_SOURCE_DIR}/parsergen/stack.hh + ${CMAKE_CURRENT_BINARY_DIR}) ENDIF() IF(FLEX_FOUND) - FLEX_TARGET(GraphQLScanner lexer.lpp ${CMAKE_CURRENT_SOURCE_DIR}/lexer.cpp COMPILE_FLAGS "--header-file=lexer.h") + FLEX_TARGET(GraphQLScanner lexer.lpp ${CMAKE_CURRENT_BINARY_DIR}/lexer.cpp COMPILE_FLAGS "--header-file=${CMAKE_CURRENT_BINARY_DIR}/lexer.h") IF (BISON_FOUND) - ADD_FLEX_BISON_DEPENDENCY(GraphQLScanner graphqlparser) + ADD_FLEX_BISON_DEPENDENCY(GraphQLScanner graphqlparser_bison) ENDIF() +ELSE() + SET(FLEX_GraphQLScanner_OUTPUTS ${CMAKE_CURRENT_BINARY_DIR}/lexer.cpp) + FILE(COPY + ${CMAKE_CURRENT_SOURCE_DIR}/parsergen/lexer.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/parsergen/lexer.h + ${CMAKE_CURRENT_BINARY_DIR}) ENDIF() FILE(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/c) @@ -41,15 +65,13 @@ ADD_LIBRARY(graphqlparser SHARED ${CMAKE_CURRENT_BINARY_DIR}/c/GraphQLAstForEachConcreteType.h ${CMAKE_CURRENT_BINARY_DIR}/JsonVisitor.h.inc ${CMAKE_CURRENT_BINARY_DIR}/JsonVisitor.cpp.inc + ${BISON_graphqlparser_bison_OUTPUTS} + ${FLEX_GraphQLScanner_OUTPUTS} c/GraphQLAstNode.cpp c/GraphQLAstToJSON.cpp c/GraphQLAstVisitor.h c/GraphQLAstVisitor.cpp c/GraphQLParser.cpp - parser.tab.cpp - parser.tab.hpp - lexer.cpp - lexer.h GraphQLParser.cpp) # Enable this and remove CMAKE_CXX_FLAGS fiddle above when we are able @@ -97,12 +119,7 @@ INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/AstVisitor.h GraphQLParser.h JsonVisitor.h - lexer.h - location.hh - parser.tab.hpp - position.hh - stack.hh - syntaxdefs.h + ${BISON_LOCATION_HEADER} DESTINATION include/graphqlparser) INSTALL(TARGETS graphqlparser LIBRARY DESTINATION lib) diff --git a/lexer.cpp b/parsergen/lexer.cpp similarity index 100% rename from lexer.cpp rename to parsergen/lexer.cpp diff --git a/lexer.h b/parsergen/lexer.h similarity index 100% rename from lexer.h rename to parsergen/lexer.h diff --git a/location.hh b/parsergen/location.hh similarity index 100% rename from location.hh rename to parsergen/location.hh diff --git a/parser.tab.cpp b/parsergen/parser.tab.cpp similarity index 100% rename from parser.tab.cpp rename to parsergen/parser.tab.cpp diff --git a/parser.tab.hpp b/parsergen/parser.tab.hpp similarity index 100% rename from parser.tab.hpp rename to parsergen/parser.tab.hpp diff --git a/position.hh b/parsergen/position.hh similarity index 100% rename from position.hh rename to parsergen/position.hh diff --git a/stack.hh b/parsergen/stack.hh similarity index 100% rename from stack.hh rename to parsergen/stack.hh