actual project
This commit is contained in:
72
Makefile
Normal file
72
Makefile
Normal file
@@ -0,0 +1,72 @@
|
||||
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
|
||||
|
||||
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)
|
||||
Reference in New Issue
Block a user