before_script:
- avr-gcc --version
script:
-- make test AUTOGEN=false
+- make test:all AUTOGEN=false
- bash util/travis_build.sh
addons:
apt:
QMK_VERSION := $(shell git describe --abbrev=0 --tags 2>/dev/null)
ifneq ($(QMK_VERSION),)
-$(info QMK Firmware v$(QMK_VERSION))
+$(info QMK Firmware $(QMK_VERSION))
endif
ON_ERROR := error_occurred=1
# It's really a very simple if else chain, if you squint enough,
# but the makefile syntax makes it very verbose.
# If we are in a subfolder of keyboards
-ifeq ($(CURRENT_PATH_ELEMENT),keyboards)
- $(eval $(call NEXT_PATH_ELEMENT))
- KEYBOARD := $(CURRENT_PATH_ELEMENT)
- $(eval $(call NEXT_PATH_ELEMENT))
- # If we are in a subfolder of keymaps, or in other words in a keymap
- # folder
- ifeq ($(CURRENT_PATH_ELEMENT),keymaps)
- $(eval $(call NEXT_PATH_ELEMENT))
- KEYMAP := $(CURRENT_PATH_ELEMENT)
- # else if we are not in the keyboard folder itself
- else ifneq ($(CURRENT_PATH_ELEMENT),)
- # the we can assume it's a subproject, as no other folders
- # should have make files in them
- SUBPROJECT := $(CURRENT_PATH_ELEMENT)
- $(eval $(call NEXT_PATH_ELEMENT))
- # if we are inside a keymap folder of a subproject
- ifeq ($(CURRENT_PATH_ELEMENT),keymaps)
- $(eval $(call NEXT_PATH_ELEMENT))
- KEYMAP := $(CURRENT_PATH_ELEMENT)
- endif
- endif
-endif
+#
+# *** No longer needed **
+#
+# ifeq ($(CURRENT_PATH_ELEMENT),keyboards)
+# $(eval $(call NEXT_PATH_ELEMENT))
+# KEYBOARD := $(CURRENT_PATH_ELEMENT)
+# $(eval $(call NEXT_PATH_ELEMENT))
+# # If we are in a subfolder of keymaps, or in other words in a keymap
+# # folder
+# ifeq ($(CURRENT_PATH_ELEMENT),keymaps)
+# $(eval $(call NEXT_PATH_ELEMENT))
+# KEYMAP := $(CURRENT_PATH_ELEMENT)
+# # else if we are not in the keyboard folder itself
+# else ifneq ($(CURRENT_PATH_ELEMENT),)
+# # the we can assume it's a subproject, as no other folders
+# # should have make files in them
+# SUBPROJECT := $(CURRENT_PATH_ELEMENT)
+# $(eval $(call NEXT_PATH_ELEMENT))
+# # if we are inside a keymap folder of a subproject
+# ifeq ($(CURRENT_PATH_ELEMENT),keymaps)
+# $(eval $(call NEXT_PATH_ELEMENT))
+# KEYMAP := $(CURRENT_PATH_ELEMENT)
+# endif
+# endif
+# endif
+
+define GET_KEYBOARDS
+ All_RULES_MK := $$(patsubst $(ROOT_DIR)/keyboards/%/rules.mk,%,$$(wildcard $(ROOT_DIR)/keyboards/*/rules.mk))
+ All_RULES_MK += $$(patsubst $(ROOT_DIR)/keyboards/%/rules.mk,%,$$(wildcard $(ROOT_DIR)/keyboards/*/*/rules.mk))
+ All_RULES_MK += $$(patsubst $(ROOT_DIR)/keyboards/%/rules.mk,%,$$(wildcard $(ROOT_DIR)/keyboards/*/*/*/rules.mk))
+ All_RULES_MK += $$(patsubst $(ROOT_DIR)/keyboards/%/rules.mk,%,$$(wildcard $(ROOT_DIR)/keyboards/*/*/*/*/rules.mk))
+
+ KEYMAPS_MK := $$(patsubst $(ROOT_DIR)/keyboards/%/rules.mk,%,$$(wildcard $(ROOT_DIR)/keyboards/*/keymaps/*/rules.mk))
+ KEYMAPS_MK += $$(patsubst $(ROOT_DIR)/keyboards/%/rules.mk,%,$$(wildcard $(ROOT_DIR)/keyboards/*/*/keymaps/*/rules.mk))
+ KEYMAPS_MK += $$(patsubst $(ROOT_DIR)/keyboards/%/rules.mk,%,$$(wildcard $(ROOT_DIR)/keyboards/*/*/*/keymaps/*/rules.mk))
+ KEYMAPS_MK += $$(patsubst $(ROOT_DIR)/keyboards/%/rules.mk,%,$$(wildcard $(ROOT_DIR)/keyboards/*/*/*/*/keymaps/*/rules.mk))
+
+ KEYBOARDS := $$(sort $$(filter-out $$(KEYMAPS_MK), $$(All_RULES_MK)))
+endef
+
+$(eval $(call GET_KEYBOARDS))
# Only consider folders with makefiles, to prevent errors in case there are extra folders
-KEYBOARDS := $(notdir $(patsubst %/rules.mk,%,$(wildcard $(ROOT_DIR)/keyboards/*/rules.mk)))
+#KEYBOARDS += $(patsubst $(ROOD_DIR)/keyboards/%/rules.mk,%,$(wildcard $(ROOT_DIR)/keyboards/*/*/rules.mk))
+
+list-keyboards:
+ echo $(KEYBOARDS)
+ exit 0
#Compatibility with the old make variables, anything you specify directly on the command line
# always overrides the detected folders
ifdef keyboard
KEYBOARD := $(keyboard)
endif
-ifdef sub
- SUBPROJECT := $(sub)
-endif
-ifdef subproject
- SUBPROJECT := $(subproject)
-endif
ifdef keymap
KEYMAP := $(keymap)
endif
# Uncomment these for debugging
-#$(info Keyboard: $(KEYBOARD))
-#$(info Keymap: $(KEYMAP))
-#$(info Subproject: $(SUBPROJECT))
-#$(info Keyboards: $(KEYBOARDS))
+# $(info Keyboard: $(KEYBOARD))
+# $(info Keymap: $(KEYMAP))
+# $(info Subproject: $(SUBPROJECT))
+# $(info Keyboards: $(KEYBOARDS))
# Set the default goal depending on where we are running make from
# this handles the case where you run make without any arguments
-.DEFAULT_GOAL := all
+.DEFAULT_GOAL := all:all
ifneq ($(KEYMAP),)
- ifeq ($(SUBPROJECT),)
- # Inside a keymap folder, just build the keymap, with the
- # default subproject
- .DEFAULT_GOAL := $(KEYBOARD)-$(KEYMAP)
- else
- # Inside a subproject keyamp folder, build the keymap
- # for that subproject
- .DEFAULT_GOAL := $(KEYBOARD)-$(SUBPROJECT)-$(KEYMAP)
- endif
-else ifneq ($(SUBPROJECT),)
- # Inside a subproject folder, build all keymaps for that subproject
- .DEFAULT_GOAL := $(KEYBOARD)-$(SUBPROJECT)-allkm
+ .DEFAULT_GOAL := $(KEYBOARD):$(KEYMAP)
else ifneq ($(KEYBOARD),)
# Inside a keyboard folder, build all keymaps for all subprojects
# Note that this is different from the old behaviour, which would
# build only the default keymap of the default keyboard
- .DEFAULT_GOAL := $(KEYBOARD)-allsp-allkm
+ .DEFAULT_GOAL := $(KEYBOARD):all
endif
# Compare the start of the RULE variable with the first argument($1)
-# If the rules equals $1 or starts with $1-, RULE_FOUND is set to true
+# If the rules equals $1 or starts with $1:, RULE_FOUND is set to true
# and $1 is removed from the RULE variable
# Otherwise the RULE_FOUND variable is set to false, and RULE left as it was
# The function is a bit tricky, since there's no built in $(startswith) function
RULE:=
RULE_FOUND := true
else
- STARTDASH_REMOVED=$$(subst START$1-,,START$$(RULE))
- ifneq ($$(STARTDASH_REMOVED),START$$(RULE))
+ STARTCOLON_REMOVED=$$(subst START$1:,,START$$(RULE))
+ ifneq ($$(STARTCOLON_REMOVED),START$$(RULE))
RULE_FOUND := true
- RULE := $$(STARTDASH_REMOVED)
+ RULE := $$(STARTCOLON_REMOVED)
else
RULE_FOUND := false
endif
endef
# The entry point for rule parsing
-# parses a rule in the format <keyboard>-<subproject>-<keymap>-<target>
+# parses a rule in the format <keyboard>:<keymap>:<target>
# but this particular function only deals with the first <keyboard> part
define PARSE_RULE
RULE := $1
COMMANDS :=
- # If the rule starts with allkb, then continue the parsing from
+ # If the rule starts with all, then continue the parsing from
# PARSE_ALL_KEYBOARDS
- ifeq ($$(call COMPARE_AND_REMOVE_FROM_RULE,allkb),true)
+ ifeq ($$(call COMPARE_AND_REMOVE_FROM_RULE,all),true)
$$(eval $$(call PARSE_ALL_KEYBOARDS))
else ifeq ($$(call COMPARE_AND_REMOVE_FROM_RULE,test),true)
$$(eval $$(call PARSE_TEST))
$$(eval $$(call PARSE_KEYBOARD,$$(KEYBOARD)))
else
$$(info make: *** No rule to make target '$1'. Stop.)
- # Notice the tab instead of spaces below!
- exit 1
+ $$(info |)
+ $$(info | QMK's make format recently changed to use folder locations and colons:)
+ $$(info | make project_folder:keymap[:target])
+ $$(info | Examples:)
+ $$(info | make planck/rev4:default:dfu)
+ $$(info | make planck:default)
+ $$(info |)
endif
endef
# $1 = Keyboard
-# Parses a rule in the format <subproject>-<keymap>-<target>
+# Parses a rule in the format <keymap>:<target>
# the keyboard is already known when entering this function
define PARSE_KEYBOARD
+ # If we want to compile the default subproject, then we need to
+ # include the correct makefile to determine the actual name of it
CURRENT_KB := $1
- # A subproject is any keyboard subfolder with a makefile
- SUBPROJECTS := $$(notdir $$(patsubst %/rules.mk,%,$$(wildcard $(ROOT_DIR)/keyboards/$$(CURRENT_KB)/*/rules.mk)))
- # if the rule starts with allsp, then continue with looping over all subprojects
- ifeq ($$(call COMPARE_AND_REMOVE_FROM_RULE,allsp),true)
- $$(eval $$(call PARSE_ALL_SUBPROJECTS))
- # A special case for matching the defaultsp (default subproject)
- else ifeq ($$(call COMPARE_AND_REMOVE_FROM_RULE,defaultsp),true)
- $$(eval $$(call PARSE_SUBPROJECT,defaultsp))
- # If the rule starts with the name of a known subproject
- else ifeq ($$(call TRY_TO_MATCH_RULE_FROM_LIST,$$(SUBPROJECTS)),true)
- $$(eval $$(call PARSE_SUBPROJECT,$$(MATCHED_ITEM)))
- # Try to use the SUBPROJECT variable, which is either determined by the
- # directory which invoked make, or passed as an argument to make
- else ifneq ($$(SUBPROJECT),)
- $$(eval $$(call PARSE_SUBPROJECT,$$(SUBPROJECT)))
- # If there's no matching subproject, we assume it's the default
- # This will allow you to leave the subproject part of the target out
+
+ # KEYBOARD_FOLDERS := $$(subst /, , $(CURRENT_KB))
+
+ DEFAULT_FOLDER := $$(CURRENT_KB)
+
+ # We assume that every rules.mk will contain the full default value
+ $$(eval include $(ROOT_DIR)/keyboards/$$(CURRENT_KB)/rules.mk)
+ ifneq ($$(DEFAULT_FOLDER),$$(CURRENT_KB))
+ $$(eval include $(ROOT_DIR)/keyboards/$$(DEFAULT_FOLDER)/rules.mk)
+ endif
+ CURRENT_KB := $$(DEFAULT_FOLDER)
+
+ # 5/4/3/2/1
+ KEYBOARD_FOLDER_PATH_1 := $$(CURRENT_KB)
+ KEYBOARD_FOLDER_PATH_2 := $$(patsubst %/,%,$$(dir $$(KEYBOARD_FOLDER_PATH_1)))
+ KEYBOARD_FOLDER_PATH_3 := $$(patsubst %/,%,$$(dir $$(KEYBOARD_FOLDER_PATH_2)))
+ KEYBOARD_FOLDER_PATH_4 := $$(patsubst %/,%,$$(dir $$(KEYBOARD_FOLDER_PATH_3)))
+ KEYBOARD_FOLDER_PATH_5 := $$(patsubst %/,%,$$(dir $$(KEYBOARD_FOLDER_PATH_4)))
+ KEYBOARD_FOLDER_1 := $$(notdir $$(KEYBOARD_FOLDER_PATH_1))
+ KEYBOARD_FOLDER_2 := $$(notdir $$(KEYBOARD_FOLDER_PATH_2))
+ KEYBOARD_FOLDER_3 := $$(notdir $$(KEYBOARD_FOLDER_PATH_3))
+ KEYBOARD_FOLDER_4 := $$(notdir $$(KEYBOARD_FOLDER_PATH_4))
+ KEYBOARD_FOLDER_5 := $$(notdir $$(KEYBOARD_FOLDER_PATH_5))
+
+ KEYMAPS :=
+ # get a list of all keymaps
+ KEYMAPS += $$(notdir $$(patsubst %/.,%,$$(wildcard $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_PATH_1)/keymaps/*/.)))
+ KEYMAPS += $$(notdir $$(patsubst %/.,%,$$(wildcard $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_PATH_2)/keymaps/*/.)))
+ KEYMAPS += $$(notdir $$(patsubst %/.,%,$$(wildcard $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_PATH_3)/keymaps/*/.)))
+ KEYMAPS += $$(notdir $$(patsubst %/.,%,$$(wildcard $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_PATH_4)/keymaps/*/.)))
+ KEYMAPS += $$(notdir $$(patsubst %/.,%,$$(wildcard $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_PATH_5)/keymaps/*/.)))
+ KEYMAPS := $$(sort $$(filter-out $$(KEYBOARD_FOLDER_1) $$(KEYBOARD_FOLDER_2) \
+ $$(KEYBOARD_FOLDER_3) $$(KEYBOARD_FOLDER_4) $$(KEYBOARD_FOLDER_5), $$(KEYMAPS)))
+
+ KEYBOARD_LAYOUTS :=
+ ifneq ("$$(wildcard $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_5)/rules.mk)","")
+ LAYOUTS :=
+ $$(eval include $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_5)/rules.mk)
+ KEYBOARD_LAYOUTS := $$(sort $$(LAYOUTS) $$(KEYBOARD_LAYOUTS))
+ endif
+ ifneq ("$$(wildcard $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_4)/rules.mk)","")
+ LAYOUTS :=
+ $$(eval include $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_4)/rules.mk)
+ KEYBOARD_LAYOUTS := $$(sort $$(LAYOUTS) $$(KEYBOARD_LAYOUTS))
+ endif
+ ifneq ("$$(wildcard $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_3)/rules.mk)","")
+ LAYOUTS :=
+ $$(eval include $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_3)/rules.mk)
+ KEYBOARD_LAYOUTS := $$(sort $$(LAYOUTS) $$(KEYBOARD_LAYOUTS))
+ endif
+ ifneq ("$$(wildcard $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_2)/rules.mk)","")
+ LAYOUTS :=
+ $$(eval include $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_2)/rules.mk)
+ KEYBOARD_LAYOUTS := $$(sort $$(LAYOUTS) $$(KEYBOARD_LAYOUTS))
+ endif
+ ifneq ("$$(wildcard $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_1)/rules.mk)","")
+ LAYOUTS :=
+ $$(eval include $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_1)/rules.mk)
+ KEYBOARD_LAYOUTS := $$(sort $$(LAYOUTS) $$(KEYBOARD_LAYOUTS))
+ endif
+
+ LAYOUT_KEYMAPS :=
+ $$(foreach LAYOUT,$$(KEYBOARD_LAYOUTS),$$(eval LAYOUT_KEYMAPS += $$(notdir $$(patsubst %/.,%,$$(wildcard $(ROOT_DIR)/layouts/*/$$(LAYOUT)/*/.)))))
+
+ KEYMAPS := $$(sort $$(KEYMAPS) $$(LAYOUT_KEYMAPS))
+
+ # if the rule after removing the start of it is empty (we haven't specified a kemap or target)
+ # compile all the keymaps
+ ifeq ($$(RULE),)
+ $$(eval $$(call PARSE_ALL_KEYMAPS))
+ # The same if all was specified
+ else ifeq ($$(call COMPARE_AND_REMOVE_FROM_RULE,all),true)
+ $$(eval $$(call PARSE_ALL_KEYMAPS))
+ # Try to match the specified keyamp with the list of known keymaps
+ else ifeq ($$(call TRY_TO_MATCH_RULE_FROM_LIST,$$(KEYMAPS)),true)
+ $$(eval $$(call PARSE_KEYMAP,$$(MATCHED_ITEM)))
+ # Otherwise try to match the keymap from the current folder, or arguments to the make command
+ else ifneq ($$(KEYMAP),)
+ $$(eval $$(call PARSE_KEYMAP,$$(KEYMAP)))
+ # Otherwise, make all keymaps, again this is consistent with how it works without
+ # any arguments
else
- $$(eval $$(call PARSE_SUBPROJECT,))
+ $$(eval $$(call PARSE_ALL_KEYMAPS))
endif
endef
# $1 Subproject
# When entering this, the keyboard and subproject are known, so now we need
# to determine which keymaps are going to get compiled
-define PARSE_SUBPROJECT
- # If we want to compile the default subproject, then we need to
- # include the correct makefile to determine the actual name of it
- CURRENT_SP := $1
- ifeq ($$(CURRENT_SP),)
- CURRENT_SP := defaultsp
- endif
- ifeq ($$(CURRENT_SP),defaultsp)
- SUBPROJECT_DEFAULT=
- ifneq ("$(wildcard $(ROOT_DIR)/keyboards/$$(CURRENT_KB)/subproject.mk)","")
- $$(eval include $(ROOT_DIR)/keyboards/$$(CURRENT_KB)/subproject.mk)
- endif
- CURRENT_SP := $$(SUBPROJECT_DEFAULT)
- endif
- # If current subproject is empty (the default was not defined), and we have a list of subproject
- # then make all of them
- ifeq ($$(CURRENT_SP),)
- ifneq ($$(SUBPROJECTS),)
- CURRENT_SP := allsp
- endif
- endif
- # The special allsp is handled later
- ifneq ($$(CURRENT_SP),allsp)
- # get a list of all keymaps
- KEYMAPS := $$(notdir $$(patsubst %/.,%,$$(wildcard $(ROOT_DIR)/keyboards/$$(CURRENT_KB)/keymaps/*/.)))
- LAYOUTS :=
- $$(eval -include $(ROOT_DIR)/keyboards/$$(CURRENT_KB)/rules.mk)
- KEYBOARD_LAYOUTS := $$(LAYOUTS)
- ifneq ($$(CURRENT_SP),)
- # if the subproject is defined, then also look for keymaps inside the subproject folder
- SP_KEYMAPS := $$(notdir $$(patsubst %/.,%,$$(wildcard $(ROOT_DIR)/keyboards/$$(CURRENT_KB)/$$(CURRENT_SP)/keymaps/*/.)))
- KEYMAPS := $$(sort $$(KEYMAPS) $$(SP_KEYMAPS))
- # $$(eval -include $(ROOT_DIR)/keyboards/$$(CURRENT_KB)/$$(CURRENT_SP)/rules.mk)
- # KEYBOARD_LAYOUTS := $$(sort $$(KEYBOARD_LAYOUTS) $$(LAYOUTS))
- endif
+# define PARSE_SUBPROJECT
- LAYOUT_KEYMAPS :=
- $$(foreach LAYOUT,$$(KEYBOARD_LAYOUTS),$$(eval LAYOUT_KEYMAPS += $$(notdir $$(patsubst %/.,%,$$(wildcard $(ROOT_DIR)/layouts/*/$$(LAYOUT)/*/.)))))
-
- KEYMAPS := $$(sort $$(KEYMAPS) $$(LAYOUT_KEYMAPS))
- # if the rule after removing the start of it is empty (we haven't specified a kemap or target)
- # compile all the keymaps
- ifeq ($$(RULE),)
- $$(eval $$(call PARSE_ALL_KEYMAPS))
- # The same if allkm was specified
- else ifeq ($$(call COMPARE_AND_REMOVE_FROM_RULE,allkm),true)
- $$(eval $$(call PARSE_ALL_KEYMAPS))
- # Try to match the specified keyamp with the list of known keymaps
- else ifeq ($$(call TRY_TO_MATCH_RULE_FROM_LIST,$$(KEYMAPS)),true)
- $$(eval $$(call PARSE_KEYMAP,$$(MATCHED_ITEM)))
- # Otherwise try to match the keymap from the current folder, or arguments to the make command
- else ifneq ($$(KEYMAP),)
- $$(eval $$(call PARSE_KEYMAP,$$(KEYMAP)))
- # No matching keymap found, so we assume that the rest of the rule is the target
- # If we haven't been able to parse out a subproject, then make all of them
- # This is consistent with running make without any arguments from the keyboard
- # folder
- else ifeq ($1,)
- $$(eval $$(call PARSE_ALL_SUBPROJECTS))
- # Otherwise, make all keymaps, again this is consistent with how it works without
- # any arguments
- else
- $$(eval $$(call PARSE_ALL_KEYMAPS))
- endif
- else
- # As earlier mentioned when allsb is specified, we call our self recursively
- # for all of the subprojects
- $$(eval $$(call PARSE_ALL_IN_LIST,PARSE_SUBPROJECT,$(SUBPROJECTS)))
- endif
-endef
+# endef
# If we want to parse all subprojects, but the keyboard doesn't have any,
# then use defaultsp instead
-define PARSE_ALL_SUBPROJECTS
- ifeq ($$(SUBPROJECTS),)
- $$(eval $$(call PARSE_SUBPROJECT,defaultsp))
- else
- $$(eval $$(call PARSE_ALL_IN_LIST,PARSE_SUBPROJECT,$$(SUBPROJECTS)))
- endif
-endef
+# define PARSE_ALL_SUBPROJECTS
+# ifeq ($$(SUBPROJECTS),)
+# $$(eval $$(call PARSE_SUBPROJECT,defaultsp))
+# else
+# $$(eval $$(call PARSE_ALL_IN_LIST,PARSE_SUBPROJECT,$$(SUBPROJECTS)))
+# endif
+# endef
# $1 Keymap
# This is the meat of compiling a keyboard, when entering this, everything is known
define PARSE_KEYMAP
CURRENT_KM = $1
# The rest of the rule is the target
- # Remove the leading "-" from the target, as it acts as a separator
- MAKE_TARGET := $$(patsubst -%,%,$$(RULE))
+ # Remove the leading ":" from the target, as it acts as a separator
+ MAKE_TARGET := $$(patsubst :%,%,$$(RULE))
# We need to generate an unique indentifer to append to the COMMANDS list
- COMMAND := COMMAND_KEYBOARD_$$(CURRENT_KB)_SUBPROJECT_$(CURRENT_SP)_KEYMAP_$$(CURRENT_KM)
+ CURRENT_KB_UNDER := $$(subst /,_,$$(CURRENT_KB))
+ COMMAND := COMMAND_KEYBOARD_$$(CURRENT_KB_UNDER)_KEYMAP_$$(CURRENT_KM)
# If we are compiling a keyboard without a subproject, we want to display just the name
# of the keyboard, otherwise keyboard/subproject
- ifeq ($$(CURRENT_SP),)
- KB_SP := $(CURRENT_KB)
- else
- KB_SP := $(CURRENT_KB)/$$(CURRENT_SP)
- endif
+ KB_SP := $$(CURRENT_KB)
# Format it in bold
KB_SP := $(BOLD)$$(KB_SP)$(NO_COLOR)
# Specify the variables that we are passing forward to submake
- MAKE_VARS := KEYBOARD=$$(CURRENT_KB) SUBPROJECT=$$(CURRENT_SP) KEYMAP=$$(CURRENT_KM)
+ MAKE_VARS := KEYBOARD=$$(CURRENT_KB) KEYMAP=$$(CURRENT_KM)
# And the first part of the make command
MAKE_CMD := $$(MAKE) -r -R -C $(ROOT_DIR) -f build_keyboard.mk $$(MAKE_TARGET)
# The message to display
define PARSE_TEST
TESTS :=
- TEST_NAME := $$(firstword $$(subst -, ,$$(RULE)))
- TEST_TARGET := $$(subst $$(TEST_NAME),,$$(subst $$(TEST_NAME)-,,$$(RULE)))
+ TEST_NAME := $$(firstword $$(subst :, ,$$(RULE)))
+ TEST_TARGET := $$(subst $$(TEST_NAME),,$$(subst $$(TEST_NAME):,,$$(RULE)))
ifeq ($$(TEST_NAME),all)
MATCHED_TESTS := $$(TEST_LIST)
else
endef
-# Allow specifying just the subproject, in the keyboard directory, which will compile all keymaps
-SUBPROJECTS := $(notdir $(patsubst %/rules.mk,%,$(wildcard ./*/rules.mk)))
-.PHONY: $(SUBPROJECTS)
-$(SUBPROJECTS): %: %-allkm
-
# Let's match everything, we handle all the rule parsing ourselves
.PHONY: %
%:
$(foreach TEST,$(TESTS),$(RUN_TEST))
if [ -f $(ERROR_FILE) ]; then printf "$(MSG_ERRORS)" & exit 1; fi;
+# These no longer work because of the colon system
+
# All should compile everything
-.PHONY: all
-all: all-keyboards test-all
+# .PHONY: all
+# all: all-keyboards test-all
# Define some shortcuts, mostly for compatibility with the old syntax
-.PHONY: all-keyboards
-all-keyboards: allkb-allsp-allkm
+# .PHONY: all-keyboards
+# all-keyboards: all\:all\:all
-.PHONY: all-keyboards-defaults
-all-keyboards-defaults: allkb-allsp-default
+# .PHONY: all-keyboards-defaults
+# all-keyboards-defaults: all\:default
-.PHONY: test
-test: test-all
+# .PHONY: test
+# test: test-all
-.PHONY: test-clean
-test-clean: test-all-clean
+# .PHONY: test-clean
+# test-clean: test-all-clean
lib/%:
git submodule sync $?
--- /dev/null
+complete -W " 9key-default alps64-default amj40-default amj40-fabian amj60-default_60_ansi amj60-iso_split_rshift amj60-maximized amjpad-default amjpad-max amjpad-ortho_left amjpad-ortho_right atomic-default atomic-default_ortho_5x15 atomic-pvc atreus-alphadox atreus-classic atreus-default atreus-erlandsona atreus-gerb atreus-jeremy atreus-replicaJunction atreus-xyverz atreus62-atreus52 atreus62-default atreus62-mneme atreus62-xyverz bananasplit-0010 bananasplit-coloneljesus bananasplit-default bananasplit-hhkbanana bananasplit-nic bananasplit-rask bantam44-default chibios_test-default clueboard-bloodlvst clueboard-caps_fn clueboard-colemak clueboard-default clueboard-jokrik clueboard-mac_optimized clueboard-magicmonty clueboard-maximised clueboard-mouse_keys clueboard-serubin clueboard-shift_fn clueboard-skully clueboard-smt clueboard-tetris clueboard-unix_optimized clueboard-win_optimized clueboard-xyverz cluecard-default cluecard-rgb_effects cluepad-default deltasplit75-default deltasplit75-itsaferbie deltasplit75-protosplit dk60-default eco-default eco-that_canadian ergodone-333fred ergodone-ab ergodone-absenth ergodone-adam ergodone-adnw_k_o_y ergodone-albert ergodone-alexjj ergodone-algernon ergodone-alphadox ergodone-andrew_osx ergodone-belak ergodone-bepo ergodone-bepo_csa ergodone-bryan ergodone-coderkun_neo2 ergodone-colemak ergodone-colemak_osx_pc_no ergodone-colemak_programmer ergodone-common_nighthawk ergodone-csharp_dev ergodone-dave ergodone-deadcyclo ergodone-default ergodone-default_ergodox ergodone-dragon788 ergodone-dvorak ergodone-dvorak_emacs ergodone-dvorak_emacs_software ergodone-dvorak_intl_squisher ergodone-dvorak_plover ergodone-dvorak_programmer ergodone-dvorak_programmer_swe ergodone-dvorak_spanish ergodone-emacs_osx_dk ergodone-erez_experimental ergodone-familiar ergodone-french_hacker ergodone-galson ergodone-german ergodone-german-kinergo ergodone-german-lukas ergodone-german-manuneo ergodone-guni ergodone-ishigoya-jp ergodone-italian ergodone-j3rn ergodone-jack ergodone-jacobono ergodone-jafo ergodone-jgarr ergodone-josh ergodone-kastyle ergodone-kines-ish ergodone-kristian ergodone-maz ergodone-mclennon_osx ergodone-mpiechotka ergodone-msc ergodone-naps62 ergodone-neo2_on_qwertz_hardware ergodone-norwegian_programmer_osx_pc ergodone-norwegian_programmer_osx_pc_colemak ergodone-ordinary ergodone-osx_de ergodone-osx_de_adnw_koy ergodone-osx_de_experimental ergodone-osx_fr ergodone-osx_kinesis_pnut ergodone-osx_whiskey_tango_foxtrot_capslock ergodone-phoenix ergodone-plover ergodone-plums ergodone-pvinis ergodone-replicaJunction ergodone-reset_eeprom ergodone-robot_test_layout ergodone-romanzolotarev-norman-osx ergodone-romanzolotarev-norman-plover-osx ergodone-romanzolotarev-norman-plover-osx-hjkl ergodone-romanzolotarev-norman-qwerty-osx ergodone-sethbc ergodone-siroken3 ergodone-sneako ergodone-software_neo2 ergodone-supercoder ergodone-swedish ergodone-swedish-lindhe ergodone-swissgerman ergodone-techtomas ergodone-teckinesis ergodone-tkuichooseyou ergodone-tm2030 ergodone-tonyabra_osx ergodone-townk_osx ergodone-twentylives_dvorak_with_hebrew ergodone-twey ergodone-videck ergodone-win10_writers-block ergodone-workman_osx_mdw ergodone-xyverz ergodone-yoruian ergodone-zweihander-osx ergodox_ez-333fred ergodox_ez-ab ergodox_ez-absenth ergodox_ez-adam ergodox_ez-adnw_k_o_y ergodox_ez-albert ergodox_ez-alexjj ergodox_ez-algernon ergodox_ez-alphadox ergodox_ez-andrew_osx ergodox_ez-belak ergodox_ez-bepo ergodox_ez-bepo_csa ergodox_ez-blakedietz ergodox_ez-bryan ergodox_ez-coderkun_neo2 ergodox_ez-colemak ergodox_ez-colemak_osx_pc_no ergodox_ez-colemak_programmer ergodox_ez-common_nighthawk ergodox_ez-csharp_dev ergodox_ez-dave ergodox_ez-deadcyclo ergodox_ez-default ergodox_ez-default_ergodox ergodox_ez-default_osx ergodox_ez-dragon788 ergodox_ez-drashna ergodox_ez-drashna-custom ergodox_ez-dvorak ergodox_ez-dvorak_emacs ergodox_ez-dvorak_emacs_software ergodox_ez-dvorak_intl_squisher ergodox_ez-dvorak_plover ergodox_ez-dvorak_programmer ergodox_ez-dvorak_programmer_swe ergodox_ez-dvorak_spanish ergodox_ez-emacs_osx_dk ergodox_ez-erez_experimental ergodox_ez-familiar ergodox_ez-french_hacker ergodox_ez-galson ergodox_ez-german ergodox_ez-german-kinergo ergodox_ez-german-lukas ergodox_ez-german-manuneo ergodox_ez-guni ergodox_ez-ishigoya-jp ergodox_ez-italian ergodox_ez-j3rn ergodox_ez-jack ergodox_ez-jacobono ergodox_ez-jafo ergodox_ez-jgarr ergodox_ez-josh ergodox_ez-kastyle ergodox_ez-kines-ish ergodox_ez-kristian ergodox_ez-maz ergodox_ez-mclennon_osx ergodox_ez-mpiechotka ergodox_ez-msc ergodox_ez-naps62 ergodox_ez-neo2_on_qwertz_hardware ergodox_ez-norwegian_programmer_osx_pc ergodox_ez-norwegian_programmer_osx_pc_colemak ergodox_ez-ordinary ergodox_ez-osx_de ergodox_ez-osx_de_adnw_koy ergodox_ez-osx_de_experimental ergodox_ez-osx_fr ergodox_ez-osx_kinesis_pnut ergodox_ez-osx_whiskey_tango_foxtrot_capslock ergodox_ez-phoenix ergodox_ez-plover ergodox_ez-plums ergodox_ez-profet_80 ergodox_ez-pvinis ergodox_ez-replicaJunction ergodox_ez-reset_eeprom ergodox_ez-robot_test_layout ergodox_ez-romanzolotarev-norman-osx ergodox_ez-romanzolotarev-norman-plover-osx ergodox_ez-romanzolotarev-norman-plover-osx-hjkl ergodox_ez-romanzolotarev-norman-qwerty-osx ergodox_ez-sethbc ergodox_ez-siroken3 ergodox_ez-sneako ergodox_ez-software_neo2 ergodox_ez-steno ergodox_ez-supercoder ergodox_ez-swedish ergodox_ez-swedish-lindhe ergodox_ez-swissgerman ergodox_ez-techtomas ergodox_ez-teckinesis ergodox_ez-tkuichooseyou ergodox_ez-tm2030 ergodox_ez-tonyabra_osx ergodox_ez-townk_osx ergodox_ez-twentylives_dvorak_with_hebrew ergodox_ez-twey ergodox_ez-videck ergodox_ez-win10_writers-block ergodox_ez-workman_osx_mdw ergodox_ez-xyverz ergodox_ez-yoruian ergodox_ez-zweihander-osx ergodox_infinity-333fred ergodox_infinity-ab ergodox_infinity-absenth ergodox_infinity-adam ergodox_infinity-adnw_k_o_y ergodox_infinity-albert ergodox_infinity-alexjj ergodox_infinity-algernon ergodox_infinity-alphadox ergodox_infinity-andrew_osx ergodox_infinity-belak ergodox_infinity-bepo ergodox_infinity-bepo_csa ergodox_infinity-bryan ergodox_infinity-coderkun_neo2 ergodox_infinity-colemak ergodox_infinity-colemak_osx_pc_no ergodox_infinity-colemak_programmer ergodox_infinity-common_nighthawk ergodox_infinity-csharp_dev ergodox_infinity-dave ergodox_infinity-deadcyclo ergodox_infinity-default_ergodox ergodox_infinity-dragon788 ergodox_infinity-dvorak ergodox_infinity-dvorak_emacs ergodox_infinity-dvorak_emacs_software ergodox_infinity-dvorak_intl_squisher ergodox_infinity-dvorak_plover ergodox_infinity-dvorak_programmer ergodox_infinity-dvorak_programmer_swe ergodox_infinity-dvorak_spanish ergodox_infinity-emacs_osx_dk ergodox_infinity-erez_experimental ergodox_infinity-familiar ergodox_infinity-french_hacker ergodox_infinity-galson ergodox_infinity-german ergodox_infinity-german-kinergo ergodox_infinity-german-lukas ergodox_infinity-german-manuneo ergodox_infinity-guni ergodox_infinity-ishigoya-jp ergodox_infinity-italian ergodox_infinity-j3rn ergodox_infinity-jack ergodox_infinity-jacobono ergodox_infinity-jafo ergodox_infinity-jgarr ergodox_infinity-josh ergodox_infinity-kastyle ergodox_infinity-kines-ish ergodox_infinity-kristian ergodox_infinity-maz ergodox_infinity-mclennon_osx ergodox_infinity-mpiechotka ergodox_infinity-msc ergodox_infinity-naps62 ergodox_infinity-neo2_on_qwertz_hardware ergodox_infinity-norwegian_programmer_osx_pc ergodox_infinity-norwegian_programmer_osx_pc_colemak ergodox_infinity-ordinary ergodox_infinity-osx_de ergodox_infinity-osx_de_adnw_koy ergodox_infinity-osx_de_experimental ergodox_infinity-osx_fr ergodox_infinity-osx_kinesis_pnut ergodox_infinity-osx_whiskey_tango_foxtrot_capslock ergodox_infinity-phoenix ergodox_infinity-plover ergodox_infinity-plums ergodox_infinity-pvinis ergodox_infinity-replicaJunction ergodox_infinity-reset_eeprom ergodox_infinity-robot_test_layout ergodox_infinity-romanzolotarev-norman-osx ergodox_infinity-romanzolotarev-norman-plover-osx ergodox_infinity-romanzolotarev-norman-plover-osx-hjkl ergodox_infinity-romanzolotarev-norman-qwerty-osx ergodox_infinity-sethbc ergodox_infinity-siroken3 ergodox_infinity-sneako ergodox_infinity-software_neo2 ergodox_infinity-supercoder ergodox_infinity-swedish ergodox_infinity-swedish-lindhe ergodox_infinity-swissgerman ergodox_infinity-techtomas ergodox_infinity-teckinesis ergodox_infinity-tkuichooseyou ergodox_infinity-tm2030 ergodox_infinity-tonyabra_osx ergodox_infinity-townk_osx ergodox_infinity-twentylives_dvorak_with_hebrew ergodox_infinity-twey ergodox_infinity-videck ergodox_infinity-win10_writers-block ergodox_infinity-workman_osx_mdw ergodox_infinity-xyverz ergodox_infinity-yoruian ergodox_infinity-zweihander-osx four_banger-default frosty_flake-default frosty_flake-nikchi frosty_flake-tkl gh60-dbroqua gh60-dbroqua_7U gh60-default gh60-default_60_ansi gh60-default_60_ansi_split_bs_rshift gh60-default_60_iso gh60-robotmaxtron gh60-sethbc gh60-talljoe gh60-unxmaal gh60-xyverz gherkin-default gherkin-mjt gherkin-steno gherkin-talljoe gonnerd-default gonnerd-mauin gonnerd-tkl hadron-default hadron-side_numpad hhkb-blakedietz hhkb-cinaeco hhkb-dbroqua hhkb-default hhkb-jp hhkb-jp_mac hhkb-lxol hhkb-mjt hhkb-rdg_jp hhkb-sh_jp hhkb-shela hhkb-smt infinity60-default infinity60-default_60_ansi_split_bs_rshift infinity60-depariel infinity60-hasu infinity60-jpetermans infinity60-talljoe jc65-default jc65-jetpacktuxedo jd40-default jd40-vanagon jd45-blakedietz jd45-default jd45-jeebak jd45-justin jd45-mjt jd45-mjt6u kbd75-default kc60-dbroqua kc60-dbroqua_hhkb kc60-default kc60-default_60_ansi kc60-mechmerlin kc60-sgoodwin kc60-stanleylai kc60-wigguno kc60-workman-dead kc60-ws2812 kinesis-default kinesis-dvorak kinesis-milestogo kinesis-xyverz kitten_paw-default kitten_paw-ickerwx kmac-default kmac-winkeyless lets_split-OLED_sample lets_split-adam lets_split-dale lets_split-default lets_split-default_ortho_4x12 lets_split-ergodoxish lets_split-fabian lets_split-henxing lets_split-hexwire lets_split-khord lets_split-mbsurfer lets_split-mjt lets_split-piemod lets_split-smt lets_split-xk lets_split-xyverz m10a-default maxipad-default mechmini-default minidox-default minidox-that_canadian mitosis-carvac_dv mitosis-default mitosis-mjt miuni32-adam-lee miuni32-default miuni32-ht_156 nyquist-333fred nyquist-default nyquist-default_ortho_5x12 nyquist-hexwire org60-boardy org60-default orthodox-default pegasushoof-blowrak pegasushoof-default phantom-default phantom-rgbmod phantom-xyverz planck-ab planck-alexey planck-angerthosenear planck-austin planck-basic planck-bone2planck planck-brandon planck-callum planck-cbbrowne planck-chance planck-charlie planck-circuit planck-coloneljesus planck-dale planck-daniel planck-david planck-dbroqua planck-default planck-default_ortho_4x12 planck-dshields planck-dzobert planck-ergodoxish planck-espynn planck-experimental planck-gabriel planck-handwired_binaryplease planck-impossible planck-jacob planck-jeebak planck-jeremy-dev planck-jhenahan planck-joe planck-johannes planck-khord planck-kyle planck-lae3 planck-leo planck-lucas planck-lukas planck-luke planck-max planck-mitch planck-mjt planck-mjtnumsym planck-mollat planck-nico planck-originerd planck-pete planck-piemod planck-premek planck-priyadi planck-pvc planck-rai-suta planck-sgoodwin planck-smt planck-steno planck-tak3over planck-thermal_printer planck-tong92 planck-unicode planck-vifon planck-xyverz planck-yale planck-yang planck-zach preonic-0xdec preonic-CMD-Preonic preonic-dale preonic-default preonic-default_ortho_5x12 preonic-jacwib preonic-kinesis preonic-nikchi preonic-smt preonic-xyverz preonic-zach ps2avrGB-default roadkit-default roadkit-default_ortho_4x4 roadkit-flipphone roadkit-mjt roadkit-singles roadkit-singlesBrent s60_x-ansi_qwertz s60_x-bluebear s60_x-custom s60_x-dbroqua s60_x-default s60_x-hasu s60_x-hhkb s60_x-iso s60_x-jpec s60_x-plain s60_x-poker s60_x-poker_bit s60_x-poker_set s60_x-spacefn s65_x-default s65_x-iso s65_x-nall s65_x-smt satan-admiralStrokers satan-ben_iso satan-colemak satan-dbroqua satan-default satan-default_60_ansi satan-default_60_ansi_split_bs_rshift satan-default_60_iso satan-denolfe satan-iso_split_rshift satan-mark1 satan-midi satan-poker satan-rask63 satan-sethbc satan-smt satan-stanleylai satan-talljoe satan-unxmaal sixkeyboard-default subatomic-default sweet16-default tada68-default tada68-maartenwut tada68-rgb tiger_lily-default tv44-belak tv44-core tv44-default tv44-jeebak tv44-jetpacktuxedo tv44-mjt tv44-smt tv44-tong92 tv44-xyverz uk78-default vision_division-default whitefox-default whitefox-jetpacktuxedo whitefox-matt3o xd60-cheese xd60-default xd60-stanleylai xd75-default xd75-default_ortho_5x15 xd75-fabian" make
include common.mk
-ifneq ($(SUBPROJECT),)
- TARGET ?= $(KEYBOARD)_$(SUBPROJECT)_$(KEYMAP)
- KEYBOARD_OUTPUT := $(BUILD_DIR)/obj_$(KEYBOARD)_$(SUBPROJECT)
-else
- TARGET ?= $(KEYBOARD)_$(KEYMAP)
- KEYBOARD_OUTPUT := $(BUILD_DIR)/obj_$(KEYBOARD)
-endif
+# 5/4/3/2/1
+KEYBOARD_FOLDER_PATH_1 := $(KEYBOARD)
+KEYBOARD_FOLDER_PATH_2 := $(patsubst %/,%,$(dir $(KEYBOARD_FOLDER_PATH_1)))
+KEYBOARD_FOLDER_PATH_3 := $(patsubst %/,%,$(dir $(KEYBOARD_FOLDER_PATH_2)))
+KEYBOARD_FOLDER_PATH_4 := $(patsubst %/,%,$(dir $(KEYBOARD_FOLDER_PATH_3)))
+KEYBOARD_FOLDER_PATH_5 := $(patsubst %/,%,$(dir $(KEYBOARD_FOLDER_PATH_4)))
+KEYBOARD_FOLDER_1 := $(notdir $(KEYBOARD_FOLDER_PATH_1))
+KEYBOARD_FOLDER_2 := $(notdir $(KEYBOARD_FOLDER_PATH_2))
+KEYBOARD_FOLDER_3 := $(notdir $(KEYBOARD_FOLDER_PATH_3))
+KEYBOARD_FOLDER_4 := $(notdir $(KEYBOARD_FOLDER_PATH_4))
+KEYBOARD_FOLDER_5 := $(notdir $(KEYBOARD_FOLDER_PATH_5))
+
+KEYBOARD_FILESAFE := $(subst /,_,$(KEYBOARD))
+
+TARGET ?= $(KEYBOARD_FILESAFE)_$(KEYMAP)
+KEYBOARD_OUTPUT := $(BUILD_DIR)/obj_$(KEYBOARD_FILESAFE)
# Force expansion
TARGET := $(TARGET)
-
MASTER ?= left
ifdef master
MASTER = $(master)
endif
endif
-KEYBOARD_PATH := keyboards/$(KEYBOARD)
-KEYBOARD_C := $(KEYBOARD_PATH)/$(KEYBOARD).c
+KEYBOARD_PATHS :=
-ifneq ("$(wildcard $(KEYBOARD_C))","")
- include $(KEYBOARD_PATH)/rules.mk
-else
- $(error "$(KEYBOARD_C)" does not exist)
-endif
-OPT_DEFS += -DKEYBOARD_$(KEYBOARD)
-
-ifneq ($(SUBPROJECT),)
- SUBPROJECT_PATH := keyboards/$(KEYBOARD)/$(SUBPROJECT)
- SUBPROJECT_C := $(SUBPROJECT_PATH)/$(SUBPROJECT).c
- ifneq ("$(wildcard $(SUBPROJECT_C))","")
- OPT_DEFS += -DSUBPROJECT_$(SUBPROJECT)
- include $(SUBPROJECT_PATH)/rules.mk
- else
- $(error "$(SUBPROJECT_PATH)/$(SUBPROJECT).c" does not exist)
- endif
+KEYBOARD_PATH_1 := keyboards/$(KEYBOARD_FOLDER_PATH_1)
+KEYBOARD_PATH_2 := keyboards/$(KEYBOARD_FOLDER_PATH_2)
+KEYBOARD_PATH_3 := keyboards/$(KEYBOARD_FOLDER_PATH_3)
+KEYBOARD_PATH_4 := keyboards/$(KEYBOARD_FOLDER_PATH_4)
+KEYBOARD_PATH_5 := keyboards/$(KEYBOARD_FOLDER_PATH_5)
+
+ifneq ("$(wildcard $(KEYBOARD_PATH_5)/rules.mk)","")
+ KEYBOARD_PATHS += $(KEYBOARD_PATH_5)
+ include $(KEYBOARD_PATH_5)/rules.mk
+endif
+ifneq ("$(wildcard $(KEYBOARD_PATH_4)/rules.mk)","")
+ KEYBOARD_PATHS += $(KEYBOARD_PATH_4)
+ include $(KEYBOARD_PATH_4)/rules.mk
+endif
+ifneq ("$(wildcard $(KEYBOARD_PATH_3)/rules.mk)","")
+ KEYBOARD_PATHS += $(KEYBOARD_PATH_3)
+ include $(KEYBOARD_PATH_3)/rules.mk
endif
+ifneq ("$(wildcard $(KEYBOARD_PATH_2)/rules.mk)","")
+ KEYBOARD_PATHS += $(KEYBOARD_PATH_2)
+ include $(KEYBOARD_PATH_2)/rules.mk
+endif
+ifneq ("$(wildcard $(KEYBOARD_PATH_1)/rules.mk)","")
+ KEYBOARD_PATHS += $(KEYBOARD_PATH_1)
+ include $(KEYBOARD_PATH_1)/rules.mk
+endif
+
+KEYBOARD_SRC :=
+
+KEYBOARD_C_1 := $(KEYBOARD_PATH_1)/$(KEYBOARD_FOLDER_1).c
+KEYBOARD_C_2 := $(KEYBOARD_PATH_2)/$(KEYBOARD_FOLDER_2).c
+KEYBOARD_C_3 := $(KEYBOARD_PATH_3)/$(KEYBOARD_FOLDER_3).c
+KEYBOARD_C_4 := $(KEYBOARD_PATH_4)/$(KEYBOARD_FOLDER_4).c
+KEYBOARD_C_5 := $(KEYBOARD_PATH_5)/$(KEYBOARD_FOLDER_5).c
-# We can assume a ChibiOS target When MCU_FAMILY is defined, since it's not used for LUFA
+ifneq ("$(wildcard $(KEYBOARD_C_5))","")
+ KEYBOARD_SRC += $(KEYBOARD_C_5)
+endif
+ifneq ("$(wildcard $(KEYBOARD_C_4))","")
+ KEYBOARD_SRC += $(KEYBOARD_C_4)
+endif
+ifneq ("$(wildcard $(KEYBOARD_C_3))","")
+ KEYBOARD_SRC += $(KEYBOARD_C_3)
+endif
+ifneq ("$(wildcard $(KEYBOARD_C_2))","")
+ KEYBOARD_SRC += $(KEYBOARD_C_2)
+endif
+ifneq ("$(wildcard $(KEYBOARD_C_1))","")
+ KEYBOARD_SRC += $(KEYBOARD_C_1)
+endif
+
+OPT_DEFS += -DKEYBOARD_$(KEYBOARD_FILESAFE)
+
+# We can assume a ChibiOS target When MCU_FAMILY is defined , since it's not used for LUFA
ifdef MCU_FAMILY
PLATFORM=CHIBIOS
else
include $(TMK_PATH)/protocol/chibios.mk
include $(TMK_PATH)/chibios.mk
OPT_OS = chibios
- ifneq ("$(wildcard $(SUBPROJECT_PATH)/bootloader_defs.h)","")
- OPT_DEFS += -include $(SUBPROJECT_PATH)/bootloader_defs.h
- else ifneq ("$(wildcard $(SUBPROJECT_PATH)/boards/$(BOARD)/bootloader_defs.h)","")
- OPT_DEFS += -include $(SUBPROJECT_PATH)/boards/$(BOARD)/bootloader_defs.h
- else ifneq ("$(wildcard $(KEYBOARD_PATH)/bootloader_defs.h)","")
- OPT_DEFS += -include $(KEYBOARD_PATH)/bootloader_defs.h
- else ifneq ("$(wildcard $(KEYBOARD_PATH)/boards/$(BOARD)/bootloader_defs.h)","")
- OPT_DEFS += -include $(KEYBOARD_PATH)/boards/$(BOARD)/bootloader_defs.h
+ ifneq ("$(wildcard $(KEYBOARD_PATH_5)/bootloader_defs.h)","")
+ OPT_DEFS += -include $(KEYBOARD_PATH_5)/bootloader_defs.h
+ else ifneq ("$(wildcard $(KEYBOARD_PATH_5)/boards/$(BOARD)/bootloader_defs.h)","")
+ OPT_DEFS += -include $(KEYBOARD_PATH_5)/boards/$(BOARD)/bootloader_defs.h
+ else ifneq ("$(wildcard $(KEYBOARD_PATH_4)/bootloader_defs.h)","")
+ OPT_DEFS += -include $(KEYBOARD_PATH_4)/bootloader_defs.h
+ else ifneq ("$(wildcard $(KEYBOARD_PATH_4)/boards/$(BOARD)/bootloader_defs.h)","")
+ OPT_DEFS += -include $(KEYBOARD_PATH_4)/boards/$(BOARD)/bootloader_defs.h
+ else ifneq ("$(wildcard $(KEYBOARD_PATH_3)/bootloader_defs.h)","")
+ OPT_DEFS += -include $(KEYBOARD_PATH_3)/bootloader_defs.h
+ else ifneq ("$(wildcard $(KEYBOARD_PATH_3)/boards/$(BOARD)/bootloader_defs.h)","")
+ OPT_DEFS += -include $(KEYBOARD_PATH_3)/boards/$(BOARD)/bootloader_defs.h
+ else ifneq ("$(wildcard $(KEYBOARD_PATH_2)/bootloader_defs.h)","")
+ OPT_DEFS += -include $(KEYBOARD_PATH_2)/bootloader_defs.h
+ else ifneq ("$(wildcard $(KEYBOARD_PATH_2)/boards/$(BOARD)/bootloader_defs.h)","")
+ OPT_DEFS += -include $(KEYBOARD_PATH_2)/boards/$(BOARD)/bootloader_defs.h
+ else ifneq ("$(wildcard $(KEYBOARD_PATH_1)/bootloader_defs.h)","")
+ OPT_DEFS += -include $(KEYBOARD_PATH_1)/bootloader_defs.h
+ else ifneq ("$(wildcard $(KEYBOARD_PATH_1)/boards/$(BOARD)/bootloader_defs.h)","")
+ OPT_DEFS += -include $(KEYBOARD_PATH_1)/boards/$(BOARD)/bootloader_defs.h
endif
endif
-CONFIG_H = $(KEYBOARD_PATH)/config.h
-ifneq ($(SUBPROJECT),)
- ifneq ("$(wildcard $(SUBPROJECT_C))","")
- CONFIG_H = $(SUBPROJECT_PATH)/config.h
- endif
+CONFIG_H :=
+ifneq ("$(wildcard $(KEYBOARD_PATH_5)/config.h)","")
+ CONFIG_H += $(KEYBOARD_PATH_5)/config.h
+endif
+ifneq ("$(wildcard $(KEYBOARD_PATH_4)/config.h)","")
+ CONFIG_H += $(KEYBOARD_PATH_4)/config.h
+endif
+ifneq ("$(wildcard $(KEYBOARD_PATH_3)/config.h)","")
+ CONFIG_H += $(KEYBOARD_PATH_3)/config.h
+endif
+ifneq ("$(wildcard $(KEYBOARD_PATH_2)/config.h)","")
+ CONFIG_H += $(KEYBOARD_PATH_2)/config.h
+endif
+ifneq ("$(wildcard $(KEYBOARD_PATH_1)/config.h)","")
+ CONFIG_H += $(KEYBOARD_PATH_1)/config.h
endif
# Save the defines and includes here, so we don't include any keymap specific ones
PROJECT_DEFS := $(OPT_DEFS)
-PROJECT_INC := $(VPATH) $(EXTRAINCDIRS) $(SUBPROJECT_PATH) $(KEYBOARD_PATH)
+PROJECT_INC := $(VPATH) $(EXTRAINCDIRS) $(KEYBOARD_PATHS)
PROJECT_CONFIG := $(CONFIG_H)
-MAIN_KEYMAP_PATH := $(KEYBOARD_PATH)/keymaps/$(KEYMAP)
-MAIN_KEYMAP_C := $(MAIN_KEYMAP_PATH)/keymap.c
-SUBPROJ_KEYMAP_PATH := $(SUBPROJECT_PATH)/keymaps/$(KEYMAP)
-SUBPROJ_KEYMAP_C := $(SUBPROJ_KEYMAP_PATH)/keymap.c
-ifneq ("$(wildcard $(SUBPROJ_KEYMAP_C))","")
- -include $(SUBPROJ_KEYMAP_PATH)/rules.mk
- KEYMAP_C := $(SUBPROJ_KEYMAP_C)
- KEYMAP_PATH := $(SUBPROJ_KEYMAP_PATH)
-else ifneq ("$(wildcard $(MAIN_KEYMAP_C))","")
- -include $(MAIN_KEYMAP_PATH)/rules.mk
- KEYMAP_C := $(MAIN_KEYMAP_C)
- KEYMAP_PATH := $(MAIN_KEYMAP_PATH)
+MAIN_KEYMAP_PATH_1 := $(KEYBOARD_PATH_1)/keymaps/$(KEYMAP)
+MAIN_KEYMAP_PATH_2 := $(KEYBOARD_PATH_2)/keymaps/$(KEYMAP)
+MAIN_KEYMAP_PATH_3 := $(KEYBOARD_PATH_3)/keymaps/$(KEYMAP)
+MAIN_KEYMAP_PATH_4 := $(KEYBOARD_PATH_4)/keymaps/$(KEYMAP)
+MAIN_KEYMAP_PATH_5 := $(KEYBOARD_PATH_5)/keymaps/$(KEYMAP)
+
+ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_5)/keymap.c)","")
+ -include $(MAIN_KEYMAP_PATH_5)/rules.mk
+ KEYMAP_C := $(MAIN_KEYMAP_PATH_5)/keymap.c
+ KEYMAP_PATH := $(MAIN_KEYMAP_PATH_5)
+else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_4)/keymap.c)","")
+ -include $(MAIN_KEYMAP_PATH_4)/rules.mk
+ KEYMAP_C := $(MAIN_KEYMAP_PATH_4)/keymap.c
+ KEYMAP_PATH := $(MAIN_KEYMAP_PATH_4)
+else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_3)/keymap.c)","")
+ -include $(MAIN_KEYMAP_PATH_3)/rules.mk
+ KEYMAP_C := $(MAIN_KEYMAP_PATH_3)/keymap.c
+ KEYMAP_PATH := $(MAIN_KEYMAP_PATH_3)
+else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_2)/keymap.c)","")
+ -include $(MAIN_KEYMAP_PATH_2)/rules.mk
+ KEYMAP_C := $(MAIN_KEYMAP_PATH_2)/keymap.c
+ KEYMAP_PATH := $(MAIN_KEYMAP_PATH_2)
+else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_1)/keymap.c)","")
+ -include $(MAIN_KEYMAP_PATH_1)/rules.mk
+ KEYMAP_C := $(MAIN_KEYMAP_PATH_1)/keymap.c
+ KEYMAP_PATH := $(MAIN_KEYMAP_PATH_1)
else ifneq ($(LAYOUTS),)
include build_layout.mk
-else
+else
$(error Could not find keymap)
# this state should never be reached
endif
# this an empty or blank macro!
KEYMAP_OUTPUT := $(BUILD_DIR)/obj_$(TARGET)
-
ifneq ("$(wildcard $(KEYMAP_PATH)/config.h)","")
- CONFIG_H = $(KEYMAP_PATH)/config.h
+ CONFIG_H += $(KEYMAP_PATH)/config.h
endif
# # project specific files
-SRC += $(KEYBOARD_C) \
+SRC += $(KEYBOARD_SRC) \
$(KEYMAP_C) \
$(QUANTUM_SRC)
-ifneq ($(SUBPROJECT),)
- SRC += $(SUBPROJECT_C)
-endif
-
# Optimize size but this may cause error "relocation truncated to fit"
#EXTRALDFLAGS = -Wl,--relax
# Search Path
VPATH += $(KEYMAP_PATH)
-ifneq ($(SUBPROJECT),)
- VPATH += $(SUBPROJECT_PATH)
-endif
-VPATH += $(KEYBOARD_PATH)
+VPATH += $(KEYBOARD_PATHS)
VPATH += $(COMMON_VPATH)
include common_features.mk
OUTPUTS := $(KEYMAP_OUTPUT) $(KEYBOARD_OUTPUT)
$(KEYMAP_OUTPUT)_SRC := $(SRC)
$(KEYMAP_OUTPUT)_DEFS := $(OPT_DEFS) $(GFXDEFS) \
--DQMK_KEYBOARD=\"$(KEYBOARD)\" -DQMK_KEYBOARD_H=\"$(KEYBOARD).h\" -DQMK_KEYBOARD_CONFIG_H=\"$(KEYBOARD_PATH)/config.h\" \
+-DQMK_KEYBOARD=\"$(KEYBOARD)\" -DQMK_KEYBOARD_H=\"$(KEYBOARD_FOLDER_1).h\" -DQMK_KEYBOARD_CONFIG_H=\"$(KEYBOARD_PATH_1)/config.h\" \
-DQMK_KEYMAP=\"$(KEYMAP)\" -DQMK_KEYMAP_H=\"$(KEYMAP).h\" -DQMK_KEYMAP_CONFIG_H=\"$(KEYMAP_PATH)/config.h\" \
--DQMK_SUBPROJECT=\"$(SUBPROJECT)\" -DQMK_SUBPROJECT_H=\"$(SUBPROJECT).h\" -DQMK_SUBPROJECT_CONFIG_H=\"$(SUBPROJECT_PATH)/config.h\"
+-DQMK_SUBPROJECT -DQMK_SUBPROJECT_H -DQMK_SUBPROJECT_CONFIG_H
$(KEYMAP_OUTPUT)_INC := $(VPATH) $(EXTRAINCDIRS)
$(KEYMAP_OUTPUT)_CONFIG := $(CONFIG_H)
$(KEYBOARD_OUTPUT)_SRC := $(CHIBISRC) $(GFXSRC)
$(KEYBOARD_OUTPUT)_DEFS := $(PROJECT_DEFS) $(GFXDEFS)
$(KEYBOARD_OUTPUT)_INC := $(PROJECT_INC) $(GFXINC)
-$(KEYBOARD_OUTPUT)_CONFIG := $(PROJECT_CONFIG)
+$(KEYBOARD_OUTPUT)_CONFIG := $(PROJECT_CONFIG)
# Default target.
all: build sizeafter
OPT_DEFS += -DTERMINAL_ENABLE
endif
+ifeq ($(strip $(USB_HID_ENABLE)), yes)
+ include $(TMK_DIR)/protocol/usb_hid.mk
+endif
+
QUANTUM_SRC:= \
$(QUANTUM_DIR)/quantum.c \
$(QUANTUM_DIR)/keymap_common.c \
Before you are able to compile, you'll need to [install an environment](getting_started_build_tools.md) for AVR or/and ARM development. Once that is complete, you'll use the `make` command to build a keyboard and keymap with the following notation:
- make planck-rev4-default
+ make planck/rev4:default
-This would build the `rev4` revision of the `planck` with the `default` keymap. Not all keyboards have revisions (also called subprojects), in which case, it can be omitted:
+This would build the `rev4` revision of the `planck` with the `default` keymap. Not all keyboards have revisions (also called subprojects or folders), in which case, it can be omitted:
- make preonic-default
+ make preonic:default
## How to customize {#how-to-customize}
## Naming your directory/project
-All names should be lowercase alphanumeric, and separated by an underscore (`_`), but not begin with one. Dashes (`-`) aren't allow by our build system, and will confuse it with keymaps/subprojects. Your directory and your `.h` and `.c` files should have exactly the same name. Subprojects/revision should follow the same format.
+All names should be lowercase alphanumeric, and separated by an underscore (`_`), but not begin with one. Your directory and your `.h` and `.c` files should have exactly the same name. All folders should follow the same format.
## `readme.md`
// config options
-#ifdef SUBPROJECT_<subproject>
- #include "<subproject>/config.h"
-#endif
-
#endif
```
-This file contains config options that should apply to the whole keyboard, and won't change in subprojects, or most keymaps. The suproject block here only applies to keyboards with subprojects.
+This file contains config options that should apply to the whole keyboard, and won't change in revisions, or most keymaps. The revision block here only applies to keyboards with revisions.
-## Subproject
+## Revisions
```c
-#ifndef <subproject>_CONFIG_H
-#define <subproject>_CONFIG_H
+#ifndef <revision>_CONFIG_H
+#define <revision>_CONFIG_H
-#include "../config.h"
+#include "config_common.h"
// config options
#endif
```
-For keyboards that have subprojects, this file contains config options that should apply to only that subproject, and won't change in most keymaps.
+For keyboards that have revisions, this file contains config options that should apply to only that revisions, and won't change in most keymaps.
## Keymap
#ifndef CONFIG_USER_H
#define CONFIG_USER_H
-#include "../../config.h"
+#include "config_common.h"
// config options
* Separate PR's into logical units. For example, do not submit one PR covering two separate features, instead submit a separate PR for each feature.
* Check for unnecessary whitespace with `git diff --check` before committing.
* Make sure your code change actually compiles.
- * Keymaps: Make sure that `make keyboard-revision-your_new_keymap` does not return an error
- * Keyboards: Make sure that `make keyboard-all` does not return any errors
+ * Keymaps: Make sure that `make keyboard:your_new_keymap` does not return an error
+ * Keyboards: Make sure that `make keyboard:all` does not return any errors
* Core: Make sure that `make allkb` does not return any errors.
* Make sure commit messages are understandable on their own. You should put a short description (no more than 70 characters) on the first line, the second line should be empty, and on the 3rd and later lines you should describe your commit in detail, if required. Example:
* **Disabled by default** - memory is a pretty limited on most chips QMK supports, and it's important that current keymaps aren't broken, so please allow your feature to be turned **on**, rather than being turned off. If you think it should be on by default, or reduces the size of the code, please talk with us about it.
* **Compile locally before submitting** - hopefully this one is obvious, but things need to compile! Our Travis system will catch any issues, but it's generally faster for you to compile a few keyboards locally instead of waiting for the results to come back.
-* **Consider subprojects and different chip-bases** - there are several keyboards that have subprojects that allow for slightly different configurations, and even different chip-bases. Try to make a feature supported in ARM and AVR, or automatically disabled on platforms it doesn't work on.
+* **Consider revisions and different chip-bases** - there are several keyboards that have revisions that allow for slightly different configurations, and even different chip-bases. Try to make a feature supported in ARM and AVR, or automatically disabled on platforms it doesn't work on.
* **Explain your feature** - Document it in `docs/`, either as a new file or as part of an existing file. If you don't document it other people won't be able to benefit from your hard work.
We also ask that you follow these guidelines:
Make example for this keyboard (after setting up your build environment):
- make planck-rev4-default
+ make planck/rev4:default
See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information.
```
or just
- $ sudo make <keyboard>-<keymap>-dfu
+ $ sudo make <keyboard>:<keymap>:dfu
But to run `make` with root privilege is not good idea. Use former method if possible.
LAYOUTS = 60_ansi
-`LAYOUTS` can be appended in the subproject's `rules.mk`:
+`LAYOUTS` can be set in any keyboard folder level's `rules.mk`:
- LAYOUTS += 60_iso
+ LAYOUTS = 60_iso
-but the `LAYOUT_<layout>` variable must be defined in `<subproject>.h` as well.
+but the `LAYOUT_<layout>` variable must be defined in `<folder>.h` as well.
## Tips for making layouts keyboard-agnostic
-Instead of using `#include "planck.h"`, you can use this line to include whatever `<keyboard>.h` (`<subproject>.h` should not be included here) file that is being compiled:
+Instead of using `#include "planck.h"`, you can use this line to include whatever `<keyboard>.h` (`<folder>.h` should not be included here) file that is being compiled:
#include QMK_KEYBOARD_H
If you want to keep some keyboard-specific code, you can use these variables to escape it with an `#ifdef` statement:
-* `KEYBOARD_<keyboard>`
-* `SUBPROJECT_<subproject>`
+* `KEYBOARD_<folder1>_<folder2>`
For example:
```c
#ifdef KEYBOARD_planck
- #ifdef SUBPROJECT_rev4
+ #ifdef KEYBOARD_planck_rev4
planck_rev4_function();
#endif
#endif
```
-Note that the names are lowercase and match the folder/file names for the keyboard/subproject exactly.
\ No newline at end of file
+Note that the names are lowercase and match the folder/file names for the keyboard/revision exactly.
\ No newline at end of file
# modify the keymap and keyboard assigment to compile what you want
# defaults are ergodox/default
-docker run -e keymap=gwen -e subproject=ez -e keyboard=ergodox --rm -v $('pwd'):/qmk:rw edasque/qmk_firmware
+docker run -e keymap=gwen -e keyboard=ergodox_ez --rm -v $('pwd'):/qmk:rw edasque/qmk_firmware
# On windows docker seems to have issue with VOLUME tag in Dockerfile, and $('pwd') won't print a windows compliant path, use full path instead like this
-docker run -e keymap=default -e subproject=ez -e keyboard=ergobox --rm -v D:/Users/Sacapuces/Documents/Repositories/qmk:/qmk:rw edasque/qmk_firmware
+docker run -e keymap=default -e keyboard=ergobox_ez --rm -v D:/Users/Sacapuces/Documents/Repositories/qmk:/qmk:rw edasque/qmk_firmware
```
# More detailed make instruction
-The full syntax of the `make` command is `<keyboard>-<subproject>-<keymap>-<target>`, where:
-
-* `<keyboard>` is the name of the keyboard, for example `planck`
- * Use `allkb` to compile all keyboards
-* `<subproject>` is the name of the subproject (revision or sub-model of the keyboard). For example, for Planck it can be `rev3` or `rev4`.
- * If the keyboard doesn't have any subprojects, it can be left out
- * To compile the default subproject, you can leave it out, or specify `defaultsp`
- * Use `allsp` to compile all subprojects
+The full syntax of the `make` command is `<keyboard_folder>:<keymap>:<target>`, where:
+
+* `<keyboard_folder>` is the path of the keyboard, for example `planck`
+ * Use `all` to compile all keyboards
+ * Specify the path to compile a revision, for example `planck/rev4` or `planck/rev3`
+ * If the keyboard doesn't have any folders, it can be left out
+ * To compile the default folder, you can leave it out
* `<keymap>` is the name of the keymap, for example `algernon`
- * Use `allkm` to compile all keymaps
+ * Use `all` to compile all keymaps
* `<target>` will be explained in more detail below.
The `<target>` means the following
* If no target is given, then it's the same as `all` below
-* `all` compiles as many keyboard/revision/keymap combinations as specified. For example, `make planck-rev4-default-all` will generate a single .hex, while `make planck-rev-all` will generate a hex for every keymap available to the planck.
+* `all` compiles as many keyboard/revision/keymap combinations as specified. For example, `make planck/rev4:default:all` will generate a single .hex, while `make planck/rev4:all` will generate a hex for every keymap available to the planck.
* `dfu`, `teensy` or `dfu-util`, compile and upload the firmware to the keyboard. If the compilation fails, then nothing will be uploaded. The programmer to use depends on the keyboard. For most keyboards it's `dfu`, but for ChibiOS keyboards you should use `dfu-util`, and `teensy` for standard Teensys. To find out which command you should use for your keyboard, check the keyboard specific readme.
- * **Note**: some operating systems need root access for these commands to work, so in that case you need to run for example `sudo make planck-rev4-default-dfu`.
+ * **Note**: some operating systems need root access for these commands to work, so in that case you need to run for example `sudo make planck/rev4:default:dfu`.
* `clean`, cleans the build output folders to make sure that everything is built from scratch. Run this before normal compilation if you have some unexplainable problems.
You can also add extra options at the end of the make command line, after the target
Here are some examples commands
-* `make allkb-allsp-allkm` builds everything (all keyboards, all subprojects, all keymaps). Running just `make` from the `root` will also run this.
-* `make ergodox-infinity-algernon-clean` will clean the build output of the Ergodox Infinity keyboard.
-* `make planck-rev4-default-dfu COLOR=false` builds and uploads the keymap without color output.
+* `make all:all` builds everything (all keyboard folders, all keymaps). Running just `make` from the `root` will also run this.
+* `make ergodox_infinity:algernon:clean` will clean the build output of the Ergodox Infinity keyboard.
+* `make planck/rev4:default:dfu COLOR=false` builds and uploads the keymap without color output.
## `rules.mk` options
### keymaps/<variant>/default.c
-This is the actual keymap for your keyboard, and the main place you'll make changes as you perfect your layout. `default.c` is the file that gets pull by default when typing `make`, but you can make other files as well, and specify them by typing `make handwired-<keyboard>-<variant>`, which will pull `keymaps/<variant>/keymap.c`.
+This is the actual keymap for your keyboard, and the main place you'll make changes as you perfect your layout. `default.c` is the file that gets pull by default when typing `make`, but you can make other files as well, and specify them by typing `make handwired/<keyboard>:<variant>`, which will pull `keymaps/<variant>/keymap.c`.
The basis of a keymap is its layers - by default, layer 0 is active. You can activate other layers, the highest of which will be referenced first. Let's start with our base layer.
## Running the tests
-To run all the tests in the codebase, type `make test`. You can also run test matching a substring by typing `make test-matchingsubstring` Note that the tests are always compiled with the native compiler of your platform, so they are also run like any other program on your computer.
+To run all the tests in the codebase, type `make test`. You can also run test matching a substring by typing `make test:matchingsubstring` Note that the tests are always compiled with the native compiler of your platform, so they are also run like any other program on your computer.
## Debugging the tests
Make example for this keyboard (after setting up your build environment):
- make 9key-default
+ make 9key:default
See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information.
\ No newline at end of file
An Alps-only 60% board designed by Hasu.
-Keyboard Maintainer: QMK Community
-Hardware Supported: Alps64 PCB
+Keyboard Maintainer: QMK Community
+Hardware Supported: Alps64 PCB
Hardware Availability: https://geekhack.org/index.php?topic=69666.0
Make example for this keyboard (after setting up your build environment):
- make alps64-default
+ make alps64:default
See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information.
-AMJ40 keyboard firmware
-======================
-DIY/Assembled compact 40% keyboard.
-
-Ported by N.Hou from the original TMK firmware.
-
-*Supports both backlight LEDs as well as RGB underglow.
-
-*For reference, the AMJ40 uses pin D3 for underglow lighting.
-
-## Quantum MK Firmware
-
-For the full Quantum feature list, see [the parent readme.md](/readme.md).
-
-## Building
-
-Download or clone the whole firmware and navigate to the keyboards/amj40
-folder. Once your dev env is setup, you'll be able to type `make` to generate
-your .hex - you can then use `make dfu` to program your PCB once you hit the
-reset button.
-
-Depending on which keymap you would like to use, you will have to compile
-slightly differently.
-
-### Default
-To build with the default keymap, simply run `sudo make all`.
-The .hex file will appear in the root of the qmk firmware folder.
-
+AMJ40
+===
+DIY/Assembled compact 40% keyboard.
+Keyboard Maintainer: QMK Community
+Hardware Supported: AMJ40 PCB
+Hardware Availability: https://geekhack.org/index.php?topic=87961.0
-### Original tmk firmware
-The original firmware that was used to port to qmk can be found [here](https://github.com/AMJKeyboard/AMJ40).
+Make example for this keyboard (after setting up your build environment):
+ make amj40:default
+See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information.
Make example for this keyboard (after setting up your build environment):
- make amj60-maximized
+ make amj60:maximized
See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information.
Make example for this keyboard (after setting up your build environment):
- make amjpad-default
+ make amjpad:default
See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information.
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#ifndef CONFIG_USER_H
+#define CONFIG_USER_H
#include "config_common.h"
/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
+#undef PRODUCT_ID
#define PRODUCT_ID 0x0419
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Ortholinear Keyboards
-#define PRODUCT The Atomic Keyboard
-#define DESCRIPTION A compact ortholinear keyboard
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
-/*
- * Keyboard Matrix Assignments
- *
- * Change this to how you wired your keyboard
- * COLS: AVR pins used for columns, left to right
- * ROWS: AVR pins used for rows, top to bottom
- * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
- * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
- *
-*/
-#define MATRIX_ROW_PINS { D0, D5, B5, B6, B3 }
-#define MATRIX_COL_PINS { F1, F0, B0, C7, F4, F5, F6, F7, D4, D6, B4, D7, D3, D2, D1 }
-#define UNUSED_PINS
-
#define BACKLIGHT_PIN B7
#define BACKLIGHT_BREATHING
A compact 60% (15x5) ortholinear keyboard kit made and sold by OLKB. [More info on qmk.fm](http://qmk.fm/atomic/)
-Keyboard Maintainer: [Jack Humbert](https://github.com/jackhumbert)
-Hardware Supported: Atomic PCB rev1, Teensy 2.0
+Keyboard Maintainer: [Jack Humbert](https://github.com/jackhumbert)
+Hardware Supported: Atomic PCB rev1, Teensy 2.0
Hardware Availability: no longer available
Make example for this keyboard (after setting up your build environment):
- make atomic-default
+ make atomic:default
See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information.
\ No newline at end of file
----------------------
to build;
-make atreus-dvorak_42_key
+make atreus:dvorak_42_key
to flash:
avrdude -p atmega32u4 -c avr109 -U flash:w:atreus_dvorak_42_key.hex -P COM7
static bool mouse_lock = false;
// building instructions:
-// make atreus-dvorak_42_key
+// make atreus:dvorak_42_key
// flashing instructions:
// avrdude -p atmega32u4 -c avr109 -U flash:w:atreus_dvorak_42_key.hex -P COM7
These configuration files are specifically for the Atreus keyboards created by Phil Hagelberg (@technomancy). This keyboard is available in two variants: one powered by a Teensy 2, (usually hand-wired) one powered by an A-Star. (usually using a PCB) This repository currently assumes that you have an A-Star powered Atreus. If you are using a Teensy2, specify that by adding `TEENSY2=yes` to your `make` commands.
-Keyboard Maintainer: QMK Community
-Hardware Supported: Atreus PCB
+Keyboard Maintainer: QMK Community
+Hardware Supported: Atreus PCB
Hardware Availability: https://atreus.technomancy.us
Make example for this keyboard (after setting up your build environment):
- make atreus-default-avrdude
+ make atreus:default:avrdude
See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information.
https://github.com/profet23/atreus62
-Keyboard Maintainer: QMK Community
-Hardware Supported: Atreus62 PCB
+Keyboard Maintainer: QMK Community
+Hardware Supported: Atreus62 PCB
Hardware Availability: http://shop.profetkeyboards.com/product/atreus62-keyboard
Make example for this keyboard (after setting up your build environment):
- make atreus62-default
+ make atreus62:default
See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information.
-# BananaSplit60 keyboard firmware
+BananaSplit60
+===
-Ported from evangs/tmk_keyboard
+A 60% PCB featuring a split spacebar.
-## Quantum MK Firmware
+Keyboard Maintainer: QMK Community
+Hardware Supported: BananaSplit60 PCB
+Hardware Availability: https://thevankeyboards.com/products/gb-bananasplit-60-keyboard-kit?variant=42149104910
-For the full Quantum feature list, see [the parent readme](/).
+Make example for this keyboard (after setting up your build environment):
-## Building
+ make bananasplit:default
-Download or clone the whole firmware and navigate to the keyboards/bananasplit folder. Once your dev env is setup, you'll be able to type `make` to generate your .hex - you can then use the Teensy Loader to program your .hex file.
+See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information.
-Depending on which keymap you would like to use, you will have to compile slightly differently.
-
-### Default
-
-To build with the default keymap, simply run `make default`.
-
-### Other Keymaps
-
-Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create a folder with the name of your keymap in the keymaps folder, and see keymap documentation (you can find in top readme.md) and existant keymap files.
-
-To build the firmware binary hex file with a keymap just do `make` with a keymap like this:
-
-```
-$ make [default|jack|<name>]
-```
-
-Keymaps follow the format **__\<name\>.c__** and are stored in the `keymaps` folder.
A small mechanical keyboard.
-Keyboard Maintainer: QMK Community
-Hardware Supported: Bantam-44 PCB
+Keyboard Maintainer: QMK Community
+Hardware Supported: Bantam-44 PCB
Hardware Availability: http://www.bantamkeyboards.com
Make example for this keyboard (after setting up your build environment):
- make bantam44-default
+ make bantam44:default
See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information.
# List of all the board related files.
-BOARDSRC = $(KEYBOARD_PATH)/boards/GENERIC_STM32_F103/board.c
+BOARDSRC = $(BOARD_PATH)/boards/GENERIC_STM32_F103/board.c
# Required include directories
-BOARDINC = $(KEYBOARD_PATH)/boards/GENERIC_STM32_F103
+BOARDINC = $(BOARD_PATH)/boards/GENERIC_STM32_F103
COMMAND_ENABLE = yes # Commands for debug and configuration
SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover
-CUSTOM_MATRIX = yes # Custom matrix file
\ No newline at end of file
+CUSTOM_MATRIX = yes # Custom matrix file
+
+DEFAULT_FOLDER = chibios_test/stm32_f072_onekey
\ No newline at end of file
+++ /dev/null
-SUBPROJECT_DEFAULT = stm32_f072_onekey
+++ /dev/null
-ifndef MAKEFILE_INCLUDED
- include ../../Makefile
-endif
\ No newline at end of file
Make example for this keyboard (after setting up your build environment):
- make cluepad-default
+ make clueboard_17:default
See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information.
# List of all the board related files.
-BOARDSRC = $(KEYBOARD_PATH)/boards/GENERIC_STM32_F303XC/board.c
+BOARDSRC = $(BOARD_PATH)/boards/GENERIC_STM32_F303XC/board.c
# Required include directories
-BOARDINC = $(KEYBOARD_PATH)/boards/GENERIC_STM32_F303XC
+BOARDINC = $(BOARD_PATH)/boards/GENERIC_STM32_F303XC
Make example for this keyboard (after setting up your build environment):
- make clueboard_60-default-dfu-util
+ make clueboard_60:default:dfu-util
See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information.
+++ /dev/null
-SUBPROJECT_DEFAULT = rev2
-
-ifndef MAKEFILE_INCLUDED
- include ../../Makefile
-endif
\ No newline at end of file
#ifndef CLUEBOARD_H
#define CLUEBOARD_H
-#ifdef SUBPROJECT_rev1
+#include "quantum.h"
+
+#ifdef KEYBOARD_clueboard_66_rev1
#include "rev1.h"
#endif
-#ifdef SUBPROJECT_rev2
+#ifdef KEYBOARD_clueboard_66_rev2
#include "rev2.h"
#endif
-#ifdef SUBPROJECT_rev3
+#ifdef KEYBOARD_clueboard_66_rev3
#include "rev3.h"
#endif
-#include "quantum.h"
-
#endif
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION
-
-#ifdef SUBPROJECT_rev1
- #include "rev1/config.h"
-#endif
-#ifdef SUBPROJECT_rev2
- #include "rev2/config.h"
-#endif
-#ifdef SUBPROJECT_rev3
- #include "rev3/config.h"
-#endif
-
#endif
Make example for this keyboard (after setting up your build environment):
- make clueboard-rev3-default
+ make clueboard/rev3:default
See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information.
+++ /dev/null
-ifndef MAKEFILE_INCLUDED
- include ../../../Makefile
-endif
\ No newline at end of file
#ifndef REV2_CONFIG_H
#define REV2_CONFIG_H
-#include "../config.h"
+#include "config_common.h"
#define PRODUCT_ID 0x2301
#define DEVICE_VER 0x0003
+++ /dev/null
-ifndef MAKEFILE_INCLUDED
- include ../../../Makefile
-endif
\ No newline at end of file
#ifndef REV2_CONFIG_H
#define REV2_CONFIG_H
-#include "../config.h"
+#include "config_common.h"
#define PRODUCT_ID 0x2320
#define DEVICE_VER 0x0001
#ifndef REV2_H
#define REV2_H
-#include "../clueboard_66.h"
+#include "clueboard_66.h"
/* Clueboard matrix layout
* ,-----------------------------------------------------------. ,---.
#ifndef REV3_CONFIG_H
#define REV3_CONFIG_H
-#include "../config.h"
+#include "config_common.h"
#define PRODUCT_ID 0x2370
#define DEVICE_VER 0x0001
#ifndef REV3_H
#define REV3_H
-#include "../clueboard_66.h"
+#include "clueboard_66.h"
/* Clueboard matrix layout
* ,-----------------------------------------------------------. ,---.
MIDI_ENABLE = no # MIDI controls
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
+
+DEFAULT_FOLDER = clueboard_66/rev2
+++ /dev/null
-SUBPROJECT_DEFAULT = rev2
Make example for this keyboard (after setting up your build environment):
- make cluecard-default
+ make cluecard:default
See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information.
+++ /dev/null
-#include "converter.h"
\ No newline at end of file
+++ /dev/null
-#include "quantum.h"
\ No newline at end of file
Make example for this keyboard (after setting up your build environment):
- make converter-usb_usb-default
+ make converter/usb_usb:default
See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information.
# MCU name
-MCU ?= atmega32u4
+MCU = atmega32u4
# Processor frequency.
# does not *change* the processor frequency - it should merely be updated to
# reflect the processor speed set externally so that the code can use accurate
# software delays.
-F_CPU ?= 8000000
+F_CPU = 8000000
#
# LUFA specific
#
# Target architecture (see library "Board Types" documentation).
-ARCH ?= AVR8
+ARCH = AVR8
# Input clock frequency.
# This will define a symbol, F_USB, in all source code files equal to the
#
# If no clock division is performed on the input clock inside the AVR (via the
# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB ?= $(F_CPU)
+F_USB = $(F_CPU)
# Interrupt driven control endpoint task
OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
# Build Options
# comment out to disable the options.
#
-# BOOTMAGIC_ENABLE ?= yes # Virtual DIP switch configuration(+1000)
-# MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450)
-# CONSOLE_ENABLE ?= yes # Console for debug(+400)
-# COMMAND_ENABLE ?= yes # Commands for debug and configuration
-# SLEEP_LED_ENABLE ?= yes # Breathing sleep LED during USB suspend
-# NKRO_ENABLE ?= yes # USB Nkey Rollover - not yet supported in LUFA
-# BACKLIGHT_ENABLE ?= yes
-
+# BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
+# MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
+EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
+# CONSOLE_ENABLE = yes # Console for debug(+400)
+# COMMAND_ENABLE = yes # Commands for debug and configuration
+# SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
+# NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA
+# BACKLIGHT_ENABLE = yes
+USB_HID_ENABLE = yes
CUSTOM_MATRIX = yes
-SRC = custom_matrix.cpp
-include $(TMK_DIR)/protocol/usb_hid.mk
+SRC = custom_matrix.cpp
\ No newline at end of file
#include "config_common.h"
-#ifdef SUBPROJECT_protosplit
- #include "protosplit/config.h"
-#endif
-#ifdef SUBPROJECT_v2
- #include "v2/config.h"
-#endif
#endif
#ifndef DELTASPLIT75_H
#define DELTASPLIT75_H
-#ifdef SUBPROJECT_v2
- #include "v2.h"
-#endif
-#ifdef SUBPROJECT_protosplit
- #include "protosplit.h"
-#endif
+#include "v2.h"
#include "quantum.h"
Make example for this keyboard (after setting up your build environment):
- make deltasplit75-v2-default
+ make deltasplit75/v2:default
See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information.
# change to "no" to disable the options, or define them in the Makefile in
# the appropriate keymap folder that will get included automatically
#
-BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450)
-CONSOLE_ENABLE ?= no # Console for debug(+400)
-COMMAND_ENABLE ?= yes # Commands for debug and configuration
-NKRO_ENABLE ?= no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality
-MIDI_ENABLE ?= no # MIDI controls
-AUDIO_ENABLE ?= no # Audio output on port C6
-UNICODE_ENABLE ?= no # Unicode
-BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID
-RGBLIGHT_ENABLE ?= no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
-SUBPROJECT_rev1 ?= yes
-USE_I2C ?= yes
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
+MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
+EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
+CONSOLE_ENABLE = no # Console for debug(+400)
+COMMAND_ENABLE = yes # Commands for debug and configuration
+NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+MIDI_ENABLE = no # MIDI controls
+AUDIO_ENABLE = no # Audio output on port C6
+UNICODE_ENABLE = no # Unicode
+BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
+RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
+SUBPROJECT_rev1 = yes
+USE_I2C = yes
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
CUSTOM_MATRIX = yes
+
+DEFAULT_FOLDER = deltasplit75/v2
\ No newline at end of file
+++ /dev/null
-SUBPROJECT_DEFAULT = v2
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#ifndef CONFIG_V2_H
+#define CONFIG_V2_H
#include "config_common.h"
-BACKLIGHT_ENABLE = no
-
-ifndef QUANTUM_DIR
- include ../../../Makefile
-endif
+BACKLIGHT_ENABLE = no
\ No newline at end of file
Make example for this keyboard (after setting up your build environment):
- make dk60-default
+ make dk60:default
See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information.
Make example for this keyboard (after setting up your build environment):
- make dz60-default
+ make dz60:default
See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information.
#ifndef ECO_H
#define ECO_H
-#ifdef SUBPROJECT_rev1
+#ifdef KEYBOARD_eco_rev1
#include "rev1.h"
#endif
-#ifdef SUBPROJECT_rev2
+#ifdef KEYBOARD_eco_rev2
#include "rev2.h"
#endif
Make example for this keyboard (after setting up your build environment):
- make eco-rev2-that_canadian
+ make eco/rev2:that_canadian
See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information.
\ No newline at end of file
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+
+DEFAULT_FOLDER = eco/rev2
\ No newline at end of file
+++ /dev/null
-SUBPROJECT_DEFAULT = rev2
In the root directory of the repository, build the firmware with a command like:
- make ergodone-default
+ make ergodone:default
For more information on the layout option and other ones, see the [`make` guide](https://docs.qmk.fm/getting_started_make_guide.html).
// on each tap, light up one led, from right to left
-// on the forth tap, turn them off from right to leftmake ergodox-ez-drashna-custom-teensy
+// on the forth tap, turn them off from right to left
void dance_flsh_each(qk_tap_dance_state_t *state, void *user_data) {
if (!skip_leds) {
How to build
------------
-make ergodox_ez-dvorak_42_key-teensy
+make ergodox_ez:dvorak_42_key:teensy
Layers
------
// to build this keymap
-// make ergodox_ez-dvorak_42_key-teensy
+// make ergodox_ez:dvorak_42_key:teensy
static bool mouse_lock = false;
Follow the main Infinity ErgoDox guide but use the following layout:
- $ sudo make ergodox_infinity-rask
+ $ sudo make ergodox_infinity:rask
- Make sure you are in the top-level qmk_firmware directory
- - Build the firmware with `make ergodox_infinity-keymapname`
+ - Build the firmware with `make ergodox_infinity:keymapname`
- Plug in the left hand keyboard only.
- Press the program button (back of keyboard, above thumb pad).
- - Install the firmware with `sudo make ergodox_infinity-keymapname-dfu-util`
+ - Install the firmware with `sudo make ergodox_infinity:keymapname:dfu-util`
- - Build right hand firmware with `make ergodox_infinity-keymapname MASTER=right`
+ - Build right hand firmware with `make ergodox_infinity:keymapname MASTER=right`
- Plug in the right hand keyboard only.
Make example for this keyboard (after setting up your build environment):
- make felix-default
+ make felix:default
See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information.
Make example for this keyboard (after setting up your build environment):
- make four_banger-default
+ make four_banger:default
See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information.
\ No newline at end of file
104 key default layout:
```
-make frosty_flake-default
+make frosty_flake:default
```
To directly flash the frosty_flake after compiling use
```
-make frosty_flake-default-dfu
+make frosty_flake:default:dfu
```
87 key tkl layout:
```
-make frosty_flake-tkl-dfu
+make frosty_flake:tkl:dfu
```
See [build environment
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#ifndef CONFIG_USER_H
+#define CONFIG_USER_H
#include "config_common.h"
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#ifndef CONFIG_USER_H
+#define CONFIG_USER_H
#include "config_common.h"
Make example for this keyboard (after setting up your build environment):
- make gh60-default
+ make gh60:default
See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information.
Make example for this keyboard (after setting up your build environment):
- make gherkin-default
+ make gherkin:default
See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information.
First pass at adding support for the gherkin keyboard. Compiles but completely
Make example for this keyboard (after setting up your build environment):
- make gonnerd-default
+ make gonnerd:default
See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information.
+++ /dev/null
--------- begin --------
-avr-gcc.exe (AVR_8_bit_GNU_Toolchain_3.5.0_1662) 4.9.2
-Copyright (C) 2014 Free Software Foundation, Inc.
-This is free software; see the source for copying conditions. There is NO
-warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-
-Compiling: ../../keyboards/planck/planck.c \e[32;01m[OK]\e[0m
-Compiling: ../../keyboards/planck/keymaps/experimental/keymap.c \e[33;01m[WARNINGS]\e[0m
- |
- | ../../keyboards/planck/keymaps/experimental/keymap.c: In function 'action_get_macro':
- | ../../keyboards/planck/keymaps/experimental/keymap.c:227:17: warning: implicit declaration of function 'breathing_speed_set' [-Wimplicit-function-declaration]
- | breathing_speed_set(2);
- | ^
- | ../../keyboards/planck/keymaps/experimental/keymap.c:228:17: warning: implicit declaration of function 'breathing_pulse' [-Wimplicit-function-declaration]
- | breathing_pulse();
- | ^
- |
-Compiling: ../../quantum/quantum.c \e[32;01m[OK]\e[0m
-Compiling: ../../quantum/keymap.c \e[32;01m[OK]\e[0m
-Compiling: ../../quantum/keycode_config.c \e[32;01m[OK]\e[0m
-Compiling: ../../quantum/matrix.c \e[32;01m[OK]\e[0m
-Compiling: ../../quantum/audio/audio.c \e[32;01m[OK]\e[0m
-Compiling: ../../quantum/audio/voices.c \e[32;01m[OK]\e[0m
-Compiling: ../../quantum/audio/luts.c \e[32;01m[OK]\e[0m
-Compiling: ../../tmk_core/protocol/lufa/lufa.c \e[32;01m[OK]\e[0m
-Compiling: ../../tmk_core/protocol/lufa/descriptor.c \e[32;01m[OK]\e[0m
-Compiling: ../../tmk_core/protocol/lufa/LUFA-git/LUFA/Drivers/USB/Class/Common/HIDParser.c \e[32;01m[OK]\e[0m
-Compiling: ../../tmk_core/protocol/lufa/LUFA-git/LUFA/Drivers/USB/Core/AVR8/Device_AVR8.c \e[32;01m[OK]\e[0m
-Compiling: ../../tmk_core/protocol/lufa/LUFA-git/LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.c \e[32;01m[OK]\e[0m
-Compiling: ../../tmk_core/protocol/lufa/LUFA-git/LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.c \e[32;01m[OK]\e[0m
-Compiling: ../../tmk_core/protocol/lufa/LUFA-git/LUFA/Drivers/USB/Core/AVR8/Host_AVR8.c \e[32;01m[OK]\e[0m
-Compiling: ../../tmk_core/protocol/lufa/LUFA-git/LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.c \e[32;01m[OK]\e[0m
-Compiling: ../../tmk_core/protocol/lufa/LUFA-git/LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.c \e[32;01m[OK]\e[0m
-Compiling: ../../tmk_core/protocol/lufa/LUFA-git/LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.c \e[32;01m[OK]\e[0m
-Compiling: ../../tmk_core/protocol/lufa/LUFA-git/LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.c \e[32;01m[OK]\e[0m
-Compiling: ../../tmk_core/protocol/lufa/LUFA-git/LUFA/Drivers/USB/Core/ConfigDescriptors.c \e[32;01m[OK]\e[0m
-Compiling: ../../tmk_core/protocol/lufa/LUFA-git/LUFA/Drivers/USB/Core/DeviceStandardReq.c \e[32;01m[OK]\e[0m
-Compiling: ../../tmk_core/protocol/lufa/LUFA-git/LUFA/Drivers/USB/Core/Events.c \e[32;01m[OK]\e[0m
-Compiling: ../../tmk_core/protocol/lufa/LUFA-git/LUFA/Drivers/USB/Core/HostStandardReq.c \e[32;01m[OK]\e[0m
-Compiling: ../../tmk_core/protocol/lufa/LUFA-git/LUFA/Drivers/USB/Core/USBTask.c \e[32;01m[OK]\e[0m
-Compiling: ../../tmk_core/common/host.c \e[32;01m[OK]\e[0m
-Compiling: ../../tmk_core/common/keyboard.c \e[32;01m[OK]\e[0m
-Compiling: ../../tmk_core/common/action.c \e[32;01m[OK]\e[0m
-Compiling: ../../tmk_core/common/action_tapping.c \e[32;01m[OK]\e[0m
-Compiling: ../../tmk_core/common/action_macro.c \e[32;01m[OK]\e[0m
-Compiling: ../../tmk_core/common/action_layer.c \e[32;01m[OK]\e[0m
-Compiling: ../../tmk_core/common/action_util.c \e[32;01m[OK]\e[0m
-Compiling: ../../tmk_core/common/print.c \e[32;01m[OK]\e[0m
-Compiling: ../../tmk_core/common/debug.c \e[32;01m[OK]\e[0m
-Compiling: ../../tmk_core/common/util.c \e[32;01m[OK]\e[0m
-Compiling: ../../tmk_core/common/avr/suspend.c \e[32;01m[OK]\e[0m
-Assembling: ../../tmk_core/common/avr/xprintf.S \e[32;01m[OK]\e[0m
-Compiling: ../../tmk_core/common/avr/timer.c \e[32;01m[OK]\e[0m
-Compiling: ../../tmk_core/common/avr/bootloader.c \e[32;01m[OK]\e[0m
-Compiling: ../../tmk_core/common/magic.c \e[32;01m[OK]\e[0m
-Compiling: ../../tmk_core/common/avr/eeconfig.c \e[32;01m[OK]\e[0m
-Compiling: ../../tmk_core/common/mousekey.c \e[32;01m[OK]\e[0m
-Compiling: ../../tmk_core/common/command.c \e[32;01m[OK]\e[0m
-Compiling: ../../tmk_core/common/backlight.c \e[32;01m[OK]\e[0m
-Linking: .build/planck_experimental.elf \e[31;01m[ERRORS]\e[0m
- |
- | .build/obj_planck_experimental/keyboards/planck/keymaps/experimental/keymap.o: In function `action_get_macro':
- | C:\Users\Fred Wales\Documents\Programming\qmk_firmware\keyboards\planck/../../keyboards/planck/keymaps/experimental/keymap.c:240: undefined reference to `breathing_speed_set'
- | C:\Users\Fred Wales\Documents\Programming\qmk_firmware\keyboards\planck/../../keyboards/planck/keymaps/experimental/keymap.c:241: undefined reference to `breathing_pulse'
- | collect2.exe: error: ld returned 1 exit status
- |
SRC = i2c.c \
ssd1306.c
+DEFAULT_FOLDER = hadron/ver2
\ No newline at end of file
+++ /dev/null
-SUBPROJECT_DEFAULT = ver2
+++ /dev/null
-#include "handwired.h"
\ No newline at end of file
+++ /dev/null
-#include "quantum.h"
\ No newline at end of file
## Building
-Download or clone the whole firmware and use ```make handwired-kbod-default``` to generate the .hex file. You may flash it with avrdude
+Download or clone the whole firmware and use ```make handwired/kbod:default``` to generate the .hex file. You may flash it with avrdude
## Flashing
Something along this line:
## Compiling and loading the firmware
-To build the firmware, run `make handwired-magicforce61`.
+To build the firmware, run `make handwired/magicforce61`.
Flash the firmware using the teensy loader or avrdude.
AUDIO_ENABLE = no # Audio output on port C6
RGBLIGHT_ENABLE = yes
-ifndef QUANTUM_DIR
- include ../../../Makefile
-endif
-
-upload: build
- $(ATREUS_UPLOAD_COMMAND)
-
```bash
make clean
-make hhkb-blakedietz-dfu
+make hhkb:blakedietz:dfu
```
Press the button on the alternate controller to put the board into boot mode.
You'll see an output similar to the following:
```bash
-make hhkb-blakedietz-dfu
+make hhkb:blakedietz:dfu
Making hhkb with keymap blakedietz and target dfu
Make example for this keyboard (after setting up your build environment):
- make hhkb-default
+ make hhkb:default
See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information.
Make example for this keyboard (after setting up your build environment):
- make infinity60-default
+ make infinity60:default
See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information.
Make example for this keyboard (after setting up your build environment):
- make jc65-default
+ make jc65:default
Or to make and flash:
- make jc65-default-dfu
+ make jc65:default:dfu
See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information.
Make example for this keyboard (after setting up your build environment):
- make atreus-default
+ make jd40:default
See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information.
*/
/* disable debug print */
-#define NO_DEBUG
+// #define NO_DEBUG
/* disable print */
-#define NO_PRINT
+// #define NO_PRINT
/* disable action features */
//#define NO_ACTION_LAYER
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#ifndef CONFIG_USER_H
+#define CONFIG_USER_H
#include "config_common.h"
Make example for this keyboard (after setting up your build environment):
- make jd45-default
+ make jd45:default
See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information.
Make example for this keyboard (after setting up your build environment):
- make jj40-program
+ make jj40:default:program
See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information.
# List of all the board related files.
-BOARDSRC = $(KEYBOARD_PATH)/boards/JM60_BOARD/board.c
+BOARDSRC = $(BOARD_PATH)/boards/JM60_BOARD/board.c
# Required include directories
-BOARDINC = $(KEYBOARD_PATH)/boards/JM60_BOARD
+BOARDINC = $(BOARD_PATH)/boards/JM60_BOARD
Make example for this keyboard (after setting up your build environment):
- make jm60-default-bin
+ make jm60:default:bin
See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information.
1) from the `qmk_firmware` directory run:
```
-$ make jm60-default-bin
+$ make jm60:default:bin
```
2) rename 'jm60_default.bin' to 'jm60_default.firmware'
Make example for this keyboard (after setting up your build environment):
- make kbd75-default
+ make kbd75:default
See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information.
#ifndef KINESIS_H
#define KINESIS_H
-#ifdef SUBPROJECT_alvicstep
+#ifdef KEYBOARD_kinesis_alvicstep
#include "alvicstep.h"
#endif
-#ifdef SUBPROJECT_stapelberg
+#ifdef KEYBOARD_kinesis_stapelberg
#include "stapelberg.h"
#endif
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output should be port E6, current quantum library hardcodes C6, which we use for programming
CUSTOM_MATRIX=yes # need to do our own thing with the matrix
+
+DEFAULT_FOLDER = kinesis/alvicstep
\ No newline at end of file
-ifndef QUANTUM_DIR
- include ../../../Makefile
-endif
-# just silently stop, since we need to upload with teensy uploader
-upload: build
+++ /dev/null
-SUBPROJECT_DEFAULT = alvicstep
Make example for this keyboard (after setting up your build environment):
- make kitten_paw-default
+ make kitten_paw:default
See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information.
#include "quantum.h"
-#include QMK_SUBPROJECT_H
+#ifdef KEYBOARD_lets_split_rev1
+ #include "rev1.h"
+#else
+ #include "rev2.h"
+#endif
// Used to create a keymap using only KC_ prefixed keys
#define KC_KEYMAP( \
Download or clone the `qmk_firmware` repo and navigate to its top level directory. Once your build environment is setup, you'll be able to generate the default .hex using:
```
-$ make lets_split-rev2-default
+$ make lets_split/rev2:default
```
You will see a lot of output and if everything worked correctly you will see the built hex file:
```
-$ make lets_split-rev2-YOUR_KEYMAP_NAME
+$ make lets_split/rev2:YOUR_KEYMAP_NAME
```
If everything worked correctly you will see a file:
Flashing
-------
-From the top level `qmk_firmware` directory run `make KEYBOARD-SUBPROJECT-KEYMAP-avrdude` for automatic serial port resolution and flashing.
-Example: `make lets_split-rev2-default-avrdude`
+From the top level `qmk_firmware` directory run `make KEYBOARD:KEYMAP:avrdude` for automatic serial port resolution and flashing.
+Example: `make lets_split/rev2:default:avrdude`
Choosing which board to plug the USB cable into (choosing Master)
CUSTOM_MATRIX = yes
-LAYOUTS = ortho_4x12
\ No newline at end of file
+LAYOUTS = ortho_4x12
+
+DEFAULT_FOLDER = lets_split/rev2
\ No newline at end of file
+++ /dev/null
-SUBPROJECT_DEFAULT = rev2
#ifndef CONFIG_USER_H
#define CONFIG_USER_H
-#include "../../config.h"
+#include "config_common.h"
/* Use I2C or Serial, not both */
#ifndef CONFIG_USER_H
#define CONFIG_USER_H
-#include "../../config.h"
+#include "config_common.h"
/* Use I2C or Serial, not both */
#include "quantum.h"
-#include QMK_SUBPROJECT_H
+#include "rev1.h"
// Used to create a keymap using only KC_ prefixed keys
#define KC_KEYMAP( \
Make example for this keyboard (after setting up your build environment):
- make levinson-rev1-default
+ make levinson/rev1:default
Example of flashing this keyboard:
- make levinson-rev1-default-avrdude
+ make levinson/rev1:default:avrdude
See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information.
CUSTOM_MATRIX = yes
-LAYOUTS = ortho_4x12
\ No newline at end of file
+LAYOUTS = ortho_4x12
+
+DEFAULT_FOLDER = levinson/rev1
\ No newline at end of file
+++ /dev/null
-SUBPROJECT_DEFAULT = rev1
Make example for this keyboard (after setting up your build environment):
- make mechmini-default
+ make mechmini:default
See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information.
`qmk_firmware` directory:
```
-$ make mechmini-program
+$ make mechmini:program
```
If you prefer, you can just build it and flash the firmware directly with
Make example for this keyboard (after setting up your build environment):
- make mf68-default
+ make mf68:default
Example of flashing this keyboard:
- make mf68-default-avrdude
+ make mf68:default:avrdude
See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information.
#ifndef MINIDOX_H
#define MINIDOX_H
-#ifdef SUBPROJECT_rev1
+#ifdef KEYBOARD_minidox_rev1
#include "rev1.h"
#endif
Make example for this keyboard (after setting up your build environment):
- make minidox-rev1-default
+ make minidox/rev1:default
See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information.
-------
Note: Most of this is copied from the Let's Split readme, because it is awesome
-From the `minidox` directory run `make SUBPROJECT-KEYMAP-avrdude` for automatic serial port resolution and flashing.
-Example: `make rev1-default-avrdude`
+From the root directory run `make PROJECT:KEYMAP:avrdude` for automatic serial port resolution and flashing.
+Example: `make minidox/rev1:default:avrdude`
Choosing which board to plug the USB cable into (choosing Master)
--------
-BACKLIGHT_ENABLE = no
-
-ifndef QUANTUM_DIR
- include ../../../Makefile
-endif
\ No newline at end of file
+BACKLIGHT_ENABLE = no
\ No newline at end of file
SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend
CUSTOM_MATRIX = yes
+
+DEFAULT_FOLDER = minidox/rev1
\ No newline at end of file
+++ /dev/null
-SUBPROJECT_DEFAULT = rev1
Make example for this keyboard (after setting up your build environment):
- make mitosis-default
+ make mitosis:default
See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information.
#include "config_common.h"
-#include QMK_SUBPROJECT_CONFIG_H
-
#endif // CONFIG_H
#ifndef CONFIG_USER_H
#define CONFIG_USER_H
-#include "../../config.h"
+#include "config_common.h"
/* Use I2C or Serial, not both */
#ifndef CONFIG_USER_H
#define CONFIG_USER_H
-#include "../../config.h"
+#include "config_common.h"
/* Use I2C or Serial, not both */
#ifndef NYQUIST_H
#define NYQUIST_H
-#include QMK_SUBPROJECT_H
+#ifdef KEYBOARD_nyquist_rev1
+ #include "rev1.h"
+#endif
#include "quantum.h"
Make example for this keyboard (after setting up your build environment):
- make nyquist-rev1-default
+ make nyquist/rev1:default
Example of flashing this keyboard:
- make nyquist-rev1-default-avrdude
+ make nyquist/rev1:default:avrdude
See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information.
-#include QMK_SUBPROJECT_H
+#include "rev1.h"
#ifdef AUDIO_ENABLE
float tone_startup[][2] = SONG(STARTUP_SOUND);
#ifndef REV1_H
#define REV1_H
-#include QMK_KEYBOARD_H
+#include "nyquist.h"
//void promicro_bootloader_jmp(bool program);
#include "quantum.h"
CUSTOM_MATRIX = yes
-LAYOUTS = ortho_5x12
\ No newline at end of file
+LAYOUTS = ortho_5x12
+
+DEFAULT_FOLDER = nyquist/rev1
\ No newline at end of file
+++ /dev/null
-SUBPROJECT_DEFAULT = rev1
Make example for this keyboard (after setting up your build environment):
- make obelus-default
+ make obelus:default
Or to make and flash:
- make obelus-default-dfu
+ make obelus:default:dfu
See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) and [make instructions](https://docs.qmk.fm/make_instructions.html) for more information.
## Build
-To build the default keymap, simply run `make org60-default`.
\ No newline at end of file
+To build the default keymap, simply run `make org60:default`.
\ No newline at end of file
#define CONFIG_H
#include "config_common.h"
-
-#ifdef SUBPROJECT_rev1
- #include "rev1/config.h"
-#endif
-
+
#endif
#ifndef CONFIG_USER_H
#define CONFIG_USER_H
-#include "../../config.h"
+#include "config_common.h"
/* Use I2C or Serial, not both */
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
#ifndef CONFIG_USER_H
#define CONFIG_USER_H
-#include "../../config.h"
+#include "config_common.h"
/* Use I2C or Serial, not both */
CONSOLE_ENABLE = yes
-TAP_DANCE_ENABLE = yes
-
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
+TAP_DANCE_ENABLE = yes
\ No newline at end of file
#ifndef ORTHODOX_H
#define ORTHODOX_H
-#ifdef SUBPROJECT_rev1
+#ifdef KEYBOARD_orthodox_rev1
#include "rev1.h"
#endif
## First Time Setup
-Download or clone the whole firmware and navigate to the keyboards/orthodox directory. Once your dev env is setup, you'll be able to generate the default .hex using:
+Download or clone the whole firmware and navigate to the root directory. Once your dev env is setup, you'll be able to generate the default .hex using:
```
-$ make rev1-default
+$ make orthodox/rev1:default
```
You will see a lot of output and if everything worked correctly you will see the built hex files in your *root qmk_firmware directory* two levels up:
```
-$ make rev1-YOUR_KEYMAP_NAME
+$ make orthodox/rev1:YOUR_KEYMAP_NAME
```
If everything worked correctly you will see a file:
Flashing
-------
-From the `orthodox` directory run `make SUBPROJECT-KEYMAP-avrdude` for automatic serial port resolution and flashing.
-Example: `make rev2-default-avrdude`
+From the root directory run `make PROJECT:KEYMAP:avrdude` for automatic serial port resolution and flashing.
+Example: `make orthodox/rev2:default:avrdude`
Choosing which board to plug the USB cable into (choosing Master)
#ifndef REV1_CONFIG_H
#define REV1_CONFIG_H
-#include "../config.h"
+#include "config_common.h"
/* USB Device descriptor parameter */
#define VENDOR_ID 0xFEED
#ifndef REV1_H
#define REV1_H
-#include "../orthodox.h"
+#include "orthodox.h"
//void promicro_bootloader_jmp(bool program);
#include "quantum.h"
-BACKLIGHT_ENABLE = no
-
-ifndef QUANTUM_DIR
- include ../../../Makefile
-endif
\ No newline at end of file
+BACKLIGHT_ENABLE = no
\ No newline at end of file
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
CUSTOM_MATRIX = yes
+
+DEFAULT_FOLDER = orthodox/rev1
Make example for this keyboard (after setting up your build environment):
- make pegasus_hoof-default
+ make pegasus_hoof:default
See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information.
Make example for this keyboard (after setting up your build environment):
- make phantom-default
+ make phantom:default
See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information.
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION
-#include QMK_SUBPROJECT_CONFIG_H
-
#endif
-# Please remove if no longer applicable
-$(warning THIS FILE MAY BE TOO LARGE FOR YOUR KEYBOARD)
-$(warning Please disable some options in the Makefile to resolve)
-
# Build Options
# change to "no" to disable the options, or define them in the Makefile in
# the appropriate keymap folder that will get included automatically
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
\ No newline at end of file
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
\ No newline at end of file
-# Please remove if no longer applicable
-$(warning THIS FILE MAY BE TOO LARGE FOR YOUR KEYBOARD)
-$(warning Please disable some options in the Makefile to resolve)
-
# Build Options
# change to "no" to disable the options, or define them in the Makefile in
# the appropriate keymap folder that will get included automatically
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
\ No newline at end of file
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
\ No newline at end of file
-# Please remove if no longer applicable
-$(warning THIS FILE MAY BE TOO LARGE FOR YOUR KEYBOARD)
-$(warning Please disable some options in the Makefile to resolve)
-
# Build Options
# change to "no" to disable the options, or define them in the Makefile in
# the appropriate keymap folder that will get included automatically
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
\ No newline at end of file
-# Please remove if no longer applicable
-$(warning THIS FILE MAY BE TOO LARGE FOR YOUR KEYBOARD)
-$(warning Please disable some options in the Makefile to resolve)
-
-
# Build Options
# change to "no" to disable the options, or define them in the Makefile in
# the appropriate keymap folder that will get included automatically
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
\ No newline at end of file
-# Please remove if no longer applicable
-$(warning THIS FILE MAY BE TOO LARGE FOR YOUR KEYBOARD)
-$(warning Please disable some options in the Makefile to resolve)
-
-
# Build Options
# change to "no" to disable the options, or define them in the Makefile in
# the appropriate keymap folder that will get included automatically
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
\ No newline at end of file
-# Please remove if no longer applicable
-$(warning THIS FILE MAY BE TOO LARGE FOR YOUR KEYBOARD)
-$(warning Please disable some options in the Makefile to resolve)
-
-
# Build Options
# change to "no" to disable the options, or define them in the Makefile in
# the appropriate keymap folder that will get included automatically
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
\ No newline at end of file
-# Please remove if no longer applicable
-$(warning THIS FILE MAY BE TOO LARGE FOR YOUR KEYBOARD)
-$(warning Please disable some options in the Makefile to resolve)
-
-
# Build Options
# change to "no" to disable the options, or define them in the Makefile in
# the appropriate keymap folder that will get included automatically
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
-# Please remove if no longer applicable
-$(warning THIS FILE MAY BE TOO LARGE FOR YOUR KEYBOARD)
-$(warning Please disable some options in the Makefile to resolve)
-
-
# Build Options
# change to "no" to disable the options, or define them in the Makefile in
# the appropriate keymap folder that will get included automatically
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
\ No newline at end of file
Make example for this keyboard (after setting up your build environment):
- make planck-rev3-phreed
+ make planck/rev3:phreed
To flash the keyboard
- make planck-rev3-phreed-dfu
+ make planck/rev3:phreed:dfu
See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the
[make instructions](https://docs.qmk.fm/make_instructions.html) for more information.
-# Please remove if no longer applicable
-$(warning THIS FILE MAY BE TOO LARGE FOR YOUR KEYBOARD)
-$(warning Please disable some options in the Makefile to resolve)
-
-
# Build Options
# change to "no" to disable the options, or define them in the Makefile in
# the appropriate keymap folder that will get included automatically
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
\ No newline at end of file
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#ifndef CONFIG_USER_H
+#define CONFIG_USER_H
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Ortholinear Keyboards
-#define PRODUCT The Planck Keyboard
-#define DESCRIPTION A compact ortholinear keyboard
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
-# Please remove if no longer applicable
-$(warning THIS FILE MAY BE TOO LARGE FOR YOUR KEYBOARD)
-$(warning Please disable some options in the Makefile to resolve)
-
# Build Options
# change to "no" to disable the options, or define them in the Makefile in
# the appropriate keymap folder that will get included automatically
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
\ No newline at end of file
-# Please remove if no longer applicable
-$(warning THIS FILE MAY BE TOO LARGE FOR YOUR KEYBOARD)
-$(warning Please disable some options in the Makefile to resolve)
-
-
# Build Options
# change to "no" to disable the options, or define them in the Makefile in
# the appropriate keymap folder that will get included automatically
API_SYSEX_ENABLE = no # Disable extra stuff for ergodoxen
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
\ No newline at end of file
-# Please remove if no longer applicable
-$(warning THIS FILE MAY BE TOO LARGE FOR YOUR KEYBOARD)
-$(warning Please disable some options in the Makefile to resolve)
-
-
# Build Options
# change to "no" to disable the options, or define them in the Makefile in
# the appropriate keymap folder that will get included automatically
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
\ No newline at end of file
-# Please remove if no longer applicable
-$(warning THIS FILE MAY BE TOO LARGE FOR YOUR KEYBOARD)
-$(warning Please disable some options in the Makefile to resolve)
-
-
# Build Options
# change to "no" to disable the options, or define them in the Makefile in
# the appropriate keymap folder that will get included automatically
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
-#include QMK_KEYBOARD_H
+#include "planck.h"
#ifdef ONEHAND_ENABLE
__attribute__ ((weak))
#ifndef PLANCK_H
#define PLANCK_H
-#include QMK_SUBPROJECT_H
-
#include "quantum.h"
#define PLANCK_MIT( \
#define KEYMAP PLANCK_GRID
#define LAYOUT_ortho_4x12 PLANCK_GRID
+#ifdef KEYBOARD_planck_rev3
+ #include "rev3.h"
+#endif
+#ifdef KEYBOARD_planck_rev4
+ #include "rev4.h"
+#endif
+
#endif
Make example for this keyboard (after setting up your build environment):
- make planck-rev4-default
+ make planck/rev4:default
See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information.
\ No newline at end of file
#ifndef REV3_CONFIG_H
#define REV3_CONFIG_H
-#include QMK_KEYBOARD_CONFIG_H
+#include "config_common.h"
#define DEVICE_VER 0x0003
#ifndef REV3_H
#define REV3_H
-#include QMK_KEYBOARD_H
+#include "planck.h"
#endif
\ No newline at end of file
#ifndef REV4_CONFIG_H
#define REV4_CONFIG_H
-#include QMK_KEYBOARD_CONFIG_H
+#include "config_common.h"
#define DEVICE_VER 0x0004
#ifndef REV4_H
#define REV4_H
-#include QMK_KEYBOARD_H
+#include "planck.h"
#endif
\ No newline at end of file
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-LAYOUTS = ortho_4x12
\ No newline at end of file
+LAYOUTS = ortho_4x12
+
+DEFAULT_FOLDER = planck/rev4
\ No newline at end of file
+++ /dev/null
-SUBPROJECT_DEFAULT = rev4
-#include QMK_KEYBOARD_H
+#include "preonic.h"
#ifdef ONEHAND_ENABLE
__attribute__ ((weak))
{ k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b } \
}
+#define KEYMAP PREONIC_MIT
#define LAYOUT_ortho_5x12 PREONIC_GRID
#endif
Make example for this keyboard (after setting up your build environment):
- make preonic-default
+ make preonic:default
See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information.
\ No newline at end of file
`qmk_firmware` directory:
```
-$ make ps2avrGB-program
+$ make ps2avrGB:program
```
If you prefer, you can just build it and flash the firmware directly with
Make example for this keyboard (after setting up your build environment):
- make roadkit-default
+ make roadkit:default
See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information.
#ifndef DEFAULT_CONFIG_H
#define DEFAULT_CONFIG_H
-#include "../config.h"
+#include "config_common.h"
#define PRODUCT S60-X
#define DESCRIPTION q.m.k. keyboard firmware for S60-X
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#ifndef CONFIG_USER_H
+#define CONFIG_USER_H
#include "config_common.h"
/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x6060
+#undef DEVICE_VER
#define DEVICE_VER 0x0003
-#define MANUFACTURER Sentraq
-#define PRODUCT S60-RGB
-#define DESCRIPTION QMK keyboard firmware for Sentraq S60-RGB
-
-/* key matrix size */
-#define MATRIX_ROWS 5
-#define MATRIX_COLS 15
-
-// ROWS: Top to bottom, COLS: Left to right
-
-#define MATRIX_ROW_PINS { B5, B4, D7, D6, D4 }
-#define MATRIX_COL_PINS { D0, D1, D2, D3, D5, B6, C6, C7, F1, F0, E6, B3, B2, B1, B0 }
-#define UNUSED_PINS
-
-#define BACKLIGHT_PIN B7
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
/* Underlight configuration
*/
-
-#define RGB_DI_PIN F6
-#define RGBLIGHT_TIMER
-#define RGBLED_NUM 10 // Number of LEDs
+#undef RGBLIGHT_HUE_STEP
+#undef RGBLIGHT_SAT_STEP
+#undef RGBLIGHT_VAL_STEP
#define RGBLIGHT_HUE_STEP 10
#define RGBLIGHT_SAT_STEP 17
#define RGBLIGHT_VAL_STEP 17
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-TAP_DANCE_ENABLE = no # Enable tap dancing keys
-
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
+TAP_DANCE_ENABLE = no # Enable tap dancing keys
\ No newline at end of file
Make example for this keyboard (after setting up your build environment):
- make s60_x-default
+ make s60_x:default
See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information.
#ifndef RBG_CONFIG_H
#define RBG_CONFIG_H
-#include "../config.h"
+#include "config_common.h"
#define PRODUCT S60-X-RGB
#define DESCRIPTION q.m.k. keyboard firmware for S60-X RGB
MIDI_ENABLE = no # MIDI controls
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
-AUDIO_ENABLE = no # Audio output on port C6
\ No newline at end of file
+AUDIO_ENABLE = no # Audio output on port C6
+
+DEFAULT_FOLDER = s60_x/default
\ No newline at end of file
#ifndef S60X_H
#define S60X_H
-#ifdef SUBPROJECT_default
+#ifdef KEYBOARD_s60_x_default
#include "default.h"
#endif
-#ifdef SUBPROJECT_rgb
+#ifdef KEYBOARD_s60_x_rgb
#include "rgb.h"
#endif
+++ /dev/null
-SUBPROJECT_DEFAULT = default
Make example for this keyboard (after setting up your build environment):
- make s65_x-default
+ make s65_x:default
See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information.
Make example for this keyboard (after setting up your build environment):
- make satan-default
+ make satan:default
See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information.
Make example for this keyboard (after setting up your build environment):
- make sixkeyboard-default
+ make sixkeyboard:default
See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information.
Make example for this keyboard (after setting up your build environment):
- make sweet16-default
+ make sweet16:default
See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information.
\ No newline at end of file
Make example for this keyboard (after setting up your build environment):
- make tada68-default-bin
+ make tada68:default:bin
See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information.
1) from the `qmk_firmware\` directory run:
```
-$ make tada68-default-flashbin
+$ make tada68:default:flashbin
```
2) Connect your keyboard to Windows computer, hit the reset button on the TADA, the lights will start flashing.
Make example for this keyboard (after setting up your build environment):
- make tiger_lily-default
+ make tiger_lily:default
See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information.
Make example for this keyboard (after setting up your build environment):
- make tomato-default
+ make tomato:default
See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information.
Make example for this keyboard (after setting up your build environment):
- make tv44-default
+ make tv44:default
See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information.
Plug the keyboard in and press the reset button, then in the main
`qmk_firmware` directory run
- $ sudo make uk78-rask-dfu
+ $ sudo make uk78:rask:dfu
Make example for this keyboard (after setting up your build environment):
- make uk78-default
+ make uk78:default
See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information.
\ No newline at end of file
Make example for this keyboard (after setting up your build environment):
- make v60_type_r-default
+ make v60_type_r:default
See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information.
Make example for this keyboard (after setting up your build environment):
- make vision_division-default
+ make vision_division:default
See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information.
#include "config_common.h"
-#ifdef SUBPROJECT_rev1
- #include "rev1/config.h"
-#endif
-
#endif // CONFIG_H
Make example for this keyboard (after setting up your build environment):
- make viterbi-rev1-default
+ make viterbi/rev1:default
Example of flashing this keyboard:
- make viterbi-rev1-default-avrdude
+ make viterbi/rev1:default:avrdude
See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information.
#ifndef REV1_CONFIG_H
#define REV1_CONFIG_H
-#include "../config.h"
+#include "config_common.h"
/* USB Device descriptor parameter */
#define VENDOR_ID 0xCEEB
-BACKLIGHT_ENABLE = no
-
-ifndef QUANTUM_DIR
- include ../../../Makefile
-endif
+BACKLIGHT_ENABLE = no
\ No newline at end of file
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
CUSTOM_MATRIX = yes
+
+DEFAULT_FOLDER = viterbi/rev1
\ No newline at end of file
#ifndef VITERBI_H
#define VITERBI_H
-#ifdef SUBPROJECT_rev1
+#ifdef KEYBOARD_viterbi_rev1
#include "rev1.h"
#endif
Make example for this keyboard (after setting up your build environment):
- make whitefox-default
+ make whitefox:default
See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information.
Default Keymap for XD60 as indicated on the original sale page.
## Build
-To build the default keymap, simply run `make xd60-default`.
+To build the default keymap, simply run `make xd60:default`.
* I use emacs, which could account for some of the oddities in my layout and macros
## Build
-To build the default keymap, simply run `make xd60-kmontag42`.
+To build the default keymap, simply run `make xd60:kmontag42`.
## Programming Instructions
-Change the layout in `keymap.c` then run `make xd60-yuuki`. The compiled file will be located in `.build/xd60_yuuki.hex` relative to the project root. To flash it onto your keyboard, use whatever program works on your OS. I personally use `dfu-programmer`, and run:
+Change the layout in `keymap.c` then run `make xd60:yuuki`. The compiled file will be located in `.build/xd60_yuuki.hex` relative to the project root. To flash it onto your keyboard, use whatever program works on your OS. I personally use `dfu-programmer`, and run:
* `sudo dfu-programmer atmega32u4 erase`
* `sudo dfu-programmer atmega32u4 flash .build/xd60-yuuki.hex`
Make example for this keyboard (after setting up your build environment):
- make xd60-default
+ make xd60:default
See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information.
### Default
-To build with the default keymap, simply run `make xd75-default` from the root directory (i.e. two levels above this file), and to install via DFU, `make xd75-default-dfu`, also from the root directory.
+To build with the default keymap, simply run `make xd75:default` from the root directory (i.e. two levels above this file), and to install via DFU, `make xd75:default:dfu`, also from the root directory.
Note that DFU is likely to require root permissions, so installing the
firmware likely requires a command line like:
```
-$ sudo make xd75-default-dfu
+$ sudo make xd75:default:dfu
```
### Other Keymaps
install it, using DFU, just do `make` with a keymap like this:
```
-$ make xd75-[default|<name>]
+$ make xd75:[default|<name>]
```
Build the keyboard with
```
-$ make ymd96-default
+$ make ymd96:default
```
If you make your own layout, change the `default` word to whatever your layout is.
ifneq ("$(wildcard $(KEYMAP_PATH)/visualizer.c)","")
SRC += $(KEYMAP_PATH)/visualizer.c
else
- ifeq ("$(wildcard $(SUBPROJECT_PATH)/keymaps/$(KEYMAP)/visualizer.c)","")
- ifeq ("$(wildcard $(SUBPROJECT_PATH)/visualizer.c)","")
- ifeq ("$(wildcard $(KEYBOARD_PATH)/visualizer.c)","")
-$(error "visualizer.c" not found")
- else
- SRC += keyboards/$(KEYBOARD)/visualizer.c
- endif
- else
- SRC += keyboards/$(KEYBOARD)/$(SUBPROJECT)/visualizer.c
- endif
- else
- SRC += keyboards/$(KEYBOARD)/$(SUBPROJECT)/keymaps/$(KEYMAP)/visualizer.c
+ VISUALIZER_1 := $(KEYBOARD_PATH_1)/visualizer.c
+ VISUALIZER_2 := $(KEYBOARD_PATH_2)/visualizer.c
+ VISUALIZER_3 := $(KEYBOARD_PATH_3)/visualizer.c
+ VISUALIZER_4 := $(KEYBOARD_PATH_4)/visualizer.c
+ VISUALIZER_5 := $(KEYBOARD_PATH_5)/visualizer.c
+
+ ifneq ("$(wildcard $(VISUALIZER_5))","")
+ SRC += $(VISUALIZER_5)
+ endif
+ ifneq ("$(wildcard $(VISUALIZER_4))","")
+ SRC += $(VISUALIZER_4)
+ endif
+ ifneq ("$(wildcard $(VISUALIZER_3))","")
+ SRC += $(VISUALIZER_3)
+ endif
+ ifneq ("$(wildcard $(VISUALIZER_2))","")
+ SRC += $(VISUALIZER_2)
+ endif
+ ifneq ("$(wildcard $(VISUALIZER_1))","")
+ SRC += $(VISUALIZER_1)
endif
endif
include $(PLATFORM_MK)
-BOARD_MK = $(KEYBOARD_PATH)/boards/$(BOARD)/board.mk
+BOARD_MK :=
+
+ifneq ("$(wildcard $(KEYBOARD_PATH_5)/boards/$(BOARD)/board.mk)","")
+ BOARD_PATH = $(KEYBOARD_PATH_5)
+ BOARD_MK += $(KEYBOARD_PATH_5)/boards/$(BOARD)/board.mk
+else ifneq ("$(wildcard $(KEYBOARD_PATH_4)/boards/$(BOARD)/board.mk)","")
+ BOARD_PATH = $(KEYBOARD_PATH_4)
+ BOARD_MK += $(KEYBOARD_PATH_4)/boards/$(BOARD)/board.mk
+else ifneq ("$(wildcard $(KEYBOARD_PATH_3)/boards/$(BOARD)/board.mk)","")
+ BOARD_PATH = $(KEYBOARD_PATH_3)
+ BOARD_MK += $(KEYBOARD_PATH_3)/boards/$(BOARD)/board.mk
+else ifneq ("$(wildcard $(KEYBOARD_PATH_2)/boards/$(BOARD)/board.mk)","")
+ BOARD_PATH = $(KEYBOARD_PATH_2)
+ BOARD_MK += $(KEYBOARD_PATH_2)/boards/$(BOARD)/board.mk
+else ifneq ("$(wildcard $(KEYBOARD_PATH_1)/boards/$(BOARD)/board.mk)","")
+ BOARD_PATH = $(KEYBOARD_PATH_1)
+ BOARD_MK += $(KEYBOARD_PATH_1)/boards/$(BOARD)/board.mk
+endif
+
ifeq ("$(wildcard $(BOARD_MK))","")
BOARD_MK = $(CHIBIOS)/os/hal/boards/$(BOARD)/board.mk
ifeq ("$(wildcard $(BOARD_MK))","")
BOARD_MK = $(CHIBIOS_CONTRIB)/os/hal/boards/$(BOARD)/board.mk
endif
endif
+
include $(BOARD_MK)
include $(CHIBIOS)/os/hal/osal/rt/osal.mk
# RTOS files (optional).
endif
# Define linker script file here
-ifneq ("$(wildcard $(KEYBOARD_PATH)/ld/$(MCU_LDSCRIPT).ld)","")
-LDSCRIPT = $(KEYBOARD_PATH)/ld/$(MCU_LDSCRIPT).ld
+ifneq ("$(wildcard $(KEYBOARD_PATH_5)/ld/$(MCU_LDSCRIPT).ld)","")
+ LDSCRIPT = $(KEYBOARD_PATH_5)/ld/$(MCU_LDSCRIPT).ld
+else ifneq ("$(wildcard $(KEYBOARD_PATH_4)/ld/$(MCU_LDSCRIPT).ld)","")
+ LDSCRIPT = $(KEYBOARD_PATH_4)/ld/$(MCU_LDSCRIPT).ld
+else ifneq ("$(wildcard $(KEYBOARD_PATH_3)/ld/$(MCU_LDSCRIPT).ld)","")
+ LDSCRIPT = $(KEYBOARD_PATH_3)/ld/$(MCU_LDSCRIPT).ld
+else ifneq ("$(wildcard $(KEYBOARD_PATH_2)/ld/$(MCU_LDSCRIPT).ld)","")
+ LDSCRIPT = $(KEYBOARD_PATH_2)/ld/$(MCU_LDSCRIPT).ld
+else ifneq ("$(wildcard $(KEYBOARD_PATH_1)/ld/$(MCU_LDSCRIPT).ld)","")
+ LDSCRIPT = $(KEYBOARD_PATH_1)/ld/$(MCU_LDSCRIPT).ld
else
-LDSCRIPT = $(STARTUPLD)/$(MCU_LDSCRIPT).ld
+ LDSCRIPT = $(STARTUPLD)/$(MCU_LDSCRIPT).ld
endif
CHIBISRC = $(STARTUPSRC) \
define GEN_OBJRULE
$1_INCFLAGS := $$(patsubst %,-I%,$$($1_INC))
ifdef $1_CONFIG
-$1_CONFIG_FLAGS += -include $$($1_CONFIG)
+$1_CONFIG_FLAGS += $$(patsubst %,-include %,$$($1_CONFIG))
endif
$1_CFLAGS = $$(ALL_CFLAGS) $$($1_DEFS) $$($1_INCFLAGS) $$($1_CONFIG_FLAGS)
$1_CPPFLAGS= $$(ALL_CPPFLAGS) $$($1_DEFS) $$($1_INCFLAGS) $$($1_CONFIG_FLAGS)
BRANCH=$(git rev-parse --abbrev-ref HEAD)
if [ $NEFM -gt 0 -o "$BRANCH" = "master" ]; then
echo "Making all keymaps for all keyboards"
- make all-keyboards AUTOGEN="true"
+ make all:all AUTOGEN="true"
: $((exit_code = $exit_code + $?))
else
- MKB=$(git diff --name-only -n 1 ${TRAVIS_COMMIT_RANGE} | grep -oP '(?<=keyboards\/)([a-zA-Z0-9_]+)(?=\/)' | sort -u)
+ MKB=$(git diff --name-only -n 1 ${TRAVIS_COMMIT_RANGE} | grep -oP '(?<=keyboards\/)([a-zA-Z0-9_\/]+)(?=\/)' | sort -u)
for KB in $MKB ; do
+ if [[ $KB == *keymaps* ]]; then
+ continue
+ fi
KEYMAP_ONLY=$(git diff --name-only -n 1 ${TRAVIS_COMMIT_RANGE} | grep -Ev '^(keyboards/'${KB}'/keymaps/)' | wc -l)
if [[ $KEYMAP_ONLY -gt 0 ]]; then
echo "Making all keymaps for $KB"
- make ${KB}-allsp-allkm AUTOGEN=true
+ make ${KB}:all AUTOGEN=true
: $((exit_code = $exit_code + $?))
else
MKM=$(git diff --name-only -n 1 ${TRAVIS_COMMIT_RANGE} | grep -oP '(?<=keyboards/'${KB}'/keymaps/)([a-zA-Z0-9_]+)(?=\/)' | sort -u)
for KM in $MKM ; do
echo "Making $KM for $KB"
- make ${KB}-allsp-${KM} AUTOGEN=true
+ make ${KB}:${KM} AUTOGEN=true
: $((exit_code = $exit_code + $?))
done
fi