@@ -31,40 +31,76 @@ TEST_BENCHES += \
3131 spirograph \
3232 uaes
3333
34+ SCIMARK2_URL := https://math.nist.gov/scimark2/scimark2_1c.zip
35+ SCIMARK2_SHA1 := de278c5b8cef84ab6dda41855052c7bfef919e36
36+
3437SHELL_HACK := $(shell mkdir -p $(BIN_DIR ) /linux-x86-softfp $(BIN_DIR ) /riscv32)
3538
3639ifeq ($(call has, PREBUILT) , 1)
3740 LATEST_RELEASE := $(shell wget -q https://api.github.com/repos/sysprog21/rv32emu-prebuilt/releases/latest -O- | grep '"tag_name"' | sed -E 's/.* "tag_name": "([^"]+) ".*/\1/')
3841else
3942 # Since rv32emu only supports the dynamic binary translation of integer instruction in tiered compilation currently,
4043 # we disable the hardware floating-point and the related SIMD operation of x86.
41- CFLAGS := -m32 -mno-sse -mno-sse2 -msoft-float -O2 -L$(BIN_DIR )
44+ CFLAGS := -m32 -mno-sse -mno-sse2 -msoft-float -O2 -Wno-unused-result - L$(BIN_DIR )
4245 LDFLAGS := -lsoft-fp -lm
4346
44- CFLAGS_CROSS := -march=rv32im -mabi=ilp32 -O2
47+ CFLAGS_CROSS := -march=rv32im -mabi=ilp32 -O2 -Wno-implicit-function-declaration
4548 LDFLAGS_CROSS := -lm -lsemihost
4649endif
4750
48- .PHONY : artifact
51+ .PHONY : artifact scimark2 ieeelib
4952
50- artifact :
53+ artifact : ieeelib scimark2
5154ifeq ($(call has, PREBUILT) , 1)
5255 $(Q)$(PRINTF) "Fetching prebuilt executables from \"rv32emu-prebuilt\" ...\n"
5356 $(Q)wget -q --show-progress https://github.com/sysprog21/rv32emu-prebuilt/releases/download/$(LATEST_RELEASE)/rv32emu-prebuilt.tar.gz -O- | tar -C build --strip-components=1 -xz
5457else
55- git submodule update --init ./src/ieeelib $(addprefix ./tests/,$(foreach tb,$(TEST_SUITES),$(tb)))
56- $(Q)$(MAKE) -C ./src/ieeelib CC=$(CC) CFLAGS="$(CFLAGS)" BINDIR=$(BIN_DIR)
58+ git submodule update --init $(addprefix ./tests/,$(foreach tb,$(TEST_SUITES),$(tb)))
5759 $(Q)for tb in $(TEST_SUITES); do \
5860 CC=$(CC) CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" BINDIR=$(BIN_DIR)/linux-x86-softfp $(MAKE) -C ./tests/$$tb; \
5961 done
6062 $(Q)for tb in $(TEST_SUITES); do \
6163 CC=$(CROSS_COMPILE)gcc CFLAGS="$(CFLAGS_CROSS)" LDFLAGS="$(LDFLAGS_CROSS)" BINDIR=$(BIN_DIR)/riscv32 $(MAKE) -C ./tests/$$tb; \
6264 done
65+
6366 $(Q)$(PRINTF) "Building standalone testbenches ...\n"
6467 $(Q)for tb in $(TEST_BENCHES); do \
65- $(CC) $(CFLAGS) -Wno-unused-result - o $(BIN_DIR)/linux-x86-softfp/$$tb ./tests/$$tb.c $(LDFLAGS); \
68+ $(CC) $(CFLAGS) -o $(BIN_DIR)/linux-x86-softfp/$$tb ./tests/$$tb.c $(LDFLAGS); \
6669 done
6770 $(Q)for tb in $(TEST_BENCHES); do \
6871 $(CROSS_COMPILE)gcc $(CFLAGS_CROSS) -o $(BIN_DIR)/riscv32/$$tb ./tests/$$tb.c $(LDFLAGS_CROSS); \
6972 done
73+
74+ git submodule update --init ./tests/doom ./tests/quake
75+ $(Q)$(PRINTF) "Building doom ...\n"
76+ $(Q)$(MAKE) -C ./tests/doom/src/riscv CROSS=$(CROSS_COMPILE)
77+ $(Q)cp ./tests/doom/src/riscv/doom-riscv.elf $(BIN_DIR)/riscv32/doom
78+ $(Q)$(PRINTF) "Building quake ...\n"
79+ $(Q)cd ./tests/quake && mkdir -p build && cd build && \
80+ cmake -DCMAKE_TOOLCHAIN_FILE=../port/boards/rv32emu/toolchain.cmake \
81+ -DCROSS_COMPILE=$(CROSS_COMPILE) \
82+ -DCMAKE_BUILD_TYPE=RELEASE -DBOARD_NAME=rv32emu .. && \
83+ make
84+ $(Q)cp ./tests/quake/build/port/boards/rv32emu/quake $(BIN_DIR)/riscv32/quake
85+ endif
86+
87+ scimark2 : ieeelib
88+ ifeq ($(call has, PREBUILT) , 0)
89+ $(Q)$(call prologue,"scimark2")
90+ $(Q)$(call download,$(SCIMARK2_URL))
91+ $(Q)$(call verify,$(SCIMARK2_SHA1),$(notdir $(SCIMARK2_URL)))
92+ $(Q)$(call extract,"./tests/scimark2",$(notdir $(SCIMARK2_URL)))
93+ $(Q)$(call epilogue,$(notdir $(SCIMARK2_URL)),$(SHA1_FILE1),$(SHA1_FILE2))
94+ $(Q)$(PRINTF) "Building scimark2 ...\n"
95+ $(Q)$(MAKE) -C ./tests/scimark2 CC=$(CC) CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)"
96+ $(Q)cp ./tests/scimark2/scimark2 $(BIN_DIR)/linux-x86-softfp/scimark2
97+ $(Q)$(MAKE) -C ./tests/scimark2 clean && $(RM) ./tests/scimark2/scimark2.o
98+ $(Q)$(MAKE) -C ./tests/scimark2 CC=$(CROSS_COMPILE)gcc CFLAGS="$(CFLAGS_CROSS)"
99+ $(Q)cp ./tests/scimark2/scimark2 $(BIN_DIR)/riscv32/scimark2
100+ endif
101+
102+ ieeelib :
103+ ifeq ($(call has, PREBUILT) , 0)
104+ git submodule update --init ./src/ieeelib
105+ $(Q)$(MAKE) -C ./src/ieeelib CC=$(CC) CFLAGS="$(CFLAGS)" BINDIR=$(BIN_DIR)
70106endif
0 commit comments