aboutsummaryrefslogtreecommitdiff
path: root/build_keyboard.mk
diff options
context:
space:
mode:
Diffstat (limited to 'build_keyboard.mk')
-rw-r--r--build_keyboard.mk206
1 files changed, 138 insertions, 68 deletions
diff --git a/build_keyboard.mk b/build_keyboard.mk
index 88b876bac..450207850 100644
--- a/build_keyboard.mk
+++ b/build_keyboard.mk
@@ -6,18 +6,26 @@ endif
6 6
7include common.mk 7include common.mk
8 8
9ifneq ($(SUBPROJECT),) 9# 5/4/3/2/1
10 TARGET ?= $(KEYBOARD)_$(SUBPROJECT)_$(KEYMAP) 10KEYBOARD_FOLDER_PATH_1 := $(KEYBOARD)
11 KEYBOARD_OUTPUT := $(BUILD_DIR)/obj_$(KEYBOARD)_$(SUBPROJECT) 11KEYBOARD_FOLDER_PATH_2 := $(patsubst %/,%,$(dir $(KEYBOARD_FOLDER_PATH_1)))
12else 12KEYBOARD_FOLDER_PATH_3 := $(patsubst %/,%,$(dir $(KEYBOARD_FOLDER_PATH_2)))
13 TARGET ?= $(KEYBOARD)_$(KEYMAP) 13KEYBOARD_FOLDER_PATH_4 := $(patsubst %/,%,$(dir $(KEYBOARD_FOLDER_PATH_3)))
14 KEYBOARD_OUTPUT := $(BUILD_DIR)/obj_$(KEYBOARD) 14KEYBOARD_FOLDER_PATH_5 := $(patsubst %/,%,$(dir $(KEYBOARD_FOLDER_PATH_4)))
15endif 15KEYBOARD_FOLDER_1 := $(notdir $(KEYBOARD_FOLDER_PATH_1))
16KEYBOARD_FOLDER_2 := $(notdir $(KEYBOARD_FOLDER_PATH_2))
17KEYBOARD_FOLDER_3 := $(notdir $(KEYBOARD_FOLDER_PATH_3))
18KEYBOARD_FOLDER_4 := $(notdir $(KEYBOARD_FOLDER_PATH_4))
19KEYBOARD_FOLDER_5 := $(notdir $(KEYBOARD_FOLDER_PATH_5))
20
21KEYBOARD_FILESAFE := $(subst /,_,$(KEYBOARD))
22
23TARGET ?= $(KEYBOARD_FILESAFE)_$(KEYMAP)
24KEYBOARD_OUTPUT := $(BUILD_DIR)/obj_$(KEYBOARD_FILESAFE)
16 25
17# Force expansion 26# Force expansion
18TARGET := $(TARGET) 27TARGET := $(TARGET)
19 28
20
21MASTER ?= left 29MASTER ?= left
22ifdef master 30ifdef master
23 MASTER = $(master) 31 MASTER = $(master)
@@ -31,28 +39,62 @@ $(error MASTER does not have a valid value(left/right))
31 endif 39 endif
32endif 40endif
33 41
34KEYBOARD_PATH := keyboards/$(KEYBOARD) 42KEYBOARD_PATHS :=
35KEYBOARD_C := $(KEYBOARD_PATH)/$(KEYBOARD).c
36 43
37ifneq ("$(wildcard $(KEYBOARD_C))","") 44KEYBOARD_PATH_1 := keyboards/$(KEYBOARD_FOLDER_PATH_1)
38 include $(KEYBOARD_PATH)/rules.mk 45KEYBOARD_PATH_2 := keyboards/$(KEYBOARD_FOLDER_PATH_2)
39else 46KEYBOARD_PATH_3 := keyboards/$(KEYBOARD_FOLDER_PATH_3)
40 $(error "$(KEYBOARD_C)" does not exist) 47KEYBOARD_PATH_4 := keyboards/$(KEYBOARD_FOLDER_PATH_4)
41endif 48KEYBOARD_PATH_5 := keyboards/$(KEYBOARD_FOLDER_PATH_5)
42OPT_DEFS += -DKEYBOARD_$(KEYBOARD) 49
43 50ifneq ("$(wildcard $(KEYBOARD_PATH_5)/rules.mk)","")
44ifneq ($(SUBPROJECT),) 51 KEYBOARD_PATHS += $(KEYBOARD_PATH_5)
45 SUBPROJECT_PATH := keyboards/$(KEYBOARD)/$(SUBPROJECT) 52 include $(KEYBOARD_PATH_5)/rules.mk
46 SUBPROJECT_C := $(SUBPROJECT_PATH)/$(SUBPROJECT).c 53endif
47 ifneq ("$(wildcard $(SUBPROJECT_C))","") 54ifneq ("$(wildcard $(KEYBOARD_PATH_4)/rules.mk)","")
48 OPT_DEFS += -DSUBPROJECT_$(SUBPROJECT) 55 KEYBOARD_PATHS += $(KEYBOARD_PATH_4)
49 include $(SUBPROJECT_PATH)/rules.mk 56 include $(KEYBOARD_PATH_4)/rules.mk
50 else 57endif
51 $(error "$(SUBPROJECT_PATH)/$(SUBPROJECT).c" does not exist) 58ifneq ("$(wildcard $(KEYBOARD_PATH_3)/rules.mk)","")
52 endif 59 KEYBOARD_PATHS += $(KEYBOARD_PATH_3)
60 include $(KEYBOARD_PATH_3)/rules.mk
53endif 61endif
62ifneq ("$(wildcard $(KEYBOARD_PATH_2)/rules.mk)","")
63 KEYBOARD_PATHS += $(KEYBOARD_PATH_2)
64 include $(KEYBOARD_PATH_2)/rules.mk
65endif
66ifneq ("$(wildcard $(KEYBOARD_PATH_1)/rules.mk)","")
67 KEYBOARD_PATHS += $(KEYBOARD_PATH_1)
68 include $(KEYBOARD_PATH_1)/rules.mk
69endif
70
71KEYBOARD_SRC :=
72
73KEYBOARD_C_1 := $(KEYBOARD_PATH_1)/$(KEYBOARD_FOLDER_1).c
74KEYBOARD_C_2 := $(KEYBOARD_PATH_2)/$(KEYBOARD_FOLDER_2).c
75KEYBOARD_C_3 := $(KEYBOARD_PATH_3)/$(KEYBOARD_FOLDER_3).c
76KEYBOARD_C_4 := $(KEYBOARD_PATH_4)/$(KEYBOARD_FOLDER_4).c
77KEYBOARD_C_5 := $(KEYBOARD_PATH_5)/$(KEYBOARD_FOLDER_5).c
54 78
55# We can assume a ChibiOS target When MCU_FAMILY is defined, since it's not used for LUFA 79ifneq ("$(wildcard $(KEYBOARD_C_5))","")
80 KEYBOARD_SRC += $(KEYBOARD_C_5)
81endif
82ifneq ("$(wildcard $(KEYBOARD_C_4))","")
83 KEYBOARD_SRC += $(KEYBOARD_C_4)
84endif
85ifneq ("$(wildcard $(KEYBOARD_C_3))","")
86 KEYBOARD_SRC += $(KEYBOARD_C_3)
87endif
88ifneq ("$(wildcard $(KEYBOARD_C_2))","")
89 KEYBOARD_SRC += $(KEYBOARD_C_2)
90endif
91ifneq ("$(wildcard $(KEYBOARD_C_1))","")
92 KEYBOARD_SRC += $(KEYBOARD_C_1)
93endif
94
95OPT_DEFS += -DKEYBOARD_$(KEYBOARD_FILESAFE)
96
97# We can assume a ChibiOS target When MCU_FAMILY is defined , since it's not used for LUFA
56ifdef MCU_FAMILY 98ifdef MCU_FAMILY
57 PLATFORM=CHIBIOS 99 PLATFORM=CHIBIOS
58else 100else
@@ -63,44 +105,80 @@ ifeq ($(PLATFORM),CHIBIOS)
63 include $(TMK_PATH)/protocol/chibios.mk 105 include $(TMK_PATH)/protocol/chibios.mk
64 include $(TMK_PATH)/chibios.mk 106 include $(TMK_PATH)/chibios.mk
65 OPT_OS = chibios 107 OPT_OS = chibios
66 ifneq ("$(wildcard $(SUBPROJECT_PATH)/bootloader_defs.h)","") 108 ifneq ("$(wildcard $(KEYBOARD_PATH_5)/bootloader_defs.h)","")
67 OPT_DEFS += -include $(SUBPROJECT_PATH)/bootloader_defs.h 109 OPT_DEFS += -include $(KEYBOARD_PATH_5)/bootloader_defs.h
68 else ifneq ("$(wildcard $(SUBPROJECT_PATH)/boards/$(BOARD)/bootloader_defs.h)","") 110 else ifneq ("$(wildcard $(KEYBOARD_PATH_5)/boards/$(BOARD)/bootloader_defs.h)","")
69 OPT_DEFS += -include $(SUBPROJECT_PATH)/boards/$(BOARD)/bootloader_defs.h 111 OPT_DEFS += -include $(KEYBOARD_PATH_5)/boards/$(BOARD)/bootloader_defs.h
70 else ifneq ("$(wildcard $(KEYBOARD_PATH)/bootloader_defs.h)","") 112 else ifneq ("$(wildcard $(KEYBOARD_PATH_4)/bootloader_defs.h)","")
71 OPT_DEFS += -include $(KEYBOARD_PATH)/bootloader_defs.h 113 OPT_DEFS += -include $(KEYBOARD_PATH_4)/bootloader_defs.h
72 else ifneq ("$(wildcard $(KEYBOARD_PATH)/boards/$(BOARD)/bootloader_defs.h)","") 114 else ifneq ("$(wildcard $(KEYBOARD_PATH_4)/boards/$(BOARD)/bootloader_defs.h)","")
73 OPT_DEFS += -include $(KEYBOARD_PATH)/boards/$(BOARD)/bootloader_defs.h 115 OPT_DEFS += -include $(KEYBOARD_PATH_4)/boards/$(BOARD)/bootloader_defs.h
116 else ifneq ("$(wildcard $(KEYBOARD_PATH_3)/bootloader_defs.h)","")
117 OPT_DEFS += -include $(KEYBOARD_PATH_3)/bootloader_defs.h
118 else ifneq ("$(wildcard $(KEYBOARD_PATH_3)/boards/$(BOARD)/bootloader_defs.h)","")
119 OPT_DEFS += -include $(KEYBOARD_PATH_3)/boards/$(BOARD)/bootloader_defs.h
120 else ifneq ("$(wildcard $(KEYBOARD_PATH_2)/bootloader_defs.h)","")
121 OPT_DEFS += -include $(KEYBOARD_PATH_2)/bootloader_defs.h
122 else ifneq ("$(wildcard $(KEYBOARD_PATH_2)/boards/$(BOARD)/bootloader_defs.h)","")
123 OPT_DEFS += -include $(KEYBOARD_PATH_2)/boards/$(BOARD)/bootloader_defs.h
124 else ifneq ("$(wildcard $(KEYBOARD_PATH_1)/bootloader_defs.h)","")
125 OPT_DEFS += -include $(KEYBOARD_PATH_1)/bootloader_defs.h
126 else ifneq ("$(wildcard $(KEYBOARD_PATH_1)/boards/$(BOARD)/bootloader_defs.h)","")
127 OPT_DEFS += -include $(KEYBOARD_PATH_1)/boards/$(BOARD)/bootloader_defs.h
74 endif 128 endif
75endif 129endif
76 130
77CONFIG_H = $(KEYBOARD_PATH)/config.h 131CONFIG_H :=
78ifneq ($(SUBPROJECT),) 132ifneq ("$(wildcard $(KEYBOARD_PATH_5)/config.h)","")
79 ifneq ("$(wildcard $(SUBPROJECT_C))","") 133 CONFIG_H += $(KEYBOARD_PATH_5)/config.h
80 CONFIG_H = $(SUBPROJECT_PATH)/config.h 134endif
81 endif 135ifneq ("$(wildcard $(KEYBOARD_PATH_4)/config.h)","")
136 CONFIG_H += $(KEYBOARD_PATH_4)/config.h
137endif
138ifneq ("$(wildcard $(KEYBOARD_PATH_3)/config.h)","")
139 CONFIG_H += $(KEYBOARD_PATH_3)/config.h
140endif
141ifneq ("$(wildcard $(KEYBOARD_PATH_2)/config.h)","")
142 CONFIG_H += $(KEYBOARD_PATH_2)/config.h
143endif
144ifneq ("$(wildcard $(KEYBOARD_PATH_1)/config.h)","")
145 CONFIG_H += $(KEYBOARD_PATH_1)/config.h
82endif 146endif
83 147
84# Save the defines and includes here, so we don't include any keymap specific ones 148# Save the defines and includes here, so we don't include any keymap specific ones
85PROJECT_DEFS := $(OPT_DEFS) 149PROJECT_DEFS := $(OPT_DEFS)
86PROJECT_INC := $(VPATH) $(EXTRAINCDIRS) $(SUBPROJECT_PATH) $(KEYBOARD_PATH) 150PROJECT_INC := $(VPATH) $(EXTRAINCDIRS) $(KEYBOARD_PATHS)
87PROJECT_CONFIG := $(CONFIG_H) 151PROJECT_CONFIG := $(CONFIG_H)
88 152
89MAIN_KEYMAP_PATH := $(KEYBOARD_PATH)/keymaps/$(KEYMAP) 153MAIN_KEYMAP_PATH_1 := $(KEYBOARD_PATH_1)/keymaps/$(KEYMAP)
90MAIN_KEYMAP_C := $(MAIN_KEYMAP_PATH)/keymap.c 154MAIN_KEYMAP_PATH_2 := $(KEYBOARD_PATH_2)/keymaps/$(KEYMAP)
91SUBPROJ_KEYMAP_PATH := $(SUBPROJECT_PATH)/keymaps/$(KEYMAP) 155MAIN_KEYMAP_PATH_3 := $(KEYBOARD_PATH_3)/keymaps/$(KEYMAP)
92SUBPROJ_KEYMAP_C := $(SUBPROJ_KEYMAP_PATH)/keymap.c 156MAIN_KEYMAP_PATH_4 := $(KEYBOARD_PATH_4)/keymaps/$(KEYMAP)
93ifneq ("$(wildcard $(SUBPROJ_KEYMAP_C))","") 157MAIN_KEYMAP_PATH_5 := $(KEYBOARD_PATH_5)/keymaps/$(KEYMAP)
94 -include $(SUBPROJ_KEYMAP_PATH)/rules.mk 158
95 KEYMAP_C := $(SUBPROJ_KEYMAP_C) 159ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_5)/keymap.c)","")
96 KEYMAP_PATH := $(SUBPROJ_KEYMAP_PATH) 160 -include $(MAIN_KEYMAP_PATH_5)/rules.mk
97else ifneq ("$(wildcard $(MAIN_KEYMAP_C))","") 161 KEYMAP_C := $(MAIN_KEYMAP_PATH_5)/keymap.c
98 -include $(MAIN_KEYMAP_PATH)/rules.mk 162 KEYMAP_PATH := $(MAIN_KEYMAP_PATH_5)
99 KEYMAP_C := $(MAIN_KEYMAP_C) 163else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_4)/keymap.c)","")
100 KEYMAP_PATH := $(MAIN_KEYMAP_PATH) 164 -include $(MAIN_KEYMAP_PATH_4)/rules.mk
165 KEYMAP_C := $(MAIN_KEYMAP_PATH_4)/keymap.c
166 KEYMAP_PATH := $(MAIN_KEYMAP_PATH_4)
167else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_3)/keymap.c)","")
168 -include $(MAIN_KEYMAP_PATH_3)/rules.mk
169 KEYMAP_C := $(MAIN_KEYMAP_PATH_3)/keymap.c
170 KEYMAP_PATH := $(MAIN_KEYMAP_PATH_3)
171else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_2)/keymap.c)","")
172 -include $(MAIN_KEYMAP_PATH_2)/rules.mk
173 KEYMAP_C := $(MAIN_KEYMAP_PATH_2)/keymap.c
174 KEYMAP_PATH := $(MAIN_KEYMAP_PATH_2)
175else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_1)/keymap.c)","")
176 -include $(MAIN_KEYMAP_PATH_1)/rules.mk
177 KEYMAP_C := $(MAIN_KEYMAP_PATH_1)/keymap.c
178 KEYMAP_PATH := $(MAIN_KEYMAP_PATH_1)
101else ifneq ($(LAYOUTS),) 179else ifneq ($(LAYOUTS),)
102 include build_layout.mk 180 include build_layout.mk
103else 181else
104 $(error Could not find keymap) 182 $(error Could not find keymap)
105 # this state should never be reached 183 # this state should never be reached
106endif 184endif
@@ -110,29 +188,21 @@ endif
110# this an empty or blank macro! 188# this an empty or blank macro!
111KEYMAP_OUTPUT := $(BUILD_DIR)/obj_$(TARGET) 189KEYMAP_OUTPUT := $(BUILD_DIR)/obj_$(TARGET)
112 190
113
114ifneq ("$(wildcard $(KEYMAP_PATH)/config.h)","") 191ifneq ("$(wildcard $(KEYMAP_PATH)/config.h)","")
115 CONFIG_H = $(KEYMAP_PATH)/config.h 192 CONFIG_H += $(KEYMAP_PATH)/config.h
116endif 193endif
117 194
118# # project specific files 195# # project specific files
119SRC += $(KEYBOARD_C) \ 196SRC += $(KEYBOARD_SRC) \
120 $(KEYMAP_C) \ 197 $(KEYMAP_C) \
121 $(QUANTUM_SRC) 198 $(QUANTUM_SRC)
122 199
123ifneq ($(SUBPROJECT),)
124 SRC += $(SUBPROJECT_C)
125endif
126
127# Optimize size but this may cause error "relocation truncated to fit" 200# Optimize size but this may cause error "relocation truncated to fit"
128#EXTRALDFLAGS = -Wl,--relax 201#EXTRALDFLAGS = -Wl,--relax
129 202
130# Search Path 203# Search Path
131VPATH += $(KEYMAP_PATH) 204VPATH += $(KEYMAP_PATH)
132ifneq ($(SUBPROJECT),) 205VPATH += $(KEYBOARD_PATHS)
133 VPATH += $(SUBPROJECT_PATH)
134endif
135VPATH += $(KEYBOARD_PATH)
136VPATH += $(COMMON_VPATH) 206VPATH += $(COMMON_VPATH)
137 207
138include common_features.mk 208include common_features.mk
@@ -161,15 +231,15 @@ endif
161OUTPUTS := $(KEYMAP_OUTPUT) $(KEYBOARD_OUTPUT) 231OUTPUTS := $(KEYMAP_OUTPUT) $(KEYBOARD_OUTPUT)
162$(KEYMAP_OUTPUT)_SRC := $(SRC) 232$(KEYMAP_OUTPUT)_SRC := $(SRC)
163$(KEYMAP_OUTPUT)_DEFS := $(OPT_DEFS) $(GFXDEFS) \ 233$(KEYMAP_OUTPUT)_DEFS := $(OPT_DEFS) $(GFXDEFS) \
164-DQMK_KEYBOARD=\"$(KEYBOARD)\" -DQMK_KEYBOARD_H=\"$(KEYBOARD).h\" -DQMK_KEYBOARD_CONFIG_H=\"$(KEYBOARD_PATH)/config.h\" \ 234-DQMK_KEYBOARD=\"$(KEYBOARD)\" -DQMK_KEYBOARD_H=\"$(KEYBOARD_FOLDER_1).h\" -DQMK_KEYBOARD_CONFIG_H=\"$(KEYBOARD_PATH_1)/config.h\" \
165-DQMK_KEYMAP=\"$(KEYMAP)\" -DQMK_KEYMAP_H=\"$(KEYMAP).h\" -DQMK_KEYMAP_CONFIG_H=\"$(KEYMAP_PATH)/config.h\" \ 235-DQMK_KEYMAP=\"$(KEYMAP)\" -DQMK_KEYMAP_H=\"$(KEYMAP).h\" -DQMK_KEYMAP_CONFIG_H=\"$(KEYMAP_PATH)/config.h\" \
166-DQMK_SUBPROJECT=\"$(SUBPROJECT)\" -DQMK_SUBPROJECT_H=\"$(SUBPROJECT).h\" -DQMK_SUBPROJECT_CONFIG_H=\"$(SUBPROJECT_PATH)/config.h\" 236-DQMK_SUBPROJECT -DQMK_SUBPROJECT_H -DQMK_SUBPROJECT_CONFIG_H
167$(KEYMAP_OUTPUT)_INC := $(VPATH) $(EXTRAINCDIRS) 237$(KEYMAP_OUTPUT)_INC := $(VPATH) $(EXTRAINCDIRS)
168$(KEYMAP_OUTPUT)_CONFIG := $(CONFIG_H) 238$(KEYMAP_OUTPUT)_CONFIG := $(CONFIG_H)
169$(KEYBOARD_OUTPUT)_SRC := $(CHIBISRC) $(GFXSRC) 239$(KEYBOARD_OUTPUT)_SRC := $(CHIBISRC) $(GFXSRC)
170$(KEYBOARD_OUTPUT)_DEFS := $(PROJECT_DEFS) $(GFXDEFS) 240$(KEYBOARD_OUTPUT)_DEFS := $(PROJECT_DEFS) $(GFXDEFS)
171$(KEYBOARD_OUTPUT)_INC := $(PROJECT_INC) $(GFXINC) 241$(KEYBOARD_OUTPUT)_INC := $(PROJECT_INC) $(GFXINC)
172$(KEYBOARD_OUTPUT)_CONFIG := $(PROJECT_CONFIG) 242$(KEYBOARD_OUTPUT)_CONFIG := $(PROJECT_CONFIG)
173 243
174# Default target. 244# Default target.
175all: build sizeafter 245all: build sizeafter