Module Name: src Committed By: rillig Date: Mon Apr 18 14:38:24 UTC 2022
Modified Files: src/usr.bin/make/unit-tests: depsrc-use.exp depsrc-use.mk depsrc-usebefore.exp depsrc-usebefore.mk Log Message: tests/make: extend tests for .USE and .USEBEFORE To generate a diff of this commit: cvs rdiff -u -r1.3 -r1.4 src/usr.bin/make/unit-tests/depsrc-use.exp \ src/usr.bin/make/unit-tests/depsrc-usebefore.exp cvs rdiff -u -r1.5 -r1.6 src/usr.bin/make/unit-tests/depsrc-use.mk cvs rdiff -u -r1.7 -r1.8 src/usr.bin/make/unit-tests/depsrc-usebefore.mk Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/usr.bin/make/unit-tests/depsrc-use.exp diff -u src/usr.bin/make/unit-tests/depsrc-use.exp:1.3 src/usr.bin/make/unit-tests/depsrc-use.exp:1.4 --- src/usr.bin/make/unit-tests/depsrc-use.exp:1.3 Sat Aug 22 12:30:57 2020 +++ src/usr.bin/make/unit-tests/depsrc-use.exp Mon Apr 18 14:38:24 2022 @@ -2,5 +2,9 @@ first 1 first 2 second 1 second 2 +first-first 1 +first-first 2 +first-second 1 +first-second 2 directly exit status 0 Index: src/usr.bin/make/unit-tests/depsrc-usebefore.exp diff -u src/usr.bin/make/unit-tests/depsrc-usebefore.exp:1.3 src/usr.bin/make/unit-tests/depsrc-usebefore.exp:1.4 --- src/usr.bin/make/unit-tests/depsrc-usebefore.exp:1.3 Sat Aug 22 11:53:18 2020 +++ src/usr.bin/make/unit-tests/depsrc-usebefore.exp Mon Apr 18 14:38:24 2022 @@ -1,6 +1,42 @@ -first 1 -first 2 -second 1 -second 2 -directly +after-2-before-2 1 +after-2-before-2 2 +after-2-before-1 1 +after-2-before-1 2 +after-1-before-2 1 +after-1-before-2 2 +after-1-before-1 1 +after-1-before-1 2 +before-2-before-2 1 +before-2-before-2 2 +before-2-before-1 1 +before-2-before-1 2 +before-1-before-2 1 +before-1-before-2 2 +before-1-before-1 1 +before-1-before-1 2 +before-2 1 +before-2 2 +before-1 1 +before-1 2 +after-1 1 +after-1 2 +after-2 1 +after-2 2 +before-1-after-1 1 +before-1-after-1 2 +before-1-after-2 1 +before-1-after-2 2 +before-2-after-1 1 +before-2-after-1 2 +before-2-after-2 1 +before-2-after-2 2 +after-1-after-1 1 +after-1-after-1 2 +after-1-after-2 1 +after-1-after-2 2 +after-2-after-1 1 +after-2-after-1 2 +after-2-after-2 1 +after-2-after-2 2 +`directly' is up to date. exit status 0 Index: src/usr.bin/make/unit-tests/depsrc-use.mk diff -u src/usr.bin/make/unit-tests/depsrc-use.mk:1.5 src/usr.bin/make/unit-tests/depsrc-use.mk:1.6 --- src/usr.bin/make/unit-tests/depsrc-use.mk:1.5 Tue Dec 28 14:22:51 2021 +++ src/usr.bin/make/unit-tests/depsrc-use.mk Mon Apr 18 14:38:24 2022 @@ -1,7 +1,11 @@ -# $NetBSD: depsrc-use.mk,v 1.5 2021/12/28 14:22:51 rillig Exp $ +# $NetBSD: depsrc-use.mk,v 1.6 2022/04/18 14:38:24 rillig Exp $ # # Tests for the special source .USE in dependency declarations, # which allows to append common commands to other targets. +# +# See also: +# .USEBEFORE +# depsrc-usebefore.mk # Before make.h 1.280 from 2021-12-28, a .USEBEFORE target was accidentally # regarded as a candidate for the main target. On the other hand, a .USE @@ -10,9 +14,15 @@ not-a-main-candidate: .USE all: action directly -first: .USE +first: .USE first-first first-second @echo first 1 # Using ${.TARGET} here would expand to "action" @echo first 2 +first-first: .USE + @echo first-first 1 + @echo first-first 2 +first-second: .USE + @echo first-second 1 + @echo first-second 2 second: .USE @echo second 1 @@ -22,7 +32,7 @@ second: .USE # This may happen as the result of expanding a .for loop. empty: .USE -# It's possible but uncommon to directly make a .USEBEFORE target. +# It's possible but uncommon to directly make a .USE target. directly: .USE @echo directly Index: src/usr.bin/make/unit-tests/depsrc-usebefore.mk diff -u src/usr.bin/make/unit-tests/depsrc-usebefore.mk:1.7 src/usr.bin/make/unit-tests/depsrc-usebefore.mk:1.8 --- src/usr.bin/make/unit-tests/depsrc-usebefore.mk:1.7 Tue Dec 28 14:22:51 2021 +++ src/usr.bin/make/unit-tests/depsrc-usebefore.mk Mon Apr 18 14:38:24 2022 @@ -1,8 +1,12 @@ -# $NetBSD: depsrc-usebefore.mk,v 1.7 2021/12/28 14:22:51 rillig Exp $ +# $NetBSD: depsrc-usebefore.mk,v 1.8 2022/04/18 14:38:24 rillig Exp $ # # Tests for the special source .USEBEFORE in dependency declarations, # which allows to prepend common commands to other targets. # +# If a target depends on several .USE or .USEBEFORE targets, the commands get +# appended in declaration order. For .USE targets, this is the expected +# order, for .USEBEFORE targets the order is somewhat reversed. +# # See also: # .USE # depsrc-use.mk @@ -12,22 +16,98 @@ # target was not. not-a-main-candidate: .USEBEFORE -all: action directly - -first: .USEBEFORE - @echo first 1 # Using ${.TARGET} here would expand to "action" - @echo first 2 # Using ${.TARGET} here would expand to "action" - -second: .USEBEFORE - @echo second 1 - @echo second 2 +all: + @${MAKE} -r -f ${MAKEFILE} ordering + @${MAKE} -r -f ${MAKEFILE} directly + +ordering: before-1 before-2 after-1 after-2 + +before-1: .USEBEFORE before-1-before-1 before-1-before-2 before-1-after-1 before-1-after-2 + @echo before-1 1 + @echo before-1 2 + +before-1-before-1: .USEBEFORE + @echo before-1-before-1 1 + @echo before-1-before-1 2 + +before-1-before-2: .USEBEFORE + @echo before-1-before-2 1 + @echo before-1-before-2 2 + +before-1-after-1: .USE + @echo before-1-after-1 1 + @echo before-1-after-1 2 + +before-1-after-2: .USE + @echo before-1-after-2 1 + @echo before-1-after-2 2 + +before-2: .USEBEFORE before-2-before-1 before-2-before-2 before-2-after-1 before-2-after-2 + @echo before-2 1 + @echo before-2 2 + +before-2-before-1: .USEBEFORE + @echo before-2-before-1 1 + @echo before-2-before-1 2 + +before-2-before-2: .USEBEFORE + @echo before-2-before-2 1 + @echo before-2-before-2 2 + +before-2-after-1: .USE + @echo before-2-after-1 1 + @echo before-2-after-1 2 + +before-2-after-2: .USE + @echo before-2-after-2 1 + @echo before-2-after-2 2 + +after-1: .USE after-1-before-1 after-1-before-2 after-1-after-1 after-1-after-2 + @echo after-1 1 + @echo after-1 2 + +after-1-before-1: .USEBEFORE + @echo after-1-before-1 1 + @echo after-1-before-1 2 + +after-1-before-2: .USEBEFORE + @echo after-1-before-2 1 + @echo after-1-before-2 2 + +after-1-after-1: .USE + @echo after-1-after-1 1 + @echo after-1-after-1 2 + +after-1-after-2: .USE + @echo after-1-after-2 1 + @echo after-1-after-2 2 + +after-2: .USE after-2-before-1 after-2-before-2 after-2-after-1 after-2-after-2 + @echo after-2 1 + @echo after-2 2 + +after-2-before-1: .USEBEFORE + @echo after-2-before-1 1 + @echo after-2-before-1 2 + +after-2-before-2: .USEBEFORE + @echo after-2-before-2 1 + @echo after-2-before-2 2 + +after-2-after-1: .USE + @echo after-2-after-1 1 + @echo after-2-after-1 2 + +after-2-after-2: .USE + @echo after-2-after-2 1 + @echo after-2-after-2 2 # It is possible but uncommon to have a .USEBEFORE target with no commands. # This may happen as the result of expanding a .for loop. empty: .USEBEFORE -# It is possible but uncommon to directly make a .USEBEFORE target. +# It is technically possible to directly make a .USEBEFORE target, but it +# doesn't make sense since GNode_IsOODate considers such a target to always be +# up to date. directly: .USEBEFORE @echo directly - -action: second first empty