1 #=======================================================================
2 # UCB VLSI FLOW: Makefile for riscv-bmarks
3 #-----------------------------------------------------------------------
4 # Yunsup Lee (yunsup@cs.berkeley.edu)
13 instname
= riscv-bmarks
14 instbasedir
= $(UCB_VLSI_HOME
)/install
16 #--------------------------------------------------------------------
18 #--------------------------------------------------------------------
34 #--------------------------------------------------------------------
36 #--------------------------------------------------------------------
38 RISCV_PREFIX ?
= riscv
$(XLEN
)-unknown-elf-
39 RISCV_GCC ?
= $(RISCV_PREFIX
)gcc
40 RISCV_GCC_OPTS ?
= -DPREALLOCATE
=1 -mcmodel
=medany
-static
-std
=gnu99
-O2
-ffast-math
-fno-common
-fno-builtin-printf
41 RISCV_LINK ?
= $(RISCV_GCC
) -T
$(src_dir
)/common
/test.
ld $(incs
)
42 RISCV_LINK_OPTS ?
= -static
-nostdlib
-nostartfiles
-lgcc
-T
$(src_dir
)/common
/test.
ld
43 RISCV_OBJDUMP ?
= $(RISCV_PREFIX
)objdump
--disassemble-all
--disassemble-zeroes
--section
=.text
--section
=.text.startup
--section
=.data
44 RISCV_SIM ?
= spike
--isa
=rv
$(XLEN
)gc
46 incs
+= -I
$(src_dir
)/..
/env
-I
$(src_dir
)/common
$(addprefix -I
$(src_dir
)/, $(bmarks
))
49 define compile_template
50 $(1).riscv
: $(wildcard $(src_dir
)/$(1)/*) $(wildcard $(src_dir
)/common
/*)
51 $$(RISCV_GCC
) $$(incs
) $$(RISCV_GCC_OPTS
) $$(RISCV_LINK_OPTS
) -o
$$@
$(wildcard $(src_dir
)/$(1)/*.c
) $(wildcard $(src_dir
)/common
/*.c
) $(wildcard $(src_dir
)/common
/*.S
)
54 $(foreach bmark
,$(bmarks
),$(eval
$(call compile_template
,$(bmark
))))
56 #------------------------------------------------------------
57 # Build and run benchmarks on riscv simulator
59 bmarks_riscv_bin
= $(addsuffix .riscv
, $(bmarks
))
60 bmarks_riscv_dump
= $(addsuffix .riscv.dump
, $(bmarks
))
61 bmarks_riscv_out
= $(addsuffix .riscv.out
, $(bmarks
))
63 $(bmarks_riscv_dump
): %.riscv.dump
: %.riscv
64 $(RISCV_OBJDUMP
) $< > $@
66 $(bmarks_riscv_out
): %.riscv.out
: %.riscv
69 riscv
: $(bmarks_riscv_dump
)
70 run
: $(bmarks_riscv_out
)
72 junk
+= $(bmarks_riscv_bin
) $(bmarks_riscv_dump
) $(bmarks_riscv_hex
) $(bmarks_riscv_out
)
74 #------------------------------------------------------------
79 #------------------------------------------------------------
82 date_suffix
= $(shell date
+%Y-
%m-
%d_
%H-
%M
)
83 install_dir
= $(instbasedir
)/$(instname
)-$(date_suffix
)
84 latest_install
= $(shell ls
-1 -d
$(instbasedir
)/$(instname
)* | tail
-n
1)
88 cp
-r
$(bmarks_riscv_bin
) $(bmarks_riscv_dump
) $(install_dir
)
91 rm -rf
$(instbasedir
)/$(instname
)
92 ln
-s
$(latest_install
) $(instbasedir
)/$(instname
)
94 #------------------------------------------------------------
98 rm -rf
$(objs
) $(junk
)