aboutsummaryrefslogtreecommitdiff
path: root/examples/boot/bootloader/nrf/build.rs
diff options
context:
space:
mode:
authorbors[bot] <26634292+bors[bot]@users.noreply.github.com>2022-06-27 12:46:19 +0000
committerGitHub <[email protected]>2022-06-27 12:46:19 +0000
commitc7703ba17c5da3d294544c3a4f451bb7bd04ccfb (patch)
tree9136ffa9f1291f38d399176c038bbec931912f32 /examples/boot/bootloader/nrf/build.rs
parent42bc510effae528e7080ddb6bb8465af1bea6856 (diff)
parentf1f90b17b5c1c5cb56b6ac7722b5ef91b6cc3f2d (diff)
Merge #831
831: Move bootloader main to examples r=lulf a=lulf This should remove some confusion around embassy-boot-* being a library vs. a binary. The binary is now an example bootloader instead. Co-authored-by: Ulf Lilleengen <[email protected]> Co-authored-by: Ulf Lilleengen <[email protected]>
Diffstat (limited to 'examples/boot/bootloader/nrf/build.rs')
-rw-r--r--examples/boot/bootloader/nrf/build.rs37
1 files changed, 37 insertions, 0 deletions
diff --git a/examples/boot/bootloader/nrf/build.rs b/examples/boot/bootloader/nrf/build.rs
new file mode 100644
index 000000000..e1da69328
--- /dev/null
+++ b/examples/boot/bootloader/nrf/build.rs
@@ -0,0 +1,37 @@
1//! This build script copies the `memory.x` file from the crate root into
2//! a directory where the linker can always find it at build time.
3//! For many projects this is optional, as the linker always searches the
4//! project root directory -- wherever `Cargo.toml` is. However, if you
5//! are using a workspace or have a more complicated build setup, this
6//! build script becomes required. Additionally, by requesting that
7//! Cargo re-run the build script whenever `memory.x` is changed,
8//! updating `memory.x` ensures a rebuild of the application with the
9//! new memory settings.
10
11use std::env;
12use std::fs::File;
13use std::io::Write;
14use std::path::PathBuf;
15
16fn main() {
17 // Put `memory.x` in our output directory and ensure it's
18 // on the linker search path.
19 let out = &PathBuf::from(env::var_os("OUT_DIR").unwrap());
20 File::create(out.join("memory.x"))
21 .unwrap()
22 .write_all(include_bytes!("memory.x"))
23 .unwrap();
24 println!("cargo:rustc-link-search={}", out.display());
25
26 // By default, Cargo will re-run a build script whenever
27 // any file in the project changes. By specifying `memory.x`
28 // here, we ensure the build script is only re-run when
29 // `memory.x` is changed.
30 println!("cargo:rerun-if-changed=memory.x");
31
32 println!("cargo:rustc-link-arg-bins=--nmagic");
33 println!("cargo:rustc-link-arg-bins=-Tlink.x");
34 if env::var("CARGO_FEATURE_DEFMT").is_ok() {
35 println!("cargo:rustc-link-arg-bins=-Tdefmt.x");
36 }
37}