summaryrefslogtreecommitdiff
path: root/rust/CMakeLists.txt
diff options
context:
space:
mode:
authorMark Rowe <mark@vector35.com>2025-07-01 22:56:05 -0700
committerMark Rowe <mark@vector35.com>2025-07-30 17:15:16 -0700
commitcce878fb9c4736fff6d9ac263b82618a1f6f95c6 (patch)
tree1f5841a47843992f881993708bf4eaa688d33ef5 /rust/CMakeLists.txt
parent3e2ace5e8d127d7995a94f1b296cad9152cb7274 (diff)
[Rust] Only re-run `cargo check` if inputs have changed
Diffstat (limited to 'rust/CMakeLists.txt')
-rw-r--r--rust/CMakeLists.txt19
1 files changed, 10 insertions, 9 deletions
diff --git a/rust/CMakeLists.txt b/rust/CMakeLists.txt
index 4bc8f9ad..03ab89bc 100644
--- a/rust/CMakeLists.txt
+++ b/rust/CMakeLists.txt
@@ -4,13 +4,13 @@ project(rust_api)
set(CARGO_API_VERSION 1.83.0)
-file(GLOB RUST_API_SOURCES CONFIGURE_DEPENDS
+file(GLOB_RECURSE RUST_API_SOURCES CONFIGURE_DEPENDS
../binaryninjacore.h
binaryninjacore-sys/build.rs
binaryninjacore-sys/Cargo.toml
- binaryninjacore-sys/src/*
+ binaryninjacore-sys/src/lib.rs
Cargo.toml
- src/*/*.rs)
+ src/*.rs)
if(CMAKE_BUILD_TYPE MATCHES Debug)
set(CARGO_CHECK_OPTS --workspace --target-dir=${PROJECT_BINARY_DIR}/target)
@@ -29,9 +29,7 @@ else()
endif()
# TODO : RUSTDOCFLAGS="--theme binja-dark.css --default-theme=binja-dark"
-
-add_custom_target(rust_api ALL DEPENDS)
-add_dependencies(rust_api binaryninjaapi)
+add_custom_target(rust_api ALL DEPENDS ${PROJECT_BINARY_DIR}/rust_api.stamp)
add_custom_target(rust_docs ALL DEPENDS ${PROJECT_BINARY_DIR}/target/doc)
add_dependencies(rust_docs binaryninjaapi rust_api)
@@ -47,10 +45,13 @@ set(RUSTUP_CHECK_COMMAND ${RUSTUP_PATH} run ${CARGO_API_VERSION} cargo check)
set(RUSTUP_DOC_COMMAND ${RUSTUP_PATH} run ${CARGO_API_VERSION} cargo doc)
add_custom_command(
- TARGET rust_api
- PRE_BUILD
+ OUTPUT ${PROJECT_BINARY_DIR}/rust_api.stamp
COMMAND ${CMAKE_COMMAND} -E env BINARYNINJADIR=${BN_INSTALL_BIN_DIR} ${RUSTUP_CHECK_COMMAND} ${CARGO_CHECK_OPTS}
+ COMMAND ${CMAKE_COMMAND} -E touch ${PROJECT_BINARY_DIR}/rust_api.stamp
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
+ DEPENDS ${RUST_API_SOURCES} $<TARGET_FILE:binaryninjaapi>
+ COMMENT "Checking Rust API"
+ VERBATIM
)
add_custom_command(
@@ -58,4 +59,4 @@ add_custom_command(
COMMAND ${CMAKE_COMMAND} -E env BINARYNINJADIR=${BN_INSTALL_BIN_DIR} RUSTDOCFLAGS=${RUST_DOC_FLAGS} ${RUSTUP_DOC_COMMAND} ${CARGO_DOC_OPTS}
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
DEPENDS ${RUST_API_SOURCES}
-) \ No newline at end of file
+)