diff --git a/.cargo/config b/.cargo/config index 89a4ed6..ca63405 100644 --- a/.cargo/config +++ b/.cargo/config @@ -1,11 +1,6 @@ [target.msp430] rustflags = [ - "-C", - "linker=./msp-gcc.sh", - "-C", - "link-arg=-Lldscripts", - "-C", - "link-arg=-Tmsp430g2553.ld", - "-C", - "link-arg=-nostartfiles", + "-C", "link-arg=-Tmsp430g2553.ld", + "-C", "link-arg=-mmcu=msp430g2553", + "-C", "link-arg=-nostartfiles", ] diff --git a/Cargo.toml b/Cargo.toml index edad113..91104ec 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,4 +1,5 @@ [package] +build = "build.rs" name = "msp" version = "0.1.0" authors = ["Vadzim Dambrouski "] diff --git a/build.rs b/build.rs new file mode 100644 index 0000000..5a79704 --- /dev/null +++ b/build.rs @@ -0,0 +1,21 @@ +use std::env; +use std::fs::File; +use std::io::Write; +use std::path::PathBuf; + +fn main() { + let out = &PathBuf::from(env::var_os("OUT_DIR").unwrap()); + File::create(out.join("msp430g2553.ld")) + .unwrap() + .write_all(include_bytes!("ldscripts/msp430g2553.ld")) + .unwrap(); + File::create(out.join("msp430g2553_symbols.ld")) + .unwrap() + .write_all(include_bytes!("ldscripts/msp430g2553_symbols.ld")) + .unwrap(); + println!("cargo:rustc-link-search={}", out.display()); + + println!("cargo:rerun-if-changed=build.rs"); + println!("cargo:rerun-if-changed=ldscripts/msp430g2553.ld"); + println!("cargo:rerun-if-changed=ldscripts/msp430g2553_symbols.ld"); +} diff --git a/msp-gcc.sh b/msp-gcc.sh deleted file mode 100755 index ec98712..0000000 --- a/msp-gcc.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -msp430-elf-gcc -mmcu=msp430g2553 $@ diff --git a/msp430.json b/msp430.json index 2f5005a..8c6092e 100644 --- a/msp430.json +++ b/msp430.json @@ -1,7 +1,9 @@ { "arch": "msp430", + "asm-args": ["-mcpu=msp430"], "data-layout": "e-m:e-p:16:16-i32:16:32-a:16-n8:16", "executables": true, + "linker": "msp430-elf-gcc", "llvm-target": "msp430", "max-atomic-width": 0, "no-integrated-as": true,