aboutsummaryrefslogtreecommitdiffstats
path: root/cmake/modules/FindLEX.cmake
diff options
context:
space:
mode:
authorJörg Mayer <jmayer@loplof.de>2006-10-24 17:39:32 +0000
committerJörg Mayer <jmayer@loplof.de>2006-10-24 17:39:32 +0000
commite8a5a41045ea1af89a2111701df3c03093b59373 (patch)
tree215b64b41fa646e48e166994be2401233b870af2 /cmake/modules/FindLEX.cmake
parent493ee85cb01efb108d46bd61cca89487f10a3883 (diff)
Parts of http://bugs.wireshark.org/bugzilla/show_bug.cgi?id=1179
Frederic Heem: * More cmake system checks. It compiles dumpcap without running configure, svn path=/trunk/; revision=19672
Diffstat (limited to 'cmake/modules/FindLEX.cmake')
-rw-r--r--cmake/modules/FindLEX.cmake43
1 files changed, 39 insertions, 4 deletions
diff --git a/cmake/modules/FindLEX.cmake b/cmake/modules/FindLEX.cmake
index 31033f23ca..2e307f3605 100644
--- a/cmake/modules/FindLEX.cmake
+++ b/cmake/modules/FindLEX.cmake
@@ -1,10 +1,9 @@
-# - Find unix commands from cygwin
-# This module looks for some usual Unix commands.
+# - Find lex executable
#
INCLUDE(FindCygwin)
-FIND_PROGRAM(LEX
+FIND_PROGRAM(LEX_EXECUTABLE
NAMES
lex
flex
@@ -16,5 +15,41 @@ FIND_PROGRAM(LEX
/sbin
)
MARK_AS_ADVANCED(
- LEX
+ LEX_EXECUTABLE
)
+
+---------
+# flex a .ll file
+
+# search flex
+MACRO(FIND_FLEX)
+ IF(NOT FLEX_EXECUTABLE)
+ FIND_PROGRAM(FLEX_EXECUTABLE flex)
+ IF (NOT FLEX_EXECUTABLE)
+ MESSAGE(FATAL_ERROR "flex not found - aborting")
+ ENDIF (NOT FLEX_EXECUTABLE)
+ ENDIF(NOT FLEX_EXECUTABLE)
+ENDMACRO(FIND_FLEX)
+
+MACRO(ADD_FLEX_FILES _sources )
+ FIND_FLEX()
+
+ 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}/flex_${_basename}.cpp)
+
+ ADD_CUSTOM_COMMAND(
+ OUTPUT ${_out}
+ COMMAND ${FLEX_EXECUTABLE}
+ ARGS
+ -o${_out}
+ ${_in}
+ DEPENDS ${_in}
+ )
+
+ SET(${_sources} ${${_sources}} ${_out} )
+ ENDFOREACH (_current_FILE)
+ENDMACRO(ADD_FLEX_FILES)
+