1 # Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 # Use of this source code is governed by a BSD-style license that can be 3 # found in the LICENSE file. 4 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 7 # the build integration moderately complex. 8 # 9 # There are three classes of dynamically generated files: 10 # 1) C source files that should be included in the build (eg., lc3bid.c) 11 # 2) C source files that are #included by static C sources (eg., license.c) 12 # 3) Intermediate files that are used as input by other subprograms to 13 # further generate files in category #1 or #2. (eg., version.mac) 14 # 15 # This structure is represented with the following targets: 16 # 1) yasm -- Sources, flags for the main yasm executable. Also has most of 17 # of the actions and rules that invoke the subprograms. 18 # 2) config_sources -- Checked in version of files generated by manually 19 # running configure that are used by all binaries. 20 # 3) generate_files -- Actions and rules for files of type #3. 21 # 4) genperf_libs -- Object files shared between yasm and the genperf 22 # subprogram. 23 # 5) genmacro, genmodule, etc. -- One executable target for each subprogram. 24 # 25 # You will notice that a lot of the action targets seem very similar -- 26 # especially for genmacro invocations. This makes it seem like they should 27 # be a rule. The problem is that the correct invocation cannot be inferred 28 # purely from the file name, or extension. Nor is it obvious whether the 29 # output should be processed as a source or not. Thus, we are left with a 30 # large amount of repetitive code. 31 32 { 33 'xcode_settings': { 34 'SYMROOT': '<(DEPTH)/xcodebuild', 35 }, 36 'variables': { 37 'yasm_include_dirs': [ 38 '../third_party/yasm/config/<(skia_os)', 39 '../third_party/externals/yasm/source/patched-yasm', 40 ], 41 42 # The cflags used by any target that will be directly linked into yasm. 43 # These are specifically not used when building the subprograms. While 44 # it would probably be safe to use these flags there as well, the 45 # ./configure based build does not use the same flags between the main 46 # yasm executable, and its subprograms. 47 'yasm_defines': ['HAVE_CONFIG_H'], 48 'yasm_cflags': [ 49 '-std=gnu99', 50 '-ansi', 51 '-pedantic', 52 '-w', 53 ], 54 55 # Locations for various generated artifacts. 56 'shared_generated_dir': '<(SHARED_INTERMEDIATE_DIR)/third_party/yasm', 57 'generated_dir': '<(INTERMEDIATE_DIR)/third_party/yasm', 58 59 # Various files referenced by multiple targets. 60 'version_file': 'version.mac', # Generated by genversion. 61 'genmodule_source': 'genmodule_outfile.c', 62 }, 63 'target_defaults': { 64 # Silence warnings in libc++ builds (C code doesn't need this flag). 65 'ldflags!': [ '-stdlib=libc++', '-fsanitize=<(skia_sanitizer)' ], 66 # https://crbug.com/489901 67 'cflags!': [ 68 '-fsanitize=bounds', 69 '-fsanitize=<(skia_sanitizer)', 70 '-fsanitize-memory-track-origins', 71 ], 72 'libraries!': [ '-llog', ], 73 }, 74 'targets': [ 75 { 76 'target_name': 'yasm', 77 'type': 'executable', 78 'toolsets': ['host'], 79 'dependencies': [ 80 'config_sources', 81 'genmacro', 82 'genmodule', 83 'genperf', 84 'genperf_libs', 85 'generate_files', # Needed to generate gperf and instruction files. 86 'genstring', 87 're2c', 88 ], 89 'variables': { 90 'clang_warning_flags': [ 91 # yasm passes a `const elf_machine_sym*` through `void*`. 92 '-Wno-incompatible-pointer-types', 93 ], 94 }, 95 'conditions': [ 96 ['skia_os == "win"', { 97 # As of VS 2013 Update 3, building this project with /analyze hits an 98 # internal compiler error on elf-x86-amd64.c in release builds with 99 # the amd64_x86 compiler. This halts the build and prevents subsequent 100 # analysis. Therefore, /analyze is disabled for this project. See this 101 # bug for details: 102 # https://connect.microsoft.com/VisualStudio/feedback/details/1014799/internal-compiler-error-when-using-analyze 103 'msvs_settings': { 104 'VCCLCompilerTool': { 105 'AdditionalOptions!': [ '/analyze' ] 106 }, 107 }, 108 }], 109 ], 110 'sources': [ 111 '../third_party/externals/yasm/source/patched-yasm/frontends/yasm/yasm-options.c', 112 '../third_party/externals/yasm/source/patched-yasm/frontends/yasm/yasm.c', 113 '../third_party/externals/yasm/source/patched-yasm/libyasm/assocdat.c', 114 '../third_party/externals/yasm/source/patched-yasm/libyasm/bc-align.c', 115 '../third_party/externals/yasm/source/patched-yasm/libyasm/bc-data.c', 116 '../third_party/externals/yasm/source/patched-yasm/libyasm/bc-incbin.c', 117 '../third_party/externals/yasm/source/patched-yasm/libyasm/bc-org.c', 118 '../third_party/externals/yasm/source/patched-yasm/libyasm/bc-reserve.c', 119 '../third_party/externals/yasm/source/patched-yasm/libyasm/bitvect.c', 120 '../third_party/externals/yasm/source/patched-yasm/libyasm/bytecode.c', 121 '../third_party/externals/yasm/source/patched-yasm/libyasm/errwarn.c', 122 '../third_party/externals/yasm/source/patched-yasm/libyasm/expr.c', 123 '../third_party/externals/yasm/source/patched-yasm/libyasm/file.c', 124 '../third_party/externals/yasm/source/patched-yasm/libyasm/floatnum.c', 125 '../third_party/externals/yasm/source/patched-yasm/libyasm/hamt.c', 126 '../third_party/externals/yasm/source/patched-yasm/libyasm/insn.c', 127 '../third_party/externals/yasm/source/patched-yasm/libyasm/intnum.c', 128 '../third_party/externals/yasm/source/patched-yasm/libyasm/inttree.c', 129 '../third_party/externals/yasm/source/patched-yasm/libyasm/linemap.c', 130 '../third_party/externals/yasm/source/patched-yasm/libyasm/md5.c', 131 '../third_party/externals/yasm/source/patched-yasm/libyasm/mergesort.c', 132 '../third_party/externals/yasm/source/patched-yasm/libyasm/section.c', 133 '../third_party/externals/yasm/source/patched-yasm/libyasm/strcasecmp.c', 134 '../third_party/externals/yasm/source/patched-yasm/libyasm/strsep.c', 135 '../third_party/externals/yasm/source/patched-yasm/libyasm/symrec.c', 136 '../third_party/externals/yasm/source/patched-yasm/libyasm/valparam.c', 137 '../third_party/externals/yasm/source/patched-yasm/libyasm/value.c', 138 '../third_party/externals/yasm/source/patched-yasm/modules/arch/lc3b/lc3barch.c', 139 '../third_party/externals/yasm/source/patched-yasm/modules/arch/lc3b/lc3bbc.c', 140 '../third_party/externals/yasm/source/patched-yasm/modules/arch/x86/x86arch.c', 141 '../third_party/externals/yasm/source/patched-yasm/modules/arch/x86/x86bc.c', 142 '../third_party/externals/yasm/source/patched-yasm/modules/arch/x86/x86expr.c', 143 '../third_party/externals/yasm/source/patched-yasm/modules/arch/x86/x86id.c', 144 '../third_party/externals/yasm/source/patched-yasm/modules/dbgfmts/codeview/cv-dbgfmt.c', 145 '../third_party/externals/yasm/source/patched-yasm/modules/dbgfmts/codeview/cv-symline.c', 146 '../third_party/externals/yasm/source/patched-yasm/modules/dbgfmts/codeview/cv-type.c', 147 '../third_party/externals/yasm/source/patched-yasm/modules/dbgfmts/dwarf2/dwarf2-aranges.c', 148 '../third_party/externals/yasm/source/patched-yasm/modules/dbgfmts/dwarf2/dwarf2-dbgfmt.c', 149 '../third_party/externals/yasm/source/patched-yasm/modules/dbgfmts/dwarf2/dwarf2-info.c', 150 '../third_party/externals/yasm/source/patched-yasm/modules/dbgfmts/dwarf2/dwarf2-line.c', 151 '../third_party/externals/yasm/source/patched-yasm/modules/dbgfmts/null/null-dbgfmt.c', 152 '../third_party/externals/yasm/source/patched-yasm/modules/dbgfmts/stabs/stabs-dbgfmt.c', 153 '../third_party/externals/yasm/source/patched-yasm/modules/listfmts/nasm/nasm-listfmt.c', 154 '../third_party/externals/yasm/source/patched-yasm/modules/objfmts/bin/bin-objfmt.c', 155 '../third_party/externals/yasm/source/patched-yasm/modules/objfmts/coff/coff-objfmt.c', 156 '../third_party/externals/yasm/source/patched-yasm/modules/objfmts/coff/win64-except.c', 157 '../third_party/externals/yasm/source/patched-yasm/modules/objfmts/dbg/dbg-objfmt.c', 158 '../third_party/externals/yasm/source/patched-yasm/modules/objfmts/elf/elf-objfmt.c', 159 '../third_party/externals/yasm/source/patched-yasm/modules/objfmts/elf/elf-x86-amd64.c', 160 '../third_party/externals/yasm/source/patched-yasm/modules/objfmts/elf/elf-x86-x86.c', 161 '../third_party/externals/yasm/source/patched-yasm/modules/objfmts/elf/elf.c', 162 '../third_party/externals/yasm/source/patched-yasm/modules/objfmts/macho/macho-objfmt.c', 163 '../third_party/externals/yasm/source/patched-yasm/modules/objfmts/rdf/rdf-objfmt.c', 164 '../third_party/externals/yasm/source/patched-yasm/modules/objfmts/xdf/xdf-objfmt.c', 165 '../third_party/externals/yasm/source/patched-yasm/modules/parsers/gas/gas-parse.c', 166 '../third_party/externals/yasm/source/patched-yasm/modules/parsers/gas/gas-parse-intel.c', 167 '../third_party/externals/yasm/source/patched-yasm/modules/parsers/gas/gas-parser.c', 168 '../third_party/externals/yasm/source/patched-yasm/modules/parsers/nasm/nasm-parse.c', 169 '../third_party/externals/yasm/source/patched-yasm/modules/parsers/nasm/nasm-parser.c', 170 '../third_party/externals/yasm/source/patched-yasm/modules/preprocs/cpp/cpp-preproc.c', 171 '../third_party/externals/yasm/source/patched-yasm/modules/preprocs/nasm/nasm-eval.c', 172 '../third_party/externals/yasm/source/patched-yasm/modules/preprocs/nasm/nasm-pp.c', 173 '../third_party/externals/yasm/source/patched-yasm/modules/preprocs/nasm/nasm-preproc.c', 174 '../third_party/externals/yasm/source/patched-yasm/modules/preprocs/nasm/nasmlib.c', 175 '../third_party/externals/yasm/source/patched-yasm/modules/preprocs/raw/raw-preproc.c', 176 177 # Sources needed by re2c. 178 '../third_party/externals/yasm/source/patched-yasm/modules/parsers/gas/gas-token.re', 179 '../third_party/externals/yasm/source/patched-yasm/modules/parsers/nasm/nasm-token.re', 180 181 # Sources needed by genperf. Make sure the generated gperf files 182 # (the ones in shared_generated_dir) are synced with the outputs 183 # for the related generate_*_insn actions in the generate_files 184 # target below. 185 '<(shared_generated_dir)/x86insn_nasm.gperf', 186 '<(shared_generated_dir)/x86insn_gas.gperf', 187 '<(shared_generated_dir)/x86cpu.c', 188 '<(shared_generated_dir)/x86regtmod.c', 189 ], 190 'include_dirs': [ 191 '<@(yasm_include_dirs)', 192 '<(shared_generated_dir)', 193 '<(generated_dir)', 194 ], 195 'defines': [ '<@(yasm_defines)' ], 196 'cflags': [ '<@(yasm_cflags)', ], 197 'cflags!': [ 198 '-mfpu=neon', 199 '-mthumb', 200 '-march=armv7-a', 201 ], 202 'xcode_settings': { 203 'WARNING_CFLAGS': [ 204 '-w', 205 ], 206 }, 207 'msvs_disabled_warnings': [ 4267 ], 208 'rules': [ 209 { 210 'rule_name': 'generate_gperf', 211 'extension': 'gperf', 212 'inputs': [ '<(PRODUCT_DIR)/' 213 '<(EXECUTABLE_PREFIX)genperf<(EXECUTABLE_SUFFIX)' ], 214 'outputs': [ 215 '<(generated_dir)/<(RULE_INPUT_ROOT).c', 216 ], 217 'action': ['<(PRODUCT_DIR)/genperf', 218 '<(RULE_INPUT_PATH)', 219 '<(generated_dir)/<(RULE_INPUT_ROOT).c', 220 ], 221 # These files are #included, so do not treat them as sources. 222 'process_outputs_as_sources': 0, 223 'message': 'yasm gperf for <(RULE_INPUT_PATH)', 224 }, 225 { 226 'rule_name': 'generate_re2c', 227 'extension': 're', 228 'inputs': [ '<(PRODUCT_DIR)/' 229 '<(EXECUTABLE_PREFIX)re2c<(EXECUTABLE_SUFFIX)' ], 230 'outputs': [ '<(generated_dir)/<(RULE_INPUT_ROOT).c', ], 231 'action': [ 232 '<(PRODUCT_DIR)/re2c', 233 '-b', 234 '-o', 235 '<(generated_dir)/<(RULE_INPUT_ROOT).c', 236 '<(RULE_INPUT_PATH)', 237 ], 238 'process_outputs_as_sources': 1, 239 'message': 'yasm re2c for <(RULE_INPUT_PATH)', 240 }, 241 ], 242 'actions': [ 243 ### 244 ### genmacro calls. 245 ### 246 { 247 'action_name': 'generate_nasm_macros', 248 'variables': { 249 'infile': '../third_party/externals/yasm/source/patched-yasm/modules/parsers/nasm/nasm-std.mac', 250 'varname': 'nasm_standard_mac', 251 'outfile': '<(generated_dir)/nasm-macros.c', 252 }, 253 'inputs': [ '<(PRODUCT_DIR)/' 254 '<(EXECUTABLE_PREFIX)genmacro<(EXECUTABLE_SUFFIX)', 255 '<(infile)', ], 256 'outputs': [ '<(outfile)', ], 257 'action': ['<(PRODUCT_DIR)/genmacro', 258 '<(outfile)', '<(varname)', '<(infile)', ], 259 # Not a direct source because this is #included by 260 # source/patched-yasm/modules/parsers/nasm/nasm-parser.c 261 'process_outputs_as_sources': 1, 262 'xcode_settings': { 263 'WARNING_CFLAGS': [ 264 '-w', 265 ], 266 }, 267 'message': 'yasm genmacro for <(infile)', 268 }, 269 { 270 'action_name': 'generate_nasm_version', 271 'variables': { 272 'infile': '<(shared_generated_dir)/<(version_file)', 273 'varname': 'nasm_version_mac', 274 'outfile': '<(generated_dir)/nasm-version.c', 275 }, 276 'inputs': [ '<(PRODUCT_DIR)/' 277 '<(EXECUTABLE_PREFIX)genmacro<(EXECUTABLE_SUFFIX)', 278 '<(infile)', ], 279 'outputs': [ '<(outfile)', ], 280 'action': ['<(PRODUCT_DIR)/genmacro', 281 '<(outfile)', '<(varname)', '<(infile)', 282 ], 283 # Not a direct source because this is #included by 284 # source/patched-yasm/modules/preprocs/nasm/nasm-preproc.c 285 'process_outputs_as_sources': 0, 286 'message': 'yasm genmacro for <(infile)', 287 }, 288 { 289 'action_name': 'generate_win64_gas', 290 'variables': { 291 'infile': '../third_party/externals/yasm/source/patched-yasm/modules/objfmts/coff/win64-gas.mac', 292 'varname': 'win64_gas_stdmac', 293 'outfile': '<(generated_dir)/win64-gas.c', 294 }, 295 'inputs': [ '<(PRODUCT_DIR)/' 296 '<(EXECUTABLE_PREFIX)genmacro<(EXECUTABLE_SUFFIX)', 297 '<(infile)', ], 298 'outputs': [ '<(outfile)', ], 299 'action': ['<(PRODUCT_DIR)/genmacro', 300 '<(outfile)', '<(varname)', '<(infile)', 301 ], 302 # Not a direct source because this is #included by 303 # source/patched-yasm/modules/objfmts/coff/coff-objfmt.c 304 'process_outputs_as_sources': 0, 305 'message': 'yasm genmacro for <(infile)', 306 }, 307 { 308 'action_name': 'generate_win64_nasm', 309 'variables': { 310 'infile': '../third_party/externals/yasm/source/patched-yasm/modules/objfmts/coff/win64-nasm.mac', 311 'varname': 'win64_nasm_stdmac', 312 'outfile': '<(generated_dir)/win64-nasm.c', 313 }, 314 'inputs': [ '<(PRODUCT_DIR)/' 315 '<(EXECUTABLE_PREFIX)genmacro<(EXECUTABLE_SUFFIX)', 316 '<(infile)', ], 317 'outputs': [ '<(outfile)', ], 318 'action': ['<(PRODUCT_DIR)/genmacro', 319 '<(outfile)', 320 '<(varname)', 321 '<(infile)', 322 ], 323 # Not a direct source because this is #included by 324 # source/patched-yasm/modules/objfmts/coff/coff-objfmt.c 325 'process_outputs_as_sources': 0, 326 'message': 'yasm genmacro for <(infile)', 327 }, 328 329 ### 330 ### genstring call. 331 ### 332 { 333 'action_name': 'generate_license', 334 'variables': { 335 'infile': '../third_party/externals/yasm/source/patched-yasm/COPYING', 336 'varname': 'license_msg', 337 'outfile': '<(generated_dir)/license.c', 338 }, 339 'inputs': [ '<(PRODUCT_DIR)/' 340 '<(EXECUTABLE_PREFIX)genstring<(EXECUTABLE_SUFFIX)', 341 '<(infile)', ], 342 'outputs': [ '<(outfile)', ], 343 'action': ['<(PRODUCT_DIR)/genstring', 344 '<(varname)', 345 '<(outfile)', 346 '<(infile)', 347 ], 348 # Not a direct source because this is #included by 349 # source/patched-yasm/frontends/yasm/yasm.c 350 'process_outputs_as_sources': 0, 351 'message': 'Generating yasm embeddable license', 352 }, 353 354 ### 355 ### A re2c call that doesn't fit into the rule below. 356 ### 357 { 358 'action_name': 'generate_lc3b_token', 359 'variables': { 360 'infile': '../third_party/externals/yasm/source/patched-yasm/modules/arch/lc3b/lc3bid.re', 361 # The license file is #included by yasm.c. 362 'outfile': '<(generated_dir)/lc3bid.c', 363 }, 364 'inputs': [ '<(PRODUCT_DIR)/' 365 '<(EXECUTABLE_PREFIX)re2c<(EXECUTABLE_SUFFIX)', 366 '<(infile)', ], 367 'outputs': [ '<(outfile)', ], 368 'action': [ 369 '<(PRODUCT_DIR)/re2c', 370 '-s', 371 '-o', '<(outfile)', 372 '<(infile)' 373 ], 374 'process_outputs_as_sources': 1, 375 'message': 'Generating yasm tokens for lc3b', 376 }, 377 378 ### 379 ### genmodule call. 380 ### 381 { 382 'action_name': 'generate_module', 383 'variables': { 384 'makefile': '../third_party/yasm/config/<(skia_os)/Makefile', 385 'module_in': '../third_party/externals/yasm/source/patched-yasm/libyasm/module.in', 386 'outfile': '<(generated_dir)/module.c', 387 }, 388 'inputs': [ 389 '<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)genmodule<(EXECUTABLE_SUFFIX)', 390 '<(module_in)', 391 '<(makefile)' 392 ], 393 'outputs': [ '<(generated_dir)/module.c' ], 394 'action': [ 395 '<(PRODUCT_DIR)/genmodule', 396 '<(module_in)', 397 '<(makefile)', 398 '<(outfile)' 399 ], 400 'process_outputs_as_sources': 1, 401 'message': 'Generating yasm module information', 402 }, 403 ], 404 }, 405 { 406 'target_name': 'config_sources', 407 'type': 'none', 408 'toolsets': ['host'], 409 'sources': [ 410 '../third_party/yasm/config/<(skia_os)/Makefile', 411 '../third_party/yasm/config/<(skia_os)/config.h', 412 '../third_party/yasm/config/<(skia_os)/libyasm-stdint.h', 413 ], 414 }, 415 { 416 'target_name': 'generate_files', 417 'type': 'none', 418 'toolsets': ['host'], 419 'dependencies': [ 420 'genperf', 421 'genversion', 422 ], 423 'sources': [ 424 '../third_party/externals/yasm/source/patched-yasm/modules/arch/x86/x86cpu.gperf', 425 '../third_party/externals/yasm/source/patched-yasm/modules/arch/x86/x86regtmod.gperf', 426 ], 427 'rules': [ 428 { 429 'rule_name': 'generate_gperf', 430 'extension': 'gperf', 431 'inputs': [ '<(PRODUCT_DIR)/' 432 '<(EXECUTABLE_PREFIX)genperf<(EXECUTABLE_SUFFIX)' ], 433 'outputs': [ '<(shared_generated_dir)/<(RULE_INPUT_ROOT).c', ], 434 'action': [ 435 '<(PRODUCT_DIR)/genperf', 436 '<(RULE_INPUT_PATH)', 437 '<(shared_generated_dir)/<(RULE_INPUT_ROOT).c', 438 ], 439 'process_outputs_as_sources': 0, 440 'message': 'yasm genperf for <(RULE_INPUT_PATH)', 441 }, 442 ], 443 'actions': [ 444 { 445 'action_name': 'generate_x86_insn', 446 'variables': { 447 'gen_insn_path': 448 '../third_party/externals/yasm/source/patched-yasm/modules/arch/x86/gen_x86_insn.py', 449 }, 450 'inputs': [ '<(gen_insn_path)', ], 451 'outputs': [ 452 '<(shared_generated_dir)/x86insns.c', 453 '<(shared_generated_dir)/x86insn_gas.gperf', 454 '<(shared_generated_dir)/x86insn_nasm.gperf', 455 ], 456 'action': [ 457 'python', 458 '<(gen_insn_path)', 459 '<(shared_generated_dir)', 460 ], 461 'message': 'Running <(gen_insn_path)', 462 'process_outputs_as_sources': 0, 463 }, 464 { 465 'action_name': 'generate_version', 466 'inputs': [ '<(PRODUCT_DIR)/' 467 '<(EXECUTABLE_PREFIX)genversion<(EXECUTABLE_SUFFIX)' ], 468 'outputs': [ '<(shared_generated_dir)/<(version_file)', ], 469 'action': [ 470 '<(PRODUCT_DIR)/genversion', 471 '<(shared_generated_dir)/<(version_file)' 472 ], 473 'message': 'Generating yasm version file: ' 474 '<(shared_generated_dir)/<(version_file)', 475 'process_outputs_as_sources': 0, 476 }, 477 ], 478 }, 479 { 480 'target_name': 'genperf_libs', 481 'type': 'static_library', 482 'toolsets': ['host'], 483 'dependencies': [ 'config_sources', ], 484 'sources': [ 485 '../third_party/externals/yasm/source/patched-yasm/libyasm/phash.c', 486 '../third_party/externals/yasm/source/patched-yasm/libyasm/xmalloc.c', 487 '../third_party/externals/yasm/source/patched-yasm/libyasm/xstrdup.c', 488 ], 489 'include_dirs': [ 490 '<@(yasm_include_dirs)', 491 ], 492 'defines': [ '<@(yasm_defines)' ], 493 'cflags': [ 494 '<@(yasm_cflags)', 495 ], 496 'cflags!': [ 497 '-mfpu=neon', 498 '-mthumb', 499 '-march=armv7-a', 500 ], 501 }, 502 { 503 'target_name': 'genstring', 504 'type': 'executable', 505 'toolsets': ['host'], 506 'dependencies': [ 'config_sources', ], 507 'sources': [ 508 '../third_party/externals/yasm/source/patched-yasm/genstring.c', 509 ], 510 'include_dirs': [ 511 '<@(yasm_include_dirs)', 512 ], 513 'cflags': [ 514 '-std=gnu99', 515 '-w', 516 ], 517 'cflags!': [ 518 '-mfpu=neon', 519 '-mthumb', 520 '-march=armv7-a', 521 ], 522 }, 523 { 524 'target_name': 'genperf', 525 'type': 'executable', 526 'toolsets': ['host'], 527 'dependencies': [ 528 'genperf_libs', 529 ], 530 'sources': [ 531 '../third_party/externals/yasm/source/patched-yasm/tools/genperf/genperf.c', 532 '../third_party/externals/yasm/source/patched-yasm/tools/genperf/perfect.c', 533 ], 534 'include_dirs': [ 535 '<@(yasm_include_dirs)', 536 ], 537 'cflags': [ 538 '-std=gnu99', 539 '-w', 540 ], 541 'cflags!': [ 542 '-mfpu=neon', 543 '-mthumb', 544 '-march=armv7-a', 545 ], 546 }, 547 { 548 'target_name': 'genmacro', 549 'type': 'executable', 550 'toolsets': ['host'], 551 'dependencies': [ 'config_sources', ], 552 'sources': [ 553 '../third_party/externals/yasm/source/patched-yasm/tools/genmacro/genmacro.c', 554 ], 555 'include_dirs': [ 556 '<@(yasm_include_dirs)', 557 ], 558 'cflags': [ 559 '-std=gnu99', 560 '-w', 561 ], 562 'cflags!': [ 563 '-mfpu=neon', 564 '-mthumb', 565 '-march=armv7-a', 566 ], 567 }, 568 { 569 'target_name': 'genversion', 570 'type': 'executable', 571 'toolsets': ['host'], 572 'dependencies': [ 'config_sources', ], 573 'sources': [ 574 '../third_party/externals/yasm/source/patched-yasm/modules/preprocs/nasm/genversion.c', 575 ], 576 'include_dirs': [ 577 '<@(yasm_include_dirs)', 578 ], 579 'cflags': [ 580 '-std=gnu99', 581 '-w', 582 ], 583 'cflags!': [ 584 '-mfpu=neon', 585 '-mthumb', 586 '-march=armv7-a', 587 ], 588 }, 589 { 590 'target_name': 're2c', 591 'type': 'executable', 592 'toolsets': ['host'], 593 'dependencies': [ 'config_sources', ], 594 'sources': [ 595 '../third_party/externals/yasm/source/patched-yasm/tools/re2c/main.c', 596 '../third_party/externals/yasm/source/patched-yasm/tools/re2c/code.c', 597 '../third_party/externals/yasm/source/patched-yasm/tools/re2c/dfa.c', 598 '../third_party/externals/yasm/source/patched-yasm/tools/re2c/parser.c', 599 '../third_party/externals/yasm/source/patched-yasm/tools/re2c/actions.c', 600 '../third_party/externals/yasm/source/patched-yasm/tools/re2c/scanner.c', 601 '../third_party/externals/yasm/source/patched-yasm/tools/re2c/mbo_getopt.c', 602 '../third_party/externals/yasm/source/patched-yasm/tools/re2c/substr.c', 603 '../third_party/externals/yasm/source/patched-yasm/tools/re2c/translate.c', 604 ], 605 'include_dirs': [ 606 '<@(yasm_include_dirs)', 607 ], 608 'cflags': [ 609 '-std=gnu99', 610 '-w', 611 ], 612 'cflags!': [ 613 '-mfpu=neon', 614 '-mthumb', 615 '-march=armv7-a', 616 ], 617 'xcode_settings': { 618 'WARNING_CFLAGS': [ 619 '-w', 620 ], 621 }, 622 'variables': { 623 # re2c is missing CLOSEVOP from one switch. 624 'clang_warning_flags': [ '-Wno-switch' ], 625 }, 626 'msvs_disabled_warnings': [ 4267 ], 627 }, 628 { 629 'target_name': 'genmodule', 630 'type': 'executable', 631 'toolsets': ['host'], 632 'dependencies': [ 633 'config_sources', 634 ], 635 'sources': [ 636 '../third_party/externals/yasm/source/patched-yasm/libyasm/genmodule.c', 637 ], 638 'include_dirs': [ 639 '<@(yasm_include_dirs)', 640 641 ], 642 'cflags': [ 643 '-std=gnu99', 644 ], 645 'cflags!': [ 646 '-mfpu=neon', 647 '-mthumb', 648 '-march=armv7-a', 649 ], 650 }, 651 ], 652 } 653