| # | |
| # 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),sim_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" |