| # 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) |