| # |
| # Ensure the compiler and necessary executables are on the search PATH |
| # |
| |
| # |
| # Ensure you have set the following Variables |
| # |
| # |
| |
| pipe:= | |
| empty:= |
| space:= $(empty) $(empty) |
| |
| export RISCV_TARGET ?= riscvOVPsim |
| export RISCV_DEVICE ?= rv32i |
| export RISCV_PREFIX ?= riscv64-unknown-elf- |
| export RISCV_TARGET_FLAGS ?= |
| |
| RISCV_ISA_ALL = $(shell ls $(ROOTDIR)/riscv-target/$(RISCV_TARGET)/device) |
| RISCV_ISA_OPT = $(subst $(space),$(pipe),$(RISCV_ISA_ALL)) |
| |
| ifeq ($(RISCV_ISA),) |
| RISCV_ISA = rv32i |
| DEFAULT_TARGET=all_variant |
| else |
| DEFAULT_TARGET=variant |
| endif |
| |
| export ROOTDIR = $(shell pwd) |
| export WORK = $(ROOTDIR)/work |
| export SUITEDIR = $(ROOTDIR)/riscv-test-suite/$(RISCV_ISA) |
| export TARGETDIR ?= $(ROOTDIR)/riscv-target |
| |
| VERBOSE ?= 0 |
| ifeq ($(VERBOSE),1) |
| export V= |
| export REDIR= |
| else |
| export V=@ |
| export REDIR=>/dev/null |
| endif |
| |
| PARALLEL ?= 1 |
| ifeq ($(RISCV_TARGET),spike) |
| PARALLEL = 0 |
| endif |
| ifeq ($(PARALLEL),0) |
| JOBS = |
| else |
| ifeq ($(RISCV_TARGET),riscvOVPsim) |
| JOBS ?= -j8 --max-load=4 |
| endif |
| ifeq ($(RISCV_TARGET),opentitan) |
| ifeq ($(OT_TARGET),verilator) |
| JOBS ?= -j4 |
| endif |
| endif |
| endif |
| |
| default: $(DEFAULT_TARGET) |
| |
| variant: simulate verify |
| |
| all_variant: |
| for isa in $(RISCV_ISA_ALL); do \ |
| $(MAKE) $(JOBS) RISCV_TARGET=$(RISCV_TARGET) RISCV_TARGET_FLAGS="$(RISCV_TARGET_FLAGS)" RISCV_DEVICE=$$isa RISCV_ISA=$$isa variant; \ |
| rc=$$?; \ |
| if [ $$rc -ne 0 ]; then \ |
| exit $$rc; \ |
| fi \ |
| done |
| |
| simulate: |
| $(MAKE) $(JOBS) \ |
| RISCV_TARGET=$(RISCV_TARGET) \ |
| RISCV_DEVICE=$(RISCV_DEVICE) \ |
| RISCV_PREFIX=$(RISCV_PREFIX) \ |
| run -C $(SUITEDIR) |
| |
| verify: simulate |
| riscv-test-env/verify.sh |
| |
| clean: |
| $(MAKE) $(JOBS) \ |
| RISCV_TARGET=$(RISCV_TARGET) \ |
| RISCV_DEVICE=$(RISCV_DEVICE) \ |
| RISCV_PREFIX=$(RISCV_PREFIX) \ |
| clean -C $(SUITEDIR) |
| |
| help: |
| @echo "eg, make" |
| @echo "RISCV_TARGET='riscvOVPsim|spike|sid32'" |
| @echo "RISCV_TARGET_FLAGS=" |
| @echo "RISCV_DEVICE='rv32i|rv32im|...'" |
| @echo "RISCV_ISA='$(RISCV_ISA_OPT)'" |
| @echo "RISCV_TEST='I-ADD-01'" |
| @echo "make all_variant // all combinations" |