From 2a6499a167354f2a1259b28b2c3105f08db977d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Hoguin?= Date: Wed, 7 Jan 2015 15:55:30 +0100 Subject: Fix parallel compilation Parallel compilation is now only enabled for "make" and "make deps app". To ensure order we spawn a new Make process for "deps", "app" and "rel" when the "all" target (or no target) is used. --- core/core.mk | 9 ++++++++- core/erlc.mk | 4 ++-- erlang.mk | 15 +++++++++++---- plugins/relx.mk | 2 +- 4 files changed, 22 insertions(+), 8 deletions(-) diff --git a/core/core.mk b/core/core.mk index 075ee45..a5fbffd 100644 --- a/core/core.mk +++ b/core/core.mk @@ -30,7 +30,14 @@ gen_verbose = $(gen_verbose_$(V)) # Core targets. -all:: deps app rel +ifneq ($(words $(MAKECMDGOALS)),1) +.NOTPARALLEL: +endif + +all:: + @$(MAKE) --no-print-directory deps + @$(MAKE) --no-print-directory app + @$(MAKE) --no-print-directory rel clean:: $(gen_verbose) rm -f erl_crash.dump diff --git a/core/erlc.mk b/core/erlc.mk index 01bd6e0..8d720aa 100644 --- a/core/erlc.mk +++ b/core/erlc.mk @@ -75,11 +75,11 @@ ebin/$(PROJECT).app:: $(shell find mibs -type f -name \*.mib) endif ebin/$(PROJECT).app:: $(shell find src -type f -name \*.erl) \ - $(shell find src -type f -name \*.core) | deps + $(shell find src -type f -name \*.core) $(if $(strip $?),$(call compile_erl,$?)) ebin/$(PROJECT).app:: $(shell find src -type f -name \*.xrl) \ - $(shell find src -type f -name \*.yrl) | deps + $(shell find src -type f -name \*.yrl) $(if $(strip $?),$(call compile_xyrl,$?)) endif diff --git a/erlang.mk b/erlang.mk index d050dda..2d7e63e 100644 --- a/erlang.mk +++ b/erlang.mk @@ -30,7 +30,14 @@ gen_verbose = $(gen_verbose_$(V)) # Core targets. -all:: deps app rel +ifneq ($(words $(MAKECMDGOALS)),1) +.NOTPARALLEL: +endif + +all:: + @$(MAKE) --no-print-directory deps + @$(MAKE) --no-print-directory app + @$(MAKE) --no-print-directory rel clean:: $(gen_verbose) rm -f erl_crash.dump @@ -279,11 +286,11 @@ ebin/$(PROJECT).app:: $(shell find mibs -type f -name \*.mib) endif ebin/$(PROJECT).app:: $(shell find src -type f -name \*.erl) \ - $(shell find src -type f -name \*.core) | deps + $(shell find src -type f -name \*.core) $(if $(strip $?),$(call compile_erl,$?)) ebin/$(PROJECT).app:: $(shell find src -type f -name \*.xrl) \ - $(shell find src -type f -name \*.yrl) | deps + $(shell find src -type f -name \*.yrl) $(if $(strip $?),$(call compile_xyrl,$?)) endif @@ -1125,7 +1132,7 @@ endef $(RELX): @$(call relx_fetch) -relx-rel: $(RELX) | deps app +relx-rel: $(RELX) @$(RELX) -c $(RELX_CONFIG) $(RELX_OPTS) distclean-relx-rel: diff --git a/plugins/relx.mk b/plugins/relx.mk index 9e6f556..8b66277 100644 --- a/plugins/relx.mk +++ b/plugins/relx.mk @@ -38,7 +38,7 @@ endef $(RELX): @$(call relx_fetch) -relx-rel: $(RELX) | deps app +relx-rel: $(RELX) @$(RELX) -c $(RELX_CONFIG) $(RELX_OPTS) distclean-relx-rel: -- cgit v1.2.3