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 | |
| parent | 85659ae5e1b41af4889f154dcc47d4bc9c1f0a19 (diff) | |
| download | qmk_firmware-98b16b3294e4b04e6621daba8cff07fbd982f335.tar.gz qmk_firmware-98b16b3294e4b04e6621daba8cff07fbd982f335.zip | |
Comment and organize build_keyboard.mk a bit
| -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 |
