45 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			45 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
| //! adapted from https://github.com/stm32-rs/stm32f7xx-hal/blob/master/build.rs
 | |
| use std::env;
 | |
| use std::fs::File;
 | |
| use std::io::prelude::*;
 | |
| use std::io::{self};
 | |
| use std::path::PathBuf;
 | |
| 
 | |
| #[derive(Debug)]
 | |
| enum Error {
 | |
|     Env(env::VarError),
 | |
|     Io(io::Error),
 | |
| }
 | |
| 
 | |
| impl From<env::VarError> for Error {
 | |
|     fn from(error: env::VarError) -> Self {
 | |
|         Self::Env(error)
 | |
|     }
 | |
| }
 | |
| 
 | |
| impl From<io::Error> for Error {
 | |
|     fn from(error: io::Error) -> Self {
 | |
|         Self::Io(error)
 | |
|     }
 | |
| }
 | |
| 
 | |
| fn main() -> Result<(), Error> {
 | |
|     println!("cargo:rerun-if-changed=build.rs");
 | |
|     println!("cargo:rerun-if-changed=memory.x");
 | |
| 
 | |
|     let out_dir = env::var("OUT_DIR")?;
 | |
|     let out_dir = PathBuf::from(out_dir);
 | |
| 
 | |
|     let memory_x = include_bytes!("memory.x").as_ref();
 | |
|     File::create(out_dir.join("memory.x"))?.write_all(memory_x)?;
 | |
| 
 | |
|     // Tell Cargo where to find the file.
 | |
|     println!("cargo:rustc-link-search={}", out_dir.display());
 | |
| 
 | |
|     println!("cargo:rustc-link-arg-bins=--nmagic");
 | |
|     println!("cargo:rustc-link-arg-bins=-Tlink.x");
 | |
|     println!("cargo:rustc-link-arg-bins=-Tdefmt.x");
 | |
| 
 | |
|     Ok(())
 | |
| }
 |