1 # Copyright 2013 the V8 project authors. All rights reserved. 2 # Redistribution and use in source and binary forms, with or without 3 # modification, are permitted provided that the following conditions are 4 # met: 5 # 6 # * Redistributions of source code must retain the above copyright 7 # notice, this list of conditions and the following disclaimer. 8 # * Redistributions in binary form must reproduce the above 9 # copyright notice, this list of conditions and the following 10 # disclaimer in the documentation and/or other materials provided 11 # with the distribution. 12 # * Neither the name of Google Inc. nor the names of its 13 # contributors may be used to endorse or promote products derived 14 # from this software without specific prior written permission. 15 # 16 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 17 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 18 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 19 # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 20 # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 21 # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 22 # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 23 # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 24 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 25 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 26 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 28 # Shared definitions for all V8-related targets. 29 30 { 31 'variables': { 32 'msvs_use_common_release': 0, 33 'clang%': 0, 34 'asan%': 0, 35 'lsan%': 0, 36 'msan%': 0, 37 'tsan%': 0, 38 'ubsan%': 0, 39 'ubsan_vptr%': 0, 40 'has_valgrind%': 0, 41 'coverage%': 0, 42 'v8_target_arch%': '<(target_arch)', 43 'v8_host_byteorder%': '<!(python -c "import sys; print sys.byteorder")', 44 # Native Client builds currently use the V8 ARM JIT and 45 # arm/simulator-arm.cc to defer the significant effort required 46 # for NaCl JIT support. The nacl_target_arch variable provides 47 # the 'true' target arch for places in this file that need it. 48 # TODO(bradchen): get rid of nacl_target_arch when someday 49 # NaCl V8 builds stop using the ARM simulator 50 'nacl_target_arch%': 'none', # must be set externally 51 52 # Setting 'v8_can_use_vfp32dregs' to 'true' will cause V8 to use the VFP 53 # registers d16-d31 in the generated code, both in the snapshot and for the 54 # ARM target. Leaving the default value of 'false' will avoid the use of 55 # these registers in the snapshot and use CPU feature probing when running 56 # on the target. 57 'v8_can_use_vfp32dregs%': 'false', 58 'arm_test_noprobe%': 'off', 59 60 # Similar to vfp but on MIPS. 61 'v8_can_use_fpu_instructions%': 'true', 62 63 # Similar to the ARM hard float ABI but on MIPS. 64 'v8_use_mips_abi_hardfloat%': 'true', 65 66 # Force disable libstdc++ debug mode. 67 'disable_glibcxx_debug%': 0, 68 69 'v8_enable_backtrace%': 0, 70 71 # Enable profiling support. Only required on Windows. 72 'v8_enable_prof%': 0, 73 74 # Some versions of GCC 4.5 seem to need -fno-strict-aliasing. 75 'v8_no_strict_aliasing%': 0, 76 77 # Chrome needs this definition unconditionally. For standalone V8 builds, 78 # it's handled in gypfiles/standalone.gypi. 79 'want_separate_host_toolset%': 1, 80 81 # Toolset the shell binary should be compiled for. Possible values are 82 # 'host' and 'target'. 83 # The setting is ignored if want_separate_host_toolset is 0. 84 'v8_toolset_for_shell%': 'target', 85 86 'host_os%': '<(OS)', 87 'werror%': '-Werror', 88 # For a shared library build, results in "libv8-<(soname_version).so". 89 'soname_version%': '', 90 91 # Allow to suppress the array bounds warning (default is no suppression). 92 'wno_array_bounds%': '', 93 94 # Override where to find binutils 95 'binutils_dir%': '', 96 97 'conditions': [ 98 ['OS=="linux" and host_arch=="x64"', { 99 'binutils_dir%': 'third_party/binutils/Linux_x64/Release/bin', 100 }], 101 ['OS=="linux" and host_arch=="ia32"', { 102 'binutils_dir%': 'third_party/binutils/Linux_ia32/Release/bin', 103 }], 104 105 # linux_use_bundled_gold: whether to use the gold linker binary checked 106 # into third_party/binutils. Force this off via GYP_DEFINES when you 107 # are using a custom toolchain and need to control -B in ldflags. 108 # Do not use 32-bit gold on 32-bit hosts as it runs out address space 109 # for component=static_library builds. 110 ['OS=="linux" and (target_arch=="x64" or target_arch=="arm")', { 111 'linux_use_bundled_gold%': 1, 112 }, { 113 'linux_use_bundled_gold%': 0, 114 }], 115 # linux_use_bundled_binutils: whether to use the binary binutils 116 # checked into third_party/binutils. These are not multi-arch so cannot 117 # be used except on x86 and x86-64 (the only two architectures which 118 # are currently checke in). Force this off via GYP_DEFINES when you 119 # are using a custom toolchain and need to control -B in cflags. 120 ['OS=="linux" and (target_arch=="ia32" or target_arch=="x64")', { 121 'linux_use_bundled_binutils%': 1, 122 }, { 123 'linux_use_bundled_binutils%': 0, 124 }], 125 # linux_use_gold_flags: whether to use build flags that rely on gold. 126 # On by default for x64 Linux. 127 ['OS=="linux" and target_arch=="x64"', { 128 'linux_use_gold_flags%': 1, 129 }, { 130 'linux_use_gold_flags%': 0, 131 }], 132 ], 133 134 # Link-Time Optimizations 135 'use_lto%': 0, 136 137 # Indicates if gcmole tools are downloaded by a hook. 138 'gcmole%': 0, 139 }, 140 'conditions': [ 141 ['host_arch=="ia32" or host_arch=="x64" or \ 142 host_arch=="ppc" or host_arch=="ppc64" or \ 143 host_arch=="s390" or host_arch=="s390x" or \ 144 clang==1', { 145 'variables': { 146 'host_cxx_is_biarch%': 1, 147 }, 148 }, { 149 'variables': { 150 'host_cxx_is_biarch%': 0, 151 }, 152 }], 153 ['target_arch=="ia32" or target_arch=="x64" or target_arch=="x87" or \ 154 target_arch=="ppc" or target_arch=="ppc64" or target_arch=="s390" or \ 155 target_arch=="s390x" or clang==1', { 156 'variables': { 157 'target_cxx_is_biarch%': 1, 158 }, 159 }, { 160 'variables': { 161 'target_cxx_is_biarch%': 0, 162 }, 163 }], 164 ], 165 'target_defaults': { 166 'conditions': [ 167 ['v8_target_arch=="arm"', { 168 'defines': [ 169 'V8_TARGET_ARCH_ARM', 170 ], 171 'conditions': [ 172 [ 'arm_version==7 or arm_version=="default"', { 173 'defines': [ 174 'CAN_USE_ARMV7_INSTRUCTIONS', 175 ], 176 }], 177 [ 'arm_fpu=="vfpv3-d16" or arm_fpu=="default"', { 178 'defines': [ 179 'CAN_USE_VFP3_INSTRUCTIONS', 180 ], 181 }], 182 [ 'arm_fpu=="vfpv3"', { 183 'defines': [ 184 'CAN_USE_VFP3_INSTRUCTIONS', 185 'CAN_USE_VFP32DREGS', 186 ], 187 }], 188 [ 'arm_fpu=="neon"', { 189 'defines': [ 190 'CAN_USE_VFP3_INSTRUCTIONS', 191 'CAN_USE_VFP32DREGS', 192 'CAN_USE_NEON', 193 ], 194 }], 195 [ 'arm_test_noprobe=="on"', { 196 'defines': [ 197 'ARM_TEST_NO_FEATURE_PROBE', 198 ], 199 }], 200 ], 201 'target_conditions': [ 202 ['_toolset=="host"', { 203 'conditions': [ 204 ['v8_target_arch==host_arch', { 205 # Host built with an Arm CXX compiler. 206 'conditions': [ 207 [ 'arm_version==7', { 208 'cflags': ['-march=armv7-a',], 209 }], 210 [ 'arm_version==7 or arm_version=="default"', { 211 'conditions': [ 212 [ 'arm_fpu!="default"', { 213 'cflags': ['-mfpu=<(arm_fpu)',], 214 }], 215 ], 216 }], 217 [ 'arm_float_abi!="default"', { 218 'cflags': ['-mfloat-abi=<(arm_float_abi)',], 219 }], 220 [ 'arm_thumb==1', { 221 'cflags': ['-mthumb',], 222 }], 223 [ 'arm_thumb==0', { 224 'cflags': ['-marm',], 225 }], 226 ], 227 }, { 228 # 'v8_target_arch!=host_arch' 229 # Host not built with an Arm CXX compiler (simulator build). 230 'conditions': [ 231 [ 'arm_float_abi=="hard"', { 232 'defines': [ 233 'USE_EABI_HARDFLOAT=1', 234 ], 235 }], 236 [ 'arm_float_abi=="softfp" or arm_float_abi=="default"', { 237 'defines': [ 238 'USE_EABI_HARDFLOAT=0', 239 ], 240 }], 241 ], 242 }], 243 ], 244 }], # _toolset=="host" 245 ['_toolset=="target"', { 246 'conditions': [ 247 ['v8_target_arch==target_arch', { 248 # Target built with an Arm CXX compiler. 249 'conditions': [ 250 [ 'arm_version==7', { 251 'cflags': ['-march=armv7-a',], 252 }], 253 [ 'arm_version==7 or arm_version=="default"', { 254 'conditions': [ 255 [ 'arm_fpu!="default"', { 256 'cflags': ['-mfpu=<(arm_fpu)',], 257 }], 258 ], 259 }], 260 [ 'arm_float_abi!="default"', { 261 'cflags': ['-mfloat-abi=<(arm_float_abi)',], 262 }], 263 [ 'arm_thumb==1', { 264 'cflags': ['-mthumb',], 265 }], 266 [ 'arm_thumb==0', { 267 'cflags': ['-marm',], 268 }], 269 ], 270 }, { 271 # 'v8_target_arch!=target_arch' 272 # Target not built with an Arm CXX compiler (simulator build). 273 'conditions': [ 274 [ 'arm_float_abi=="hard"', { 275 'defines': [ 276 'USE_EABI_HARDFLOAT=1', 277 ], 278 }], 279 [ 'arm_float_abi=="softfp" or arm_float_abi=="default"', { 280 'defines': [ 281 'USE_EABI_HARDFLOAT=0', 282 ], 283 }], 284 ], 285 }], 286 # Disable GCC LTO for v8 287 # v8 is optimized for speed. Because GCC LTO merges flags at link 288 # time, we disable LTO to prevent any -O2 flags from taking 289 # precedence over v8's -Os flag. However, LLVM LTO does not work 290 # this way so we keep LTO enabled under LLVM. 291 ['clang==0 and use_lto==1', { 292 'cflags!': [ 293 '-flto', 294 '-ffat-lto-objects', 295 ], 296 }], 297 ], 298 }], # _toolset=="target" 299 ], 300 }], # v8_target_arch=="arm" 301 ['v8_target_arch=="arm64"', { 302 'defines': [ 303 'V8_TARGET_ARCH_ARM64', 304 ], 305 }], 306 ['v8_target_arch=="s390" or v8_target_arch=="s390x"', { 307 'defines': [ 308 'V8_TARGET_ARCH_S390', 309 ], 310 'conditions': [ 311 ['v8_target_arch=="s390x"', { 312 'defines': [ 313 'V8_TARGET_ARCH_S390X', 314 ], 315 }], 316 ['v8_host_byteorder=="little"', { 317 'defines': [ 318 'V8_TARGET_ARCH_S390_LE_SIM', 319 ], 320 }], 321 ], 322 }], # s390 323 ['v8_target_arch=="ppc" or v8_target_arch=="ppc64"', { 324 'defines': [ 325 'V8_TARGET_ARCH_PPC', 326 ], 327 'conditions': [ 328 ['v8_target_arch=="ppc64"', { 329 'defines': [ 330 'V8_TARGET_ARCH_PPC64', 331 ], 332 }], 333 ['v8_host_byteorder=="little"', { 334 'defines': [ 335 'V8_TARGET_ARCH_PPC_LE', 336 ], 337 }], 338 ['v8_host_byteorder=="big"', { 339 'defines': [ 340 'V8_TARGET_ARCH_PPC_BE', 341 ], 342 'conditions': [ 343 ['OS=="aix"', { 344 # Work around AIX ceil, trunc and round oddities. 345 'cflags': [ '-mcpu=power5+ -mfprnd' ], 346 }], 347 ['OS=="aix"', { 348 # Work around AIX assembler popcntb bug. 349 'cflags': [ '-mno-popcntb' ], 350 }], 351 ], 352 }], 353 ], 354 }], # ppc 355 ['v8_target_arch=="ia32"', { 356 'defines': [ 357 'V8_TARGET_ARCH_IA32', 358 ], 359 }], # v8_target_arch=="ia32" 360 ['v8_target_arch=="x87"', { 361 'defines': [ 362 'V8_TARGET_ARCH_X87', 363 ], 364 'cflags': ['-march=i586'], 365 }], # v8_target_arch=="x87" 366 ['(v8_target_arch=="mips" or v8_target_arch=="mipsel" \ 367 or v8_target_arch=="mips64" or v8_target_arch=="mips64el") \ 368 and v8_target_arch==target_arch', { 369 'target_conditions': [ 370 ['_toolset=="target"', { 371 # Target built with a Mips CXX compiler. 372 'variables': { 373 'ldso_path%': '<!(/bin/echo -n $LDSO_PATH)', 374 'ld_r_path%': '<!(/bin/echo -n $LD_R_PATH)', 375 }, 376 'conditions': [ 377 ['ldso_path!=""', { 378 'ldflags': ['-Wl,--dynamic-linker=<(ldso_path)'], 379 }], 380 ['ld_r_path!=""', { 381 'ldflags': ['-Wl,--rpath=<(ld_r_path)'], 382 }], 383 [ 'clang==1', { 384 'cflags': ['-integrated-as'], 385 }], 386 ], 387 }], 388 ], 389 }], 390 ['v8_target_arch=="mips"', { 391 'defines': [ 392 'V8_TARGET_ARCH_MIPS', 393 ], 394 'conditions': [ 395 [ 'v8_can_use_fpu_instructions=="true"', { 396 'defines': [ 397 'CAN_USE_FPU_INSTRUCTIONS', 398 ], 399 }], 400 [ 'v8_use_mips_abi_hardfloat=="true"', { 401 'defines': [ 402 '__mips_hard_float=1', 403 'CAN_USE_FPU_INSTRUCTIONS', 404 ], 405 }, { 406 'defines': [ 407 '__mips_soft_float=1' 408 ] 409 }], 410 ], 411 'target_conditions': [ 412 ['_toolset=="target"', { 413 'conditions': [ 414 ['v8_target_arch==target_arch', { 415 # Target built with a Mips CXX compiler. 416 'cflags': [ 417 '-EB', 418 '-Wno-error=array-bounds', # Workaround https://gcc.gnu.org/bugzilla/show_bug.cgi?id=56273 419 ], 420 'ldflags': ['-EB'], 421 'conditions': [ 422 [ 'v8_use_mips_abi_hardfloat=="true"', { 423 'cflags': ['-mhard-float'], 424 'ldflags': ['-mhard-float'], 425 }, { 426 'cflags': ['-msoft-float'], 427 'ldflags': ['-msoft-float'], 428 }], 429 ['mips_arch_variant=="r6"', { 430 'defines': [ 431 '_MIPS_ARCH_MIPS32R6', 432 'FPU_MODE_FP64', 433 ], 434 'cflags!': ['-mfp32', '-mfpxx'], 435 'conditions': [ 436 [ 'clang==0', { 437 'cflags': ['-Wa,-mips32r6'], 438 }], 439 ], 440 'cflags': ['-mips32r6'], 441 'ldflags': ['-mips32r6'], 442 }], 443 ['mips_arch_variant=="r2"', { 444 'conditions': [ 445 [ 'mips_fpu_mode=="fp64"', { 446 'defines': [ 447 '_MIPS_ARCH_MIPS32R2', 448 'FPU_MODE_FP64', 449 ], 450 'cflags': ['-mfp64'], 451 }], 452 ['mips_fpu_mode=="fpxx"', { 453 'defines': [ 454 '_MIPS_ARCH_MIPS32R2', 455 'FPU_MODE_FPXX', 456 ], 457 'cflags': ['-mfpxx'], 458 }], 459 ['mips_fpu_mode=="fp32"', { 460 'defines': [ 461 '_MIPS_ARCH_MIPS32R2', 462 'FPU_MODE_FP32', 463 ], 464 'cflags': ['-mfp32'], 465 }], 466 [ 'clang==0', { 467 'cflags': ['-Wa,-mips32r2'], 468 }], 469 ], 470 'cflags': ['-mips32r2'], 471 'ldflags': ['-mips32r2'], 472 }], 473 ['mips_arch_variant=="r1"', { 474 'defines': [ 475 'FPU_MODE_FP32', 476 ], 477 'cflags!': ['-mfp64', '-mfpxx'], 478 'conditions': [ 479 [ 'clang==0', { 480 'cflags': ['-Wa,-mips32'], 481 }], 482 ], 483 'cflags': ['-mips32'], 484 'ldflags': ['-mips32'], 485 }], 486 ['mips_arch_variant=="rx"', { 487 'defines': [ 488 '_MIPS_ARCH_MIPS32RX', 489 'FPU_MODE_FPXX', 490 ], 491 'cflags!': ['-mfp64', '-mfp32'], 492 'conditions': [ 493 [ 'clang==0', { 494 'cflags': ['-Wa,-mips32'], 495 }], 496 ], 497 'cflags': ['-mips32', '-mfpxx'], 498 'ldflags': ['-mips32'], 499 }], 500 ], 501 }, { 502 # 'v8_target_arch!=target_arch' 503 # Target not built with an MIPS CXX compiler (simulator build). 504 'conditions': [ 505 ['mips_arch_variant=="r6"', { 506 'defines': [ 507 '_MIPS_ARCH_MIPS32R6', 508 'FPU_MODE_FP64', 509 ], 510 }], 511 ['mips_arch_variant=="r2"', { 512 'conditions': [ 513 [ 'mips_fpu_mode=="fp64"', { 514 'defines': [ 515 '_MIPS_ARCH_MIPS32R2', 516 'FPU_MODE_FP64', 517 ], 518 }], 519 ['mips_fpu_mode=="fpxx"', { 520 'defines': [ 521 '_MIPS_ARCH_MIPS32R2', 522 'FPU_MODE_FPXX', 523 ], 524 }], 525 ['mips_fpu_mode=="fp32"', { 526 'defines': [ 527 '_MIPS_ARCH_MIPS32R2', 528 'FPU_MODE_FP32', 529 ], 530 }], 531 ], 532 }], 533 ['mips_arch_variant=="r1"', { 534 'defines': [ 535 'FPU_MODE_FP32', 536 ], 537 }], 538 ['mips_arch_variant=="rx"', { 539 'defines': [ 540 '_MIPS_ARCH_MIPS32RX', 541 'FPU_MODE_FPXX', 542 ], 543 }], 544 ], 545 }], 546 ], 547 }], #_toolset=="target" 548 ['_toolset=="host"', { 549 'conditions': [ 550 ['mips_arch_variant=="rx"', { 551 'defines': [ 552 '_MIPS_ARCH_MIPS32RX', 553 'FPU_MODE_FPXX', 554 ], 555 }], 556 ['mips_arch_variant=="r6"', { 557 'defines': [ 558 '_MIPS_ARCH_MIPS32R6', 559 'FPU_MODE_FP64', 560 ], 561 }], 562 ['mips_arch_variant=="r2"', { 563 'conditions': [ 564 ['mips_fpu_mode=="fp64"', { 565 'defines': [ 566 '_MIPS_ARCH_MIPS32R2', 567 'FPU_MODE_FP64', 568 ], 569 }], 570 ['mips_fpu_mode=="fpxx"', { 571 'defines': [ 572 '_MIPS_ARCH_MIPS32R2', 573 'FPU_MODE_FPXX', 574 ], 575 }], 576 ['mips_fpu_mode=="fp32"', { 577 'defines': [ 578 '_MIPS_ARCH_MIPS32R2', 579 'FPU_MODE_FP32' 580 ], 581 }], 582 ], 583 }], 584 ['mips_arch_variant=="r1"', { 585 'defines': ['FPU_MODE_FP32',], 586 }], 587 ] 588 }], #_toolset=="host" 589 ], 590 }], # v8_target_arch=="mips" 591 ['v8_target_arch=="mipsel"', { 592 'defines': [ 593 'V8_TARGET_ARCH_MIPS', 594 ], 595 'conditions': [ 596 [ 'v8_can_use_fpu_instructions=="true"', { 597 'defines': [ 598 'CAN_USE_FPU_INSTRUCTIONS', 599 ], 600 }], 601 [ 'v8_use_mips_abi_hardfloat=="true"', { 602 'defines': [ 603 '__mips_hard_float=1', 604 'CAN_USE_FPU_INSTRUCTIONS', 605 ], 606 }, { 607 'defines': [ 608 '__mips_soft_float=1' 609 ], 610 }], 611 ], 612 'target_conditions': [ 613 ['_toolset=="target"', { 614 'conditions': [ 615 ['v8_target_arch==target_arch', { 616 # Target built with a Mips CXX compiler. 617 'cflags': [ 618 '-EL', 619 '-Wno-error=array-bounds', # Workaround https://gcc.gnu.org/bugzilla/show_bug.cgi?id=56273 620 ], 621 'ldflags': ['-EL'], 622 'conditions': [ 623 [ 'v8_use_mips_abi_hardfloat=="true"', { 624 'cflags': ['-mhard-float'], 625 'ldflags': ['-mhard-float'], 626 }, { 627 'cflags': ['-msoft-float'], 628 'ldflags': ['-msoft-float'], 629 }], 630 ['mips_arch_variant=="r6"', { 631 'defines': [ 632 '_MIPS_ARCH_MIPS32R6', 633 'FPU_MODE_FP64', 634 ], 635 'cflags!': ['-mfp32', '-mfpxx'], 636 'conditions': [ 637 [ 'clang==0', { 638 'cflags': ['-Wa,-mips32r6'], 639 }], 640 ], 641 'cflags': ['-mips32r6'], 642 'ldflags': ['-mips32r6'], 643 }], 644 ['mips_arch_variant=="r2"', { 645 'conditions': [ 646 [ 'mips_fpu_mode=="fp64"', { 647 'defines': [ 648 '_MIPS_ARCH_MIPS32R2', 649 'FPU_MODE_FP64', 650 ], 651 'cflags': ['-mfp64'], 652 }], 653 ['mips_fpu_mode=="fpxx"', { 654 'defines': [ 655 '_MIPS_ARCH_MIPS32R2', 656 'FPU_MODE_FPXX', 657 ], 658 'cflags': ['-mfpxx'], 659 }], 660 ['mips_fpu_mode=="fp32"', { 661 'defines': [ 662 '_MIPS_ARCH_MIPS32R2', 663 'FPU_MODE_FP32', 664 ], 665 'cflags': ['-mfp32'], 666 }], 667 [ 'clang==0', { 668 'cflags': ['-Wa,-mips32r2'], 669 }], 670 ], 671 'cflags': ['-mips32r2'], 672 'ldflags': ['-mips32r2'], 673 }], 674 ['mips_arch_variant=="r1"', { 675 'defines': [ 676 'FPU_MODE_FP32', 677 ], 678 'cflags!': ['-mfp64', '-mfpxx'], 679 'conditions': [ 680 [ 'clang==0', { 681 'cflags': ['-Wa,-mips32'], 682 }], 683 ], 684 'cflags': ['-mips32'], 685 'ldflags': ['-mips32'], 686 }], 687 ['mips_arch_variant=="rx"', { 688 'defines': [ 689 '_MIPS_ARCH_MIPS32RX', 690 'FPU_MODE_FPXX', 691 ], 692 'cflags!': ['-mfp64', '-mfp32'], 693 'conditions': [ 694 [ 'clang==0', { 695 'cflags': ['-Wa,-mips32'], 696 }], 697 ], 698 'cflags': ['-mips32', '-mfpxx'], 699 'ldflags': ['-mips32'], 700 }], 701 ['mips_arch_variant=="loongson"', { 702 'defines': [ 703 '_MIPS_ARCH_LOONGSON', 704 'FPU_MODE_FP32', 705 ], 706 'cflags!': ['-mfp64', '-mfpxx'], 707 'conditions': [ 708 [ 'clang==0', { 709 'cflags': ['-Wa,-mips3'], 710 }], 711 ], 712 'cflags': ['-mips3', '-mfp32'], 713 }], 714 ], 715 }, { 716 # 'v8_target_arch!=target_arch' 717 # Target not built with an MIPS CXX compiler (simulator build). 718 'conditions': [ 719 ['mips_arch_variant=="r6"', { 720 'defines': [ 721 '_MIPS_ARCH_MIPS32R6', 722 'FPU_MODE_FP64', 723 ], 724 }], 725 ['mips_arch_variant=="r2"', { 726 'conditions': [ 727 [ 'mips_fpu_mode=="fp64"', { 728 'defines': [ 729 '_MIPS_ARCH_MIPS32R2', 730 'FPU_MODE_FP64', 731 ], 732 }], 733 ['mips_fpu_mode=="fpxx"', { 734 'defines': [ 735 '_MIPS_ARCH_MIPS32R2', 736 'FPU_MODE_FPXX', 737 ], 738 }], 739 ['mips_fpu_mode=="fp32"', { 740 'defines': [ 741 '_MIPS_ARCH_MIPS32R2', 742 'FPU_MODE_FP32', 743 ], 744 }], 745 ], 746 }], 747 ['mips_arch_variant=="r1"', { 748 'defines': [ 749 'FPU_MODE_FP32', 750 ], 751 }], 752 ['mips_arch_variant=="rx"', { 753 'defines': [ 754 '_MIPS_ARCH_MIPS32RX', 755 'FPU_MODE_FPXX', 756 ], 757 }], 758 ['mips_arch_variant=="loongson"', { 759 'defines': [ 760 '_MIPS_ARCH_LOONGSON', 761 'FPU_MODE_FP32', 762 ], 763 }], 764 ], 765 }], 766 ], 767 }], #_toolset=="target 768 ['_toolset=="host"', { 769 'conditions': [ 770 ['mips_arch_variant=="rx"', { 771 'defines': [ 772 '_MIPS_ARCH_MIPS32RX', 773 'FPU_MODE_FPXX', 774 ], 775 }], 776 ['mips_arch_variant=="r6"', { 777 'defines': [ 778 '_MIPS_ARCH_MIPS32R6', 779 'FPU_MODE_FP64', 780 ], 781 }], 782 ['mips_arch_variant=="r2"', { 783 'conditions': [ 784 ['mips_fpu_mode=="fp64"', { 785 'defines': [ 786 '_MIPS_ARCH_MIPS32R2', 787 'FPU_MODE_FP64', 788 ], 789 }], 790 ['mips_fpu_mode=="fpxx"', { 791 'defines': [ 792 '_MIPS_ARCH_MIPS32R2', 793 'FPU_MODE_FPXX', 794 ], 795 }], 796 ['mips_fpu_mode=="fp32"', { 797 'defines': [ 798 '_MIPS_ARCH_MIPS32R2', 799 'FPU_MODE_FP32' 800 ], 801 }], 802 ], 803 }], 804 ['mips_arch_variant=="r1"', { 805 'defines': ['FPU_MODE_FP32',], 806 }], 807 ['mips_arch_variant=="loongson"', { 808 'defines': [ 809 '_MIPS_ARCH_LOONGSON', 810 'FPU_MODE_FP32', 811 ], 812 }], 813 ] 814 }], 815 ], 816 }], # v8_target_arch=="mipsel" 817 ['v8_target_arch=="mips64el" or v8_target_arch=="mips64"', { 818 'defines': [ 819 'V8_TARGET_ARCH_MIPS64', 820 ], 821 'conditions': [ 822 [ 'v8_can_use_fpu_instructions=="true"', { 823 'defines': [ 824 'CAN_USE_FPU_INSTRUCTIONS', 825 ], 826 }], 827 [ 'v8_host_byteorder=="little"', { 828 'defines': [ 829 'V8_TARGET_ARCH_MIPS64_LE', 830 ], 831 }], 832 [ 'v8_host_byteorder=="big"', { 833 'defines': [ 834 'V8_TARGET_ARCH_MIPS64_BE', 835 ], 836 }], 837 [ 'v8_use_mips_abi_hardfloat=="true"', { 838 'defines': [ 839 '__mips_hard_float=1', 840 'CAN_USE_FPU_INSTRUCTIONS', 841 ], 842 }, { 843 'defines': [ 844 '__mips_soft_float=1' 845 ], 846 }], 847 ], 848 'target_conditions': [ 849 ['_toolset=="target"', { 850 'conditions': [ 851 ['v8_target_arch==target_arch', { 852 'cflags': [ 853 '-Wno-error=array-bounds', # Workaround https://gcc.gnu.org/bugzilla/show_bug.cgi?id=56273 854 ], 855 'conditions': [ 856 ['v8_target_arch=="mips64el"', { 857 'cflags': ['-EL'], 858 'ldflags': ['-EL'], 859 }], 860 ['v8_target_arch=="mips64"', { 861 'cflags': ['-EB'], 862 'ldflags': ['-EB'], 863 }], 864 [ 'v8_use_mips_abi_hardfloat=="true"', { 865 'cflags': ['-mhard-float'], 866 'ldflags': ['-mhard-float'], 867 }, { 868 'cflags': ['-msoft-float'], 869 'ldflags': ['-msoft-float'], 870 }], 871 ['mips_arch_variant=="r6"', { 872 'defines': ['_MIPS_ARCH_MIPS64R6',], 873 'conditions': [ 874 [ 'clang==0', { 875 'cflags': ['-Wa,-mips64r6'], 876 }], 877 ], 878 'cflags': ['-mips64r6', '-mabi=64'], 879 'ldflags': ['-mips64r6', '-mabi=64'], 880 }], 881 ['mips_arch_variant=="r2"', { 882 'defines': ['_MIPS_ARCH_MIPS64R2',], 883 'conditions': [ 884 [ 'clang==0', { 885 'cflags': ['-Wa,-mips64r2'], 886 }], 887 ], 888 'cflags': ['-mips64r2', '-mabi=64'], 889 'ldflags': ['-mips64r2', '-mabi=64'], 890 }], 891 ], 892 }, { 893 # 'v8_target_arch!=target_arch' 894 # Target not built with an MIPS CXX compiler (simulator build). 895 'conditions': [ 896 ['mips_arch_variant=="r6"', { 897 'defines': ['_MIPS_ARCH_MIPS64R6',], 898 }], 899 ['mips_arch_variant=="r2"', { 900 'defines': ['_MIPS_ARCH_MIPS64R2',], 901 }], 902 ], 903 }], 904 ], 905 }], #'_toolset=="target" 906 ['_toolset=="host"', { 907 'conditions': [ 908 ['mips_arch_variant=="r6"', { 909 'defines': ['_MIPS_ARCH_MIPS64R6',], 910 }], 911 ['mips_arch_variant=="r2"', { 912 'defines': ['_MIPS_ARCH_MIPS64R2',], 913 }], 914 ], 915 }], #'_toolset=="host" 916 ], 917 }], # v8_target_arch=="mips64el" 918 ['v8_target_arch=="x64"', { 919 'defines': [ 920 'V8_TARGET_ARCH_X64', 921 ], 922 'xcode_settings': { 923 'ARCHS': [ 'x86_64' ], 924 }, 925 'msvs_settings': { 926 'VCLinkerTool': { 927 'StackReserveSize': '2097152', 928 }, 929 }, 930 'msvs_configuration_platform': 'x64', 931 }], # v8_target_arch=="x64" 932 ['v8_target_arch=="x32"', { 933 'defines': [ 934 # x32 port shares the source code with x64 port. 935 'V8_TARGET_ARCH_X64', 936 'V8_TARGET_ARCH_32_BIT', 937 ], 938 'cflags': [ 939 '-mx32', 940 # Inhibit warning if long long type is used. 941 '-Wno-long-long', 942 ], 943 'ldflags': [ 944 '-mx32', 945 ], 946 }], # v8_target_arch=="x32" 947 ['linux_use_gold_flags==1', { 948 # Newer gccs and clangs support -fuse-ld, use the flag to force gold 949 # selection. 950 # gcc -- http://gcc.gnu.org/onlinedocs/gcc-4.8.0/gcc/Optimize-Options.html 951 'ldflags': [ '-fuse-ld=gold', ], 952 }], 953 ['linux_use_bundled_binutils==1', { 954 'cflags': [ 955 '-B<!(cd <(DEPTH) && pwd -P)/<(binutils_dir)', 956 ], 957 }], 958 ['linux_use_bundled_gold==1', { 959 # Put our binutils, which contains gold in the search path. We pass 960 # the path to gold to the compiler. gyp leaves unspecified what the 961 # cwd is when running the compiler, so the normal gyp path-munging 962 # fails us. This hack gets the right path. 963 'ldflags': [ 964 '-B<!(cd <(DEPTH) && pwd -P)/<(binutils_dir)', 965 ], 966 }], 967 ['OS=="win"', { 968 'defines': [ 969 'WIN32', 970 ], 971 # 4351: VS 2005 and later are warning us that they've fixed a bug 972 # present in VS 2003 and earlier. 973 'msvs_disabled_warnings': [4351], 974 'msvs_configuration_attributes': { 975 'OutputDirectory': '<(DEPTH)\\build\\$(ConfigurationName)', 976 'IntermediateDirectory': '$(OutDir)\\obj\\$(ProjectName)', 977 'CharacterSet': '1', 978 }, 979 }], 980 ['OS=="win" and v8_target_arch=="ia32"', { 981 'msvs_settings': { 982 'VCCLCompilerTool': { 983 # Ensure no surprising artifacts from 80bit double math with x86. 984 'AdditionalOptions': ['/arch:SSE2'], 985 }, 986 }, 987 }], 988 ['OS=="win" and v8_enable_prof==1', { 989 'msvs_settings': { 990 'VCLinkerTool': { 991 'GenerateMapFile': 'true', 992 }, 993 }, 994 }], 995 ['(OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="solaris" \ 996 or OS=="netbsd" or OS=="mac" or OS=="android" or OS=="qnx") and \ 997 v8_target_arch=="ia32"', { 998 'cflags': [ 999 '-msse2', 1000 '-mfpmath=sse', 1001 '-mmmx', # Allows mmintrin.h for MMX intrinsics. 1002 ], 1003 }], 1004 ['(OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="solaris" \ 1005 or OS=="netbsd" or OS=="mac" or OS=="android" or OS=="qnx") and \ 1006 (v8_target_arch=="arm" or v8_target_arch=="ia32" or \ 1007 v8_target_arch=="x87" or v8_target_arch=="mips" or \ 1008 v8_target_arch=="mipsel" or v8_target_arch=="ppc" or \ 1009 v8_target_arch=="s390")', { 1010 'target_conditions': [ 1011 ['_toolset=="host"', { 1012 'conditions': [ 1013 ['host_cxx_is_biarch==1', { 1014 'conditions': [ 1015 ['host_arch=="s390" or host_arch=="s390x"', { 1016 'cflags': [ '-m31' ], 1017 'ldflags': [ '-m31' ] 1018 },{ 1019 'cflags': [ '-m32' ], 1020 'ldflags': [ '-m32' ] 1021 }], 1022 ], 1023 }], 1024 ], 1025 'xcode_settings': { 1026 'ARCHS': [ 'i386' ], 1027 }, 1028 }], 1029 ['_toolset=="target"', { 1030 'conditions': [ 1031 ['target_cxx_is_biarch==1 and nacl_target_arch!="nacl_x64"', { 1032 'conditions': [ 1033 ['host_arch=="s390" or host_arch=="s390x"', { 1034 'cflags': [ '-m31' ], 1035 'ldflags': [ '-m31' ] 1036 },{ 1037 'cflags': [ '-m32' ], 1038 'ldflags': [ '-m32' ], 1039 }], 1040 ], 1041 }], 1042 ], 1043 'xcode_settings': { 1044 'ARCHS': [ 'i386' ], 1045 }, 1046 }], 1047 ], 1048 }], 1049 ['(OS=="linux" or OS=="android") and \ 1050 (v8_target_arch=="x64" or v8_target_arch=="arm64" or \ 1051 v8_target_arch=="ppc64" or v8_target_arch=="s390x")', { 1052 'target_conditions': [ 1053 ['_toolset=="host"', { 1054 'conditions': [ 1055 ['host_cxx_is_biarch==1', { 1056 'cflags': [ '-m64' ], 1057 'ldflags': [ '-m64' ] 1058 }], 1059 ], 1060 }], 1061 ['_toolset=="target"', { 1062 'conditions': [ 1063 ['target_cxx_is_biarch==1', { 1064 'cflags': [ '-m64' ], 1065 'ldflags': [ '-m64' ], 1066 }], 1067 ] 1068 }], 1069 ], 1070 }], 1071 ['OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="solaris" \ 1072 or OS=="netbsd" or OS=="qnx" or OS=="aix"', { 1073 'conditions': [ 1074 [ 'v8_no_strict_aliasing==1', { 1075 'cflags': [ '-fno-strict-aliasing' ], 1076 }], 1077 ], # conditions 1078 }], 1079 ['OS=="solaris"', { 1080 'defines': [ '__C99FEATURES__=1' ], # isinf() etc. 1081 }], 1082 ['OS=="freebsd" or OS=="openbsd"', { 1083 'cflags': [ '-I/usr/local/include' ], 1084 }], 1085 ['OS=="netbsd"', { 1086 'cflags': [ '-I/usr/pkg/include' ], 1087 }], 1088 ['OS=="aix"', { 1089 'defines': [ 1090 # Support for malloc(0) 1091 '_LINUX_SOURCE_COMPAT=1', 1092 '__STDC_FORMAT_MACROS', 1093 '_ALL_SOURCE=1'], 1094 'conditions': [ 1095 [ 'v8_target_arch=="ppc"', { 1096 'ldflags': [ '-Wl,-bmaxdata:0x60000000/dsa' ], 1097 }], 1098 [ 'v8_target_arch=="ppc64"', { 1099 'cflags': [ '-maix64' ], 1100 'ldflags': [ '-maix64 -Wl,-bbigtoc' ], 1101 }], 1102 ], 1103 }], 1104 ], # conditions 1105 'configurations': { 1106 # Abstract configuration for v8_optimized_debug == 0. 1107 'DebugBase0': { 1108 'abstract': 1, 1109 'msvs_settings': { 1110 'VCCLCompilerTool': { 1111 'Optimization': '0', 1112 'conditions': [ 1113 ['component=="shared_library"', { 1114 'RuntimeLibrary': '3', # /MDd 1115 }, { 1116 'RuntimeLibrary': '1', # /MTd 1117 }], 1118 ], 1119 }, 1120 'VCLinkerTool': { 1121 'LinkIncremental': '2', 1122 }, 1123 }, 1124 'variables': { 1125 'v8_enable_slow_dchecks%': 1, 1126 }, 1127 'conditions': [ 1128 ['OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="netbsd" or \ 1129 OS=="qnx" or OS=="aix"', { 1130 'cflags!': [ 1131 '-O3', 1132 '-O2', 1133 '-O1', 1134 '-Os', 1135 ], 1136 'cflags': [ 1137 '-fdata-sections', 1138 '-ffunction-sections', 1139 ], 1140 }], 1141 ['OS=="mac"', { 1142 'xcode_settings': { 1143 'GCC_OPTIMIZATION_LEVEL': '0', # -O0 1144 }, 1145 }], 1146 ['v8_enable_slow_dchecks==1', { 1147 'defines': [ 1148 'ENABLE_SLOW_DCHECKS', 1149 ], 1150 }], 1151 ], 1152 }, # DebugBase0 1153 # Abstract configuration for v8_optimized_debug == 1. 1154 'DebugBase1': { 1155 'abstract': 1, 1156 'msvs_settings': { 1157 'VCCLCompilerTool': { 1158 'Optimization': '2', 1159 'InlineFunctionExpansion': '2', 1160 'EnableIntrinsicFunctions': 'true', 1161 'FavorSizeOrSpeed': '0', 1162 'StringPooling': 'true', 1163 'BasicRuntimeChecks': '0', 1164 'conditions': [ 1165 ['component=="shared_library"', { 1166 'RuntimeLibrary': '3', #/MDd 1167 }, { 1168 'RuntimeLibrary': '1', #/MTd 1169 }], 1170 ], 1171 }, 1172 'VCLinkerTool': { 1173 'LinkIncremental': '1', 1174 'OptimizeReferences': '2', 1175 'EnableCOMDATFolding': '2', 1176 }, 1177 }, 1178 'variables': { 1179 'v8_enable_slow_dchecks%': 0, 1180 }, 1181 'conditions': [ 1182 ['OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="netbsd" or \ 1183 OS=="qnx" or OS=="aix"', { 1184 'cflags!': [ 1185 '-O0', 1186 '-O1', 1187 '-Os', 1188 ], 1189 'cflags': [ 1190 '-fdata-sections', 1191 '-ffunction-sections', 1192 ], 1193 'conditions': [ 1194 # TODO(crbug.com/272548): Avoid -O3 in NaCl 1195 # Don't use -O3 with sanitizers. 1196 ['nacl_target_arch=="none" and asan==0 and msan==0 and lsan==0 \ 1197 and tsan==0 and ubsan==0 and ubsan_vptr==0', { 1198 'cflags': ['-O3'], 1199 'cflags!': ['-O2'], 1200 }, { 1201 'cflags': ['-O2'], 1202 'cflags!': ['-O3'], 1203 }], 1204 ], 1205 }], 1206 ['OS=="mac"', { 1207 'xcode_settings': { 1208 'GCC_OPTIMIZATION_LEVEL': '3', # -O3 1209 'GCC_STRICT_ALIASING': 'YES', 1210 }, 1211 }], 1212 ['v8_enable_slow_dchecks==1', { 1213 'defines': [ 1214 'ENABLE_SLOW_DCHECKS', 1215 ], 1216 }], 1217 ], 1218 }, # DebugBase1 1219 # Common settings for the Debug configuration. 1220 'DebugBaseCommon': { 1221 'abstract': 1, 1222 'defines': [ 1223 'ENABLE_DISASSEMBLER', 1224 'V8_ENABLE_CHECKS', 1225 'OBJECT_PRINT', 1226 'VERIFY_HEAP', 1227 'DEBUG', 1228 'TRACE_MAPS' 1229 ], 1230 'conditions': [ 1231 ['OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="netbsd" or \ 1232 OS=="qnx" or OS=="aix"', { 1233 'cflags': [ '-Woverloaded-virtual', '<(wno_array_bounds)', ], 1234 }], 1235 ['OS=="linux" and v8_enable_backtrace==1', { 1236 # Support for backtrace_symbols. 1237 'ldflags': [ '-rdynamic' ], 1238 }], 1239 ['OS=="linux" and disable_glibcxx_debug==0', { 1240 # Enable libstdc++ debugging facilities to help catch problems 1241 # early, see http://crbug.com/65151 . 1242 'defines': ['_GLIBCXX_DEBUG=1',], 1243 }], 1244 ['OS=="aix"', { 1245 'ldflags': [ '-Wl,-bbigtoc' ], 1246 'conditions': [ 1247 ['v8_target_arch=="ppc64"', { 1248 'cflags': [ '-maix64 -mcmodel=large' ], 1249 }], 1250 ], 1251 }], 1252 ['OS=="android"', { 1253 'variables': { 1254 'android_full_debug%': 1, 1255 }, 1256 'conditions': [ 1257 ['android_full_debug==0', { 1258 # Disable full debug if we want a faster v8 in a debug build. 1259 # TODO(2304): pass DISABLE_DEBUG_ASSERT instead of hiding DEBUG. 1260 'defines!': [ 1261 'DEBUG', 1262 'ENABLE_SLOW_DCHECKS', 1263 ], 1264 }], 1265 ], 1266 }], 1267 # TODO(pcc): Re-enable in LTO builds once we've fixed the intermittent 1268 # link failures (crbug.com/513074). 1269 ['linux_use_gold_flags==1 and use_lto==0', { 1270 'target_conditions': [ 1271 ['_toolset=="target"', { 1272 'ldflags': [ 1273 # Experimentation found that using four linking threads 1274 # saved ~20% of link time. 1275 # https://groups.google.com/a/chromium.org/group/chromium-dev/browse_thread/thread/281527606915bb36 1276 # Only apply this to the target linker, since the host 1277 # linker might not be gold, but isn't used much anyway. 1278 '-Wl,--threads', 1279 '-Wl,--thread-count=4', 1280 ], 1281 }], 1282 ], 1283 }], 1284 ], 1285 }, # DebugBaseCommon 1286 'Debug': { 1287 'inherit_from': ['DebugBaseCommon'], 1288 'conditions': [ 1289 ['v8_optimized_debug==0', { 1290 'inherit_from': ['DebugBase0'], 1291 }, { 1292 'inherit_from': ['DebugBase1'], 1293 }], 1294 ], 1295 }, # Debug 1296 'ReleaseBase': { 1297 'abstract': 1, 1298 'variables': { 1299 'v8_enable_slow_dchecks%': 0, 1300 }, 1301 'conditions': [ 1302 ['OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="netbsd" \ 1303 or OS=="aix"', { 1304 'cflags!': [ 1305 '-Os', 1306 ], 1307 'cflags': [ 1308 '-fdata-sections', 1309 '-ffunction-sections', 1310 '<(wno_array_bounds)', 1311 ], 1312 'conditions': [ 1313 # TODO(crbug.com/272548): Avoid -O3 in NaCl 1314 # Don't use -O3 with sanitizers. 1315 ['nacl_target_arch=="none" and asan==0 and msan==0 and lsan==0 \ 1316 and tsan==0 and ubsan==0 and ubsan_vptr==0', { 1317 'cflags': ['-O3'], 1318 'cflags!': ['-O2'], 1319 }, { 1320 'cflags': ['-O2'], 1321 'cflags!': ['-O3'], 1322 }], 1323 ], 1324 }], 1325 ['OS=="android"', { 1326 'cflags!': [ 1327 '-O3', 1328 '-Os', 1329 ], 1330 'cflags': [ 1331 '-fdata-sections', 1332 '-ffunction-sections', 1333 '-O2', 1334 ], 1335 }], 1336 ['OS=="mac"', { 1337 'xcode_settings': { 1338 'GCC_OPTIMIZATION_LEVEL': '3', # -O3 1339 1340 # -fstrict-aliasing. Mainline gcc 1341 # enables this at -O2 and above, 1342 # but Apple gcc does not unless it 1343 # is specified explicitly. 1344 'GCC_STRICT_ALIASING': 'YES', 1345 }, 1346 }], # OS=="mac" 1347 ['OS=="win"', { 1348 'msvs_settings': { 1349 'VCCLCompilerTool': { 1350 'Optimization': '2', 1351 'InlineFunctionExpansion': '2', 1352 'EnableIntrinsicFunctions': 'true', 1353 'FavorSizeOrSpeed': '0', 1354 'StringPooling': 'true', 1355 'conditions': [ 1356 ['component=="shared_library"', { 1357 'RuntimeLibrary': '2', #/MD 1358 }, { 1359 'RuntimeLibrary': '0', #/MT 1360 }], 1361 ], 1362 }, 1363 'VCLinkerTool': { 1364 'LinkIncremental': '1', 1365 'OptimizeReferences': '2', 1366 'EnableCOMDATFolding': '2', 1367 }, 1368 }, 1369 }], # OS=="win" 1370 ['v8_enable_slow_dchecks==1', { 1371 'defines': [ 1372 'ENABLE_SLOW_DCHECKS', 1373 ], 1374 }], 1375 ], # conditions 1376 }, # Release 1377 'Release': { 1378 'inherit_from': ['ReleaseBase'], 1379 }, # Debug 1380 'conditions': [ 1381 [ 'OS=="win"', { 1382 # TODO(bradnelson): add a gyp mechanism to make this more graceful. 1383 'Debug_x64': { 1384 'inherit_from': ['DebugBaseCommon'], 1385 'conditions': [ 1386 ['v8_optimized_debug==0', { 1387 'inherit_from': ['DebugBase0'], 1388 }, { 1389 'inherit_from': ['DebugBase1'], 1390 }], 1391 ], 1392 }, 1393 'Release_x64': { 1394 'inherit_from': ['ReleaseBase'], 1395 }, 1396 }], 1397 ], 1398 }, # configurations 1399 }, # target_defaults 1400 } 1401