common/makefiles/MakeBase.gmk

changeset 839
174a54ce39c4
parent 754
78aaf5d3314d
child 840
6274d4cd22d3
equal deleted inserted replaced
838:ec48d637778a 839:174a54ce39c4
46 $(subst X,X00,\ 46 $(subst X,X00,\
47 $(subst $(SPACE),\n,$(strip $1)))))\ 47 $(subst $(SPACE),\n,$(strip $1)))))\
48 $(compress_post) 48 $(compress_post)
49 49
50 decompress_paths=$(SED) -f $(SRC_ROOT)/common/makefiles/support/ListPathsSafely-uncompress.sed -e 's|X99|\\n|g' \ 50 decompress_paths=$(SED) -f $(SRC_ROOT)/common/makefiles/support/ListPathsSafely-uncompress.sed -e 's|X99|\\n|g' \
51 -e 's|X98|$(OUTPUT_ROOT)|g' -e 's|X97|$(SRC_ROOT)|g' \ 51 -e 's|X98|$(OUTPUT_ROOT)|g' -e 's|X97|$(SRC_ROOT)|g' \
52 -e 's|X00|X|g' | tr '\n' '$2' 52 -e 's|X00|X|g' | tr '\n' '$2'
53 53
54 define ListPathsSafely_If 54 define ListPathsSafely_If
55 $(if $(word $3,$($1)),$(eval $1_LPS$3:=$(call compress_paths,$(wordlist $3,$4,$($1))))) 55 $(if $(word $3,$($1)),$(eval $1_LPS$3:=$(call compress_paths,$(wordlist $3,$4,$($1)))))
56 endef 56 endef
57 57
58 define ListPathsSafely_Printf 58 define ListPathsSafely_Printf
59 $(if $(strip $($1_LPS$4)),printf -- "$(strip $($1_LPS$4))\n" | $(decompress_paths) $3) 59 $(if $(strip $($1_LPS$4)),printf -- "$(strip $($1_LPS$4))\n" | $(decompress_paths) $3)
60 endef 60 endef
61 61
62 # Receipt example: 62 # Receipt example:
63 # rm -f thepaths 63 # rm -f thepaths
64 # $(call ListPathsSafely,THEPATHS,\n, >> thepaths) 64 # $(call ListPathsSafely,THEPATHS,\n, >> thepaths)
65 # The \n argument means translate spaces into \n 65 # The \n argument means translate spaces into \n
66 # if instead , , (a space) is supplied, then spaces remain spaces. 66 # if instead , , (a space) is supplied, then spaces remain spaces.
67 define ListPathsSafely 67 define ListPathsSafely
68 $(if $(word 16001,$($1)),$(error Cannot list safely more than 16000 paths. $1 has $(words $($1)) paths!)) 68 $(if $(word 16001,$($1)),$(error Cannot list safely more than 16000 paths. $1 has $(words $($1)) paths!))
69 $(call ListPathsSafely_If,$1,$2,1,250) 69 $(call ListPathsSafely_If,$1,$2,1,250)
70 $(call ListPathsSafely_If,$1,$2,251,500) 70 $(call ListPathsSafely_If,$1,$2,251,500)
71 $(call ListPathsSafely_If,$1,$2,501,750) 71 $(call ListPathsSafely_If,$1,$2,501,750)
72 $(call ListPathsSafely_If,$1,$2,751,1000) 72 $(call ListPathsSafely_If,$1,$2,751,1000)
73 73
74 $(call ListPathsSafely_If,$1,$2,1001,1250) 74 $(call ListPathsSafely_If,$1,$2,1001,1250)
75 $(call ListPathsSafely_If,$1,$2,1251,1500) 75 $(call ListPathsSafely_If,$1,$2,1251,1500)
76 $(call ListPathsSafely_If,$1,$2,1501,1750) 76 $(call ListPathsSafely_If,$1,$2,1501,1750)
77 $(call ListPathsSafely_If,$1,$2,1751,2000) 77 $(call ListPathsSafely_If,$1,$2,1751,2000)
78 78
79 $(call ListPathsSafely_If,$1,$2,2001,2250) 79 $(call ListPathsSafely_If,$1,$2,2001,2250)
80 $(call ListPathsSafely_If,$1,$2,2251,2500) 80 $(call ListPathsSafely_If,$1,$2,2251,2500)
81 $(call ListPathsSafely_If,$1,$2,2501,2750) 81 $(call ListPathsSafely_If,$1,$2,2501,2750)
82 $(call ListPathsSafely_If,$1,$2,2751,3000) 82 $(call ListPathsSafely_If,$1,$2,2751,3000)
83 83
84 $(call ListPathsSafely_If,$1,$2,3001,3250) 84 $(call ListPathsSafely_If,$1,$2,3001,3250)
85 $(call ListPathsSafely_If,$1,$2,3251,3500) 85 $(call ListPathsSafely_If,$1,$2,3251,3500)
86 $(call ListPathsSafely_If,$1,$2,3501,3750) 86 $(call ListPathsSafely_If,$1,$2,3501,3750)
87 $(call ListPathsSafely_If,$1,$2,3751,4000) 87 $(call ListPathsSafely_If,$1,$2,3751,4000)
88 88
89 $(call ListPathsSafely_If,$1,$2,4001,4250) 89 $(call ListPathsSafely_If,$1,$2,4001,4250)
90 $(call ListPathsSafely_If,$1,$2,4251,4500) 90 $(call ListPathsSafely_If,$1,$2,4251,4500)
91 $(call ListPathsSafely_If,$1,$2,4501,4750) 91 $(call ListPathsSafely_If,$1,$2,4501,4750)
92 $(call ListPathsSafely_If,$1,$2,4751,5000) 92 $(call ListPathsSafely_If,$1,$2,4751,5000)
93 93
94 $(call ListPathsSafely_If,$1,$2,5001,5250) 94 $(call ListPathsSafely_If,$1,$2,5001,5250)
95 $(call ListPathsSafely_If,$1,$2,5251,5500) 95 $(call ListPathsSafely_If,$1,$2,5251,5500)
96 $(call ListPathsSafely_If,$1,$2,5501,5750) 96 $(call ListPathsSafely_If,$1,$2,5501,5750)
97 $(call ListPathsSafely_If,$1,$2,5751,6000) 97 $(call ListPathsSafely_If,$1,$2,5751,6000)
98 98
99 $(call ListPathsSafely_If,$1,$2,6001,6250) 99 $(call ListPathsSafely_If,$1,$2,6001,6250)
100 $(call ListPathsSafely_If,$1,$2,6251,6500) 100 $(call ListPathsSafely_If,$1,$2,6251,6500)
101 $(call ListPathsSafely_If,$1,$2,6501,6750) 101 $(call ListPathsSafely_If,$1,$2,6501,6750)
102 $(call ListPathsSafely_If,$1,$2,6751,7000) 102 $(call ListPathsSafely_If,$1,$2,6751,7000)
103 103
104 $(call ListPathsSafely_If,$1,$2,7001,7250) 104 $(call ListPathsSafely_If,$1,$2,7001,7250)
105 $(call ListPathsSafely_If,$1,$2,7251,7500) 105 $(call ListPathsSafely_If,$1,$2,7251,7500)
106 $(call ListPathsSafely_If,$1,$2,7501,7750) 106 $(call ListPathsSafely_If,$1,$2,7501,7750)
107 $(call ListPathsSafely_If,$1,$2,7751,8000) 107 $(call ListPathsSafely_If,$1,$2,7751,8000)
108 108
109 $(call ListPathsSafely_If,$1,$2,8001,8250) 109 $(call ListPathsSafely_If,$1,$2,8001,8250)
110 $(call ListPathsSafely_If,$1,$2,8251,8500) 110 $(call ListPathsSafely_If,$1,$2,8251,8500)
111 $(call ListPathsSafely_If,$1,$2,8501,8750) 111 $(call ListPathsSafely_If,$1,$2,8501,8750)
112 $(call ListPathsSafely_If,$1,$2,8751,9000) 112 $(call ListPathsSafely_If,$1,$2,8751,9000)
113 113
114 $(call ListPathsSafely_If,$1,$2,9001,9250) 114 $(call ListPathsSafely_If,$1,$2,9001,9250)
115 $(call ListPathsSafely_If,$1,$2,9251,9500) 115 $(call ListPathsSafely_If,$1,$2,9251,9500)
116 $(call ListPathsSafely_If,$1,$2,9501,9750) 116 $(call ListPathsSafely_If,$1,$2,9501,9750)
117 $(call ListPathsSafely_If,$1,$2,9751,10000) 117 $(call ListPathsSafely_If,$1,$2,9751,10000)
118 118
119 $(call ListPathsSafely_If,$1,$2,10001,10250) 119 $(call ListPathsSafely_If,$1,$2,10001,10250)
120 $(call ListPathsSafely_If,$1,$2,10251,10500) 120 $(call ListPathsSafely_If,$1,$2,10251,10500)
121 $(call ListPathsSafely_If,$1,$2,10501,10750) 121 $(call ListPathsSafely_If,$1,$2,10501,10750)
122 $(call ListPathsSafely_If,$1,$2,10751,11000) 122 $(call ListPathsSafely_If,$1,$2,10751,11000)
123 123
124 $(call ListPathsSafely_If,$1,$2,11001,11250) 124 $(call ListPathsSafely_If,$1,$2,11001,11250)
125 $(call ListPathsSafely_If,$1,$2,11251,11500) 125 $(call ListPathsSafely_If,$1,$2,11251,11500)
126 $(call ListPathsSafely_If,$1,$2,11501,11750) 126 $(call ListPathsSafely_If,$1,$2,11501,11750)
127 $(call ListPathsSafely_If,$1,$2,11751,12000) 127 $(call ListPathsSafely_If,$1,$2,11751,12000)
128 128
129 $(call ListPathsSafely_If,$1,$2,12001,12250) 129 $(call ListPathsSafely_If,$1,$2,12001,12250)
130 $(call ListPathsSafely_If,$1,$2,12251,12500) 130 $(call ListPathsSafely_If,$1,$2,12251,12500)
131 $(call ListPathsSafely_If,$1,$2,12501,12750) 131 $(call ListPathsSafely_If,$1,$2,12501,12750)
132 $(call ListPathsSafely_If,$1,$2,12751,13000) 132 $(call ListPathsSafely_If,$1,$2,12751,13000)
133 133
134 $(call ListPathsSafely_If,$1,$2,13001,13250) 134 $(call ListPathsSafely_If,$1,$2,13001,13250)
135 $(call ListPathsSafely_If,$1,$2,13251,13500) 135 $(call ListPathsSafely_If,$1,$2,13251,13500)
136 $(call ListPathsSafely_If,$1,$2,13501,13750) 136 $(call ListPathsSafely_If,$1,$2,13501,13750)
137 $(call ListPathsSafely_If,$1,$2,13751,14000) 137 $(call ListPathsSafely_If,$1,$2,13751,14000)
138 138
139 $(call ListPathsSafely_If,$1,$2,14001,14250) 139 $(call ListPathsSafely_If,$1,$2,14001,14250)
140 $(call ListPathsSafely_If,$1,$2,14251,14500) 140 $(call ListPathsSafely_If,$1,$2,14251,14500)
141 $(call ListPathsSafely_If,$1,$2,14501,14750) 141 $(call ListPathsSafely_If,$1,$2,14501,14750)
142 $(call ListPathsSafely_If,$1,$2,14751,15000) 142 $(call ListPathsSafely_If,$1,$2,14751,15000)
143 143
144 $(call ListPathsSafely_If,$1,$2,15001,15250) 144 $(call ListPathsSafely_If,$1,$2,15001,15250)
145 $(call ListPathsSafely_If,$1,$2,15251,15500) 145 $(call ListPathsSafely_If,$1,$2,15251,15500)
146 $(call ListPathsSafely_If,$1,$2,15501,15750) 146 $(call ListPathsSafely_If,$1,$2,15501,15750)
147 $(call ListPathsSafely_If,$1,$2,15751,16000) 147 $(call ListPathsSafely_If,$1,$2,15751,16000)
148 148
149 $(call ListPathsSafely_Printf,$1,$2,$3,1) 149 $(call ListPathsSafely_Printf,$1,$2,$3,1)
150 $(call ListPathsSafely_Printf,$1,$2,$3,251) 150 $(call ListPathsSafely_Printf,$1,$2,$3,251)
151 $(call ListPathsSafely_Printf,$1,$2,$3,501) 151 $(call ListPathsSafely_Printf,$1,$2,$3,501)
152 $(call ListPathsSafely_Printf,$1,$2,$3,751) 152 $(call ListPathsSafely_Printf,$1,$2,$3,751)
153 153
154 $(call ListPathsSafely_Printf,$1,$2,$3,1001) 154 $(call ListPathsSafely_Printf,$1,$2,$3,1001)
155 $(call ListPathsSafely_Printf,$1,$2,$3,1251) 155 $(call ListPathsSafely_Printf,$1,$2,$3,1251)
156 $(call ListPathsSafely_Printf,$1,$2,$3,1501) 156 $(call ListPathsSafely_Printf,$1,$2,$3,1501)
157 $(call ListPathsSafely_Printf,$1,$2,$3,1751) 157 $(call ListPathsSafely_Printf,$1,$2,$3,1751)
158 158
159 $(call ListPathsSafely_Printf,$1,$2,$3,2001) 159 $(call ListPathsSafely_Printf,$1,$2,$3,2001)
160 $(call ListPathsSafely_Printf,$1,$2,$3,2251) 160 $(call ListPathsSafely_Printf,$1,$2,$3,2251)
161 $(call ListPathsSafely_Printf,$1,$2,$3,2501) 161 $(call ListPathsSafely_Printf,$1,$2,$3,2501)
162 $(call ListPathsSafely_Printf,$1,$2,$3,2751) 162 $(call ListPathsSafely_Printf,$1,$2,$3,2751)
163 163
164 $(call ListPathsSafely_Printf,$1,$2,$3,3001) 164 $(call ListPathsSafely_Printf,$1,$2,$3,3001)
165 $(call ListPathsSafely_Printf,$1,$2,$3,3251) 165 $(call ListPathsSafely_Printf,$1,$2,$3,3251)
166 $(call ListPathsSafely_Printf,$1,$2,$3,3501) 166 $(call ListPathsSafely_Printf,$1,$2,$3,3501)
167 $(call ListPathsSafely_Printf,$1,$2,$3,3751) 167 $(call ListPathsSafely_Printf,$1,$2,$3,3751)
168 168
169 $(call ListPathsSafely_Printf,$1,$2,$3,4001) 169 $(call ListPathsSafely_Printf,$1,$2,$3,4001)
170 $(call ListPathsSafely_Printf,$1,$2,$3,4251) 170 $(call ListPathsSafely_Printf,$1,$2,$3,4251)
171 $(call ListPathsSafely_Printf,$1,$2,$3,4501) 171 $(call ListPathsSafely_Printf,$1,$2,$3,4501)
172 $(call ListPathsSafely_Printf,$1,$2,$3,4751) 172 $(call ListPathsSafely_Printf,$1,$2,$3,4751)
173 173
174 $(call ListPathsSafely_Printf,$1,$2,$3,5001) 174 $(call ListPathsSafely_Printf,$1,$2,$3,5001)
175 $(call ListPathsSafely_Printf,$1,$2,$3,5251) 175 $(call ListPathsSafely_Printf,$1,$2,$3,5251)
176 $(call ListPathsSafely_Printf,$1,$2,$3,5501) 176 $(call ListPathsSafely_Printf,$1,$2,$3,5501)
177 $(call ListPathsSafely_Printf,$1,$2,$3,5751) 177 $(call ListPathsSafely_Printf,$1,$2,$3,5751)
178 178
179 $(call ListPathsSafely_Printf,$1,$2,$3,6001) 179 $(call ListPathsSafely_Printf,$1,$2,$3,6001)
180 $(call ListPathsSafely_Printf,$1,$2,$3,6251) 180 $(call ListPathsSafely_Printf,$1,$2,$3,6251)
181 $(call ListPathsSafely_Printf,$1,$2,$3,6501) 181 $(call ListPathsSafely_Printf,$1,$2,$3,6501)
182 $(call ListPathsSafely_Printf,$1,$2,$3,6751) 182 $(call ListPathsSafely_Printf,$1,$2,$3,6751)
183 183
184 $(call ListPathsSafely_Printf,$1,$2,$3,7001) 184 $(call ListPathsSafely_Printf,$1,$2,$3,7001)
185 $(call ListPathsSafely_Printf,$1,$2,$3,7251) 185 $(call ListPathsSafely_Printf,$1,$2,$3,7251)
186 $(call ListPathsSafely_Printf,$1,$2,$3,7501) 186 $(call ListPathsSafely_Printf,$1,$2,$3,7501)
187 $(call ListPathsSafely_Printf,$1,$2,$3,7751) 187 $(call ListPathsSafely_Printf,$1,$2,$3,7751)
188 188
189 $(call ListPathsSafely_Printf,$1,$2,$3,8001) 189 $(call ListPathsSafely_Printf,$1,$2,$3,8001)
190 $(call ListPathsSafely_Printf,$1,$2,$3,8251) 190 $(call ListPathsSafely_Printf,$1,$2,$3,8251)
191 $(call ListPathsSafely_Printf,$1,$2,$3,8501) 191 $(call ListPathsSafely_Printf,$1,$2,$3,8501)
192 $(call ListPathsSafely_Printf,$1,$2,$3,8751) 192 $(call ListPathsSafely_Printf,$1,$2,$3,8751)
193 193
194 $(call ListPathsSafely_Printf,$1,$2,$3,9001) 194 $(call ListPathsSafely_Printf,$1,$2,$3,9001)
195 $(call ListPathsSafely_Printf,$1,$2,$3,9251) 195 $(call ListPathsSafely_Printf,$1,$2,$3,9251)
196 $(call ListPathsSafely_Printf,$1,$2,$3,9501) 196 $(call ListPathsSafely_Printf,$1,$2,$3,9501)
197 $(call ListPathsSafely_Printf,$1,$2,$3,9751) 197 $(call ListPathsSafely_Printf,$1,$2,$3,9751)
198 198
199 $(call ListPathsSafely_Printf,$1,$2,$3,10001) 199 $(call ListPathsSafely_Printf,$1,$2,$3,10001)
200 $(call ListPathsSafely_Printf,$1,$2,$3,10251) 200 $(call ListPathsSafely_Printf,$1,$2,$3,10251)
201 $(call ListPathsSafely_Printf,$1,$2,$3,10501) 201 $(call ListPathsSafely_Printf,$1,$2,$3,10501)
202 $(call ListPathsSafely_Printf,$1,$2,$3,10751) 202 $(call ListPathsSafely_Printf,$1,$2,$3,10751)
203 203
204 $(call ListPathsSafely_Printf,$1,$2,$3,11001) 204 $(call ListPathsSafely_Printf,$1,$2,$3,11001)
205 $(call ListPathsSafely_Printf,$1,$2,$3,11251) 205 $(call ListPathsSafely_Printf,$1,$2,$3,11251)
206 $(call ListPathsSafely_Printf,$1,$2,$3,11501) 206 $(call ListPathsSafely_Printf,$1,$2,$3,11501)
207 $(call ListPathsSafely_Printf,$1,$2,$3,11751) 207 $(call ListPathsSafely_Printf,$1,$2,$3,11751)
208 208
209 $(call ListPathsSafely_Printf,$1,$2,$3,12001) 209 $(call ListPathsSafely_Printf,$1,$2,$3,12001)
210 $(call ListPathsSafely_Printf,$1,$2,$3,12251) 210 $(call ListPathsSafely_Printf,$1,$2,$3,12251)
211 $(call ListPathsSafely_Printf,$1,$2,$3,12501) 211 $(call ListPathsSafely_Printf,$1,$2,$3,12501)
212 $(call ListPathsSafely_Printf,$1,$2,$3,12751) 212 $(call ListPathsSafely_Printf,$1,$2,$3,12751)
213 213
214 $(call ListPathsSafely_Printf,$1,$2,$3,13001) 214 $(call ListPathsSafely_Printf,$1,$2,$3,13001)
215 $(call ListPathsSafely_Printf,$1,$2,$3,13251) 215 $(call ListPathsSafely_Printf,$1,$2,$3,13251)
216 $(call ListPathsSafely_Printf,$1,$2,$3,13501) 216 $(call ListPathsSafely_Printf,$1,$2,$3,13501)
217 $(call ListPathsSafely_Printf,$1,$2,$3,13751) 217 $(call ListPathsSafely_Printf,$1,$2,$3,13751)
218 218
219 $(call ListPathsSafely_Printf,$1,$2,$3,14001) 219 $(call ListPathsSafely_Printf,$1,$2,$3,14001)
220 $(call ListPathsSafely_Printf,$1,$2,$3,14251) 220 $(call ListPathsSafely_Printf,$1,$2,$3,14251)
221 $(call ListPathsSafely_Printf,$1,$2,$3,14501) 221 $(call ListPathsSafely_Printf,$1,$2,$3,14501)
222 $(call ListPathsSafely_Printf,$1,$2,$3,14751) 222 $(call ListPathsSafely_Printf,$1,$2,$3,14751)
223 223
224 $(call ListPathsSafely_Printf,$1,$2,$3,15001) 224 $(call ListPathsSafely_Printf,$1,$2,$3,15001)
225 $(call ListPathsSafely_Printf,$1,$2,$3,15251) 225 $(call ListPathsSafely_Printf,$1,$2,$3,15251)
226 $(call ListPathsSafely_Printf,$1,$2,$3,15501) 226 $(call ListPathsSafely_Printf,$1,$2,$3,15501)
227 $(call ListPathsSafely_Printf,$1,$2,$3,15751) 227 $(call ListPathsSafely_Printf,$1,$2,$3,15751)
228 endef 228 endef
229 229
230 define ListPathsSafelyNow_IfPrintf 230 define ListPathsSafelyNow_IfPrintf
231 ifneq (,$$(word $4,$$($1))) 231 ifneq (,$$(word $4,$$($1)))
232 $$(eval $1_LPS$4:=$$(call compress_paths,$$(wordlist $4,$5,$$($1)))) 232 $$(eval $1_LPS$4:=$$(call compress_paths,$$(wordlist $4,$5,$$($1))))
233 $$(shell printf -- "$$(strip $$($1_LPS$4))\n" | $(decompress_paths) $3) 233 $$(shell printf -- "$$(strip $$($1_LPS$4))\n" | $(decompress_paths) $3)
234 endif 234 endif
235 endef 235 endef
236 236
237 # And an non-receipt version: 237 # And an non-receipt version:
238 define ListPathsSafelyNow 238 define ListPathsSafelyNow
239 ifneq (,$$(word 10001,$$($1))) 239 ifneq (,$$(word 10001,$$($1)))
240 $$(error Cannot list safely more than 10000 paths. $1 has $$(words $$($1)) paths!) 240 $$(error Cannot list safely more than 10000 paths. $1 has $$(words $$($1)) paths!)
241 endif 241 endif
242 $(call ListPathsSafelyNow_IfPrintf,$1,$2,$3,1,250) 242 $(call ListPathsSafelyNow_IfPrintf,$1,$2,$3,1,250)
243 $(call ListPathsSafelyNow_IfPrintf,$1,$2,$3,251,500) 243 $(call ListPathsSafelyNow_IfPrintf,$1,$2,$3,251,500)
244 $(call ListPathsSafelyNow_IfPrintf,$1,$2,$3,501,750) 244 $(call ListPathsSafelyNow_IfPrintf,$1,$2,$3,501,750)
245 $(call ListPathsSafelyNow_IfPrintf,$1,$2,$3,751,1000) 245 $(call ListPathsSafelyNow_IfPrintf,$1,$2,$3,751,1000)
246 246
247 $(call ListPathsSafelyNow_IfPrintf,$1,$2,$3,1001,1250) 247 $(call ListPathsSafelyNow_IfPrintf,$1,$2,$3,1001,1250)
248 $(call ListPathsSafelyNow_IfPrintf,$1,$2,$3,1251,1500) 248 $(call ListPathsSafelyNow_IfPrintf,$1,$2,$3,1251,1500)
249 $(call ListPathsSafelyNow_IfPrintf,$1,$2,$3,1501,1750) 249 $(call ListPathsSafelyNow_IfPrintf,$1,$2,$3,1501,1750)
250 $(call ListPathsSafelyNow_IfPrintf,$1,$2,$3,1751,2000) 250 $(call ListPathsSafelyNow_IfPrintf,$1,$2,$3,1751,2000)
251 251
252 $(call ListPathsSafelyNow_IfPrintf,$1,$2,$3,2001,2250) 252 $(call ListPathsSafelyNow_IfPrintf,$1,$2,$3,2001,2250)
253 $(call ListPathsSafelyNow_IfPrintf,$1,$2,$3,2251,2500) 253 $(call ListPathsSafelyNow_IfPrintf,$1,$2,$3,2251,2500)
254 $(call ListPathsSafelyNow_IfPrintf,$1,$2,$3,2501,2750) 254 $(call ListPathsSafelyNow_IfPrintf,$1,$2,$3,2501,2750)
255 $(call ListPathsSafelyNow_IfPrintf,$1,$2,$3,2751,3000) 255 $(call ListPathsSafelyNow_IfPrintf,$1,$2,$3,2751,3000)
256 256
257 $(call ListPathsSafelyNow_IfPrintf,$1,$2,$3,3001,3250) 257 $(call ListPathsSafelyNow_IfPrintf,$1,$2,$3,3001,3250)
258 $(call ListPathsSafelyNow_IfPrintf,$1,$2,$3,3251,3500) 258 $(call ListPathsSafelyNow_IfPrintf,$1,$2,$3,3251,3500)
259 $(call ListPathsSafelyNow_IfPrintf,$1,$2,$3,3501,3750) 259 $(call ListPathsSafelyNow_IfPrintf,$1,$2,$3,3501,3750)
260 $(call ListPathsSafelyNow_IfPrintf,$1,$2,$3,3751,4000) 260 $(call ListPathsSafelyNow_IfPrintf,$1,$2,$3,3751,4000)
261 261
262 $(call ListPathsSafelyNow_IfPrintf,$1,$2,$3,4001,4250) 262 $(call ListPathsSafelyNow_IfPrintf,$1,$2,$3,4001,4250)
263 $(call ListPathsSafelyNow_IfPrintf,$1,$2,$3,4251,4500) 263 $(call ListPathsSafelyNow_IfPrintf,$1,$2,$3,4251,4500)
264 $(call ListPathsSafelyNow_IfPrintf,$1,$2,$3,4501,4750) 264 $(call ListPathsSafelyNow_IfPrintf,$1,$2,$3,4501,4750)
265 $(call ListPathsSafelyNow_IfPrintf,$1,$2,$3,4751,5000) 265 $(call ListPathsSafelyNow_IfPrintf,$1,$2,$3,4751,5000)
266 266
267 $(call ListPathsSafelyNow_IfPrintf,$1,$2,$3,5001,5250) 267 $(call ListPathsSafelyNow_IfPrintf,$1,$2,$3,5001,5250)
268 $(call ListPathsSafelyNow_IfPrintf,$1,$2,$3,5251,5500) 268 $(call ListPathsSafelyNow_IfPrintf,$1,$2,$3,5251,5500)
269 $(call ListPathsSafelyNow_IfPrintf,$1,$2,$3,5501,5750) 269 $(call ListPathsSafelyNow_IfPrintf,$1,$2,$3,5501,5750)
270 $(call ListPathsSafelyNow_IfPrintf,$1,$2,$3,5751,6000) 270 $(call ListPathsSafelyNow_IfPrintf,$1,$2,$3,5751,6000)
271 271
272 $(call ListPathsSafelyNow_IfPrintf,$1,$2,$3,6001,6250) 272 $(call ListPathsSafelyNow_IfPrintf,$1,$2,$3,6001,6250)
273 $(call ListPathsSafelyNow_IfPrintf,$1,$2,$3,6251,6500) 273 $(call ListPathsSafelyNow_IfPrintf,$1,$2,$3,6251,6500)
274 $(call ListPathsSafelyNow_IfPrintf,$1,$2,$3,6501,6750) 274 $(call ListPathsSafelyNow_IfPrintf,$1,$2,$3,6501,6750)
275 $(call ListPathsSafelyNow_IfPrintf,$1,$2,$3,6751,7000) 275 $(call ListPathsSafelyNow_IfPrintf,$1,$2,$3,6751,7000)
276 276
277 $(call ListPathsSafelyNow_IfPrintf,$1,$2,$3,7001,7250) 277 $(call ListPathsSafelyNow_IfPrintf,$1,$2,$3,7001,7250)
278 $(call ListPathsSafelyNow_IfPrintf,$1,$2,$3,7251,7500) 278 $(call ListPathsSafelyNow_IfPrintf,$1,$2,$3,7251,7500)
279 $(call ListPathsSafelyNow_IfPrintf,$1,$2,$3,7501,7750) 279 $(call ListPathsSafelyNow_IfPrintf,$1,$2,$3,7501,7750)
280 $(call ListPathsSafelyNow_IfPrintf,$1,$2,$3,7751,8000) 280 $(call ListPathsSafelyNow_IfPrintf,$1,$2,$3,7751,8000)
281 281
282 $(call ListPathsSafelyNow_IfPrintf,$1,$2,$3,8001,8250) 282 $(call ListPathsSafelyNow_IfPrintf,$1,$2,$3,8001,8250)
283 $(call ListPathsSafelyNow_IfPrintf,$1,$2,$3,8251,8500) 283 $(call ListPathsSafelyNow_IfPrintf,$1,$2,$3,8251,8500)
284 $(call ListPathsSafelyNow_IfPrintf,$1,$2,$3,8501,8750) 284 $(call ListPathsSafelyNow_IfPrintf,$1,$2,$3,8501,8750)
285 $(call ListPathsSafelyNow_IfPrintf,$1,$2,$3,8751,9000) 285 $(call ListPathsSafelyNow_IfPrintf,$1,$2,$3,8751,9000)
286 286
287 $(call ListPathsSafelyNow_IfPrintf,$1,$2,$3,9001,9250) 287 $(call ListPathsSafelyNow_IfPrintf,$1,$2,$3,9001,9250)
288 $(call ListPathsSafelyNow_IfPrintf,$1,$2,$3,9251,9500) 288 $(call ListPathsSafelyNow_IfPrintf,$1,$2,$3,9251,9500)
289 $(call ListPathsSafelyNow_IfPrintf,$1,$2,$3,9501,9750) 289 $(call ListPathsSafelyNow_IfPrintf,$1,$2,$3,9501,9750)
290 $(call ListPathsSafelyNow_IfPrintf,$1,$2,$3,9751,10000) 290 $(call ListPathsSafelyNow_IfPrintf,$1,$2,$3,9751,10000)
291 291
292 endef 292 endef
293 293
294 # The source tips can come from the Mercurial repository, or in the files 294 # The source tips can come from the Mercurial repository, or in the files
295 # $(HGTIP_FILENAME) which contains the tip but is also positioned in the same 295 # $(HGTIP_FILENAME) which contains the tip but is also positioned in the same
296 # directory as the original $(HGDIR) directory. 296 # directory as the original $(HGDIR) directory.
297 # These should not be := assignments, only used from the root Makefile. 297 # These should not be := assignments, only used from the root Makefile.
298 HG_VERSION = $(shell $(HG) version 2> /dev/null) 298 HG_VERSION = $(shell $(HG) version 2> /dev/null)
299 HG_DIRECTORY=.hg 299 HG_DIRECTORY=.hg
300 HGTIP_FILENAME=.hgtip 300 HGTIP_FILENAME=.hgtip
301 HG_SEARCH = ./REPO ./*/REPO ./*/*/REPO ./*/*/*/REPO 301 HG_SEARCH = ./REPO ./*/REPO ./*/*/REPO ./*/*/*/REPO
302 REPO_LIST = $(patsubst ./%,%,$(patsubst %/,%,$(sort $(dir \ 302 REPO_LIST = $(patsubst ./%,%,$(patsubst %/,%,$(sort $(dir \
303 $(shell $(CD) $(SRC_ROOT) ; ( $(LS) -d $(HG_SEARCH:%/REPO=%/$(HG_DIRECTORY)) ; \ 303 $(shell $(CD) $(SRC_ROOT) ; ( $(LS) -d $(HG_SEARCH:%/REPO=%/$(HG_DIRECTORY)) ; \
304 $(LS) $(HG_SEARCH:%/REPO=%/$(HGTIP_FILENAME)) ) \ 304 $(LS) $(HG_SEARCH:%/REPO=%/$(HGTIP_FILENAME)) ) \
305 2> /dev/null))))) 305 2> /dev/null)))))
306 306
307 # Emit the repo:tip pairs to $@ 307 # Emit the repo:tip pairs to $@
308 define GetSourceTips 308 define GetSourceTips
309 $(CD) $(SRC_ROOT) ; \ 309 $(CD) $(SRC_ROOT) ; \
310 for i in $(REPO_LIST) IGNORE ; do \ 310 for i in $(REPO_LIST) IGNORE ; do \
311 if [ "$${i}" = "IGNORE" ] ; then \ 311 if [ "$${i}" = "IGNORE" ] ; then \
312 continue; \ 312 continue; \
313 elif [ -d $${i}/$(HG_DIRECTORY) -a "$(HG_VERSION)" != "" ] ; then \ 313 elif [ -d $${i}/$(HG_DIRECTORY) -a "$(HG_VERSION)" != "" ] ; then \
314 $(PRINTF) " %s:%s" \ 314 $(PRINTF) " %s:%s" \
315 "$${i}" `$(HG) tip --repository $${i} --template '{node|short}\n'` ; \ 315 "$${i}" `$(HG) tip --repository $${i} --template '{node|short}\n'` ; \
316 elif [ -f $${i}/$(HGTIP_FILENAME) ] ; then \ 316 elif [ -f $${i}/$(HGTIP_FILENAME) ] ; then \
317 $(PRINTF) " %s:%s" \ 317 $(PRINTF) " %s:%s" \
318 "$${i}" `$(CAT) $${i}/$(HGTIP_FILENAME)` ; \ 318 "$${i}" `$(CAT) $${i}/$(HGTIP_FILENAME)` ; \
319 fi; \ 319 fi; \
320 done >> $@ 320 done >> $@
321 $(PRINTF) "\n" >> $@ 321 $(PRINTF) "\n" >> $@
322 endef 322 endef
323 323
324 # Create the HGTIP_FILENAME file. Called from jdk/make/closed/bundles.gmk 324 # Create the HGTIP_FILENAME file. Called from jdk/make/closed/bundles.gmk
325 define CreateHgTip 325 define CreateHgTip
326 $(HG) tip --repository $1 --template '{node|short}\n' > $1/$(HGTIP_FILENAME);\ 326 $(HG) tip --repository $1 --template '{node|short}\n' > $1/$(HGTIP_FILENAME); \
327 $(ECHO) $1/$(HGTIP_FILENAME) 327 $(ECHO) $1/$(HGTIP_FILENAME)
328 endef 328 endef
329 329
330 define SetupLogging 330 define SetupLogging
331 ifeq ($$(LOG_LEVEL),trace) 331 ifeq ($$(LOG_LEVEL),trace)
332 # Shell redefinition trick inspired by http://www.cmcrossroads.com/ask-mr-make/6535-tracing-rule-execution-in-gnu-make 332 # Shell redefinition trick inspired by http://www.cmcrossroads.com/ask-mr-make/6535-tracing-rule-execution-in-gnu-make
333 # For each target executed, will print 333 # For each target executed, will print
334 # Building <TARGET> (from <FIRST PREREQUISITE>) (<ALL NEWER PREREQUISITES> newer) 334 # Building <TARGET> (from <FIRST PREREQUISITE>) (<ALL NEWER PREREQUISITES> newer)
335 # but with a limit of 20 on <ALL NEWER PREREQUISITES>, to avoid cluttering logs too much 335 # but with a limit of 20 on <ALL NEWER PREREQUISITES>, to avoid cluttering logs too much
336 # (and causing a crash on Cygwin). 336 # (and causing a crash on Cygwin).
337 # Default shell seems to always be /bin/sh. Must override with bash to get this to work on Solaris. 337 # Default shell seems to always be /bin/sh. Must override with bash to get this to work on Solaris.
338 # Only use time if it's GNU time which supports format and output file. 338 # Only use time if it's GNU time which supports format and output file.
339 WRAPPER_SHELL:=/bin/bash $$(SRC_ROOT)/common/bin/shell-tracer.sh $$(if $$(findstring yes,$$(IS_GNU_TIME)),$$(TIME),-) $$(OUTPUT_ROOT)/build-trace-time.log /bin/bash 339 WRAPPER_SHELL:=/bin/bash $$(SRC_ROOT)/common/bin/shell-tracer.sh $$(if $$(findstring yes,$$(IS_GNU_TIME)),$$(TIME),-) $$(OUTPUT_ROOT)/build-trace-time.log /bin/bash
340 SHELL=$$(warning $$(if $$@,Building $$@,Running shell command) $$(if $$<, (from $$<))$$(if $$?, ($$(wordlist 1, 20, $$?) $$(if $$(wordlist 21, 22, $$?), ... [in total $$(words $$?) files]) newer)))$$(WRAPPER_SHELL) 340 SHELL=$$(warning $$(if $$@,Building $$@,Running shell command) $$(if $$<, (from $$<))$$(if $$?, ($$(wordlist 1, 20, $$?) $$(if $$(wordlist 21, 22, $$?), ... [in total $$(words $$?) files]) newer)))$$(WRAPPER_SHELL)
341 endif 341 endif
342 # Never remove warning messages; this is just for completeness 342 # Never remove warning messages; this is just for completeness
343 LOG_WARN= 343 LOG_WARN=
344 ifneq ($$(findstring $$(LOG_LEVEL),info debug trace),) 344 ifneq ($$(findstring $$(LOG_LEVEL),info debug trace),)
345 LOG_INFO= 345 LOG_INFO=
346 else 346 else
347 LOG_INFO=> /dev/null 347 LOG_INFO=> /dev/null
348 endif 348 endif
349 ifneq ($$(findstring $$(LOG_LEVEL),debug trace),) 349 ifneq ($$(findstring $$(LOG_LEVEL),debug trace),)
350 LOG_DEBUG= 350 LOG_DEBUG=
351 else 351 else
352 LOG_DEBUG=> /dev/null 352 LOG_DEBUG=> /dev/null
353 endif 353 endif
354 ifneq ($$(findstring $$(LOG_LEVEL),trace),) 354 ifneq ($$(findstring $$(LOG_LEVEL),trace),)
355 LOG_TRACE= 355 LOG_TRACE=
356 else 356 else
357 LOG_TRACE=> /dev/null 357 LOG_TRACE=> /dev/null
358 endif 358 endif
359 endef 359 endef
360 360
361 # Make sure logging is setup for everyone that includes MakeBase.gmk. 361 # Make sure logging is setup for everyone that includes MakeBase.gmk.
362 $(eval $(call SetupLogging)) 362 $(eval $(call SetupLogging))
363 363
364 # This is to be called by all SetupFoo macros 364 # This is to be called by all SetupFoo macros
365 define LogSetupMacroEntry 365 define LogSetupMacroEntry
366 $(if $(27),$(error Internal makefile error: Too many arguments to LogSetupMacroEntry, please update MakeBase.gmk)) 366 $(if $(27),$(error Internal makefile error: Too many arguments to LogSetupMacroEntry, please update MakeBase.gmk))
367 $(if $(findstring $(LOG_LEVEL),debug trace), $(info $1 $(foreach i,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,$(if $($i),$(NEWLINE) $(strip [$i] $($i)))))) 367 $(if $(findstring $(LOG_LEVEL),debug trace), $(info $1 $(foreach i,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,$(if $($i),$(NEWLINE) $(strip [$i] $($i))))))
368 endef 368 endef
369 369
370 # Make directory without forking mkdir if not needed 370 # Make directory without forking mkdir if not needed
371 define MakeDir 371 define MakeDir
372 ifneq ($$(wildcard $1 $2 $3 $4 $5 $6 $7 $8 $9),$$(strip $1 $2 $3 $4 $5 $6 $7 $8 $9)) 372 ifneq ($$(wildcard $1 $2 $3 $4 $5 $6 $7 $8 $9),$$(strip $1 $2 $3 $4 $5 $6 $7 $8 $9))
373 $$(shell $(MKDIR) -p $1 $2 $3 $4 $5 $6 $7 $8 $9) 373 $$(shell $(MKDIR) -p $1 $2 $3 $4 $5 $6 $7 $8 $9)
374 endif 374 endif
375 endef 375 endef
376 376
377 ifeq ($(OPENJDK_TARGET_OS),solaris) 377 ifeq ($(OPENJDK_TARGET_OS),solaris)
378 # On Solaris, if the target is a symlink and exists, cp won't overwrite. 378 # On Solaris, if the target is a symlink and exists, cp won't overwrite.
379 # Cp has to operate in recursive mode to allow for -P flag, to preserve soft links. If the 379 # Cp has to operate in recursive mode to allow for -P flag, to preserve soft links. If the
380 # name of the target file differs from the source file, rename after copy. 380 # name of the target file differs from the source file, rename after copy.
381 define install-file 381 define install-file
382 $(MKDIR) -p $(@D) 382 $(MKDIR) -p $(@D)
383 $(RM) '$@' 383 $(RM) '$@'
384 $(CP) -f -r -P '$<' '$(@D)' 384 $(CP) -f -r -P '$<' '$(@D)'
385 if [ "$(@F)" != "$(<F)" ]; then $(MV) '$(@D)/$(<F)' '$@'; fi 385 if [ "$(@F)" != "$(<F)" ]; then $(MV) '$(@D)/$(<F)' '$@'; fi
386 endef 386 endef
387 else ifeq ($(OPENJDK_TARGET_OS),macosx) 387 else ifeq ($(OPENJDK_TARGET_OS),macosx)
388 # On mac, extended attributes sometimes creep into the source files, which may later 388 # On mac, extended attributes sometimes creep into the source files, which may later
389 # cause the creation of ._* files which confuses testing. Clear these with xattr if 389 # cause the creation of ._* files which confuses testing. Clear these with xattr if
390 # set. Some files get their write permissions removed after being copied to the 390 # set. Some files get their write permissions removed after being copied to the
391 # output dir. When these are copied again to images, xattr would fail. By only clearing 391 # output dir. When these are copied again to images, xattr would fail. By only clearing
392 # attributes when they are present, failing on this is avoided. 392 # attributes when they are present, failing on this is avoided.
393 define install-file 393 define install-file
394 $(MKDIR) -p $(@D) 394 $(MKDIR) -p $(@D)
395 $(CP) -fRP '$<' '$@' 395 $(CP) -fRP '$<' '$@'
396 if [ -n "`$(XATTR) -l '$@'`" ]; then $(XATTR) -c '$@'; fi 396 if [ -n "`$(XATTR) -l '$@'`" ]; then $(XATTR) -c '$@'; fi
397 endef 397 endef
398 else 398 else
399 define install-file 399 define install-file
400 $(MKDIR) -p $(@D) 400 $(MKDIR) -p $(@D)
401 $(CP) -fP '$<' '$@' 401 $(CP) -fP '$<' '$@'
402 endef 402 endef
403 endif 403 endif
404 404
405 # Convenience functions for working around make's limitations with $(filter ). 405 # Convenience functions for working around make's limitations with $(filter ).
406 containing = $(foreach v,$2,$(if $(findstring $1,$v),$v)) 406 containing = $(foreach v,$2,$(if $(findstring $1,$v),$v))
407 not-containing = $(foreach v,$2,$(if $(findstring $1,$v),,$v)) 407 not-containing = $(foreach v,$2,$(if $(findstring $1,$v),,$v))
408 408
409 ################################################################################ 409 ################################################################################
410 # In Cygwin, finds are very costly, both because of expensive forks and because 410 # In Cygwin, finds are very costly, both because of expensive forks and because
411 # of bad file system caching. Find is used extensively in $(shell) commands to 411 # of bad file system caching. Find is used extensively in $(shell) commands to
412 # find source files. This makes rerunning make with no or few changes rather 412 # find source files. This makes rerunning make with no or few changes rather
413 # expensive. To speed this up, these two macros are used to cache the results 413 # expensive. To speed this up, these two macros are used to cache the results
414 # of simple find commands for reuse. 414 # of simple find commands for reuse.
415 # 415 #
416 # Runs a find and stores both the directories where it was run and the results. 416 # Runs a find and stores both the directories where it was run and the results.
417 # This macro can be called multiple times to add to the cache. Only finds files 417 # This macro can be called multiple times to add to the cache. Only finds files
418 # with no filters. 418 # with no filters.
419 # 419 #
420 # Needs to be called with $(eval ) 420 # Needs to be called with $(eval )
421 # 421 #
422 # Param 1 - Dir to find in 422 # Param 1 - Dir to find in
423 ifeq ($(OPENJDK_BUILD_OS),windows) 423 ifeq ($(OPENJDK_BUILD_OS),windows)
424 define FillCacheFind 424 define FillCacheFind
425 FIND_CACHE_DIR += $1 425 FIND_CACHE_DIR += $1
426 FIND_CACHE := $$(sort $$(FIND_CACHE) $$(shell $(FIND) $1 -type f -o -type l)) 426 FIND_CACHE := $$(sort $$(FIND_CACHE) $$(shell $(FIND) $1 -type f -o -type l))
427 endef 427 endef
428 else 428 else
429 define FillCacheFind 429 define FillCacheFind
430 endef 430 endef
431 endif 431 endif
432 432
433 # Mimics find by looking in the cache if all of the directories have been cached. 433 # Mimics find by looking in the cache if all of the directories have been cached.
434 # Otherwise reverts to shell find. This is safe to call on all platforms, even if 434 # Otherwise reverts to shell find. This is safe to call on all platforms, even if
435 # cache is deactivated. 435 # cache is deactivated.
436 # 436 #
437 # The extra - is needed when FIND_CACHE_DIR is empty but should be harmless. 437 # The extra - is needed when FIND_CACHE_DIR is empty but should be harmless.
438 # Param 1 - Dirs to find in 438 # Param 1 - Dirs to find in
439 define CacheFind 439 define CacheFind
440 $(if $(filter-out $(addsuffix %,- $(FIND_CACHE_DIR)),$1),\ 440 $(if $(filter-out $(addsuffix %,- $(FIND_CACHE_DIR)),$1), \
441 $(shell $(FIND) $1 -type f -o -type l),\ 441 $(shell $(FIND) $1 -type f -o -type l), \
442 $(filter $(addsuffix %,$1),$(FIND_CACHE))) 442 $(filter $(addsuffix %,$1),$(FIND_CACHE)))
443 endef 443 endef
444 444
445 ################################################################################ 445 ################################################################################
446 446
447 endif # _MAKEBASE_GMK 447 endif # _MAKEBASE_GMK

mercurial