blob: 672fb71448569e90e20b28d7fc4a64b963820b9c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
|
# $NetBSD: depsrc-usebefore.mk,v 1.9 2022/04/18 14:41:42 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 nodes, the commands get
# appended or prepended in declaration order. For .USE nodes, this is the
# expected order, for .USEBEFORE nodes the order is somewhat reversed, and for
# .USE or .USEBEFORE nodes that depend on other .USE or .USEBEFORE nodes, it
# gets even more complicated.
#
# See also:
# .USE
# depsrc-use.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
# target was not.
not-a-main-candidate: .USEBEFORE
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 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
|