OLD | NEW |
1 # Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 # Copyright (c) 2011 The Chromium Authors. All rights reserved. |
2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
4 | 4 |
5 # The yasm build process creates a slew of small C subprograms that | 5 # The yasm build process creates a slew of small C subprograms that |
6 # dynamically generate files at various point in the build process. This makes | 6 # dynamically generate files at various point in the build process. This makes |
7 # the build integration moderately complex. | 7 # the build integration moderately complex. |
8 # | 8 # |
9 # There are three classes of dynamically generated files: | 9 # There are three classes of dynamically generated files: |
10 # 1) C source files that should be included in the build (eg., lc3bid.c) | 10 # 1) C source files that should be included in the build (eg., lc3bid.c) |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
48 '-pedantic', | 48 '-pedantic', |
49 ], | 49 ], |
50 | 50 |
51 # Locations for various generated artifacts. | 51 # Locations for various generated artifacts. |
52 'shared_generated_dir': '<(SHARED_INTERMEDIATE_DIR)/third_party/yasm', | 52 'shared_generated_dir': '<(SHARED_INTERMEDIATE_DIR)/third_party/yasm', |
53 'generated_dir': '<(INTERMEDIATE_DIR)/third_party/yasm', | 53 'generated_dir': '<(INTERMEDIATE_DIR)/third_party/yasm', |
54 | 54 |
55 # Various files referenced by multiple targets. | 55 # Various files referenced by multiple targets. |
56 'version_file': 'version.mac', # Generated by genversion. | 56 'version_file': 'version.mac', # Generated by genversion. |
57 'genmodule_source': 'genmodule_outfile.c', | 57 'genmodule_source': 'genmodule_outfile.c', |
| 58 |
| 59 'conditions': [ |
| 60 ['OS=="win"', { |
| 61 'exe_ext': '.exe', |
| 62 },{ |
| 63 'exe_ext' : '', |
| 64 }] |
| 65 ], |
58 }, | 66 }, |
59 'targets': [ | 67 'targets': [ |
60 { | 68 { |
61 'target_name': 'yasm', | 69 'target_name': 'yasm', |
62 'type': 'executable', | 70 'type': 'executable', |
63 'toolsets': ['host'], | 71 'toolsets': ['host'], |
64 'dependencies': [ | 72 'dependencies': [ |
65 'config_sources', | 73 'config_sources', |
66 'genmacro', | 74 'genmacro', |
67 'genmodule', | 75 'genmodule', |
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
155 '<@(yasm_include_dirs)', | 163 '<@(yasm_include_dirs)', |
156 '<(shared_generated_dir)', | 164 '<(shared_generated_dir)', |
157 '<(generated_dir)', | 165 '<(generated_dir)', |
158 ], | 166 ], |
159 'defines': [ '<@(yasm_defines)' ], | 167 'defines': [ '<@(yasm_defines)' ], |
160 'cflags': [ '<@(yasm_cflags)', ], | 168 'cflags': [ '<@(yasm_cflags)', ], |
161 'rules': [ | 169 'rules': [ |
162 { | 170 { |
163 'rule_name': 'generate_gperf', | 171 'rule_name': 'generate_gperf', |
164 'extension': 'gperf', | 172 'extension': 'gperf', |
165 'inputs': [ '<(PRODUCT_DIR)/genperf' ], | 173 'inputs': [ '<(PRODUCT_DIR)/genperf<(exe_ext)' ], |
166 'outputs': [ | 174 'outputs': [ |
167 '<(generated_dir)/<(RULE_INPUT_ROOT).c', | 175 '<(generated_dir)/<(RULE_INPUT_ROOT).c', |
168 ], | 176 ], |
169 'action': ['<(PRODUCT_DIR)/genperf', | 177 'action': ['<(PRODUCT_DIR)/genperf', |
170 '<(RULE_INPUT_PATH)', | 178 '<(RULE_INPUT_PATH)', |
171 '<(generated_dir)/<(RULE_INPUT_ROOT).c', | 179 '<(generated_dir)/<(RULE_INPUT_ROOT).c', |
172 ], | 180 ], |
173 # These files are #included, so do not treat them as sources. | 181 # These files are #included, so do not treat them as sources. |
174 'process_outputs_as_sources': 0, | 182 'process_outputs_as_sources': 0, |
175 'message': 'yasm gperf for <(RULE_INPUT_PATH).', | 183 'message': 'yasm gperf for <(RULE_INPUT_PATH).', |
176 }, | 184 }, |
177 { | 185 { |
178 'rule_name': 'generate_re2c', | 186 'rule_name': 'generate_re2c', |
179 'extension': 're', | 187 'extension': 're', |
180 'inputs': [ '<(PRODUCT_DIR)/re2c' ], | 188 'inputs': [ '<(PRODUCT_DIR)/re2c<(exe_ext)' ], |
181 'outputs': [ '<(generated_dir)/<(RULE_INPUT_ROOT).c', ], | 189 'outputs': [ '<(generated_dir)/<(RULE_INPUT_ROOT).c', ], |
182 'action': [ | 190 'action': [ |
183 '<(PRODUCT_DIR)/re2c', | 191 '<(PRODUCT_DIR)/re2c', |
184 '-b', | 192 '-b', |
185 '-o', | 193 '-o', |
186 '<(generated_dir)/<(RULE_INPUT_ROOT).c', | 194 '<(generated_dir)/<(RULE_INPUT_ROOT).c', |
187 '<(RULE_INPUT_PATH)', | 195 '<(RULE_INPUT_PATH)', |
188 ], | 196 ], |
189 'process_outputs_as_sources': 1, | 197 'process_outputs_as_sources': 1, |
190 'message': 'yasm re2c for <(RULE_INPUT_PATH).', | 198 'message': 'yasm re2c for <(RULE_INPUT_PATH).', |
191 }, | 199 }, |
192 ], | 200 ], |
193 'actions': [ | 201 'actions': [ |
194 ### | 202 ### |
195 ### genmacro calls. | 203 ### genmacro calls. |
196 ### | 204 ### |
197 { | 205 { |
198 'action_name': 'generate_nasm_macros', | 206 'action_name': 'generate_nasm_macros', |
199 'variables': { | 207 'variables': { |
200 'infile': 'source/patched-yasm/modules/parsers/nasm/nasm-std.mac', | 208 'infile': 'source/patched-yasm/modules/parsers/nasm/nasm-std.mac', |
201 'varname': 'nasm_standard_mac', | 209 'varname': 'nasm_standard_mac', |
202 'outfile': '<(generated_dir)/nasm-macros.c', | 210 'outfile': '<(generated_dir)/nasm-macros.c', |
203 }, | 211 }, |
204 'inputs': [ '<(PRODUCT_DIR)/genmacro', '<(infile)', ], | 212 'inputs': [ '<(PRODUCT_DIR)/genmacro<(exe_ext)', '<(infile)', ], |
205 'outputs': [ '<(outfile)', ], | 213 'outputs': [ '<(outfile)', ], |
206 'action': ['<(PRODUCT_DIR)/genmacro', | 214 'action': ['<(PRODUCT_DIR)/genmacro', |
207 '<(outfile)', '<(varname)', '<(infile)', ], | 215 '<(outfile)', '<(varname)', '<(infile)', ], |
208 # Not a direct source because this is #included by | 216 # Not a direct source because this is #included by |
209 # source/patched-yasm/modules/parsers/nasm/nasm-parser.c | 217 # source/patched-yasm/modules/parsers/nasm/nasm-parser.c |
210 'process_outputs_as_sources': 1, | 218 'process_outputs_as_sources': 1, |
211 'message': 'yasm genmacro for <(infile).', | 219 'message': 'yasm genmacro for <(infile).', |
212 }, | 220 }, |
213 { | 221 { |
214 'action_name': 'generate_nasm_version', | 222 'action_name': 'generate_nasm_version', |
215 'variables': { | 223 'variables': { |
216 'infile': '<(shared_generated_dir)/<(version_file)', | 224 'infile': '<(shared_generated_dir)/<(version_file)', |
217 'varname': 'nasm_version_mac', | 225 'varname': 'nasm_version_mac', |
218 'outfile': '<(generated_dir)/nasm-version.c', | 226 'outfile': '<(generated_dir)/nasm-version.c', |
219 }, | 227 }, |
220 'inputs': [ '<(PRODUCT_DIR)/genmacro', '<(infile)', ], | 228 'inputs': [ '<(PRODUCT_DIR)/genmacro<(exe_ext)', '<(infile)', ], |
221 'outputs': [ '<(outfile)', ], | 229 'outputs': [ '<(outfile)', ], |
222 'action': ['<(PRODUCT_DIR)/genmacro', | 230 'action': ['<(PRODUCT_DIR)/genmacro', |
223 '<(outfile)', '<(varname)', '<(infile)', | 231 '<(outfile)', '<(varname)', '<(infile)', |
224 ], | 232 ], |
225 # Not a direct source because this is #included by | 233 # Not a direct source because this is #included by |
226 # source/patched-yasm/modules/preprocs/nasm/nasm-preproc.c | 234 # source/patched-yasm/modules/preprocs/nasm/nasm-preproc.c |
227 'process_outputs_as_sources': 0, | 235 'process_outputs_as_sources': 0, |
228 'message': 'yasm genmacro for <(infile).', | 236 'message': 'yasm genmacro for <(infile).', |
229 }, | 237 }, |
230 { | 238 { |
231 'action_name': 'generate_win64_gas', | 239 'action_name': 'generate_win64_gas', |
232 'variables': { | 240 'variables': { |
233 'infile': 'source/patched-yasm/modules/objfmts/coff/win64-gas.mac', | 241 'infile': 'source/patched-yasm/modules/objfmts/coff/win64-gas.mac', |
234 'varname': 'win64_gas_stdmac', | 242 'varname': 'win64_gas_stdmac', |
235 'outfile': '<(generated_dir)/win64-gas.c', | 243 'outfile': '<(generated_dir)/win64-gas.c', |
236 }, | 244 }, |
237 'inputs': [ '<(PRODUCT_DIR)/genmacro', '<(infile)', ], | 245 'inputs': [ '<(PRODUCT_DIR)/genmacro<(exe_ext)', '<(infile)', ], |
238 'outputs': [ '<(outfile)', ], | 246 'outputs': [ '<(outfile)', ], |
239 'action': ['<(PRODUCT_DIR)/genmacro', | 247 'action': ['<(PRODUCT_DIR)/genmacro', |
240 '<(outfile)', '<(varname)', '<(infile)', | 248 '<(outfile)', '<(varname)', '<(infile)', |
241 ], | 249 ], |
242 # Not a direct source because this is #included by | 250 # Not a direct source because this is #included by |
243 # source/patched-yasm/modules/objfmts/coff/coff-objfmt.c | 251 # source/patched-yasm/modules/objfmts/coff/coff-objfmt.c |
244 'process_outputs_as_sources': 0, | 252 'process_outputs_as_sources': 0, |
245 'message': 'yasm genmacro for <(infile).', | 253 'message': 'yasm genmacro for <(infile).', |
246 }, | 254 }, |
247 { | 255 { |
248 'action_name': 'generate_win64_nasm', | 256 'action_name': 'generate_win64_nasm', |
249 'variables': { | 257 'variables': { |
250 'infile': 'source/patched-yasm/modules/objfmts/coff/win64-nasm.mac', | 258 'infile': 'source/patched-yasm/modules/objfmts/coff/win64-nasm.mac', |
251 'varname': 'win64_nasm_stdmac', | 259 'varname': 'win64_nasm_stdmac', |
252 'outfile': '<(generated_dir)/win64-nasm.c', | 260 'outfile': '<(generated_dir)/win64-nasm.c', |
253 }, | 261 }, |
254 'inputs': [ '<(PRODUCT_DIR)/genmacro', '<(infile)', ], | 262 'inputs': [ '<(PRODUCT_DIR)/genmacro<(exe_ext)', '<(infile)', ], |
255 'outputs': [ '<(outfile)', ], | 263 'outputs': [ '<(outfile)', ], |
256 'action': ['<(PRODUCT_DIR)/genmacro', | 264 'action': ['<(PRODUCT_DIR)/genmacro', |
257 '<(outfile)', | 265 '<(outfile)', |
258 '<(varname)', | 266 '<(varname)', |
259 '<(infile)', | 267 '<(infile)', |
260 ], | 268 ], |
261 # Not a direct source because this is #included by | 269 # Not a direct source because this is #included by |
262 # source/patched-yasm/modules/objfmts/coff/coff-objfmt.c | 270 # source/patched-yasm/modules/objfmts/coff/coff-objfmt.c |
263 'process_outputs_as_sources': 0, | 271 'process_outputs_as_sources': 0, |
264 'message': 'yasm genmacro for <(infile).', | 272 'message': 'yasm genmacro for <(infile).', |
265 }, | 273 }, |
266 | 274 |
267 ### | 275 ### |
268 ### genstring call. | 276 ### genstring call. |
269 ### | 277 ### |
270 { | 278 { |
271 'action_name': 'generate_license', | 279 'action_name': 'generate_license', |
272 'variables': { | 280 'variables': { |
273 'infile': 'source/patched-yasm/COPYING', | 281 'infile': 'source/patched-yasm/COPYING', |
274 'varname': 'license_msg', | 282 'varname': 'license_msg', |
275 'outfile': '<(generated_dir)/license.c', | 283 'outfile': '<(generated_dir)/license.c', |
276 }, | 284 }, |
277 'inputs': [ '<(PRODUCT_DIR)/genstring', '<(infile)', ], | 285 'inputs': [ '<(PRODUCT_DIR)/genstring<(exe_ext)', '<(infile)', ], |
278 'outputs': [ '<(outfile)', ], | 286 'outputs': [ '<(outfile)', ], |
279 'action': ['<(PRODUCT_DIR)/genstring', | 287 'action': ['<(PRODUCT_DIR)/genstring', |
280 '<(varname)', | 288 '<(varname)', |
281 '<(outfile)', | 289 '<(outfile)', |
282 '<(infile)', | 290 '<(infile)', |
283 ], | 291 ], |
284 # Not a direct source because this is #included by | 292 # Not a direct source because this is #included by |
285 # source/patched-yasm/frontends/yasm/yasm.c | 293 # source/patched-yasm/frontends/yasm/yasm.c |
286 'process_outputs_as_sources': 0, | 294 'process_outputs_as_sources': 0, |
287 'message': 'Generating yasm embeddable license.', | 295 'message': 'Generating yasm embeddable license.', |
288 }, | 296 }, |
289 | 297 |
290 ### | 298 ### |
291 ### A re2c call that doesn't fit into the rule below. | 299 ### A re2c call that doesn't fit into the rule below. |
292 ### | 300 ### |
293 { | 301 { |
294 'action_name': 'generate_lc3b_token', | 302 'action_name': 'generate_lc3b_token', |
295 'variables': { | 303 'variables': { |
296 'infile': 'source/patched-yasm/modules/arch/lc3b/lc3bid.re', | 304 'infile': 'source/patched-yasm/modules/arch/lc3b/lc3bid.re', |
297 # The license file is #included by yasm.c. | 305 # The license file is #included by yasm.c. |
298 'outfile': '<(generated_dir)/lc3bid.c', | 306 'outfile': '<(generated_dir)/lc3bid.c', |
299 }, | 307 }, |
300 'inputs': [ '<(PRODUCT_DIR)/re2c', '<(infile)', ], | 308 'inputs': [ '<(PRODUCT_DIR)/re2c<(exe_ext)', '<(infile)', ], |
301 'outputs': [ '<(outfile)', ], | 309 'outputs': [ '<(outfile)', ], |
302 'action': [ | 310 'action': [ |
303 '<(PRODUCT_DIR)/re2c', | 311 '<(PRODUCT_DIR)/re2c', |
304 '-s', | 312 '-s', |
305 '-o', '<(outfile)', | 313 '-o', '<(outfile)', |
306 '<(infile)' | 314 '<(infile)' |
307 ], | 315 ], |
308 'process_outputs_as_sources': 1, | 316 'process_outputs_as_sources': 1, |
309 'message': 'Generating yasm tokens for lc3b.', | 317 'message': 'Generating yasm tokens for lc3b.', |
310 }, | 318 }, |
311 | 319 |
312 ### | 320 ### |
313 ### genmodule call. | 321 ### genmodule call. |
314 ### | 322 ### |
315 { | 323 { |
316 'action_name': 'generate_module', | 324 'action_name': 'generate_module', |
317 'variables': { | 325 'variables': { |
318 'makefile': 'source/config/<(OS)/Makefile', | 326 'makefile': 'source/config/<(OS)/Makefile', |
319 'module_in': 'source/patched-yasm/libyasm/module.in', | 327 'module_in': 'source/patched-yasm/libyasm/module.in', |
320 'outfile': '<(generated_dir)/module.c', | 328 'outfile': '<(generated_dir)/module.c', |
321 }, | 329 }, |
322 'inputs': [ | 330 'inputs': [ |
323 '<(PRODUCT_DIR)/genmodule', | 331 '<(PRODUCT_DIR)/genmodule<(exe_ext)', |
324 '<(module_in)', | 332 '<(module_in)', |
325 '<(makefile)' | 333 '<(makefile)' |
326 ], | 334 ], |
327 'outputs': [ '<(generated_dir)/module.c' ], | 335 'outputs': [ '<(generated_dir)/module.c' ], |
328 'action': [ | 336 'action': [ |
329 '<(PRODUCT_DIR)/genmodule', | 337 '<(PRODUCT_DIR)/genmodule', |
330 '<(module_in)', | 338 '<(module_in)', |
331 '<(makefile)', | 339 '<(makefile)', |
332 '<(outfile)' | 340 '<(outfile)' |
333 ], | 341 ], |
(...skipping 21 matching lines...) Expand all Loading... |
355 'genversion', | 363 'genversion', |
356 ], | 364 ], |
357 'sources': [ | 365 'sources': [ |
358 'source/patched-yasm/modules/arch/x86/x86cpu.gperf', | 366 'source/patched-yasm/modules/arch/x86/x86cpu.gperf', |
359 'source/patched-yasm/modules/arch/x86/x86regtmod.gperf', | 367 'source/patched-yasm/modules/arch/x86/x86regtmod.gperf', |
360 ], | 368 ], |
361 'rules': [ | 369 'rules': [ |
362 { | 370 { |
363 'rule_name': 'generate_gperf', | 371 'rule_name': 'generate_gperf', |
364 'extension': 'gperf', | 372 'extension': 'gperf', |
365 'inputs': [ '<(PRODUCT_DIR)/genperf' ], | 373 'inputs': [ '<(PRODUCT_DIR)/genperf<(exe_ext)' ], |
366 'outputs': [ '<(shared_generated_dir)/<(RULE_INPUT_ROOT).c', ], | 374 'outputs': [ '<(shared_generated_dir)/<(RULE_INPUT_ROOT).c', ], |
367 'action': [ | 375 'action': [ |
368 '<(PRODUCT_DIR)/genperf', | 376 '<(PRODUCT_DIR)/genperf', |
369 '<(RULE_INPUT_PATH)', | 377 '<(RULE_INPUT_PATH)', |
370 '<(shared_generated_dir)/<(RULE_INPUT_ROOT).c', | 378 '<(shared_generated_dir)/<(RULE_INPUT_ROOT).c', |
371 ], | 379 ], |
372 'process_outputs_as_sources': 0, | 380 'process_outputs_as_sources': 0, |
373 'message': 'yasm genperf for <(RULE_INPUT_PATH).', | 381 'message': 'yasm genperf for <(RULE_INPUT_PATH).', |
374 }, | 382 }, |
375 ], | 383 ], |
(...skipping 13 matching lines...) Expand all Loading... |
389 'action': [ | 397 'action': [ |
390 'python', | 398 'python', |
391 '<(gen_insn_path)', | 399 '<(gen_insn_path)', |
392 '<(shared_generated_dir)', | 400 '<(shared_generated_dir)', |
393 ], | 401 ], |
394 'message': 'Running <(gen_insn_path).', | 402 'message': 'Running <(gen_insn_path).', |
395 'process_outputs_as_sources': 0, | 403 'process_outputs_as_sources': 0, |
396 }, | 404 }, |
397 { | 405 { |
398 'action_name': 'generate_version', | 406 'action_name': 'generate_version', |
399 'inputs': [ '<(PRODUCT_DIR)/genversion' ], | 407 'inputs': [ '<(PRODUCT_DIR)/genversion<(exe_ext)' ], |
400 'outputs': [ '<(shared_generated_dir)/<(version_file)', ], | 408 'outputs': [ '<(shared_generated_dir)/<(version_file)', ], |
401 'action': [ | 409 'action': [ |
402 '<(PRODUCT_DIR)/genversion', | 410 '<(PRODUCT_DIR)/genversion', |
403 '<(shared_generated_dir)/<(version_file)' | 411 '<(shared_generated_dir)/<(version_file)' |
404 ], | 412 ], |
405 'message': 'Generating yasm version file: ' | 413 'message': 'Generating yasm version file: ' |
406 '<(shared_generated_dir)/<(version_file).', | 414 '<(shared_generated_dir)/<(version_file).', |
407 'process_outputs_as_sources': 0, | 415 'process_outputs_as_sources': 0, |
408 }, | 416 }, |
409 ], | 417 ], |
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
525 'include_dirs': [ | 533 'include_dirs': [ |
526 '<@(yasm_include_dirs)', | 534 '<@(yasm_include_dirs)', |
527 | 535 |
528 ], | 536 ], |
529 'cflags': [ | 537 'cflags': [ |
530 '-std=gnu99', | 538 '-std=gnu99', |
531 ], | 539 ], |
532 }, | 540 }, |
533 ], | 541 ], |
534 } | 542 } |
OLD | NEW |