1
- # use bison for .yy files
2
-
3
- # search for bison
4
- MACRO (FIND_BISON)
5
- IF (NOT BISON_EXECUTABLE)
6
- FIND_PROGRAM (BISON_EXECUTABLE bison)
7
- IF (NOT BISON_EXECUTABLE)
1
+ # use bison for .yy files
2
+
3
+ # search for bison
4
+ MACRO (FIND_BISON)
5
+ IF (NOT BISON_EXECUTABLE)
6
+ FIND_PROGRAM (BISON_EXECUTABLE bison)
7
+ IF (NOT BISON_EXECUTABLE)
8
8
9
- MESSAGE (FATAL_ERROR "Bison not found - aborting" )
9
+ MESSAGE (FATAL_ERROR "Bison not found - aborting" )
10
10
11
11
ELSE (NOT BISON_EXECUTABLE)
12
12
@@ -20,35 +20,48 @@ MACRO(FIND_BISON)
20
20
MESSAGE (FATAL_ERROR "Bison version is too old (${BISON_VERSION_MAJOR} .${BISON_VERSION_MINOR} ). Use 2.0 or higher." )
21
21
ENDIF (BISON_VERSION_MAJOR LESS 2)
22
22
23
- ENDIF (NOT BISON_EXECUTABLE)
24
- ENDIF (NOT BISON_EXECUTABLE)
25
-
26
- ENDMACRO (FIND_BISON)
27
-
28
- MACRO (ADD_BISON_FILES _sources )
29
- FIND_BISON()
30
-
31
- FOREACH (_current_FILE ${ARGN} )
32
- GET_FILENAME_COMPONENT (_in ${_current_FILE} ABSOLUTE )
33
- GET_FILENAME_COMPONENT (_basename ${_current_FILE} NAME_WE )
34
-
35
- SET (_out ${CMAKE_CURRENT_BINARY_DIR} /${_basename} .cpp)
36
-
37
-
23
+ ENDIF (NOT BISON_EXECUTABLE)
24
+ ENDIF (NOT BISON_EXECUTABLE)
25
+
26
+ ENDMACRO (FIND_BISON)
27
+
28
+ MACRO (ADD_BISON_FILES _sources )
29
+ FIND_BISON()
30
+
31
+ FOREACH (_current_FILE ${ARGN} )
32
+ GET_FILENAME_COMPONENT (_in ${_current_FILE} ABSOLUTE )
33
+ GET_FILENAME_COMPONENT (_basename ${_current_FILE} NAME_WE )
34
+
35
+ SET (_out ${CMAKE_CURRENT_BINARY_DIR} /${_basename} .cpp)
36
+ SET (_out_h ${CMAKE_CURRENT_BINARY_DIR} /${_basename} .h)
37
+ SET (_out_hpp ${CMAKE_CURRENT_BINARY_DIR} /${_basename} .hpp)
38
+
38
39
# bison options:
39
40
# -t add debugging facilities
40
41
# -d produce additional header file (used in parser.l)
41
42
# -v produce additional *.output file with parser states
42
-
43
- ADD_CUSTOM_COMMAND (
44
- OUTPUT ${_out}
45
- COMMAND ${BISON_EXECUTABLE}
46
- ARGS
47
- -o${_out} -d -v -t
48
- ${_in}
49
- DEPENDS ${_in}
50
- )
51
-
52
- SET (${_sources} ${${_sources} } ${_out} )
53
- ENDFOREACH (_current_FILE)
54
- ENDMACRO (ADD_BISON_FILES)
43
+
44
+ ADD_CUSTOM_COMMAND (
45
+ OUTPUT ${_out}
46
+ COMMAND ${BISON_EXECUTABLE}
47
+ ARGS
48
+ -o${_out} -d -v -t
49
+ ${_in}
50
+ DEPENDS ${_in}
51
+ )
52
+
53
+ # Hack to change output file name to <include_file>.h
54
+ # instead of <include_file>.hpp
55
+ # (Instead of changing source code)
56
+
57
+ ADD_CUSTOM_COMMAND (
58
+ OUTPUT ${_out_h}
59
+ COMMAND ${CMAKE_COMMAND}
60
+ ARGS
61
+ -E copy ${_out_hpp} ${_out_h}
62
+ DEPENDS ${_out}
63
+ )
64
+
65
+ SET (${_sources} ${${_sources} } ${_out} ${_out_h} )
66
+ ENDFOREACH (_current_FILE)
67
+ ENDMACRO (ADD_BISON_FILES)
0 commit comments