|
16 | 16 |
|
17 | 17 | ERLANG_MK_FILENAME := $(realpath $(lastword $(MAKEFILE_LIST))) |
18 | 18 |
|
19 | | -ERLANG_MK_VERSION = 2.0.0-pre.2-142-g05c522f |
| 19 | +ERLANG_MK_VERSION = 2.0.0-pre.2-144-g647ffd1 |
20 | 20 |
|
21 | 21 | # Core configuration. |
22 | 22 |
|
@@ -110,8 +110,8 @@ help:: |
110 | 110 | " all Run deps, app and rel targets in that order" \ |
111 | 111 | " app Compile the project" \ |
112 | 112 | " deps Fetch dependencies (if needed) and compile them" \ |
113 | | - " fetch-deps Fetch dependencies (if needed) without compiling them" \ |
114 | | - " list-deps Fetch dependencies (if needed) and list them" \ |
| 113 | + " fetch-deps Fetch dependencies recursively (if needed) without compiling them" \ |
| 114 | + " list-deps List dependencies recursively on stdout" \ |
115 | 115 | " search q=... Search for a package in the built-in index" \ |
116 | 116 | " rel Build a release for this project, if applicable" \ |
117 | 117 | " docs Build the documentation for this project" \ |
@@ -4696,11 +4696,11 @@ endif |
4696 | 4696 | # Forward-declare variables used in core/deps-tools.mk. This is required |
4697 | 4697 | # in case plugins use them. |
4698 | 4698 |
|
4699 | | -ERLANG_MK_RECURSIVE_DEPS_LIST = $(ERLANG_MK_TMP)/list-deps.log |
4700 | | -ERLANG_MK_RECURSIVE_DOC_DEPS_LIST = $(ERLANG_MK_TMP)/list-doc-deps.log |
4701 | | -ERLANG_MK_RECURSIVE_REL_DEPS_LIST = $(ERLANG_MK_TMP)/list-rel-deps.log |
4702 | | -ERLANG_MK_RECURSIVE_TEST_DEPS_LIST = $(ERLANG_MK_TMP)/list-test-deps.log |
4703 | | -ERLANG_MK_RECURSIVE_SHELL_DEPS_LIST = $(ERLANG_MK_TMP)/list-shell-deps.log |
| 4699 | +ERLANG_MK_RECURSIVE_DEPS_LIST = $(ERLANG_MK_TMP)/recursive-deps-list.log |
| 4700 | +ERLANG_MK_RECURSIVE_DOC_DEPS_LIST = $(ERLANG_MK_TMP)/recursive-doc-deps-list.log |
| 4701 | +ERLANG_MK_RECURSIVE_REL_DEPS_LIST = $(ERLANG_MK_TMP)/recursive-rel-deps-list.log |
| 4702 | +ERLANG_MK_RECURSIVE_TEST_DEPS_LIST = $(ERLANG_MK_TMP)/recursive-test-deps-list.log |
| 4703 | +ERLANG_MK_RECURSIVE_SHELL_DEPS_LIST = $(ERLANG_MK_TMP)/recursive-shell-deps-list.log |
4704 | 4704 |
|
4705 | 4705 | # External plugins. |
4706 | 4706 |
|
@@ -6632,171 +6632,107 @@ endif |
6632 | 6632 | endif # ifneq ($(COVER_REPORT_DIR),) |
6633 | 6633 |
|
6634 | 6634 | # Copyright (c) 2013-2015, Loïc Hoguin <essen@ninenines.eu> |
6635 | | -# Copyright (c) 2015, Jean-Sébastien Pédron <jean-sebastien@rabbitmq.com> |
| 6635 | +# Copyright (c) 2015-2016, Jean-Sébastien Pédron <jean-sebastien@rabbitmq.com> |
6636 | 6636 | # This file is part of erlang.mk and subject to the terms of the ISC License. |
6637 | 6637 |
|
6638 | | -# Fetch dependencies (without building them). |
| 6638 | +# Fetch dependencies recursively (without building them). |
6639 | 6639 |
|
6640 | 6640 | .PHONY: fetch-deps fetch-doc-deps fetch-rel-deps fetch-test-deps \ |
6641 | 6641 | fetch-shell-deps |
6642 | 6642 |
|
| 6643 | +.PHONY: $(ERLANG_MK_RECURSIVE_DEPS_LIST) \ |
| 6644 | + $(ERLANG_MK_RECURSIVE_DOC_DEPS_LIST) \ |
| 6645 | + $(ERLANG_MK_RECURSIVE_REL_DEPS_LIST) \ |
| 6646 | + $(ERLANG_MK_RECURSIVE_TEST_DEPS_LIST) \ |
| 6647 | + $(ERLANG_MK_RECURSIVE_SHELL_DEPS_LIST) |
| 6648 | + |
| 6649 | +fetch-deps: $(ERLANG_MK_RECURSIVE_DEPS_LIST) |
| 6650 | +fetch-doc-deps: $(ERLANG_MK_RECURSIVE_DOC_DEPS_LIST) |
| 6651 | +fetch-rel-deps: $(ERLANG_MK_RECURSIVE_REL_DEPS_LIST) |
| 6652 | +fetch-test-deps: $(ERLANG_MK_RECURSIVE_TEST_DEPS_LIST) |
| 6653 | +fetch-shell-deps: $(ERLANG_MK_RECURSIVE_SHELL_DEPS_LIST) |
| 6654 | + |
6643 | 6655 | ifneq ($(SKIP_DEPS),) |
6644 | | -fetch-deps fetch-doc-deps fetch-rel-deps fetch-test-deps fetch-shell-deps: |
6645 | | - @: |
| 6656 | +$(ERLANG_MK_RECURSIVE_DEPS_LIST) \ |
| 6657 | +$(ERLANG_MK_RECURSIVE_DOC_DEPS_LIST) \ |
| 6658 | +$(ERLANG_MK_RECURSIVE_REL_DEPS_LIST) \ |
| 6659 | +$(ERLANG_MK_RECURSIVE_TEST_DEPS_LIST) \ |
| 6660 | +$(ERLANG_MK_RECURSIVE_SHELL_DEPS_LIST): |
| 6661 | + $(verbose) :> $@ |
6646 | 6662 | else |
6647 | 6663 | # By default, we fetch "normal" dependencies. They are also included no |
6648 | 6664 | # matter the type of requested dependencies. |
6649 | 6665 | # |
6650 | 6666 | # $(ALL_DEPS_DIRS) includes $(BUILD_DEPS). |
6651 | | -fetch-deps: $(ALL_DEPS_DIRS) |
6652 | | -fetch-doc-deps: $(ALL_DEPS_DIRS) $(ALL_DOC_DEPS_DIRS) |
6653 | | -fetch-rel-deps: $(ALL_DEPS_DIRS) $(ALL_REL_DEPS_DIRS) |
6654 | | -fetch-test-deps: $(ALL_DEPS_DIRS) $(ALL_TEST_DEPS_DIRS) |
6655 | | -fetch-shell-deps: $(ALL_DEPS_DIRS) $(ALL_SHELL_DEPS_DIRS) |
| 6667 | + |
| 6668 | +$(ERLANG_MK_RECURSIVE_DEPS_LIST): $(ALL_DEPS_DIRS) |
| 6669 | +$(ERLANG_MK_RECURSIVE_DOC_DEPS_LIST): $(ALL_DEPS_DIRS) $(ALL_DOC_DEPS_DIRS) |
| 6670 | +$(ERLANG_MK_RECURSIVE_REL_DEPS_LIST): $(ALL_DEPS_DIRS) $(ALL_REL_DEPS_DIRS) |
| 6671 | +$(ERLANG_MK_RECURSIVE_TEST_DEPS_LIST): $(ALL_DEPS_DIRS) $(ALL_TEST_DEPS_DIRS) |
| 6672 | +$(ERLANG_MK_RECURSIVE_SHELL_DEPS_LIST): $(ALL_DEPS_DIRS) $(ALL_SHELL_DEPS_DIRS) |
6656 | 6673 |
|
6657 | 6674 | # Allow to use fetch-deps and $(DEP_TYPES) to fetch multiple types of |
6658 | 6675 | # dependencies with a single target. |
6659 | 6676 | ifneq ($(filter doc,$(DEP_TYPES)),) |
6660 | | -fetch-deps: $(ALL_DOC_DEPS_DIRS) |
| 6677 | +$(ERLANG_MK_RECURSIVE_DEPS_LIST): $(ALL_DOC_DEPS_DIRS) |
6661 | 6678 | endif |
6662 | 6679 | ifneq ($(filter rel,$(DEP_TYPES)),) |
6663 | | -fetch-deps: $(ALL_REL_DEPS_DIRS) |
| 6680 | +$(ERLANG_MK_RECURSIVE_DEPS_LIST): $(ALL_REL_DEPS_DIRS) |
6664 | 6681 | endif |
6665 | 6682 | ifneq ($(filter test,$(DEP_TYPES)),) |
6666 | | -fetch-deps: $(ALL_TEST_DEPS_DIRS) |
| 6683 | +$(ERLANG_MK_RECURSIVE_DEPS_LIST): $(ALL_TEST_DEPS_DIRS) |
6667 | 6684 | endif |
6668 | 6685 | ifneq ($(filter shell,$(DEP_TYPES)),) |
6669 | | -fetch-deps: $(ALL_SHELL_DEPS_DIRS) |
| 6686 | +$(ERLANG_MK_RECURSIVE_DEPS_LIST): $(ALL_SHELL_DEPS_DIRS) |
6670 | 6687 | endif |
6671 | 6688 |
|
6672 | | -fetch-deps fetch-doc-deps fetch-rel-deps fetch-test-deps fetch-shell-deps: |
| 6689 | +ERLANG_MK_RECURSIVE_TMP_LIST := $(abspath $(ERLANG_MK_TMP)/recursive-tmp-deps.log) |
| 6690 | + |
| 6691 | +$(ERLANG_MK_RECURSIVE_DEPS_LIST) \ |
| 6692 | +$(ERLANG_MK_RECURSIVE_DOC_DEPS_LIST) \ |
| 6693 | +$(ERLANG_MK_RECURSIVE_REL_DEPS_LIST) \ |
| 6694 | +$(ERLANG_MK_RECURSIVE_TEST_DEPS_LIST) \ |
| 6695 | +$(ERLANG_MK_RECURSIVE_SHELL_DEPS_LIST): |
| 6696 | +ifeq ($(IS_APP)$(IS_DEP),) |
| 6697 | + $(verbose) mkdir -p $(ERLANG_MK_TMP) |
| 6698 | + $(verbose) rm -f $(ERLANG_MK_RECURSIVE_TMP_LIST) |
| 6699 | +endif |
6673 | 6700 | ifndef IS_APP |
6674 | 6701 | $(verbose) for dep in $(ALL_APPS_DIRS) ; do \ |
6675 | | - $(MAKE) -C $$dep $@ IS_APP=1 || exit $$?; \ |
| 6702 | + $(MAKE) -C $$dep $@ \ |
| 6703 | + IS_APP=1 \ |
| 6704 | + ERLANG_MK_RECURSIVE_TMP_LIST=$(ERLANG_MK_RECURSIVE_TMP_LIST) \ |
| 6705 | + || exit $$?; \ |
6676 | 6706 | done |
6677 | 6707 | endif |
6678 | | -ifneq ($(IS_DEP),1) |
6679 | | - $(verbose) rm -f $(ERLANG_MK_TMP)/$@.log |
6680 | | -endif |
6681 | | - $(verbose) mkdir -p $(ERLANG_MK_TMP) |
6682 | 6708 | $(verbose) for dep in $^ ; do \ |
6683 | | - if ! grep -qs ^$$dep$$ $(ERLANG_MK_TMP)/$@.log; then \ |
6684 | | - echo $$dep >> $(ERLANG_MK_TMP)/$@.log; \ |
| 6709 | + if ! grep -qs ^$$dep$$ $(ERLANG_MK_RECURSIVE_TMP_LIST); then \ |
| 6710 | + echo $$dep >> $(ERLANG_MK_RECURSIVE_TMP_LIST); \ |
6685 | 6711 | if grep -qs -E "^[[:blank:]]*include[[:blank:]]+(erlang\.mk|.*/erlang\.mk)$$" \ |
6686 | 6712 | $$dep/GNUmakefile $$dep/makefile $$dep/Makefile; then \ |
6687 | | - $(MAKE) -C $$dep fetch-deps IS_DEP=1 || exit $$?; \ |
| 6713 | + $(MAKE) -C $$dep fetch-deps \ |
| 6714 | + IS_DEP=1 \ |
| 6715 | + ERLANG_MK_RECURSIVE_TMP_LIST=$(ERLANG_MK_RECURSIVE_TMP_LIST) \ |
| 6716 | + || exit $$?; \ |
6688 | 6717 | fi \ |
6689 | 6718 | fi \ |
6690 | 6719 | done |
| 6720 | +ifeq ($(IS_APP)$(IS_DEP),) |
| 6721 | + $(verbose) sort < $(ERLANG_MK_RECURSIVE_TMP_LIST) | uniq > $@ |
| 6722 | + $(verbose) rm $(ERLANG_MK_RECURSIVE_TMP_LIST) |
| 6723 | +endif |
6691 | 6724 | endif # ifneq ($(SKIP_DEPS),) |
6692 | 6725 |
|
6693 | 6726 | # List dependencies recursively. |
6694 | 6727 |
|
6695 | 6728 | .PHONY: list-deps list-doc-deps list-rel-deps list-test-deps \ |
6696 | 6729 | list-shell-deps |
6697 | 6730 |
|
6698 | | -ifneq ($(SKIP_DEPS),) |
6699 | | -$(ERLANG_MK_RECURSIVE_DEPS_LIST) \ |
6700 | | -$(ERLANG_MK_RECURSIVE_DOC_DEPS_LIST) \ |
6701 | | -$(ERLANG_MK_RECURSIVE_REL_DEPS_LIST) \ |
6702 | | -$(ERLANG_MK_RECURSIVE_TEST_DEPS_LIST) \ |
6703 | | -$(ERLANG_MK_RECURSIVE_SHELL_DEPS_LIST): |
6704 | | - $(verbose) :> $@ |
6705 | | -else |
6706 | | -LIST_DIRS = $(ALL_DEPS_DIRS) |
6707 | | -LIST_DEPS = $(BUILD_DEPS) $(DEPS) |
6708 | | - |
6709 | | -$(ERLANG_MK_RECURSIVE_DEPS_LIST): fetch-deps |
6710 | | - |
6711 | | -ifneq ($(IS_DEP),1) |
6712 | | -$(ERLANG_MK_RECURSIVE_DOC_DEPS_LIST): LIST_DIRS += $(ALL_DOC_DEPS_DIRS) |
6713 | | -$(ERLANG_MK_RECURSIVE_DOC_DEPS_LIST): LIST_DEPS += $(DOC_DEPS) |
6714 | | -$(ERLANG_MK_RECURSIVE_DOC_DEPS_LIST): fetch-doc-deps |
6715 | | -else |
6716 | | -$(ERLANG_MK_RECURSIVE_DOC_DEPS_LIST): fetch-deps |
6717 | | -endif |
6718 | | - |
6719 | | -ifneq ($(IS_DEP),1) |
6720 | | -$(ERLANG_MK_RECURSIVE_REL_DEPS_LIST): LIST_DIRS += $(ALL_REL_DEPS_DIRS) |
6721 | | -$(ERLANG_MK_RECURSIVE_REL_DEPS_LIST): LIST_DEPS += $(REL_DEPS) |
6722 | | -$(ERLANG_MK_RECURSIVE_REL_DEPS_LIST): fetch-rel-deps |
6723 | | -else |
6724 | | -$(ERLANG_MK_RECURSIVE_REL_DEPS_LIST): fetch-deps |
6725 | | -endif |
6726 | | - |
6727 | | -ifneq ($(IS_DEP),1) |
6728 | | -$(ERLANG_MK_RECURSIVE_TEST_DEPS_LIST): LIST_DIRS += $(ALL_TEST_DEPS_DIRS) |
6729 | | -$(ERLANG_MK_RECURSIVE_TEST_DEPS_LIST): LIST_DEPS += $(TEST_DEPS) |
6730 | | -$(ERLANG_MK_RECURSIVE_TEST_DEPS_LIST): fetch-test-deps |
6731 | | -else |
6732 | | -$(ERLANG_MK_RECURSIVE_TEST_DEPS_LIST): fetch-deps |
6733 | | -endif |
6734 | | - |
6735 | | -ifneq ($(IS_DEP),1) |
6736 | | -$(ERLANG_MK_RECURSIVE_SHELL_DEPS_LIST): LIST_DIRS += $(ALL_SHELL_DEPS_DIRS) |
6737 | | -$(ERLANG_MK_RECURSIVE_SHELL_DEPS_LIST): LIST_DEPS += $(SHELL_DEPS) |
6738 | | -$(ERLANG_MK_RECURSIVE_SHELL_DEPS_LIST): fetch-shell-deps |
6739 | | -else |
6740 | | -$(ERLANG_MK_RECURSIVE_SHELL_DEPS_LIST): fetch-deps |
6741 | | -endif |
6742 | | - |
6743 | | -$(ERLANG_MK_RECURSIVE_DEPS_LIST) \ |
6744 | | -$(ERLANG_MK_RECURSIVE_DOC_DEPS_LIST) \ |
6745 | | -$(ERLANG_MK_RECURSIVE_REL_DEPS_LIST) \ |
6746 | | -$(ERLANG_MK_RECURSIVE_TEST_DEPS_LIST) \ |
6747 | | -$(ERLANG_MK_RECURSIVE_SHELL_DEPS_LIST): |
6748 | | -ifneq ($(IS_DEP),1) |
6749 | | - $(verbose) rm -f $@.orig |
6750 | | -endif |
6751 | | -ifndef IS_APP |
6752 | | - $(verbose) for app in $(filter-out $(CURDIR),$(ALL_APPS_DIRS)); do \ |
6753 | | - $(MAKE) -C "$$app" --no-print-directory $@ IS_APP=1 || :; \ |
6754 | | - done |
6755 | | -endif |
6756 | | - $(verbose) for dep in $(filter-out $(CURDIR),$(LIST_DIRS)); do \ |
6757 | | - if grep -qs -E "^[[:blank:]]*include[[:blank:]]+(erlang\.mk|.*/erlang\.mk)$$" \ |
6758 | | - $$dep/GNUmakefile $$dep/makefile $$dep/Makefile; then \ |
6759 | | - $(MAKE) -C "$$dep" --no-print-directory $@ IS_DEP=1; \ |
6760 | | - fi; \ |
6761 | | - done |
6762 | | - $(verbose) for dep in $(LIST_DEPS); do \ |
6763 | | - echo $(DEPS_DIR)/$$dep; \ |
6764 | | - done >> $@.orig |
6765 | | -ifndef IS_APP |
6766 | | -ifneq ($(IS_DEP),1) |
6767 | | - $(verbose) sort < $@.orig | uniq > $@ |
6768 | | - $(verbose) rm -f $@.orig |
6769 | | -endif |
6770 | | -endif |
6771 | | -endif # ifneq ($(SKIP_DEPS),) |
6772 | | - |
6773 | | -ifneq ($(SKIP_DEPS),) |
6774 | | -list-deps list-doc-deps list-rel-deps list-test-deps list-shell-deps: |
6775 | | - @: |
6776 | | -else |
6777 | 6731 | list-deps: $(ERLANG_MK_RECURSIVE_DEPS_LIST) |
6778 | 6732 | list-doc-deps: $(ERLANG_MK_RECURSIVE_DOC_DEPS_LIST) |
6779 | 6733 | list-rel-deps: $(ERLANG_MK_RECURSIVE_REL_DEPS_LIST) |
6780 | 6734 | list-test-deps: $(ERLANG_MK_RECURSIVE_TEST_DEPS_LIST) |
6781 | 6735 | list-shell-deps: $(ERLANG_MK_RECURSIVE_SHELL_DEPS_LIST) |
6782 | 6736 |
|
6783 | | -# Allow to use fetch-deps and $(DEP_TYPES) to fetch multiple types of |
6784 | | -# dependencies with a single target. |
6785 | | -ifneq ($(IS_DEP),1) |
6786 | | -ifneq ($(filter doc,$(DEP_TYPES)),) |
6787 | | -list-deps: $(ERLANG_MK_RECURSIVE_DOC_DEPS_LIST) |
6788 | | -endif |
6789 | | -ifneq ($(filter rel,$(DEP_TYPES)),) |
6790 | | -list-deps: $(ERLANG_MK_RECURSIVE_REL_DEPS_LIST) |
6791 | | -endif |
6792 | | -ifneq ($(filter test,$(DEP_TYPES)),) |
6793 | | -list-deps: $(ERLANG_MK_RECURSIVE_TEST_DEPS_LIST) |
6794 | | -endif |
6795 | | -ifneq ($(filter shell,$(DEP_TYPES)),) |
6796 | | -list-deps: $(ERLANG_MK_RECURSIVE_SHELL_DEPS_LIST) |
6797 | | -endif |
6798 | | -endif |
6799 | | - |
6800 | 6737 | list-deps list-doc-deps list-rel-deps list-test-deps list-shell-deps: |
6801 | | - $(verbose) cat $^ | sort | uniq |
6802 | | -endif # ifneq ($(SKIP_DEPS),) |
| 6738 | + $(verbose) cat $^ |
0 commit comments