summaryrefslogtreecommitdiff
path: root/cmake/modules/FindYACC.cmake
diff options
context:
space:
mode:
authorJörg Mayer <jmayer@loplof.de>2009-05-29 10:57:47 +0000
committerJörg Mayer <jmayer@loplof.de>2009-05-29 10:57:47 +0000
commit18887f7b72ee2e4c38774a511b774a5d6e098072 (patch)
tree839fe8153e295c981b07293d73afe57fab7b80ef /cmake/modules/FindYACC.cmake
parentb4aeb97ed51b1f0d868c8a17ae1d50587a0418f1 (diff)
downloadwireshark-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.cmake42
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)
+