# risc-v-gsp-rm-debugger uproc demo firmware (RISC-V 64, bare metal) # # Uses clang + lld (no riscv64 GCC required): # CC=clang, LD=ld.lld (absolute path to llvm-18 lld by default). # Override with: make CC=... LLD=... # `?=` does not override make's built-in CC=cc, so choose clang explicitly; # a command-line `make CC=...` still wins. CC := clang LLD ?= $(shell command -v ld.lld 2>/dev/null || echo /usr/lib/llvm-18/bin/ld.lld) BUILD := build TARGET := $(BUILD)/uproc_demo.elf CFLAGS := --target=riscv64-unknown-elf -march=rv64imac -mabi=lp64 \ -mcmodel=medany -mno-relax -ffreestanding -nostdlib -fno-builtin \ -fno-stack-protector -O2 -Wall -Wextra -I. LDFLAGS := --ld-path=$(LLD) -nostdlib -static -Wl,-T,linker.ld -Wl,--no-relax SRCS := start.S main.c .PHONY: all clean dump all: $(TARGET) $(TARGET): $(SRCS) linker.ld ge_uart.h @mkdir -p $(BUILD) $(CC) $(CFLAGS) $(SRCS) $(LDFLAGS) -o $@ @echo "built $@" dump: $(TARGET) @llvm-objdump-18 -d --no-show-raw-insn $(TARGET) | head -80 2>/dev/null || \ objdump -d $(TARGET) | head -80 clean: rm -rf $(BUILD)