1 1.1 christos $(VAR) = "foo bar baz" 2 1.1 christos a 3 1.1 christos b 4 1.1 christos c 5 1.1 christos foo baR baz, bar baz, foo bar baz, fooadd baradd bazadd 6 1.1 christos mkdir -p 'dir' 7 1.1 christos touch 'dir/obj_1.h' 8 1.1 christos mkdir -p 'dir' 9 1.3 sjg printf '#include "obj_1.h"\nconst char* obj_1 = "dir/obj_1.c";\n' \ 10 1.1 christos >'dir/obj_1.c' 11 1.1 christos Local variables 12 1.1 christos $(@)="dir/obj_1.o" $(<)="dir/obj_1.c" 13 1.1 christos $(*)="dir/obj_1" $(?)="dir/obj_1.h dir/obj_1.c" 14 1.1 christos $(%)="" 15 1.1 christos 16 1.1 christos Directory and filename parts of local variables 17 1.1 christos $(@D)="dir" $(@F)="obj_1.o" 18 1.1 christos $(<D)="dir" $(<F)="obj_1.c" 19 1.1 christos $(*D)="dir" $(*F)="obj_1" 20 1.1 christos $(?D)="dir dir" $(?F)="obj_1.h obj_1.c" 21 1.1 christos $(%D)="" $(%F)="" 22 1.1 christos 23 1.1 christos Local variable substitutions 24 1.1 christos $(@:.o=)="dir/obj_1" $(<:.c=.C)="dir/obj_1.C" 25 1.1 christos $(*:=.h)="dir/obj_1.h" $(?:.h=.H)="dir/obj_1.H dir/obj_1.c" 26 1.1 christos $(%:=)="" 27 1.1 christos 28 1.1 christos Target with suffix transformations 29 1.1 christos $(@D:=append)="dirappend" 30 1.1 christos $(@F:.o=.O)="obj_1.O" 31 1.1 christos 32 1.1 christos Implied source with suffix transformations 33 1.1 christos $(<D:r=rr)="dirr" 34 1.1 christos $(<F:.c=.C)="obj_1.C" 35 1.1 christos 36 1.1 christos Suffixless target with suffix transformations 37 1.1 christos $(*D:.=dot)="dir" 38 1.1 christos $(*F:.a=)="obj_1" 39 1.1 christos 40 1.1 christos Out-of-date dependencies with suffix transformations 41 1.1 christos $(?D:ir=)="d d" 42 1.1 christos $(?F:.h=.H)="obj_1.H obj_1.c" 43 1.1 christos 44 1.1 christos Member with suffix transformations 45 1.1 christos $(%D:.=)="" 46 1.1 christos $(%F:$(VAR2)=$(VAR))="" 47 1.1 christos 48 1.1 christos cc -c -o 'dir/obj_1.o' 'dir/obj_1.c' 49 1.1 christos mkdir -p '.' 50 1.1 christos touch 'dummy' 51 1.1 christos Local variables 52 1.1 christos $(@)="lib.a" $(<)="dir/obj_1.o" 53 1.1 christos $(*)="obj1" $(?)="dir/obj_1.o dummy" 54 1.1 christos $(%)="obj1.o" 55 1.1 christos 56 1.1 christos Directory and filename parts of local variables 57 1.1 christos $(@D)="." $(@F)="lib.a" 58 1.1 christos $(<D)="dir" $(<F)="obj_1.o" 59 1.1 christos $(*D)="." $(*F)="obj1" 60 1.1 christos $(?D)="dir ." $(?F)="obj_1.o dummy" 61 1.1 christos $(%D)="." $(%F)="obj1.o" 62 1.1 christos 63 1.1 christos Local variable substitutions 64 1.1 christos $(@:.o=)="lib.a" $(<:.c=.C)="dir/obj_1.o" 65 1.1 christos $(*:=.h)="obj1.h" $(?:.h=.H)="dir/obj_1.o dummy" 66 1.1 christos $(%:=)="obj1.o" 67 1.1 christos 68 1.1 christos Target with suffix transformations 69 1.1 christos $(@D:=append)=".append" 70 1.1 christos $(@F:.o=.O)="lib.a" 71 1.1 christos 72 1.1 christos Implied source with suffix transformations 73 1.1 christos $(<D:r=rr)="dirr" 74 1.1 christos $(<F:.c=.C)="obj_1.o" 75 1.1 christos 76 1.1 christos Suffixless target with suffix transformations 77 1.1 christos $(*D:.=dot)="dot" 78 1.1 christos $(*F:.a=)="obj1" 79 1.1 christos 80 1.1 christos Out-of-date dependencies with suffix transformations 81 1.1 christos $(?D:ir=)="d ." 82 1.1 christos $(?F:.h=.H)="obj_1.o dummy" 83 1.1 christos 84 1.1 christos Member with suffix transformations 85 1.1 christos $(%D:.=)="" 86 1.1 christos $(%F:$(VAR2)=$(VAR))="obj1foo bar baz" 87 1.1 christos 88 1.1 christos cp 'dir/obj_1.o' 'obj1.o' 89 1.1 christos ar -rcv 'lib.a' 'obj1.o' 90 1.1 christos a - obj1.o 91 1.1 christos rm -f 'obj1.o' 92 1.1 christos mkdir -p '.' 93 1.3 sjg printf '#include "obj_2.h"\nconst char* obj_2 = "obj_2.c";\n' \ 94 1.1 christos >'obj_2.c' 95 1.1 christos mkdir -p '.' 96 1.1 christos touch 'obj_2.h' 97 1.1 christos Local variables 98 1.1 christos $(@)="obj2.o" $(<)="obj_2.c" 99 1.1 christos $(*)="obj2" $(?)="obj_2.c obj_2.h dir/obj_1.h" 100 1.1 christos $(%)="" 101 1.1 christos 102 1.1 christos Directory and filename parts of local variables 103 1.1 christos $(@D)="." $(@F)="obj2.o" 104 1.1 christos $(<D)="." $(<F)="obj_2.c" 105 1.1 christos $(*D)="." $(*F)="obj2" 106 1.1 christos $(?D)=". . dir" $(?F)="obj_2.c obj_2.h obj_1.h" 107 1.1 christos $(%D)="" $(%F)="" 108 1.1 christos 109 1.1 christos Local variable substitutions 110 1.1 christos $(@:.o=)="obj2" $(<:.c=.C)="obj_2.C" 111 1.1 christos $(*:=.h)="obj2.h" $(?:.h=.H)="obj_2.c obj_2.H dir/obj_1.H" 112 1.1 christos $(%:=)="" 113 1.1 christos 114 1.1 christos Target with suffix transformations 115 1.1 christos $(@D:=append)=".append" 116 1.1 christos $(@F:.o=.O)="obj2.O" 117 1.1 christos 118 1.1 christos Implied source with suffix transformations 119 1.1 christos $(<D:r=rr)="." 120 1.1 christos $(<F:.c=.C)="obj_2.C" 121 1.1 christos 122 1.1 christos Suffixless target with suffix transformations 123 1.1 christos $(*D:.=dot)="dot" 124 1.1 christos $(*F:.a=)="obj2" 125 1.1 christos 126 1.1 christos Out-of-date dependencies with suffix transformations 127 1.1 christos $(?D:ir=)=". . d" 128 1.1 christos $(?F:.h=.H)="obj_2.c obj_2.H obj_1.H" 129 1.1 christos 130 1.1 christos Member with suffix transformations 131 1.1 christos $(%D:.=)="" 132 1.1 christos $(%F:$(VAR2)=$(VAR))="" 133 1.1 christos 134 1.1 christos cc -c -o 'obj2.o' 'obj_2.c' 135 1.1 christos ar -rcv 'lib.a' 'obj2.o' 136 1.1 christos a - obj2.o 137 1.1 christos mkdir -p '.' 138 1.1 christos touch 'obj3.h' 139 1.1 christos mkdir -p 'dir' 140 1.1 christos touch 'dir/dummy' 141 1.1 christos mkdir -p '.' 142 1.3 sjg printf '#include "obj3.h"\nconst char* obj3 = "obj3.c";\n' \ 143 1.1 christos >'obj3.c' 144 1.1 christos Local variables 145 1.1 christos $(@)="lib.a" $(<)="obj3.c" 146 1.1 christos $(*)="obj3" $(?)="obj3.h dir/dummy obj3.c" 147 1.1 christos $(%)="obj3.o" 148 1.1 christos 149 1.1 christos Directory and filename parts of local variables 150 1.1 christos $(@D)="." $(@F)="lib.a" 151 1.1 christos $(<D)="." $(<F)="obj3.c" 152 1.1 christos $(*D)="." $(*F)="obj3" 153 1.1 christos $(?D)=". dir ." $(?F)="obj3.h dummy obj3.c" 154 1.1 christos $(%D)="." $(%F)="obj3.o" 155 1.1 christos 156 1.1 christos Local variable substitutions 157 1.1 christos $(@:.o=)="lib.a" $(<:.c=.C)="obj3.C" 158 1.1 christos $(*:=.h)="obj3.h" $(?:.h=.H)="obj3.H dir/dummy obj3.c" 159 1.1 christos $(%:=)="obj3.o" 160 1.1 christos 161 1.1 christos Target with suffix transformations 162 1.1 christos $(@D:=append)=".append" 163 1.1 christos $(@F:.o=.O)="lib.a" 164 1.1 christos 165 1.1 christos Implied source with suffix transformations 166 1.1 christos $(<D:r=rr)="." 167 1.1 christos $(<F:.c=.C)="obj3.C" 168 1.1 christos 169 1.1 christos Suffixless target with suffix transformations 170 1.1 christos $(*D:.=dot)="dot" 171 1.1 christos $(*F:.a=)="obj3" 172 1.1 christos 173 1.1 christos Out-of-date dependencies with suffix transformations 174 1.1 christos $(?D:ir=)=". d ." 175 1.1 christos $(?F:.h=.H)="obj3.H dummy obj3.c" 176 1.1 christos 177 1.1 christos Member with suffix transformations 178 1.1 christos $(%D:.=)="" 179 1.1 christos $(%F:$(VAR2)=$(VAR))="obj3foo bar baz" 180 1.1 christos 181 1.1 christos cc -c -o 'obj3.o' 'obj3.c' 182 1.1 christos ar -rcv 'lib.a' 'obj3.o' 183 1.1 christos a - obj3.o 184 1.1 christos rm -f 'obj3.o' 185 1.2 christos ar -s 'lib.a' 186 1.1 christos exit status 0 187