74 lines
1.4 KiB
Makefile
74 lines
1.4 KiB
Makefile
CC = riscv64-unknown-elf-gcc
|
|
OBJCOPY = riscv64-unknown-elf-objcopy
|
|
SIZE = riscv64-unknown-elf-size
|
|
|
|
PROJECT = fan_controller
|
|
BUILD = build
|
|
SRC_DIR = src
|
|
FUN_DIR = $(HOME)/git/ch32fun/ch32fun
|
|
|
|
MINICHLINK = $(FUN_DIR)/../minichlink/minichlink
|
|
|
|
SRCS = $(SRC_DIR)/main.c $(FUN_DIR)/ch32fun.c
|
|
OBJS = $(patsubst %.c, $(BUILD)/%.o, $(SRCS))
|
|
|
|
CFLAGS = \
|
|
-march=rv32ec \
|
|
-mabi=ilp32e \
|
|
-Os \
|
|
-flto \
|
|
-ffunction-sections \
|
|
-fdata-sections \
|
|
-fno-common \
|
|
-DCH32V003 \
|
|
-Wall \
|
|
-Wno-attributes \
|
|
-I$(FUN_DIR) \
|
|
-I$(SRC_DIR) \
|
|
-I/usr/include/newlib \
|
|
-I$(SRC_DIR)/funconf.h
|
|
|
|
LD_SCRIPT_IN = $(FUN_DIR)/ch32fun.ld
|
|
LD_SCRIPT_OUT = $(BUILD)/ch32fun_processed.ld
|
|
|
|
LDFLAGS = \
|
|
-march=rv32ec \
|
|
-mabi=ilp32e \
|
|
-T$(LD_SCRIPT_OUT) \
|
|
-Wl,--gc-sections \
|
|
-nostdlib \
|
|
-flto
|
|
|
|
.PHONY: all flash clean
|
|
|
|
all: $(BUILD)/$(PROJECT).bin
|
|
|
|
# Preprocess linker script
|
|
$(LD_SCRIPT_OUT): $(LD_SCRIPT_IN) | $(BUILD)
|
|
$(CC) -E -P -DCH32V003 -x assembler-with-cpp $< -o $@
|
|
|
|
# Compile
|
|
$(BUILD)/%.o: %.c | $(BUILD)
|
|
@mkdir -p $(dir $@)
|
|
$(CC) $(CFLAGS) -c $< -o $@
|
|
|
|
# Link
|
|
$(BUILD)/$(PROJECT).elf: $(OBJS) $(LD_SCRIPT_OUT)
|
|
$(CC) $(LDFLAGS) $(OBJS) -lgcc -o $@
|
|
$(SIZE) $@
|
|
|
|
# Binary
|
|
$(BUILD)/$(PROJECT).bin: $(BUILD)/$(PROJECT).elf
|
|
$(OBJCOPY) -O binary $< $@
|
|
|
|
# Flash
|
|
flash: $(BUILD)/$(PROJECT).bin
|
|
$(MINICHLINK) -w $< flash -b
|
|
|
|
# Create build dir
|
|
$(BUILD):
|
|
mkdir -p $(BUILD)
|
|
|
|
clean:
|
|
rm -rf $(BUILD)
|