|  | @@ -142,8 +142,6 @@ if(FLEX_EXECUTABLE)
 | 
	
		
			
				|  |  |    #============================================================
 | 
	
		
			
				|  |  |    #
 | 
	
		
			
				|  |  |    macro(FLEX_TARGET Name Input Output)
 | 
	
		
			
				|  |  | -    set(FLEX_TARGET_outputs "${Output}")
 | 
	
		
			
				|  |  | -    set(FLEX_EXECUTABLE_opts "")
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      set(FLEX_TARGET_PARAM_OPTIONS)
 | 
	
		
			
				|  |  |      set(FLEX_TARGET_PARAM_ONE_VALUE_KEYWORDS
 | 
	
	
		
			
				|  | @@ -165,31 +163,68 @@ if(FLEX_EXECUTABLE)
 | 
	
		
			
				|  |  |      if(NOT "${FLEX_TARGET_ARG_UNPARSED_ARGUMENTS}" STREQUAL "")
 | 
	
		
			
				|  |  |        message(SEND_ERROR ${FLEX_TARGET_usage})
 | 
	
		
			
				|  |  |      else()
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      cmake_policy(GET CMP0098 _flex_CMP0098
 | 
	
		
			
				|  |  | +          PARENT_SCOPE # undocumented, do not use outside of CMake
 | 
	
		
			
				|  |  | +        )
 | 
	
		
			
				|  |  | +      set(_flex_INPUT "${Input}")
 | 
	
		
			
				|  |  | +      if("x${_flex_CMP0098}x" STREQUAL "xNEWx")
 | 
	
		
			
				|  |  | +        set(_flex_WORKING_DIR "${CMAKE_CURRENT_BINARY_DIR}")
 | 
	
		
			
				|  |  | +        if(NOT IS_ABSOLUTE "${_flex_INPUT}")
 | 
	
		
			
				|  |  | +          set(_flex_INPUT "${CMAKE_CURRENT_SOURCE_DIR}/${_flex_INPUT}")
 | 
	
		
			
				|  |  | +        endif()
 | 
	
		
			
				|  |  | +      else()
 | 
	
		
			
				|  |  | +        set(_flex_WORKING_DIR "${CMAKE_CURRENT_SOURCE_DIR}")
 | 
	
		
			
				|  |  | +      endif()
 | 
	
		
			
				|  |  | +      unset(_flex_CMP0098)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      set(_flex_OUTPUT "${Output}")
 | 
	
		
			
				|  |  | +      if(NOT IS_ABSOLUTE ${_flex_OUTPUT})
 | 
	
		
			
				|  |  | +        set(_flex_OUTPUT "${_flex_WORKING_DIR}/${_flex_OUTPUT}")
 | 
	
		
			
				|  |  | +      endif()
 | 
	
		
			
				|  |  | +      set(_flex_TARGET_OUTPUTS "${_flex_OUTPUT}")
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      set(_flex_EXE_OPTS "")
 | 
	
		
			
				|  |  |        if(NOT "${FLEX_TARGET_ARG_COMPILE_FLAGS}" STREQUAL "")
 | 
	
		
			
				|  |  | -        set(FLEX_EXECUTABLE_opts "${FLEX_TARGET_ARG_COMPILE_FLAGS}")
 | 
	
		
			
				|  |  | -        separate_arguments(FLEX_EXECUTABLE_opts)
 | 
	
		
			
				|  |  | +        set(_flex_EXE_OPTS "${FLEX_TARGET_ARG_COMPILE_FLAGS}")
 | 
	
		
			
				|  |  | +        separate_arguments(_flex_EXE_OPTS)
 | 
	
		
			
				|  |  |        endif()
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      set(_flex_OUTPUT_HEADER "")
 | 
	
		
			
				|  |  |        if(NOT "${FLEX_TARGET_ARG_DEFINES_FILE}" STREQUAL "")
 | 
	
		
			
				|  |  | -        list(APPEND FLEX_TARGET_outputs "${FLEX_TARGET_ARG_DEFINES_FILE}")
 | 
	
		
			
				|  |  | -        list(APPEND FLEX_EXECUTABLE_opts --header-file=${FLEX_TARGET_ARG_DEFINES_FILE})
 | 
	
		
			
				|  |  | +        set(_flex_OUTPUT_HEADER "${FLEX_TARGET_ARG_DEFINES_FILE}")
 | 
	
		
			
				|  |  | +        if(IS_ABSOLUTE "${_flex_OUTPUT_HEADER}")
 | 
	
		
			
				|  |  | +          set(_flex_OUTPUT_HEADER_ABS "${_flex_OUTPUT_HEADER}")
 | 
	
		
			
				|  |  | +        else()
 | 
	
		
			
				|  |  | +          set(_flex_OUTPUT_HEADER_ABS "${_flex_WORKING_DIR}/${_flex_OUTPUT_HEADER}")
 | 
	
		
			
				|  |  | +        endif()
 | 
	
		
			
				|  |  | +        list(APPEND _flex_TARGET_OUTPUTS "${_flex_OUTPUT_HEADER_ABS}")
 | 
	
		
			
				|  |  | +        list(APPEND _flex_EXE_OPTS --header-file=${_flex_OUTPUT_HEADER_ABS})
 | 
	
		
			
				|  |  |        endif()
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -      add_custom_command(OUTPUT ${FLEX_TARGET_outputs}
 | 
	
		
			
				|  |  | -        COMMAND ${FLEX_EXECUTABLE} ${FLEX_EXECUTABLE_opts} -o${Output} ${Input}
 | 
	
		
			
				|  |  | +      get_filename_component(_flex_EXE_NAME_WE "${FLEX_EXECUTABLE}" NAME_WE)
 | 
	
		
			
				|  |  | +      add_custom_command(OUTPUT ${_flex_TARGET_OUTPUTS}
 | 
	
		
			
				|  |  | +        COMMAND ${FLEX_EXECUTABLE} ${_flex_EXE_OPTS} -o${_flex_OUTPUT} ${_flex_INPUT}
 | 
	
		
			
				|  |  |          VERBATIM
 | 
	
		
			
				|  |  | -        DEPENDS ${Input}
 | 
	
		
			
				|  |  | -        COMMENT "[FLEX][${Name}] Building scanner with flex ${FLEX_VERSION}"
 | 
	
		
			
				|  |  | -        WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
 | 
	
		
			
				|  |  | +        DEPENDS ${_flex_INPUT}
 | 
	
		
			
				|  |  | +        COMMENT "[FLEX][${Name}] Building scanner with ${_flex_EXE_NAME_WE} ${FLEX_VERSION}"
 | 
	
		
			
				|  |  | +        WORKING_DIRECTORY ${_flex_WORKING_DIR})
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |        set(FLEX_${Name}_DEFINED TRUE)
 | 
	
		
			
				|  |  | -      set(FLEX_${Name}_OUTPUTS ${Output})
 | 
	
		
			
				|  |  | -      set(FLEX_${Name}_INPUT ${Input})
 | 
	
		
			
				|  |  | -      set(FLEX_${Name}_COMPILE_FLAGS ${FLEX_EXECUTABLE_opts})
 | 
	
		
			
				|  |  | -      if("${FLEX_TARGET_ARG_DEFINES_FILE}" STREQUAL "")
 | 
	
		
			
				|  |  | -        set(FLEX_${Name}_OUTPUT_HEADER "")
 | 
	
		
			
				|  |  | -      else()
 | 
	
		
			
				|  |  | -        set(FLEX_${Name}_OUTPUT_HEADER ${FLEX_TARGET_ARG_DEFINES_FILE})
 | 
	
		
			
				|  |  | -      endif()
 | 
	
		
			
				|  |  | +      set(FLEX_${Name}_OUTPUTS ${_flex_TARGET_OUTPUTS})
 | 
	
		
			
				|  |  | +      set(FLEX_${Name}_INPUT ${_flex_INPUT})
 | 
	
		
			
				|  |  | +      set(FLEX_${Name}_COMPILE_FLAGS ${_flex_EXE_OPTS})
 | 
	
		
			
				|  |  | +      set(FLEX_${Name}_OUTPUT_HEADER ${_flex_OUTPUT_HEADER})
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      unset(_flex_EXE_NAME_WE)
 | 
	
		
			
				|  |  | +      unset(_flex_EXE_OPTS)
 | 
	
		
			
				|  |  | +      unset(_flex_INPUT)
 | 
	
		
			
				|  |  | +      unset(_flex_OUTPUT)
 | 
	
		
			
				|  |  | +      unset(_flex_OUTPUT_HEADER)
 | 
	
		
			
				|  |  | +      unset(_flex_OUTPUT_HEADER_ABS)
 | 
	
		
			
				|  |  | +      unset(_flex_TARGET_OUTPUTS)
 | 
	
		
			
				|  |  | +      unset(_flex_WORKING_DIR)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      endif()
 | 
	
		
			
				|  |  |    endmacro()
 | 
	
		
			
				|  |  |    #============================================================
 |