Commit | Line | Data |
---|---|---|
4d4f7684 | 1 | # Hey Emacs, this is a -*- makefile -*- |
2 | ############################################################################## | |
3 | # Architecture or project specific options | |
4 | # | |
5 | ||
6 | # Stack size to be allocated to the Cortex-M process stack. This stack is | |
7 | # the stack used by the main() thread. | |
8 | ifeq ($(USE_PROCESS_STACKSIZE),) | |
9 | USE_PROCESS_STACKSIZE = 0x200 | |
10 | endif | |
11 | ||
12 | # Stack size to the allocated to the Cortex-M main/exceptions stack. This | |
13 | # stack is used for processing interrupts and exceptions. | |
14 | ifeq ($(USE_EXCEPTIONS_STACKSIZE),) | |
15 | USE_EXCEPTIONS_STACKSIZE = 0x400 | |
16 | endif | |
17 | ||
18 | # | |
19 | # Architecture or project specific options | |
20 | ############################################################################## | |
21 | ||
22 | ############################################################################## | |
23 | # Project, sources and paths | |
24 | # | |
25 | ||
26 | # Imported source files and paths | |
27 | CHIBIOS = $(TOP_DIR)/lib/chibios | |
28 | CHIBIOS_CONTRIB = $(TOP_DIR)/lib/chibios-contrib | |
29 | # Startup files. Try a few different locations, for compability with old versions and | |
30 | # for things hardware in the contrib repository | |
31 | STARTUP_MK = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/mk/startup_$(MCU_STARTUP).mk | |
32 | ifeq ("$(wildcard $(STARTUP_MK))","") | |
33 | STARTUP_MK = $(CHIBIOS)/os/common/startup/ARMCMx/compilers/GCC/mk/startup_$(MCU_STARTUP).mk | |
34 | ifeq ("$(wildcard $(STARTUP_MK))","") | |
35 | STARTUP_MK = $(CHIBIOS_CONTRIB)/os/common/startup/ARMCMx/compilers/GCC/mk/startup_$(MCU_STARTUP).mk | |
36 | endif | |
37 | endif | |
38 | include $(STARTUP_MK) | |
39 | # HAL-OSAL files (optional). | |
40 | include $(CHIBIOS)/os/hal/hal.mk | |
41 | ||
42 | PLATFORM_MK = $(CHIBIOS)/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)/platform.mk | |
43 | ifeq ("$(wildcard $(PLATFORM_MK))","") | |
44 | PLATFORM_MK = $(CHIBIOS_CONTRIB)/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)/platform.mk | |
45 | endif | |
46 | include $(PLATFORM_MK) | |
47 | ||
48 | ||
49 | BOARD_MK = $(KEYBOARD_PATH)/boards/$(BOARD)/board.mk | |
50 | ifeq ("$(wildcard $(BOARD_MK))","") | |
51 | BOARD_MK = $(CHIBIOS)/os/hal/boards/$(BOARD)/board.mk | |
52 | ifeq ("$(wildcard $(BOARD_MK))","") | |
53 | BOARD_MK = $(CHIBIOS_CONTRIB)/os/hal/boards/$(BOARD)/board.mk | |
54 | endif | |
55 | endif | |
56 | include $(BOARD_MK) | |
57 | include $(CHIBIOS)/os/hal/osal/rt/osal.mk | |
58 | # RTOS files (optional). | |
59 | include $(CHIBIOS)/os/rt/rt.mk | |
60 | # Compability with old version | |
61 | PORT_V = $(CHIBIOS)/os/rt/ports/ARMCMx/compilers/GCC/mk/port_v$(ARMV)m.mk | |
62 | ifeq ("$(wildcard $(PORT_V))","") | |
63 | PORT_V = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/mk/port_v$(ARMV)m.mk | |
64 | endif | |
65 | include $(PORT_V) | |
66 | # Other files (optional). | |
67 | include $(CHIBIOS)/os/hal/lib/streams/streams.mk | |
68 | ||
69 | RULESPATH = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC | |
70 | ifeq ("$(wildcard $(RULESPATH)/rules.mk)","") | |
71 | RULESPATH = $(CHIBIOS)/os/common/startup/ARMCMx/compilers/GCC | |
72 | endif | |
73 | ||
74 | # Define linker script file here | |
75 | ifneq ("$(wildcard $(KEYBOARD_PATH)/ld/$(MCU_LDSCRIPT).ld)","") | |
76 | LDSCRIPT = $(KEYBOARD_PATH)/ld/$(MCU_LDSCRIPT).ld | |
77 | else | |
78 | LDSCRIPT = $(STARTUPLD)/$(MCU_LDSCRIPT).ld | |
79 | endif | |
80 | ||
81 | CHIBISRC = $(STARTUPSRC) \ | |
82 | $(KERNSRC) \ | |
83 | $(PORTSRC) \ | |
84 | $(OSALSRC) \ | |
85 | $(HALSRC) \ | |
86 | $(PLATFORMSRC) \ | |
87 | $(BOARDSRC) \ | |
88 | $(STREAMSSRC) \ | |
89 | $(STARTUPASM) \ | |
90 | $(PORTASM) \ | |
91 | $(OSALASM) | |
4d4f7684 | 92 | |
3aac4e95 FS |
93 | CHIBISRC := $(patsubst $(TOP_DIR)/%,%,$(CHIBISRC)) |
94 | ||
4d4f7684 | 95 | EXTRAINCDIRS += $(CHIBIOS)/os/license \ |
96 | $(STARTUPINC) $(KERNINC) $(PORTINC) $(OSALINC) \ | |
97 | $(HALINC) $(PLATFORMINC) $(BOARDINC) $(TESTINC) \ | |
98 | $(STREAMSINC) $(CHIBIOS)/os/various | |
99 | ||
100 | # | |
101 | # Project, sources and paths | |
102 | ############################################################################## | |
103 | ||
104 | ||
105 | ############################################################################## | |
106 | # Compiler settings | |
107 | # | |
108 | CC = arm-none-eabi-gcc | |
109 | OBJCOPY = arm-none-eabi-objcopy | |
110 | OBJDUMP = arm-none-eabi-objdump | |
111 | SIZE = arm-none-eabi-size | |
112 | AR = arm-none-eabi-ar | |
113 | NM = arm-none-eabi-nm | |
114 | HEX = $(OBJCOPY) -O $(FORMAT) | |
115 | EEP = | |
f9a6e34c | 116 | BIN = $(OBJCOPY) -O binary |
4d4f7684 | 117 | |
118 | THUMBFLAGS = -DTHUMB_PRESENT -mno-thumb-interwork -DTHUMB_NO_INTERWORKING -mthumb -DTHUMB | |
119 | ||
120 | COMPILEFLAGS += -fomit-frame-pointer | |
121 | COMPILEFLAGS += -falign-functions=16 | |
122 | COMPILEFLAGS += -ffunction-sections | |
123 | COMPILEFLAGS += -fdata-sections | |
124 | COMPILEFLAGS += -fno-common | |
125 | COMPILEFLAGS += $(THUMBFLAGS) | |
126 | ||
127 | CFLAGS += $(COMPILEFLAGS) | |
128 | ||
129 | ASFLAGS += $(THUMBFLAGS) | |
130 | ||
131 | CPPFLAGS += $(COMPILEFLAGS) | |
132 | CPPFLAGS += -fno-rtti | |
133 | ||
134 | LDFLAGS +=-Wl,--gc-sections | |
135 | LDFLAGS += -mno-thumb-interwork -mthumb | |
136 | LDSYMBOLS =,--defsym=__process_stack_size__=$(USE_PROCESS_STACKSIZE) | |
137 | LDSYMBOLS :=$(LDSYMBOLS),--defsym=__main_stack_size__=$(USE_EXCEPTIONS_STACKSIZE) | |
138 | LDFLAGS += -Wl,--script=$(LDSCRIPT)$(LDSYMBOLS) | |
139 | ||
140 | OPT_DEFS += -DPROTOCOL_CHIBIOS | |
141 | ||
142 | MCUFLAGS = -mcpu=$(MCU) | |
143 | ||
144 | DEBUG = gdb | |
145 | ||
4d4f7684 | 146 | # List any extra directories to look for libraries here. |
f9a6e34c FS |
147 | EXTRALIBDIRS = $(RULESPATH)/ld |
148 | ||
149 | dfu-util: $(BUILD_DIR)/$(TARGET).bin sizeafter | |
150 | dfu-util -D $(BUILD_DIR)/$(TARGET).bin |