forked from mirrors/qmk_firmware
Various Makefile optimisations (#16015)
This commit is contained in:
parent
c71c0fba90
commit
bf9569db93
2 changed files with 37 additions and 52 deletions
80
Makefile
80
Makefile
|
@ -19,6 +19,10 @@ endif
|
||||||
# Otherwise the [OK], [ERROR] and [WARN] messages won't be displayed correctly
|
# Otherwise the [OK], [ERROR] and [WARN] messages won't be displayed correctly
|
||||||
override SILENT := false
|
override SILENT := false
|
||||||
|
|
||||||
|
ifdef SKIP_VERSION
|
||||||
|
SKIP_GIT := yes
|
||||||
|
endif
|
||||||
|
|
||||||
ifndef SUB_IS_SILENT
|
ifndef SUB_IS_SILENT
|
||||||
ifndef SKIP_GIT
|
ifndef SKIP_GIT
|
||||||
QMK_VERSION := $(shell git describe --abbrev=0 --tags 2>/dev/null)
|
QMK_VERSION := $(shell git describe --abbrev=0 --tags 2>/dev/null)
|
||||||
|
@ -50,48 +54,12 @@ ABS_ROOT_MAKEFILE := $(abspath $(ROOT_MAKEFILE))
|
||||||
ABS_STARTING_DIR := $(dir $(ABS_STARTING_MAKEFILE))
|
ABS_STARTING_DIR := $(dir $(ABS_STARTING_MAKEFILE))
|
||||||
ABS_ROOT_DIR := $(dir $(ABS_ROOT_MAKEFILE))
|
ABS_ROOT_DIR := $(dir $(ABS_ROOT_MAKEFILE))
|
||||||
STARTING_DIR := $(subst $(ABS_ROOT_DIR),,$(ABS_STARTING_DIR))
|
STARTING_DIR := $(subst $(ABS_ROOT_DIR),,$(ABS_STARTING_DIR))
|
||||||
BUILD_DIR := $(ROOT_DIR)/.build
|
|
||||||
TEST_DIR := $(BUILD_DIR)/test
|
include paths.mk
|
||||||
|
|
||||||
|
TEST_OUTPUT_DIR := $(BUILD_DIR)/test
|
||||||
ERROR_FILE := $(BUILD_DIR)/error_occurred
|
ERROR_FILE := $(BUILD_DIR)/error_occurred
|
||||||
|
|
||||||
# Helper function to process the newt element of a space separated path
|
|
||||||
# It works a bit like the traditional functional head tail
|
|
||||||
# so the CURRENT_PATH_ELEMENT will become the new head
|
|
||||||
# and the PATH_ELEMENTS are the rest that are still unprocessed
|
|
||||||
define NEXT_PATH_ELEMENT
|
|
||||||
$$(eval CURRENT_PATH_ELEMENT := $$(firstword $$(PATH_ELEMENTS)))
|
|
||||||
$$(eval PATH_ELEMENTS := $$(wordlist 2,9999,$$(PATH_ELEMENTS)))
|
|
||||||
endef
|
|
||||||
|
|
||||||
# We change the / to spaces so that we more easily can work with the elements
|
|
||||||
# separately
|
|
||||||
PATH_ELEMENTS := $(subst /, ,$(STARTING_DIR))
|
|
||||||
# Initialize the path elements list for further processing
|
|
||||||
$(eval $(call NEXT_PATH_ELEMENT))
|
|
||||||
|
|
||||||
|
|
||||||
# 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' ' '
|
|
||||||
|
|
||||||
.PHONY: generate-keyboards-file
|
|
||||||
generate-keyboards-file:
|
|
||||||
util/list_keyboards.sh | sort -u
|
|
||||||
|
|
||||||
.PHONY: clean
|
|
||||||
clean:
|
|
||||||
echo -n 'Deleting .build/ ... '
|
|
||||||
rm -rf $(BUILD_DIR)
|
|
||||||
echo 'done.'
|
|
||||||
|
|
||||||
.PHONY: distclean
|
|
||||||
distclean: clean
|
|
||||||
echo -n 'Deleting *.bin, *.hex, and *.uf2 ... '
|
|
||||||
rm -f *.bin *.hex *.uf2
|
|
||||||
echo 'done.'
|
|
||||||
|
|
||||||
|
|
||||||
.DEFAULT_GOAL := all:all
|
.DEFAULT_GOAL := all:all
|
||||||
|
|
||||||
|
|
||||||
|
@ -387,7 +355,7 @@ define BUILD_TEST
|
||||||
MAKE_MSG := $$(MSG_MAKE_TEST)
|
MAKE_MSG := $$(MSG_MAKE_TEST)
|
||||||
$$(eval $$(call BUILD))
|
$$(eval $$(call BUILD))
|
||||||
ifneq ($$(MAKE_TARGET),clean)
|
ifneq ($$(MAKE_TARGET),clean)
|
||||||
TEST_EXECUTABLE := $$(TEST_DIR)/$$(TEST_NAME).elf
|
TEST_EXECUTABLE := $$(TEST_OUTPUT_DIR)/$$(TEST_NAME).elf
|
||||||
TESTS += $$(TEST_NAME)
|
TESTS += $$(TEST_NAME)
|
||||||
TEST_MSG := $$(MSG_TEST)
|
TEST_MSG := $$(MSG_TEST)
|
||||||
$$(TEST_NAME)_COMMAND := \
|
$$(TEST_NAME)_COMMAND := \
|
||||||
|
@ -404,6 +372,7 @@ 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)))
|
||||||
|
include $(ROOT_DIR)/testlist.mk
|
||||||
ifeq ($$(TEST_NAME),all)
|
ifeq ($$(TEST_NAME),all)
|
||||||
MATCHED_TESTS := $$(TEST_LIST)
|
MATCHED_TESTS := $$(TEST_LIST)
|
||||||
else
|
else
|
||||||
|
@ -426,7 +395,6 @@ define SET_SILENT_MODE
|
||||||
endif
|
endif
|
||||||
endef
|
endef
|
||||||
|
|
||||||
include paths.mk
|
|
||||||
include $(BUILDDEFS_PATH)/message.mk
|
include $(BUILDDEFS_PATH)/message.mk
|
||||||
|
|
||||||
ifeq ($(strip $(BREAK_ON_ERRORS)), yes)
|
ifeq ($(strip $(BREAK_ON_ERRORS)), yes)
|
||||||
|
@ -496,14 +464,22 @@ git-submodule:
|
||||||
git submodule sync --recursive
|
git submodule sync --recursive
|
||||||
git submodule update --init --recursive --progress
|
git submodule update --init --recursive --progress
|
||||||
|
|
||||||
# Generate the version.h file
|
.PHONY: list-keyboards
|
||||||
ifdef SKIP_GIT
|
list-keyboards:
|
||||||
VERSION_H_FLAGS := --skip-git
|
util/list_keyboards.sh | sort -u | tr '\n' ' '
|
||||||
endif
|
|
||||||
ifdef SKIP_VERSION
|
|
||||||
VERSION_H_FLAGS := --skip-all
|
|
||||||
SKIP_GIT := yes
|
|
||||||
endif
|
|
||||||
$(shell $(QMK_BIN) generate-version-h $(VERSION_H_FLAGS) -q -o quantum/version.h)
|
|
||||||
|
|
||||||
include $(ROOT_DIR)/testlist.mk
|
.PHONY: generate-keyboards-file
|
||||||
|
generate-keyboards-file:
|
||||||
|
util/list_keyboards.sh | sort -u
|
||||||
|
|
||||||
|
.PHONY: clean
|
||||||
|
clean:
|
||||||
|
echo -n 'Deleting .build/ ... '
|
||||||
|
rm -rf $(BUILD_DIR)
|
||||||
|
echo 'done.'
|
||||||
|
|
||||||
|
.PHONY: distclean
|
||||||
|
distclean: clean
|
||||||
|
echo -n 'Deleting *.bin, *.hex, and *.uf2 ... '
|
||||||
|
rm -f *.bin *.hex *.uf2
|
||||||
|
echo 'done.'
|
||||||
|
|
|
@ -37,6 +37,15 @@ ifdef SKIP_VERSION
|
||||||
OPT_DEFS += -DSKIP_VERSION
|
OPT_DEFS += -DSKIP_VERSION
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
# Generate the version.h file
|
||||||
|
ifdef SKIP_VERSION
|
||||||
|
VERSION_H_FLAGS := --skip-all
|
||||||
|
endif
|
||||||
|
ifdef SKIP_GIT
|
||||||
|
VERSION_H_FLAGS := --skip-git
|
||||||
|
endif
|
||||||
|
$(shell $(QMK_BIN) generate-version-h $(VERSION_H_FLAGS) -q -o quantum/version.h)
|
||||||
|
|
||||||
# Determine which subfolders exist.
|
# Determine which subfolders exist.
|
||||||
KEYBOARD_FOLDER_PATH_1 := $(KEYBOARD)
|
KEYBOARD_FOLDER_PATH_1 := $(KEYBOARD)
|
||||||
KEYBOARD_FOLDER_PATH_2 := $(patsubst %/,%,$(dir $(KEYBOARD_FOLDER_PATH_1)))
|
KEYBOARD_FOLDER_PATH_2 := $(patsubst %/,%,$(dir $(KEYBOARD_FOLDER_PATH_1)))
|
||||||
|
|
Loading…
Reference in a new issue