change EF_RISCV_X32 to EF_RISCV_N32 #70
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build | |
on: | |
push: | |
branches: | |
- master | |
- rv64ilp32 | |
- 'rv64ilp32*' | |
pull_request: | |
branches: | |
- master | |
- rv64ilp32 | |
- 'rv64ilp32*' | |
jobs: | |
build: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: [ubuntu-20.04, ubuntu-22.04] | |
mode: [newlib] | |
target: [rv64gc-ilp32d] | |
compiler: [gcc] | |
steps: | |
- name: Remove unneeded frameworks to recover disk space | |
run: | | |
echo "-- Before --" | |
df -h | |
sudo rm -rf /usr/share/dotnet | |
sudo rm -rf /usr/local/lib/android | |
echo "-- After --" | |
df -h | |
- uses: actions/checkout@v4 | |
- name: sync rv64ilp32_linux binary | |
run: | | |
git submodule init rv64ilp32_linux | |
git submodule update rv64ilp32_linux | |
- name: install dependencies | |
run: sudo ./.github/setup-apt.sh | |
- name: build toolchain | |
run: | | |
TARGET_TUPLE=($(echo ${{ matrix.target }} | tr "-" "\n")) | |
BUILD_TOOLCHAIN="./configure --prefix=/opt/riscv --with-arch=${TARGET_TUPLE[0]} --with-abi=${TARGET_TUPLE[1]} --enable-qemu-system" | |
if [ "${{ matrix.compiler }}" == "llvm" ]; then # build toolchain with llvm | |
$BUILD_TOOLCHAIN --enable-llvm | |
else | |
$BUILD_TOOLCHAIN | |
fi | |
sudo make -j $(nproc) ${{ matrix.mode }} | |
- name: build qemu | |
run: | | |
sudo make -j$(nproc) build-sim SIM=qemu | |
- name: make report | |
if: | | |
matrix.os == 'ubuntu-22.04' | |
&& (matrix.mode == 'linux' || matrix.mode == 'newlib') | |
&& matrix.compiler == 'gcc' | |
run: | | |
sudo make report-${{ matrix.mode }} -j $(nproc) | |
- name: Build demo | |
run: | | |
export CROSS_COMPILE=riscv64-unknown-elf- | |
export PATH=/opt/riscv/bin:$PATH | |
${CROSS_COMPILE}gcc -v | |
${CROSS_COMPILE}gcc -o demo qemu-linux/hello_world.c | |
sudo mkdir -p /opt/riscv/qemu-linux/ | |
sudo cp -v demo /opt/riscv/qemu-linux/ | |
# Test the demo | |
qemu-riscv64ilp32 /opt/riscv/qemu-linux/demo | |
# Copy demo code | |
sudo cp -v qemu-linux/hello_world.c /opt/riscv/qemu-linux/ | |
- name: download qemu-linux binary | |
run: | | |
sudo tar xzvf rv64ilp32_linux/qemu-linux.tar.gz -C /opt/riscv/ | |
- name: recover space | |
run: | | |
sudo du -hs / 2> /dev/null || true | |
sudo rm -rf binutils dejagnu gcc gdb glibc llvm musl newlib pk qemu spike || true | |
sudo du -hs / 2> /dev/null || true | |
- name: tarball build | |
run: tar czvf riscv.tar.gz -C /opt/ riscv/ | |
- name: generate prebuilt toolchain name | |
id: toolchain-name-generator | |
run: | | |
if [[ "${{ matrix.target }}" == *"32"* ]]; then BITS=32; else BITS=64; fi | |
if [[ "${{ matrix.target }}" == "rv64gc-ilp32d" ]]; then BITS=64ilp32; fi | |
case "${{ matrix.mode }}" in | |
"linux") | |
MODE="glibc";; | |
"musl") | |
MODE="musl";; | |
*) | |
MODE="elf";; | |
esac | |
echo "TOOLCHAIN_NAME=riscv$BITS-$MODE-${{ matrix.os }}-${{ matrix.compiler }}-nightly" >> $GITHUB_OUTPUT | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: ${{ steps.toolchain-name-generator.outputs.TOOLCHAIN_NAME }} | |
path: riscv.tar.gz |