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