Module Name:    src
Committed By:   rillig
Date:           Sun Oct 18 16:33:18 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: suff-main.exp suff-main.mk

Log Message:
make(1): add test for turning a target into a transformation


To generate a diff of this commit:
cvs rdiff -u -r1.942 -r1.943 src/distrib/sets/lists/tests/mi
cvs rdiff -u -r1.166 -r1.167 src/usr.bin/make/unit-tests/Makefile
cvs rdiff -u -r0 -r1.1 src/usr.bin/make/unit-tests/suff-main.exp \
    src/usr.bin/make/unit-tests/suff-main.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.942 src/distrib/sets/lists/tests/mi:1.943
--- src/distrib/sets/lists/tests/mi:1.942	Fri Oct 16 07:12:26 2020
+++ src/distrib/sets/lists/tests/mi	Sun Oct 18 16:33:18 2020
@@ -1,4 +1,4 @@
-# $NetBSD: mi,v 1.942 2020/10/16 07:12:26 mgorny Exp $
+# $NetBSD: mi,v 1.943 2020/10/18 16:33:18 rillig Exp $
 #
 # Note: don't delete entries from here - mark them as "obsolete" instead.
 #
@@ -4987,6 +4987,8 @@
 ./usr/tests/usr.bin/make/unit-tests/shell-ksh.mk				tests-usr.bin-tests	compattestfile,atf
 ./usr/tests/usr.bin/make/unit-tests/shell-sh.exp				tests-usr.bin-tests	compattestfile,atf
 ./usr/tests/usr.bin/make/unit-tests/shell-sh.mk					tests-usr.bin-tests	compattestfile,atf
+./usr/tests/usr.bin/make/unit-tests/suff-main.exp				tests-usr.bin-tests	compattestfile,atf
+./usr/tests/usr.bin/make/unit-tests/suff-main.mk				tests-usr.bin-tests	compattestfile,atf
 ./usr/tests/usr.bin/make/unit-tests/suff-rebuild.exp				tests-usr.bin-tests	compattestfile,atf
 ./usr/tests/usr.bin/make/unit-tests/suff-rebuild.mk				tests-usr.bin-tests	compattestfile,atf
 ./usr/tests/usr.bin/make/unit-tests/suffixes.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.166 src/usr.bin/make/unit-tests/Makefile:1.167
--- src/usr.bin/make/unit-tests/Makefile:1.166	Sat Oct 17 16:53:26 2020
+++ src/usr.bin/make/unit-tests/Makefile	Sun Oct 18 16:33:18 2020
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.166 2020/10/17 16:53:26 rillig Exp $
+# $NetBSD: Makefile,v 1.167 2020/10/18 16:33:18 rillig Exp $
 #
 # Unit tests for make(1)
 #
@@ -250,6 +250,7 @@ TESTS+=		shell-custom
 TESTS+=		shell-ksh
 TESTS+=		shell-sh
 TESTS+=		# suffixes	# runs into an endless loop (try -dA)
+TESTS+=		suff-main
 TESTS+=		suff-rebuild
 TESTS+=		sunshcmd
 TESTS+=		sysv

Added files:

Index: src/usr.bin/make/unit-tests/suff-main.exp
diff -u /dev/null src/usr.bin/make/unit-tests/suff-main.exp:1.1
--- /dev/null	Sun Oct 18 16:33:18 2020
+++ src/usr.bin/make/unit-tests/suff-main.exp	Sun Oct 18 16:33:18 2020
@@ -0,0 +1,2 @@
+: Making next-main
+exit status 0
Index: src/usr.bin/make/unit-tests/suff-main.mk
diff -u /dev/null src/usr.bin/make/unit-tests/suff-main.mk:1.1
--- /dev/null	Sun Oct 18 16:33:18 2020
+++ src/usr.bin/make/unit-tests/suff-main.mk	Sun Oct 18 16:33:18 2020
@@ -0,0 +1,22 @@
+# $NetBSD: suff-main.mk,v 1.1 2020/10/18 16:33:18 rillig Exp $
+#
+# Demonstrate that an inference rule is considered the main target if its
+# suffixes are not known at the point of declaration.
+
+.1.2:
+	: Making ${.TARGET} from ${.IMPSRC}.
+
+# At this point, the target '.1.2' is a normal target.
+# Since it is the first target in the first dependency declaration,
+# it becomes the main target.
+
+next-main:
+	: Making ${.TARGET}
+
+# At this point, 'next-main' is effectively ignored.
+
+# Declaring both '.1' and '.2' as suffixes turns the '.1.2' target into an
+# inference rule (OP_TRANSFORM).  As a side effect, this target is no longer
+# a candidate for the main target.  Therefore the next target is selected as
+# the main target, which in this case is 'next-main'.
+.SUFFIXES: .1 .2

Reply via email to