57 lines
1.3 KiB
Makefile
57 lines
1.3 KiB
Makefile
TOOLCHAIN_PREFIX ?= riscv64-elf-
|
|
|
|
CC := $(TOOLCHAIN_PREFIX)gcc
|
|
OBJCOPY := $(TOOLCHAIN_PREFIX)objcopy
|
|
OBJDUMP := $(TOOLCHAIN_PREFIX)objdump
|
|
SIZE := $(TOOLCHAIN_PREFIX)size
|
|
|
|
TARGET := blinky
|
|
SRCS_C := blinky.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/1 "%02x\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)
|