mirror of
				https://github.com/mfulz/qmk_firmware.git
				synced 2025-11-04 07:12:33 +01:00 
			
		
		
		
	Merge pull request #857 from fredizzimo/fix_makefile_too_long_bash
Run each sumbmake in a separate shell
This commit is contained in:
		
						commit
						b0317abe42
					
				
							
								
								
									
										31
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										31
									
								
								Makefile
									
									
									
									
									
								
							@ -32,7 +32,9 @@ 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))
 | 
				
			||||||
TEST_DIR := $(ROOT_DIR)/.build/test
 | 
					BUILD_DIR := $(ROOT_DIR)/.build
 | 
				
			||||||
 | 
					TEST_DIR := $(BUILD_DIR)/test
 | 
				
			||||||
 | 
					ERROR_FILE := $(BUILD_DIR)/error_occured
 | 
				
			||||||
 | 
					
 | 
				
			||||||
MAKEFILE_INCLUDED=yes
 | 
					MAKEFILE_INCLUDED=yes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -460,8 +462,21 @@ endef
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
include $(ROOT_DIR)/message.mk
 | 
					include $(ROOT_DIR)/message.mk
 | 
				
			||||||
 | 
					
 | 
				
			||||||
RUN_COMMAND = \
 | 
					# The empty line is important here, as it will force a new shell to be created for each command
 | 
				
			||||||
$(COMMAND_$(SILENT_MODE)_$(COMMAND))
 | 
					# Otherwise the command line will become too long with a lot of keyboards and keymaps
 | 
				
			||||||
 | 
					define RUN_COMMAND
 | 
				
			||||||
 | 
					+error_occured=0;\
 | 
				
			||||||
 | 
					$(COMMAND_$(SILENT_MODE)_$(COMMAND))\
 | 
				
			||||||
 | 
					if [ $$error_occured -gt 0 ]; then echo $$error_occured > $(ERROR_FILE); fi;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					endef
 | 
				
			||||||
 | 
					define RUN_TEST
 | 
				
			||||||
 | 
					+error_occured=0;\
 | 
				
			||||||
 | 
					$($(TEST)_COMMAND))\
 | 
				
			||||||
 | 
					if [ $$error_occured -gt 0 ]; then echo $$error_occured > $(ERROR_FILE); fi;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					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)))
 | 
				
			||||||
@ -481,17 +496,17 @@ $(SUBPROJECTS): %: %-allkm
 | 
				
			|||||||
			*) printf "$(MSG_SUBMODULE_DIRTY)";break;; \
 | 
								*) printf "$(MSG_SUBMODULE_DIRTY)";break;; \
 | 
				
			||||||
		esac \
 | 
							esac \
 | 
				
			||||||
	done
 | 
						done
 | 
				
			||||||
 | 
						rm -f $(ERROR_FILE) > /dev/null 2>&1
 | 
				
			||||||
	$(eval $(call PARSE_RULE,$@))
 | 
						$(eval $(call PARSE_RULE,$@))
 | 
				
			||||||
	$(eval $(call SET_SILENT_MODE))
 | 
						$(eval $(call SET_SILENT_MODE))
 | 
				
			||||||
	# Run all the commands in the same shell, notice the + at the first line
 | 
						# 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
 | 
						# 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
 | 
						# 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
 | 
						# But we return the error code at the end, to trigger travis failures
 | 
				
			||||||
	+error_occured=0; \
 | 
						$(foreach COMMAND,$(COMMANDS),$(RUN_COMMAND))
 | 
				
			||||||
	$(foreach COMMAND,$(COMMANDS),$(RUN_COMMAND)) \
 | 
						if [ -f $(ERROR_FILE) ]; then printf "$(MSG_ERRORS)" & exit 1; fi;
 | 
				
			||||||
	if [ $$error_occured -gt 0 ]; then printf "$(MSG_ERRORS)" & exit $$error_occured; fi;\
 | 
						$(foreach TEST,$(TESTS),$(RUN_TEST)) 
 | 
				
			||||||
	$(foreach TEST,$(TESTS),$($(TEST)_COMMAND)) \
 | 
						if [ -f $(ERROR_FILE) ]; then printf "$(MSG_ERRORS)" & exit 1; fi;
 | 
				
			||||||
	if [ $$error_occured -gt 0 ]; then printf "$(MSG_ERRORS)" & exit $$error_occured; fi;\
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
# All should compile everything
 | 
					# All should compile everything
 | 
				
			||||||
.PHONY: all
 | 
					.PHONY: all
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user