Browse Source

avoid rdep in the top level make process (subdir.mk) - it leaks too much memory and increases the startup time for regular make commands. timestamp.pl is more lightweight here

SVN-Revision: 8533
Felix Fietkau 18 years ago
parent
commit
d475d94aab
2 changed files with 9 additions and 8 deletions
  1. 3 7
      include/subdir.mk
  2. 6 1
      scripts/timestamp.pl

+ 3 - 7
include/subdir.mk

@@ -37,13 +37,9 @@ endef
 # Parameters: <subdir> <name> <target>
 define stampfile
   $(1)/stamp-$(3):=$(STAGING_DIR)/stamp/.$(2)_$(3)
-  $(if $(__rdep_$(1)),,
-    $(call rdep,$(1),$$($(1)/stamp-$(3)),)
-    __rdep_$(1):=1
-  )
-
-  $$($(1)/stamp-$(3)):
-	@+$(MAKE) $$($(1)/flags-$(3)) $(1)/$(3)
+  $$($(1)/stamp-$(3)): $(TMP_DIR)/.build
+	@+$(SCRIPT_DIR)/timestamp.pl -n $$($(1)/stamp-$(3)) $(1) || \
+		$(MAKE) $$($(1)/flags-$(3)) $(1)/$(3)
 	@mkdir -p $$$$(dirname $$($(1)/stamp-$(3)))
 	@touch $$($(1)/stamp-$(3))
 

+ 6 - 1
scripts/timestamp.pl

@@ -39,6 +39,9 @@ while (@ARGV > 0) {
 		$options{"findopts"} .= " -and -not -path \\*".$str."\\*"
 	} elsif ($path =~ /^-f/) {
 		$options{"findopts"} .= " -follow";
+	} elsif ($path =~ /^-n/) {
+		my $arg = $ARGV[0];
+		$options{$path} = $arg;
 	} elsif ($path =~ /^-/) {
 		$options{$path} = 1;
 	} else {
@@ -54,7 +57,9 @@ while (@ARGV > 0) {
 	}
 }
 
-if ($options{"-p"}) {
+if ($options{"-n"}) {
+	exit ($n eq $options{"-n"} ? 0 : 1);
+} elsif ($options{"-p"}) {
 	print "$n\n";
 } elsif ($options{"-t"}) {
 	print "$ts\n";