Adding SKIP_GIT to speed up compiles.
This commit is contained in:
		
							parent
							
								
									9e6c57af2a
								
							
						
					
					
						commit
						78976d8f7a
					
				
					 1 changed files with 39 additions and 18 deletions
				
			
		
							
								
								
									
										57
									
								
								Makefile
									
										
									
									
									
								
							
							
						
						
									
										57
									
								
								Makefile
									
										
									
									
									
								
							| 
						 | 
					@ -38,7 +38,7 @@ ERROR_FILE := $(BUILD_DIR)/error_occured
 | 
				
			||||||
 | 
					
 | 
				
			||||||
MAKEFILE_INCLUDED=yes
 | 
					MAKEFILE_INCLUDED=yes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Helper function to process the newt element of a space separated path 
 | 
					# Helper function to process the newt element of a space separated path
 | 
				
			||||||
# It works a bit like the traditional functional head tail
 | 
					# It works a bit like the traditional functional head tail
 | 
				
			||||||
# so the CURRENT_PATH_ELEMENT will beome the new head
 | 
					# so the CURRENT_PATH_ELEMENT will beome the new head
 | 
				
			||||||
# and the PATH_ELEMENTS are the rest that are still unprocessed
 | 
					# and the PATH_ELEMENTS are the rest that are still unprocessed
 | 
				
			||||||
| 
						 | 
					@ -47,16 +47,16 @@ define NEXT_PATH_ELEMENT
 | 
				
			||||||
    $$(eval PATH_ELEMENTS := $$(wordlist  2,9999,$$(PATH_ELEMENTS)))
 | 
					    $$(eval PATH_ELEMENTS := $$(wordlist  2,9999,$$(PATH_ELEMENTS)))
 | 
				
			||||||
endef
 | 
					endef
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# We change the / to spaces so that we more easily can work with the elements 
 | 
					# We change the / to spaces so that we more easily can work with the elements
 | 
				
			||||||
# separately
 | 
					# separately
 | 
				
			||||||
PATH_ELEMENTS := $(subst /, ,$(STARTING_DIR))
 | 
					PATH_ELEMENTS := $(subst /, ,$(STARTING_DIR))
 | 
				
			||||||
# Initialize the path elements list for further processing
 | 
					# Initialize the path elements list for further processing
 | 
				
			||||||
$(eval $(call NEXT_PATH_ELEMENT))
 | 
					$(eval $(call NEXT_PATH_ELEMENT))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# This function sets the KEYBOARD; KEYMAP and SUBPROJECT to the correct 
 | 
					# This function sets the KEYBOARD; KEYMAP and SUBPROJECT to the correct
 | 
				
			||||||
# variables depending on which directory you stand in.
 | 
					# variables depending on which directory you stand in.
 | 
				
			||||||
# 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)
 | 
					ifeq ($(CURRENT_PATH_ELEMENT),keyboards)
 | 
				
			||||||
    $(eval $(call NEXT_PATH_ELEMENT))
 | 
					    $(eval $(call NEXT_PATH_ELEMENT))
 | 
				
			||||||
| 
						 | 
					@ -111,7 +111,7 @@ endif
 | 
				
			||||||
.DEFAULT_GOAL := all
 | 
					.DEFAULT_GOAL := all
 | 
				
			||||||
ifneq ($(KEYMAP),)
 | 
					ifneq ($(KEYMAP),)
 | 
				
			||||||
    ifeq ($(SUBPROJECT),)
 | 
					    ifeq ($(SUBPROJECT),)
 | 
				
			||||||
         # Inside a keymap folder, just build the keymap, with the 
 | 
					         # Inside a keymap folder, just build the keymap, with the
 | 
				
			||||||
         # default subproject
 | 
					         # default subproject
 | 
				
			||||||
        .DEFAULT_GOAL := $(KEYBOARD)-$(KEYMAP)
 | 
					        .DEFAULT_GOAL := $(KEYBOARD)-$(KEYMAP)
 | 
				
			||||||
    else
 | 
					    else
 | 
				
			||||||
