Skip to content

Commit 400fe44

Browse files
Merge #42
42: Only checking for necessary extensions when linking r=Disasm a=ilya-epifanov `M`, `A`, `F` and `D` (as part of `G`) extensions don't matter at all, so generating binaries for them is not necessary, really. Also, if another rust RISC-V target were to come up, this crate would not support it. In this PR I'm restricting a list of extensions to consider when generating static archives and linking to `I` and `C`. Co-authored-by: Ilya Epifanov <[email protected]>
2 parents bad98ec + 040eb2c commit 400fe44

9 files changed

+25
-12
lines changed

Cargo.toml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,8 @@ license = "ISC"
1212
bare-metal = ">=0.2.0,<0.2.5"
1313
bit_field = "0.9.0"
1414

15+
[build-dependencies]
16+
riscv-target = "0.1.2"
17+
1518
[features]
1619
inline-asm = []

assemble.ps1

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,13 @@ $crate = "riscv"
88
riscv64-unknown-elf-gcc -c -mabi=ilp32 -march=rv32i asm.S -o bin/$crate.o
99
riscv64-unknown-elf-ar crs bin/riscv32i-unknown-none-elf.a bin/$crate.o
1010

11-
riscv64-unknown-elf-gcc -c -mabi=ilp32 -march=rv32imc asm.S -o bin/$crate.o
12-
riscv64-unknown-elf-ar crs bin/riscv32imac-unknown-none-elf.a bin/$crate.o
13-
riscv64-unknown-elf-ar crs bin/riscv32imc-unknown-none-elf.a bin/$crate.o
11+
riscv64-unknown-elf-gcc -c -mabi=ilp32 -march=rv32ic asm.S -o bin/$crate.o
12+
riscv64-unknown-elf-ar crs bin/riscv32ic-unknown-none-elf.a bin/$crate.o
1413

15-
riscv64-unknown-elf-gcc -c -mabi=lp64 -march=rv64imac asm.S -o bin/$crate.o
16-
riscv64-unknown-elf-ar crs bin/riscv64imac-unknown-none-elf.a bin/$crate.o
17-
riscv64-unknown-elf-ar crs bin/riscv64gc-unknown-none-elf.a bin/$crate.o
14+
riscv64-unknown-elf-gcc -c -mabi=lp64 -march=rv64i asm.S -o bin/$crate.o
15+
riscv64-unknown-elf-ar crs bin/riscv64i-unknown-none-elf.a bin/$crate.o
16+
17+
riscv64-unknown-elf-gcc -c -mabi=lp64 -march=rv64ic asm.S -o bin/$crate.o
18+
riscv64-unknown-elf-ar crs bin/riscv64ic-unknown-none-elf.a bin/$crate.o
1819

1920
Remove-Item bin/$crate.o

assemble.sh

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,13 @@ rm -f bin/*.a
1010
riscv64-unknown-elf-gcc -c -mabi=ilp32 -march=rv32i asm.S -o bin/$crate.o
1111
ar crs bin/riscv32i-unknown-none-elf.a bin/$crate.o
1212

13-
riscv64-unknown-elf-gcc -c -mabi=ilp32 -march=rv32imc asm.S -o bin/$crate.o
14-
ar crs bin/riscv32imac-unknown-none-elf.a bin/$crate.o
15-
ar crs bin/riscv32imc-unknown-none-elf.a bin/$crate.o
13+
riscv64-unknown-elf-gcc -c -mabi=ilp32 -march=rv32ic asm.S -o bin/$crate.o
14+
ar crs bin/riscv32ic-unknown-none-elf.a bin/$crate.o
1615

17-
riscv64-unknown-elf-gcc -c -mabi=lp64 -march=rv64imac asm.S -o bin/$crate.o
18-
ar crs bin/riscv64imac-unknown-none-elf.a bin/$crate.o
19-
ar crs bin/riscv64gc-unknown-none-elf.a bin/$crate.o
16+
riscv64-unknown-elf-gcc -c -mabi=lp64 -march=rv64i asm.S -o bin/$crate.o
17+
ar crs bin/riscv64i-unknown-none-elf.a bin/$crate.o
18+
19+
riscv64-unknown-elf-gcc -c -mabi=lp64 -march=rv64ic asm.S -o bin/$crate.o
20+
ar crs bin/riscv64ic-unknown-none-elf.a bin/$crate.o
2021

2122
rm bin/$crate.o

bin/riscv32i-unknown-none-elf.a

0 Bytes
Binary file not shown.
Binary file not shown.

bin/riscv32imc-unknown-none-elf.a

-69.7 KB
Binary file not shown.
Binary file not shown.
Binary file not shown.

build.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
extern crate riscv_target;
2+
3+
use riscv_target::Target;
14
use std::path::PathBuf;
25
use std::{env, fs};
36

@@ -7,6 +10,11 @@ fn main() {
710
let name = env::var("CARGO_PKG_NAME").unwrap();
811

912
if target.starts_with("riscv") && env::var_os("CARGO_FEATURE_INLINE_ASM").is_none() {
13+
let mut target = Target::from_target_str(&target);
14+
target.retain_extensions("ic");
15+
16+
let target = target.to_string();
17+
1018
fs::copy(
1119
format!("bin/{}.a", target),
1220
out_dir.join(format!("lib{}.a", name)),

0 commit comments

Comments
 (0)