@@ -137,6 +137,8 @@ add_custom_target("check"
137137
138138file (GLOB rule_src_files ${PROJECT_SOURCE_DIR} /rules/*/src.cpp )
139139set (cpp_rules_ir_outputs)
140+ set (rust_rules_ir_outputs)
141+ set (rust_rules_inputs)
140142foreach (_src IN LISTS rule_src_files)
141143 get_filename_component (_rule_dir ${_src} DIRECTORY )
142144 set (_out ${_rule_dir} /ir_src.json)
@@ -147,20 +149,35 @@ foreach(_src IN LISTS rule_src_files)
147149 VERBATIM
148150 )
149151 list (APPEND cpp_rules_ir_outputs ${_out} )
152+ if (EXISTS ${_rule_dir} /tgt_unsafe.rs)
153+ list (APPEND rust_rules_ir_outputs ${_rule_dir} /ir_unsafe.json)
154+ list (APPEND rust_rules_inputs ${_rule_dir} /tgt_unsafe.rs)
155+ endif ()
156+ if (EXISTS ${_rule_dir} /tgt_refcount.rs)
157+ list (APPEND rust_rules_ir_outputs ${_rule_dir} /ir_refcount.json)
158+ list (APPEND rust_rules_inputs ${_rule_dir} /tgt_refcount.rs)
159+ endif ()
150160endforeach ()
151161
152- add_custom_target ("preprocess-cpp-rules" DEPENDS ${cpp_rules_ir_outputs} )
162+ add_custom_target ("preprocess-cpp-rules" ALL DEPENDS ${cpp_rules_ir_outputs} )
163+
164+ file (GLOB_RECURSE rule_preprocessor_sources
165+ ${PROJECT_SOURCE_DIR} /rule-preprocessor/src/*.rs )
166+
167+ add_custom_command (
168+ OUTPUT ${rust_rules_ir_outputs}
169+ COMMAND cargo build
170+ COMMAND ${CMAKE_COMMAND} -E chdir ${PROJECT_SOURCE_DIR} /rule-preprocessor
171+ ${CMAKE_COMMAND} -E env
172+ CARGO_TARGET_DIR=${PROJECT_SOURCE_DIR}/rule-preprocessor/target
173+ cargo run
174+ WORKING_DIRECTORY "${PROJECT_SOURCE_DIR} /rules"
175+ DEPENDS ${rust_rules_inputs} ${rule_preprocessor_sources}
176+ VERBATIM
177+ )
153178
154- add_custom_target ("preprocess-rust-rules"
155- COMMAND cargo build
156- COMMAND ${CMAKE_COMMAND} -E chdir ${PROJECT_SOURCE_DIR} /rule-preprocessor
157- ${CMAKE_COMMAND} -E env
158- CARGO_TARGET_DIR=${PROJECT_SOURCE_DIR}/rule-preprocessor/target
159- cargo run
160- WORKING_DIRECTORY "${PROJECT_SOURCE_DIR} /rules"
161- DEPENDS install -rust-toolchain
162- USES_TERMINAL
163- )
179+ add_custom_target ("preprocess-rust-rules" ALL
180+ DEPENDS ${rust_rules_ir_outputs} install -rust-toolchain )
164181
165182add_custom_target ("check-rules"
166183 COMMAND find ${PROJECT_SOURCE_DIR} /rules -name "ir_unsafe.json" -delete
0 commit comments