mirror of
https://github.com/qmk/qmk_firmware.git
synced 2025-07-16 04:41:28 +00:00
Slightly better method of recursive make - use proper make dependencies to allow for parallel builds.
This commit is contained in:
parent
fafb52118d
commit
7f29c468d7
@ -22,10 +22,23 @@ ifeq ($(MAKELEVEL), 10)
|
|||||||
$(error EMERGENCY ABORT: INFINITE RECURSION DETECTED)
|
$(error EMERGENCY ABORT: INFINITE RECURSION DETECTED)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
all:
|
# If building without a per-project object directory, we can't build in parallel
|
||||||
ifeq ($(OBJDIR),)
|
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
|
endif
|
||||||
|
|
||||||
%:
|
%: $(PROJECT_DIRECTORIES)
|
||||||
@$(foreach PROJECT, $(PROJECT_DIRECTORIES), $(MAKE) -C $(PROJECT) $@;)
|
@echo . > /dev/null
|
||||||
|
|
||||||
|
$(PROJECT_DIRECTORIES):
|
||||||
|
@$(MAKE) -C $@ $(MAKECMDGOALS)
|
||||||
|
|
||||||
|
.PHONY: $(PROJECT_DIRECTORIES)
|
||||||
|
@ -22,10 +22,23 @@ ifeq ($(MAKELEVEL), 10)
|
|||||||
$(error EMERGENCY ABORT: INFINITE RECURSION DETECTED)
|
$(error EMERGENCY ABORT: INFINITE RECURSION DETECTED)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
all:
|
# If building without a per-project object directory, we can't build in parallel
|
||||||
ifeq ($(OBJDIR),)
|
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
|
endif
|
||||||
|
|
||||||
%:
|
%: $(PROJECT_DIRECTORIES)
|
||||||
@$(foreach PROJECT, $(PROJECT_DIRECTORIES), $(MAKE) -C $(PROJECT) $@;)
|
@echo . > /dev/null
|
||||||
|
|
||||||
|
$(PROJECT_DIRECTORIES):
|
||||||
|
@$(MAKE) -C $@ $(MAKECMDGOALS)
|
||||||
|
|
||||||
|
.PHONY: $(PROJECT_DIRECTORIES)
|
||||||
|
@ -22,10 +22,23 @@ ifeq ($(MAKELEVEL), 10)
|
|||||||
$(error EMERGENCY ABORT: INFINITE RECURSION DETECTED)
|
$(error EMERGENCY ABORT: INFINITE RECURSION DETECTED)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
all:
|
# If building without a per-project object directory, we can't build in parallel
|
||||||
ifeq ($(OBJDIR),)
|
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
|
endif
|
||||||
|
|
||||||
%:
|
%: $(PROJECT_DIRECTORIES)
|
||||||
@$(foreach PROJECT, $(PROJECT_DIRECTORIES), $(MAKE) -C $(PROJECT) $@;)
|
@echo . > /dev/null
|
||||||
|
|
||||||
|
$(PROJECT_DIRECTORIES):
|
||||||
|
@$(MAKE) -C $@ $(MAKECMDGOALS)
|
||||||
|
|
||||||
|
.PHONY: $(PROJECT_DIRECTORIES)
|
||||||
|
@ -22,11 +22,23 @@ ifeq ($(MAKELEVEL), 10)
|
|||||||
$(error EMERGENCY ABORT: INFINITE RECURSION DETECTED)
|
$(error EMERGENCY ABORT: INFINITE RECURSION DETECTED)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
all:
|
# If building without a per-project object directory, we can't build in parallel
|
||||||
ifeq ($(OBJDIR),)
|
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
|
endif
|
||||||
|
|
||||||
%:
|
%: $(PROJECT_DIRECTORIES)
|
||||||
@$(foreach PROJECT, $(PROJECT_DIRECTORIES), $(MAKE) -C $(PROJECT) $@;)
|
@echo . > /dev/null
|
||||||
|
|
||||||
|
$(PROJECT_DIRECTORIES):
|
||||||
|
@$(MAKE) -C $@ $(MAKECMDGOALS)
|
||||||
|
|
||||||
|
.PHONY: $(PROJECT_DIRECTORIES)
|
||||||
|
@ -22,10 +22,23 @@ ifeq ($(MAKELEVEL), 10)
|
|||||||
$(error EMERGENCY ABORT: INFINITE RECURSION DETECTED)
|
$(error EMERGENCY ABORT: INFINITE RECURSION DETECTED)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
all:
|
# If building without a per-project object directory, we can't build in parallel
|
||||||
ifeq ($(OBJDIR),)
|
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
|
endif
|
||||||
|
|
||||||
%:
|
%: $(PROJECT_DIRECTORIES)
|
||||||
@$(foreach PROJECT, $(PROJECT_DIRECTORIES), $(MAKE) -C $(PROJECT) $@;)
|
@echo . > /dev/null
|
||||||
|
|
||||||
|
$(PROJECT_DIRECTORIES):
|
||||||
|
@$(MAKE) -C $@ $(MAKECMDGOALS)
|
||||||
|
|
||||||
|
.PHONY: $(PROJECT_DIRECTORIES)
|
||||||
|
@ -22,10 +22,23 @@ ifeq ($(MAKELEVEL), 10)
|
|||||||
$(error EMERGENCY ABORT: INFINITE RECURSION DETECTED)
|
$(error EMERGENCY ABORT: INFINITE RECURSION DETECTED)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
all:
|
# If building without a per-project object directory, we can't build in parallel
|
||||||
ifeq ($(OBJDIR),)
|
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
|
endif
|
||||||
|
|
||||||
%:
|
%: $(PROJECT_DIRECTORIES)
|
||||||
@$(foreach PROJECT, $(PROJECT_DIRECTORIES), $(MAKE) -C $(PROJECT) $@;)
|
@echo . > /dev/null
|
||||||
|
|
||||||
|
$(PROJECT_DIRECTORIES):
|
||||||
|
@$(MAKE) -C $@ $(MAKECMDGOALS)
|
||||||
|
|
||||||
|
.PHONY: $(PROJECT_DIRECTORIES)
|
||||||
|
@ -22,10 +22,24 @@ ifeq ($(MAKELEVEL), 10)
|
|||||||
$(error EMERGENCY ABORT: INFINITE RECURSION DETECTED)
|
$(error EMERGENCY ABORT: INFINITE RECURSION DETECTED)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
all:
|
# If building without a per-project object directory, we can't build in parallel
|
||||||
ifeq ($(OBJDIR),)
|
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
|
endif
|
||||||
|
|
||||||
%:
|
%: $(PROJECT_DIRECTORIES)
|
||||||
@$(foreach PROJECT, $(PROJECT_DIRECTORIES), $(MAKE) -C $(PROJECT) $@;)
|
@echo . > /dev/null
|
||||||
|
|
||||||
|
$(PROJECT_DIRECTORIES):
|
||||||
|
@$(MAKE) -C $@ $(MAKECMDGOALS)
|
||||||
|
|
||||||
|
.PHONY: $(PROJECT_DIRECTORIES)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user