PLATFORM ?= murax RISCV_ARCH ?= rv32im RISCV_ABI ?= ilp32 RISCV_CMODEL ?= medany RISCV_ARCHFLAGS += -march=$(RISCV_ARCH) RISCV_ARCHFLAGS += -mabi=$(RISCV_ABI) RISCV_ARCHFLAGS += -mcmodel=$(RISCV_CMODEL) CFLAGS += -Os -Wall -Wextra CFLAGS += $(RISCV_ARCHFLAGS) CFLAGS += -fstrict-volatile-bitfields CFLAGS += --specs=nosys.specs ifeq ($(PLATFORM),murax) CFLAGS += -DVEXRISCV_VOLATILE endif ifeq ($(PLATFORM),pqvexriscvup5k) CFLAGS += -DVEXRISCV_VOLATILE -DVEXRISCV_RWMTVEC endif ifeq ($(PLATFORM),pqvexriscvicoboard) CFLAGS += -DVEXRISCV_VOLATILE -DVEXRISCV_RWMTVEC endif ifeq ($(PLATFORM),pqvexriscvsim) CFLAGS += -DVEXRISCV_RWMTVEC endif ifeq ($(PLATFORM),pqvexriscvsimhuge) CFLAGS += -DVEXRISCV_RWMTVEC endif CROSS_PREFIX ?= riscv64-unknown-elf CC = $(CROSS_PREFIX)-gcc AR = $(CROSS_PREFIX)-ar SRCS = init.c start.s OBJS = $(PLATFORM)_init.o $(PLATFORM)_start.o TARGET = lib$(PLATFORM)bsp.a all: $(TARGET) $(TARGET): $(OBJS) $(AR) rcs $@ $^ $(PLATFORM)_%.o: %.c $(CC) $(CFLAGS) -c -o $@ $< $(PLATFORM)_%.o: %.S $(CC) $(CFLAGS) -c -o $@ $< clean: rm -rf $(OBJS) $(TARGET)