| 
						 | 
					@ -163,7 +163,7 @@ define TRY_TO_MATCH_RULE_FROM_LIST_HELPER3
 | 
				
			||||||
    ifneq ($1,)
 | 
					    ifneq ($1,)
 | 
				
			||||||
        ifeq ($$(call COMPARE_AND_REMOVE_FROM_RULE,$$(firstword $1)),true)
 | 
					        ifeq ($$(call COMPARE_AND_REMOVE_FROM_RULE,$$(firstword $1)),true)
 | 
				
			||||||
            MATCHED_ITEM := $$(firstword $1)
 | 
					            MATCHED_ITEM := $$(firstword $1)
 | 
				
			||||||
        else 
 | 
					        else
 | 
				
			||||||
            $$(eval $$(call TRY_TO_MATCH_RULE_FROM_LIST_HELPER3,$$(wordlist 2,9999,$1)))
 | 
					            $$(eval $$(call TRY_TO_MATCH_RULE_FROM_LIST_HELPER3,$$(wordlist 2,9999,$1)))
 | 
				
			||||||
        endif
 | 
					        endif
 | 
				
			||||||
    endif
 | 
					    endif
 | 
				
			||||||
| 
						 | 
					@ -171,10 +171,10 @@ endef
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# A recursive helper function for finding the longest match
 | 
					# A recursive helper function for finding the longest match
 | 
				
			||||||
# $1 The list to be checed
 | 
					# $1 The list to be checed
 | 
				
			||||||
# It works by always removing the currently matched item from the list 
 | 
					# It works by always removing the currently matched item from the list
 | 
				
			||||||
# and call itself recursively, until a match is found
 | 
					# and call itself recursively, until a match is found
 | 
				
			||||||
define TRY_TO_MATCH_RULE_FROM_LIST_HELPER2
 | 
					define TRY_TO_MATCH_RULE_FROM_LIST_HELPER2
 | 
				
			||||||
    # Stop the recursion when the list is empty 
 | 
					    # Stop the recursion when the list is empty
 | 
				
			||||||
    ifneq ($1,)
 | 
					    ifneq ($1,)
 | 
				
			||||||
        RULE_BEFORE := $$(RULE)
 | 
					        RULE_BEFORE := $$(RULE)
 | 
				
			||||||
        $$(eval $$(call TRY_TO_MATCH_RULE_FROM_LIST_HELPER3,$1))
 | 
					        $$(eval $$(call TRY_TO_MATCH_RULE_FROM_LIST_HELPER3,$1))
 | 
				
			||||||
| 
						 | 
					@ -270,7 +270,7 @@ define PARSE_KEYBOARD
 | 
				
			||||||
        $$(eval $$(call PARSE_SUBPROJECT,$$(SUBPROJECT)))
 | 
					        $$(eval $$(call PARSE_SUBPROJECT,$$(SUBPROJECT)))
 | 
				
			||||||
	# If there's no matching subproject, we assume it's the default
 | 
						# 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
 | 
						# This will allow you to leave the subproject part of the target out
 | 
				
			||||||
    else 
 | 
					    else
 | 
				
			||||||
        $$(eval $$(call PARSE_SUBPROJECT,))
 | 
					        $$(eval $$(call PARSE_SUBPROJECT,))
 | 
				
			||||||
    endif
 | 
					    endif
 | 
				
			||||||
endef
 | 
					endef
 | 
				
			||||||
| 
						 | 
					@ -285,7 +285,7 @@ endef
 | 
				
			||||||
# When entering this, the keyboard and subproject are known, so now we need
 | 
					# When entering this, the keyboard and subproject are known, so now we need
 | 
				
			||||||
# to determine which keymaps are going to get compiled
 | 
					# to determine which keymaps are going to get compiled
 | 
				
			||||||
