diff options
Diffstat (limited to 'Makefile')
-rw-r--r-- | Makefile | 67 |
1 files changed, 19 insertions, 48 deletions
@@ -19,8 +19,13 @@ endif # Otherwise the [OK], [ERROR] and [WARN] messages won't be displayed correctly override SILENT := false +ifeq ($(shell git rev-parse --is-inside-work-tree 2>/dev/null),) + export SKIP_GIT := yes + export NOT_REPO := yes +endif + ifdef SKIP_VERSION - SKIP_GIT := yes + export SKIP_GIT := yes endif ifndef SUB_IS_SILENT @@ -43,17 +48,10 @@ ON_ERROR := error_occurred=1 BREAK_ON_ERRORS = no -STARTING_MAKEFILE := $(firstword $(MAKEFILE_LIST)) -ROOT_MAKEFILE := $(lastword $(MAKEFILE_LIST)) -ROOT_DIR := $(dir $(ROOT_MAKEFILE)) +ROOT_DIR := $(dir $(lastword $(MAKEFILE_LIST))) ifeq ($(ROOT_DIR),) ROOT_DIR := . endif -ABS_STARTING_MAKEFILE := $(abspath $(STARTING_MAKEFILE)) -ABS_ROOT_MAKEFILE := $(abspath $(ROOT_MAKEFILE)) -ABS_STARTING_DIR := $(dir $(ABS_STARTING_MAKEFILE)) -ABS_ROOT_DIR := $(dir $(ABS_ROOT_MAKEFILE)) -STARTING_DIR := $(subst $(ABS_ROOT_DIR),,$(ABS_STARTING_DIR)) include paths.mk @@ -126,29 +124,16 @@ endef define PARSE_RULE RULE := $1 COMMANDS := - REQUIRE_PLATFORM_KEY := # If the rule starts with all, then continue the parsing from # PARSE_ALL_KEYBOARDS ifeq ($$(call COMPARE_AND_REMOVE_FROM_RULE,all),true) KEYBOARD_RULE=all $$(eval $$(call PARSE_ALL_KEYBOARDS)) - else ifeq ($$(call COMPARE_AND_REMOVE_FROM_RULE,all-avr),true) - KEYBOARD_RULE=all - REQUIRE_PLATFORM_KEY := avr - $$(eval $$(call PARSE_ALL_KEYBOARDS)) - else ifeq ($$(call COMPARE_AND_REMOVE_FROM_RULE,all-chibios),true) - KEYBOARD_RULE=all - REQUIRE_PLATFORM_KEY := chibios - $$(eval $$(call PARSE_ALL_KEYBOARDS)) - else ifeq ($$(call COMPARE_AND_REMOVE_FROM_RULE,all-arm_atsam),true) - KEYBOARD_RULE=all - REQUIRE_PLATFORM_KEY := arm_atsam - $$(eval $$(call PARSE_ALL_KEYBOARDS)) else ifeq ($$(call COMPARE_AND_REMOVE_FROM_RULE,test),true) $$(eval $$(call PARSE_TEST)) # If the rule starts with the name of a known keyboard, then continue # the parsing from PARSE_KEYBOARD - else ifeq ($$(call TRY_TO_MATCH_RULE_FROM_LIST,$$(shell util/list_keyboards.sh | sort -u)),true) + else ifeq ($$(call TRY_TO_MATCH_RULE_FROM_LIST,$$(shell $(QMK_BIN) list-keyboards --no-resolve-defaults)),true) KEYBOARD_RULE=$$(MATCHED_ITEM) $$(eval $$(call PARSE_KEYBOARD,$$(MATCHED_ITEM))) else @@ -241,7 +226,7 @@ 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,$(shell util/list_keyboards.sh | sort -u))) + $$(eval $$(call PARSE_ALL_IN_LIST,PARSE_KEYBOARD,$(shell $(QMK_BIN) list-keyboards --no-resolve-defaults))) endef # Prints a list of all known keymaps for the given keyboard @@ -273,7 +258,7 @@ define PARSE_KEYMAP # Format it in bold KB_SP := $(BOLD)$$(KB_SP)$(NO_COLOR) # Specify the variables that we are passing forward to submake - MAKE_VARS := KEYBOARD=$$(CURRENT_KB) KEYMAP=$$(CURRENT_KM) REQUIRE_PLATFORM_KEY=$$(REQUIRE_PLATFORM_KEY) QMK_BIN=$$(QMK_BIN) + MAKE_VARS := KEYBOARD=$$(CURRENT_KB) KEYMAP=$$(CURRENT_KM) QMK_BIN=$$(QMK_BIN) # And the first part of the make command MAKE_CMD := $$(MAKE) -r -R -C $(ROOT_DIR) -f $(BUILDDEFS_PATH)/build_keyboard.mk $$(MAKE_TARGET) # The message to display @@ -390,25 +375,15 @@ endef # 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 $(QMK_BIN) works. if ! $(QMK_BIN) hello 1> /dev/null 2>&1; then printf "$(MSG_PYTHON_MISSING)"; exit 1; fi - # Check if the submodules are dirty, and display a warning if they are +ifdef NOT_REPO + printf "$(MSG_NOT_REPO)" +endif ifndef SKIP_GIT - if [ ! -e lib/chibios ]; then git submodule sync lib/chibios && git submodule update --depth 50 --init lib/chibios; fi - if [ ! -e lib/chibios-contrib ]; then git submodule sync lib/chibios-contrib && git submodule update --depth 50 --init lib/chibios-contrib; fi - if [ ! -e lib/lufa ]; then git submodule sync lib/lufa && git submodule update --depth 50 --init lib/lufa; fi - if [ ! -e lib/vusb ]; then git submodule sync lib/vusb && git submodule update --depth 50 --init lib/vusb; fi - if [ ! -e lib/printf ]; then git submodule sync lib/printf && git submodule update --depth 50 --init lib/printf; fi - if [ ! -e lib/pico-sdk ]; then git submodule sync lib/pico-sdk && git submodule update --depth 50 --init lib/pico-sdk; fi - git submodule status --recursive 2>/dev/null | \ - while IFS= read -r x; do \ - case "$$x" in \ - \ *) ;; \ - *) printf "$(MSG_SUBMODULE_DIRTY)";break;; \ - esac \ - done + $(QMK_BIN) git-submodule --sync + # Check if the submodules are dirty, and display a warning if they are + if ! $(QMK_BIN) git-submodule --check 1> /dev/null 2>&1; then printf "$(MSG_SUBMODULE_DIRTY)"; fi endif rm -f $(ERROR_FILE) > /dev/null 2>&1 $(eval $(call PARSE_RULE,$@)) @@ -429,22 +404,18 @@ lib/%: .PHONY: git-submodule git-submodule: - [ -e lib/ugfx ] && rm -rf lib/ugfx || true - [ -e lib/pico-sdk ] && rm -rf lib/pico-sdk || true - [ -e lib/chibios-contrib/ext/mcux-sdk ] && rm -rf lib/chibios-contrib/ext/mcux-sdk || true - git submodule sync --recursive - git submodule update --init --recursive --progress + $(QMK_BIN) git-submodule .PHONY: git-submodules git-submodules: git-submodule .PHONY: list-keyboards list-keyboards: - util/list_keyboards.sh | sort -u | tr '\n' ' ' + $(QMK_BIN) list-keyboards --no-resolve-defaults | tr '\n' ' ' .PHONY: generate-keyboards-file generate-keyboards-file: - util/list_keyboards.sh | sort -u + $(QMK_BIN) list-keyboards --no-resolve-defaults .PHONY: clean clean: |