1
- ENABLE_PREBUILT ?= 1
2
-
3
1
CC ?= gcc
4
2
CROSS_COMPILE ?= riscv-none-elf-
5
3
@@ -36,22 +34,11 @@ SCIMARK2_SHA1 := de278c5b8cef84ab6dda41855052c7bfef919e36
36
34
37
35
SHELL_HACK := $(shell mkdir -p $(BIN_DIR ) /linux-x86-softfp $(BIN_DIR ) /riscv32)
38
36
39
- ifeq ($(call has, PREBUILT) , 1)
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/')
41
- else
42
- # Since rv32emu only supports the dynamic binary translation of integer instruction in tiered compilation currently,
43
- # we disable the hardware floating-point and the related SIMD operation of x86.
44
- CFLAGS := -m32 -mno-sse -mno-sse2 -msoft-float -O2 -Wno-unused-result -L$(BIN_DIR )
45
- LDFLAGS := -lsoft-fp -lm
46
-
47
- CFLAGS_CROSS := -march=rv32im -mabi=ilp32 -O2 -Wno-implicit-function-declaration
48
- LDFLAGS_CROSS := -lm -lsemihost
49
- endif
37
+ 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/')
50
38
51
- .PHONY : artifact fetch-checksum scimark2 ieeelib
39
+ .PHONY : artifact fetch-checksum
52
40
53
- artifact : fetch-checksum ieeelib scimark2
54
- ifeq ($(call has, PREBUILT) , 1)
41
+ artifact : fetch-checksum
55
42
$(Q )$(PRINTF ) " Checking SHA-1 of prebuilt binaries ... "
56
43
57
44
$(Q)$(eval PREBUILT_X86_FILENAME := $(shell cat $(BIN_DIR)/sha1sum-linux-x86-softfp | awk '{ print $$2 };'))
@@ -71,64 +58,9 @@ ifeq ($(call has, PREBUILT), 1)
71
58
else \
72
59
$(call notice, [OK]); \
73
60
fi
74
- else
75
- git submodule update --init $(addprefix ./tests/,$(foreach tb,$(TEST_SUITES),$(tb)))
76
- $(Q)for tb in $(TEST_SUITES); do \
77
- CC=$(CC) CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" BINDIR=$(BIN_DIR)/linux-x86-softfp $(MAKE) -C ./tests/$$tb; \
78
- done
79
- $(Q)for tb in $(TEST_SUITES); do \
80
- CC=$(CROSS_COMPILE)gcc CFLAGS="$(CFLAGS_CROSS)" LDFLAGS="$(LDFLAGS_CROSS)" BINDIR=$(BIN_DIR)/riscv32 $(MAKE) -C ./tests/$$tb; \
81
- done
82
-
83
- $(Q)$(PRINTF) "Building standalone testbenches ...\n"
84
- $(Q)for tb in $(TEST_BENCHES); do \
85
- $(CC) $(CFLAGS) -o $(BIN_DIR)/linux-x86-softfp/$$tb ./tests/$$tb.c $(LDFLAGS); \
86
- done
87
- $(Q)for tb in $(TEST_BENCHES); do \
88
- $(CROSS_COMPILE)gcc $(CFLAGS_CROSS) -o $(BIN_DIR)/riscv32/$$tb ./tests/$$tb.c $(LDFLAGS_CROSS); \
89
- done
90
-
91
- git submodule update --init ./tests/doom ./tests/quake
92
- $(Q)$(PRINTF) "Building doom ...\n"
93
- $(Q)$(MAKE) -C ./tests/doom/src/riscv CROSS=$(CROSS_COMPILE)
94
- $(Q)cp ./tests/doom/src/riscv/doom-riscv.elf $(BIN_DIR)/riscv32/doom
95
- $(Q)$(PRINTF) "Building quake ...\n"
96
- $(Q)cd ./tests/quake && mkdir -p build && cd build && \
97
- cmake -DCMAKE_TOOLCHAIN_FILE=../port/boards/rv32emu/toolchain.cmake \
98
- -DCROSS_COMPILE=$(CROSS_COMPILE) \
99
- -DCMAKE_BUILD_TYPE=RELEASE -DBOARD_NAME=rv32emu .. && \
100
- make
101
- $(Q)cp ./tests/quake/build/port/boards/rv32emu/quake $(BIN_DIR)/riscv32/quake
102
-
103
- $(Q)(cd $(BIN_DIR)/linux-x86-softfp; for fd in *; do $(SHA1SUM) "$$fd"; done) >> $(BIN_DIR)/sha1sum-linux-x86-softfp
104
- $(Q)(cd $(BIN_DIR)/riscv32; for fd in *; do $(SHA1SUM) "$$fd"; done) >> $(BIN_DIR)/sha1sum-riscv32
105
- endif
106
61
107
62
fetch-checksum :
108
- ifeq ($(call has, PREBUILT) , 1)
109
63
$(Q )$(PRINTF ) " Fetching SHA-1 of prebuilt binaries ... "
110
64
$(Q ) wget -q -O $(BIN_DIR ) /sha1sum-linux-x86-softfp https://github.com/sysprog21/rv32emu-prebuilt/releases/download/$(LATEST_RELEASE ) /sha1sum-linux-x86-softfp
111
65
$(Q ) wget -q -O $(BIN_DIR ) /sha1sum-riscv32 https://github.com/sysprog21/rv32emu-prebuilt/releases/download/$(LATEST_RELEASE ) /sha1sum-riscv32
112
66
$(Q )$(call notice, [OK])
113
- endif
114
-
115
- scimark2 :
116
- ifeq ($(call has, PREBUILT) , 0)
117
- $(Q)$(call prologue,"scimark2")
118
- $(Q)$(call download,$(SCIMARK2_URL))
119
- $(Q)$(call verify,$(SCIMARK2_SHA1),$(notdir $(SCIMARK2_URL)))
120
- $(Q)$(call extract,"./tests/scimark2",$(notdir $(SCIMARK2_URL)))
121
- $(Q)$(call epilogue,$(notdir $(SCIMARK2_URL)),$(SHA1_FILE1),$(SHA1_FILE2))
122
- $(Q)$(PRINTF) "Building scimark2 ...\n"
123
- $(Q)$(MAKE) -C ./tests/scimark2 CC=$(CC) CFLAGS="-m32 -O2"
124
- $(Q)cp ./tests/scimark2/scimark2 $(BIN_DIR)/linux-x86-softfp/scimark2
125
- $(Q)$(MAKE) -C ./tests/scimark2 clean && $(RM) ./tests/scimark2/scimark2.o
126
- $(Q)$(MAKE) -C ./tests/scimark2 CC=$(CROSS_COMPILE)gcc CFLAGS="-march=rv32imf -mabi=ilp32 -O2"
127
- $(Q)cp ./tests/scimark2/scimark2 $(BIN_DIR)/riscv32/scimark2
128
- endif
129
-
130
- ieeelib :
131
- ifeq ($(call has, PREBUILT) , 0)
132
- git submodule update --init ./src/ieeelib
133
- $(Q)$(MAKE) -C ./src/ieeelib CC=$(CC) CFLAGS="$(CFLAGS)" BINDIR=$(BIN_DIR)
134
- endif
0 commit comments