TOOLCHAIN_PREFIX ?= riscv64-elf- CC := $(TOOLCHAIN_PREFIX)gcc OBJCOPY := $(TOOLCHAIN_PREFIX)objcopy OBJDUMP := $(TOOLCHAIN_PREFIX)objdump SIZE := $(TOOLCHAIN_PREFIX)size TARGET := sweep SRCS_C := sweep.c SRCS_S := start.s OBJS := $(SRCS_C:.c=.o) $(SRCS_S:.s=.o) ARCH_FLAGS := -march=rv32i_zicsr -mabi=ilp32 CFLAGS := $(ARCH_FLAGS) -Os -ffreestanding -fno-builtin -Wall -Wextra ASFLAGS := $(ARCH_FLAGS) LDFLAGS := $(ARCH_FLAGS) -nostdlib -nostartfiles -Wl,-Bstatic,-Tlink.ld,--gc-sections,-Map,$(TARGET).map HEX_TO_COE := ../../scripts/hex_to_coe.py HEX_TO_MIF := ../../scripts/hex_to_mif.py .PHONY: all clean disasm size all: $(TARGET).elf $(TARGET).bin $(TARGET).hex $(TARGET).coe $(TARGET).mif $(TARGET).elf.asm $(TARGET).elf: $(OBJS) link.ld $(CC) $(LDFLAGS) -o $@ $(OBJS) %.o: %.c $(CC) $(CFLAGS) -c -o $@ $< %.o: %.s $(CC) $(ASFLAGS) -c -o $@ $< $(TARGET).bin: $(TARGET).elf $(OBJCOPY) -O binary $< $@ $(TARGET).hex: $(TARGET).bin hexdump -v -e '1/4 "%08x\n"' $< > $@ $(TARGET).coe: $(TARGET).hex $(HEX_TO_COE) $< $@ $(TARGET).mif: $(TARGET).hex $(HEX_TO_MIF) $< $@ $(TARGET).elf.asm: $(TARGET).elf $(OBJDUMP) -d -S $< > $@ disasm: $(TARGET).elf.asm size: $(TARGET).elf $(SIZE) $< clean: rm -f $(TARGET).elf $(TARGET).bin $(TARGET).hex $(TARGET).coe $(TARGET).mif \ $(TARGET).elf.asm $(TARGET).map $(OBJS)