Module Name: src Committed By: rillig Date: Fri Aug 7 13:43:50 UTC 2020
Modified Files: src/usr.bin/make/unit-tests: Makefile impsrc.exp impsrc.mk Log Message: make(1): enable test for .IMPSRC Having this test disabled was very confusing since its content didn't match the actual behavior, and this also differs from the GNU make behavior. To generate a diff of this commit: cvs rdiff -u -r1.85 -r1.86 src/usr.bin/make/unit-tests/Makefile cvs rdiff -u -r1.1 -r1.2 src/usr.bin/make/unit-tests/impsrc.exp cvs rdiff -u -r1.2 -r1.3 src/usr.bin/make/unit-tests/impsrc.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/Makefile diff -u src/usr.bin/make/unit-tests/Makefile:1.85 src/usr.bin/make/unit-tests/Makefile:1.86 --- src/usr.bin/make/unit-tests/Makefile:1.85 Thu Aug 6 16:23:52 2020 +++ src/usr.bin/make/unit-tests/Makefile Fri Aug 7 13:43:50 2020 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.85 2020/08/06 16:23:52 sjg Exp $ +# $NetBSD: Makefile,v 1.86 2020/08/07 13:43:50 rillig Exp $ # # Unit tests for make(1) # @@ -55,7 +55,7 @@ TESTS+= export-env TESTS+= forloop TESTS+= forsubst TESTS+= hash -TESTS+= # impsrc # broken by reverting POSIX changes +TESTS+= impsrc TESTS+= include-main TESTS+= lint TESTS+= misc Index: src/usr.bin/make/unit-tests/impsrc.exp diff -u src/usr.bin/make/unit-tests/impsrc.exp:1.1 src/usr.bin/make/unit-tests/impsrc.exp:1.2 --- src/usr.bin/make/unit-tests/impsrc.exp:1.1 Sat Aug 23 15:05:40 2014 +++ src/usr.bin/make/unit-tests/impsrc.exp Fri Aug 7 13:43:50 2020 @@ -1,13 +1,13 @@ -expected: source4 -actual: source4 +expected: +actual: expected: target1.x actual: target1.x expected: target1.y actual: target1.y -expected: source1 -actual: source1 -expected: source2 -actual: source2 -expected: source1 -actual: source1 +expected: +actual: +expected: +actual: +expected: +actual: exit status 0 Index: src/usr.bin/make/unit-tests/impsrc.mk diff -u src/usr.bin/make/unit-tests/impsrc.mk:1.2 src/usr.bin/make/unit-tests/impsrc.mk:1.3 --- src/usr.bin/make/unit-tests/impsrc.mk:1.2 Sat Aug 30 22:21:07 2014 +++ src/usr.bin/make/unit-tests/impsrc.mk Fri Aug 7 13:43:50 2020 @@ -1,4 +1,4 @@ -# $NetBSD: impsrc.mk,v 1.2 2014/08/30 22:21:07 sjg Exp $ +# $NetBSD: impsrc.mk,v 1.3 2020/08/07 13:43:50 rillig Exp $ # Does ${.IMPSRC} work properly? # It should be set, in order of precedence, to ${.TARGET} of: @@ -6,6 +6,8 @@ # 2) the first prerequisite from the dependency line of an explicit rule, or # 3) the first prerequisite of an explicit rule. # +# Items 2 and 3 work in GNU make. +# Items 2 and 3 are not required by POSIX 2018. all: target1.z target2 target3 target4 @@ -19,25 +21,40 @@ all: target1.z target2 target3 target4 @echo 'expected: target1.y' @echo 'actual: $<' +# (3) Making target1.z out of target1.y is done because of an inference rule. +# Therefore $< is available here. + +# (2) This is an additional dependency on the inference rule .x.y. +# The dependency target1.x comes from the inference rule, +# therefore it is available as $<. target1.y: source3 +# (1) This is an explicit dependency, not an inference rule. +# Therefore POSIX does not specify that $< be available here. target1.x: source4 - @echo 'expected: source4' + @echo 'expected: ' # either 'source4' or '' @echo 'actual: $<' +# (4) This is an explicit dependency, independent of any inference rule. +# Therefore $< is not available here. target2: source1 source2 - @echo 'expected: source1' + @echo 'expected: ' @echo 'actual: $<' +# (5) These are two explicit dependency rules. +# The first doesn't have any dependencies, only the second has. +# If any, the value of $< would be 'source2'. target3: source1 target3: source2 source3 - @echo 'expected: source2' + @echo 'expected: ' @echo 'actual: $<' +# (6) The explicit rule does not have associated commands. +# The value of $< might come from that rule, +# but it's equally fine to leave $< undefined. target4: source1 target4: - @echo 'expected: source1' + @echo 'expected: ' @echo 'actual: $<' source1 source2 source3 source4: -