define PARSE_SUBPROJECT
 | 
					define PARSE_SUBPROJECT
 | 
				
			||||||
    # If we want to compile the default subproject, then we need to 
 | 
					    # If we want to compile the default subproject, then we need to
 | 
				
			||||||
    # include the correct makefile to determine the actual name of it
 | 
					    # include the correct makefile to determine the actual name of it
 | 
				
			||||||
    CURRENT_SP := $1
 | 
					    CURRENT_SP := $1
 | 
				
			||||||
    ifeq ($$(CURRENT_SP),)
 | 
					    ifeq ($$(CURRENT_SP),)
 | 
				
			||||||
| 
						 | 
					@ -304,7 +304,7 @@ define PARSE_SUBPROJECT
 | 
				
			||||||
         endif
 | 
					         endif
 | 
				
			||||||
    endif
 | 
					    endif
 | 
				
			||||||
    # The special allsp is handled later
 | 
					    # The special allsp is handled later
 | 
				
			||||||
    ifneq ($$(CURRENT_SP),allsp) 
 | 
					    ifneq ($$(CURRENT_SP),allsp)
 | 
				
			||||||
        # get a list of all keymaps
 | 
					        # get a list of all keymaps
 | 
				
			||||||
        KEYMAPS := $$(notdir $$(patsubst %/.,%,$$(wildcard $(ROOT_DIR)/keyboards/$$(CURRENT_KB)/keymaps/*/.)))
 | 
					        KEYMAPS := $$(notdir $$(patsubst %/.,%,$$(wildcard $(ROOT_DIR)/keyboards/$$(CURRENT_KB)/keymaps/*/.)))
 | 
				
			||||||
        ifneq ($$(CURRENT_SP),)
 | 
					        ifneq ($$(CURRENT_SP),)
 | 
				
			||||||
| 
						 | 
					@ -343,7 +343,7 @@ define PARSE_SUBPROJECT
 | 
				
			||||||
    endif
 | 
					    endif
 | 
				
			||||||
endef
 | 
					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),)
 | 
				
			||||||
| 
						 | 
					@ -448,7 +448,7 @@ endef
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Set the silent mode depending on if we are trying to compile multiple keyboards or not
 | 
					# Set the silent mode depending on if we are trying to compile multiple keyboards or not
 | 
				
			||||||
# By default it's on in that case, but it can be overriden by specifying silent=false 
 | 
					# By default it's on in that case, but it can be overriden by specifying silent=false
 | 
				
			||||||
# from the command line
 | 
					# from the command line
 | 
				
			||||||
define SET_SILENT_MODE
 | 
					define SET_SILENT_MODE
 | 
				
			||||||
    ifdef SUB_IS_SILENT
 | 
					    ifdef SUB_IS_SILENT
 | 
				
			||||||
| 
						 | 
					@ -481,11 +481,12 @@ endef
 | 
				
			||||||
# Allow specifying just the subproject, in the keyboard directory, which will compile all keymaps
 | 
					# Allow specifying just the subproject, in the keyboard directory, which will compile all keymaps
 | 
				
			||||||
SUBPROJECTS := $(notdir $(patsubst %/Makefile,%,$(wildcard ./*/Makefile)))
 | 
					SUBPROJECTS := $(notdir $(patsubst %/Makefile,%,$(wildcard ./*/Makefile)))
 | 
				
			||||||
.PHONY: $(SUBPROJECTS)
 | 
					.PHONY: $(SUBPROJECTS)
 | 
				
			||||||
