diff options
author | 2018-08-25 15:19:16 +0200 | |
---|---|---|
committer | 2018-08-25 15:27:00 +0200 | |
commit | b26781c59e26739b0abc9a2b052f5294394f596a (patch) | |
tree | 86cf01eec6780f346a7b5d049ca26a47fdf888dc | |
parent | 5861058169dce0d65db7b20c0edce7b1e2dbb2de (diff) | |
download | cortex-m-b26781c59e26739b0abc9a2b052f5294394f596a.tar.gz cortex-m-b26781c59e26739b0abc9a2b052f5294394f596a.tar.zst cortex-m-b26781c59e26739b0abc9a2b052f5294394f596a.zip |
remove build dependency on arm-none-eabi-gcc
Before this commit we used gcc to assemble external assembly files into object
files that we linked into our Rust program.
This commit drops the dependency on gcc by shipping the already assembled object
files with this crate source code.
-rw-r--r-- | cortex-m-rt/.gitignore | 1 | ||||
-rw-r--r-- | cortex-m-rt/Cargo.toml | 3 | ||||
-rw-r--r-- | cortex-m-rt/asm.s | 1 | ||||
-rwxr-xr-x | cortex-m-rt/assemble.sh | 17 | ||||
-rw-r--r-- | cortex-m-rt/bin/thumbv6m-none-eabi.a | bin | 0 -> 886 bytes | |||
-rw-r--r-- | cortex-m-rt/bin/thumbv7em-none-eabi.a | bin | 0 -> 886 bytes | |||
-rw-r--r-- | cortex-m-rt/bin/thumbv7em-none-eabihf.a | bin | 0 -> 886 bytes | |||
-rw-r--r-- | cortex-m-rt/bin/thumbv7m-none-eabi.a | bin | 0 -> 886 bytes | |||
-rw-r--r-- | cortex-m-rt/build.rs | 11 |
9 files changed, 26 insertions, 7 deletions
diff --git a/cortex-m-rt/.gitignore b/cortex-m-rt/.gitignore index 6dc3db1..9895bb1 100644 --- a/cortex-m-rt/.gitignore +++ b/cortex-m-rt/.gitignore @@ -1,3 +1,4 @@ **/*.rs.bk Cargo.lock +bin/*.o target/ diff --git a/cortex-m-rt/Cargo.toml b/cortex-m-rt/Cargo.toml index 988faa7..e831320 100644 --- a/cortex-m-rt/Cargo.toml +++ b/cortex-m-rt/Cargo.toml @@ -9,9 +9,6 @@ name = "cortex-m-rt" repository = "https://github.com/japaric/cortex-m-rt" version = "0.5.2" -[build-dependencies] -cc = "1.0.10" - [dependencies] r0 = "0.2.1" diff --git a/cortex-m-rt/asm.s b/cortex-m-rt/asm.s index 2937be8..c7133c0 100644 --- a/cortex-m-rt/asm.s +++ b/cortex-m-rt/asm.s @@ -1,3 +1,4 @@ + .section .text.HardFault .global HardFault .thumb_func HardFault: diff --git a/cortex-m-rt/assemble.sh b/cortex-m-rt/assemble.sh new file mode 100755 index 0000000..f2ee3fd --- /dev/null +++ b/cortex-m-rt/assemble.sh @@ -0,0 +1,17 @@ +#!/bin/sh + +set -euxo pipefail + +# cflags taken from cc 1.0.22 + +arm-none-eabi-as -march=armv6s-m asm.s -o bin/cortex-m-rt.o +ar crs bin/thumbv6m-none-eabi.a bin/cortex-m-rt.o + +arm-none-eabi-as -march=armv7-m asm.s -o bin/cortex-m-rt.o +ar crs bin/thumbv7m-none-eabi.a bin/cortex-m-rt.o + +arm-none-eabi-as -march=armv7e-m asm.s -o bin/cortex-m-rt.o +ar crs bin/thumbv7em-none-eabi.a bin/cortex-m-rt.o +ar crs bin/thumbv7em-none-eabihf.a bin/cortex-m-rt.o + +rm bin/cortex-m-rt.o diff --git a/cortex-m-rt/bin/thumbv6m-none-eabi.a b/cortex-m-rt/bin/thumbv6m-none-eabi.a Binary files differnew file mode 100644 index 0000000..62ac317 --- /dev/null +++ b/cortex-m-rt/bin/thumbv6m-none-eabi.a diff --git a/cortex-m-rt/bin/thumbv7em-none-eabi.a b/cortex-m-rt/bin/thumbv7em-none-eabi.a Binary files differnew file mode 100644 index 0000000..ef9042f --- /dev/null +++ b/cortex-m-rt/bin/thumbv7em-none-eabi.a diff --git a/cortex-m-rt/bin/thumbv7em-none-eabihf.a b/cortex-m-rt/bin/thumbv7em-none-eabihf.a Binary files differnew file mode 100644 index 0000000..ef9042f --- /dev/null +++ b/cortex-m-rt/bin/thumbv7em-none-eabihf.a diff --git a/cortex-m-rt/bin/thumbv7m-none-eabi.a b/cortex-m-rt/bin/thumbv7m-none-eabi.a Binary files differnew file mode 100644 index 0000000..b93dae7 --- /dev/null +++ b/cortex-m-rt/bin/thumbv7m-none-eabi.a diff --git a/cortex-m-rt/build.rs b/cortex-m-rt/build.rs index fc53d79..8166b1b 100644 --- a/cortex-m-rt/build.rs +++ b/cortex-m-rt/build.rs @@ -1,18 +1,21 @@ -extern crate cc; - use std::env; -use std::fs::File; +use std::fs::{self, File}; use std::io::Write; use std::path::PathBuf; fn main() { let target = env::var("TARGET").unwrap(); + let out_dir = PathBuf::from(env::var("OUT_DIR").unwrap()); has_fpu(&target); let is_armv6m = is_armv6m(&target); if target.starts_with("thumbv") { - cc::Build::new().file("asm.s").compile("asm"); + fs::copy( + format!("bin/{}.a", target), + out_dir.join("libcortex-m-rt.a"), + ).unwrap(); + println!("cargo:rustc-link-lib=static=cortex-m-rt"); } // Put the linker script somewhere the linker can find it |