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