~zorba-coders/zorba/bug1024580

« back to all changes in this revision

Viewing changes to cmake_modules/CMakeUseFlex.cmake

  • Committer: Rodolfo Ochoa
  • Date: 2012-09-08 16:36:08 UTC
  • mfrom: (10937.1.51 zorba)
  • Revision ID: rodolfo.ochoa@gmail.com-20120908163608-mz55ayoa8lznh7i3
MergeĀ fromĀ trunk

Show diffs side-by-side

added added

removed removed

Lines of Context:
39
39
    # Extract major and minor versions
40
40
    STRING (REGEX REPLACE "[^0-9]*([0-9]+)..*" "\\1" FLEX_MAJOR_VERSION_TMP ${FLEX_VERSION})
41
41
    STRING (REGEX REPLACE "[^0-9]*[0-9]+\\.([0-9]+).*" "\\1" FLEX_MINOR_VERSION_TMP ${FLEX_VERSION})
42
 
        STRING (REGEX REPLACE "[^0-9]*[0-9]+\\.[0-9]+\\.([0-9]+[a-z]*).*" "\\1" FLEX_REVISION_VERSION_TMP ${FLEX_VERSION})      
 
42
    STRING (REGEX REPLACE "[^0-9]*[0-9]+\\.[0-9]+\\.([0-9]+[a-z]*).*" "\\1" FLEX_REVISION_VERSION_TMP ${FLEX_VERSION})
43
43
    MESSAGE(STATUS "Found flex -- ${FLEX_EXECUTABLE}, version: " ${FLEX_MAJOR_VERSION_TMP} "." ${FLEX_MINOR_VERSION_TMP} "." ${FLEX_REVISION_VERSION_TMP})
44
44
    SET (FLEX_MAJOR_VERSION ${FLEX_MAJOR_VERSION_TMP} CACHE STRING "The flex major version" FORCE)
45
45
    SET (FLEX_MINOR_VERSION ${FLEX_MINOR_VERSION_TMP} CACHE STRING "The flex minor version" FORCE)
46
 
        SET (FLEX_REVISION_VERSION ${FLEX_REVISION_VERSION_TMP} CACHE STRING "The flex revision version" FORCE)
 
46
    SET (FLEX_REVISION_VERSION ${FLEX_REVISION_VERSION_TMP} CACHE STRING "The flex revision version" FORCE)
 
47
 
 
48
    # Find the FlexLexer.h header. Try our best to find the one associated
 
49
    # with the flex binary we're actually using.
 
50
    GET_FILENAME_COMPONENT(_flex_path "${FLEX_EXECUTABLE}" PATH)
 
51
    GET_FILENAME_COMPONENT(_flex_hint "${_flex_path}/../include" ABSOLUTE)
 
52
    FIND_PATH(FLEX_INCLUDE_DIR FlexLexer.h HINTS "${_flex_hint}")
 
53
 
47
54
  ELSE (FLEX_EXECUTABLE)
48
55
    SET (FLEX_MAJOR_VERSION "0")
49
56
    SET (FLEX_MINOR_VERSION "0")
50
 
          SET (FLEX_REVISION_VERSION "0")
 
57
    SET (FLEX_REVISION_VERSION "0")
51
58
  ENDIF(FLEX_EXECUTABLE)
52
59
  SET (FLEX_VERSION_FULL ${FLEX_MAJOR_VERSION}.${FLEX_MINOR_VERSION}.${FLEX_REVISION_VERSION} CACHE STRING "The Flex version" FORCE)
53
60
ENDIF(NOT FLEX_EXECUTABLE)
63
70
    ELSE(FLEX_PREFIX_OUTPUTS)
64
71
      SET(PREFIX "yy")
65
72
    ENDIF(FLEX_PREFIX_OUTPUTS)
 
73
    # If we regenerate the scanner, be sure to copy the corresponding
 
74
    # FlexLexer.h as well. Put it in the top-level src/ directory since
 
75
    # that path is on the include-directories list; also, that way
 
76
    # multiple flex'd files will all share the include file.
 
77
    SET(FLEXLEXERH "${CMAKE_CURRENT_BINARY_DIR}/FlexLexer.h")
 
78
    ADD_CUSTOM_COMMAND(
 
79
      OUTPUT "${FLEXLEXERH}"
 
80
      COMMAND "${CMAKE_COMMAND}"
 
81
      ARGS -E copy_if_different
 
82
         "${FLEX_INCLUDE_DIR}/FlexLexer.h"
 
83
         "${FLEXLEXERH}")
66
84
    SET(OUTFILE "${CMAKE_CURRENT_BINARY_DIR}/${PATH}/${PREFIX}.cpp")
67
85
    ADD_CUSTOM_COMMAND(
68
86
      OUTPUT "${OUTFILE}"
69
87
      COMMAND "${FLEX_EXECUTABLE}"
70
 
      ARGS -t 
71
 
          "--debug"
72
 
      "${CMAKE_CURRENT_SOURCE_DIR}/${FILENAME}"
73
 
      > ${OUTFILE}
74
 
      DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/${FILENAME}")
 
88
      ARGS -t --debug "${CMAKE_CURRENT_SOURCE_DIR}/${FILENAME}"
 
89
      # flex's --outfile doesn't seem to work right, so redirect stdout
 
90
          > "${OUTFILE}"
 
91
      DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/${FILENAME}"
 
92
         "${FLEXLEXERH}")
75
93
    SET_SOURCE_FILES_PROPERTIES("${OUTFILE}" PROPERTIES GENERATED TRUE)
76
94
  ENDMACRO(FLEX_FILE)
77
95
ENDIF(FLEX_EXECUTABLE)