| # - Try to find Bison |
| # Once done this will define |
| # |
| # BISON_FOUND - system has Bison |
| # BISON_EXECUTABLE - path of the bison executable |
| # BISON_VERSION - the version string, like "2.5.31" |
| # |
| |
| MACRO(FIND_BISON) |
| FIND_PROGRAM(BISON_EXECUTABLE NAMES bison) |
| |
| IF(BISON_EXECUTABLE) |
| SET(BISON_FOUND TRUE) |
| |
| EXECUTE_PROCESS(COMMAND ${BISON_EXECUTABLE} --version |
| OUTPUT_VARIABLE _BISON_VERSION |
| ) |
| string (REGEX MATCH "[0-9]+\\.[0-9]+\\.[0-9]+" BISON_VERSION "${_bison_VERSION}") |
| ENDIF(BISON_EXECUTABLE) |
| |
| IF(BISON_FOUND) |
| IF(NOT Bison_FIND_QUIETLY) |
| MESSAGE(STATUS "Found Bison: ${BISON_EXECUTABLE}") |
| ENDIF(NOT Bison_FIND_QUIETLY) |
| ELSE(BISON_FOUND) |
| IF(Bison_FIND_REQUIRED) |
| MESSAGE(FATAL_ERROR "Could not find Bison") |
| ENDIF(Bison_FIND_REQUIRED) |
| ENDIF(BISON_FOUND) |
| ENDMACRO(FIND_BISON) |
| |
| MACRO(BISON_GENERATOR _PREFIX _Y_INPUT _H_OUTPUT _CPP_OUTPUT) |
| IF(BISON_EXECUTABLE) |
| GET_FILENAME_COMPONENT(_Y_DIR ${_Y_INPUT} PATH) |
| ADD_CUSTOM_COMMAND( |
| OUTPUT ${_CPP_OUTPUT} |
| OUTPUT ${_H_OUTPUT} |
| DEPENDS ${_Y_INPUT} |
| COMMAND ${BISON_EXECUTABLE} |
| ARGS |
| -p ${_PREFIX} -o"${_CPP_OUTPUT}" |
| --defines="${_H_OUTPUT}" ${_Y_INPUT} |
| WORKING_DIRECTORY ${_Y_DIR} |
| ) |
| SET_SOURCE_FILES_PROPERTIES( |
| ${_CPP_OUTPUT} ${_H_OUTPUT} |
| GENERATED |
| ) |
| ELSE(BISON_EXECUTABLE) |
| MESSAGE(SEND_ERROR "Can't find bison program, and it's required") |
| ENDIF(BISON_EXECUTABLE) |
| ENDMACRO(BISON_GENERATOR) |