diff options
author | skullY <skullydazed@gmail.com> | 2018-08-11 11:16:21 -0700 |
---|---|---|
committer | Jack Humbert <jack.humb@gmail.com> | 2018-08-11 15:19:08 -0400 |
commit | 98b16b3294e4b04e6621daba8cff07fbd982f335 (patch) | |
tree | 90ad7427a7923e6efb2bf6320539b688017425c9 /build_keyboard.mk | |
parent | 85659ae5e1b41af4889f154dcc47d4bc9c1f0a19 (diff) | |
download | qmk_firmware-98b16b3294e4b04e6621daba8cff07fbd982f335.tar.gz qmk_firmware-98b16b3294e4b04e6621daba8cff07fbd982f335.zip |
Comment and organize build_keyboard.mk a bit
Diffstat (limited to 'build_keyboard.mk')
-rw-r--r-- | build_keyboard.mk | 81 |
1 files changed, 53 insertions, 28 deletions
diff --git a/build_keyboard.mk b/build_keyboard.mk index b25712385..9f6c42ea1 100644 --- a/build_keyboard.mk +++ b/build_keyboard.mk | |||
@@ -1,3 +1,9 @@ | |||
1 | # Determine what keyboard we are building and setup the build environment. | ||
2 | # | ||
3 | # We support folders up to 5 levels deep below `keyboards/`. This file is | ||
4 | # responsible for determining which folder is being used and doing the | ||
5 | # corresponding environment setup. | ||
6 | |||
1 | ifndef VERBOSE | 7 | ifndef VERBOSE |
2 | .SILENT: | 8 | .SILENT: |
3 | endif | 9 | endif |
@@ -6,26 +12,15 @@ endif | |||
6 | 12 | ||
7 | include common.mk | 13 | include common.mk |
8 | 14 | ||
9 | # 5/4/3/2/1 | 15 | # Set the filename for the final firmware binary |
10 | KEYBOARD_FOLDER_PATH_1 := $(KEYBOARD) | ||
11 | KEYBOARD_FOLDER_PATH_2 := $(patsubst %/,%,$(dir $(KEYBOARD_FOLDER_PATH_1))) | ||
12 | KEYBOARD_FOLDER_PATH_3 := $(patsubst %/,%,$(dir $(KEYBOARD_FOLDER_PATH_2))) | ||
13 | KEYBOARD_FOLDER_PATH_4 := $(patsubst %/,%,$(dir $(KEYBOARD_FOLDER_PATH_3))) | ||
14 | KEYBOARD_FOLDER_PATH_5 := $(patsubst %/,%,$(dir $(KEYBOARD_FOLDER_PATH_4))) | ||
15 | KEYBOARD_FOLDER_1 := $(notdir $(KEYBOARD_FOLDER_PATH_1)) | ||
16 | KEYBOARD_FOLDER_2 := $(notdir $(KEYBOARD_FOLDER_PATH_2)) | ||
17 | KEYBOARD_FOLDER_3 := $(notdir $(KEYBOARD_FOLDER_PATH_3)) | ||
18 | KEYBOARD_FOLDER_4 := $(notdir $(KEYBOARD_FOLDER_PATH_4)) | ||
19 | KEYBOARD_FOLDER_5 := $(notdir $(KEYBOARD_FOLDER_PATH_5)) | ||
20 | |||
21 | KEYBOARD_FILESAFE := $(subst /,_,$(KEYBOARD)) | 16 | KEYBOARD_FILESAFE := $(subst /,_,$(KEYBOARD)) |
22 | |||
23 | TARGET ?= $(KEYBOARD_FILESAFE)_$(KEYMAP) | 17 | TARGET ?= $(KEYBOARD_FILESAFE)_$(KEYMAP) |
24 | KEYBOARD_OUTPUT := $(BUILD_DIR)/obj_$(KEYBOARD_FILESAFE) | 18 | KEYBOARD_OUTPUT := $(BUILD_DIR)/obj_$(KEYBOARD_FILESAFE) |
25 | 19 | ||
26 | # Force expansion | 20 | # Force expansion |
27 | TARGET := $(TARGET) | 21 | TARGET := $(TARGET) |
28 | 22 | ||
23 | # For split boards we need to set a master half. | ||
29 | MASTER ?= left | 24 | MASTER ?= left |
30 | ifdef master | 25 | ifdef master |
31 | MASTER = $(master) | 26 | MASTER = $(master) |
@@ -39,35 +34,58 @@ $(error MASTER does not have a valid value(left/right)) | |||
39 | endif | 34 | endif |
40 | endif | 35 | endif |
41 | 36 | ||
37 | # Determine which subfolders exist. | ||
38 | KEYBOARD_FOLDER_PATH_1 := $(KEYBOARD) | ||
39 | KEYBOARD_FOLDER_PATH_2 := $(patsubst %/,%,$(dir $(KEYBOARD_FOLDER_PATH_1))) | ||
40 | KEYBOARD_FOLDER_PATH_3 := $(patsubst %/,%,$(dir $(KEYBOARD_FOLDER_PATH_2))) | ||
41 | KEYBOARD_FOLDER_PATH_4 := $(patsubst %/,%,$(dir $(KEYBOARD_FOLDER_PATH_3))) | ||
42 | KEYBOARD_FOLDER_PATH_5 := $(patsubst %/,%,$(dir $(KEYBOARD_FOLDER_PATH_4))) | ||
43 | KEYBOARD_FOLDER_1 := $(notdir $(KEYBOARD_FOLDER_PATH_1)) | ||
44 | KEYBOARD_FOLDER_2 := $(notdir $(KEYBOARD_FOLDER_PATH_2)) | ||
45 | KEYBOARD_FOLDER_3 := $(notdir $(KEYBOARD_FOLDER_PATH_3)) | ||
46 | KEYBOARD_FOLDER_4 := $(notdir $(KEYBOARD_FOLDER_PATH_4)) | ||
47 | KEYBOARD_FOLDER_5 := $(notdir $(KEYBOARD_FOLDER_PATH_5)) | ||
42 | KEYBOARD_PATHS := | 48 | KEYBOARD_PATHS := |
43 | |||
44 | KEYBOARD_PATH_1 := keyboards/$(KEYBOARD_FOLDER_PATH_1) | 49 | KEYBOARD_PATH_1 := keyboards/$(KEYBOARD_FOLDER_PATH_1) |
45 | KEYBOARD_PATH_2 := keyboards/$(KEYBOARD_FOLDER_PATH_2) | 50 | KEYBOARD_PATH_2 := keyboards/$(KEYBOARD_FOLDER_PATH_2) |
46 | KEYBOARD_PATH_3 := keyboards/$(KEYBOARD_FOLDER_PATH_3) | 51 | KEYBOARD_PATH_3 := keyboards/$(KEYBOARD_FOLDER_PATH_3) |
47 | KEYBOARD_PATH_4 := keyboards/$(KEYBOARD_FOLDER_PATH_4) | 52 | KEYBOARD_PATH_4 := keyboards/$(KEYBOARD_FOLDER_PATH_4) |
48 | KEYBOARD_PATH_5 := keyboards/$(KEYBOARD_FOLDER_PATH_5) | 53 | KEYBOARD_PATH_5 := keyboards/$(KEYBOARD_FOLDER_PATH_5) |
49 | 54 | ||
50 | ifneq ("$(wildcard $(KEYBOARD_PATH_5)/rules.mk)","") | 55 | ifneq ("$(wildcard $(KEYBOARD_PATH_5)/)","") |
51 | KEYBOARD_PATHS += $(KEYBOARD_PATH_5) | 56 | KEYBOARD_PATHS += $(KEYBOARD_PATH_5) |
57 | endif | ||
58 | ifneq ("$(wildcard $(KEYBOARD_PATH_4)/)","") | ||
59 | KEYBOARD_PATHS += $(KEYBOARD_PATH_4) | ||
60 | endif | ||
61 | ifneq ("$(wildcard $(KEYBOARD_PATH_3)/)","") | ||
62 | KEYBOARD_PATHS += $(KEYBOARD_PATH_3) | ||
63 | endif | ||
64 | ifneq ("$(wildcard $(KEYBOARD_PATH_2)/)","") | ||
65 | KEYBOARD_PATHS += $(KEYBOARD_PATH_2) | ||
66 | endif | ||
67 | ifneq ("$(wildcard $(KEYBOARD_PATH_1)/)","") | ||
68 | KEYBOARD_PATHS += $(KEYBOARD_PATH_1) | ||
69 | endif | ||
70 | |||
71 | # Pull in rules.mk files from all our subfolders | ||
72 | ifneq ("$(wildcard $(KEYBOARD_PATH_5)/rules.mk)","") | ||
52 | include $(KEYBOARD_PATH_5)/rules.mk | 73 | include $(KEYBOARD_PATH_5)/rules.mk |
53 | endif | 74 | endif |
54 | ifneq ("$(wildcard $(KEYBOARD_PATH_4)/rules.mk)","") | 75 | ifneq ("$(wildcard $(KEYBOARD_PATH_4)/rules.mk)","") |
55 | KEYBOARD_PATHS += $(KEYBOARD_PATH_4) | ||
56 | include $(KEYBOARD_PATH_4)/rules.mk | 76 | include $(KEYBOARD_PATH_4)/rules.mk |
57 | endif | 77 | endif |
58 | ifneq ("$(wildcard $(KEYBOARD_PATH_3)/rules.mk)","") | 78 | ifneq ("$(wildcard $(KEYBOARD_PATH_3)/rules.mk)","") |
59 | KEYBOARD_PATHS += $(KEYBOARD_PATH_3) | ||
60 | include $(KEYBOARD_PATH_3)/rules.mk | 79 | include $(KEYBOARD_PATH_3)/rules.mk |
61 | endif | 80 | endif |
62 | ifneq ("$(wildcard $(KEYBOARD_PATH_2)/rules.mk)","") | 81 | ifneq ("$(wildcard $(KEYBOARD_PATH_2)/rules.mk)","") |
63 | KEYBOARD_PATHS += $(KEYBOARD_PATH_2) | ||
64 | include $(KEYBOARD_PATH_2)/rules.mk | 82 | include $(KEYBOARD_PATH_2)/rules.mk |
65 | endif | 83 | endif |
66 | ifneq ("$(wildcard $(KEYBOARD_PATH_1)/rules.mk)","") | 84 | ifneq ("$(wildcard $(KEYBOARD_PATH_1)/rules.mk)","") |
67 | KEYBOARD_PATHS += $(KEYBOARD_PATH_1) | ||
68 | include $(KEYBOARD_PATH_1)/rules.mk | 85 | include $(KEYBOARD_PATH_1)/rules.mk |
69 | endif | 86 | endif |
70 | 87 | ||
88 | # Find all the C source files to be compiled in subfolders. | ||
71 | KEYBOARD_SRC := | 89 | KEYBOARD_SRC := |
72 | 90 | ||
73 | KEYBOARD_C_1 := $(KEYBOARD_PATH_1)/$(KEYBOARD_FOLDER_1).c | 91 | KEYBOARD_C_1 := $(KEYBOARD_PATH_1)/$(KEYBOARD_FOLDER_1).c |
@@ -95,6 +113,15 @@ endif | |||
95 | OPT_DEFS += -DKEYBOARD_$(KEYBOARD_FILESAFE) | 113 | OPT_DEFS += -DKEYBOARD_$(KEYBOARD_FILESAFE) |
96 | 114 | ||
97 | 115 | ||
116 | # Setup the define for QMK_KEYBOARD_H. This is used inside of keymaps so | ||
117 | # that the same keymap may be used on multiple keyboards. | ||
118 | # | ||
119 | # We grab the most top-level include file that we can. That file should | ||
120 | # use #ifdef statements to include all the neccesary subfolder includes, | ||
121 | # as described here: | ||
122 | # | ||
123 | # https://docs.qmk.fm/#/feature_layouts?id=tips-for-making-layouts-keyboard-agnostic | ||
124 | # | ||
98 | ifneq ("$(wildcard $(KEYBOARD_PATH_1)/$(KEYBOARD_FOLDER_1).h)","") | 125 | ifneq ("$(wildcard $(KEYBOARD_PATH_1)/$(KEYBOARD_FOLDER_1).h)","") |
99 | QMK_KEYBOARD_H = $(KEYBOARD_FOLDER_1).h | 126 | QMK_KEYBOARD_H = $(KEYBOARD_FOLDER_1).h |
100 | endif | 127 | endif |
@@ -111,13 +138,15 @@ ifneq ("$(wildcard $(KEYBOARD_PATH_5)/$(KEYBOARD_FOLDER_5).h)","") | |||
111 | QMK_KEYBOARD_H = $(KEYBOARD_FOLDER_5).h | 138 | QMK_KEYBOARD_H = $(KEYBOARD_FOLDER_5).h |
112 | endif | 139 | endif |
113 | 140 | ||
114 | # We can assume a ChibiOS target When MCU_FAMILY is defined , since it's not used for LUFA | 141 | # Determine and set parameters based on the keyboard's processor family. |
142 | # We can assume a ChibiOS target When MCU_FAMILY is defined since it's | ||
143 | # not used for LUFA | ||
115 | ifdef MCU_FAMILY | 144 | ifdef MCU_FAMILY |
116 | FIRMWARE_FORMAT=bin | 145 | FIRMWARE_FORMAT?=bin |
117 | PLATFORM=CHIBIOS | 146 | PLATFORM=CHIBIOS |
118 | else | 147 | else |
119 | PLATFORM=AVR | 148 | PLATFORM=AVR |
120 | FIRMWARE_FORMAT=hex | 149 | FIRMWARE_FORMAT?=hex |
121 | endif | 150 | endif |
122 | 151 | ||
123 | ifeq ($(PLATFORM),CHIBIOS) | 152 | ifeq ($(PLATFORM),CHIBIOS) |
@@ -148,6 +177,7 @@ ifeq ($(PLATFORM),CHIBIOS) | |||
148 | endif | 177 | endif |
149 | endif | 178 | endif |
150 | 179 | ||
180 | # Find all of the config.h files and add them to our CONFIG_H define. | ||
151 | CONFIG_H := | 181 | CONFIG_H := |
152 | ifneq ("$(wildcard $(KEYBOARD_PATH_5)/config.h)","") | 182 | ifneq ("$(wildcard $(KEYBOARD_PATH_5)/config.h)","") |
153 | CONFIG_H += $(KEYBOARD_PATH_5)/config.h | 183 | CONFIG_H += $(KEYBOARD_PATH_5)/config.h |
@@ -203,7 +233,7 @@ else | |||
203 | # this state should never be reached | 233 | # this state should never be reached |
204 | endif | 234 | endif |
205 | 235 | ||
206 | # User space stuff | 236 | # Userspace setup and definitions |
207 | ifeq ("$(USER_NAME)","") | 237 | ifeq ("$(USER_NAME)","") |
208 | USER_NAME := $(KEYMAP) | 238 | USER_NAME := $(KEYMAP) |
209 | endif | 239 | endif |
@@ -283,11 +313,6 @@ $(KEYBOARD_OUTPUT)_CONFIG := $(PROJECT_CONFIG) | |||
283 | 313 | ||
284 | # Default target. | 314 | # Default target. |
285 | all: build check-size | 315 | all: build check-size |
286 | |||
287 | # Change the build target to build a HEX file or a library. | ||
288 | build: elf cpfirmware | 316 | build: elf cpfirmware |
289 | #build: elf hex eep lss sym | ||
290 | #build: lib | ||
291 | |||
292 | 317 | ||
293 | include $(TMK_PATH)/rules.mk | 318 | include $(TMK_PATH)/rules.mk |