Make arguments redo, subproject elimination (#1784)

* redo make args to use colons, better folder structuring system [skip ci]

* don't put spaces after statements - hard lessons in makefile development

* fix-up some other rules.mk

* give travis a chance

* reset KEYMAPS variable

* start converting keyboards to new system

* try making all with travis

* redo make args to use colons, better folder structuring system [skip ci]

* don't put spaces after statements - hard lessons in makefile development

* fix-up some other rules.mk

* give travis a chance

* reset KEYMAPS variable

* start converting keyboards to new system

* try making all with travis

* start to update readmes and keyboards

* look in keyboard directories for board.mk

* update visualizer rules

* fix up some other keyboards/keymaps

* fix arm board ld includes

* fix board rules

* fix up remaining keyboards

* reset layout variable

* reset keyboard_layouts

* fix remainging keymaps/boards

* update readmes, docs

* add note to makefile error

* update readmes

* remove planck keymap warnings

* update references and docs

* test out tarvis build stages

* don't use stages for now

* don't use stages for now
pull/1696/merge
Jack Humbert 7 years ago committed by GitHub
parent e5dc2253e2
commit 800ec55dfc

@ -18,7 +18,7 @@ install:
before_script: before_script:
- avr-gcc --version - avr-gcc --version
script: script:
- make test AUTOGEN=false - make test:all AUTOGEN=false
- bash util/travis_build.sh - bash util/travis_build.sh
addons: addons:
apt: apt:

@ -21,7 +21,7 @@ override SILENT := false
QMK_VERSION := $(shell git describe --abbrev=0 --tags 2>/dev/null) QMK_VERSION := $(shell git describe --abbrev=0 --tags 2>/dev/null)
ifneq ($(QMK_VERSION),) ifneq ($(QMK_VERSION),)
$(info QMK Firmware v$(QMK_VERSION)) $(info QMK Firmware $(QMK_VERSION))
endif endif
ON_ERROR := error_occurred=1 ON_ERROR := error_occurred=1
@ -65,80 +65,86 @@ $(eval $(call NEXT_PATH_ELEMENT))
# It's really a very simple if else chain, if you squint enough, # It's really a very simple if else chain, if you squint enough,
# but the makefile syntax makes it very verbose. # but the makefile syntax makes it very verbose.
# If we are in a subfolder of keyboards # If we are in a subfolder of keyboards
ifeq ($(CURRENT_PATH_ELEMENT),keyboards) #
$(eval $(call NEXT_PATH_ELEMENT)) # *** No longer needed **
KEYBOARD := $(CURRENT_PATH_ELEMENT) #
$(eval $(call NEXT_PATH_ELEMENT)) # ifeq ($(CURRENT_PATH_ELEMENT),keyboards)
# If we are in a subfolder of keymaps, or in other words in a keymap # $(eval $(call NEXT_PATH_ELEMENT))
# folder # KEYBOARD := $(CURRENT_PATH_ELEMENT)
ifeq ($(CURRENT_PATH_ELEMENT),keymaps) # $(eval $(call NEXT_PATH_ELEMENT))
$(eval $(call NEXT_PATH_ELEMENT)) # # If we are in a subfolder of keymaps, or in other words in a keymap
KEYMAP := $(CURRENT_PATH_ELEMENT) # # folder
# else if we are not in the keyboard folder itself # ifeq ($(CURRENT_PATH_ELEMENT),keymaps)
else ifneq ($(CURRENT_PATH_ELEMENT),) # $(eval $(call NEXT_PATH_ELEMENT))
# the we can assume it's a subproject, as no other folders # KEYMAP := $(CURRENT_PATH_ELEMENT)
# should have make files in them # # else if we are not in the keyboard folder itself
SUBPROJECT := $(CURRENT_PATH_ELEMENT) # else ifneq ($(CURRENT_PATH_ELEMENT),)
$(eval $(call NEXT_PATH_ELEMENT)) # # the we can assume it's a subproject, as no other folders
# if we are inside a keymap folder of a subproject # # should have make files in them
ifeq ($(CURRENT_PATH_ELEMENT),keymaps) # SUBPROJECT := $(CURRENT_PATH_ELEMENT)
$(eval $(call NEXT_PATH_ELEMENT)) # $(eval $(call NEXT_PATH_ELEMENT))
KEYMAP := $(CURRENT_PATH_ELEMENT) # # if we are inside a keymap folder of a subproject
endif # ifeq ($(CURRENT_PATH_ELEMENT),keymaps)
endif # $(eval $(call NEXT_PATH_ELEMENT))
endif # 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 # 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 #Compatibility with the old make variables, anything you specify directly on the command line
# always overrides the detected folders # always overrides the detected folders
ifdef keyboard ifdef keyboard
KEYBOARD := $(keyboard) KEYBOARD := $(keyboard)
endif endif
ifdef sub
SUBPROJECT := $(sub)
endif
ifdef subproject
SUBPROJECT := $(subproject)
endif
ifdef keymap ifdef keymap
KEYMAP := $(keymap) KEYMAP := $(keymap)
endif endif
# Uncomment these for debugging # Uncomment these for debugging
#$(info Keyboard: $(KEYBOARD)) # $(info Keyboard: $(KEYBOARD))
#$(info Keymap: $(KEYMAP)) # $(info Keymap: $(KEYMAP))
#$(info Subproject: $(SUBPROJECT)) # $(info Subproject: $(SUBPROJECT))
#$(info Keyboards: $(KEYBOARDS)) # $(info Keyboards: $(KEYBOARDS))
# Set the default goal depending on where we are running make from # Set the default goal depending on where we are running make from
# this handles the case where you run make without any arguments # this handles the case where you run make without any arguments
.DEFAULT_GOAL := all .DEFAULT_GOAL := all:all
ifneq ($(KEYMAP),) ifneq ($(KEYMAP),)
ifeq ($(SUBPROJECT),) .DEFAULT_GOAL := $(KEYBOARD):$(KEYMAP)
# 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
else ifneq ($(KEYBOARD),) else ifneq ($(KEYBOARD),)
# Inside a keyboard folder, build all keymaps for all subprojects # Inside a keyboard folder, build all keymaps for all subprojects
# Note that this is different from the old behaviour, which would # Note that this is different from the old behaviour, which would
# build only the default keymap of the default keyboard # build only the default keymap of the default keyboard
.DEFAULT_GOAL := $(KEYBOARD)-allsp-allkm .DEFAULT_GOAL := $(KEYBOARD):all
endif endif
# Compare the start of the RULE variable with the first argument($1) # 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 # and $1 is removed from the RULE variable
# Otherwise the RULE_FOUND variable is set to false, and RULE left as it was # 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 # The function is a bit tricky, since there's no built in $(startswith) function
@ -147,10 +153,10 @@ define COMPARE_AND_REMOVE_FROM_RULE_HELPER
RULE:= RULE:=
RULE_FOUND := true RULE_FOUND := true
else else
STARTDASH_REMOVED=$$(subst START$1-,,START$$(RULE)) STARTCOLON_REMOVED=$$(subst START$1:,,START$$(RULE))
ifneq ($$(STARTDASH_REMOVED),START$$(RULE)) ifneq ($$(STARTCOLON_REMOVED),START$$(RULE))
RULE_FOUND := true RULE_FOUND := true
RULE := $$(STARTDASH_REMOVED) RULE := $$(STARTCOLON_REMOVED)
else else
RULE_FOUND := false RULE_FOUND := false
endif endif
@ -229,14 +235,14 @@ define PARSE_ALL_IN_LIST
endef endef
# The entry point for rule parsing # 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 # but this particular function only deals with the first <keyboard> part
define PARSE_RULE define PARSE_RULE
RULE := $1 RULE := $1
COMMANDS := 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 # 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)) $$(eval $$(call PARSE_ALL_KEYBOARDS))
else ifeq ($$(call COMPARE_AND_REMOVE_FROM_RULE,test),true) else ifeq ($$(call COMPARE_AND_REMOVE_FROM_RULE,test),true)
$$(eval $$(call PARSE_TEST)) $$(eval $$(call PARSE_TEST))
@ -250,93 +256,95 @@ define PARSE_RULE
$$(eval $$(call PARSE_KEYBOARD,$$(KEYBOARD))) $$(eval $$(call PARSE_KEYBOARD,$$(KEYBOARD)))
else else
$$(info make: *** No rule to make target '$1'. Stop.) $$(info make: *** No rule to make target '$1'. Stop.)
# Notice the tab instead of spaces below! $$(info |)
exit 1 $$(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 endif
endef endef
# $1 = Keyboard # $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 # the keyboard is already known when entering this function
define PARSE_KEYBOARD 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 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
else
$$(eval $$(call PARSE_SUBPROJECT,))
endif
endef
# if we are going to compile all keyboards, match the rest of the rule # KEYBOARD_FOLDERS := $$(subst /, , $(CURRENT_KB))
# for each of them
define PARSE_ALL_KEYBOARDS
$$(eval $$(call PARSE_ALL_IN_LIST,PARSE_KEYBOARD,$(KEYBOARDS)))
endef
# $1 Subproject DEFAULT_FOLDER := $$(CURRENT_KB)
# When entering this, the keyboard and subproject are known, so now we need
# to determine which keymaps are going to get compiled # We assume that every rules.mk will contain the full default value
define PARSE_SUBPROJECT $$(eval include $(ROOT_DIR)/keyboards/$$(CURRENT_KB)/rules.mk)
# If we want to compile the default subproject, then we need to ifneq ($$(DEFAULT_FOLDER),$$(CURRENT_KB))
# include the correct makefile to determine the actual name of it $$(eval include $(ROOT_DIR)/keyboards/$$(DEFAULT_FOLDER)/rules.mk)
CURRENT_SP := $1
ifeq ($$(CURRENT_SP),)
CURRENT_SP := defaultsp
endif endif
ifeq ($$(CURRENT_SP),defaultsp) CURRENT_KB := $$(DEFAULT_FOLDER)
SUBPROJECT_DEFAULT=
ifneq ("$(wildcard $(ROOT_DIR)/keyboards/$$(CURRENT_KB)/subproject.mk)","") # 5/4/3/2/1
$$(eval include $(ROOT_DIR)/keyboards/$$(CURRENT_KB)/subproject.mk) 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 endif
CURRENT_SP := $$(SUBPROJECT_DEFAULT) 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 endif
# If current subproject is empty (the default was not defined), and we have a list of subproject ifneq ("$$(wildcard $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_3)/rules.mk)","")
# then make all of them LAYOUTS :=
ifeq ($$(CURRENT_SP),) $$(eval include $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_3)/rules.mk)
ifneq ($$(SUBPROJECTS),) KEYBOARD_LAYOUTS := $$(sort $$(LAYOUTS) $$(KEYBOARD_LAYOUTS))
CURRENT_SP := allsp
endif 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 endif
# The special allsp is handled later ifneq ("$$(wildcard $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_1)/rules.mk)","")
ifneq ($$(CURRENT_SP),allsp)
# get a list of all keymaps
KEYMAPS := $$(notdir $$(patsubst %/.,%,$$(wildcard $(ROOT_DIR)/keyboards/$$(CURRENT_KB)/keymaps/*/.)))
LAYOUTS := LAYOUTS :=
$$(eval -include $(ROOT_DIR)/keyboards/$$(CURRENT_KB)/rules.mk) $$(eval include $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_1)/rules.mk)
KEYBOARD_LAYOUTS := $$(LAYOUTS) KEYBOARD_LAYOUTS := $$(sort $$(LAYOUTS) $$(KEYBOARD_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 endif
LAYOUT_KEYMAPS := LAYOUT_KEYMAPS :=
$$(foreach LAYOUT,$$(KEYBOARD_LAYOUTS),$$(eval LAYOUT_KEYMAPS += $$(notdir $$(patsubst %/.,%,$$(wildcard $(ROOT_DIR)/layouts/*/$$(LAYOUT)/*/.))))) $$(foreach LAYOUT,$$(KEYBOARD_LAYOUTS),$$(eval LAYOUT_KEYMAPS += $$(notdir $$(patsubst %/.,%,$$(wildcard $(ROOT_DIR)/layouts/*/$$(LAYOUT)/*/.)))))
KEYMAPS := $$(sort $$(KEYMAPS) $$(LAYOUT_KEYMAPS)) KEYMAPS := $$(sort $$(KEYMAPS) $$(LAYOUT_KEYMAPS))
# if the rule after removing the start of it is empty (we haven't specified a kemap or target) # if the rule after removing the start of it is empty (we haven't specified a kemap or target)
# compile all the keymaps # compile all the keymaps
ifeq ($$(RULE),) ifeq ($$(RULE),)
$$(eval $$(call PARSE_ALL_KEYMAPS)) $$(eval $$(call PARSE_ALL_KEYMAPS))
# The same if allkm was specified # The same if all was specified
else ifeq ($$(call COMPARE_AND_REMOVE_FROM_RULE,allkm),true) else ifeq ($$(call COMPARE_AND_REMOVE_FROM_RULE,all),true)
$$(eval $$(call PARSE_ALL_KEYMAPS)) $$(eval $$(call PARSE_ALL_KEYMAPS))
# Try to match the specified keyamp with the list of known keymaps # Try to match the specified keyamp with the list of known keymaps
else ifeq ($$(call TRY_TO_MATCH_RULE_FROM_LIST,$$(KEYMAPS)),true) else ifeq ($$(call TRY_TO_MATCH_RULE_FROM_LIST,$$(KEYMAPS)),true)
@ -344,33 +352,35 @@ define PARSE_SUBPROJECT
# Otherwise try to match the keymap from the current folder, or arguments to the make command # Otherwise try to match the keymap from the current folder, or arguments to the make command
else ifneq ($$(KEYMAP),) else ifneq ($$(KEYMAP),)
$$(eval $$(call PARSE_KEYMAP,$$(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 # Otherwise, make all keymaps, again this is consistent with how it works without
# any arguments # any arguments
else else
$$(eval $$(call PARSE_ALL_KEYMAPS)) $$(eval $$(call PARSE_ALL_KEYMAPS))
endif 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 are going to compile all keyboards, match the rest of the rule
# for each of them
define PARSE_ALL_KEYBOARDS
$$(eval $$(call PARSE_ALL_IN_LIST,PARSE_KEYBOARD,$(KEYBOARDS)))
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
# endef
# If we want to parse all subprojects, but the keyboard doesn't have any, # If we want to parse all subprojects, but the keyboard doesn't have any,
# then use defaultsp instead # then use defaultsp instead
define PARSE_ALL_SUBPROJECTS # define PARSE_ALL_SUBPROJECTS
ifeq ($$(SUBPROJECTS),) # ifeq ($$(SUBPROJECTS),)
$$(eval $$(call PARSE_SUBPROJECT,defaultsp)) # $$(eval $$(call PARSE_SUBPROJECT,defaultsp))
else # else
$$(eval $$(call PARSE_ALL_IN_LIST,PARSE_SUBPROJECT,$$(SUBPROJECTS))) # $$(eval $$(call PARSE_ALL_IN_LIST,PARSE_SUBPROJECT,$$(SUBPROJECTS)))
endif # endif
endef # endef
# $1 Keymap # $1 Keymap
# This is the meat of compiling a keyboard, when entering this, everything is known # This is the meat of compiling a keyboard, when entering this, everything is known
@ -380,21 +390,18 @@ endef
define PARSE_KEYMAP define PARSE_KEYMAP
CURRENT_KM = $1 CURRENT_KM = $1
# The rest of the rule is the target # The rest of the rule is the target
# Remove the leading "-" from the target, as it acts as a separator # Remove the leading ":" from the target, as it acts as a separator
MAKE_TARGET := $$(patsubst -%,%,$$(RULE)) MAKE_TARGET := $$(patsubst :%,%,$$(RULE))
# We need to generate an unique indentifer to append to the COMMANDS list # 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 # If we are compiling a keyboard without a subproject, we want to display just the name
# of the keyboard, otherwise keyboard/subproject # of the keyboard, otherwise keyboard/subproject
ifeq ($$(CURRENT_SP),) KB_SP := $$(CURRENT_KB)
KB_SP := $(CURRENT_KB)
else
KB_SP := $(CURRENT_KB)/$$(CURRENT_SP)
endif
# Format it in bold # Format it in bold
KB_SP := $(BOLD)$$(KB_SP)$(NO_COLOR) KB_SP := $(BOLD)$$(KB_SP)$(NO_COLOR)
# Specify the variables that we are passing forward to submake # 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 # And the first part of the make command
MAKE_CMD := $$(MAKE) -r -R -C $(ROOT_DIR) -f build_keyboard.mk $$(MAKE_TARGET) MAKE_CMD := $$(MAKE) -r -R -C $(ROOT_DIR) -f build_keyboard.mk $$(MAKE_TARGET)
# The message to display # The message to display
@ -455,8 +462,8 @@ endef
define PARSE_TEST define PARSE_TEST
TESTS := TESTS :=
TEST_NAME := $$(firstword $$(subst -, ,$$(RULE))) TEST_NAME := $$(firstword $$(subst :, ,$$(RULE)))
TEST_TARGET := $$(subst $$(TEST_NAME),,$$(subst $$(TEST_NAME)-,,$$(RULE))) TEST_TARGET := $$(subst $$(TEST_NAME),,$$(subst $$(TEST_NAME):,,$$(RULE)))
ifeq ($$(TEST_NAME),all) ifeq ($$(TEST_NAME),all)
MATCHED_TESTS := $$(TEST_LIST) MATCHED_TESTS := $$(TEST_LIST)
else else
@ -504,11 +511,6 @@ if [ $$error_occurred -gt 0 ]; then $(HANDLE_ERROR); fi;
endef 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 # Let's match everything, we handle all the rule parsing ourselves
.PHONY: % .PHONY: %
%: %:
@ -539,22 +541,24 @@ endif
$(foreach TEST,$(TESTS),$(RUN_TEST)) $(foreach TEST,$(TESTS),$(RUN_TEST))
if [ -f $(ERROR_FILE) ]; then printf "$(MSG_ERRORS)" & exit 1; fi; if [ -f $(ERROR_FILE) ]; then printf "$(MSG_ERRORS)" & exit 1; fi;
# These no longer work because of the colon system
# All should compile everything # All should compile everything
.PHONY: all # .PHONY: all
all: all-keyboards test-all # all: all-keyboards test-all
# Define some shortcuts, mostly for compatibility with the old syntax # Define some shortcuts, mostly for compatibility with the old syntax
.PHONY: all-keyboards # .PHONY: all-keyboards
all-keyboards: allkb-allsp-allkm # all-keyboards: all\:all\:all
.PHONY: all-keyboards-defaults # .PHONY: all-keyboards-defaults
all-keyboards-defaults: allkb-allsp-default # all-keyboards-defaults: all\:default
.PHONY: test # .PHONY: test
test: test-all # test: test-all
.PHONY: test-clean # .PHONY: test-clean
test-clean: test-all-clean # test-clean: test-all-clean
lib/%: lib/%:
git submodule sync $? git submodule sync $?

File diff suppressed because one or more lines are too long

@ -6,18 +6,26 @@ endif
include common.mk include common.mk
ifneq ($(SUBPROJECT),) # 5/4/3/2/1
TARGET ?= $(KEYBOARD)_$(SUBPROJECT)_$(KEYMAP) KEYBOARD_FOLDER_PATH_1 := $(KEYBOARD)
KEYBOARD_OUTPUT := $(BUILD_DIR)/obj_$(KEYBOARD)_$(SUBPROJECT) KEYBOARD_FOLDER_PATH_2 := $(patsubst %/,%,$(dir $(KEYBOARD_FOLDER_PATH_1)))
else KEYBOARD_FOLDER_PATH_3 := $(patsubst %/,%,$(dir $(KEYBOARD_FOLDER_PATH_2)))
TARGET ?= $(KEYBOARD)_$(KEYMAP) KEYBOARD_FOLDER_PATH_4 := $(patsubst %/,%,$(dir $(KEYBOARD_FOLDER_PATH_3)))
KEYBOARD_OUTPUT := $(BUILD_DIR)/obj_$(KEYBOARD) KEYBOARD_FOLDER_PATH_5 := $(patsubst %/,%,$(dir $(KEYBOARD_FOLDER_PATH_4)))
endif 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 # Force expansion
TARGET := $(TARGET) TARGET := $(TARGET)
MASTER ?= left MASTER ?= left
ifdef master ifdef master
MASTER = $(master) MASTER = $(master)
@ -31,28 +39,62 @@ $(error MASTER does not have a valid value(left/right))
endif endif
endif endif
KEYBOARD_PATH := keyboards/$(KEYBOARD) KEYBOARD_PATHS :=
KEYBOARD_C := $(KEYBOARD_PATH)/$(KEYBOARD).c
ifneq ("$(wildcard $(KEYBOARD_C))","") KEYBOARD_PATH_1 := keyboards/$(KEYBOARD_FOLDER_PATH_1)
include $(KEYBOARD_PATH)/rules.mk KEYBOARD_PATH_2 := keyboards/$(KEYBOARD_FOLDER_PATH_2)
else KEYBOARD_PATH_3 := keyboards/$(KEYBOARD_FOLDER_PATH_3)
$(error "$(KEYBOARD_C)" does not exist) KEYBOARD_PATH_4 := keyboards/$(KEYBOARD_FOLDER_PATH_4)
endif KEYBOARD_PATH_5 := keyboards/$(KEYBOARD_FOLDER_PATH_5)
OPT_DEFS += -DKEYBOARD_$(KEYBOARD)
ifneq ("$(wildcard $(KEYBOARD_PATH_5)/rules.mk)","")
ifneq ($(SUBPROJECT),) KEYBOARD_PATHS += $(KEYBOARD_PATH_5)
SUBPROJECT_PATH := keyboards/$(KEYBOARD)/$(SUBPROJECT) include $(KEYBOARD_PATH_5)/rules.mk
SUBPROJECT_C := $(SUBPROJECT_PATH)/$(SUBPROJECT).c endif
ifneq ("$(wildcard $(SUBPROJECT_C))","") ifneq ("$(wildcard $(KEYBOARD_PATH_4)/rules.mk)","")
OPT_DEFS += -DSUBPROJECT_$(SUBPROJECT) KEYBOARD_PATHS += $(KEYBOARD_PATH_4)
include $(SUBPROJECT_PATH)/rules.mk include $(KEYBOARD_PATH_4)/rules.mk
else endif
$(error "$(SUBPROJECT_PATH)/$(SUBPROJECT).c" does not exist) ifneq ("$(wildcard $(KEYBOARD_PATH_3)/rules.mk)","")
endif 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
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 endif
# We can assume a ChibiOS target When MCU_FAMILY is defined, since it's not used for LUFA 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 ifdef MCU_FAMILY
PLATFORM=CHIBIOS PLATFORM=CHIBIOS
else else
@ -63,41 +105,77 @@ ifeq ($(PLATFORM),CHIBIOS)
include $(TMK_PATH)/protocol/chibios.mk include $(TMK_PATH)/protocol/chibios.mk
include $(TMK_PATH)/chibios.mk include $(TMK_PATH)/chibios.mk
OPT_OS = chibios OPT_OS = chibios
ifneq ("$(wildcard $(SUBPROJECT_PATH)/bootloader_defs.h)","") ifneq ("$(wildcard $(KEYBOARD_PATH_5)/bootloader_defs.h)","")
OPT_DEFS += -include $(SUBPROJECT_PATH)/bootloader_defs.h OPT_DEFS += -include $(KEYBOARD_PATH_5)/bootloader_defs.h
else ifneq ("$(wildcard $(SUBPROJECT_PATH)/boards/$(BOARD)/bootloader_defs.h)","") else ifneq ("$(wildcard $(KEYBOARD_PATH_5)/boards/$(BOARD)/bootloader_defs.h)","")
OPT_DEFS += -include $(SUBPROJECT_PATH)/boards/$(BOARD)/bootloader_defs.h OPT_DEFS += -include $(KEYBOARD_PATH_5)/boards/$(BOARD)/bootloader_defs.h
else ifneq ("$(wildcard $(KEYBOARD_PATH)/bootloader_defs.h)","") else ifneq ("$(wildcard $(KEYBOARD_PATH_4)/bootloader_defs.h)","")
OPT_DEFS += -include $(KEYBOARD_PATH)/bootloader_defs.h OPT_DEFS += -include $(KEYBOARD_PATH_4)/bootloader_defs.h
else ifneq ("$(wildcard $(KEYBOARD_PATH)/boards/$(BOARD)/bootloader_defs.h)","") else ifneq ("$(wildcard $(KEYBOARD_PATH_4)/boards/$(BOARD)/bootloader_defs.h)","")
OPT_DEFS += -include $(KEYBOARD_PATH)/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
endif endif
CONFIG_H = $(KEYBOARD_PATH)/config.h CONFIG_H :=
ifneq ($(SUBPROJECT),) ifneq ("$(wildcard $(KEYBOARD_PATH_5)/config.h)","")
ifneq ("$(wildcard $(SUBPROJECT_C))","") CONFIG_H += $(KEYBOARD_PATH_5)/config.h
CONFIG_H = $(SUBPROJECT_PATH)/config.h endif
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 endif
# Save the defines and includes here, so we don't include any keymap specific ones # Save the defines and includes here, so we don't include any keymap specific ones
PROJECT_DEFS := $(OPT_DEFS) PROJECT_DEFS := $(OPT_DEFS)
PROJECT_INC := $(VPATH) $(EXTRAINCDIRS) $(SUBPROJECT_PATH) $(KEYBOARD_PATH) PROJECT_INC := $(VPATH) $(EXTRAINCDIRS) $(KEYBOARD_PATHS)
PROJECT_CONFIG := $(CONFIG_H) PROJECT_CONFIG := $(CONFIG_H)
MAIN_KEYMAP_PATH := $(KEYBOARD_PATH)/keymaps/$(KEYMAP) MAIN_KEYMAP_PATH_1 := $(KEYBOARD_PATH_1)/keymaps/$(KEYMAP)
MAIN_KEYMAP_C := $(MAIN_KEYMAP_PATH)/keymap.c MAIN_KEYMAP_PATH_2 := $(KEYBOARD_PATH_2)/keymaps/$(KEYMAP)
SUBPROJ_KEYMAP_PATH := $(SUBPROJECT_PATH)/keymaps/$(KEYMAP) MAIN_KEYMAP_PATH_3 := $(KEYBOARD_PATH_3)/keymaps/$(KEYMAP)
SUBPROJ_KEYMAP_C := $(SUBPROJ_KEYMAP_PATH)/keymap.c MAIN_KEYMAP_PATH_4 := $(KEYBOARD_PATH_4)/keymaps/$(KEYMAP)
ifneq ("$(wildcard $(SUBPROJ_KEYMAP_C))","") MAIN_KEYMAP_PATH_5 := $(KEYBOARD_PATH_5)/keymaps/$(KEYMAP)
-include $(SUBPROJ_KEYMAP_PATH)/rules.mk
KEYMAP_C := $(SUBPROJ_KEYMAP_C) ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_5)/keymap.c)","")
KEYMAP_PATH := $(SUBPROJ_KEYMAP_PATH) -include $(MAIN_KEYMAP_PATH_5)/rules.mk
else ifneq ("$(wildcard $(MAIN_KEYMAP_C))","") KEYMAP_C := $(MAIN_KEYMAP_PATH_5)/keymap.c
-include $(MAIN_KEYMAP_PATH)/rules.mk KEYMAP_PATH := $(MAIN_KEYMAP_PATH_5)
KEYMAP_C := $(MAIN_KEYMAP_C) else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_4)/keymap.c)","")
KEYMAP_PATH := $(MAIN_KEYMAP_PATH) -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),) else ifneq ($(LAYOUTS),)
include build_layout.mk include build_layout.mk
else else
@ -110,29 +188,21 @@ endif
# this an empty or blank macro! # this an empty or blank macro!
KEYMAP_OUTPUT := $(BUILD_DIR)/obj_$(TARGET) KEYMAP_OUTPUT := $(BUILD_DIR)/obj_$(TARGET)
ifneq ("$(wildcard $(KEYMAP_PATH)/config.h)","") ifneq ("$(wildcard $(KEYMAP_PATH)/config.h)","")
CONFIG_H = $(KEYMAP_PATH)/config.h CONFIG_H += $(KEYMAP_PATH)/config.h
endif endif
# # project specific files # # project specific files
SRC += $(KEYBOARD_C) \ SRC += $(KEYBOARD_SRC) \
$(KEYMAP_C) \ $(KEYMAP_C) \
$(QUANTUM_SRC) $(QUANTUM_SRC)
ifneq ($(SUBPROJECT),)
SRC += $(SUBPROJECT_C)
endif
# Optimize size but this may cause error "relocation truncated to fit" # Optimize size but this may cause error "relocation truncated to fit"
#EXTRALDFLAGS = -Wl,--relax #EXTRALDFLAGS = -Wl,--relax
# Search Path # Search Path
VPATH += $(KEYMAP_PATH) VPATH += $(KEYMAP_PATH)
ifneq ($(SUBPROJECT),) VPATH += $(KEYBOARD_PATHS)
VPATH += $(SUBPROJECT_PATH)
endif
VPATH += $(KEYBOARD_PATH)
VPATH += $(COMMON_VPATH) VPATH += $(COMMON_VPATH)
include common_features.mk include common_features.mk
@ -161,9 +231,9 @@ endif
OUTPUTS := $(KEYMAP_OUTPUT) $(KEYBOARD_OUTPUT) OUTPUTS := $(KEYMAP_OUTPUT) $(KEYBOARD_OUTPUT)
$(KEYMAP_OUTPUT)_SRC := $(SRC) $(KEYMAP_OUTPUT)_SRC := $(SRC)
$(KEYMAP_OUTPUT)_DEFS := $(OPT_DEFS) $(GFXDEFS) \ $(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_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)_INC := $(VPATH) $(EXTRAINCDIRS)
$(KEYMAP_OUTPUT)_CONFIG := $(CONFIG_H) $(KEYMAP_OUTPUT)_CONFIG := $(CONFIG_H)
$(KEYBOARD_OUTPUT)_SRC := $(CHIBISRC) $(GFXSRC) $(KEYBOARD_OUTPUT)_SRC := $(CHIBISRC) $(GFXSRC)

@ -171,6 +171,10 @@ ifeq ($(strip $(TERMINAL_ENABLE)), yes)
OPT_DEFS += -DTERMINAL_ENABLE OPT_DEFS += -DTERMINAL_ENABLE
endif endif
ifeq ($(strip $(USB_HID_ENABLE)), yes)
include $(TMK_DIR)/protocol/usb_hid.mk
endif
QUANTUM_SRC:= \ QUANTUM_SRC:= \
$(QUANTUM_DIR)/quantum.c \ $(QUANTUM_DIR)/quantum.c \
$(QUANTUM_DIR)/keymap_common.c \ $(QUANTUM_DIR)/keymap_common.c \

@ -14,11 +14,11 @@ Otherwise, you can either download it directly ([zip](https://github.com/qmk/qmk
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: 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} ## How to customize {#how-to-customize}

@ -4,7 +4,7 @@ We welcome all keyboard projects into QMK, but ask that you try to stick to a co
## Naming your directory/project ## 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` ## `readme.md`

@ -12,29 +12,25 @@ This is a c header file that is one of the first things included, and will persi
// config options // config options
#ifdef SUBPROJECT_<subproject>
#include "<subproject>/config.h"
#endif
#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 ```c
#ifndef <subproject>_CONFIG_H #ifndef <revision>_CONFIG_H
#define <subproject>_CONFIG_H #define <revision>_CONFIG_H
#include "../config.h" #include "config_common.h"
// config options // config options
#endif #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 ## Keymap
@ -42,7 +38,7 @@ For keyboards that have subprojects, this file contains config options that shou
#ifndef CONFIG_USER_H #ifndef CONFIG_USER_H
#define CONFIG_USER_H #define CONFIG_USER_H
#include "../../config.h" #include "config_common.h"
// config options // config options

@ -78,8 +78,8 @@ We have a few different types of changes in QMK, each requiring a different leve
* 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. * 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. * Check for unnecessary whitespace with `git diff --check` before committing.
* Make sure your code change actually compiles. * Make sure your code change actually compiles.
* Keymaps: Make sure that `make keyboard-revision-your_new_keymap` does not return an error * 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 * Keyboards: Make sure that `make keyboard:all` does not return any errors
* Core: Make sure that `make allkb` 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: * 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:
@ -128,7 +128,7 @@ Here are some things to keep in mind when working on your feature or bug fix.
* **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. * **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. * **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. * **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: We also ask that you follow these guidelines:

@ -34,7 +34,7 @@ Hardware Availability: [OLKB.com](https://olkb.com), [Massdrop](https://www.mass
Make example for this keyboard (after setting up your build environment): 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. 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.
``` ```

@ -13,7 +13,7 @@ In short when your controller is ATMega32u4,
or just 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. But to run `make` with root privilege is not good idea. Use former method if possible.

@ -43,15 +43,15 @@ The folder name must be added to the keyboard's `rules.mk`:
LAYOUTS = 60_ansi 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 ## 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 #include QMK_KEYBOARD_H
@ -61,17 +61,16 @@ In your config.h, you can also use this variable to include the keyboard's `conf
If you want to keep some keyboard-specific code, you can use these variables to escape it with an `#ifdef` statement: If you want to keep some keyboard-specific code, you can use these variables to escape it with an `#ifdef` statement:
* `KEYBOARD_<keyboard>` * `KEYBOARD_<folder1>_<folder2>`
* `SUBPROJECT_<subproject>`
For example: For example:
```c ```c
#ifdef KEYBOARD_planck #ifdef KEYBOARD_planck
#ifdef SUBPROJECT_rev4 #ifdef KEYBOARD_planck_rev4
planck_rev4_function(); planck_rev4_function();
#endif #endif
#endif #endif
``` ```
Note that the names are lowercase and match the folder/file names for the keyboard/subproject exactly. Note that the names are lowercase and match the folder/file names for the keyboard/revision exactly.

@ -121,10 +121,10 @@ If this is a bit complex for you, Docker might be the turn-key solution you need
# modify the keymap and keyboard assigment to compile what you want # modify the keymap and keyboard assigment to compile what you want
# defaults are ergodox/default # 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 # 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
``` ```

@ -1,22 +1,21 @@
# More detailed make instruction # More detailed make instruction
The full syntax of the `make` command is `<keyboard>-<subproject>-<keymap>-<target>`, where: The full syntax of the `make` command is `<keyboard_folder>:<keymap>:<target>`, where:
* `<keyboard>` is the name of the keyboard, for example `planck` * `<keyboard_folder>` is the path of the keyboard, for example `planck`
* Use `allkb` to compile all keyboards * Use `all` 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`. * Specify the path to compile a revision, for example `planck/rev4` or `planck/rev3`
* If the keyboard doesn't have any subprojects, it can be left out * If the keyboard doesn't have any folders, it can be left out
* To compile the default subproject, you can leave it out, or specify `defaultsp` * To compile the default folder, you can leave it out
* Use `allsp` to compile all subprojects
* `<keymap>` is the name of the keymap, for example `algernon` * `<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. * `<target>` will be explained in more detail below.
The `<target>` means the following The `<target>` means the following
* If no target is given, then it's the same as `all` below * 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. * `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. * `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 You can also add extra options at the end of the make command line, after the target
@ -30,9 +29,9 @@ The make command itself also has some additional options, type `make --help` for
Here are some examples commands 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 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 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 planck/rev4:default:dfu COLOR=false` builds and uploads the keymap without color output.
## `rules.mk` options ## `rules.mk` options

@ -273,7 +273,7 @@ Notice how the `k11` and `KC_NO` switched places to represent the wiring, and th
### keymaps/<variant>/default.c ### 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. 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.

@ -36,7 +36,7 @@ Note how there's several different tests, each mocking out a separate part. Also
## Running the tests ## 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 ## Debugging the tests

@ -12,6 +12,6 @@ Hardware Availability: [BishopKeyboards.com](http://bishopkeyboards.com/)
Make example for this keyboard (after setting up your build environment): 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. 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.

@ -9,6 +9,6 @@ Hardware Availability: https://geekhack.org/index.php?topic=69666.0
Make example for this keyboard (after setting up your build environment): 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. 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,35 +1,14 @@
AMJ40 keyboard firmware AMJ40
====================== ===
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.
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 Make example for this keyboard (after setting up your build environment):
The original firmware that was used to port to qmk can be found [here](https://github.com/AMJKeyboard/AMJ40).
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.

@ -9,6 +9,6 @@ Hardware Availability: https://geekhack.org/index.php?topic=77636.0
Make example for this keyboard (after setting up your build environment): 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. 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.

@ -9,6 +9,6 @@ Hardware Availability: https://geekhack.org/index.php?topic=83546.0
Make example for this keyboard (after setting up your build environment): 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. 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.

@ -15,37 +15,19 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
#ifndef CONFIG_H #ifndef CONFIG_USER_H
#define CONFIG_H #define CONFIG_USER_H
#include "config_common.h" #include "config_common.h"
/* USB Device descriptor parameter */ /* USB Device descriptor parameter */
#define VENDOR_ID 0xFEED #undef PRODUCT_ID
#define PRODUCT_ID 0x0419 #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 */ /* key matrix size */
#define MATRIX_ROWS 5 #define MATRIX_ROWS 5
#define MATRIX_COLS 15 #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_PIN B7
#define BACKLIGHT_BREATHING #define BACKLIGHT_BREATHING

@ -11,6 +11,6 @@ Hardware Availability: no longer available
Make example for this keyboard (after setting up your build environment): 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. 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.

@ -7,7 +7,7 @@ How to build and flash
---------------------- ----------------------
to build; to build;
make atreus-dvorak_42_key make atreus:dvorak_42_key
to flash: to flash:
avrdude -p atmega32u4 -c avr109 -U flash:w:atreus_dvorak_42_key.hex -P COM7 avrdude -p atmega32u4 -c avr109 -U flash:w:atreus_dvorak_42_key.hex -P COM7

@ -15,7 +15,7 @@
static bool mouse_lock = false; static bool mouse_lock = false;
// building instructions: // building instructions:
// make atreus-dvorak_42_key // make atreus:dvorak_42_key
// flashing instructions: // flashing instructions:
// avrdude -p atmega32u4 -c avr109 -U flash:w:atreus_dvorak_42_key.hex -P COM7 // avrdude -p atmega32u4 -c avr109 -U flash:w:atreus_dvorak_42_key.hex -P COM7

@ -11,6 +11,6 @@ Hardware Availability: https://atreus.technomancy.us
Make example for this keyboard (after setting up your build environment): 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. 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.

@ -11,6 +11,6 @@ Hardware Availability: http://shop.profetkeyboards.com/product/atreus62-keyboard
Make example for this keyboard (after setting up your build environment): 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. 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,29 +1,15 @@
# 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.

@ -9,6 +9,6 @@ Hardware Availability: http://www.bantamkeyboards.com
Make example for this keyboard (after setting up your build environment): 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. 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,5 +1,5 @@
# List of all the board related files. # 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 # Required include directories
BOARDINC = $(KEYBOARD_PATH)/boards/GENERIC_STM32_F103 BOARDINC = $(BOARD_PATH)/boards/GENERIC_STM32_F103

@ -6,3 +6,5 @@ COMMAND_ENABLE = yes # Commands for debug and configuration
SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover NKRO_ENABLE = yes # USB Nkey Rollover
CUSTOM_MATRIX = yes # Custom matrix file CUSTOM_MATRIX = yes # Custom matrix file
DEFAULT_FOLDER = chibios_test/stm32_f072_onekey

@ -1 +0,0 @@
SUBPROJECT_DEFAULT = stm32_f072_onekey

@ -1,3 +0,0 @@
ifndef MAKEFILE_INCLUDED
include ../../Makefile
endif

@ -10,6 +10,6 @@ A basic 17 key numpad PCB.
Make example for this keyboard (after setting up your build environment): 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. 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,5 +1,5 @@
# List of all the board related files. # 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 # Required include directories
BOARDINC = $(KEYBOARD_PATH)/boards/GENERIC_STM32_F303XC BOARDINC = $(BOARD_PATH)/boards/GENERIC_STM32_F303XC

@ -9,6 +9,6 @@ A fully customizable 60% keyboard.
Make example for this keyboard (after setting up your build environment): 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. 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,5 +0,0 @@
SUBPROJECT_DEFAULT = rev2
ifndef MAKEFILE_INCLUDED
include ../../Makefile
endif

@ -1,16 +1,16 @@
#ifndef CLUEBOARD_H #ifndef CLUEBOARD_H
#define CLUEBOARD_H #define CLUEBOARD_H
#ifdef SUBPROJECT_rev1 #include "quantum.h"
#ifdef KEYBOARD_clueboard_66_rev1
#include "rev1.h" #include "rev1.h"
#endif #endif
#ifdef SUBPROJECT_rev2 #ifdef KEYBOARD_clueboard_66_rev2
#include "rev2.h" #include "rev2.h"
#endif #endif
#ifdef SUBPROJECT_rev3 #ifdef KEYBOARD_clueboard_66_rev3
#include "rev3.h" #include "rev3.h"
#endif #endif
#include "quantum.h"
#endif #endif

@ -60,15 +60,4 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//#define NO_ACTION_MACRO //#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION //#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 #endif

@ -13,6 +13,6 @@ A fully customizable 66% keyboard.
Make example for this keyboard (after setting up your build environment): 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. 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,3 +0,0 @@
ifndef MAKEFILE_INCLUDED
include ../../../Makefile
endif

@ -1,7 +1,7 @@
#ifndef REV2_CONFIG_H #ifndef REV2_CONFIG_H
#define REV2_CONFIG_H #define REV2_CONFIG_H
#include "../config.h" #include "config_common.h"
#define PRODUCT_ID 0x2301 #define PRODUCT_ID 0x2301
#define DEVICE_VER 0x0003 #define DEVICE_VER 0x0003

@ -1,3 +0,0 @@
ifndef MAKEFILE_INCLUDED
include ../../../Makefile
endif

@ -1,7 +1,7 @@
#ifndef REV2_CONFIG_H #ifndef REV2_CONFIG_H
#define REV2_CONFIG_H #define REV2_CONFIG_H
#include "../config.h" #include "config_common.h"
#define PRODUCT_ID 0x2320 #define PRODUCT_ID 0x2320
#define DEVICE_VER 0x0001 #define DEVICE_VER 0x0001

@ -1,7 +1,7 @@
#ifndef REV2_H #ifndef REV2_H
#define REV2_H #define REV2_H
#include "../clueboard_66.h" #include "clueboard_66.h"
/* Clueboard matrix layout /* Clueboard matrix layout
* ,-----------------------------------------------------------. ,---. * ,-----------------------------------------------------------. ,---.

@ -1,7 +1,7 @@
#ifndef REV3_CONFIG_H #ifndef REV3_CONFIG_H
#define REV3_CONFIG_H #define REV3_CONFIG_H
#include "../config.h" #include "config_common.h"
#define PRODUCT_ID 0x2370 #define PRODUCT_ID 0x2370
#define DEVICE_VER 0x0001 #define DEVICE_VER 0x0001

@ -1,7 +1,7 @@
#ifndef REV3_H #ifndef REV3_H
#define REV3_H #define REV3_H
#include "../clueboard_66.h" #include "clueboard_66.h"
/* Clueboard matrix layout /* Clueboard matrix layout
* ,-----------------------------------------------------------. ,---. * ,-----------------------------------------------------------. ,---.

@ -19,3 +19,5 @@ RGBLIGHT_ENABLE = yes # Enable keyboard underlight functionality
MIDI_ENABLE = no # MIDI controls MIDI_ENABLE = no # MIDI controls
UNICODE_ENABLE = no # Unicode UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
DEFAULT_FOLDER = clueboard_66/rev2

@ -1 +0,0 @@
SUBPROJECT_DEFAULT = rev2

@ -8,6 +8,6 @@ A simple QMK dev kit.
Make example for this keyboard (after setting up your build environment): 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. 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 +0,0 @@
#include "converter.h"

@ -1 +0,0 @@
#include "quantum.h"

@ -9,7 +9,7 @@ Hardware Availability: [GH thread](https://geekhack.org/index.php?topic=72052.0)
Make example for this keyboard (after setting up your build environment): 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. 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,5 +1,5 @@
# MCU name # MCU name
MCU ?= atmega32u4 MCU = atmega32u4
# Processor frequency. # Processor frequency.
@ -13,14 +13,14 @@ MCU ?= atmega32u4
# does not *change* the processor frequency - it should merely be updated to # 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 # reflect the processor speed set externally so that the code can use accurate
# software delays. # software delays.
F_CPU ?= 8000000 F_CPU = 8000000
# #
# LUFA specific # LUFA specific
# #
# Target architecture (see library "Board Types" documentation). # Target architecture (see library "Board Types" documentation).
ARCH ?= AVR8 ARCH = AVR8
# Input clock frequency. # Input clock frequency.
# This will define a symbol, F_USB, in all source code files equal to the # This will define a symbol, F_USB, in all source code files equal to the
@ -33,7 +33,7 @@ ARCH ?= AVR8
# #
# If no clock division is performed on the input clock inside the AVR (via 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. # 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 # Interrupt driven control endpoint task
OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
@ -51,16 +51,15 @@ OPT_DEFS += -DBOOTLOADER_SIZE=4096
# Build Options # Build Options
# comment out to disable the options. # comment out to disable the options.
# #
# BOOTMAGIC_ENABLE ?= yes # Virtual DIP switch configuration(+1000) # BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
# MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700) # MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450) EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
# CONSOLE_ENABLE ?= yes # Console for debug(+400) # CONSOLE_ENABLE = yes # Console for debug(+400)
# COMMAND_ENABLE ?= yes # Commands for debug and configuration # COMMAND_ENABLE = yes # Commands for debug and configuration
# SLEEP_LED_ENABLE ?= yes # Breathing sleep LED during USB suspend # SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
# NKRO_ENABLE ?= yes # USB Nkey Rollover - not yet supported in LUFA # NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA
# BACKLIGHT_ENABLE ?= yes # BACKLIGHT_ENABLE = yes
USB_HID_ENABLE = yes
CUSTOM_MATRIX = yes CUSTOM_MATRIX = yes
SRC = custom_matrix.cpp SRC = custom_matrix.cpp
include $(TMK_DIR)/protocol/usb_hid.mk

@ -20,10 +20,4 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h" #include "config_common.h"
#ifdef SUBPROJECT_protosplit
#include "protosplit/config.h"
#endif
#ifdef SUBPROJECT_v2
#include "v2/config.h"
#endif
#endif #endif

@ -1,12 +1,7 @@
#ifndef DELTASPLIT75_H #ifndef DELTASPLIT75_H
#define DELTASPLIT75_H #define DELTASPLIT75_H
#ifdef SUBPROJECT_v2 #include "v2.h"
#include "v2.h"
#endif
#ifdef SUBPROJECT_protosplit
#include "protosplit.h"
#endif
#include "quantum.h" #include "quantum.h"

@ -9,7 +9,7 @@ Hardware Availability: Group Buy
Make example for this keyboard (after setting up your build environment): 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. 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.

@ -55,21 +55,23 @@ OPT_DEFS += -DBOOTLOADER_SIZE=4096
# change to "no" to disable the options, or define them in the Makefile in # change to "no" to disable the options, or define them in the Makefile in
# the appropriate keymap folder that will get included automatically # the appropriate keymap folder that will get included automatically
# #
BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000) BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700) MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450) EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
CONSOLE_ENABLE ?= no # Console for debug(+400) CONSOLE_ENABLE = no # Console for debug(+400)
COMMAND_ENABLE ?= yes # Commands for debug and configuration 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 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 BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
MIDI_ENABLE ?= no # MIDI controls MIDI_ENABLE = no # MIDI controls
AUDIO_ENABLE ?= no # Audio output on port C6 AUDIO_ENABLE = no # Audio output on port C6
UNICODE_ENABLE ?= no # Unicode UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID 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. RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
SUBPROJECT_rev1 ?= yes SUBPROJECT_rev1 = yes
USE_I2C ?= yes USE_I2C = yes
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE # 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 CUSTOM_MATRIX = yes
DEFAULT_FOLDER = deltasplit75/v2

@ -1 +0,0 @@
SUBPROJECT_DEFAULT = v2

@ -15,8 +15,8 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
#ifndef CONFIG_H #ifndef CONFIG_V2_H
#define CONFIG_H #define CONFIG_V2_H
#include "config_common.h" #include "config_common.h"

@ -1,5 +1 @@
BACKLIGHT_ENABLE = no BACKLIGHT_ENABLE = no
ifndef QUANTUM_DIR
include ../../../Makefile
endif

@ -10,7 +10,7 @@ Another 60% keyboard with different HHKB layout made and sold by dbroqua. [More
Make example for this keyboard (after setting up your build environment): 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. 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.

@ -10,6 +10,6 @@ Hardware Availability: [kbdfans](https://kbdfans.myshopify.com/collections/pcb/p
Make example for this keyboard (after setting up your build environment): 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. 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,10 +1,10 @@
#ifndef ECO_H #ifndef ECO_H
#define ECO_H #define ECO_H
#ifdef SUBPROJECT_rev1 #ifdef KEYBOARD_eco_rev1
#include "rev1.h" #include "rev1.h"
#endif #endif
#ifdef SUBPROJECT_rev2 #ifdef KEYBOARD_eco_rev2
#include "rev2.h" #include "rev2.h"
#endif #endif

@ -10,6 +10,6 @@ Hardware Supported: ECO PCB rev1 Pro Micro
Make example for this keyboard (after setting up your build environment): 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. 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.

@ -66,3 +66,5 @@ API_SYSEX_ENABLE = no
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE # 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
DEFAULT_FOLDER = eco/rev2

@ -1 +0,0 @@
SUBPROJECT_DEFAULT = rev2

@ -18,7 +18,7 @@ The ErgoDone is a modified version of the ErgoDox, made by K.T.E.C., with pre-so
In the root directory of the repository, build the firmware with a command like: 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). For more information on the layout option and other ones, see the [`make` guide](https://docs.qmk.fm/getting_started_make_guide.html).

@ -98,7 +98,7 @@ enum {
// on each tap, light up one led, from right to left // 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) { void dance_flsh_each(qk_tap_dance_state_t *state, void *user_data) {
if (!skip_leds) { if (!skip_leds) {

@ -5,7 +5,7 @@ This is a dvorak based layout for the Ergodox EZ. Its basic key layout is simila
How to build How to build
------------ ------------
make ergodox_ez-dvorak_42_key-teensy make ergodox_ez:dvorak_42_key:teensy
Layers Layers
------ ------

@ -5,7 +5,7 @@
// to build this keymap // to build this keymap
// make ergodox_ez-dvorak_42_key-teensy // make ergodox_ez:dvorak_42_key:teensy
static bool mouse_lock = false; static bool mouse_lock = false;

@ -17,4 +17,4 @@ makes sense.
Follow the main Infinity ErgoDox guide but use the following layout: Follow the main Infinity ErgoDox guide but use the following layout:
$ sudo make ergodox_infinity-rask $ sudo make ergodox_infinity:rask

@ -5,15 +5,15 @@ for the left and right halves seperately. To flash them:
- Make sure you are in the top-level qmk_firmware directory - 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. - Plug in the left hand keyboard only.
- Press the program button (back of keyboard, above thumb pad). - 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. - Plug in the right hand keyboard only.

@ -8,6 +8,6 @@ Hardware Availability: [Unikeyboard](https://unikeyboard.io/product/felix/)
Make example for this keyboard (after setting up your build environment): 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. 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.

@ -9,6 +9,6 @@ Hardware Availability: [1up Keyboards](https://1upkeyboards.com/)
Make example for this keyboard (after setting up your build environment): 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. 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.

@ -25,19 +25,19 @@ Make example for this keyboard (after setting up your build environment):
104 key default layout: 104 key default layout:
``` ```
make frosty_flake-default make frosty_flake:default
``` ```
To directly flash the frosty_flake after compiling use To directly flash the frosty_flake after compiling use
``` ```
make frosty_flake-default-dfu make frosty_flake:default:dfu
``` ```
87 key tkl layout: 87 key tkl layout:
``` ```
make frosty_flake-tkl-dfu make frosty_flake:tkl:dfu
``` ```
See [build environment See [build environment

@ -15,8 +15,8 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
#ifndef CONFIG_H #ifndef CONFIG_USER_H
#define CONFIG_H #define CONFIG_USER_H
#include "config_common.h" #include "config_common.h"

@ -15,8 +15,8 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
#ifndef CONFIG_H #ifndef CONFIG_USER_H
#define CONFIG_H #define CONFIG_USER_H
#include "config_common.h" #include "config_common.h"

@ -11,7 +11,7 @@ Hardware Availability: http://blog.komar.be/projects/gh60-programmable-keyboard/
Make example for this keyboard (after setting up your build environment): 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. 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.

@ -11,7 +11,7 @@ Hardware Availability: [Gherkin project on 40% Keyboards](http://www.40percent.c
Make example for this keyboard (after setting up your build environment): 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. 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 First pass at adding support for the gherkin keyboard. Compiles but completely

@ -9,7 +9,7 @@ Hardware Availability: http://www.gonskeyboardworks.com/pcbs-and-controllers/60-
Make example for this keyboard (after setting up your build environment): 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. 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,66 +0,0 @@
-------- 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 [OK]
Compiling: ../../keyboards/planck/keymaps/experimental/keymap.c [WARNINGS]
|
| ../../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 [OK]
Compiling: ../../quantum/keymap.c [OK]
Compiling: ../../quantum/keycode_config.c [OK]
Compiling: ../../quantum/matrix.c [OK]
Compiling: ../../quantum/audio/audio.c [OK]
Compiling: ../../quantum/audio/voices.c [OK]
Compiling: ../../quantum/audio/luts.c [OK]
Compiling: ../../tmk_core/protocol/lufa/lufa.c [OK]
Compiling: ../../tmk_core/protocol/lufa/descriptor.c [OK]
Compiling: ../../tmk_core/protocol/lufa/LUFA-git/LUFA/Drivers/USB/Class/Common/HIDParser.c [OK]
Compiling: ../../tmk_core/protocol/lufa/LUFA-git/LUFA/Drivers/USB/Core/AVR8/Device_AVR8.c [OK]
Compiling: ../../tmk_core/protocol/lufa/LUFA-git/LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.c [OK]
Compiling: ../../tmk_core/protocol/lufa/LUFA-git/LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.c [OK]
Compiling: ../../tmk_core/protocol/lufa/LUFA-git/LUFA/Drivers/USB/Core/AVR8/Host_AVR8.c [OK]
Compiling: ../../tmk_core/protocol/lufa/LUFA-git/LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.c [OK]
Compiling: ../../tmk_core/protocol/lufa/LUFA-git/LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.c [OK]
Compiling: ../../tmk_core/protocol/lufa/LUFA-git/LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.c [OK]
Compiling: ../../tmk_core/protocol/lufa/LUFA-git/LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.c [OK]
Compiling: ../../tmk_core/protocol/lufa/LUFA-git/LUFA/Drivers/USB/Core/ConfigDescriptors.c [OK]
Compiling: ../../tmk_core/protocol/lufa/LUFA-git/LUFA/Drivers/USB/Core/DeviceStandardReq.c [OK]
Compiling: ../../tmk_core/protocol/lufa/LUFA-git/LUFA/Drivers/USB/Core/Events.c [OK]
Compiling: ../../tmk_core/protocol/lufa/LUFA-git/LUFA/Drivers/USB/Core/HostStandardReq.c [OK]
Compiling: ../../tmk_core/protocol/lufa/LUFA-git/LUFA/Drivers/USB/Core/USBTask.c [OK]
Compiling: ../../tmk_core/common/host.c [OK]
Compiling: ../../tmk_core/common/keyboard.c [OK]
Compiling: ../../tmk_core/common/action.c [OK]
Compiling: ../../tmk_core/common/action_tapping.c [OK]
Compiling: ../../tmk_core/common/action_macro.c [OK]
Compiling: ../../tmk_core/common/action_layer.c [OK]
Compiling: ../../tmk_core/common/action_util.c [OK]
Compiling: ../../tmk_core/common/print.c [OK]
Compiling: ../../tmk_core/common/debug.c [OK]
Compiling: ../../tmk_core/common/util.c [OK]
Compiling: ../../tmk_core/common/avr/suspend.c [OK]
Assembling: ../../tmk_core/common/avr/xprintf.S [OK]
Compiling: ../../tmk_core/common/avr/timer.c [OK]
Compiling: ../../tmk_core/common/avr/bootloader.c [OK]
Compiling: ../../tmk_core/common/magic.c [OK]
Compiling: ../../tmk_core/common/avr/eeconfig.c [OK]
Compiling: ../../tmk_core/common/mousekey.c [OK]
Compiling: ../../tmk_core/common/command.c [OK]
Compiling: ../../tmk_core/common/backlight.c [OK]
Linking: .build/planck_experimental.elf [ERRORS]
|
| .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
|

@ -70,3 +70,4 @@ SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend
SRC = i2c.c \ SRC = i2c.c \
ssd1306.c ssd1306.c
DEFAULT_FOLDER = hadron/ver2

@ -1 +0,0 @@
SUBPROJECT_DEFAULT = ver2

@ -1 +0,0 @@
#include "handwired.h"

@ -1 +0,0 @@
#include "quantum.h"

@ -9,7 +9,7 @@ For the full Quantum feature list, see [the parent readme](/).
## Building ## 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 ## Flashing
Something along this line: Something along this line:

@ -19,6 +19,6 @@ The following pins are used:
## Compiling and loading the firmware ## 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. Flash the firmware using the teensy loader or avrdude.

@ -80,10 +80,3 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6 AUDIO_ENABLE = no # Audio output on port C6
RGBLIGHT_ENABLE = yes RGBLIGHT_ENABLE = yes
ifndef QUANTUM_DIR
include ../../../Makefile
endif
upload: build
$(ATREUS_UPLOAD_COMMAND)

@ -29,7 +29,7 @@ From the hhkb directory run the following:
```bash ```bash
make clean make clean
make hhkb-blakedietz-dfu make hhkb:blakedietz:dfu
``` ```
Press the button on the alternate controller to put the board into boot mode. Press the button on the alternate controller to put the board into boot mode.
@ -37,7 +37,7 @@ Press the button on the alternate controller to put the board into boot mode.
You'll see an output similar to the following: You'll see an output similar to the following:
```bash ```bash
make hhkb-blakedietz-dfu make hhkb:blakedietz:dfu
Making hhkb with keymap blakedietz and target dfu Making hhkb with keymap blakedietz and target dfu

@ -9,6 +9,6 @@ Hardware Availability: https://geekhack.org/index.php?topic=12047.0
Make example for this keyboard (after setting up your build environment): 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. 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.

@ -9,6 +9,6 @@ Hardware Availability: https://input.club/devices/infinity-keyboard/
Make example for this keyboard (after setting up your build environment): 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. 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.

@ -13,10 +13,10 @@ Hardware Availability: [keyclack.com](https://keyclack.com/)
Make example for this keyboard (after setting up your build environment): Make example for this keyboard (after setting up your build environment):
make jc65-default make jc65:default
Or to make and flash: 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. 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.

@ -9,6 +9,6 @@ Hardware Availability: [1up](https://1upkeyboards.com/jd40-mkii-1up-keyboards-lo
Make example for this keyboard (after setting up your build environment): 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. 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.

@ -67,10 +67,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
/* disable debug print */ /* disable debug print */
#define NO_DEBUG // #define NO_DEBUG
/* disable print */ /* disable print */
#define NO_PRINT // #define NO_PRINT
/* disable action features */ /* disable action features */
//#define NO_ACTION_LAYER //#define NO_ACTION_LAYER

@ -15,8 +15,8 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
#ifndef CONFIG_H #ifndef CONFIG_USER_H
#define CONFIG_H #define CONFIG_USER_H
#include "config_common.h" #include "config_common.h"

@ -9,6 +9,6 @@ Hardware Availability: https://mechanicalkeyboards.com/shop/index.php?l=product_
Make example for this keyboard (after setting up your build environment): 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. 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.

@ -10,7 +10,7 @@ Hardware Availability: [AliExpress](https://www.aliexpress.com/store/product/jj4
Make example for this keyboard (after setting up your build environment): 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. 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,5 +1,5 @@
# List of all the board related files. # 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 # Required include directories
BOARDINC = $(KEYBOARD_PATH)/boards/JM60_BOARD BOARDINC = $(BOARD_PATH)/boards/JM60_BOARD

@ -9,7 +9,7 @@ Hardware Availability: https://kbdfans.myshopify.com/ (is no longer sold)
Make example for this keyboard (after setting up your build environment): 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. 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.
@ -17,7 +17,7 @@ See [build environment setup](https://docs.qmk.fm/build_environment_setup.html)
1) from the `qmk_firmware` directory run: 1) from the `qmk_firmware` directory run:
``` ```
$ make jm60-default-bin $ make jm60:default:bin
``` ```
2) rename 'jm60_default.bin' to 'jm60_default.firmware' 2) rename 'jm60_default.bin' to 'jm60_default.firmware'

@ -7,6 +7,6 @@ Hardware Availability: https://kbdfans.myshopify.com/products/kbd75-keyboard-set
Make example for this keyboard (after setting up your build environment): 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. 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,10 +1,10 @@
#ifndef KINESIS_H #ifndef KINESIS_H
#define KINESIS_H #define KINESIS_H
#ifdef SUBPROJECT_alvicstep #ifdef KEYBOARD_kinesis_alvicstep
#include "alvicstep.h" #include "alvicstep.h"
#endif #endif
#ifdef SUBPROJECT_stapelberg #ifdef KEYBOARD_kinesis_stapelberg
#include "stapelberg.h" #include "stapelberg.h"
#endif #endif

@ -71,3 +71,5 @@ UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID 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 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 CUSTOM_MATRIX=yes # need to do our own thing with the matrix
DEFAULT_FOLDER = kinesis/alvicstep

@ -1,9 +1,4 @@
ifndef QUANTUM_DIR
include ../../../Makefile
endif
# just silently stop, since we need to upload with teensy uploader
upload: build

@ -1 +0,0 @@
SUBPROJECT_DEFAULT = alvicstep

@ -11,6 +11,6 @@ Hardware Availability: https://geekhack.org/index.php?topic=46700.0
Make example for this keyboard (after setting up your build environment): 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. 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.

@ -3,7 +3,11 @@
#include "quantum.h" #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 // Used to create a keymap using only KC_ prefixed keys
#define KC_KEYMAP( \ #define KC_KEYMAP( \

@ -19,7 +19,7 @@ There is additional information there about flashing and adding RGB underglow.
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: 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: You will see a lot of output and if everything worked correctly you will see the built hex file:
@ -32,7 +32,7 @@ If you would like to use one of the alternative keymaps, or create your own, cop
``` ```
$ make lets_split-rev2-YOUR_KEYMAP_NAME $ make lets_split/rev2:YOUR_KEYMAP_NAME
``` ```
If everything worked correctly you will see a file: If everything worked correctly you will see a file:
@ -115,8 +115,8 @@ not be very difficult to adapt it to support more if required.
Flashing Flashing
------- -------
From the top level `qmk_firmware` directory run `make KEYBOARD-SUBPROJECT-KEYMAP-avrdude` for automatic serial port resolution and flashing. 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` Example: `make lets_split/rev2:default:avrdude`
Choosing which board to plug the USB cable into (choosing Master) Choosing which board to plug the USB cable into (choosing Master)

@ -76,3 +76,5 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
CUSTOM_MATRIX = yes CUSTOM_MATRIX = yes
LAYOUTS = ortho_4x12 LAYOUTS = ortho_4x12
DEFAULT_FOLDER = lets_split/rev2

@ -1 +0,0 @@
SUBPROJECT_DEFAULT = rev2

@ -1,7 +1,7 @@
#ifndef CONFIG_USER_H #ifndef CONFIG_USER_H
#define CONFIG_USER_H #define CONFIG_USER_H
#include "../../config.h" #include "config_common.h"
/* Use I2C or Serial, not both */ /* Use I2C or Serial, not both */

@ -21,7 +21,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#ifndef CONFIG_USER_H #ifndef CONFIG_USER_H
#define CONFIG_USER_H #define CONFIG_USER_H
#include "../../config.h" #include "config_common.h"
/* Use I2C or Serial, not both */ /* Use I2C or Serial, not both */

@ -3,7 +3,7 @@
#include "quantum.h" #include "quantum.h"
#include QMK_SUBPROJECT_H #include "rev1.h"
// Used to create a keymap using only KC_ prefixed keys // Used to create a keymap using only KC_ prefixed keys
#define KC_KEYMAP( \ #define KC_KEYMAP( \

@ -9,11 +9,11 @@ Hardware Availability: [Keebio](https://keeb.io)
Make example for this keyboard (after setting up your build environment): Make example for this keyboard (after setting up your build environment):
make levinson-rev1-default make levinson/rev1:default
Example of flashing this keyboard: 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. 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.

@ -76,3 +76,5 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
CUSTOM_MATRIX = yes CUSTOM_MATRIX = yes
LAYOUTS = ortho_4x12 LAYOUTS = ortho_4x12
DEFAULT_FOLDER = levinson/rev1

@ -1 +0,0 @@
SUBPROJECT_DEFAULT = rev1

@ -9,7 +9,7 @@ Hardware Availability: https://mechkeys.ca/collections/keyboards/products/mechmi
Make example for this keyboard (after setting up your build environment): 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. 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.
@ -40,7 +40,7 @@ Then, with the keyboard plugged in, simply run this command from the
`qmk_firmware` directory: `qmk_firmware` directory:
``` ```
$ make mechmini-program $ make mechmini:program
``` ```
If you prefer, you can just build it and flash the firmware directly with If you prefer, you can just build it and flash the firmware directly with

@ -9,10 +9,10 @@ Hardware Availability: [PCB files](https://github.com/di0ib/tmk_keyboard/tree/ma
Make example for this keyboard (after setting up your build environment): Make example for this keyboard (after setting up your build environment):
make mf68-default make mf68:default
Example of flashing this keyboard: 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. 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,7 +1,7 @@
#ifndef MINIDOX_H #ifndef MINIDOX_H
#define MINIDOX_H #define MINIDOX_H
#ifdef SUBPROJECT_rev1 #ifdef KEYBOARD_minidox_rev1
#include "rev1.h" #include "rev1.h"
#endif #endif

@ -10,7 +10,7 @@ Hardware Supported: MiniDox PCB rev1 Pro Micro
Make example for this keyboard (after setting up your build environment): 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. 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.
@ -22,8 +22,8 @@ Flashing
------- -------
Note: Most of this is copied from the Let's Split readme, because it is awesome 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. From the root directory run `make PROJECT:KEYMAP:avrdude` for automatic serial port resolution and flashing.
Example: `make rev1-default-avrdude` Example: `make minidox/rev1:default:avrdude`
Choosing which board to plug the USB cable into (choosing Master) Choosing which board to plug the USB cable into (choosing Master)
-------- --------

@ -1,5 +1 @@
BACKLIGHT_ENABLE = no BACKLIGHT_ENABLE = no
ifndef QUANTUM_DIR
include ../../../Makefile
endif

@ -72,3 +72,5 @@ USE_I2C ?= no
SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend
CUSTOM_MATRIX = yes CUSTOM_MATRIX = yes
DEFAULT_FOLDER = minidox/rev1

@ -1 +0,0 @@
SUBPROJECT_DEFAULT = rev1

@ -9,7 +9,7 @@ Hardware Availability: https://www.reddit.com/r/MechanicalKeyboards/comments/665
Make example for this keyboard (after setting up your build environment): 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. 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.

@ -20,6 +20,4 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h" #include "config_common.h"
#include QMK_SUBPROJECT_CONFIG_H
#endif // CONFIG_H #endif // CONFIG_H

@ -18,7 +18,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#ifndef CONFIG_USER_H #ifndef CONFIG_USER_H
#define CONFIG_USER_H #define CONFIG_USER_H
#include "../../config.h" #include "config_common.h"
/* Use I2C or Serial, not both */ /* Use I2C or Serial, not both */

@ -18,7 +18,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#ifndef CONFIG_USER_H #ifndef CONFIG_USER_H
#define CONFIG_USER_H #define CONFIG_USER_H
#include "../../config.h" #include "config_common.h"
/* Use I2C or Serial, not both */ /* Use I2C or Serial, not both */

@ -1,7 +1,9 @@
#ifndef NYQUIST_H #ifndef NYQUIST_H
#define NYQUIST_H #define NYQUIST_H
#include QMK_SUBPROJECT_H #ifdef KEYBOARD_nyquist_rev1
#include "rev1.h"
#endif
#include "quantum.h" #include "quantum.h"

@ -9,11 +9,11 @@ Hardware Availability: [Keebio](https://keeb.io)
Make example for this keyboard (after setting up your build environment): Make example for this keyboard (after setting up your build environment):
make nyquist-rev1-default make nyquist/rev1:default
Example of flashing this keyboard: 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. 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,4 +1,4 @@
#include QMK_SUBPROJECT_H #include "rev1.h"
#ifdef AUDIO_ENABLE #ifdef AUDIO_ENABLE
float tone_startup[][2] = SONG(STARTUP_SOUND); float tone_startup[][2] = SONG(STARTUP_SOUND);

@ -1,7 +1,7 @@
#ifndef REV1_H #ifndef REV1_H
#define REV1_H #define REV1_H
#include QMK_KEYBOARD_H #include "nyquist.h"
//void promicro_bootloader_jmp(bool program); //void promicro_bootloader_jmp(bool program);
#include "quantum.h" #include "quantum.h"

@ -75,3 +75,5 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
CUSTOM_MATRIX = yes CUSTOM_MATRIX = yes
LAYOUTS = ortho_5x12 LAYOUTS = ortho_5x12
DEFAULT_FOLDER = nyquist/rev1

@ -1 +0,0 @@
SUBPROJECT_DEFAULT = rev1

@ -9,11 +9,11 @@ Hardware Availability: C-Keys soldering workshops, /u/MonkeyPlusPlus
Make example for this keyboard (after setting up your build environment): Make example for this keyboard (after setting up your build environment):
make obelus-default make obelus:default
Or to make and flash: 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. 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.

@ -18,4 +18,4 @@ Default keymap included, matching configuration on sale page.
## Build ## Build
To build the default keymap, simply run `make org60-default`. To build the default keymap, simply run `make org60:default`.

@ -24,8 +24,4 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h" #include "config_common.h"
#ifdef SUBPROJECT_rev1
#include "rev1/config.h"
#endif
#endif #endif

@ -22,7 +22,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#ifndef CONFIG_USER_H #ifndef CONFIG_USER_H
#define CONFIG_USER_H #define CONFIG_USER_H
#include "../../config.h" #include "config_common.h"
/* Use I2C or Serial, not both */ /* Use I2C or Serial, not both */

@ -1,3 +0,0 @@
ifndef QUANTUM_DIR
include ../../../../Makefile
endif

@ -22,7 +22,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#ifndef CONFIG_USER_H #ifndef CONFIG_USER_H
#define CONFIG_USER_H #define CONFIG_USER_H
#include "../../config.h" #include "config_common.h"
/* Use I2C or Serial, not both */ /* Use I2C or Serial, not both */

@ -1,6 +1,2 @@
CONSOLE_ENABLE = yes CONSOLE_ENABLE = yes
TAP_DANCE_ENABLE = yes TAP_DANCE_ENABLE = yes
ifndef QUANTUM_DIR
include ../../../../Makefile
endif

@ -1,7 +1,7 @@
#ifndef ORTHODOX_H #ifndef ORTHODOX_H
#define ORTHODOX_H #define ORTHODOX_H
#ifdef SUBPROJECT_rev1 #ifdef KEYBOARD_orthodox_rev1
#include "rev1.h" #include "rev1.h"
#endif #endif

@ -34,10 +34,10 @@ For further reading on build- and flashing-procedures for split ortholinear skel
## First Time Setup ## 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: 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:
@ -50,7 +50,7 @@ If you would like to use one of the alternative keymaps, or create your own, cop
``` ```
$ make rev1-YOUR_KEYMAP_NAME $ make orthodox/rev1:YOUR_KEYMAP_NAME
``` ```
If everything worked correctly you will see a file: If everything worked correctly you will see a file:
@ -96,8 +96,8 @@ the two halves, i.e. if your split keyboard has 3 rows in each half, then
Flashing Flashing
------- -------
From the `orthodox` directory run `make SUBPROJECT-KEYMAP-avrdude` for automatic serial port resolution and flashing. From the root directory run `make PROJECT:KEYMAP:avrdude` for automatic serial port resolution and flashing.
Example: `make rev2-default-avrdude` Example: `make orthodox/rev2:default:avrdude`
Choosing which board to plug the USB cable into (choosing Master) Choosing which board to plug the USB cable into (choosing Master)

@ -22,7 +22,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#ifndef REV1_CONFIG_H #ifndef REV1_CONFIG_H
#define REV1_CONFIG_H #define REV1_CONFIG_H
#include "../config.h" #include "config_common.h"
/* USB Device descriptor parameter */ /* USB Device descriptor parameter */
#define VENDOR_ID 0xFEED #define VENDOR_ID 0xFEED

@ -22,7 +22,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#ifndef REV1_H #ifndef REV1_H
#define REV1_H #define REV1_H
#include "../orthodox.h" #include "orthodox.h"
//void promicro_bootloader_jmp(bool program); //void promicro_bootloader_jmp(bool program);
#include "quantum.h" #include "quantum.h"

@ -1,5 +1 @@
BACKLIGHT_ENABLE = no BACKLIGHT_ENABLE = no
ifndef QUANTUM_DIR
include ../../../Makefile
endif

@ -73,3 +73,5 @@ USE_I2C = yes
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
CUSTOM_MATRIX = yes CUSTOM_MATRIX = yes
DEFAULT_FOLDER = orthodox/rev1

@ -7,6 +7,6 @@ Hardware Availability: https://1upkeyboards.com/filco-pegasus-hoof-controller.ht
Make example for this keyboard (after setting up your build environment): 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. 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.

@ -11,6 +11,6 @@ Hardware Availability: https://mechanicalkeyboards.com/shop/index.php?l=product_
Make example for this keyboard (after setting up your build environment): 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. 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.

@ -81,6 +81,4 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//#define NO_ACTION_MACRO //#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION //#define NO_ACTION_FUNCTION
#include QMK_SUBPROJECT_CONFIG_H
#endif #endif

@ -1,7 +1,3 @@
# 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 # Build Options
# change to "no" to disable the options, or define them in the Makefile in # change to "no" to disable the options, or define them in the Makefile in
# the appropriate keymap folder that will get included automatically # the appropriate keymap folder that will get included automatically
@ -21,7 +17,3 @@ RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE # 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
ifndef QUANTUM_DIR
include ../../../../Makefile
endif

@ -1,7 +1,3 @@
# 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 # Build Options
# change to "no" to disable the options, or define them in the Makefile in # change to "no" to disable the options, or define them in the Makefile in
# the appropriate keymap folder that will get included automatically # the appropriate keymap folder that will get included automatically
@ -21,7 +17,3 @@ RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE # 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
ifndef QUANTUM_DIR
include ../../../../Makefile
endif

@ -1,7 +1,3 @@
# 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 # Build Options
# change to "no" to disable the options, or define them in the Makefile in # change to "no" to disable the options, or define them in the Makefile in
# the appropriate keymap folder that will get included automatically # the appropriate keymap folder that will get included automatically
@ -21,7 +17,3 @@ RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE # 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
ifndef QUANTUM_DIR
include ../../../../Makefile
endif

@ -1,8 +1,3 @@
# 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 # Build Options
# change to "no" to disable the options, or define them in the Makefile in # change to "no" to disable the options, or define them in the Makefile in
# the appropriate keymap folder that will get included automatically # the appropriate keymap folder that will get included automatically
@ -22,7 +17,3 @@ RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE # 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
ifndef QUANTUM_DIR
include ../../../../Makefile
endif

@ -1,8 +1,3 @@
# 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 # Build Options
# change to "no" to disable the options, or define them in the Makefile in # change to "no" to disable the options, or define them in the Makefile in
# the appropriate keymap folder that will get included automatically # the appropriate keymap folder that will get included automatically
@ -22,7 +17,3 @@ RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE # 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
ifndef QUANTUM_DIR
include ../../../../Makefile
endif

@ -1,8 +1,3 @@
# 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 # Build Options
# change to "no" to disable the options, or define them in the Makefile in # change to "no" to disable the options, or define them in the Makefile in
# the appropriate keymap folder that will get included automatically # the appropriate keymap folder that will get included automatically
@ -22,7 +17,3 @@ RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE # 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
ifndef QUANTUM_DIR
include ../../../../Makefile
endif

@ -1,8 +1,3 @@
# 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 # Build Options
# change to "no" to disable the options, or define them in the Makefile in # change to "no" to disable the options, or define them in the Makefile in
# the appropriate keymap folder that will get included automatically # the appropriate keymap folder that will get included automatically
@ -22,7 +17,3 @@ RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE # 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
ifndef QUANTUM_DIR
include ../../../../Makefile
endif

@ -1,8 +1,3 @@
# 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 # Build Options
# change to "no" to disable the options, or define them in the Makefile in # change to "no" to disable the options, or define them in the Makefile in
# the appropriate keymap folder that will get included automatically # the appropriate keymap folder that will get included automatically
@ -22,7 +17,3 @@ RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE # 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
ifndef QUANTUM_DIR
include ../../../../Makefile
endif

@ -28,11 +28,11 @@
Make example for this keyboard (after setting up your build environment): Make example for this keyboard (after setting up your build environment):
make planck-rev3-phreed make planck/rev3:phreed
To flash the keyboard 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 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 instructions](https://docs.qmk.fm/make_instructions.html) for more information.

@ -1,8 +1,3 @@
# 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 # Build Options
# change to "no" to disable the options, or define them in the Makefile in # change to "no" to disable the options, or define them in the Makefile in
# the appropriate keymap folder that will get included automatically # the appropriate keymap folder that will get included automatically
@ -22,7 +17,3 @@ RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE # 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
ifndef QUANTUM_DIR
include ../../../../Makefile
endif

@ -15,19 +15,11 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
#ifndef CONFIG_H #ifndef CONFIG_USER_H
#define CONFIG_H #define CONFIG_USER_H
#include "config_common.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 */ /* key matrix size */
#define MATRIX_ROWS 4 #define MATRIX_ROWS 4
#define MATRIX_COLS 12 #define MATRIX_COLS 12

@ -1,7 +1,3 @@
# 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 # Build Options
# change to "no" to disable the options, or define them in the Makefile in # change to "no" to disable the options, or define them in the Makefile in
# the appropriate keymap folder that will get included automatically # the appropriate keymap folder that will get included automatically
@ -21,7 +17,3 @@ RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE # 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
ifndef QUANTUM_DIR
include ../../../../Makefile
endif

@ -1,8 +1,3 @@
# 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 # Build Options
# change to "no" to disable the options, or define them in the Makefile in # change to "no" to disable the options, or define them in the Makefile in
# the appropriate keymap folder that will get included automatically # the appropriate keymap folder that will get included automatically
@ -23,7 +18,3 @@ API_SYSEX_ENABLE = no # Disable extra stuff for ergodoxen
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE # 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
ifndef QUANTUM_DIR
include ../../../../Makefile
endif

@ -1,8 +1,3 @@
# 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 # Build Options
# change to "no" to disable the options, or define them in the Makefile in # change to "no" to disable the options, or define them in the Makefile in
# the appropriate keymap folder that will get included automatically # the appropriate keymap folder that will get included automatically
@ -22,7 +17,3 @@ RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE # 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
ifndef QUANTUM_DIR
include ../../../../Makefile
endif

@ -1,8 +1,3 @@
# 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 # Build Options
# change to "no" to disable the options, or define them in the Makefile in # change to "no" to disable the options, or define them in the Makefile in
# the appropriate keymap folder that will get included automatically # the appropriate keymap folder that will get included automatically
@ -23,7 +18,3 @@ PRINTING_ENABLE = yes
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE # 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
ifndef QUANTUM_DIR
include ../../../../Makefile
endif

@ -1,4 +1,4 @@
#include QMK_KEYBOARD_H #include "planck.h"
#ifdef ONEHAND_ENABLE #ifdef ONEHAND_ENABLE
__attribute__ ((weak)) __attribute__ ((weak))

@ -1,8 +1,6 @@
#ifndef PLANCK_H #ifndef PLANCK_H
#define PLANCK_H #define PLANCK_H
#include QMK_SUBPROJECT_H
#include "quantum.h" #include "quantum.h"
#define PLANCK_MIT( \ #define PLANCK_MIT( \
@ -34,4 +32,11 @@
#define KEYMAP PLANCK_GRID #define KEYMAP PLANCK_GRID
#define LAYOUT_ortho_4x12 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 #endif

@ -11,6 +11,6 @@ Hardware Availability: [OLKB.com](https://olkb.com), [Massdrop](https://www.mass
Make example for this keyboard (after setting up your build environment): 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. 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,7 +1,7 @@
#ifndef REV3_CONFIG_H #ifndef REV3_CONFIG_H
#define REV3_CONFIG_H #define REV3_CONFIG_H
#include QMK_KEYBOARD_CONFIG_H #include "config_common.h"
#define DEVICE_VER 0x0003 #define DEVICE_VER 0x0003

@ -1,6 +1,6 @@
#ifndef REV3_H #ifndef REV3_H
#define REV3_H #define REV3_H
#include QMK_KEYBOARD_H #include "planck.h"
#endif #endif

@ -1,7 +1,7 @@
#ifndef REV4_CONFIG_H #ifndef REV4_CONFIG_H
#define REV4_CONFIG_H #define REV4_CONFIG_H
#include QMK_KEYBOARD_CONFIG_H #include "config_common.h"
#define DEVICE_VER 0x0004 #define DEVICE_VER 0x0004

@ -1,6 +1,6 @@
#ifndef REV4_H #ifndef REV4_H
#define REV4_H #define REV4_H
#include QMK_KEYBOARD_H #include "planck.h"
#endif #endif

@ -68,3 +68,5 @@ API_SYSEX_ENABLE = no
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
LAYOUTS = ortho_4x12 LAYOUTS = ortho_4x12
DEFAULT_FOLDER = planck/rev4

@ -1 +0,0 @@
SUBPROJECT_DEFAULT = rev4

@ -1,4 +1,4 @@
#include QMK_KEYBOARD_H #include "preonic.h"
#ifdef ONEHAND_ENABLE #ifdef ONEHAND_ENABLE
__attribute__ ((weak)) __attribute__ ((weak))

@ -33,6 +33,7 @@
{ k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b } \ { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b } \
} }
#define KEYMAP PREONIC_MIT
#define LAYOUT_ortho_5x12 PREONIC_GRID #define LAYOUT_ortho_5x12 PREONIC_GRID
#endif #endif

@ -11,6 +11,6 @@ Hardware Availability: [OLKB.com](https://olkb.com/preonic/), [Massdrop](https:/
Make example for this keyboard (after setting up your build environment): 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. 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.

@ -37,7 +37,7 @@ Then, with the keyboard plugged in, simply run this command from the
`qmk_firmware` directory: `qmk_firmware` directory:
``` ```
$ make ps2avrGB-program $ make ps2avrGB:program
``` ```
If you prefer, you can just build it and flash the firmware directly with If you prefer, you can just build it and flash the firmware directly with

@ -9,6 +9,6 @@ Hardware Availability: https://thevankeyboards.com/products/roadkit-r2?variant=3
Make example for this keyboard (after setting up your build environment): 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. 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,7 +1,7 @@
#ifndef DEFAULT_CONFIG_H #ifndef DEFAULT_CONFIG_H
#define DEFAULT_CONFIG_H #define DEFAULT_CONFIG_H
#include "../config.h" #include "config_common.h"
#define PRODUCT S60-X #define PRODUCT S60-X
#define DESCRIPTION q.m.k. keyboard firmware for S60-X #define DESCRIPTION q.m.k. keyboard firmware for S60-X

@ -15,30 +15,14 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
#ifndef CONFIG_H #ifndef CONFIG_USER_H
#define CONFIG_H #define CONFIG_USER_H
#include "config_common.h" #include "config_common.h"
/* USB Device descriptor parameter */ /* USB Device descriptor parameter */
#define VENDOR_ID 0xFEED #undef DEVICE_VER
#define PRODUCT_ID 0x6060
#define DEVICE_VER 0x0003 #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 */ /* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW #define DIODE_DIRECTION COL2ROW
@ -65,10 +49,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Underlight configuration /* Underlight configuration
*/ */
#undef RGBLIGHT_HUE_STEP
#define RGB_DI_PIN F6 #undef RGBLIGHT_SAT_STEP
#define RGBLIGHT_TIMER #undef RGBLIGHT_VAL_STEP
#define RGBLED_NUM 10 // Number of LEDs
#define RGBLIGHT_HUE_STEP 10 #define RGBLIGHT_HUE_STEP 10
#define RGBLIGHT_SAT_STEP 17 #define RGBLIGHT_SAT_STEP 17
#define RGBLIGHT_VAL_STEP 17 #define RGBLIGHT_VAL_STEP 17

@ -12,7 +12,3 @@ 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. 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 SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
TAP_DANCE_ENABLE = no # Enable tap dancing keys TAP_DANCE_ENABLE = no # Enable tap dancing keys
ifndef QUANTUM_DIR
include ../../../../Makefile
endif

@ -8,6 +8,6 @@ Hardware Availability: https://www.massdrop.com/buy/sentraq-60-diy-keyboard-kit?
Make example for this keyboard (after setting up your build environment): 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. 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,7 +1,7 @@
#ifndef RBG_CONFIG_H #ifndef RBG_CONFIG_H
#define RBG_CONFIG_H #define RBG_CONFIG_H
#include "../config.h" #include "config_common.h"
#define PRODUCT S60-X-RGB #define PRODUCT S60-X-RGB
#define DESCRIPTION q.m.k. keyboard firmware for S60-X RGB #define DESCRIPTION q.m.k. keyboard firmware for S60-X RGB

@ -63,3 +63,5 @@ MIDI_ENABLE = no # MIDI controls
UNICODE_ENABLE = no # Unicode UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6 AUDIO_ENABLE = no # Audio output on port C6
DEFAULT_FOLDER = s60_x/default

@ -1,10 +1,10 @@
#ifndef S60X_H #ifndef S60X_H
#define S60X_H #define S60X_H
#ifdef SUBPROJECT_default #ifdef KEYBOARD_s60_x_default
#include "default.h" #include "default.h"
#endif #endif
#ifdef SUBPROJECT_rgb #ifdef KEYBOARD_s60_x_rgb
#include "rgb.h" #include "rgb.h"
#endif #endif

@ -1 +0,0 @@
SUBPROJECT_DEFAULT = default

@ -8,6 +8,6 @@ Hardware Availability: https://sentraq.com/collections/group-buys/products/gb-s6
Make example for this keyboard (after setting up your build environment): 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. 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.

@ -10,6 +10,6 @@ Hardware Availability: https://1upkeyboards.com/gh60-satan-pcb.html
Make example for this keyboard (after setting up your build environment): 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. 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.

@ -7,7 +7,7 @@ Hardware Availability: http://techkeys.us/collections/accessories/products/sixke
Make example for this keyboard (after setting up your build environment): 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. 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.

@ -9,6 +9,6 @@ Hardware Availability: [1up Keyboards](https://1upkeyboards.com/)
Make example for this keyboard (after setting up your build environment): 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. 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.

@ -9,7 +9,7 @@ Hardware Availability: [kbdfans](https://kbdfans.myshopify.com/products/tada68-m
Make example for this keyboard (after setting up your build environment): 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. 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.
@ -19,7 +19,7 @@ See [build environment setup](https://docs.qmk.fm/build_environment_setup.html)
1) from the `qmk_firmware\` directory run: 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. 2) Connect your keyboard to Windows computer, hit the reset button on the TADA, the lights will start flashing.

@ -11,6 +11,6 @@ Hardware Availability: https://geekhack.org/index.php?topic=46700.0
Make example for this keyboard (after setting up your build environment): 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. 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.

@ -12,7 +12,7 @@ Hardware Availability: [Gherkin project on 40% Keyboards](http://www.40percent.c
Make example for this keyboard (after setting up your build environment): 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. 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.

@ -9,6 +9,6 @@ Hardware Availability: https://thevankeyboards.com/products/minivan-r4-keyboard-
Make example for this keyboard (after setting up your build environment): 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. 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.

@ -7,4 +7,4 @@
Plug the keyboard in and press the reset button, then in the main Plug the keyboard in and press the reset button, then in the main
`qmk_firmware` directory run `qmk_firmware` directory run
$ sudo make uk78-rask-dfu $ sudo make uk78:rask:dfu

@ -11,6 +11,6 @@ A fully customizable 60%+numpad keyboard.
Make example for this keyboard (after setting up your build environment): 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. 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.

@ -23,7 +23,7 @@ Hardware Availability: [mechanicalkeyboards.com](https://mechanicalkeyboards.com
Make example for this keyboard (after setting up your build environment): 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. 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.

@ -9,6 +9,6 @@ Hardware Availability: https://geekhack.org/index.php?topic=83692.msg2227856#msg
Make example for this keyboard (after setting up your build environment): 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. 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.

@ -20,8 +20,4 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h" #include "config_common.h"
#ifdef SUBPROJECT_rev1
#include "rev1/config.h"
#endif
#endif // CONFIG_H #endif // CONFIG_H

@ -9,12 +9,12 @@ Hardware Availability: [Keebio](https://keeb.io)
Make example for this keyboard (after setting up your build environment): Make example for this keyboard (after setting up your build environment):
make viterbi-rev1-default make viterbi/rev1:default
Example of flashing this keyboard: 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. 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.

@ -18,7 +18,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#ifndef REV1_CONFIG_H #ifndef REV1_CONFIG_H
#define REV1_CONFIG_H #define REV1_CONFIG_H
#include "../config.h" #include "config_common.h"
/* USB Device descriptor parameter */ /* USB Device descriptor parameter */
#define VENDOR_ID 0xCEEB #define VENDOR_ID 0xCEEB

@ -1,5 +1 @@
BACKLIGHT_ENABLE = no BACKLIGHT_ENABLE = no
ifndef QUANTUM_DIR
include ../../../Makefile
endif

@ -73,3 +73,5 @@ USE_I2C = yes
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
CUSTOM_MATRIX = yes CUSTOM_MATRIX = yes
DEFAULT_FOLDER = viterbi/rev1

@ -1,7 +1,7 @@
#ifndef VITERBI_H #ifndef VITERBI_H
#define VITERBI_H #define VITERBI_H
#ifdef SUBPROJECT_rev1 #ifdef KEYBOARD_viterbi_rev1
#include "rev1.h" #include "rev1.h"
#endif #endif

@ -9,6 +9,6 @@ Hardware Availability: https://input.club/whitefox/
Make example for this keyboard (after setting up your build environment): 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. 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.

@ -6,4 +6,4 @@
Default Keymap for XD60 as indicated on the original sale page. Default Keymap for XD60 as indicated on the original sale page.
## Build ## Build
To build the default keymap, simply run `make xd60-default`. To build the default keymap, simply run `make xd60:default`.

@ -15,4 +15,4 @@ This layout is WIP for me as I use my shiny new keyboard more and more. I will
* I use emacs, which could account for some of the oddities in my layout and macros * I use emacs, which could account for some of the oddities in my layout and macros
## Build ## Build
To build the default keymap, simply run `make xd60-kmontag42`. To build the default keymap, simply run `make xd60:kmontag42`.

@ -4,7 +4,7 @@ Customized xd60 keymap with inspirations from HHKB and the layout I used on my V
## Programming Instructions ## 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 erase`
* `sudo dfu-programmer atmega32u4 flash .build/xd60-yuuki.hex` * `sudo dfu-programmer atmega32u4 flash .build/xd60-yuuki.hex`

@ -11,6 +11,6 @@ Hardware Availability: https://www.massdrop.com/buy/xd60-xd64-custom-mechanical-
Make example for this keyboard (after setting up your build environment): 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. 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.

@ -17,13 +17,13 @@ it using DFU.
### Default ### 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 Note that DFU is likely to require root permissions, so installing the
firmware likely requires a command line like: firmware likely requires a command line like:
``` ```
$ sudo make xd75-default-dfu $ sudo make xd75:default:dfu
``` ```
### Other Keymaps ### Other Keymaps
@ -42,6 +42,6 @@ To build the firmware binary hex file for a specific keymap, and
install it, using DFU, just do `make` with a keymap like this: install it, using DFU, just do `make` with a keymap like this:
``` ```
$ make xd75-[default|<name>] $ make xd75:[default|<name>]
``` ```

@ -46,7 +46,7 @@ $ pip install pyusb
Build the keyboard with 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. If you make your own layout, change the `default` word to whatever your layout is.

@ -93,18 +93,26 @@ GFXDEFS +=-DGDISP_DRIVER_LIST="$(GDISP_DRIVER_LIST)"
ifneq ("$(wildcard $(KEYMAP_PATH)/visualizer.c)","") ifneq ("$(wildcard $(KEYMAP_PATH)/visualizer.c)","")
SRC += $(KEYMAP_PATH)/visualizer.c SRC += $(KEYMAP_PATH)/visualizer.c
else else
ifeq ("$(wildcard $(SUBPROJECT_PATH)/keymaps/$(KEYMAP)/visualizer.c)","") VISUALIZER_1 := $(KEYBOARD_PATH_1)/visualizer.c
ifeq ("$(wildcard $(SUBPROJECT_PATH)/visualizer.c)","") VISUALIZER_2 := $(KEYBOARD_PATH_2)/visualizer.c
ifeq ("$(wildcard $(KEYBOARD_PATH)/visualizer.c)","") VISUALIZER_3 := $(KEYBOARD_PATH_3)/visualizer.c
$(error "visualizer.c" not found") VISUALIZER_4 := $(KEYBOARD_PATH_4)/visualizer.c
else VISUALIZER_5 := $(KEYBOARD_PATH_5)/visualizer.c
SRC += keyboards/$(KEYBOARD)/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 endif
else ifneq ("$(wildcard $(VISUALIZER_2))","")
SRC += keyboards/$(KEYBOARD)/$(SUBPROJECT)/visualizer.c SRC += $(VISUALIZER_2)
endif endif
else ifneq ("$(wildcard $(VISUALIZER_1))","")
SRC += keyboards/$(KEYBOARD)/$(SUBPROJECT)/keymaps/$(KEYMAP)/visualizer.c SRC += $(VISUALIZER_1)
endif endif
endif endif

@ -46,13 +46,32 @@ endif
include $(PLATFORM_MK) 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))","") ifeq ("$(wildcard $(BOARD_MK))","")
BOARD_MK = $(CHIBIOS)/os/hal/boards/$(BOARD)/board.mk BOARD_MK = $(CHIBIOS)/os/hal/boards/$(BOARD)/board.mk
ifeq ("$(wildcard $(BOARD_MK))","") ifeq ("$(wildcard $(BOARD_MK))","")
BOARD_MK = $(CHIBIOS_CONTRIB)/os/hal/boards/$(BOARD)/board.mk BOARD_MK = $(CHIBIOS_CONTRIB)/os/hal/boards/$(BOARD)/board.mk
endif endif
endif endif
include $(BOARD_MK) include $(BOARD_MK)
include $(CHIBIOS)/os/hal/osal/rt/osal.mk include $(CHIBIOS)/os/hal/osal/rt/osal.mk
# RTOS files (optional). # RTOS files (optional).
@ -72,10 +91,18 @@ RULESPATH = $(CHIBIOS)/os/common/startup/ARMCMx/compilers/GCC
endif endif
# Define linker script file here # Define linker script file here
ifneq ("$(wildcard $(KEYBOARD_PATH)/ld/$(MCU_LDSCRIPT).ld)","") ifneq ("$(wildcard $(KEYBOARD_PATH_5)/ld/$(MCU_LDSCRIPT).ld)","")
LDSCRIPT = $(KEYBOARD_PATH)/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 else
LDSCRIPT = $(STARTUPLD)/$(MCU_LDSCRIPT).ld LDSCRIPT = $(STARTUPLD)/$(MCU_LDSCRIPT).ld
endif endif
CHIBISRC = $(STARTUPSRC) \ CHIBISRC = $(STARTUPSRC) \

@ -290,7 +290,7 @@ BEGIN = gccversion sizebefore
define GEN_OBJRULE define GEN_OBJRULE
$1_INCFLAGS := $$(patsubst %,-I%,$$($1_INC)) $1_INCFLAGS := $$(patsubst %,-I%,$$($1_INC))
ifdef $1_CONFIG ifdef $1_CONFIG
$1_CONFIG_FLAGS += -include $$($1_CONFIG) $1_CONFIG_FLAGS += $$(patsubst %,-include %,$$($1_CONFIG))
endif endif
$1_CFLAGS = $$(ALL_CFLAGS) $$($1_DEFS) $$($1_INCFLAGS) $$($1_CONFIG_FLAGS) $1_CFLAGS = $$(ALL_CFLAGS) $$($1_DEFS) $$($1_INCFLAGS) $$($1_CONFIG_FLAGS)
$1_CPPFLAGS= $$(ALL_CPPFLAGS) $$($1_DEFS) $$($1_INCFLAGS) $$($1_CONFIG_FLAGS) $1_CPPFLAGS= $$(ALL_CPPFLAGS) $$($1_DEFS) $$($1_INCFLAGS) $$($1_CONFIG_FLAGS)

@ -9,21 +9,24 @@ if [[ "$TRAVIS_COMMIT_MESSAGE" != *"[skip build]"* ]] ; then
BRANCH=$(git rev-parse --abbrev-ref HEAD) BRANCH=$(git rev-parse --abbrev-ref HEAD)
if [ $NEFM -gt 0 -o "$BRANCH" = "master" ]; then if [ $NEFM -gt 0 -o "$BRANCH" = "master" ]; then
echo "Making all keymaps for all keyboards" echo "Making all keymaps for all keyboards"
make all-keyboards AUTOGEN="true" make all:all AUTOGEN="true"
: $((exit_code = $exit_code + $?)) : $((exit_code = $exit_code + $?))
else 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 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) KEYMAP_ONLY=$(git diff --name-only -n 1 ${TRAVIS_COMMIT_RANGE} | grep -Ev '^(keyboards/'${KB}'/keymaps/)' | wc -l)
if [[ $KEYMAP_ONLY -gt 0 ]]; then if [[ $KEYMAP_ONLY -gt 0 ]]; then
echo "Making all keymaps for $KB" echo "Making all keymaps for $KB"
make ${KB}-allsp-allkm AUTOGEN=true make ${KB}:all AUTOGEN=true
: $((exit_code = $exit_code + $?)) : $((exit_code = $exit_code + $?))
else else
MKM=$(git diff --name-only -n 1 ${TRAVIS_COMMIT_RANGE} | grep -oP '(?<=keyboards/'${KB}'/keymaps/)([a-zA-Z0-9_]+)(?=\/)' | sort -u) 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 for KM in $MKM ; do
echo "Making $KM for $KB" echo "Making $KM for $KB"
make ${KB}-allsp-${KM} AUTOGEN=true make ${KB}:${KM} AUTOGEN=true
: $((exit_code = $exit_code + $?)) : $((exit_code = $exit_code + $?))
done done
fi fi

Loading…
Cancel
Save