aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrian Cully <bjc@kublai.com>2022-11-06 16:34:44 -0500
committerBrian Cully <bjc@kublai.com>2022-11-06 16:37:38 -0500
commit20377d4522d513b66406d4ef8231a7cdbfedc157 (patch)
tree3b391f48c056c8a0fadbb3915dac11984a8b814d
parenta484a97111d0897ac6e0e291c4432a91ebdee416 (diff)
downloadluchie-20377d4522d513b66406d4ef8231a7cdbfedc157.tar.gz
luchie-20377d4522d513b66406d4ef8231a7cdbfedc157.zip
cargo: rejigger crate type
convert to hybrid crate, with arch-dependent stuff as a ‘bin’ crate, with the underlying support in ‘lib’. the reason for this change is to allow for automated unit-testing on the device-independent bits. to facilitate this, a ‘t’ alias is provided which will run the unit tests. this target assumes you're on a linux system, but you can't have everything.
-rw-r--r--.cargo/config.toml5
-rw-r--r--Cargo.toml4
-rwxr-xr-xsrc/bin/luchie.rs (renamed from src/main.rs)10
-rwxr-xr-xsrc/lib.rs18
-rw-r--r--src/logger.rs (renamed from src/log.rs)2
5 files changed, 32 insertions, 7 deletions
diff --git a/.cargo/config.toml b/.cargo/config.toml
index 4339ec3..68eea01 100644
--- a/.cargo/config.toml
+++ b/.cargo/config.toml
@@ -1,8 +1,11 @@
+[alias]
+t = "test --target x86_64-unknown-linux-gnu"
+
[build]
target = "thumbv7em-none-eabihf"
[target.thumbv7em-none-eabihf]
-runner = "arm-none-eabi-gdb"
+runner = "arm-none-eabi-gdb -i=mi"
rustflags = [
"-C", "link-arg=-Tlink.x",
]
diff --git a/Cargo.toml b/Cargo.toml
index b8cb657..0af2751 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -35,5 +35,9 @@ name = "luchie"
test = false
bench = false
+[lib]
+test = true
+bench = true
+
[patch.crates-io]
#usb-device = { path = "../usb-device" }
diff --git a/src/main.rs b/src/bin/luchie.rs
index 9797da5..7dedc8d 100755
--- a/src/main.rs
+++ b/src/bin/luchie.rs
@@ -3,10 +3,10 @@
//extern crate panic_semihosting;
-mod cirque;
-mod log;
-
-use cirque::Cirque;
+use luchie::{
+ cirque::Cirque,
+ log, logger, logln,
+};
use cortex_m::{
asm::{bkpt, wfi},
@@ -62,7 +62,7 @@ fn main() -> ! {
);
let (tx, _) = serial.split();
- log::init(tx);
+ logger::init(tx);
logln!("🐁 luchie starting…");
diff --git a/src/lib.rs b/src/lib.rs
new file mode 100755
index 0000000..821bdeb
--- /dev/null
+++ b/src/lib.rs
@@ -0,0 +1,18 @@
+#![no_std]
+
+pub mod cirque;
+pub mod logger;
+
+#[cfg(test)]
+mod tests {
+ #[test]
+ fn pass() {
+ assert!(0 == 0);
+ }
+
+ #[test]
+ #[should_panic]
+ fn fail() {
+ assert!(1 == 0);
+ }
+}
diff --git a/src/log.rs b/src/logger.rs
index ccc9ebc..453e268 100644
--- a/src/log.rs
+++ b/src/logger.rs
@@ -8,7 +8,7 @@ use cortex_m::interrupt::{self, Mutex};
#[macro_export]
macro_rules! log {
($($args:tt)+) => {
- $crate::log::log_args(core::format_args!($($args)+))
+ $crate::logger::log_args(core::format_args!($($args)+))
}
}