]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/bmake/unit-tests/deptgt.mk
Merge bmake-20201117
[FreeBSD/FreeBSD.git] / contrib / bmake / unit-tests / deptgt.mk
1 # $NetBSD: deptgt.mk,v 1.9 2020/11/15 11:57:00 rillig Exp $
2 #
3 # Tests for special targets like .BEGIN or .SUFFIXES in dependency
4 # declarations.
5
6 # TODO: Implementation
7
8 # Just in case anyone tries to compile several special targets in a single
9 # dependency line: That doesn't work, and make immediately rejects it.
10 .SUFFIXES .PHONY: .c.o
11
12 # The following lines demonstrate how 'targets' is set and reset during
13 # parsing of dependencies.  To see it in action, set breakpoints in:
14 #
15 #       ParseDoDependency       at the beginning
16 #       FinishDependencyGroup   at "targets = NULL"
17 #       Parse_File              at "Lst_Free(targets)"
18 #       Parse_File              at "targets = Lst_New()"
19 #       ParseLine_ShellCommand  at "targets == NULL"
20 #
21 # Keywords:
22 #       parse.c:targets
23
24 target1 target2: sources        # targets := [target1, target2]
25         : command1              # targets == [target1, target2]
26         : command2              # targets == [target1, target2]
27 VAR=value                       # targets := NULL
28         : command3              # parse error, since targets == NULL
29
30 # In a dependency declaration, the list of targets can be empty.
31 # It doesn't matter whether the empty string is generated by a variable
32 # expression or whether it is just omitted.
33 .MAKEFLAGS: -dp
34 ${:U}: empty-source
35         : command for empty targets list
36 : empty-source
37         : command for empty targets list
38 .MAKEFLAGS: -d0
39
40 all:
41         @:;