Skip to content

Commit 27ec7d6

Browse files
committed
[Rust] Only re-run cargo check if inputs have changed
1 parent 435284e commit 27ec7d6

File tree

1 file changed

+10
-9
lines changed

1 file changed

+10
-9
lines changed

rust/CMakeLists.txt

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@ project(rust_api)
44

55
set(CARGO_API_VERSION 1.83.0)
66

7-
file(GLOB RUST_API_SOURCES CONFIGURE_DEPENDS
7+
file(GLOB_RECURSE RUST_API_SOURCES CONFIGURE_DEPENDS
88
../binaryninjacore.h
99
binaryninjacore-sys/build.rs
1010
binaryninjacore-sys/Cargo.toml
11-
binaryninjacore-sys/src/*
11+
binaryninjacore-sys/src/lib.rs
1212
Cargo.toml
13-
src/*/*.rs)
13+
src/*.rs)
1414

1515
if(CMAKE_BUILD_TYPE MATCHES Debug)
1616
set(CARGO_CHECK_OPTS --workspace --target-dir=${PROJECT_BINARY_DIR}/target)
@@ -29,9 +29,7 @@ else()
2929
endif()
3030

3131
# TODO : RUSTDOCFLAGS="--theme binja-dark.css --default-theme=binja-dark"
32-
33-
add_custom_target(rust_api ALL DEPENDS)
34-
add_dependencies(rust_api binaryninjaapi)
32+
add_custom_target(rust_api ALL DEPENDS ${PROJECT_BINARY_DIR}/rust_api.stamp)
3533

3634
add_custom_target(rust_docs ALL DEPENDS ${PROJECT_BINARY_DIR}/target/doc)
3735
add_dependencies(rust_docs binaryninjaapi rust_api)
@@ -47,15 +45,18 @@ set(RUSTUP_CHECK_COMMAND ${RUSTUP_PATH} run ${CARGO_API_VERSION} cargo check)
4745
set(RUSTUP_DOC_COMMAND ${RUSTUP_PATH} run ${CARGO_API_VERSION} cargo doc)
4846

4947
add_custom_command(
50-
TARGET rust_api
51-
PRE_BUILD
48+
OUTPUT ${PROJECT_BINARY_DIR}/rust_api.stamp
5249
COMMAND ${CMAKE_COMMAND} -E env BINARYNINJADIR=${BN_INSTALL_BIN_DIR} ${RUSTUP_CHECK_COMMAND} ${CARGO_CHECK_OPTS}
50+
COMMAND ${CMAKE_COMMAND} -E touch ${PROJECT_BINARY_DIR}/rust_api.stamp
5351
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
52+
DEPENDS ${RUST_API_SOURCES} $<TARGET_FILE:binaryninjaapi>
53+
COMMENT "Checking Rust API"
54+
VERBATIM
5455
)
5556

5657
add_custom_command(
5758
OUTPUT ${PROJECT_BINARY_DIR}/target/doc
5859
COMMAND ${CMAKE_COMMAND} -E env BINARYNINJADIR=${BN_INSTALL_BIN_DIR} RUSTDOCFLAGS=${RUST_DOC_FLAGS} ${RUSTUP_DOC_COMMAND} ${CARGO_DOC_OPTS}
5960
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
6061
DEPENDS ${RUST_API_SOURCES}
61-
)
62+
)

0 commit comments

Comments
 (0)