31 lines
1 KiB
CMake
31 lines
1 KiB
CMake
# 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)
|