@@ -219,7 +219,17 @@ add_custom_command(
219219)
220220
221221file (GLOB rule_subdirs CONFIGURE_DEPENDS ${PROJECT_SOURCE_DIR } /rules/* )
222+ file (GLOB rule_common_headers CONFIGURE_DEPENDS ${PROJECT_SOURCE_DIR } /rules/common/*.h )
223+ file (GLOB rule_indexer_sources CONFIGURE_DEPENDS
224+ ${PROJECT_SOURCE_DIR } /cpp2rust/rule_preprocessing/*
225+ ${PROJECT_SOURCE_DIR } /cpp2rust/converter/rules/rules_loader.* )
226+ set (_common_headers)
227+ foreach (_header IN LISTS rule_common_headers)
228+ list (APPEND _common_headers --common-header=${_header} )
229+ endforeach ()
222230set (cpp_rules_ir_outputs)
231+ set (cpp_rules_index_inputs)
232+ set (cpp_rules_index_outputs ${CMAKE_BINARY_DIR } /rules_index/c.json ${CMAKE_BINARY_DIR } /rules_index/cpp.json)
223233set (rust_rules_ir_outputs)
224234foreach (_rule_dir IN LISTS rule_subdirs)
225235 file (GLOB _cpp_srcs ${_rule_dir} /src.c ${_rule_dir} /src.cpp )
@@ -229,7 +239,7 @@ foreach(_rule_dir IN LISTS rule_subdirs)
229239 get_filename_component (_rule_name ${_rule_dir} NAME )
230240 set (_out_dir ${RULES_IR_DIR} /${_rule_name} )
231241 set (_cpp_out ${_out_dir} /ir_src.json)
232- set (_cxxflags --cxxflags=-isystem ${_rule_dir} )
242+ set (_cxxflags)
233243 set (_cxxflags_file)
234244 if (EXISTS ${_rule_dir} /cxxflags)
235245 set (_cxxflags_file ${_rule_dir} /cxxflags)
@@ -242,11 +252,15 @@ foreach(_rule_dir IN LISTS rule_subdirs)
242252 OUTPUT ${_cpp_out}
243253 COMMAND ${CMAKE_COMMAND } -E make_directory ${_out_dir}
244254 COMMAND $<TARGET_FILE :cpp -rule -preprocessor > --dir ${_rule_dir} --out ${_cpp_out} ${_cxxflags}
245- DEPENDS ${_cpp_srcs} ${_cxxflags_file} ${PROJECT_SOURCE_DIR } /cpp2rust/cpp_rule_preprocessor.cpp ${RUSTLS_HEADER} ${BROTLI_HEADERS}
255+ DEPENDS ${_cpp_srcs} ${_cxxflags_file} ${rule_common_headers} ${ PROJECT_SOURCE_DIR }/cpp2rust/rule_preprocessing /cpp_rule_preprocessor.cpp ${RUSTLS_HEADER} ${BROTLI_HEADERS}
246256 VERBATIM
247257 )
248258 list (APPEND cpp_rules_ir_outputs ${_cpp_out} )
249259
260+ if (NOT _rule_name STREQUAL "builtin_types" )
261+ list (APPEND cpp_rules_index_inputs ${_cpp_srcs} ${_cxxflags_file} )
262+ endif ()
263+
250264 set (_rust_srcs)
251265 set (_rust_out)
252266 if (EXISTS ${_rule_dir} /tgt_unsafe.rs)
@@ -277,6 +291,15 @@ endforeach()
277291
278292add_custom_target ("preprocess-cpp-rules" ALL DEPENDS ${cpp_rules_ir_outputs} )
279293
294+ add_custom_command (
295+ OUTPUT ${cpp_rules_index_outputs}
296+ COMMAND $<TARGET_FILE :cpp -rule -indexer > --exclude builtin_types ${_common_headers}
297+ DEPENDS ${cpp_rules_index_inputs} ${rule_common_headers} ${rule_indexer_sources} ${RUSTLS_HEADER} ${BROTLI_HEADERS}
298+ VERBATIM
299+ )
300+
301+ add_custom_target ("index-cpp-rules" ALL DEPENDS ${cpp_rules_index_outputs} )
302+
280303add_custom_target ("preprocess-rust-rules" ALL
281304 DEPENDS ${rust_rules_ir_outputs} )
282305
0 commit comments