# use bison for .yy files # search for bison MACRO(FIND_BISON) IF(NOT BISON_EXECUTABLE) FIND_PROGRAM(BISON_EXECUTABLE bison) IF (NOT BISON_EXECUTABLE) MESSAGE(FATAL_ERROR "Bison not found - aborting") ENDIF (NOT BISON_EXECUTABLE) ENDIF(NOT BISON_EXECUTABLE) ENDMACRO(FIND_BISON) MACRO(ADD_BISON_FILES _sources ) FIND_BISON() FOREACH (_current_FILE ${ARGN}) GET_FILENAME_COMPONENT(_in ${_current_FILE} ABSOLUTE) GET_FILENAME_COMPONENT(_basename ${_current_FILE} NAME_WE) SET(_out ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.cpp) # bison options: # -t add debugging facilities # -d produce additional header file (used in parser.l) # -v produce additional *.output file with parser states ADD_CUSTOM_COMMAND( OUTPUT ${_out} COMMAND ${BISON_EXECUTABLE} ARGS -o${_out} -d -v -t ${_in} DEPENDS ${_in} ) SET(${_sources} ${${_sources}} ${_out} ) ENDFOREACH (_current_FILE) ENDMACRO(ADD_BISON_FILES)