summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>2010-09-01 17:51:36 +0000
committernbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>2010-09-01 17:51:36 +0000
commit9dd40f163d25c4e4262d21e4da5120e2e1560050 (patch)
tree6494d9962dbf72a8fe354140ec353be7e0a5f879
parent7a13c34dc66cce53a64c35dd95eb8a8ffc668779 (diff)
add a command for printing a cleaned up make target database - will be used to analyze package dependencies at some point
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@22871 3c298f89-4303-0410-b956-a3cf2f4a3e73
-rw-r--r--Makefile11
-rw-r--r--include/subdir.mk13
-rw-r--r--include/toplevel.mk3
-rwxr-xr-xscripts/metadata.pl3
-rw-r--r--toolchain/Makefile4
-rw-r--r--tools/Makefile2
6 files changed, 28 insertions, 8 deletions
diff --git a/Makefile b/Makefile
index 31042b2e0..4d5d7885e 100644
--- a/Makefile
+++ b/Makefile
@@ -46,9 +46,8 @@ $(package/stamp-install): $(package/stamp-compile)
$(package/stamp-rootfs-prepare): $(package/stamp-install)
$(target/stamp-install): $(package/stamp-compile) $(package/stamp-install) $(package/stamp-rootfs-prepare)
-$(BUILD_DIR)/.prepared: Makefile
- @mkdir -p $$(dirname $@)
- @touch $@
+printdb:
+ @true
prepare: $(target/stamp-compile)
@@ -60,6 +59,11 @@ dirclean: clean
rm -rf $(STAGING_DIR) $(STAGING_DIR_HOST) $(STAGING_DIR_TOOLCHAIN) $(TOOLCHAIN_DIR) $(BUILD_DIR_HOST) $(BUILD_DIR_TOOLCHAIN)
rm -rf $(TMP_DIR)
+ifndef DUMP_TARGET_DB
+$(BUILD_DIR)/.prepared: Makefile
+ @mkdir -p $$(dirname $@)
+ @touch $@
+
tmp/.prereq_packages: .config
unset ERROR; \
for package in $(sort $(prereq-y) $(prereq-m)); do \
@@ -70,6 +74,7 @@ tmp/.prereq_packages: .config
false; \
fi
touch $@
+endif
# check prerequisites before starting to build
prereq: $(target/stamp-prereq) tmp/.prereq_packages
diff --git a/include/subdir.mk b/include/subdir.mk
index b8094afb2..afc95a442 100644
--- a/include/subdir.mk
+++ b/include/subdir.mk
@@ -39,16 +39,18 @@ define subdir
+$(if $(BUILD_LOG),set -o pipefail;) $$(SUBMAKE) -C $(1)/$(bd) $(target) BUILD_VARIANT="$(filter-out __default,$(variant))" $(if $(BUILD_LOG),SILENT= 2>&1 | tee $(BUILD_LOG_DIR)/$(1)/$(bd)/$(target).txt) $(if $(findstring $(bd),$($(1)/builddirs-ignore-$(target))), || $(call MESSAGE, ERROR: $(1)/$(bd) failed to build$(if $(filter-out __default,$(variant)), (build variant: $(variant))).))
)
$$(if $(call debug,$(1)/$(bd),v),,.SILENT: $(1)/$(bd)/$(target))
-
- # legacy targets
- $(call warn_eval,$(1)/$(bd),l,T,$(1)/$(bd)-$(target): $(1)/$(bd)/$(target))
- # aliases
- $(if $(call diralias,$(bd)),$(call warn_eval,$(1)/$(bd),l,T,$(1)/$(call diralias,$(bd))/$(target): $(1)/$(bd)/$(target)))
+ $(if $(DUMP_TARGET_DB),,
+ # legacy targets
+ $(call warn_eval,$(1)/$(bd),l,T,$(1)/$(bd)-$(target): $(1)/$(bd)/$(target))
+ # aliases
+ $(if $(call diralias,$(bd)),$(call warn_eval,$(1)/$(bd),l,T,$(1)/$(call diralias,$(bd))/$(target): $(1)/$(bd)/$(target)))
+ )
)
)
$(foreach target,$(SUBTARGETS),$(call subtarget,$(1),$(target)))
endef
+ifndef DUMP_TARGET_DB
# Parameters: <subdir> <name> <target> <depends> <config options> <stampfile location>
define stampfile
$(1)/stamp-$(3):=$(if $(6),$(6),$(STAGING_DIR))/stamp/.$(2)_$(3)$(if $(5),_$(call confvar,$(5)))
@@ -67,3 +69,4 @@ define stampfile
@rm -f $$($(1)/stamp-$(3))
endef
+endif
diff --git a/include/toplevel.mk b/include/toplevel.mk
index 1b72f5443..dee43cba9 100644
--- a/include/toplevel.mk
+++ b/include/toplevel.mk
@@ -114,6 +114,9 @@ tmp/.prereq-build: include/prereq-build.mk
}
touch $@
+printdb: FORCE
+ @$(_SINGLE)$(NO_TRACE_MAKE) -p $@ V=99 DUMP_TARGET_DB=1 2>&1
+
download: .config FORCE
@+$(SUBMAKE) tools/download
@+$(SUBMAKE) toolchain/download
diff --git a/scripts/metadata.pl b/scripts/metadata.pl
index 7902dec3e..a9242d0a7 100755
--- a/scripts/metadata.pl
+++ b/scripts/metadata.pl
@@ -763,6 +763,7 @@ sub gen_package_mk() {
next unless $cmds;
print <<EOF
+ifndef DUMP_TARGET_DB
\$(TARGET_DIR)/etc/uci-defaults/$preconfig: FORCE
( \\
$cmds \\
@@ -771,6 +772,8 @@ $cmds \\
ifneq (\$(IMAGEOPT)\$(CONFIG_IMAGEOPT),)
package/preconfig: \$(TARGET_DIR)/etc/uci-defaults/$preconfig
endif
+endif
+
EOF
}
}
diff --git a/toolchain/Makefile b/toolchain/Makefile
index 3d8ba4c4b..7c96c85e2 100644
--- a/toolchain/Makefile
+++ b/toolchain/Makefile
@@ -51,6 +51,7 @@ ifdef CONFIG_GCC_VERSION_LLVM
$(curdir)/gcc/minimal/compile += $(curdir)/llvm/install
endif
+ifndef DUMP_TARGET_DB
ifneq ($(ARCH),)
$(TOOLCHAIN_DIR)/info.mk: .config
@for dir in $(TOOLCHAIN_DIR); do ( \
@@ -62,6 +63,7 @@ ifneq ($(ARCH),)
@grep GCC_VERSION $@ >/dev/null 2>&1 || $(INSTALL_DATA) $(TOPDIR)/toolchain/info.mk $@
@touch $@
endif
+endif
# prerequisites for the individual targets
$(curdir)/ := .config prereq
@@ -69,7 +71,9 @@ $(curdir)//prepare = $(STAGING_DIR)/.prepared $(TOOLCHAIN_DIR)/info.mk
$(curdir)//compile = $(1)/prepare
$(curdir)//install = $(1)/compile
+ifndef DUMP_TARGET_DB
$(TOOLCHAIN_DIR)/stamp/.gcc-initial_installed:
+endif
$(eval $(call stampfile,$(curdir),toolchain,install,$(TOOLCHAIN_DIR)/stamp/.gcc-initial_installed,,$(TOOLCHAIN_DIR)))
$(eval $(call subdir,$(curdir)))
diff --git a/tools/Makefile b/tools/Makefile
index 6e364af7a..5a5c728ab 100644
--- a/tools/Makefile
+++ b/tools/Makefile
@@ -54,6 +54,7 @@ $(curdir)/upslug2/compile := $(curdir)/automake/install
$(curdir)/builddirs := $(tools-y) $(tools-dep) $(tools-)
$(curdir)/builddirs-default := $(tools-y)
+ifndef DUMP_TARGET_DB
define PrepareStaging
@for dir in $(1); do ( \
set -x; \
@@ -84,6 +85,7 @@ $(STAGING_DIR_HOST)/bin/$(1): $(STAGING_DIR)/.prepared
}; ln -s "$$$$FILE" "$$@"
endef
+endif
$(eval $(call PrepareCommand,find,gfind find))
$(eval $(call PrepareCommand,md5sum,md5sum $(SCRIPT_DIR)/md5sum))