Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/usr.bin/make/unit-tests make(1): add another unit test for s...



details:   https://anonhg.NetBSD.org/src/rev/9cf19f464741
branches:  trunk
changeset: 946297:9cf19f464741
user:      rillig <rillig%NetBSD.org@localhost>
date:      Sun Nov 22 20:36:17 2020 +0000

description:
make(1): add another unit test for suffix handling

diffstat:

 distrib/sets/lists/tests/mi                   |    4 +-
 usr.bin/make/parse.c                          |    9 +-
 usr.bin/make/unit-tests/Makefile              |    6 +-
 usr.bin/make/unit-tests/suff-main-several.exp |  131 ++++++++++++++++++++++++++
 usr.bin/make/unit-tests/suff-main-several.mk  |   42 ++++++++
 5 files changed, 186 insertions(+), 6 deletions(-)

diffs (264 lines):

diff -r d4e262d5c909 -r 9cf19f464741 distrib/sets/lists/tests/mi
--- a/distrib/sets/lists/tests/mi       Sun Nov 22 20:29:53 2020 +0000
+++ b/distrib/sets/lists/tests/mi       Sun Nov 22 20:36:17 2020 +0000
@@ -1,4 +1,4 @@
-# $NetBSD: mi,v 1.972 2020/11/22 19:37:27 rillig Exp $
+# $NetBSD: mi,v 1.973 2020/11/22 20:36:17 rillig Exp $
 #
 # Note: don't delete entries from here - mark them as "obsolete" instead.
 #
@@ -5285,6 +5285,8 @@
 ./usr/tests/usr.bin/make/unit-tests/suff-incomplete.mk                         tests-usr.bin-tests     compattestfile,atf
 ./usr/tests/usr.bin/make/unit-tests/suff-lookup.exp                            tests-usr.bin-tests     compattestfile,atf
 ./usr/tests/usr.bin/make/unit-tests/suff-lookup.mk                             tests-usr.bin-tests     compattestfile,atf
+./usr/tests/usr.bin/make/unit-tests/suff-main-several.exp                      tests-usr.bin-tests     compattestfile,atf
+./usr/tests/usr.bin/make/unit-tests/suff-main-several.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
diff -r d4e262d5c909 -r 9cf19f464741 usr.bin/make/parse.c
--- a/usr.bin/make/parse.c      Sun Nov 22 20:29:53 2020 +0000
+++ b/usr.bin/make/parse.c      Sun Nov 22 20:36:17 2020 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: parse.c,v 1.447 2020/11/22 20:29:53 rillig Exp $       */
+/*     $NetBSD: parse.c,v 1.448 2020/11/22 20:36:17 rillig Exp $       */
 
 /*
  * Copyright (c) 1988, 1989, 1990, 1993
@@ -117,7 +117,7 @@
 #include "pathnames.h"
 
 /*     "@(#)parse.c    8.3 (Berkeley) 3/19/94" */
-MAKE_RCSID("$NetBSD: parse.c,v 1.447 2020/11/22 20:29:53 rillig Exp $");
+MAKE_RCSID("$NetBSD: parse.c,v 1.448 2020/11/22 20:36:17 rillig Exp $");
 
 /* types and constants */
 
@@ -902,9 +902,10 @@
      * the sources of said target to the list of things to create.
      *
      * Note that this will only be invoked if the user didn't specify a
-     * target on the command line. This is to allow .ifmake to succeed.
+     * target on the command line and the .MAIN occurs for the first time.
      *
