|
|
|
@ -68,37 +68,8 @@ PATH_ELEMENTS := $(subst /, ,$(STARTING_DIR)) |
|
|
|
|
# Initialize the path elements list for further processing
|
|
|
|
|
$(eval $(call NEXT_PATH_ELEMENT)) |
|
|
|
|
|
|
|
|
|
# This function sets the KEYBOARD; KEYMAP and SUBPROJECT to the correct
|
|
|
|
|
# variables depending on which directory you stand in.
|
|
|
|
|
# It's really a very simple if else chain, if you squint enough,
|
|
|
|
|
# but the makefile syntax makes it very verbose.
|
|
|
|
|
# If we are in a subfolder of keyboards
|
|
|
|
|
#
|
|
|
|
|
# *** No longer needed **
|
|
|
|
|
#
|
|
|
|
|
# ifeq ($(CURRENT_PATH_ELEMENT),keyboards)
|
|
|
|
|
# $(eval $(call NEXT_PATH_ELEMENT))
|
|
|
|
|
# KEYBOARD := $(CURRENT_PATH_ELEMENT)
|
|
|
|
|
# $(eval $(call NEXT_PATH_ELEMENT))
|
|
|
|
|
# # If we are in a subfolder of keymaps, or in other words in a keymap
|
|
|
|
|
# # folder
|
|
|
|
|
# ifeq ($(CURRENT_PATH_ELEMENT),keymaps)
|
|
|
|
|
# $(eval $(call NEXT_PATH_ELEMENT))
|
|
|
|
|
# KEYMAP := $(CURRENT_PATH_ELEMENT)
|
|
|
|
|
# # else if we are not in the keyboard folder itself
|
|
|
|
|
# else ifneq ($(CURRENT_PATH_ELEMENT),)
|
|
|
|
|
# # the we can assume it's a subproject, as no other folders
|
|
|
|
|
# # should have make files in them
|
|
|
|
|
# SUBPROJECT := $(CURRENT_PATH_ELEMENT)
|
|
|
|
|
# $(eval $(call NEXT_PATH_ELEMENT))
|
|
|
|
|
# # if we are inside a keymap folder of a subproject
|
|
|
|
|
# ifeq ($(CURRENT_PATH_ELEMENT),keymaps)
|
|
|
|
|
# $(eval $(call NEXT_PATH_ELEMENT))
|
|
|
|
|
# KEYMAP := $(CURRENT_PATH_ELEMENT)
|
|
|
|
|
# endif
|
|
|
|
|
# endif
|
|
|
|
|
# endif
|
|
|
|
|
|
|
|
|
|
# Phony targets to enable a few simple make commands outside the main processing below.
|
|
|
|
|
.PHONY: list-keyboards |
|
|
|
|
list-keyboards: |
|
|
|
|
util/list_keyboards.sh | sort -u | tr '\n' ' '
|
|
|
|
@ -131,7 +102,6 @@ endif |
|
|
|
|
# Uncomment these for debugging
|
|
|
|
|
# $(info Keyboard: $(KEYBOARD))
|
|
|
|
|
# $(info Keymap: $(KEYMAP))
|
|
|
|
|
# $(info Subproject: $(SUBPROJECT))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Set the default goal depending on where we are running make from
|
|
|
|
@ -189,7 +159,6 @@ endef |
|
|
|
|
# A recursive helper function for finding the longest match
|
|
|
|
|
# $1 The list to be checked
|
|
|
|
|
# It works by always removing the currently matched item from the list
|
|
|
|
|
# and call itself recursively, until a match is found
|
|
|
|
|
define TRY_TO_MATCH_RULE_FROM_LIST_HELPER2 |
|
|
|
|
# Stop the recursion when the list is empty
|
|
|
|
|
ifneq ($1,)
|
|
|
|
@ -386,23 +355,6 @@ define PARSE_ALL_KEYBOARDS |
|
|
|
|
$$(eval $$(call PARSE_ALL_IN_LIST,PARSE_KEYBOARD,$(shell util/list_keyboards.sh noci | sort -u)))
|
|
|
|
|
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,
|
|
|
|
|
# then use defaultsp instead
|
|
|
|
|
# define PARSE_ALL_SUBPROJECTS
|
|
|
|
|
# ifeq ($$(SUBPROJECTS),)
|
|
|
|
|
# $$(eval $$(call PARSE_SUBPROJECT,defaultsp))
|
|
|
|
|
# else
|
|
|
|
|
# $$(eval $$(call PARSE_ALL_IN_LIST,PARSE_SUBPROJECT,$$(SUBPROJECTS)))
|
|
|
|
|
# endif
|
|
|
|
|
# endef
|
|
|
|
|
|
|
|
|
|
# Prints a list of all known keymaps for the given keyboard
|
|
|
|
|
define LIST_ALL_KEYMAPS |
|
|
|
|
COMMAND_true_LIST_KEYMAPS := \
|
|
|
|
@ -544,12 +496,12 @@ if [ $$error_occurred -gt 0 ]; then $(HANDLE_ERROR); fi; |
|
|
|
|
|
|
|
|
|
endef |
|
|
|
|
|
|
|
|
|
# Let's match everything, we handle all the rule parsing ourselves
|
|
|
|
|
# Catch everything and parse the command line ourselves.
|
|
|
|
|
.PHONY: % |
|
|
|
|
%: |
|
|
|
|
# Check if we have the CMP tool installed
|
|
|
|
|
cmp $(ROOT_DIR)/Makefile $(ROOT_DIR)/Makefile >/dev/null 2>&1; if [ $$? -gt 0 ]; then printf "$(MSG_NO_CMP)"; exit 1; fi;
|
|
|
|
|
# Ensure that bin/qmk works. This will be a failing check after the next develop merge on 2020 Aug 29.
|
|
|
|
|
# Ensure that bin/qmk works. This will be a failing check after the next develop merge
|
|
|
|
|
if ! bin/qmk hello 1> /dev/null 2>&1; then printf "$(MSG_PYTHON_MISSING)"; fi
|
|
|
|
|
# Check if the submodules are dirty, and display a warning if they are
|
|
|
|
|
ifndef SKIP_GIT |
|
|
|
@ -580,25 +532,6 @@ endif |
|
|
|
|
$(foreach TEST,$(sort $(TESTS)),$(RUN_TEST))
|
|
|
|
|
if [ -f $(ERROR_FILE) ]; then printf "$(MSG_ERRORS)" & exit 1; fi;
|
|
|
|
|
|
|
|
|
|
# These no longer work because of the colon system
|
|
|
|
|
|
|
|
|
|
# All should compile everything
|
|
|
|
|
# .PHONY: all
|
|
|
|
|
# all: all-keyboards test-all
|
|
|
|
|
|
|
|
|
|
# Define some shortcuts, mostly for compatibility with the old syntax
|
|
|
|
|
# .PHONY: all-keyboards
|
|
|
|
|
# all-keyboards: all\:all\:all
|
|
|
|
|
|
|
|
|
|
# .PHONY: all-keyboards-defaults
|
|
|
|
|
# all-keyboards-defaults: all\:default
|
|
|
|
|
|
|
|
|
|
# .PHONY: test
|
|
|
|
|
# test: test-all
|
|
|
|
|
|
|
|
|
|
# .PHONY: test-clean
|
|
|
|
|
# test-clean: test-all-clean
|
|
|
|
|
|
|
|
|
|
lib/%: |
|
|
|
|
git submodule sync $?
|
|
|
|
|
git submodule update --init $?
|
|
|
|
|