1- BUILD_DIR := $(CURDIR ) /build
2- ELF := $(BUILD_DIR ) /z6m_debug
1+ # ========== Architecture selection ==========
2+ # Default to riscv32im, can be overridden: make ARCH=rv64
3+ ARCH ?= rv32
4+
5+ ifeq ($(ARCH ) ,rv64)
6+ BUILD_DIR := $(CURDIR ) /build64
7+ CONAN_PROFILE := $(CURDIR ) /conan/profiles/riscv64im.conan.profile
8+ CMAKE_TOOLCHAIN := $(CURDIR ) /cmake/riscv64im.cmake
9+ LINKER_SCRIPT := $(CURDIR ) /qemu-xpack-64.ld
10+ QEMU_SYSTEM := qemu-system-riscv64
11+ START_ASM := start64.S
12+ else
13+ BUILD_DIR := $(CURDIR ) /build
14+ CONAN_PROFILE := $(CURDIR ) /conan/profiles/riscv32im.conan.profile
15+ CMAKE_TOOLCHAIN := $(CURDIR ) /cmake/riscv32im.cmake
16+ LINKER_SCRIPT := $(CURDIR ) /qemu-xpack.ld
17+ QEMU_SYSTEM := qemu-system-riscv32
18+ START_ASM := start.S
19+ endif
320
4- CONAN_PROFILE = $(CURDIR ) /conan/profiles/riscv32im.conan.profile
5- CMAKE_TOOLCHAIN = $(CURDIR ) /cmake/riscv32im.cmake
21+ ELF := $(BUILD_DIR ) /z6m_debug
622
723.PHONY : xpack-elf
824xpack-elf : xpack-zilkworm
@@ -15,7 +31,8 @@ xpack-elf: xpack-zilkworm
1531 -DCMAKE_MESSAGE_LOG_LEVEL=VERBOSE \
1632 -DCMAKE_VERBOSE_MAKEFILE=ON \
1733 -G " Unix Makefiles" \
18- -DCMAKE_EXE_LINKER_FLAGS=" -T$( CURDIR) /qemu-xpack.ld -z norelro" \
34+ -DCMAKE_EXE_LINKER_FLAGS=" -T$( LINKER_SCRIPT) -z norelro" \
35+ -DSTART_ASM=$(START_ASM ) \
1936 -Wno-dev
2037 cmake --build $(BUILD_DIR ) -j --verbose
2138
@@ -46,7 +63,7 @@ rlp-qemu: xpack-elf
4663 @echo " QEMU waiting for GDB on :1234..."
4764 @N=$$(wc -c <"$(file-name ) " ) ; \
4865 { printf " 123456789_123456789_123456789_123" ; printf " %u\n" $$ N; cat " $( file-name) " ; } | \
49- qemu-system-riscv32 -M virt -m 2G -nographic \
66+ $( QEMU_SYSTEM ) -M virt -m 2G -nographic \
5067 -bios $(ELF ) -S -gdb tcp::1234 \
5168 -chardev stdio,mux=on,id=stdio0 \
5269 -serial chardev:stdio0 \
@@ -81,7 +98,9 @@ xpack-elf-eest: xpack-zilkworm-eest
8198 -DCMAKE_MESSAGE_LOG_LEVEL=VERBOSE \
8299 -DCMAKE_VERBOSE_MAKEFILE=ON \
83100 -G " Unix Makefiles" \
84- -DCMAKE_EXE_LINKER_FLAGS=" -T$( CURDIR) /qemu-xpack.ld -z norelro" \
101+ -DCMAKE_EXE_LINKER_FLAGS=" -T$( LINKER_SCRIPT) -z norelro" \
102+ -DSTART_ASM=$(START_ASM ) \
103+ -DQEMU_SYSTEM=$(QEMU_SYSTEM ) \
85104 -DBUILD_TESTING=ON \
86105 -DTESTS_DIR=$(CURDIR ) /../third_party/eest-fixtures/blockchain_tests \
87106 -Wno-dev
@@ -93,18 +112,18 @@ qemu-eest: xpack-elf-eest
93112 @if [ -z " $( file-name) " ]; then echo " Usage: make qemu-eest file-name=path/to.json" ; exit 1; fi
94113 @N=$$(wc -c <"$(file-name ) " ) ; \
95114 { printf " 123456789_123456789_123456789_123" ; printf " 1 %u\n" $$ N; cat " $( file-name) " ; } | \
96- qemu-system-riscv32 -M virt -m 2G -nographic \
115+ $( QEMU_SYSTEM ) -M virt -m 2G -nographic \
97116 -bios $(BUILD_DIR ) /z6m_debug \
98117 -chardev stdio,mux=on,id=stdio0 \
99118 -serial chardev:stdio0 \
100119 -semihosting-config enable=on,chardev=stdio0 \
101120 -mon chardev=stdio0,mode=readline
102121
103- rv32im_eest_blockchain_tests : xpack-elf-eest
104- ctest --test-dir build --parallel --output-on-failure
122+ eest-blockchain-tests : xpack-elf-eest
123+ ctest --test-dir $( BUILD_DIR ) --parallel --output-on-failure
105124
106- rerun_ctest :
107- ctest --test-dir build --parallel --output-on-failure -V --timeout 7200
125+ rerun-ctest :
126+ ctest --test-dir $( BUILD_DIR ) --parallel --output-on-failure -V --timeout 7200
108127
109128# rerun-qemu-eest:
110129# @if [ -z "$(file-name)" ]; then echo "Usage: make qemu-eest file-name=path/to.json"; exit 1; fi
@@ -149,15 +168,35 @@ rerun-qemu-eest:
149168 @N=$$(wc -c <"$(file-name ) " ) ; \
150169 rm -f semihost.log serial.log; \
151170 { printf " 1 %u\n" $$ N; cat " $( file-name) " ; } > stdin_payload.bin; \
152- qemu-system-riscv32 -M virt -m 2G -display none \
171+ $( QEMU_SYSTEM ) -M virt -m 2G -display none \
153172 -bios $(BUILD_DIR ) /z6m_debug \
154173 -monitor none \
155174 -serial none \
156175 -chardev file,id=shlog,path=semihost.log \
157176 -semihosting-config enable=on,target=native,chardev=shlog
158177
159178
160- # # Clean build artifacts
161- .PHONY : clean
179+ # ========== Convenience targets for specific architectures ==========
180+ .PHONY : xpack-elf-eest-rv32 xpack-elf-eest-rv64 eest-rv32 eest-rv64
181+
182+ # RV32 specific targets
183+ xpack-elf-eest-rv32 :
184+ $(MAKE ) ARCH=rv32 xpack-elf-eest
185+
186+ eest-rv32 :
187+ $(MAKE ) ARCH=rv32 eest-blockchain-tests
188+
189+ # RV64 specific targets
190+ xpack-elf-eest-rv64 :
191+ $(MAKE ) ARCH=rv64 xpack-elf-eest
192+
193+ eest-rv64 :
194+ $(MAKE ) ARCH=rv64 eest-blockchain-tests
195+
196+ # Clean build artifacts
197+ .PHONY : clean clean-all
162198clean :
163- rm -rf $(BUILD_DIR )
199+ rm -rf $(BUILD_DIR )
200+
201+ clean-all :
202+ rm -rf $(CURDIR ) /build $(CURDIR ) /build64
0 commit comments