)
mark_as_advanced(FLEX_INCLUDES)
+
+macro(FLEX NAME LEXER_IN LEXER_OUT)
+ FLEX_TARGET(${NAME}
+ ${LEXER_IN}
+ ${LEXER_OUT}.tmp
+ COMPILE_FLAGS ${FLEX_FLAGS}
+ )
+
+ # we use '+' as a separator for 'sed' to avoid conflicts with '/' in paths from LEXER_OUT
+ add_custom_command(
+ OUTPUT ${LEXER_OUT}
+ COMMAND sed -e
+ "s+void yyFlexLexer::LexerError+yynoreturn void yyFlexLexer::LexerError+;s+${LEXER_OUT}.tmp+${LEXER_OUT}+"
+ ${FLEX_${NAME}_OUTPUTS} > ${LEXER_OUT}
+ DEPENDS ${FLEX_${NAME}_OUTPUTS}
+ VERBATIM
+ )
+
+ set(${NAME}_OUTPUTS ${LEXER_OUT})
+endmacro()
-FLEX_TARGET ( js_tokenizer
+FLEX ( js_tokenizer
${CMAKE_CURRENT_SOURCE_DIR}/js_tokenizer.l
${CMAKE_CURRENT_BINARY_DIR}/js_tokenizer.cc
- COMPILE_FLAGS ${FLEX_FLAGS}
)
set ( JS_SOURCES
- ${FLEX_js_tokenizer_OUTPUTS}
+ ${js_tokenizer_OUTPUTS}
js_config.h
js_enum.h
js_identifier_ctx.cc
-FLEX_TARGET ( js_tokenizer ${CMAKE_CURRENT_SOURCE_DIR}/../js_tokenizer.l
+FLEX ( js_tokenizer
+ ${CMAKE_CURRENT_SOURCE_DIR}/../js_tokenizer.l
${CMAKE_CURRENT_BINARY_DIR}/../js_tokenizer.cc
- COMPILE_FLAGS ${FLEX_FLAGS}
)
add_catch_test( js_normalizer_test
SOURCES
- ${FLEX_js_tokenizer_OUTPUTS}
+ ${js_tokenizer_OUTPUTS}
../js_identifier_ctx.cc
../js_normalizer.cc
${CMAKE_SOURCE_DIR}/src/utils/streambuf.cc
if (ENABLE_BENCHMARK_TESTS)
add_catch_test( js_norm_benchmark
SOURCES
- ${FLEX_js_tokenizer_OUTPUTS}
+ ${js_tokenizer_OUTPUTS}
../js_identifier_ctx.cc
../js_normalizer.cc
${CMAKE_SOURCE_DIR}/src/utils/streambuf.cc
add_catch_test( js_dealias_test
SOURCES
- ${FLEX_js_tokenizer_OUTPUTS}
+ ${js_tokenizer_OUTPUTS}
../js_identifier_ctx.cc
../js_normalizer.cc
${CMAKE_SOURCE_DIR}/src/utils/streambuf.cc
add_catch_test( js_unescape_test
SOURCES
- ${FLEX_js_tokenizer_OUTPUTS}
+ ${js_tokenizer_OUTPUTS}
../js_identifier_ctx.cc
../js_normalizer.cc
${CMAKE_SOURCE_DIR}/src/utils/streambuf.cc
add_catch_test( jsn_test
SOURCES
- ${FLEX_js_tokenizer_OUTPUTS}
+ ${js_tokenizer_OUTPUTS}
../js_identifier_ctx.cc
../js_norm.cc
../js_normalizer.cc