Explorar o código

add a command for printing a cleaned up make target database - will be used to analyze package dependencies at some point

SVN-Revision: 22871
Felix Fietkau %!s(int64=15) %!d(string=hai) anos
pai
achega
00d1e599d7
Modificáronse 6 ficheiros con 28 adicións e 8 borrados
  1. 8 3
      Makefile
  2. 8 5
      include/subdir.mk
  3. 3 0
      include/toplevel.mk
  4. 3 0
      scripts/metadata.pl
  5. 4 0
      toolchain/Makefile
  6. 2 0
      tools/Makefile

+ 8 - 3
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

+ 8 - 5
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

+ 3 - 0
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

+ 3 - 0
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
 	}
 }

+ 4 - 0
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)))

+ 2 - 0
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))