aboutsummaryrefslogtreecommitdiff
path: root/tmk_core/chibios.mk
diff options
context:
space:
mode:
Diffstat (limited to 'tmk_core/chibios.mk')
-rw-r--r--tmk_core/chibios.mk154
1 files changed, 154 insertions, 0 deletions
diff --git a/tmk_core/chibios.mk b/tmk_core/chibios.mk
new file mode 100644
index 000000000..0abb933a8
--- /dev/null
+++ b/tmk_core/chibios.mk
@@ -0,0 +1,154 @@
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)
92
93SRC += $(patsubst $(TOP_DIR)/%,%,$(CHIBISRC))
94
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 =
116
117THUMBFLAGS = -DTHUMB_PRESENT -mno-thumb-interwork -DTHUMB_NO_INTERWORKING -mthumb -DTHUMB
118
119COMPILEFLAGS += -fomit-frame-pointer
120COMPILEFLAGS += -falign-functions=16
121COMPILEFLAGS += -ffunction-sections
122COMPILEFLAGS += -fdata-sections
123COMPILEFLAGS += -fno-common
124COMPILEFLAGS += $(THUMBFLAGS)
125
126CFLAGS += $(COMPILEFLAGS)
127
128ASFLAGS += $(THUMBFLAGS)
129
130CPPFLAGS += $(COMPILEFLAGS)
131CPPFLAGS += -fno-rtti
132
133LDFLAGS +=-Wl,--gc-sections
134LDFLAGS += -mno-thumb-interwork -mthumb
135LDSYMBOLS =,--defsym=__process_stack_size__=$(USE_PROCESS_STACKSIZE)
136LDSYMBOLS :=$(LDSYMBOLS),--defsym=__main_stack_size__=$(USE_EXCEPTIONS_STACKSIZE)
137LDFLAGS += -Wl,--script=$(LDSCRIPT)$(LDSYMBOLS)
138
139OPT_DEFS += -DPROTOCOL_CHIBIOS
140
141MCUFLAGS = -mcpu=$(MCU)
142
143DEBUG = gdb
144
145# Define ASM defines here
146# bootloader definitions may be used in the startup .s file
147ifneq ("$(wildcard $(KEYBOARD_PATH)/bootloader_defs.h)","")
148 OPT_DEFS += -include $(KEYBOARD_PATH)/bootloader_defs.h
149else ifneq ("$(wildcard $(KEYBOARD_PATH)/boards/$(BOARD)/bootloader_defs.h)","")
150 OPT_DEFS += -include $(KEYBOARD_PATH)/boards/$(BOARD)/bootloader_defs.h
151endif
152
153# List any extra directories to look for libraries here.
154EXTRALIBDIRS = $(RULESPATH)/ld \ No newline at end of file