Merge pull request #994 from priyadi/unicode_mods_fix
[jackhill/qmk/firmware.git] / tmk_core / chibios.mk
CommitLineData
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.
8ifeq ($(USE_PROCESS_STACKSIZE),)
9 USE_PROCESS_STACKSIZE = 0x200
10endif
11
12# Stack size to the allocated to the Cortex-M main/exceptions stack. This
13# stack is used for processing interrupts and exceptions.
14ifeq ($(USE_EXCEPTIONS_STACKSIZE),)
15 USE_EXCEPTIONS_STACKSIZE = 0x400
16endif
17
18#
19# Architecture or project specific options
20##############################################################################
21
22##############################################################################
23# Project, sources and paths
24#
25
26# Imported source files and paths
27CHIBIOS = $(TOP_DIR)/lib/chibios
28CHIBIOS_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
31STARTUP_MK = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/mk/startup_$(MCU_STARTUP).mk
32ifeq ("$(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
37endif
38include $(STARTUP_MK)
39# HAL-OSAL files (optional).
40include $(CHIBIOS)/os/hal/hal.mk
41
42PLATFORM_MK = $(CHIBIOS)/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)/platform.mk
43ifeq ("$(wildcard $(PLATFORM_MK))","")
44PLATFORM_MK = $(CHIBIOS_CONTRIB)/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)/platform.mk
45endif
46include $(PLATFORM_MK)
47
48
49BOARD_MK = $(KEYBOARD_PATH)/boards/$(BOARD)/board.mk
50ifeq ("$(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
55endif
56include $(BOARD_MK)
57include $(CHIBIOS)/os/hal/osal/rt/osal.mk
58# RTOS files (optional).
59include $(CHIBIOS)/os/rt/rt.mk
60# Compability with old version
61PORT_V = $(CHIBIOS)/os/rt/ports/ARMCMx/compilers/GCC/mk/port_v$(ARMV)m.mk
62ifeq ("$(wildcard $(PORT_V))","")
63PORT_V = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/mk/port_v$(ARMV)m.mk
64endif
65include $(PORT_V)
66# Other files (optional).
67include $(CHIBIOS)/os/hal/lib/streams/streams.mk
68
69RULESPATH = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC
70ifeq ("$(wildcard $(RULESPATH)/rules.mk)","")
71RULESPATH = $(CHIBIOS)/os/common/startup/ARMCMx/compilers/GCC
72endif
73
74# Define linker script file here
75ifneq ("$(wildcard $(KEYBOARD_PATH)/ld/$(MCU_LDSCRIPT).ld)","")
76LDSCRIPT = $(KEYBOARD_PATH)/ld/$(MCU_LDSCRIPT).ld
77else
78LDSCRIPT = $(STARTUPLD)/$(MCU_LDSCRIPT).ld
79endif
80
81CHIBISRC = $(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
93CHIBISRC := $(patsubst $(TOP_DIR)/%,%,$(CHIBISRC))
94
4d4f7684 95EXTRAINCDIRS += $(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#
108CC = arm-none-eabi-gcc
109OBJCOPY = arm-none-eabi-objcopy
110OBJDUMP = arm-none-eabi-objdump
111SIZE = arm-none-eabi-size
112AR = arm-none-eabi-ar
113NM = arm-none-eabi-nm
114HEX = $(OBJCOPY) -O $(FORMAT)
115EEP =
f9a6e34c 116BIN = $(OBJCOPY) -O binary
4d4f7684 117
118THUMBFLAGS = -DTHUMB_PRESENT -mno-thumb-interwork -DTHUMB_NO_INTERWORKING -mthumb -DTHUMB
119
120COMPILEFLAGS += -fomit-frame-pointer
121COMPILEFLAGS += -falign-functions=16
122COMPILEFLAGS += -ffunction-sections
123COMPILEFLAGS += -fdata-sections
124COMPILEFLAGS += -fno-common
125COMPILEFLAGS += $(THUMBFLAGS)
126
127CFLAGS += $(COMPILEFLAGS)
128
129ASFLAGS += $(THUMBFLAGS)
130
131CPPFLAGS += $(COMPILEFLAGS)
132CPPFLAGS += -fno-rtti
133
134LDFLAGS +=-Wl,--gc-sections
135LDFLAGS += -mno-thumb-interwork -mthumb
136LDSYMBOLS =,--defsym=__process_stack_size__=$(USE_PROCESS_STACKSIZE)
137LDSYMBOLS :=$(LDSYMBOLS),--defsym=__main_stack_size__=$(USE_EXCEPTIONS_STACKSIZE)
138LDFLAGS += -Wl,--script=$(LDSCRIPT)$(LDSYMBOLS)
139
140OPT_DEFS += -DPROTOCOL_CHIBIOS
141
142MCUFLAGS = -mcpu=$(MCU)
143
144DEBUG = gdb
145
4d4f7684 146# List any extra directories to look for libraries here.
f9a6e34c
FS
147EXTRALIBDIRS = $(RULESPATH)/ld
148
149dfu-util: $(BUILD_DIR)/$(TARGET).bin sizeafter
150 dfu-util -D $(BUILD_DIR)/$(TARGET).bin