Browse Source

Generate `$(PROJECT).d` before calling `make app-build`

This ensures all generated dependencies are prepared and the .d file is
ready before the actual build is started.
Jean-Sébastien Pédron 9 years ago
parent
commit
79de136539
2 changed files with 10 additions and 7 deletions
  1. 8 5
      core/erlc.mk
  2. 2 2
      core/test.mk

+ 8 - 5
core/erlc.mk

@@ -43,10 +43,10 @@ mib_verbose = $(mib_verbose_$(V))
 # Targets.
 # Targets.
 
 
 ifeq ($(wildcard ebin/test),)
 ifeq ($(wildcard ebin/test),)
-app::
+app:: $(PROJECT).d
 	$(verbose) $(MAKE) --no-print-directory app-build
 	$(verbose) $(MAKE) --no-print-directory app-build
 else
 else
-app:: clean
+app:: clean $(PROJECT).d
 	$(verbose) $(MAKE) --no-print-directory app-build
 	$(verbose) $(MAKE) --no-print-directory app-build
 endif
 endif
 
 
@@ -75,7 +75,7 @@ define app_file
 endef
 endef
 endif
 endif
 
 
-app-build: ebin/$(PROJECT).app
+app-build: ebin/$(PROJECT).app ; @echo -n
 
 
 # Source files.
 # Source files.
 
 
@@ -164,7 +164,10 @@ define makedep.erl
 					({attribute, _, file, {Dep, _}}, Acc) -> AddHd(Dep, Acc);
 					({attribute, _, file, {Dep, _}}, Acc) -> AddHd(Dep, Acc);
 					(_, Acc) -> Acc
 					(_, Acc) -> Acc
 				end, [], Forms)),
 				end, [], Forms)),
-				[F, ":", [[" ", D] || D <- Deps], "; touch \$$@\n", CompileFirst(Deps)];
+				case Deps of
+					[] -> "";
+					_ -> [F, "::", [[" ", D] || D <- Deps], "; @touch \$$@\n", CompileFirst(Deps)]
+				end;
 			{error, enoent} ->
 			{error, enoent} ->
 				[]
 				[]
 		end
 		end
@@ -176,7 +179,7 @@ endef
 $(PROJECT).d:: $(ERL_FILES) $(call core_find,include/,*.hrl)
 $(PROJECT).d:: $(ERL_FILES) $(call core_find,include/,*.hrl)
 	$(makedep_verbose) $(call erlang,$(call makedep.erl,$@))
 	$(makedep_verbose) $(call erlang,$(call makedep.erl,$@))
 
 
-include $(PROJECT).d
+-include $(PROJECT).d
 
 
 ebin/$(PROJECT).app:: ebin/
 ebin/$(PROJECT).app:: ebin/
 
 

+ 2 - 2
core/test.mk

@@ -31,12 +31,12 @@ endif
 
 
 ifeq ($(wildcard ebin/test),)
 ifeq ($(wildcard ebin/test),)
 test-build:: ERLC_OPTS=$(TEST_ERLC_OPTS)
 test-build:: ERLC_OPTS=$(TEST_ERLC_OPTS)
-test-build:: clean deps test-deps
+test-build:: clean deps test-deps $(PROJECT).d
 	$(verbose) $(MAKE) --no-print-directory app-build test-dir ERLC_OPTS="$(TEST_ERLC_OPTS)"
 	$(verbose) $(MAKE) --no-print-directory app-build test-dir ERLC_OPTS="$(TEST_ERLC_OPTS)"
 	$(gen_verbose) touch ebin/test
 	$(gen_verbose) touch ebin/test
 else
 else
 test-build:: ERLC_OPTS=$(TEST_ERLC_OPTS)
 test-build:: ERLC_OPTS=$(TEST_ERLC_OPTS)
-test-build:: deps test-deps
+test-build:: deps test-deps $(PROJECT).d
 	$(verbose) $(MAKE) --no-print-directory app-build test-dir ERLC_OPTS="$(TEST_ERLC_OPTS)"
 	$(verbose) $(MAKE) --no-print-directory app-build test-dir ERLC_OPTS="$(TEST_ERLC_OPTS)"
 endif
 endif