Slightly better method of recursive make - use proper make dependencies to allow for parallel builds.
This commit is contained in:
		
							parent
							
								
									fafb52118d
								
							
						
					
					
						commit
						7f29c468d7
					
				
					 7 changed files with 119 additions and 28 deletions
				
			
		| 
						 | 
				
			
			@ -22,11 +22,23 @@ ifeq ($(MAKELEVEL), 10)
 | 
			
		|||
   $(error EMERGENCY ABORT: INFINITE RECURSION DETECTED)
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
all:
 | 
			
		||||
# If building without a per-project object directory, we can't build in parallel
 | 
			
		||||
ifeq ($(OBJDIR),)
 | 
			
		||||
	@$(foreach PROJECT, $(PROJECT_DIRECTORIES), $(MAKE) -C $(PROJECT) clean all;)
 | 
			
		||||
   .NOTPARALLEL:
 | 
			
		||||
 | 
			
		||||
   # Ensure projects are pre-cleaned if the target is the default or "all"
 | 
			
		||||
   ifeq ($(MAKECMDGOALS),)
 | 
			
		||||
      MAKECMDGOALS := clean all
 | 
			
		||||
   endif
 | 
			
		||||
   ifneq ($(findstring all, $(MAKECMDGOALS)),)
 | 
			
		||||
      MAKECMDGOALS := clean $(MAKECMDGOALS)
 | 
			
		||||
   endif
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
%:
 | 
			
		||||
	@$(foreach PROJECT, $(PROJECT_DIRECTORIES), $(MAKE) -C $(PROJECT) $@;)
 | 
			
		||||
%: $(PROJECT_DIRECTORIES)
 | 
			
		||||
	@echo . > /dev/null
 | 
			
		||||
 | 
			
		||||
$(PROJECT_DIRECTORIES):
 | 
			
		||||
	@$(MAKE) -C $@ $(MAKECMDGOALS)
 | 
			
		||||
    
 | 
			
		||||
.PHONY: $(PROJECT_DIRECTORIES)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue