mbv: use new ninja-based build

This commit is contained in:
2025-03-30 17:42:20 -07:00
parent 922f258884
commit a5c14f089b
9 changed files with 307 additions and 85 deletions

View File

@@ -1,84 +1,3 @@
TOOLCHAIN_PATH = /opt/xpack-riscv-none-elf-gcc-14.2.0-3/bin/
CC = $(TOOLCHAIN_PATH)riscv-none-elf-gcc
LD = $(TOOLCHAIN_PATH)riscv-none-elf-g++
CXX = $(TOOLCHAIN_PATH)riscv-none-elf-g++
OBJCOPY = $(TOOLCHAIN_PATH)riscv-none-elf-objcopy
linker_script = bootloader.ld
includes =
sources =
CFLAGS = -march=rv32i -g -ffunction-sections -fdata-sections -Os -Werror -Wall -flto
CXXFLAGS = $(CFLAGS) -std=c++20 -fno-exceptions -fcoroutines
CPPFLAGS = -MD -MP
LDFLAGS = -march=rv32i \
-g \
-Wl,--gc-sections -Os \
-Wl,--print-memory-usage -flto
sources += hal/lib/common/xil_assert.c
includes += -Ihal/lib/common
sources += hal/uart/xuartlite.c hal/uart/xuartlite_stats.c hal/uart/xuartlite_intr.c
includes += -Ihal/uart
bootloader_objects = bootloader.o start.o $(sources:.c=.o)
helloworld_objects = helloworld.o start.o $(sources:.c=.o)
all_objects = $(bootloader_objects) $(helloworld_objects)
deps = $(all_objects:.o=.d)
CPPFLAGS += $(includes)
%.bin: %.elf
$(OBJCOPY) -O binary $< $@
%.elf: app.ld
$(LD) -Wl,-Tapp.ld $(LDFLAGS) -o $@ $(objects)
bootloader.elf: $(bootloader_objects) bootloader.ld
$(LD) -Wl,-Tbootloader.ld $(LDFLAGS) -o $@ $(bootloader_objects)
helloworld.elf: objects = $(helloworld_objects)
helloworld.elf: $(helloworld_objects)
HOSTCXX = clang++
HOSTLDFLAGS = -lgmock -lgtest -lgtest_main -L/usr/local/opt/llvm/lib -L/usr/local/lib
HOSTCFLAGS = -std=c++20 -g\
-I/usr/local/opt/llvm/include \
-I/usr/local/include \
-I/usr/local/include \
-MP -MD
TSAN_CFLAGS = $(HOSTCFLAGS) -fsanitize=thread
ASAN_CFLAGS = $(HOSTCFLAGS) -fsanitize=address -fsanitize=leak
tests =
.PHONY: test
test: $(tests) ## Run tests
%.run: test/%
TSAN_OPTIONS='suppressions=tsan.suppressions' ASAN_OPTIONS=detect_leaks=1 ./$<
%.host.o: %.cc
$(HOSTCXX) $(HOSTCFLAGS) -c -o $@ $<
test/%_test: | mktest
$(HOSTCXX) $(HOSTCFLAGS) -o $@ $^ $(HOSTLDFLAGS)
test/%_asan: | mktest
$(HOSTCXX) $(ASAN_CFLAGS) -o $@ $^ $(HOSTLDFLAGS)
test/%_tsan: | mktest
$(HOSTCXX) $(TSAN_CFLAGS) -o $@ $^ $(HOSTLDFLAGS)
.PHONY: mktest
mktest:
mkdir -p test
test_deps =
.PHONY: bootloader
bootloader: ## Build the bootloader in docker
docker build -o . --target export --build-arg TARGET=bootloader.elf .