Skip to content

Commit ab9dc2f

Browse files
committed
Introduce CFG.change_detection bool flag
Adds `cargo:rerun-if-changed=<path>` for all files used by the bridge if the `CFG.change_detection` is `true`.
1 parent 82765ef commit ab9dc2f

File tree

7 files changed

+11
-6
lines changed

7 files changed

+11
-6
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -242,12 +242,12 @@ cxx-build = "1.0"
242242
// build.rs
243243

244244
fn main() {
245+
cxx_build::CFG.change_detection = true;
245246
cxx_build::bridge("src/main.rs") // returns a cc::Build
246247
.file("src/demo.cc")
247248
.std("c++11")
248249
.compile("cxxbridge-demo");
249250

250-
println!("cargo:rerun-if-changed=src/main.rs");
251251
println!("cargo:rerun-if-changed=src/demo.cc");
252252
println!("cargo:rerun-if-changed=include/demo.h");
253253
}

book/src/build/cargo.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,12 +36,12 @@ set up any additional source files and compiler flags as normal.
3636
// build.rs
3737
3838
fn main() {
39+
cxx_build::CFG.change_detection = true;
3940
cxx_build::bridge("src/main.rs") // returns a cc::Build
4041
.file("src/demo.cc")
4142
.std("c++11")
4243
.compile("cxxbridge-demo");
4344
44-
println!("cargo:rerun-if-changed=src/main.rs");
4545
println!("cargo:rerun-if-changed=src/demo.cc");
4646
println!("cargo:rerun-if-changed=include/demo.h");
4747
}

book/src/tutorial.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -201,11 +201,11 @@ build.
201201
// build.rs
202202
203203
fn main() {
204+
cxx_build::CFG.change_detection = true;
204205
cxx_build::bridge("src/main.rs")
205206
.file("src/blobstore.cc")
206207
.compile("cxx-demo");
207208
208-
println!("cargo:rerun-if-changed=src/main.rs");
209209
println!("cargo:rerun-if-changed=src/blobstore.cc");
210210
println!("cargo:rerun-if-changed=include/blobstore.h");
211211
}

demo/build.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
fn main() {
2+
cxx_build::CFG.change_detection = true;
23
cxx_build::bridge("src/main.rs")
34
.file("src/blobstore.cc")
45
.std("c++14")
56
.compile("cxxbridge-demo");
67

7-
println!("cargo:rerun-if-changed=src/main.rs");
88
println!("cargo:rerun-if-changed=src/blobstore.cc");
99
println!("cargo:rerun-if-changed=include/blobstore.h");
1010
}

gen/build/src/cfg.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ pub struct Cfg<'a> {
1414
pub exported_header_links: Vec<&'a str>,
1515
/// See [`CFG.doxygen`][CFG#cfgdoxygen].
1616
pub doxygen: bool,
17+
/// See [`CFG.change_detection`][CFG#cfgchange_detection].
18+
pub change_detection: bool,
1719
marker: PhantomData<*const ()>, // !Send + !Sync
1820
}
1921

gen/build/src/lib.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,12 @@
1414
//! // build.rs
1515
//!
1616
//! fn main() {
17+
//! cxx_build::CFG.change_detection = true;
1718
//! cxx_build::bridge("src/main.rs")
1819
//! .file("src/demo.cc")
1920
//! .std("c++11")
2021
//! .compile("cxxbridge-demo");
2122
//!
22-
//! println!("cargo:rerun-if-changed=src/main.rs");
2323
//! println!("cargo:rerun-if-changed=src/demo.cc");
2424
//! println!("cargo:rerun-if-changed=include/demo.h");
2525
//! }
@@ -397,6 +397,9 @@ fn generate_bridge(prj: &Project, build: &mut Build, rust_source_file: &Path) ->
397397
doxygen: CFG.doxygen,
398398
..Opt::default()
399399
};
400+
if CFG.change_detection {
401+
println!("cargo:rerun-if-changed={}", rust_source_file.display());
402+
}
400403
let generated = gen::generate_from_path(rust_source_file, &opt);
401404
let ref rel_path = paths::local_relative_path(rust_source_file);
402405

src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -249,12 +249,12 @@
249249
//! // build.rs
250250
//!
251251
//! fn main() {
252+
//! cxx_build::CFG.change_detection = true;
252253
//! cxx_build::bridge("src/main.rs") // returns a cc::Build
253254
//! .file("src/demo.cc")
254255
//! .std("c++11")
255256
//! .compile("cxxbridge-demo");
256257
//!
257-
//! println!("cargo:rerun-if-changed=src/main.rs");
258258
//! println!("cargo:rerun-if-changed=src/demo.cc");
259259
//! println!("cargo:rerun-if-changed=include/demo.h");
260260
//! }

0 commit comments

Comments
 (0)