-     * XXX: Double-check all of the above comment.
+     * See ParseDoDependencyTargetSpecial, branch SP_MAIN.
+     * See unit-tests/cond-func-make-main.mk.
      */
     Lst_Append(opts.create, bmake_strdup(src));
     /*
diff -r d4e262d5c909 -r 9cf19f464741 usr.bin/make/unit-tests/Makefile
--- a/usr.bin/make/unit-tests/Makefile  Sun Nov 22 20:29:53 2020 +0000
+++ b/usr.bin/make/unit-tests/Makefile  Sun Nov 22 20:36:17 2020 +0000
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.217 2020/11/22 19:37:27 rillig Exp $
+# $NetBSD: Makefile,v 1.218 2020/11/22 20:36:17 rillig Exp $
 #
 # Unit tests for make(1)
 #
@@ -267,6 +267,7 @@
 TESTS+=                suff-incomplete
 TESTS+=                suff-lookup
 TESTS+=                suff-main
+TESTS+=                suff-main-several
 TESTS+=                suff-rebuild
 TESTS+=                suff-self
 TESTS+=                suff-transform-endless
@@ -454,6 +455,7 @@
 # The "-q" may be there or not, see jobs.c, variable shells.
 SED_CMDS.opt-debug-jobs+=      -e 's,^\(.Command: <shell>\) -q,\1,'
 SED_CMDS.suff-main+=           ${STD_SED_CMDS.dg1}
+SED_CMDS.suff-main-several+=   ${STD_SED_CMDS.dg1}
 SED_CMDS.var-op-shell+=        \
        -e 's,^${.SHELL:T}: [ 0-9:]*,,' \
        -e '/command/s,No such.*,not found,'
@@ -471,6 +473,8 @@
 POSTPROC.deptgt-suffixes= awk '/^\#\*\*\* Suffixes/,/^never-stop/'
 POSTPROC.gnode-submake=        awk '/Input graph/, /^$$/'
 POSTPROC.varname-empty=        ${TOOL_SED} -n -e '/^Var_Set/p' -e '/^out:/p'
+# The directory cache contains the hard-coded '/usr/share/mk'.
+POSTPROC.suff-main-several=    awk '/Directory Cache/,/^$$/ { next } { print }'
 
 # Some tests reuse other tests, which makes them unnecessarily fragile.
 export-all.rawout: export.mk
diff -r d4e262d5c909 -r 9cf19f464741 usr.bin/make/unit-tests/suff-main-several.exp
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/usr.bin/make/unit-tests/suff-main-several.exp     Sun Nov 22 20:36:17 2020 +0000
@@ -0,0 +1,131 @@
+ParseReadLine (8): '.1.2 .1.3 .1.4:'
+ParseDoDependency(.1.2 .1.3 .1.4:)
+Setting main node to ".1.2"
+ParseReadLine (9): '   : Making ${.TARGET} from ${.IMPSRC}.'
+ParseReadLine (14): 'next-main:'
+ParseDoDependency(next-main:)
+ParseReadLine (15): '  : Making ${.TARGET}'
+ParseReadLine (19): '.SUFFIXES: .1 .2 .3 .4'
+ParseDoDependency(.SUFFIXES: .1 .2 .3 .4)
+Adding suffix ".1"
+Adding suffix ".2"
+Setting main node from ".1.2" back to null
+defining transformation from `.1' to `.2'
+inserting ".1" (1) at end of list
+inserting ".2" (2) at end of list
+Setting main node to ".1.3"
+Adding suffix ".3"
+Setting main node from ".1.3" back to null
+defining transformation from `.1' to `.3'
+inserting ".1" (1) at end of list
+inserting ".3" (3) at end of list
+Setting main node to ".1.4"
+Adding suffix ".4"
+Setting main node from ".1.4" back to null
+defining transformation from `.1' to `.4'
+inserting ".1" (1) at end of list
+inserting ".4" (4) at end of list
+Setting main node to "next-main"
+ParseReadLine (24): '.SUFFIXES:'
+ParseDoDependency(.SUFFIXES:)
+Clearing all suffixes
+ParseReadLine (32): '.SUFFIXES: .4 .3 .2 .1'
+ParseDoDependency(.SUFFIXES: .4 .3 .2 .1)
+Adding suffix ".4"
+Adding suffix ".3"
+Adding suffix ".2"
+Adding suffix ".1"
+ParseReadLine (33): '.SUFFIXES:'
+ParseDoDependency(.SUFFIXES:)
+Clearing all suffixes
+ParseReadLine (34): '.SUFFIXES: .1 .2 .3 .4'
+ParseDoDependency(.SUFFIXES: .1 .2 .3 .4)
+Adding suffix ".1"
+Adding suffix ".2"
+Adding suffix ".3"
+Adding suffix ".4"
+ParseReadLine (35): '.SUFFIXES:'
+ParseDoDependency(.SUFFIXES:)
+Clearing all suffixes
+ParseReadLine (36): '.SUFFIXES: .4 .3 .2 .1'
+ParseDoDependency(.SUFFIXES: .4 .3 .2 .1)
+Adding suffix ".4"
+Adding suffix ".3"
+Adding suffix ".2"
+Adding suffix ".1"
+ParseReadLine (38): 'suff-main-several.1:'
+ParseDoDependency(suff-main-several.1:)
+ParseReadLine (39): '  : Making ${.TARGET} out of nothing.'
+ParseReadLine (40): 'next-main: suff-main-several.{2,3,4}'
+ParseDoDependency(next-main: suff-main-several.{2,3,4})
+# LinkSource: added child next-main - suff-main-several.{2,3,4}
+# next-main, made UNMADE, type OP_DEPENDS|OP_HAS_COMMANDS, flags none
+# suff-main-several.{2,3,4}, made UNMADE, type none, flags none
+ParseReadLine (42): '.MAKEFLAGS: -d0 -dg1'
+ParseDoDependency(.MAKEFLAGS: -d0 -dg1)
+#*** Input graph:
+# .1.2, made UNMADE, type OP_TRANSFORM, flags none
+# .1.3, made UNMADE, type OP_TRANSFORM, flags none
+# .1.4, made UNMADE, type OP_TRANSFORM, flags none
+# next-main, made UNMADE, type OP_DEPENDS|OP_HAS_COMMANDS, flags none
+# suff-main-several.1, made UNMADE, type OP_DEPENDS|OP_HAS_COMMANDS, flags none
+# suff-main-several.{2,3,4}, made UNMADE, type none, flags none
+
+
+#
+#   Files that are only sources:
+#      .1.2 [.1.2]
+#      .1.3 [.1.3]
+#      .1.4 [.1.4]
+#      suff-main-several.{2,3,4} [suff-main-several.{2,3,4}]
+#*** Global Variables:
+.ALLTARGETS      =  .1.2 .1.3 .1.4 next-main suff-main-several.1 suff-main-several.{2,3,4}
+.CURDIR          = <curdir>
+.INCLUDES        = 
+.LIBS            = 
+.MAKE            = <details omitted>
+.MAKE.DEPENDFILE = <details omitted>
+.MAKE.LEVEL      = <details omitted>
+.MAKE.MAKEFILES  = <details omitted>
+.MAKE.MAKEFILE_PREFERENCE = <details omitted>
+.MAKE.OS         = <details omitted>
+.MAKE.PATH_FILEMON = <details omitted>
+.MAKE.PID        = <details omitted>
+.MAKE.PPID       = <details omitted>
+.MAKEFLAGS       =  -r -k -d mps -d 0 -d g1
+.MAKEOVERRIDES   = 
+.OBJDIR          = <curdir>
+.PATH            = . <curdir>
+.TARGETS         = 
+.newline         = 
+
+MACHINE          = <details omitted>
+MACHINE_ARCH     = <details omitted>
+MAKE             = <details omitted>
+MFLAGS           =   -r -k -d mps -d 0 -d g1
+#*** Command-line Variables:
+.MAKE.LEVEL.ENV  = MAKELEVEL
+
+#*** Suffixes:
+# ".4" (num 1, ref 1)
+#      To: 
+#      From: 
+#      Search Path: 
+# ".3" (num 2, ref 1)
+#      To: 
+#      From: 
+#      Search Path: 
+# ".2" (num 3, ref 1)
+#      To: 
+#      From: 
+#      Search Path: 
+# ".1" (num 4, ref 1)
+#      To: 
+#      From: 
+#      Search Path: 
+#*** Transformations:
+make: don't know how to make suff-main-several.2 (continuing)
+make: don't know how to make suff-main-several.3 (continuing)
+make: don't know how to make suff-main-several.4 (continuing)
+`next-main' not remade because of errors.
+exit status 0
diff -r d4e262d5c909 -r 9cf19f464741 usr.bin/make/unit-tests/suff-main-several.mk
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/usr.bin/make/unit-tests/suff-main-several.mk      Sun Nov 22 20:36:17 2020 +0000
@@ -0,0 +1,42 @@
+# $NetBSD: suff-main-several.mk,v 1.1 2020/11/22 20:36:17 rillig Exp $
+#
+# Demonstrate that an inference rule is considered the main target if its
+# suffixes are not known at the point of declaration.
+
+.MAKEFLAGS: -dmps
+
+.1.2 .1.3 .1.4:
+       : Making ${.TARGET} from ${.IMPSRC}.
+
+# At this point, the above targets are normal targets.
+# The target '.1.2' is now the default main target.
+
+next-main:
+       : Making ${.TARGET}
+
+# At this point, 'next-main' is just a regular target.
+
+.SUFFIXES: .1 .2 .3 .4
+
+# Since the targets '.1.2', '.1.3' and '.1.4' have now been turned into
+# transformation rules, 'next-main' is the default main target now.
+
+.SUFFIXES: # clear all
+
+# At this point, 'next-main' is still the default main target, even though
+# it is not the first regular target anymore.
+
+# Define and undefine the suffixes, changing their order.
+# XXX: This should have no effect, but as of 2020-11-22, it does.
+# For some reason, mentioning the suffixes in reverse order disables them.
+.SUFFIXES: .4 .3 .2 .1
+.SUFFIXES: # none
+.SUFFIXES: .1 .2 .3 .4
+.SUFFIXES: # none
+.SUFFIXES: .4 .3 .2 .1
+
+suff-main-several.1:
+       : Making ${.TARGET} out of nothing.
+next-main: suff-main-several.{2,3,4}
+
+.MAKEFLAGS: -d0 -dg1



Home | Main Index | Thread Index | Old Index