depsrc-usebefore.mk revision 1.9 1 1.9 rillig # $NetBSD: depsrc-usebefore.mk,v 1.9 2022/04/18 14:41:42 rillig Exp $
2 1.1 rillig #
3 1.3 rillig # Tests for the special source .USEBEFORE in dependency declarations,
4 1.3 rillig # which allows to prepend common commands to other targets.
5 1.6 rillig #
6 1.9 rillig # If a target depends on several .USE or .USEBEFORE nodes, the commands get
7 1.9 rillig # appended or prepended in declaration order. For .USE nodes, this is the
8 1.9 rillig # expected order, for .USEBEFORE nodes the order is somewhat reversed, and for
9 1.9 rillig # .USE or .USEBEFORE nodes that depend on other .USE or .USEBEFORE nodes, it
10 1.9 rillig # gets even more complicated.
11 1.8 rillig #
12 1.6 rillig # See also:
13 1.6 rillig # .USE
14 1.6 rillig # depsrc-use.mk
15 1.1 rillig
16 1.7 rillig # Before make.h 1.280 from 2021-12-28, a .USEBEFORE target was accidentally
17 1.7 rillig # regarded as a candidate for the main target. On the other hand, a .USE
18 1.7 rillig # target was not.
19 1.7 rillig not-a-main-candidate: .USEBEFORE
20 1.7 rillig
21 1.8 rillig all:
22 1.8 rillig @${MAKE} -r -f ${MAKEFILE} ordering
23 1.8 rillig @${MAKE} -r -f ${MAKEFILE} directly
24 1.8 rillig
25 1.8 rillig ordering: before-1 before-2 after-1 after-2
26 1.8 rillig
27 1.8 rillig before-1: .USEBEFORE before-1-before-1 before-1-before-2 before-1-after-1 before-1-after-2
28 1.8 rillig @echo before-1 1
29 1.8 rillig @echo before-1 2
30 1.8 rillig
31 1.8 rillig before-1-before-1: .USEBEFORE
32 1.8 rillig @echo before-1-before-1 1
33 1.8 rillig @echo before-1-before-1 2
34 1.8 rillig
35 1.8 rillig before-1-before-2: .USEBEFORE
36 1.8 rillig @echo before-1-before-2 1
37 1.8 rillig @echo before-1-before-2 2
38 1.8 rillig
39 1.8 rillig before-1-after-1: .USE
40 1.8 rillig @echo before-1-after-1 1
41 1.8 rillig @echo before-1-after-1 2
42 1.8 rillig
43 1.8 rillig before-1-after-2: .USE
44 1.8 rillig @echo before-1-after-2 1
45 1.8 rillig @echo before-1-after-2 2
46 1.8 rillig
47 1.8 rillig before-2: .USEBEFORE before-2-before-1 before-2-before-2 before-2-after-1 before-2-after-2
48 1.8 rillig @echo before-2 1
49 1.8 rillig @echo before-2 2
50 1.8 rillig
51 1.8 rillig before-2-before-1: .USEBEFORE
52 1.8 rillig @echo before-2-before-1 1
53 1.8 rillig @echo before-2-before-1 2
54 1.8 rillig
55 1.8 rillig before-2-before-2: .USEBEFORE
56 1.8 rillig @echo before-2-before-2 1
57 1.8 rillig @echo before-2-before-2 2
58 1.8 rillig
59 1.8 rillig before-2-after-1: .USE
60 1.8 rillig @echo before-2-after-1 1
61 1.8 rillig @echo before-2-after-1 2
62 1.8 rillig
63 1.8 rillig before-2-after-2: .USE
64 1.8 rillig @echo before-2-after-2 1
65 1.8 rillig @echo before-2-after-2 2
66 1.8 rillig
67 1.8 rillig after-1: .USE after-1-before-1 after-1-before-2 after-1-after-1 after-1-after-2
68 1.8 rillig @echo after-1 1
69 1.8 rillig @echo after-1 2
70 1.8 rillig
71 1.8 rillig after-1-before-1: .USEBEFORE
72 1.8 rillig @echo after-1-before-1 1
73 1.8 rillig @echo after-1-before-1 2
74 1.8 rillig
75 1.8 rillig after-1-before-2: .USEBEFORE
76 1.8 rillig @echo after-1-before-2 1
77 1.8 rillig @echo after-1-before-2 2
78 1.8 rillig
79 1.8 rillig after-1-after-1: .USE
80 1.8 rillig @echo after-1-after-1 1
81 1.8 rillig @echo after-1-after-1 2
82 1.8 rillig
83 1.8 rillig after-1-after-2: .USE
84 1.8 rillig @echo after-1-after-2 1
85 1.8 rillig @echo after-1-after-2 2
86 1.8 rillig
87 1.8 rillig after-2: .USE after-2-before-1 after-2-before-2 after-2-after-1 after-2-after-2
88 1.8 rillig @echo after-2 1
89 1.8 rillig @echo after-2 2
90 1.8 rillig
91 1.8 rillig after-2-before-1: .USEBEFORE
92 1.8 rillig @echo after-2-before-1 1
93 1.8 rillig @echo after-2-before-1 2
94 1.8 rillig
95 1.8 rillig after-2-before-2: .USEBEFORE
96 1.8 rillig @echo after-2-before-2 1
97 1.8 rillig @echo after-2-before-2 2
98 1.8 rillig
99 1.8 rillig after-2-after-1: .USE
100 1.8 rillig @echo after-2-after-1 1
101 1.8 rillig @echo after-2-after-1 2
102 1.8 rillig
103 1.8 rillig after-2-after-2: .USE
104 1.8 rillig @echo after-2-after-2 1
105 1.8 rillig @echo after-2-after-2 2
106 1.3 rillig
107 1.5 rillig # It is possible but uncommon to have a .USEBEFORE target with no commands.
108 1.4 rillig # This may happen as the result of expanding a .for loop.
109 1.3 rillig empty: .USEBEFORE
110 1.3 rillig
111 1.8 rillig # It is technically possible to directly make a .USEBEFORE target, but it
112 1.8 rillig # doesn't make sense since GNode_IsOODate considers such a target to always be
113 1.8 rillig # up to date.
114 1.3 rillig directly: .USEBEFORE
115 1.3 rillig @echo directly
116