mirror of
https://github.com/openhwgroup/cvw
synced 2025-01-24 13:34:28 +00:00
78 lines
2.3 KiB
Makefile
78 lines
2.3 KiB
Makefile
#=======================================================================
|
|
# Makefile for riscv-tests/isa
|
|
#-----------------------------------------------------------------------
|
|
|
|
act_dir := .
|
|
src_dir := $(act_dir)/src
|
|
ref_dir := $(act_dir)/references
|
|
work_dir := $(WORK)
|
|
work_dir_isa := $(work_dir)/rv$(XLEN)i_m/$(RISCV_DEVICE)
|
|
|
|
include $(act_dir)/Makefrag
|
|
ifneq ($(RISCV_TEST),)
|
|
target_tests = $(RISCV_TEST).elf
|
|
target_tests_nosim = $(empty)
|
|
endif
|
|
|
|
default: all
|
|
|
|
#--------------------------------------------------------------------
|
|
# Build rules
|
|
#--------------------------------------------------------------------
|
|
|
|
vpath %.S $(act_dir)
|
|
|
|
INCLUDE=$(TARGETDIR)/$(RISCV_TARGET)/device/rv$(XLEN)i_m/$(RISCV_DEVICE)/Makefile.include
|
|
ifeq ($(wildcard $(INCLUDE)),)
|
|
$(error Cannot find '$(INCLUDE)`. Check that RISCV_TARGET and RISCV_DEVICE are set correctly.)
|
|
endif
|
|
-include $(INCLUDE)
|
|
|
|
#------------------------------------------------------------
|
|
# Build and run assembly tests
|
|
|
|
%.log: %.elf
|
|
$(V) echo "Execute $(@)"
|
|
$(V) $(RUN_TARGET)
|
|
|
|
|
|
define compile_template
|
|
|
|
$(work_dir_isa)/%.elf: $(src_dir)/%.S
|
|
$(V) echo "Compile $$(@)"
|
|
@mkdir -p $$(@D)
|
|
$(V) $(COMPILE_TARGET)
|
|
|
|
.PRECIOUS: $(work_dir_isa)/%.elf
|
|
|
|
endef
|
|
|
|
target_elf = $(foreach e,$(target_tests),$(work_dir_isa)/$(e))
|
|
target_elf_nosim = $(foreach e,$(addsuffix .elf, $(target_tests_nosim)),$(work_dir_isa)/$(e))
|
|
combined_elf = $(target_elf_nosim) $(target_elf)
|
|
target_log = $(patsubst %.elf,%.log,$(target_elf))
|
|
|
|
ifdef target_tests_nosim
|
|
compile: copy
|
|
# now copy must be performed before compile,
|
|
# allowing us to copy over outputs if they won't simulate on spike correctly.
|
|
endif
|
|
|
|
copy:
|
|
@mkdir -p $(work_dir_isa)
|
|
$(info !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!)
|
|
$(info <<<<<<<<<<<<<<<<<<<<<<<<<<<< COPYING REFERENCES WITHOUT SIMULATING >>>>>>>>>>>>>>>>>>>>>>>>>>>>)
|
|
$(info !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!)
|
|
$(V) echo "Copying References without simulating"
|
|
$(V) for test in $(target_tests_nosim); do cp $(ref_dir)/$$test.reference_output $(work_dir_isa)/$$test.signature.output; done
|
|
|
|
compile: $(combined_elf)
|
|
run: $(target_log)
|
|
# note that run doesnt use the combined elf so it doesnt run the nosim tests.
|
|
|
|
#------------------------------------------------------------
|
|
# Clean up
|
|
|
|
clean:
|
|
rm -rf $(work_dir)
|