@@ -31,40 +31,77 @@ TEST_BENCHES += \
31
31
spirograph \
32
32
uaes
33
33
34
+ SCIMARK2_URL := https://math.nist.gov/scimark2/scimark2_1c.zip
35
+ SCIMARK2_SHA1 := de278c5b8cef84ab6dda41855052c7bfef919e36
36
+
34
37
SHELL_HACK := $(shell mkdir -p $(BIN_DIR ) /linux-x86-softfp $(BIN_DIR ) /riscv32)
35
38
36
39
ifeq ($(call has, PREBUILT) , 1)
37
40
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/')
38
41
else
39
42
# Since rv32emu only supports the dynamic binary translation of integer instruction in tiered compilation currently,
40
43
# 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 )
42
45
LDFLAGS := -lsoft-fp -lm
43
46
44
- CFLAGS_CROSS := -march=rv32im -mabi=ilp32 -O2
47
+ CFLAGS_CROSS := -march=rv32im -mabi=ilp32 -O2 -Wno-implicit-function-declaration
45
48
LDFLAGS_CROSS := -lm -lsemihost
46
49
endif
47
50
48
- .PHONY : artifact
51
+ .PHONY : artifact scimark2 ieeelib
49
52
50
- artifact :
53
+ artifact : ieeelib scimark2
51
54
ifeq ($(call has, PREBUILT) , 1)
52
55
$(Q)$(PRINTF) "Fetching prebuilt executables from \"rv32emu-prebuilt\" ...\n"
53
56
$(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
54
57
else
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)))
57
59
$(Q)for tb in $(TEST_SUITES); do \
58
60
CC=$(CC) CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" BINDIR=$(BIN_DIR)/linux-x86-softfp $(MAKE) -C ./tests/$$tb; \
59
61
done
60
62
$(Q)for tb in $(TEST_SUITES); do \
61
63
CC=$(CROSS_COMPILE)gcc CFLAGS="$(CFLAGS_CROSS)" LDFLAGS="$(LDFLAGS_CROSS)" BINDIR=$(BIN_DIR)/riscv32 $(MAKE) -C ./tests/$$tb; \
62
64
done
65
+
63
66
$(Q)$(PRINTF) "Building standalone testbenches ...\n"
64
67
$(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); \
66
69
done
67
70
$(Q)for tb in $(TEST_BENCHES); do \
68
71
$(CROSS_COMPILE)gcc $(CFLAGS_CROSS) -o $(BIN_DIR)/riscv32/$$tb ./tests/$$tb.c $(LDFLAGS_CROSS); \
69
72
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 :
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 clean && $(RM) ./tests/scimark2/scimark2.o
96
+ $(Q)$(MAKE) -C ./tests/scimark2 CC=$(CC) CFLAGS="-m32 -O2"
97
+ $(Q)cp ./tests/scimark2/scimark2 $(BIN_DIR)/linux-x86-softfp/scimark2
98
+ $(Q)$(MAKE) -C ./tests/scimark2 clean && $(RM) ./tests/scimark2/scimark2.o
99
+ $(Q)$(MAKE) -C ./tests/scimark2 CC=$(CROSS_COMPILE)gcc CFLAGS="-march=rv32imf -mabi=ilp32 -O2"
100
+ $(Q)cp ./tests/scimark2/scimark2 $(BIN_DIR)/riscv32/scimark2
101
+ endif
102
+
103
+ ieeelib :
104
+ ifeq ($(call has, PREBUILT) , 0)
105
+ git submodule update --init ./src/ieeelib
106
+ $(Q)$(MAKE) -C ./src/ieeelib CC=$(CC) CFLAGS="$(CFLAGS)" BINDIR=$(BIN_DIR)
70
107
endif
0 commit comments