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