@@ -67,6 +67,20 @@ add_custom_command(
6767 VERBATIM
6868)
6969
70+ function (set_cargo_env var crate )
71+ set (_dir "${CMAKE_BINARY_DIR } /${crate} -target" )
72+ set (${var} ${CMAKE_COMMAND } -E env
73+ CARGO_TARGET_DIR=${_dir}
74+ CARGO_RESOLVER_LOCKFILE_PATH=${_dir} /Cargo.lock
75+ PARENT_SCOPE )
76+ endfunction ()
77+
78+ set_cargo_env (CARGO_ENV_RULES rules )
79+ set_cargo_env (CARGO_ENV_RULE_PREPROCESSOR rule-preprocessor )
80+ set_cargo_env (CARGO_ENV_LIBCC2RS libcc2rs )
81+ set_cargo_env (CARGO_ENV_LIBCC2RS_MACROS libcc2rs-macros )
82+ set_cargo_env (CARGO_ENV_LIBC_DEP libc-dep )
83+
7084add_subdirectory (cpp2rust )
7185add_subdirectory (libc-dep )
7286add_subdirectory (libcc2rs )
@@ -86,13 +100,17 @@ add_custom_target("format"
86100 COMMAND cargo +${RUST_NIGHTLY_VERSION} fmt --manifest-path ${PROJECT_SOURCE_DIR } /rule-preprocessor/Cargo.toml
87101 COMMAND cargo +${RUST_STABLE_VERSION} fmt --manifest-path ${PROJECT_SOURCE_DIR } /libcc2rs/Cargo.toml
88102 COMMAND cargo +${RUST_STABLE_VERSION} fmt --manifest-path ${PROJECT_SOURCE_DIR } /libcc2rs-macros/Cargo.toml
89- COMMAND cargo +${RUST_STABLE_VERSION} clippy --release --fix --allow-dirty --allow-no-vcs --allow-staged --all-targets --all-features
103+ COMMAND ${CARGO_ENV_RULES}
104+ cargo +${RUST_STABLE_VERSION} clippy --release --fix --allow-dirty --allow-no-vcs --allow-staged --all-targets --all-features
90105 --manifest-path ${PROJECT_SOURCE_DIR } /rules/Cargo.toml -- -Dwarnings
91- COMMAND cargo +${RUST_NIGHTLY_VERSION} clippy --release --fix --allow-dirty --allow-no-vcs --allow-staged --all-targets --all-features
106+ COMMAND ${CARGO_ENV_RULE_PREPROCESSOR}
107+ cargo +${RUST_NIGHTLY_VERSION} clippy --release --fix --allow-dirty --allow-no-vcs --allow-staged --all-targets --all-features
92108 --manifest-path ${PROJECT_SOURCE_DIR } /rule-preprocessor/Cargo.toml -- -Dwarnings
93- COMMAND cargo +${RUST_STABLE_VERSION} clippy --release --fix --allow-dirty --allow-no-vcs --allow-staged --all-targets --all-features
109+ COMMAND ${CARGO_ENV_LIBCC2RS}
110+ cargo +${RUST_STABLE_VERSION} clippy --release --fix --allow-dirty --allow-no-vcs --allow-staged --all-targets --all-features
94111 --manifest-path ${PROJECT_SOURCE_DIR } /libcc2rs/Cargo.toml -- -Dwarnings
95- COMMAND cargo +${RUST_STABLE_VERSION} clippy --release --fix --allow-dirty --allow-no-vcs --allow-staged --all-targets --all-features
112+ COMMAND ${CARGO_ENV_LIBCC2RS_MACROS}
113+ cargo +${RUST_STABLE_VERSION} clippy --release --fix --allow-dirty --allow-no-vcs --allow-staged --all-targets --all-features
96114 --manifest-path ${PROJECT_SOURCE_DIR } /libcc2rs-macros/Cargo.toml -- -Dwarnings
97115 COMMAND ${RUFF} --silent check --fix ${PYTHON_SOURCES}
98116 COMMAND ${RUFF} --silent format ${PYTHON_SOURCES}
@@ -107,14 +125,16 @@ if (NOT LIT_FLAGS)
107125endif ()
108126
109127add_custom_target ("check-libcc2rs"
110- COMMAND cargo +${RUST_STABLE_VERSION} test
128+ COMMAND ${CARGO_ENV_LIBCC2RS}
129+ cargo +${RUST_STABLE_VERSION} test
111130 WORKING_DIRECTORY "${PROJECT_SOURCE_DIR } /libcc2rs"
112131 DEPENDS "${RUST_STAMP_FILE} "
113132 USES_TERMINAL
114133 )
115134
116135add_custom_target ("check-libcc2rs-macros"
117- COMMAND cargo +${RUST_STABLE_VERSION} test
136+ COMMAND ${CARGO_ENV_LIBCC2RS_MACROS}
137+ cargo +${RUST_STABLE_VERSION} test
118138 WORKING_DIRECTORY "${PROJECT_SOURCE_DIR } /libcc2rs-macros"
119139 DEPENDS "${RUST_STAMP_FILE} "
120140 USES_TERMINAL
@@ -147,8 +167,8 @@ set(BROTLI_HEADERS
147167 "${PROJECT_SOURCE_DIR } /rules/brotli/brotli/port.h"
148168 "${PROJECT_SOURCE_DIR } /rules/brotli/brotli/types.h" )
149169
150- set (PREPROCESSOR_BIN "${CMAKE_BINARY_DIR } /target_preprocessor /release/rule-preprocessor" )
151- set (RULES_LIB "${PROJECT_SOURCE_DIR } /rules/ target/release/librules.rlib" )
170+ set (PREPROCESSOR_BIN "${CMAKE_BINARY_DIR } /rule-preprocessor-target /release/rule-preprocessor" )
171+ set (RULES_LIB "${CMAKE_BINARY_DIR } /rules- target/release/librules.rlib" )
152172
153173file (GLOB_RECURSE rule_preprocessor_sources
154174 ${PROJECT_SOURCE_DIR } /rule-preprocessor/src/*.rs )
@@ -169,20 +189,20 @@ execute_process(
169189
170190add_custom_command (
171191 OUTPUT ${RUSTLS_HEADER} ${BROTLI_HEADERS} ${RULES_LIB}
172- COMMAND cargo +${RUST_STABLE_VERSION} build --release
192+ COMMAND ${CARGO_ENV_RULES}
193+ cargo +${RUST_STABLE_VERSION} build --release
173194 --manifest-path "${PROJECT_SOURCE_DIR } /rules/Cargo.toml"
174195 DEPENDS "${PROJECT_SOURCE_DIR } /rules/build.rs"
175196 "${PROJECT_SOURCE_DIR } /rules/Cargo.toml"
176197 ${libcc2rs_sources}
177198 "${RUST_STAMP_FILE} "
178- DEPFILE "${PROJECT_SOURCE_DIR } /rules/ target/release/librules.d"
199+ DEPFILE "${CMAKE_BINARY_DIR } /rules- target/release/librules.d"
179200 VERBATIM
180201)
181202
182203add_custom_command (
183204 OUTPUT ${PREPROCESSOR_BIN}
184- COMMAND ${CMAKE_COMMAND } -E env
185- CARGO_TARGET_DIR=${CMAKE_BINARY_DIR}/target_preprocessor
205+ COMMAND ${CARGO_ENV_RULE_PREPROCESSOR}
186206 cargo +${RUST_NIGHTLY_VERSION} build --release
187207 --manifest-path "${PROJECT_SOURCE_DIR } /rule-preprocessor/Cargo.toml"
188208 DEPENDS ${rule_preprocessor_sources}
@@ -236,8 +256,7 @@ foreach(_rule_dir IN LISTS rule_subdirs)
236256 add_custom_command (
237257 OUTPUT ${_rust_out}
238258 COMMAND ${CMAKE_COMMAND } -E make_directory ${_out_dir}
239- COMMAND ${CMAKE_COMMAND } -E env
240- CARGO_TARGET_DIR=${CMAKE_BINARY_DIR}/target_preprocessor
259+ COMMAND ${CARGO_ENV_RULE_PREPROCESSOR}
241260 RUSTUP_TOOLCHAIN=${RUST_NIGHTLY_VERSION}
242261 LD_LIBRARY_PATH=${NIGHTLY_SYSROOT}/lib
243262 DYLD_LIBRARY_PATH=${NIGHTLY_SYSROOT}/lib
@@ -254,10 +273,9 @@ add_custom_target("preprocess-rust-rules" ALL
254273 DEPENDS ${rust_rules_ir_outputs} )
255274
256275set_property (DIRECTORY APPEND PROPERTY ADDITIONAL_CLEAN_FILES
257- "${PROJECT_SOURCE_DIR } /libcc2rs/target"
258- "${PROJECT_SOURCE_DIR } /libcc2rs-macros/target"
259- "${PROJECT_SOURCE_DIR } /libc-dep/target"
260- "${PROJECT_SOURCE_DIR } /rules/target"
261- "${PROJECT_SOURCE_DIR } /rule-preprocessor/target"
262- "${CMAKE_BINARY_DIR } /target_preprocessor"
276+ "${CMAKE_BINARY_DIR } /libcc2rs-target"
277+ "${CMAKE_BINARY_DIR } /libcc2rs-macros-target"
278+ "${CMAKE_BINARY_DIR } /libc-dep-target"
279+ "${CMAKE_BINARY_DIR } /rule-preprocessor-target"
280+ "${CMAKE_BINARY_DIR } /rules-target"
263281)
0 commit comments