Update riscof Makefile for better scalability with multiple suites

This commit is contained in:
Jordan Carlin 2025-05-08 01:25:09 -07:00
parent d1958b05e0
commit 8a9d15cd60
No known key found for this signature in database

View file

@ -15,31 +15,37 @@ current_dir := $(shell pwd)
# General make rules # General make rules
.PHONY: all riscv-arch-test wally-riscv-arch-test clean .PHONY: all riscv-arch-test wally-riscv-arch-test clean
all: riscv-arch-test wally-riscv-arch-test all: riscv-arch-test wally-riscv-arch-test
# Standard riscv-arch-test tests
riscv-arch-test: arch32e arch32 arch64 riscv-arch-test: arch32e arch32 arch64
arch%: test_dir=$(arch_dir)
arch%: work_result=$(arch_workdir)
arch32e: riscof32e
arch32: riscof32
arch64: riscof64
# wally-riscv-arch-test tests
wally-riscv-arch-test: wally32 wally64 wally-riscv-arch-test: wally32 wally64
wally%: test_dir=$(wally_dir)
wally%: work_result=$(wally_workdir)
wally32: riscof32
wally64: riscof64
# Generate config.ini files # Generate config.ini files
config%.ini: config.ini config%.ini: config.ini
sed 's,{0},$(current_dir),g;s,{1},$(patsubst %64,%64gc,$(patsubst %32,%32gc,$*)),g;s,{2},$(nproc),g' config.ini > $@ sed 's,{0},$(current_dir),g;s,{1},$(patsubst %64,%64gc,$(patsubst %32,%32gc,$*)),g;s,{2},$(nproc),g' config.ini > $@
# Generate riscv-arch-test targets # Compile tests with riscof
arch%: config$$*.ini | $(work_dir) $(arch_workdir) riscof%: config$$*.ini | $(work_dir)
riscof run --work-dir=$(work_dir)/$@ --config=$< --suite=$(arch_dir)/riscv-test-suite/ --env=$(arch_dir)/riscv-test-suite/env --no-browser riscof run --work-dir=$(work_dir)/$@ --config=$< --suite=$(test_dir)/riscv-test-suite/ --env=$(test_dir)/riscv-test-suite/env --no-browser
$(MAKE) -f makefile-memfile WORKDIR=$(work_dir)/$@ BITWIDTH=$(patsubst %32e,%32,$*) $(MAKE) -f makefile-memfile WORKDIR=$(work_dir)/$@ BITWIDTH=$(patsubst %32e,%32,$*)
rsync -a $(work_dir)/$@/rv*/* $(arch_workdir)/rv$(patsubst %64,%64i,$(patsubst %32,%32i,$*))_m || echo "error suppressed" mkdir -p $(work_result)
rsync -a $(work_dir)/$@/rv*/* $(work_result)/rv$(patsubst %64,%64i,$(patsubst %32,%32i,$*))_m || echo "error suppressed"
# Generate wally-riscv-arch-test targets
wally%: config$$*.ini | $(work_dir) $(wally_workdir)
riscof run --work-dir=$(work_dir)/$@ --config=$< --suite=$(wally_dir)/riscv-test-suite/ --env=$(wally_dir)/riscv-test-suite/env --no-browser --no-dut-run
$(MAKE) -f makefile-memfile WORKDIR=$(work_dir)/$@
rsync -a $(work_dir)/$@/rv*/* $(wally_workdir)/rv$(patsubst %64,%64i,$(patsubst %32,%32i,$*))_m || echo "error suppressed"
clean: clean:
rm -f config??*.ini rm -f config??*.ini
rm -rf $(work_dir) rm -rf $(work_dir)
rm -rf $(wally_workdir) rm -rf $(work)
rm -rf $(arch_workdir)
rm -rf $(submodule_wor_dir)
$(work_dir) $(arch_workdir) $(wally_workdir): $(work_dir):
mkdir -p $@ mkdir -p $@