1.1.3
by Francesco Paolo Lovergine
Import upstream version 0.8.1 |
1 |
# use bison for .yy files
|
2 |
||
3 |
# search for bison
|
|
4 |
MACRO(FIND_BISON) |
|
1.2.1
by Francesco Paolo Lovergine
Import upstream version 1.4.0+12730 |
5 |
IF(NOT BISON_EXECUTABLE) |
6 |
IF (MSVC) |
|
7 |
FIND_PROGRAM(BISON_EXECUTABLE PATHS |
|
8 |
NAMES bison.exe |
|
9 |
PATHS $ENV{LIB_DIR}/bin $ENV{PROGRAMFILES}/GnuWin32/bin |
|
10 |
)
|
|
11 |
ELSE (MSVC) |
|
12 |
FIND_PROGRAM(BISON_EXECUTABLE bison) |
|
13 |
ENDIF (MSVC) |
|
14 |
IF (NOT BISON_EXECUTABLE) |
|
15 |
||
16 |
MESSAGE(FATAL_ERROR "Bison not found - aborting") |
|
17 |
||
18 |
ELSE (NOT BISON_EXECUTABLE) |
|
19 |
||
20 |
EXEC_PROGRAM(${BISON_EXECUTABLE} ARGS --version OUTPUT_VARIABLE BISON_VERSION_STR) |
|
21 |
# get first line in case it's multiline
|
|
22 |
STRING(REGEX REPLACE "([^\n]+).*" "\\1" FIRST_LINE "${BISON_VERSION_STR}") |
|
23 |
# get version information
|
|
24 |
STRING(REGEX REPLACE ".* ([0-9]+)\\.([0-9]+)" "\\1" BISON_VERSION_MAJOR "${FIRST_LINE}") |
|
25 |
STRING(REGEX REPLACE ".* ([0-9]+)\\.([0-9]+)" "\\2" BISON_VERSION_MINOR "${FIRST_LINE}") |
|
26 |
IF (BISON_VERSION_MAJOR LESS 2) |
|
27 |
MESSAGE (FATAL_ERROR "Bison version is too old (${BISON_VERSION_MAJOR}.${BISON_VERSION_MINOR}). Use 2.0 or higher.") |
|
28 |
ENDIF (BISON_VERSION_MAJOR LESS 2) |
|
29 |
||
30 |
ENDIF (NOT BISON_EXECUTABLE) |
|
31 |
ENDIF(NOT BISON_EXECUTABLE) |
|
1.1.3
by Francesco Paolo Lovergine
Import upstream version 0.8.1 |
32 |
|
33 |
ENDMACRO(FIND_BISON) |
|
34 |
||
35 |
MACRO(ADD_BISON_FILES _sources ) |
|
1.2.1
by Francesco Paolo Lovergine
Import upstream version 1.4.0+12730 |
36 |
FIND_BISON() |
37 |
||
38 |
FOREACH (_current_FILE ${ARGN}) |
|
39 |
GET_FILENAME_COMPONENT(_in ${_current_FILE} ABSOLUTE) |
|
40 |
GET_FILENAME_COMPONENT(_basename ${_current_FILE} NAME_WE) |
|
41 |
||
42 |
SET(_out ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.cpp) |
|
43 |
||
44 |
||
45 |
# bison options:
|
|
46 |
# -t add debugging facilities
|
|
47 |
# -d produce additional header file (used in parser.l)
|
|
48 |
# -v produce additional *.output file with parser states
|
|
49 |
||
50 |
ADD_CUSTOM_COMMAND( |
|
51 |
OUTPUT ${_out} |
|
52 |
COMMAND ${BISON_EXECUTABLE} |
|
53 |
ARGS
|
|
54 |
-o${_out} -d -v -t |
|
55 |
${_in} |
|
56 |
DEPENDS ${_in} |
|
57 |
)
|
|
58 |
||
59 |
SET(${_sources} ${${_sources}} ${_out} ) |
|
60 |
ENDFOREACH (_current_FILE) |
|
1.1.3
by Francesco Paolo Lovergine
Import upstream version 0.8.1 |
61 |
ENDMACRO(ADD_BISON_FILES) |