aboutsummaryrefslogtreecommitdiff
path: root/build_keyboard.mk
diff options
context:
space:
mode:
authorNick Brassel <nick@tzarc.org>2021-08-29 08:20:25 +1000
committerNick Brassel <nick@tzarc.org>2021-08-29 08:20:25 +1000
commitf061ca497464fe85284906fb163a33eaee7a91ef (patch)
tree33ef1bfb529aed382e8526c607c4e18717f92571 /build_keyboard.mk
parentff65185dec6f97be1eb49f17cea526a0d0bbf3d6 (diff)
parent4bad375d7c09d949a9dcdd4feba147c9c7a67ec6 (diff)
downloadqmk_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.mk56
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
24TARGET := $(TARGET) 24TARGET := $(TARGET)
25 25
26ifneq ($(FORCE_LAYOUT),)
27 TARGET := $(TARGET)_$(FORCE_LAYOUT)
28endif
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!
33KEYMAP_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.
27MASTER ?= left 36MASTER ?= left
28ifdef master 37ifdef master
@@ -100,7 +109,7 @@ MAIN_KEYMAP_PATH_4 := $(KEYBOARD_PATH_4)/keymaps/$(KEYMAP)
100MAIN_KEYMAP_PATH_5 := $(KEYBOARD_PATH_5)/keymaps/$(KEYMAP) 109MAIN_KEYMAP_PATH_5 := $(KEYBOARD_PATH_5)/keymaps/$(KEYMAP)
101 110
102# Pull in rules from info.json 111# Pull in rules from info.json
103INFO_RULES_MK = $(shell $(QMK_BIN) generate-rules-mk --quiet --escape --keyboard $(KEYBOARD) --output $(KEYBOARD_OUTPUT)/src/rules.mk) 112INFO_RULES_MK = $(shell $(QMK_BIN) generate-rules-mk --quiet --escape --keyboard $(KEYBOARD) --output $(KEYBOARD_OUTPUT)/src/info_rules.mk)
104include $(INFO_RULES_MK) 113include $(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
138endif 147endif
139 148
149# Have we found a keymap.json?
150ifneq ("$(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
168generated-files: $(KEYMAP_OUTPUT)/src/config.h $(KEYMAP_OUTPUT)/src/keymap.c
169
170endif
171
140ifeq ($(strip $(CTPC)), yes) 172ifeq ($(strip $(CTPC)), yes)
141 CONVERT_TO_PROTON_C=yes 173 CONVERT_TO_PROTON_C=yes
142endif 174endif
143 175
144ifeq ($(strip $(CONVERT_TO_PROTON_C)), yes) 176ifeq ($(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
146endif
147
148ifneq ($(FORCE_LAYOUT),)
149 TARGET := $(TARGET)_$(FORCE_LAYOUT)
150endif 178endif
151 179
152include quantum/mcu_selection.mk 180include 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)
235else ifdef ARM_ATSAM 264else 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!
333KEYMAP_OUTPUT := $(BUILD_DIR)/obj_$(TARGET)
334
335ifneq ("$(wildcard $(KEYMAP_PATH)/config.h)","") 359ifneq ("$(wildcard $(KEYMAP_PATH)/config.h)","")
336 CONFIG_H += $(KEYMAP_PATH)/config.h 360 CONFIG_H += $(KEYMAP_PATH)/config.h
337endif 361endif
362ifneq ("$(KEYMAP_H)","")
363 CONFIG_H += $(KEYMAP_H)
364endif
338 365
339# project specific files 366# project specific files
340SRC += $(KEYBOARD_SRC) \ 367SRC += \
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)),)
374else 403else
375 include $(TMK_PATH)/protocol/$(PLATFORM_KEY).mk 404 include $(TMK_PATH)/protocol/$(PLATFORM_KEY).mk
376endif 405endif
406-include $(TOP_DIR)/platforms/$(PLATFORM_KEY)/flash.mk
377 407
378# TODO: remove this bodge? 408# TODO: remove this bodge?
379PROJECT_DEFS := $(OPT_DEFS) 409PROJECT_DEFS := $(OPT_DEFS)