1 ##############################################################################
3 # NOTE: Can be overridden externally.
6 # Compiler options here.
8 USE_OPT = -O2 -ggdb -fomit-frame-pointer -falign-functions=16 -std=gnu99 -DPROTOCOL_CHIBIOS
11 # C specific options here (added to USE_OPT).
16 # include specific config.h?
18 USE_COPT += -include $(CONFIG_H)
21 # C++ specific options here (added to USE_OPT).
23 USE_CPPOPT = -fno-rtti
26 # Enable this if you want the linker to remove unused code and data
27 ifeq ($(USE_LINK_GC),)
31 # Linker extra options here.
36 # Enable this if you want link time optimizations (LTO)
41 # If enabled, this option allows to compile the application in THUMB mode.
46 # Enable this if you want to see the full log while compiling.
47 ifeq ($(USE_VERBOSE_COMPILE),)
48 USE_VERBOSE_COMPILE = no
51 # If enabled, this option makes the build process faster by not compiling
52 # modules not used in the current configuration.
53 ifeq ($(USE_SMART_BUILD),)
58 # Build global options
59 ##############################################################################
61 ##############################################################################
62 # Architecture or project specific options
65 # Stack size to be allocated to the Cortex-M process stack. This stack is
66 # the stack used by the main() thread.
67 ifeq ($(USE_PROCESS_STACKSIZE),)
68 USE_PROCESS_STACKSIZE = 0x200
71 # Stack size to the allocated to the Cortex-M main/exceptions stack. This
72 # stack is used for processing interrupts and exceptions.
73 ifeq ($(USE_EXCEPTIONS_STACKSIZE),)
74 USE_EXCEPTIONS_STACKSIZE = 0x400
78 # Architecture or project specific options
79 ##############################################################################
81 ##############################################################################
82 # Project, sources and paths
85 # Imported source files and paths
86 CHIBIOS = $(TMK_DIR)/tool/chibios/chibios
88 include $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/mk/startup_$(MCU_STARTUP).mk
89 # HAL-OSAL files (optional).
90 include $(CHIBIOS)/os/hal/hal.mk
91 include $(CHIBIOS)/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)/platform.mk
92 ifneq ("$(wildcard $(TARGET_DIR)/boards/$(BOARD))","")
93 include $(TARGET_DIR)/boards/$(BOARD)/board.mk
95 include $(CHIBIOS)/os/hal/boards/$(BOARD)/board.mk
97 include $(CHIBIOS)/os/hal/osal/rt/osal.mk
98 # RTOS files (optional).
99 include $(CHIBIOS)/os/rt/rt.mk
100 include $(CHIBIOS)/os/rt/ports/ARMCMx/compilers/GCC/mk/port_v$(ARMV)m.mk
101 # Other files (optional).
103 # Define linker script file here
104 ifneq ("$(wildcard $(TARGET_DIR)/ld/$(MCU_LDSCRIPT).ld)","")
105 LDSCRIPT = $(TARGET_DIR)/ld/$(MCU_LDSCRIPT).ld
107 LDSCRIPT = $(STARTUPLD)/$(MCU_LDSCRIPT).ld
110 # C sources that can be compiled in ARM or THUMB mode depending on the global
112 CSRC = $(STARTUPSRC) \
119 $(CHIBIOS)/os/hal/lib/streams/chprintf.c \
120 $(TMK_DIR)/protocol/chibios/usb_main.c \
121 $(TMK_DIR)/protocol/chibios/main.c \
124 # C++ sources that can be compiled in ARM or THUMB mode depending on the global
128 # C sources to be compiled in ARM mode regardless of the global setting.
129 # NOTE: Mixing ARM and THUMB mode enables the -mthumb-interwork compiler
130 # option that results in lower performance and larger code size.
133 # C++ sources to be compiled in ARM mode regardless of the global setting.
134 # NOTE: Mixing ARM and THUMB mode enables the -mthumb-interwork compiler
135 # option that results in lower performance and larger code size.
138 # C sources to be compiled in THUMB mode regardless of the global setting.
139 # NOTE: Mixing ARM and THUMB mode enables the -mthumb-interwork compiler
140 # option that results in lower performance and larger code size.
143 # C sources to be compiled in THUMB mode regardless of the global setting.
144 # NOTE: Mixing ARM and THUMB mode enables the -mthumb-interwork compiler
145 # option that results in lower performance and larger code size.
148 # List ASM source files here
149 ASMSRC = $(STARTUPASM) $(PORTASM) $(OSALASM)
151 INCDIR = $(STARTUPINC) $(KERNINC) $(PORTINC) $(OSALINC) \
152 $(HALINC) $(PLATFORMINC) $(BOARDINC) $(TESTINC) \
153 $(CHIBIOS)/os/hal/lib/streams $(CHIBIOS)/os/various \
154 $(TMK_DIR) $(COMMON_DIR) $(TMK_DIR)/protocol/chibios \
155 $(TMK_DIR)/protocol $(TARGET_DIR)
158 # Project, sources and paths
159 ##############################################################################
161 ##############################################################################
166 TRGT = arm-none-eabi-
169 # Enable loading with g++ only if you need C++ runtime support.
170 # NOTE: You can use C++ even without C++ support if you are careful. C++
171 # runtime support makes code size explode.
175 AS = $(TRGT)gcc -x assembler-with-cpp
180 BIN = $(CP) -O binary
182 # ARM-specific options here
185 # THUMB-specific options here
186 TOPT = -mthumb -DTHUMB
188 # Define C warning options here
189 CWARN = -Wall -Wextra -Wundef -Wstrict-prototypes -Wno-missing-field-initializers
191 # Define C++ warning options here
192 CPPWARN = -Wall -Wextra -Wundef
196 ##############################################################################
198 ##############################################################################
199 # Start of user section
202 # List all user C define here, like -D_DEBUG=1
203 ## Select which interfaces to include here!
206 # Define ASM defines here
207 UADEFS += $(OPT_DEFS)
208 # bootloader definitions may be used in the startup .s file
209 ifneq ("$(wildcard $(TARGET_DIR)/bootloader_defs.h)","")
210 UADEFS += -include $(TARGET_DIR)/bootloader_defs.h
211 UDEFS += -include $(TARGET_DIR)/bootloader_defs.h
212 else ifneq ("$(wildcard $(TARGET_DIR)/boards/$(BOARD)/bootloader_defs.h)","")
213 UADEFS += -include $(TARGET_DIR)/boards/$(BOARD)/bootloader_defs.h
214 UDEFS += -include $(TARGET_DIR)/boards/$(BOARD)/bootloader_defs.h
217 # List all user directories here
220 # List the user directory to look for the libraries here
223 # List all user libraries here
227 # End of user defines
228 ##############################################################################
230 RULESPATH = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC
231 include $(RULESPATH)/rules.mk