This repository was archived by the owner on Jul 29, 2025. It is now read-only.
File tree Expand file tree Collapse file tree 1 file changed +31
-0
lines changed
Expand file tree Collapse file tree 1 file changed +31
-0
lines changed Original file line number Diff line number Diff line change 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+
11+ use std:: env;
12+ use std:: fs:: File ;
13+ use std:: io:: Write ;
14+ use std:: path:: PathBuf ;
15+
16+ fn 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+ }
You can’t perform that action at this time.
0 commit comments