diff options
author | Jörg Mayer <jmayer@loplof.de> | 2009-05-29 10:57:47 +0000 |
---|---|---|
committer | Jörg Mayer <jmayer@loplof.de> | 2009-05-29 10:57:47 +0000 |
commit | 18887f7b72ee2e4c38774a511b774a5d6e098072 (patch) | |
tree | 839fe8153e295c981b07293d73afe57fab7b80ef /cmake/modules/FindYACC.cmake | |
parent | b4aeb97ed51b1f0d868c8a17ae1d50587a0418f1 (diff) | |
download | wireshark-18887f7b72ee2e4c38774a511b774a5d6e098072.tar.gz |
Resume work on CMake for Wireshark. Finally found and fixed a
few mistakes that I made earlier.
Current status: dumpcap still doesn't build
Next step: Add a ylwrap like workaround for flex misbehaviour.
svn path=/trunk/; revision=28518
Diffstat (limited to 'cmake/modules/FindYACC.cmake')
-rw-r--r-- | cmake/modules/FindYACC.cmake | 42 |
1 files changed, 39 insertions, 3 deletions
diff --git a/cmake/modules/FindYACC.cmake b/cmake/modules/FindYACC.cmake index 31499224fc..c12a4c8226 100644 --- a/cmake/modules/FindYACC.cmake +++ b/cmake/modules/FindYACC.cmake @@ -4,10 +4,10 @@ INCLUDE(FindCygwin) -FIND_PROGRAM(YACC +FIND_PROGRAM(YACC_EXECUTABLE NAMES - yacc bison + yacc PATH ${CYGWIN_INSTALL_PATH}/bin /bin @@ -16,5 +16,41 @@ FIND_PROGRAM(YACC /sbin ) MARK_AS_ADVANCED( - YACC + YACC_EXECUTABLE ) + + +# search flex +MACRO(FIND_YACC) + IF(NOT YACC_EXECUTABLE) + FIND_PROGRAM(YACC_EXECUTABLE bison) + IF (NOT YACC_EXECUTABLE) + MESSAGE(FATAL_ERROR "flex not found - aborting") + ENDIF (NOT YACC_EXECUTABLE) + ENDIF(NOT YACC_EXECUTABLE) +ENDMACRO(FIND_YACC) + +MACRO(ADD_YACC_FILES _sources ) + FIND_YACC() + + 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}.c) + + ADD_CUSTOM_COMMAND( + OUTPUT ${_out} + COMMAND ${YACC_EXECUTABLE} + ARGS + -d + -p ${_basename} + -o${_out} + ${_in} + DEPENDS ${_in} + ) + + SET(${_sources} ${${_sources}} ${_out} ) + ENDFOREACH (_current_FILE) +ENDMACRO(ADD_YACC_FILES) + |