Module Name:    src
Committed By:   rillig
Date:           Sun Aug  9 16:32:29 UTC 2020

Modified Files:
        src/distrib/sets/lists/tests: mi
        src/usr.bin/make/unit-tests: Makefile
Added Files:
        src/usr.bin/make/unit-tests: use-inference.exp use-inference.mk

Log Message:
make(1): add test for .USE combined with inference rule without commands

Discovered by christos.


To generate a diff of this commit:
cvs rdiff -u -r1.887 -r1.888 src/distrib/sets/lists/tests/mi
cvs rdiff -u -r1.90 -r1.91 src/usr.bin/make/unit-tests/Makefile
cvs rdiff -u -r0 -r1.1 src/usr.bin/make/unit-tests/use-inference.exp \
    src/usr.bin/make/unit-tests/use-inference.mk

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/distrib/sets/lists/tests/mi
diff -u src/distrib/sets/lists/tests/mi:1.887 src/distrib/sets/lists/tests/mi:1.888
--- src/distrib/sets/lists/tests/mi:1.887	Sun Aug  9 12:59:16 2020
+++ src/distrib/sets/lists/tests/mi	Sun Aug  9 16:32:28 2020
@@ -1,4 +1,4 @@
-# $NetBSD: mi,v 1.887 2020/08/09 12:59:16 rillig Exp $
+# $NetBSD: mi,v 1.888 2020/08/09 16:32:28 rillig Exp $
 #
 # Note: don't delete entries from here - mark them as "obsolete" instead.
 #
@@ -4616,6 +4616,8 @@
 ./usr/tests/usr.bin/make/unit-tests/unexport-env.mk	tests-usr.bin-tests	compattestfile,atf
 ./usr/tests/usr.bin/make/unit-tests/unexport.exp	tests-usr.bin-tests	compattestfile,atf
 ./usr/tests/usr.bin/make/unit-tests/unexport.mk	tests-usr.bin-tests	compattestfile,atf
+./usr/tests/usr.bin/make/unit-tests/use-inference.exp	tests-usr.bin-tests	compattestfile,atf
+./usr/tests/usr.bin/make/unit-tests/use-inference.mk	tests-usr.bin-tests	compattestfile,atf
 ./usr/tests/usr.bin/make/unit-tests/varcmd.exp	tests-usr.bin-tests	compattestfile,atf
 ./usr/tests/usr.bin/make/unit-tests/varcmd.mk	tests-usr.bin-tests	compattestfile,atf
 ./usr/tests/usr.bin/make/unit-tests/vardebug.exp	tests-usr.bin-tests	compattestfile,atf

Index: src/usr.bin/make/unit-tests/Makefile
diff -u src/usr.bin/make/unit-tests/Makefile:1.90 src/usr.bin/make/unit-tests/Makefile:1.91
--- src/usr.bin/make/unit-tests/Makefile:1.90	Sun Aug  9 12:59:16 2020
+++ src/usr.bin/make/unit-tests/Makefile	Sun Aug  9 16:32:28 2020
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.90 2020/08/09 12:59:16 rillig Exp $
+# $NetBSD: Makefile,v 1.91 2020/08/09 16:32:28 rillig Exp $
 #
 # Unit tests for make(1)
 #
@@ -79,6 +79,7 @@ TESTS+=		sysv
 TESTS+=		ternary
 TESTS+=		unexport
 TESTS+=		unexport-env
+TESTS+=		use-inference
 TESTS+=		varcmd
 TESTS+=		vardebug
 TESTS+=		varfind

Added files:

Index: src/usr.bin/make/unit-tests/use-inference.exp
diff -u /dev/null src/usr.bin/make/unit-tests/use-inference.exp:1.1
--- /dev/null	Sun Aug  9 16:32:29 2020
+++ src/usr.bin/make/unit-tests/use-inference.exp	Sun Aug  9 16:32:28 2020
@@ -0,0 +1,4 @@
+Building use-inference.from from nothing
+make: don't know how to make use-inference.to (continuing)
+`all' not remade because of errors.
+exit status 0
Index: src/usr.bin/make/unit-tests/use-inference.mk
diff -u /dev/null src/usr.bin/make/unit-tests/use-inference.mk:1.1
--- /dev/null	Sun Aug  9 16:32:29 2020
+++ src/usr.bin/make/unit-tests/use-inference.mk	Sun Aug  9 16:32:28 2020
@@ -0,0 +1,35 @@
+# $NetBSD: use-inference.mk,v 1.1 2020/08/09 16:32:28 rillig Exp $
+#
+# Demonstrate that .USE rules do not have an effect on inference rules.
+# At least not in the special case where the inference rule does not
+# have any associated commands.
+
+.SUFFIXES:
+.SUFFIXES: .from .to
+
+all: use-inference.to
+
+verbose: .USE
+	@echo 'Verbosely making $@ out of $>'
+
+.from.to: verbose
+# Since this inference rule does not have any associated commands, it
+# is ignored.
+#
+#	@echo 'Building $@ from $<'
+
+use-inference.from:		# assume it exists
+	@echo 'Building $@ from nothing'
+
+# Possible but unproven explanation:
+#
+# The main target is "all", which depends on "use-inference.to".
+# The inference connects the .from to the .to file, otherwise make
+# would not know that the .from file would need to be built.
+#
+# The .from file is then built.
+#
+# After this, make stops since it doesn't know how to make the .to file.
+# This is strange since make definitely knows about the .from.to suffix
+# inference rule.  But it seems to ignore it, maybe because it doesn't
+# have any associated commands.

Reply via email to