xref: /freebsd/contrib/bmake/unit-tests/depsrc-usebefore.mk (revision 2f2a5ecdf8a04af94c0c5995fd321cafaf630e45)
1*2f2a5ecdSSimon J. Gerraty# $NetBSD: depsrc-usebefore.mk,v 1.9 2022/04/18 14:41:42 rillig Exp $
22c3632d1SSimon J. Gerraty#
32c3632d1SSimon J. Gerraty# Tests for the special source .USEBEFORE in dependency declarations,
42c3632d1SSimon J. Gerraty# which allows to prepend common commands to other targets.
5e2eeea75SSimon J. Gerraty#
6*2f2a5ecdSSimon J. Gerraty# If a target depends on several .USE or .USEBEFORE nodes, the commands get
7*2f2a5ecdSSimon J. Gerraty# appended or prepended in declaration order.  For .USE nodes, this is the
8*2f2a5ecdSSimon J. Gerraty# expected order, for .USEBEFORE nodes the order is somewhat reversed, and for
9*2f2a5ecdSSimon J. Gerraty# .USE or .USEBEFORE nodes that depend on other .USE or .USEBEFORE nodes, it
10*2f2a5ecdSSimon J. Gerraty# gets even more complicated.
11*2f2a5ecdSSimon J. Gerraty#
12e2eeea75SSimon J. Gerraty# See also:
13e2eeea75SSimon J. Gerraty#	.USE
14e2eeea75SSimon J. Gerraty#	depsrc-use.mk
152c3632d1SSimon J. Gerraty
169f45a3c8SSimon J. Gerraty# Before make.h 1.280 from 2021-12-28, a .USEBEFORE target was accidentally
179f45a3c8SSimon J. Gerraty# regarded as a candidate for the main target.  On the other hand, a .USE
189f45a3c8SSimon J. Gerraty# target was not.
199f45a3c8SSimon J. Gerratynot-a-main-candidate: .USEBEFORE
209f45a3c8SSimon J. Gerraty
21*2f2a5ecdSSimon J. Gerratyall:
22*2f2a5ecdSSimon J. Gerraty	@${MAKE} -r -f ${MAKEFILE} ordering
23*2f2a5ecdSSimon J. Gerraty	@${MAKE} -r -f ${MAKEFILE} directly
242c3632d1SSimon J. Gerraty
25*2f2a5ecdSSimon J. Gerratyordering: before-1 before-2 after-1 after-2
262c3632d1SSimon J. Gerraty
27*2f2a5ecdSSimon J. Gerratybefore-1: .USEBEFORE before-1-before-1 before-1-before-2 before-1-after-1 before-1-after-2
28*2f2a5ecdSSimon J. Gerraty	@echo before-1 1
29*2f2a5ecdSSimon J. Gerraty	@echo before-1 2
30*2f2a5ecdSSimon J. Gerraty
31*2f2a5ecdSSimon J. Gerratybefore-1-before-1: .USEBEFORE
32*2f2a5ecdSSimon J. Gerraty	@echo before-1-before-1 1
33*2f2a5ecdSSimon J. Gerraty	@echo before-1-before-1 2
34*2f2a5ecdSSimon J. Gerraty
35*2f2a5ecdSSimon J. Gerratybefore-1-before-2: .USEBEFORE
36*2f2a5ecdSSimon J. Gerraty	@echo before-1-before-2 1
37*2f2a5ecdSSimon J. Gerraty	@echo before-1-before-2 2
38*2f2a5ecdSSimon J. Gerraty
39*2f2a5ecdSSimon J. Gerratybefore-1-after-1: .USE
40*2f2a5ecdSSimon J. Gerraty	@echo before-1-after-1 1
41*2f2a5ecdSSimon J. Gerraty	@echo before-1-after-1 2
42*2f2a5ecdSSimon J. Gerraty
43*2f2a5ecdSSimon J. Gerratybefore-1-after-2: .USE
44*2f2a5ecdSSimon J. Gerraty	@echo before-1-after-2 1
45*2f2a5ecdSSimon J. Gerraty	@echo before-1-after-2 2
46*2f2a5ecdSSimon J. Gerraty
47*2f2a5ecdSSimon J. Gerratybefore-2: .USEBEFORE before-2-before-1 before-2-before-2 before-2-after-1 before-2-after-2
48*2f2a5ecdSSimon J. Gerraty	@echo before-2 1
49*2f2a5ecdSSimon J. Gerraty	@echo before-2 2
50*2f2a5ecdSSimon J. Gerraty
51*2f2a5ecdSSimon J. Gerratybefore-2-before-1: .USEBEFORE
52*2f2a5ecdSSimon J. Gerraty	@echo before-2-before-1 1
53*2f2a5ecdSSimon J. Gerraty	@echo before-2-before-1 2
54*2f2a5ecdSSimon J. Gerraty
55*2f2a5ecdSSimon J. Gerratybefore-2-before-2: .USEBEFORE
56*2f2a5ecdSSimon J. Gerraty	@echo before-2-before-2 1
57*2f2a5ecdSSimon J. Gerraty	@echo before-2-before-2 2
58*2f2a5ecdSSimon J. Gerraty
59*2f2a5ecdSSimon J. Gerratybefore-2-after-1: .USE
60*2f2a5ecdSSimon J. Gerraty	@echo before-2-after-1 1
61*2f2a5ecdSSimon J. Gerraty	@echo before-2-after-1 2
62*2f2a5ecdSSimon J. Gerraty
63*2f2a5ecdSSimon J. Gerratybefore-2-after-2: .USE
64*2f2a5ecdSSimon J. Gerraty	@echo before-2-after-2 1
65*2f2a5ecdSSimon J. Gerraty	@echo before-2-after-2 2
66*2f2a5ecdSSimon J. Gerraty
67*2f2a5ecdSSimon J. Gerratyafter-1: .USE after-1-before-1 after-1-before-2 after-1-after-1 after-1-after-2
68*2f2a5ecdSSimon J. Gerraty	@echo after-1 1
69*2f2a5ecdSSimon J. Gerraty	@echo after-1 2
70*2f2a5ecdSSimon J. Gerraty
71*2f2a5ecdSSimon J. Gerratyafter-1-before-1: .USEBEFORE
72*2f2a5ecdSSimon J. Gerraty	@echo after-1-before-1 1
73*2f2a5ecdSSimon J. Gerraty	@echo after-1-before-1 2
74*2f2a5ecdSSimon J. Gerraty
75*2f2a5ecdSSimon J. Gerratyafter-1-before-2: .USEBEFORE
76*2f2a5ecdSSimon J. Gerraty	@echo after-1-before-2 1
77*2f2a5ecdSSimon J. Gerraty	@echo after-1-before-2 2
78*2f2a5ecdSSimon J. Gerraty
79*2f2a5ecdSSimon J. Gerratyafter-1-after-1: .USE
80*2f2a5ecdSSimon J. Gerraty	@echo after-1-after-1 1
81*2f2a5ecdSSimon J. Gerraty	@echo after-1-after-1 2
82*2f2a5ecdSSimon J. Gerraty
83*2f2a5ecdSSimon J. Gerratyafter-1-after-2: .USE
84*2f2a5ecdSSimon J. Gerraty	@echo after-1-after-2 1
85*2f2a5ecdSSimon J. Gerraty	@echo after-1-after-2 2
86*2f2a5ecdSSimon J. Gerraty
87*2f2a5ecdSSimon J. Gerratyafter-2: .USE after-2-before-1 after-2-before-2 after-2-after-1 after-2-after-2
88*2f2a5ecdSSimon J. Gerraty	@echo after-2 1
89*2f2a5ecdSSimon J. Gerraty	@echo after-2 2
90*2f2a5ecdSSimon J. Gerraty
91*2f2a5ecdSSimon J. Gerratyafter-2-before-1: .USEBEFORE
92*2f2a5ecdSSimon J. Gerraty	@echo after-2-before-1 1
93*2f2a5ecdSSimon J. Gerraty	@echo after-2-before-1 2
94*2f2a5ecdSSimon J. Gerraty
95*2f2a5ecdSSimon J. Gerratyafter-2-before-2: .USEBEFORE
96*2f2a5ecdSSimon J. Gerraty	@echo after-2-before-2 1
97*2f2a5ecdSSimon J. Gerraty	@echo after-2-before-2 2
98*2f2a5ecdSSimon J. Gerraty
99*2f2a5ecdSSimon J. Gerratyafter-2-after-1: .USE
100*2f2a5ecdSSimon J. Gerraty	@echo after-2-after-1 1
101*2f2a5ecdSSimon J. Gerraty	@echo after-2-after-1 2
102*2f2a5ecdSSimon J. Gerraty
103*2f2a5ecdSSimon J. Gerratyafter-2-after-2: .USE
104*2f2a5ecdSSimon J. Gerraty	@echo after-2-after-2 1
105*2f2a5ecdSSimon J. Gerraty	@echo after-2-after-2 2
1062c3632d1SSimon J. Gerraty
1072c3632d1SSimon J. Gerraty# It is possible but uncommon to have a .USEBEFORE target with no commands.
1082c3632d1SSimon J. Gerraty# This may happen as the result of expanding a .for loop.
1092c3632d1SSimon J. Gerratyempty: .USEBEFORE
1102c3632d1SSimon J. Gerraty
111*2f2a5ecdSSimon J. Gerraty# It is technically possible to directly make a .USEBEFORE target, but it
112*2f2a5ecdSSimon J. Gerraty# doesn't make sense since GNode_IsOODate considers such a target to always be
113*2f2a5ecdSSimon J. Gerraty# up to date.
1142c3632d1SSimon J. Gerratydirectly: .USEBEFORE
1152c3632d1SSimon J. Gerraty	@echo directly
116