42 lines
1.8 KiB
CMake
42 lines
1.8 KiB
CMake
## Generate Antlr openCypher parser
|
|
|
|
set(opencypher_frontend ${CMAKE_CURRENT_SOURCE_DIR}/opencypher)
|
|
set(opencypher_generated ${opencypher_frontend}/generated)
|
|
set(opencypher_lexer_grammar ${opencypher_frontend}/grammar/MemgraphCypherLexer.g4)
|
|
set(opencypher_parser_grammar ${opencypher_frontend}/grammar/MemgraphCypher.g4)
|
|
|
|
set(antlr_opencypher_generated_src
|
|
${opencypher_generated}/MemgraphCypherLexer.cpp
|
|
${opencypher_generated}/MemgraphCypher.cpp
|
|
${opencypher_generated}/MemgraphCypherBaseVisitor.cpp
|
|
${opencypher_generated}/MemgraphCypherVisitor.cpp
|
|
)
|
|
set(antlr_opencypher_generated_include
|
|
${opencypher_generated}/MemgraphCypherLexer.h
|
|
${opencypher_generated}/MemgraphCypher.h
|
|
${opencypher_generated}/MemgraphCypherBaseVisitor.h
|
|
${opencypher_generated}/MemgraphCypherVisitor.h
|
|
)
|
|
|
|
add_custom_command(
|
|
OUTPUT ${antlr_opencypher_generated_src} ${antlr_opencypher_generated_include}
|
|
COMMAND ${CMAKE_COMMAND} -E make_directory ${opencypher_generated}
|
|
COMMAND
|
|
java -jar ${CMAKE_SOURCE_DIR}/libs/antlr-4.10.1-complete.jar
|
|
-Dlanguage=Cpp -visitor -package antlropencypher::v2
|
|
-o ${opencypher_generated}
|
|
${opencypher_lexer_grammar} ${opencypher_parser_grammar}
|
|
WORKING_DIRECTORY "${CMAKE_BINARY_DIR}"
|
|
DEPENDS
|
|
${opencypher_lexer_grammar} ${opencypher_parser_grammar}
|
|
${opencypher_frontend}/grammar/CypherLexer.g4
|
|
${opencypher_frontend}/grammar/Cypher.g4)
|
|
|
|
add_custom_target(generated_opencypher_parser
|
|
DEPENDS ${antlr_opencypher_generated_src} ${antlr_opencypher_generated_include})
|
|
|
|
add_library(mg-parser STATIC ${antlr_opencypher_generated_src})
|
|
add_dependencies(mg-parser generated_opencypher_parser)
|
|
target_include_directories(mg-parser PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
|
|
target_link_libraries(mg-parser antlr4)
|