diff --git a/xous-rs/assemble.sh b/xous-rs/assemble.sh index 62e2a7d13..88079d087 100755 --- a/xous-rs/assemble.sh +++ b/xous-rs/assemble.sh @@ -1,23 +1,62 @@ #!/usr/bin/env bash +# SPDX-FileCopyrightText: 2020 Sean Cross +# SPDX-FileCopyrightText: 2023 Foundation Devices, Inc +# SPDX-License-Identifier: Apache-2.0 + set -euxo pipefail crate=xous-kernel -# remove existing blobs because otherwise this will append object files to the old blobs +usage() { + echo "Usage: $0 [-a ]" + exit 1 +} + +while getopts "a:" o; do + case "${o}" in + a) + arch=$OPTARG + ;; + *) + usage + ;; + esac +done + +arch=${arch:-riscv} + mkdir -p bin -rm -f bin/*.a -riscv64-unknown-elf-gcc -ggdb3 -c -mabi=ilp32 -march=rv32imac src/asm.S -o bin/$crate.o -ar crs bin/riscv32imac-unknown-none-elf.a bin/$crate.o -ar crs bin/riscv32imac-unknown-xous-elf.a bin/$crate.o -ar crs bin/riscv32imc-unknown-none-elf.a bin/$crate.o +case $arch in + riscv) + # Remove existing blobs because otherwise this will append object + # files to the old blobs + rm -f bin/riscv*.a -riscv64-unknown-elf-gcc -ggdb3 -c -mabi=ilp32 -march=rv32i src/asm.S -DSKIP_MULTICORE -o bin/$crate.o -ar crs bin/riscv32i-unknown-none-elf.a bin/$crate.o + riscv64-unknown-elf-gcc -ggdb3 -c -mabi=ilp32 -march=rv32imac src/arch/riscv/asm.S -o bin/$crate.o + ar crs bin/riscv32imac-unknown-none-elf.a bin/$crate.o + ar crs bin/riscv32imac-unknown-xous-elf.a bin/$crate.o + ar crs bin/riscv32imc-unknown-none-elf.a bin/$crate.o -riscv64-unknown-elf-gcc -ggdb3 -c -mabi=lp64 -march=rv64imac src/asm.S -o bin/$crate.o -ar crs bin/riscv64imac-unknown-none-elf.a bin/$crate.o -ar crs bin/riscv64gc-unknown-none-elf.a bin/$crate.o + riscv64-unknown-elf-gcc -ggdb3 -c -mabi=ilp32 -march=rv32i src/arch/riscv/asm.S -DSKIP_MULTICORE -o bin/$crate.o + ar crs bin/riscv32i-unknown-none-elf.a bin/$crate.o + + riscv64-unknown-elf-gcc -ggdb3 -c -mabi=lp64 -march=rv64imac src/arch/riscv/asm.S -o bin/$crate.o + ar crs bin/riscv64imac-unknown-none-elf.a bin/$crate.o + ar crs bin/riscv64gc-unknown-none-elf.a bin/$crate.o + ;; + + arm) + rm -f bin/arm*.a + + arm-none-eabi-gcc -ggdb3 -c -march=armv7-a src/arch/arm/asm.S -o bin/$crate.o + ar crs bin/armv7a-unknown-xous-elf.a bin/$crate.o + ;; + + default) + usage + ;; +esac rm bin/$crate.o