From 090fea1aa325ea4fa25a89fd2c4af1afddba3fea Mon Sep 17 00:00:00 2001 From: Kosmas Raptis Date: Mon, 27 Sep 2021 19:48:41 +0300 Subject: [PATCH] samples: Primitive Rust sample --- samples/rust/Cargo.toml | 15 +++++++++++++++ samples/rust/Cross.toml | 2 ++ samples/rust/Makefile | 26 ++++++++++++++++++++++++++ samples/rust/src/main.rs | 28 ++++++++++++++++++++++++++++ 4 files changed, 71 insertions(+) create mode 100644 samples/rust/Cargo.toml create mode 100644 samples/rust/Cross.toml create mode 100644 samples/rust/Makefile create mode 100644 samples/rust/src/main.rs diff --git a/samples/rust/Cargo.toml b/samples/rust/Cargo.toml new file mode 100644 index 000000000..108a1af92 --- /dev/null +++ b/samples/rust/Cargo.toml @@ -0,0 +1,15 @@ +[package] +name = "xboxrusttest" +version = "0.1.0" +authors = ["Kosmas Raptis "] +edition = "2018" + +[profile.dev] +panic = "abort" + +[profile.release] +panic = "abort" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/samples/rust/Cross.toml b/samples/rust/Cross.toml new file mode 100644 index 000000000..dc00dde9f --- /dev/null +++ b/samples/rust/Cross.toml @@ -0,0 +1,2 @@ +[target.i686-pc-windows-gnu] +image = "rustembedded/cross:i686-pc-windows-gnu" diff --git a/samples/rust/Makefile b/samples/rust/Makefile new file mode 100644 index 000000000..25db45713 --- /dev/null +++ b/samples/rust/Makefile @@ -0,0 +1,26 @@ +PROJECT_NAME = xboxrusttest +XISO_NAME = rusttest +XBE_TITLE = rusttest +NXDK_DIR = /home/$(USER)/rust_nxdk +OUTPUT_DIR = bin +RUSTFLAGS := --target i686-pc-windows-gnu + +CXBE = $(NXDK_DIR)/tools/cxbe/cxbe +XISO = $(NXDK_DIR)/tools/extract-xiso/build/extract-xiso + +EXEC_DIR = target/i686-pc-windows-gnu/release + +ifeq ($(DEBUG),y) + EXEC_DIR = target/i686-pc-windows-gnu/debug +else + RUSTFLAGS += --release +endif + +all: + @mkdir -p $(OUTPUT_DIR) + @cross build $(RUSTFLAGS) + @cp $(EXEC_DIR)/$(PROJECT_NAME).exe ./main.exe + $(CXBE) -OUT:default.xbe -TITLE:$(XBE_TITLE) ./main.exe + @mv default.xbe $(OUTPUT_DIR) + $(XISO) -c $(OUTPUT_DIR) $(XISO_NAME).iso + diff --git a/samples/rust/src/main.rs b/samples/rust/src/main.rs new file mode 100644 index 000000000..f42441644 --- /dev/null +++ b/samples/rust/src/main.rs @@ -0,0 +1,28 @@ +#![no_main] +#![no_std] + +use core::panic::PanicInfo; + +#[panic_handler] +fn panic(_info: &PanicInfo) -> ! { + loop {} +} + +pub fn hello() -> i32 { + 12345678 +} + +#[no_mangle] +fn main() { + hello(); +} + +#[no_mangle] +pub extern "C" fn _start() -> ! { + main(); + loop {} +} + +#[no_mangle] pub extern fn rust_eh_register_frames () {} +#[no_mangle] pub extern fn rust_eh_unregister_frames () {} +