about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--Makerules24
1 files changed, 14 insertions, 10 deletions
diff --git a/Makerules b/Makerules
index c3d780800f..18f276ece5 100644
--- a/Makerules
+++ b/Makerules
@@ -1355,18 +1355,22 @@ ifdef objpfx
 stubs: $(objpfx)stubs
 endif
 $(objpfx)stubs: $(+depfiles)
+ifneq (,$(strip $(+depfiles)))
 # Use /dev/null since `...` might expand to empty.
-	(s=`cd $(sysdep_dir) && $(PWD_P)`; \
-	 $(patsubst %/,cd % &&,$(objpfx)) \
-	 sed -n 's/^stub_warning *(\([^)]*\).*$$/#define __stub_\1/p' \
-	  `sed -n -e 's@$(sysdep_dir)/@'"$$s"'/@g' \
-		  -e 's@\$$(common-objpfx)@$(..)@g' -e 's@\$$(objpfx)@@g' \
-		  -e '/:  *[^ ]/{s@^.*: *\([^ ]*\) .*$$@\1@; h; }' \
-		  -e '/:$$/d' \
-		  -e '/stub-tag\.h/{; g; p; }' \
-		  $(patsubst $(objpfx)%,%,$^) /dev/null` \
-	     /dev/null) > $@T
+	c=`($(patsubst %/,cd % &&,$(objpfx)) \
+	    sed -n -e 's@\$$(common-objpfx)@$(common-objpfx)@g' \
+		   -e 's@\$$(objpfx)@$(objpfx)@g' \
+		   -e '/stub-tag\.h/{; g; s/./&/p; }' \
+		   -e '/:/{x; s/^.*$$//; x; }' \
+		   -e 's/^.*://;s/\\$$//;s/^ *\([^ ][^ ]*\) .*$$/\1/' \
+		   -e '/^[^ ][^ ]*$$/{G;s/^.*\n\(..*\)/\1/;s/\n//;h; }' \
+		   $(patsubst $(objpfx)%,%,$^)) | sort | uniq`; \
+	sed -n 's/^stub_warning *(\([^)]*\).*$$/#define __stub_\1/p' \
+	    $$c /dev/null > $@T
 	mv -f $@T $@
+else
+	> $@
+endif
 
 # Make the distribution tar file.