# The cxx.bnf grammar file
set(cxx_bnf ${CMAKE_CURRENT_SOURCE_DIR}/../lib/cxx/cxx.bnf)
setup_host_tool(clang-pseudo-gen CLANG_PSEUDO_GEN pseudo_gen pseudo_gen_target)
# Generate inc files.
set(cxx_symbols_inc ${CMAKE_CURRENT_BINARY_DIR}/CXXSymbols.inc)
add_custom_command(OUTPUT ${cxx_symbols_inc}
COMMAND "${pseudo_gen}"
--grammar ${cxx_bnf}
--emit-symbol-list
-o ${cxx_symbols_inc}
COMMENT "Generating nonterminal symbol file for cxx grammar..."
DEPENDS ${pseudo_gen_target} ${cxx_bnf}
VERBATIM)
set(cxx_bnf_inc ${CMAKE_CURRENT_BINARY_DIR}/CXXBNF.inc)
add_custom_command(OUTPUT ${cxx_bnf_inc}
COMMAND "${pseudo_gen}"
--grammar ${cxx_bnf}
--emit-grammar-content
-o ${cxx_bnf_inc}
COMMENT "Generating bnf string file for cxx grammar..."
DEPENDS ${pseudo_gen_target} ${cxx_bnf}
VERBATIM)
# add_custom_command does not create a new target, we need to deine a target
# explicitly, so that other targets can depend on it.
add_custom_target(cxx_gen
DEPENDS ${cxx_symbols_inc} ${cxx_bnf_inc}
VERBATIM)
set_target_properties(cxx_gen PROPERTIES FOLDER "Clang Tools Extra/Sourcegenning")