-
Notifications
You must be signed in to change notification settings - Fork 28
Expand file tree
/
Copy pathantlr4-generate.cmake
More file actions
48 lines (39 loc) · 1.46 KB
/
antlr4-generate.cmake
File metadata and controls
48 lines (39 loc) · 1.46 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# This file adds custom targets to generate headers & sources from ANTLR4 grammar files
# To generate all headers and sources
# cmake --build <build> --target antlr_generate_all
# NOTE Environment variable ANTLR_JAR_PATH must be set
macro(add_antlr_target target_name directory grammar_file)
# Stamp file to track generation
set(stamp_file ${directory}/${target_name}.stamp)
# ANTLR generation command
add_custom_command(
OUTPUT ${stamp_file}
WORKING_DIRECTORY ${directory}
COMMAND ${CMAKE_COMMAND} -E env java -jar "${ANTLR_JAR_PATH}"
-Dlanguage=Cpp
-visitor
-no-listener
-o .
${grammar_file}
COMMAND ${CMAKE_COMMAND} -E touch ${stamp_file}
DEPENDS ${directory}/${grammar_file}
COMMENT "Generating C++ files from ${grammar_file}"
VERBATIM
)
# Target to trigger generation
add_custom_target(${target_name} DEPENDS ${stamp_file})
endmacro()
add_antlr_target(antlr_generate_hours_field
${CMAKE_SOURCE_DIR}/libs/antares/additionalConstraintRhsExpression
HoursField.g4)
add_antlr_target(antlr_generate_expression
${CMAKE_SOURCE_DIR}/expressions/antlr-interface
Expr.g4)
add_antlr_target(antlr_generate_scbuilder
${CMAKE_SOURCE_DIR}/libs/antares/scenarioGroupParser/scenarioBuilderExpression
ScenarioBuilder.g4)
add_custom_target(antlr_generate_all
DEPENDS
antlr_generate_hours_field
antlr_generate_expression
antlr_generate_scbuilder)