Slightly better method of recursive make - use proper make dependencies to allow for parallel builds.

Dean Camera 13 years ago
parent fafb52118d
commit 7f29c468d7
  1. 21
      Bootloaders/makefile
  2. 21
      Demos/Device/ClassDriver/makefile
  3. 21
      Demos/Device/LowLevel/makefile
  4. 20
      Demos/DualRole/ClassDriver/makefile
  5. 21
      Demos/Host/ClassDriver/makefile
  6. 21
      Demos/Host/LowLevel/makefile
  7. 22
      Projects/makefile

@ -22,10 +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)

@ -22,10 +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)

@ -22,10 +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)

@ -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
%: $(PROJECT_DIRECTORIES)
@echo . > /dev/null
%:
@$(foreach PROJECT, $(PROJECT_DIRECTORIES), $(MAKE) -C $(PROJECT) $@;)
$(PROJECT_DIRECTORIES):
@$(MAKE) -C $@ $(MAKECMDGOALS)
.PHONY: $(PROJECT_DIRECTORIES)

@ -22,10 +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)

@ -22,10 +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)

@ -22,10 +22,24 @@ 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…
Cancel
Save