|
| 1 | + |
| 2 | +# Add a entry here to define a new platform |
1 | 3 | CY8C42_flash_size := 32768
|
2 | 4 | CY8C42_flash_array_size := 32768
|
3 | 5 | CY8C42_flash_row_size := 128
|
| 6 | +CY8C42_mcpu := cortex-m0 |
| 7 | +CY8C42_cpu_dir := CortexM0 |
| 8 | + |
| 9 | +EMPTY := |
| 10 | +SPACE := $(EMPTY) $(EMPTY) |
4 | 11 |
|
5 | 12 | PROJECT_DIR ?= $(error PROJECT_DIR must be defined)
|
6 | 13 | 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)))) |
7 | 16 | 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 |
12 | 19 |
|
13 | 20 | DEBUG_CFLAGS := -g -O0
|
14 | 21 | 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 |
16 | 33 |
|
17 | 34 | BUILD_DIR ?= ./build
|
18 | 35 |
|
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 |
21 | 38 |
|
22 | 39 | OBJ_FILES := $(patsubst %.c,%.o,$(SRC_C_FILES)) $(subst .s,.o,$(BOOTASM_GNU))
|
23 | 40 | OBJ_FILES := $(subst $(PROJECT_DIR),$(BUILD_DIR),$(OBJ_FILES))
|
24 | 41 |
|
25 |
| -$(BUILD_DIR)/Generated_Source/PSoC4/: |
26 |
| - mkdir -p $@ |
| 42 | +all: $(BUILD_DIR)/$(PROJECT_NAME).elf |
27 | 43 |
|
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 $@) |
29 | 46 | $(CROSS_COMPILE)gcc $(CFLAGS) -o $@ -c $(INCLUDE_CFLAGS) $<
|
30 | 47 |
|
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 $@ $< |
33 | 51 |
|
34 | 52 | $(BUILD_DIR)/$(PROJECT_NAME).a: $(OBJ_FILES) $(BUILD_DIR)
|
| 53 | + @mkdir -p $(dir $@) |
35 | 54 | $(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