60 lines
1.4 KiB
Makefile
60 lines
1.4 KiB
Makefile
|
#=======================================================================
|
||
|
# Makefile for riscv-tests/isa
|
||
|
#-----------------------------------------------------------------------
|
||
|
|
||
|
act_dir := .
|
||
|
src_dir := $(act_dir)/src
|
||
|
work_dir := $(ROOTDIR)/build_generated
|
||
|
work_dir_isa := $(work_dir)/$(RISCV_ISA)
|
||
|
|
||
|
include $(act_dir)/Makefrag
|
||
|
ifneq ($(RISCV_TEST),)
|
||
|
target_tests = $(RISCV_TEST).elf
|
||
|
endif
|
||
|
|
||
|
default: all
|
||
|
|
||
|
#--------------------------------------------------------------------
|
||
|
# Build rules
|
||
|
#--------------------------------------------------------------------
|
||
|
|
||
|
vpath %.S $(act_dir)
|
||
|
|
||
|
INCLUDE=$(TARGETDIR)/$(RISCV_TARGET)/device/$(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
|
||
|
|
||
|
$(eval $(call compile_template,-march=rv32i -mabi=ilp32))
|
||
|
|
||
|
target_elf = $(foreach e,$(target_tests),$(work_dir_isa)/$(e))
|
||
|
target_log = $(patsubst %.elf,%.log,$(target_elf))
|
||
|
|
||
|
run: $(target_log)
|
||
|
|
||
|
#------------------------------------------------------------
|
||
|
# Clean up
|
||
|
|
||
|
clean:
|
||
|
rm -rf $(work_dir)
|