diff options
author | jmayer <jmayer@f5534014-38df-0310-8fa8-9805f1628bb7> | 2009-05-29 10:57:47 +0000 |
---|---|---|
committer | jmayer <jmayer@f5534014-38df-0310-8fa8-9805f1628bb7> | 2009-05-29 10:57:47 +0000 |
commit | b7833b700258228397728b238a5202623b9d50c5 (patch) | |
tree | 839fe8153e295c981b07293d73afe57fab7b80ef /cmake/modules/FindYACC.cmake | |
parent | d07e53f75ad6d12e5e1338566de8d910f433bcad (diff) |
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.
git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@28518 f5534014-38df-0310-8fa8-9805f1628bb7
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) + |