$(SUBPROJECTS): %: %-allkm 
 | 
					$(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: %
 | 
				
			||||||
%: 
 | 
					ifndef SKIP_GIT
 | 
				
			||||||
 | 
					%:
 | 
				
			||||||
	# Check if we have the CMP tool installed
 | 
						# Check if we have the CMP tool installed
 | 
				
			||||||
	cmp --version >/dev/null 2>&1; if [ $$? -gt 0 ]; then printf "$(MSG_NO_CMP)"; exit 1; fi;
 | 
						cmp --version >/dev/null 2>&1; if [ $$? -gt 0 ]; then printf "$(MSG_NO_CMP)"; exit 1; fi;
 | 
				
			||||||
	# Check if the submodules are dirty, and display a warning if they are
 | 
						# Check if the submodules are dirty, and display a warning if they are
 | 
				
			||||||
| 
						 | 
					@ -505,8 +506,24 @@ $(SUBPROJECTS): %: %-allkm
 | 
				
			||||||
	# But we return the error code at the end, to trigger travis failures
 | 
						# But we return the error code at the end, to trigger travis failures
 | 
				
			||||||
	$(foreach COMMAND,$(COMMANDS),$(RUN_COMMAND))
 | 
						$(foreach COMMAND,$(COMMANDS),$(RUN_COMMAND))
 | 
				
			||||||
	if [ -f $(ERROR_FILE) ]; then printf "$(MSG_ERRORS)" & exit 1; fi;
 | 
						if [ -f $(ERROR_FILE) ]; then printf "$(MSG_ERRORS)" & exit 1; fi;
 | 
				
			||||||
	$(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;
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
					%:
 | 
				
			||||||
 | 
						# Check if we have the CMP tool installed
 | 
				
			||||||
 | 
						cmp --version >/dev/null 2>&1; if [ $$? -gt 0 ]; then printf "$(MSG_NO_CMP)"; exit 1; fi;
 | 
				
			||||||
 | 
						rm -f $(ERROR_FILE) > /dev/null 2>&1
 | 
				
			||||||
 | 
						$(eval $(call PARSE_RULE,$@))
 | 
				
			||||||
 | 
						$(eval $(call SET_SILENT_MODE))
 | 
				
			||||||
 | 
						# Run all the commands in the same shell, notice the + at the first line
 | 
				
			||||||
 | 
						# it has to be there to allow parallel execution of the submake
 | 
				
			||||||
 | 
						# This always tries to compile everything, even if error occurs in the middle
 | 
				
			||||||
 | 
						# But we return the error code at the end, to trigger travis failures
 | 
				
			||||||
 | 
						$(foreach COMMAND,$(COMMANDS),$(RUN_COMMAND))
 | 
				
			||||||
 | 
						if [ -f $(ERROR_FILE) ]; then printf "$(MSG_ERRORS)" & exit 1; fi;
 | 
				
			||||||
 | 
						$(foreach TEST,$(TESTS),$(RUN_TEST))
 | 
				
			||||||
 | 
						if [ -f $(ERROR_FILE) ]; then printf "$(MSG_ERRORS)" & exit 1; fi;
 | 
				
			||||||
 | 
					endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# All should compile everything
 | 
					# All should compile everything
 | 
				
			||||||
.PHONY: all
 | 
					.PHONY: all
 | 
				
			||||||
| 
						 | 
					@ -526,7 +543,11 @@ test: test-all
 | 
				
			||||||
test-clean: test-all-clean
 | 
					test-clean: test-all-clean
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Generate the version.h file
 | 
					# Generate the version.h file
 | 
				
			||||||
GIT_VERSION := $(shell git describe --abbrev=6 --dirty --always --tags 2>/dev/null || date +"%Y-%m-%d-%H:%M:%S")
 | 
					ifndef SKIP_GIT
 | 
				
			||||||
 | 
					    GIT_VERSION := $(shell git describe --abbrev=6 --dirty --always --tags 2>/dev/null || date +"%Y-%m-%d-%H:%M:%S")
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
					    GIT_VERSION := NA
 | 
				
			||||||
 | 
					endif
 | 
				
			||||||
BUILD_DATE := $(shell date +"%Y-%m-%d-%H:%M:%S")
 | 
					BUILD_DATE := $(shell date +"%Y-%m-%d-%H:%M:%S")
 | 
				
			||||||
$(shell echo '#define QMK_VERSION "$(GIT_VERSION)"' > $(ROOT_DIR)/quantum/version.h)
 | 
					$(shell echo '#define QMK_VERSION "$(GIT_VERSION)"' > $(ROOT_DIR)/quantum/version.h)
 | 
				
			||||||
$(shell echo '#define QMK_BUILDDATE "$(BUILD_DATE)"' >> $(ROOT_DIR)/quantum/version.h)
 | 
					$(shell echo '#define QMK_BUILDDATE "$(BUILD_DATE)"' >> $(ROOT_DIR)/quantum/version.h)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue