aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cortex-m-rt/.gitignore1
-rw-r--r--cortex-m-rt/Cargo.toml3
-rw-r--r--cortex-m-rt/asm.s1
-rwxr-xr-xcortex-m-rt/assemble.sh17
-rw-r--r--cortex-m-rt/bin/thumbv6m-none-eabi.abin0 -> 886 bytes
-rw-r--r--cortex-m-rt/bin/thumbv7em-none-eabi.abin0 -> 886 bytes
-rw-r--r--cortex-m-rt/bin/thumbv7em-none-eabihf.abin0 -> 886 bytes
-rw-r--r--cortex-m-rt/bin/thumbv7m-none-eabi.abin0 -> 886 bytes
-rw-r--r--cortex-m-rt/build.rs11
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
new file mode 100644
index 0000000..62ac317
--- /dev/null
+++ b/cortex-m-rt/bin/thumbv6m-none-eabi.a
Binary files differ
diff --git a/cortex-m-rt/bin/thumbv7em-none-eabi.a b/cortex-m-rt/bin/thumbv7em-none-eabi.a
new file mode 100644
index 0000000..ef9042f
--- /dev/null
+++ b/cortex-m-rt/bin/thumbv7em-none-eabi.a
Binary files differ
diff --git a/cortex-m-rt/bin/thumbv7em-none-eabihf.a b/cortex-m-rt/bin/thumbv7em-none-eabihf.a
new file mode 100644
index 0000000..ef9042f
--- /dev/null
+++ b/cortex-m-rt/bin/thumbv7em-none-eabihf.a
Binary files differ
diff --git a/cortex-m-rt/bin/thumbv7m-none-eabi.a b/cortex-m-rt/bin/thumbv7m-none-eabi.a
new file mode 100644
index 0000000..b93dae7
--- /dev/null
+++ b/cortex-m-rt/bin/thumbv7m-none-eabi.a
Binary files differ
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