aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLoïc Hoguin <[email protected]>2017-05-15 14:37:40 +0200
committerLoïc Hoguin <[email protected]>2017-05-15 14:37:40 +0200
commit3f8688e0d0526b74993d64a166e9ba8559c687e4 (patch)
treeedeb6926266d2c05afd1ccd3f8133ef1c822c058
parentecd4344f3ef7e1b12e6506dd0b5d6e644894b9e0 (diff)
downloaderlang.mk-3f8688e0d0526b74993d64a166e9ba8559c687e4.tar.gz
erlang.mk-3f8688e0d0526b74993d64a166e9ba8559c687e4.tar.bz2
erlang.mk-3f8688e0d0526b74993d64a166e9ba8559c687e4.zip
Make autopatch of Erlang.mk projects less obtrusive
We do not touch the erlang.mk file anymore. We only patch the Makefile to include the top-level Erlang.mk by changing the 'include erlang.mk' line to look for ERLANG_MK_FILENAME if it is defined. The modified Makefile can be committed safely.
-rw-r--r--core/core.mk1
-rw-r--r--core/deps-tools.mk2
-rw-r--r--core/deps.mk12
-rw-r--r--doc/src/guide/deps.asciidoc9
4 files changed, 15 insertions, 9 deletions
diff --git a/core/core.mk b/core/core.mk
index 10fe0a0..278e20f 100644
--- a/core/core.mk
+++ b/core/core.mk
@@ -15,6 +15,7 @@
.PHONY: all app apps deps search rel relup docs install-docs check tests clean distclean help erlang-mk
ERLANG_MK_FILENAME := $(realpath $(lastword $(MAKEFILE_LIST)))
+export ERLANG_MK_FILENAME
ERLANG_MK_VERSION = rolling
diff --git a/core/deps-tools.mk b/core/deps-tools.mk
index de1cc2b..1ad9274 100644
--- a/core/deps-tools.mk
+++ b/core/deps-tools.mk
@@ -74,7 +74,7 @@ endif
$(verbose) set -e; for dep in $^ ; do \
if ! grep -qs ^$$dep$$ $(ERLANG_MK_RECURSIVE_TMP_LIST); then \
echo $$dep >> $(ERLANG_MK_RECURSIVE_TMP_LIST); \
- if grep -qs -E "^[[:blank:]]*include[[:blank:]]+(erlang\.mk|.*/erlang\.mk)$$" \
+ if grep -qs -E "^[[:blank:]]*include[[:blank:]]+(erlang\.mk|.*/erlang\.mk|.*ERLANG_MK_FILENAME.*)$$" \
$$dep/GNUmakefile $$dep/makefile $$dep/Makefile; then \
$(MAKE) -C $$dep fetch-deps \
IS_DEP=1 \
diff --git a/core/deps.mk b/core/deps.mk
index 719691a..2777af5 100644
--- a/core/deps.mk
+++ b/core/deps.mk
@@ -164,11 +164,15 @@ define dep_autopatch_noop
printf "noop:\n" > $(DEPS_DIR)/$(1)/Makefile
endef
-# Overwrite erlang.mk with the current file by default.
+# Replace "include erlang.mk" with a line that will load the parent Erlang.mk
+# if given. Do it for all 3 possible Makefile file names.
ifeq ($(NO_AUTOPATCH_ERLANG_MK),)
define dep_autopatch_erlang_mk
- echo "include $(call core_relpath,$(dir $(ERLANG_MK_FILENAME)),$(DEPS_DIR)/app)/erlang.mk" \
- > $(DEPS_DIR)/$1/erlang.mk
+ $t for f in Makefile makefile GNUmakefile; do \
+ if [ -f $(DEPS_DIR)/$1/$$f ]; then \
+ sed -i.bak s/'include *erlang.mk'/'include $$(if $$(ERLANG_MK_FILENAME),$$(ERLANG_MK_FILENAME),erlang.mk)'/ $(DEPS_DIR)/$1/$$f; \
+ fi \
+ done
endef
else
define dep_autopatch_erlang_mk
@@ -411,7 +415,7 @@ define dep_autopatch_rebar.erl
end,
[PortSpec(S) || S <- PortSpecs]
end,
- Write("\ninclude $(call core_relpath,$(dir $(ERLANG_MK_FILENAME)),$(DEPS_DIR)/app)/erlang.mk"),
+ Write("\ninclude $$\(if $$\(ERLANG_MK_FILENAME),$$\(ERLANG_MK_FILENAME),erlang.mk)"),
RunPlugin = fun(Plugin, Step) ->
case erlang:function_exported(Plugin, Step, 2) of
false -> ok;
diff --git a/doc/src/guide/deps.asciidoc b/doc/src/guide/deps.asciidoc
index 7b36c91..82e3e89 100644
--- a/doc/src/guide/deps.asciidoc
+++ b/doc/src/guide/deps.asciidoc
@@ -487,10 +487,11 @@ on the kind of project it finds the dependency to be.
as their build tool. This essentially patches Rebar out, and
fixes and converts the project to be compatible with Erlang.mk.
-* Erlang.mk projects have their 'erlang.mk' file redirect to
-the top-level project's Erlang.mk. This is to ensure that
-functionality works across all dependencies, even if the
-dependency's Erlang.mk is outdated.
+* Erlang.mk projects have their 'Makefile' patched, if necessary,
+to include the top-level project's Erlang.mk. This is to ensure
+that functionality works across all dependencies, even if the
+dependency's Erlang.mk is outdated. The patched Makefile
+can be safely committed if necessary.
* Other Erlang projects get a small Erlang.mk Makefile
generated automatically.