-
Notifications
You must be signed in to change notification settings - Fork 3
/
Makefile
60 lines (36 loc) · 1.26 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
CROSS_COMPILE := arm-none-eabi-
CC := $(CROSS_COMPILE)gcc
LD := $(CROSS_COMPILE)gcc
OBJCOPY := $(CROSS_COMPILE)objcopy
CFLAGS := -mcpu=cortex-m3 -mthumb -nostartfiles -mfloat-abi=soft -ffreestanding
LDFLAGS := -mcpu=cortex-m3 -mthumb -nostartfiles -Wl,-gc-sections -specs=nosys.specs
# - #
PROJ_NAME := test
BUILD_DIR := build
SRC_DIR := src
UCMX_DIR := unicore-mx
ELF_PATH := $(BUILD_DIR)/$(PROJ_NAME).elf
BIN_PATH := $(BUILD_DIR)/$(PROJ_NAME).bin
# = #
UCMX_A := $(UCMX_DIR)/lib/libucmx_stm32f4.a
LD_SCRIPT := $(SRC_DIR)/target.ld
CFLAGS += -I$(UCMX_DIR)/include -DSTM32F4
LDFLAGS += -L$(UCMX_DIR)/lib -lucmx_stm32f4
SRC_FILES := $(wildcard $(SRC_DIR)/*.c)
OBJ_FILES := $(patsubst $(SRC_DIR)/%.c,$(BUILD_DIR)/%.o,$(SRC_FILES))
CFLAGS += -g -ggdb3 -O0
all: $(ELF_PATH) $(BIN_PATH)
$(BUILD_DIR)/.build:
@mkdir -p $(BUILD_DIR)
@touch $(BUILD_DIR)/.build
$(BUILD_DIR)/%.o: $(SRC_DIR)/%.c
$(CC) $(CFLAGS) -c -o $@ $^
$(UCMX_A):
make -C $(UCMX_DIR) TARGETS=stm32/f4 FP_FLAGS="-mfloat-abi=soft"
$(ELF_PATH): $(BUILD_DIR)/.build $(UCMX_A) $(OBJ_FILES)
$(LD) -o $@ $(OBJ_FILES) $(LDFLAGS) -T$(LD_SCRIPT)
$(BIN_PATH): $(ELF_PATH)
$(OBJCOPY) -O binary $^ $@
.PHONY: flash
flash: $(BIN_PATH)
st-flash write $(BIN_PATH) 0x8000000