diff options
| author | Nick Brassel <nick@tzarc.org> | 2021-08-29 08:20:25 +1000 |
|---|---|---|
| committer | Nick Brassel <nick@tzarc.org> | 2021-08-29 08:20:25 +1000 |
| commit | f061ca497464fe85284906fb163a33eaee7a91ef (patch) | |
| tree | 33ef1bfb529aed382e8526c607c4e18717f92571 /build_keyboard.mk | |
| parent | ff65185dec6f97be1eb49f17cea526a0d0bbf3d6 (diff) | |
| parent | 4bad375d7c09d949a9dcdd4feba147c9c7a67ec6 (diff) | |
| download | qmk_firmware-f061ca497464fe85284906fb163a33eaee7a91ef.tar.gz qmk_firmware-f061ca497464fe85284906fb163a33eaee7a91ef.zip | |
Breaking changes develop merge to master, 2021Q3 edition. (#14196)
Diffstat (limited to 'build_keyboard.mk')
| -rw-r--r-- | build_keyboard.mk | 56 |
1 files changed, 43 insertions, 13 deletions
diff --git a/build_keyboard.mk b/build_keyboard.mk index 91a6c23b7..37fa6852f 100644 --- a/build_keyboard.mk +++ b/build_keyboard.mk | |||
| @@ -23,6 +23,15 @@ KEYBOARD_OUTPUT := $(BUILD_DIR)/obj_$(KEYBOARD_FILESAFE) | |||
| 23 | # Force expansion | 23 | # Force expansion |
| 24 | TARGET := $(TARGET) | 24 | TARGET := $(TARGET) |
| 25 | 25 | ||
| 26 | ifneq ($(FORCE_LAYOUT),) | ||
| 27 | TARGET := $(TARGET)_$(FORCE_LAYOUT) | ||
| 28 | endif | ||
| 29 | |||
| 30 | # Object files and generated keymap directory | ||
| 31 | # To put object files in current directory, use a dot (.), do NOT make | ||
| 32 | # this an empty or blank macro! | ||
| 33 | KEYMAP_OUTPUT := $(BUILD_DIR)/obj_$(TARGET) | ||
| 34 | |||
| 26 | # For split boards we need to set a master half. | 35 | # For split boards we need to set a master half. |
| 27 | MASTER ?= left | 36 | MASTER ?= left |
| 28 | ifdef master | 37 | ifdef master |
| @@ -100,7 +109,7 @@ MAIN_KEYMAP_PATH_4 := $(KEYBOARD_PATH_4)/keymaps/$(KEYMAP) | |||
| 100 | MAIN_KEYMAP_PATH_5 := $(KEYBOARD_PATH_5)/keymaps/$(KEYMAP) | 109 | MAIN_KEYMAP_PATH_5 := $(KEYBOARD_PATH_5)/keymaps/$(KEYMAP) |
| 101 | 110 | ||
| 102 | # Pull in rules from info.json | 111 | # Pull in rules from info.json |
| 103 | INFO_RULES_MK = $(shell $(QMK_BIN) generate-rules-mk --quiet --escape --keyboard $(KEYBOARD) --output $(KEYBOARD_OUTPUT)/src/rules.mk) | 112 | INFO_RULES_MK = $(shell $(QMK_BIN) generate-rules-mk --quiet --escape --keyboard $(KEYBOARD) --output $(KEYBOARD_OUTPUT)/src/info_rules.mk) |
| 104 | include $(INFO_RULES_MK) | 113 | include $(INFO_RULES_MK) |
| 105 | 114 | ||
| 106 | # Check for keymap.json first, so we can regenerate keymap.c | 115 | # Check for keymap.json first, so we can regenerate keymap.c |
| @@ -137,16 +146,35 @@ ifeq ("$(wildcard $(KEYMAP_PATH))", "") | |||
| 137 | endif | 146 | endif |
| 138 | endif | 147 | endif |
| 139 | 148 | ||
| 149 | # Have we found a keymap.json? | ||
| 150 | ifneq ("$(wildcard $(KEYMAP_JSON))", "") | ||
| 151 | KEYMAP_C := $(KEYMAP_OUTPUT)/src/keymap.c | ||
| 152 | KEYMAP_H := $(KEYMAP_OUTPUT)/src/config.h | ||
| 153 | |||
| 154 | # Load the keymap-level rules.mk if exists | ||
| 155 | -include $(KEYMAP_PATH)/rules.mk | ||
| 156 | |||
| 157 | # Load any rules.mk content from keymap.json | ||
| 158 | INFO_RULES_MK = $(shell $(QMK_BIN) generate-rules-mk --quiet --escape --keyboard $(KEYBOARD) --keymap $(KEYMAP) --output $(KEYMAP_OUTPUT)/src/rules.mk) | ||
| 159 | include $(INFO_RULES_MK) | ||
| 160 | |||
| 161 | # Add rules to generate the keymap files - indentation here is important | ||
| 162 | $(KEYMAP_OUTPUT)/src/keymap.c: $(KEYMAP_JSON) | ||
| 163 | $(QMK_BIN) json2c --quiet --output $(KEYMAP_C) $(KEYMAP_JSON) | ||
| 164 | |||
| 165 | $(KEYMAP_OUTPUT)/src/config.h: $(KEYMAP_JSON) | ||
| 166 | $(QMK_BIN) generate-config-h --quiet --keyboard $(KEYBOARD) --keymap $(KEYMAP) --output $(KEYMAP_H) | ||
| 167 | |||
| 168 | generated-files: $(KEYMAP_OUTPUT)/src/config.h $(KEYMAP_OUTPUT)/src/keymap.c | ||
| 169 | |||
| 170 | endif | ||
| 171 | |||
| 140 | ifeq ($(strip $(CTPC)), yes) | 172 | ifeq ($(strip $(CTPC)), yes) |
| 141 | CONVERT_TO_PROTON_C=yes | 173 | CONVERT_TO_PROTON_C=yes |
| 142 | endif | 174 | endif |
| 143 | 175 | ||
| 144 | ifeq ($(strip $(CONVERT_TO_PROTON_C)), yes) | 176 | ifeq ($(strip $(CONVERT_TO_PROTON_C)), yes) |
| 145 | include platforms/chibios/QMK_PROTON_C/convert_to_proton_c.mk | 177 | include platforms/chibios/boards/QMK_PROTON_C/convert_to_proton_c.mk |
| 146 | endif | ||
| 147 | |||
| 148 | ifneq ($(FORCE_LAYOUT),) | ||
| 149 | TARGET := $(TARGET)_$(FORCE_LAYOUT) | ||
| 150 | endif | 178 | endif |
| 151 | 179 | ||
| 152 | include quantum/mcu_selection.mk | 180 | include quantum/mcu_selection.mk |
| @@ -232,6 +260,7 @@ ifdef MCU_FAMILY | |||
| 232 | PLATFORM=CHIBIOS | 260 | PLATFORM=CHIBIOS |
| 233 | PLATFORM_KEY=chibios | 261 | PLATFORM_KEY=chibios |
| 234 | FIRMWARE_FORMAT?=bin | 262 | FIRMWARE_FORMAT?=bin |
| 263 | OPT_DEFS += -DMCU_$(MCU_FAMILY) | ||
| 235 | else ifdef ARM_ATSAM | 264 | else ifdef ARM_ATSAM |
| 236 | PLATFORM=ARM_ATSAM | 265 | PLATFORM=ARM_ATSAM |
| 237 | PLATFORM_KEY=arm_atsam | 266 | PLATFORM_KEY=arm_atsam |
| @@ -327,19 +356,19 @@ endif | |||
| 327 | # Disable features that a keyboard doesn't support | 356 | # Disable features that a keyboard doesn't support |
| 328 | -include disable_features.mk | 357 | -include disable_features.mk |
| 329 | 358 | ||
| 330 | # Object files directory | ||
| 331 | # To put object files in current directory, use a dot (.), do NOT make | ||
| 332 | # this an empty or blank macro! | ||
| 333 | KEYMAP_OUTPUT := $(BUILD_DIR)/obj_$(TARGET) | ||
| 334 | |||
| 335 | ifneq ("$(wildcard $(KEYMAP_PATH)/config.h)","") | 359 | ifneq ("$(wildcard $(KEYMAP_PATH)/config.h)","") |
| 336 | CONFIG_H += $(KEYMAP_PATH)/config.h | 360 | CONFIG_H += $(KEYMAP_PATH)/config.h |
| 337 | endif | 361 | endif |
| 362 | ifneq ("$(KEYMAP_H)","") | ||
| 363 | CONFIG_H += $(KEYMAP_H) | ||
| 364 | endif | ||
| 338 | 365 | ||
| 339 | # project specific files | 366 | # project specific files |
| 340 | SRC += $(KEYBOARD_SRC) \ | 367 | SRC += \ |
| 368 | $(KEYBOARD_SRC) \ | ||
| 341 | $(KEYMAP_C) \ | 369 | $(KEYMAP_C) \ |
| 342 | $(QUANTUM_SRC) | 370 | $(QUANTUM_SRC) \ |
| 371 | $(QUANTUM_DIR)/main.c \ | ||
| 343 | 372 | ||
| 344 | # Optimize size but this may cause error "relocation truncated to fit" | 373 | # Optimize size but this may cause error "relocation truncated to fit" |
| 345 | #EXTRALDFLAGS = -Wl,--relax | 374 | #EXTRALDFLAGS = -Wl,--relax |
| @@ -374,6 +403,7 @@ ifneq ($(strip $(PROTOCOL)),) | |||
| 374 | else | 403 | else |
| 375 | include $(TMK_PATH)/protocol/$(PLATFORM_KEY).mk | 404 | include $(TMK_PATH)/protocol/$(PLATFORM_KEY).mk |
| 376 | endif | 405 | endif |
| 406 | -include $(TOP_DIR)/platforms/$(PLATFORM_KEY)/flash.mk | ||
| 377 | 407 | ||
| 378 | # TODO: remove this bodge? | 408 | # TODO: remove this bodge? |
| 379 | PROJECT_DEFS := $(OPT_DEFS) | 409 | PROJECT_DEFS := $(OPT_DEFS) |
