Skip to content

Commit 952d5e5

Browse files
author
Clément Léger
committed
Makefile: Elf compilation complete
1 parent e846de6 commit 952d5e5

File tree

1 file changed

+40
-14
lines changed

1 file changed

+40
-14
lines changed

make/Makefile.cypress

Lines changed: 40 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,63 @@
1+
2+
# Add a entry here to define a new platform
13
CY8C42_flash_size := 32768
24
CY8C42_flash_array_size := 32768
35
CY8C42_flash_row_size := 128
6+
CY8C42_mcpu := cortex-m0
7+
CY8C42_cpu_dir := CortexM0
8+
9+
EMPTY :=
10+
SPACE := $(EMPTY) $(EMPTY)
411

512
PROJECT_DIR ?= $(error PROJECT_DIR must be defined)
613
PROJECT_NAME = $(basename $(notdir $(PROJECT_DIR)))
14+
PSOC_CREATOR_DIR ?= $(error PSOC_CREATOR_DIR must be defined)
15+
PSOC_CREATOR_DIR = $(subst (,\(,$(subst ),\),$(subst $(SPACE),\$(SPACE),$(PSOC_CREATOR_DIR))))
716
CROSS_COMPILE := arm-none-eabi-
8-
ARM_CPU ?= cortex-m0
9-
10-
CFLAGS := -mcpu=$(ARM_CPU) -mthumb -Wno-main -Wall -ffunction-sections -ffat-lto-objects
11-
INCLUDE_CFLAGS := -I$(PROJECT_DIR)/Generated_Source/PSoC4/ -I$(PROJECT_DIR)/
17+
BOARD_TYPE ?= CY8C42
18+
PSOC_TYPE ?= PSoC4
1219

1320
DEBUG_CFLAGS := -g -O0
1421
RELEASE_CFLAGS := -O3
15-
BOARD_TYPE := CY8C42
22+
GEN_SRC_DIR := Generated_Source/$(PSOC_TYPE)/
23+
24+
COMMON_FLAGS := -mcpu=$($(BOARD_TYPE)_mcpu) -mthumb
25+
26+
CFLAGS := $(COMMON_FLAGS) -Wno-main -Wall -ffunction-sections -ffat-lto-objects
27+
ASFLAGS := $(COMMON_FLAGS)
28+
INCLUDE_CFLAGS := -I$(PROJECT_DIR)/$(GEN_SRC_DIR) -I$(PROJECT_DIR)/
29+
30+
# Special dir from cypress tools
31+
CYCOMPONENT_LIB := $(PSOC_CREATOR_DIR)/psoc/content/CyComponentLibrary/CyComponentLibrary.cylib/$($(BOARD_TYPE)_cpu_dir)/ARM_GCC_493/Debug/CyComponentLibrary.a
32+
CYELFTOOL := $(PSOC_CREATOR_DIR)/bin/cyelftool.exe
1633

1734
BUILD_DIR ?= ./build
1835

19-
SRC_C_FILES := $(wildcard $(PROJECT_DIR)/Generated_Source/PSoC4/*.c $(PROJECT_DIR)/*.c)
20-
BOOTASM_GNU := $(PROJECT_DIR)/Generated_Source/PSoC4/CyBootAsmGnu.s
36+
SRC_C_FILES := $(wildcard $(PROJECT_DIR)/$(GEN_SRC_DIR)/*.c $(PROJECT_DIR)/*.c)
37+
BOOTASM_GNU := $(PROJECT_DIR)/$(GEN_SRC_DIR)/CyBootAsmGnu.s
2138

2239
OBJ_FILES := $(patsubst %.c,%.o,$(SRC_C_FILES)) $(subst .s,.o,$(BOOTASM_GNU))
2340
OBJ_FILES := $(subst $(PROJECT_DIR),$(BUILD_DIR),$(OBJ_FILES))
2441

25-
$(BUILD_DIR)/Generated_Source/PSoC4/:
26-
mkdir -p $@
42+
all: $(BUILD_DIR)/$(PROJECT_NAME).elf
2743

28-
$(BUILD_DIR)/Generated_Source/PSoC4/%.o: $(PROJECT_DIR)/Generated_Source/PSoC4/%.c $(BUILD_DIR)/Generated_Source/PSoC4/
44+
$(BUILD_DIR)/%.o: $(PROJECT_DIR)/%.c
45+
@mkdir -p $(dir $@)
2946
$(CROSS_COMPILE)gcc $(CFLAGS) -o $@ -c $(INCLUDE_CFLAGS) $<
3047

31-
$(BUILD_DIR)/Generated_Source/PSoC4/%.o: $(PROJECT_DIR)/Generated_Source/PSoC4/%.s $(BUILD_DIR)/Generated_Source/PSoC4/
32-
$(CROSS_COMPILE)as $(INCLUDE_CFLAGS) -o $@ $<
48+
$(BUILD_DIR)/%.o: $(PROJECT_DIR)/%.s
49+
@mkdir -p $(dir $@)
50+
$(CROSS_COMPILE)as $(ASFLAGS) $(INCLUDE_CFLAGS) -o $@ $<
3351

3452
$(BUILD_DIR)/$(PROJECT_NAME).a: $(OBJ_FILES) $(BUILD_DIR)
53+
@mkdir -p $(dir $@)
3554
$(CROSS_COMPILE)ar -rs $@ $(OBJ_FILES)
36-
37-
all: $(BUILD_DIR)/$(PROJECT_NAME).a
55+
56+
$(BUILD_DIR)/$(PROJECT_NAME).elf: $(BUILD_DIR)/$(PROJECT_NAME).a
57+
@mkdir -p $(dir $@)
58+
$(CROSS_COMPILE)gcc -specs=nano.specs $(CFLAGS) -Wl,-Map,$(BUILD_DIR)/$(PROJECT_NAME).map -L$(BUILD_DIR)/ -T $(PROJECT_DIR)/$(GEN_SRC_DIR)/cm0gcc.ld -o $@ -Wl,--start-group $^ "$(CYCOMPONENT_LIB)" -Wl,--end-group -Wl,--gc-sections
59+
wine "$(CYELFTOOL)" -B $@ --flash_row_size $($(BOARD_TYPE)_flash_row_size) --flash_size $($(BOARD_TYPE)_flash_size) --flash_array_size $($(BOARD_TYPE)_flash_array_size)
60+
wine "$(CYELFTOOL)" -S $@
61+
62+
clean:
63+
rm -rf $(BUILD_DIR)

0 commit comments

Comments
 (0)