mirror of
https://github.com/openappsec/openappsec.git
synced 2025-11-16 09:21:54 +03:00
Feb 15th 2023 update
This commit is contained in:
148
external/graphqlparser/CMakeLists.txt
vendored
Normal file
148
external/graphqlparser/CMakeLists.txt
vendored
Normal file
@@ -0,0 +1,148 @@
|
||||
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
|
||||
PROJECT(libgraphqlparser C CXX)
|
||||
|
||||
SET(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake" "${CMAKE_MODULE_PATH}")
|
||||
|
||||
INCLUDE(version)
|
||||
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11")
|
||||
|
||||
FIND_PACKAGE(PythonInterp 2 REQUIRED)
|
||||
IF (NOT PYTHON_VERSION_MAJOR EQUAL 2)
|
||||
MESSAGE(FATAL_ERROR "Python 2 is required.")
|
||||
ENDIF()
|
||||
|
||||
FIND_PROGRAM(CTYPESGEN_FOUND ctypesgen.py)
|
||||
|
||||
FIND_PACKAGE(BISON 3)
|
||||
FIND_PACKAGE(FLEX)
|
||||
IF (BISON_FOUND)
|
||||
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
|
||||
DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
|
||||
ENDIF()
|
||||
|
||||
IF(FLEX_FOUND)
|
||||
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_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
|
||||
DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
|
||||
ENDIF()
|
||||
|
||||
FILE(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/c)
|
||||
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR})
|
||||
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR})
|
||||
|
||||
ADD_LIBRARY(graphqlparser
|
||||
JsonVisitor.cpp
|
||||
${CMAKE_CURRENT_BINARY_DIR}/Ast.h
|
||||
${CMAKE_CURRENT_BINARY_DIR}/Ast.cpp
|
||||
${CMAKE_CURRENT_BINARY_DIR}/AstVisitor.h
|
||||
${CMAKE_CURRENT_BINARY_DIR}/c/GraphQLAst.h
|
||||
${CMAKE_CURRENT_BINARY_DIR}/c/GraphQLAst.cpp
|
||||
${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
|
||||
GraphQLParser.cpp)
|
||||
|
||||
# Enable this and remove CMAKE_CXX_FLAGS fiddle above when we are able
|
||||
# to upgrade to CMake 2.8.12. Blocker seems to be Travis CI being on
|
||||
# Ubuntu Precise; Trusty has 2.8.12.
|
||||
# TARGET_COMPILE_OPTIONS(graphqlparser PUBLIC -std=gnu++11)
|
||||
|
||||
ADD_EXECUTABLE(dump_json_ast dump_json_ast.cpp)
|
||||
TARGET_LINK_LIBRARIES(dump_json_ast graphqlparser)
|
||||
|
||||
FUNCTION(GENERATE_AST_FILE FILE_TYPE FILE_RELATIVE_PATH)
|
||||
ADD_CUSTOM_COMMAND(
|
||||
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${FILE_RELATIVE_PATH}
|
||||
COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/ast/ast.py ${FILE_TYPE} ${CMAKE_CURRENT_SOURCE_DIR}/ast/ast.ast > ${CMAKE_CURRENT_BINARY_DIR}/${FILE_RELATIVE_PATH}
|
||||
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/ast/ast.ast ${CMAKE_CURRENT_SOURCE_DIR}/ast/ast.py ${CMAKE_CURRENT_SOURCE_DIR}/ast/${FILE_TYPE}.py)
|
||||
ENDFUNCTION(GENERATE_AST_FILE)
|
||||
|
||||
GENERATE_AST_FILE(cxx Ast.h)
|
||||
|
||||
GENERATE_AST_FILE(cxx_visitor AstVisitor.h)
|
||||
|
||||
GENERATE_AST_FILE(cxx_impl Ast.cpp)
|
||||
|
||||
GENERATE_AST_FILE(c c/GraphQLAst.h)
|
||||
|
||||
GENERATE_AST_FILE(c_impl c/GraphQLAst.cpp)
|
||||
|
||||
GENERATE_AST_FILE(c_visitor_impl c/GraphQLAstForEachConcreteType.h)
|
||||
|
||||
GENERATE_AST_FILE(cxx_json_visitor_header JsonVisitor.h.inc)
|
||||
|
||||
GENERATE_AST_FILE(cxx_json_visitor_impl JsonVisitor.cpp.inc)
|
||||
|
||||
ADD_SUBDIRECTORY(python)
|
||||
|
||||
OPTION(test "Build tests." OFF)
|
||||
|
||||
INSTALL(DIRECTORY c ${CMAKE_CURRENT_BINARY_DIR}/c DESTINATION include/graphqlparser
|
||||
FILES_MATCHING PATTERN "*.h"
|
||||
PATTERN "build" EXCLUDE)
|
||||
|
||||
INSTALL(FILES
|
||||
${CMAKE_CURRENT_BINARY_DIR}/Ast.h
|
||||
AstNode.h
|
||||
${CMAKE_CURRENT_BINARY_DIR}/AstVisitor.h
|
||||
GraphQLParser.h
|
||||
JsonVisitor.h
|
||||
${BISON_LOCATION_HEADER}
|
||||
DESTINATION include/graphqlparser)
|
||||
INSTALL(TARGETS graphqlparser
|
||||
LIBRARY DESTINATION lib)
|
||||
|
||||
if (UNIX)
|
||||
# generate pkgconfig file
|
||||
include(FindPkgConfig QUIET)
|
||||
if(PKG_CONFIG_FOUND)
|
||||
# generate .pc and install
|
||||
configure_file("libgraphqlparser.pc.in" "libgraphqlparser.pc" @ONLY)
|
||||
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/libgraphqlparser.pc"
|
||||
DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/pkgconfig")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
IF (test)
|
||||
ADD_SUBDIRECTORY(test)
|
||||
|
||||
if(UNIX)
|
||||
# setup valgrind
|
||||
ADD_CUSTOM_TARGET(memcheck
|
||||
valgrind --leak-check=full --suppressions=./test/valgrind.supp --dsymutil=yes --error-exitcode=1 ./test/runTests >/dev/null
|
||||
)
|
||||
endif()
|
||||
|
||||
ENDIF()
|
||||
Reference in New Issue
Block a user