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 'gcc_version%': 'unknown', 34 'clang%': 0, 35 'v8_target_arch%': '<(target_arch)', 36 # Native Client builds currently use the V8 ARM JIT and 37 # arm/simulator-arm.cc to defer the significant effort required 38 # for NaCl JIT support. The nacl_target_arch variable provides 39 # the 'true' target arch for places in this file that need it. 40 # TODO(bradchen): get rid of nacl_target_arch when someday 41 # NaCl V8 builds stop using the ARM simulator 42 'nacl_target_arch%': 'none', # must be set externally 43 44 # Setting 'v8_can_use_vfp32dregs' to 'true' will cause V8 to use the VFP 45 # registers d16-d31 in the generated code, both in the snapshot and for the 46 # ARM target. Leaving the default value of 'false' will avoid the use of 47 # these registers in the snapshot and use CPU feature probing when running 48 # on the target. 49 'v8_can_use_vfp32dregs%': 'false', 50 'arm_test_noprobe%': 'off', 51 52 # Similar to vfp but on MIPS. 53 'v8_can_use_fpu_instructions%': 'true', 54 55 # Similar to the ARM hard float ABI but on MIPS. 56 'v8_use_mips_abi_hardfloat%': 'true', 57 58 # Default arch variant for MIPS. 59 'mips_arch_variant%': 'r2', 60 61 # Possible values fp32, fp64, fpxx. 62 # fp32 - 32 32-bit FPU registers are available, doubles are placed in 63 # register pairs. 64 # fp64 - 32 64-bit FPU registers are available. 65 # fpxx - compatibility mode, it chooses fp32 or fp64 depending on runtime 66 # detection 67 'mips_fpu_mode%': 'fp32', 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 build/standalone.gypi. 79 'want_separate_host_toolset%': 1, 80 81 # Toolset the d8 binary should be compiled for. Possible values are 'host' 82 # and 'target'. If you want to run v8 tests, it needs to be set to 'target'. 83 # The setting is ignored if want_separate_host_toolset is 0. 84 'v8_toolset_for_d8%': '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 # Link-Time Optimizations 95 'use_lto%': 0, 96 97 'variables': { 98 # This is set when building the Android WebView inside the Android build 99 # system, using the 'android' gyp backend. 100 'android_webview_build%': 0, 101 }, 102 # Copy it out one scope. 103 'android_webview_build%': '<(android_webview_build)', 104 }, 105 'conditions': [ 106 ['host_arch=="ia32" or host_arch=="x64" or clang==1', { 107 'variables': { 108 'host_cxx_is_biarch%': 1, 109 }, 110 }, { 111 'variables': { 112 'host_cxx_is_biarch%': 0, 113 }, 114 }], 115 ['target_arch=="ia32" or target_arch=="x64" or target_arch=="x87" or \ 116 clang==1', { 117 'variables': { 118 'target_cxx_is_biarch%': 1, 119 }, 120 }, { 121 'variables': { 122 'target_cxx_is_biarch%': 0, 123 }, 124 }], 125 ], 126 'target_defaults': { 127 'conditions': [ 128 ['v8_target_arch=="arm"', { 129 'defines': [ 130 'V8_TARGET_ARCH_ARM', 131 ], 132 'conditions': [ 133 [ 'arm_version==7 or arm_version=="default"', { 134 'defines': [ 135 'CAN_USE_ARMV7_INSTRUCTIONS', 136 ], 137 }], 138 [ 'arm_fpu=="vfpv3-d16" or arm_fpu=="default"', { 139 'defines': [ 140 'CAN_USE_VFP3_INSTRUCTIONS', 141 ], 142 }], 143 [ 'arm_fpu=="vfpv3"', { 144 'defines': [ 145 'CAN_USE_VFP3_INSTRUCTIONS', 146 'CAN_USE_VFP32DREGS', 147 ], 148 }], 149 [ 'arm_fpu=="neon"', { 150 'defines': [ 151 'CAN_USE_VFP3_INSTRUCTIONS', 152 'CAN_USE_VFP32DREGS', 153 'CAN_USE_NEON', 154 ], 155 }], 156 [ 'arm_test_noprobe=="on"', { 157 'defines': [ 158 'ARM_TEST_NO_FEATURE_PROBE', 159 ], 160 }], 161 ], 162 'target_conditions': [ 163 ['_toolset=="host"', { 164 'conditions': [ 165 ['v8_target_arch==host_arch and android_webview_build==0', { 166 # Host built with an Arm CXX compiler. 167 'conditions': [ 168 [ 'arm_version==7', { 169 'cflags': ['-march=armv7-a',], 170 }], 171 [ 'arm_version==7 or arm_version=="default"', { 172 'conditions': [ 173 [ 'arm_fpu!="default"', { 174 'cflags': ['-mfpu=<(arm_fpu)',], 175 }], 176 ], 177 }], 178 [ 'arm_float_abi!="default"', { 179 'cflags': ['-mfloat-abi=<(arm_float_abi)',], 180 }], 181 [ 'arm_thumb==1', { 182 'cflags': ['-mthumb',], 183 }], 184 [ 'arm_thumb==0', { 185 'cflags': ['-marm',], 186 }], 187 ], 188 }, { 189 # 'v8_target_arch!=host_arch' 190 # Host not built with an Arm CXX compiler (simulator build). 191 'conditions': [ 192 [ 'arm_float_abi=="hard"', { 193 'defines': [ 194 'USE_EABI_HARDFLOAT=1', 195 ], 196 }], 197 [ 'arm_float_abi=="softfp" or arm_float_abi=="default"', { 198 'defines': [ 199 'USE_EABI_HARDFLOAT=0', 200 ], 201 }], 202 ], 203 }], 204 ], 205 }], # _toolset=="host" 206 ['_toolset=="target"', { 207 'conditions': [ 208 ['v8_target_arch==target_arch and android_webview_build==0', { 209 # Target built with an Arm CXX compiler. 210 'conditions': [ 211 [ 'arm_version==7', { 212 'cflags': ['-march=armv7-a',], 213 }], 214 [ 'arm_version==7 or arm_version=="default"', { 215 'conditions': [ 216 [ 'arm_fpu!="default"', { 217 'cflags': ['-mfpu=<(arm_fpu)',], 218 }], 219 ], 220 }], 221 [ 'arm_float_abi!="default"', { 222 'cflags': ['-mfloat-abi=<(arm_float_abi)',], 223 }], 224 [ 'arm_thumb==1', { 225 'cflags': ['-mthumb',], 226 }], 227 [ 'arm_thumb==0', { 228 'cflags': ['-marm',], 229 }], 230 ], 231 }, { 232 # 'v8_target_arch!=target_arch' 233 # Target not built with an Arm CXX compiler (simulator build). 234 'conditions': [ 235 [ 'arm_float_abi=="hard"', { 236 'defines': [ 237 'USE_EABI_HARDFLOAT=1', 238 ], 239 }], 240 [ 'arm_float_abi=="softfp" or arm_float_abi=="default"', { 241 'defines': [ 242 'USE_EABI_HARDFLOAT=0', 243 ], 244 }], 245 ], 246 }], 247 # Disable LTO for v8 248 # v8 is optimized for speed, which takes precedence over 249 # size optimization in LTO. 250 ['use_lto==1', { 251 'cflags!': [ 252 '-flto', 253 '-ffat-lto-objects', 254 ], 255 }], 256 ], 257 }], # _toolset=="target" 258 ], 259 }], # v8_target_arch=="arm" 260 ['v8_target_arch=="arm64"', { 261 'defines': [ 262 'V8_TARGET_ARCH_ARM64', 263 ], 264 }], 265 ['v8_target_arch=="ia32"', { 266 'defines': [ 267 'V8_TARGET_ARCH_IA32', 268 ], 269 }], # v8_target_arch=="ia32" 270 ['v8_target_arch=="x87"', { 271 'defines': [ 272 'V8_TARGET_ARCH_X87', 273 ], 274 'cflags': ['-march=i586'], 275 }], # v8_target_arch=="x87" 276 ['v8_target_arch=="mips"', { 277 'defines': [ 278 'V8_TARGET_ARCH_MIPS', 279 ], 280 'conditions': [ 281 ['v8_target_arch==target_arch and android_webview_build==0', { 282 # Target built with a Mips CXX compiler. 283 'target_conditions': [ 284 ['_toolset=="target"', { 285 'cflags': ['-EB'], 286 'ldflags': ['-EB'], 287 'conditions': [ 288 [ 'v8_use_mips_abi_hardfloat=="true"', { 289 'cflags': ['-mhard-float'], 290 'ldflags': ['-mhard-float'], 291 }, { 292 'cflags': ['-msoft-float'], 293 'ldflags': ['-msoft-float'], 294 }], 295 ['mips_fpu_mode=="fp64"', { 296 'cflags': ['-mfp64'], 297 }], 298 ['mips_fpu_mode=="fpxx"', { 299 'cflags': ['-mfpxx'], 300 }], 301 ['mips_fpu_mode=="fp32"', { 302 'cflags': ['-mfp32'], 303 }], 304 ['mips_arch_variant=="r6"', { 305 'cflags!': ['-mfp32'], 306 'cflags': ['-mips32r6', '-Wa,-mips32r6'], 307 'ldflags': [ 308 '-mips32r6', 309 '-Wl,--dynamic-linker=$(LDSO_PATH)', 310 '-Wl,--rpath=$(LD_R_PATH)', 311 ], 312 }], 313 ['mips_arch_variant=="r2"', { 314 'cflags': ['-mips32r2', '-Wa,-mips32r2'], 315 }], 316 ['mips_arch_variant=="r1"', { 317 'cflags!': ['-mfp64'], 318 'cflags': ['-mips32', '-Wa,-mips32'], 319 }], 320 ['mips_arch_variant=="rx"', { 321 'cflags!': ['-mfp64'], 322 'cflags': ['-mips32', '-Wa,-mips32'], 323 }], 324 ], 325 }], 326 ], 327 }], 328 [ 'v8_can_use_fpu_instructions=="true"', { 329 'defines': [ 330 'CAN_USE_FPU_INSTRUCTIONS', 331 ], 332 }], 333 [ 'v8_use_mips_abi_hardfloat=="true"', { 334 'defines': [ 335 '__mips_hard_float=1', 336 'CAN_USE_FPU_INSTRUCTIONS', 337 ], 338 }, { 339 'defines': [ 340 '__mips_soft_float=1' 341 ], 342 }], 343 ['mips_arch_variant=="rx"', { 344 'defines': [ 345 '_MIPS_ARCH_MIPS32RX', 346 'FPU_MODE_FPXX', 347 ], 348 }], 349 ['mips_arch_variant=="r6"', { 350 'defines': [ 351 '_MIPS_ARCH_MIPS32R6', 352 'FPU_MODE_FP64', 353 ], 354 }], 355 ['mips_arch_variant=="r2"', { 356 'defines': ['_MIPS_ARCH_MIPS32R2',], 357 'conditions': [ 358 ['mips_fpu_mode=="fp64"', { 359 'defines': ['FPU_MODE_FP64',], 360 }], 361 ['mips_fpu_mode=="fpxx"', { 362 'defines': ['FPU_MODE_FPXX',], 363 }], 364 ['mips_fpu_mode=="fp32"', { 365 'defines': ['FPU_MODE_FP32',], 366 }], 367 ], 368 }], 369 ['mips_arch_variant=="r1"', { 370 'defines': ['FPU_MODE_FP32',], 371 }], 372 ], 373 }], # v8_target_arch=="mips" 374 ['v8_target_arch=="mipsel"', { 375 'defines': [ 376 'V8_TARGET_ARCH_MIPS', 377 ], 378 'conditions': [ 379 ['v8_target_arch==target_arch and android_webview_build==0', { 380 # Target built with a Mips CXX compiler. 381 'target_conditions': [ 382 ['_toolset=="target"', { 383 'cflags': ['-EL'], 384 'ldflags': ['-EL'], 385 'conditions': [ 386 [ 'v8_use_mips_abi_hardfloat=="true"', { 387 'cflags': ['-mhard-float'], 388 'ldflags': ['-mhard-float'], 389 }, { 390 'cflags': ['-msoft-float'], 391 'ldflags': ['-msoft-float'], 392 }], 393 ['mips_fpu_mode=="fp64"', { 394 'cflags': ['-mfp64'], 395 }], 396 ['mips_fpu_mode=="fpxx"', { 397 'cflags': ['-mfpxx'], 398 }], 399 ['mips_fpu_mode=="fp32"', { 400 'cflags': ['-mfp32'], 401 }], 402 ['mips_arch_variant=="r6"', { 403 'cflags!': ['-mfp32'], 404 'cflags': ['-mips32r6', '-Wa,-mips32r6'], 405 'ldflags': [ 406 '-mips32r6', 407 '-Wl,--dynamic-linker=$(LDSO_PATH)', 408 '-Wl,--rpath=$(LD_R_PATH)', 409 ], 410 }], 411 ['mips_arch_variant=="r2"', { 412 'cflags': ['-mips32r2', '-Wa,-mips32r2'], 413 }], 414 ['mips_arch_variant=="r1"', { 415 'cflags!': ['-mfp64'], 416 'cflags': ['-mips32', '-Wa,-mips32'], 417 }], 418 ['mips_arch_variant=="rx"', { 419 'cflags!': ['-mfp64'], 420 'cflags': ['-mips32', '-Wa,-mips32'], 421 }], 422 ['mips_arch_variant=="loongson"', { 423 'cflags!': ['-mfp64'], 424 'cflags': ['-mips3', '-Wa,-mips3'], 425 }], 426 ], 427 }], 428 ], 429 }], 430 [ 'v8_can_use_fpu_instructions=="true"', { 431 'defines': [ 432 'CAN_USE_FPU_INSTRUCTIONS', 433 ], 434 }], 435 [ 'v8_use_mips_abi_hardfloat=="true"', { 436 'defines': [ 437 '__mips_hard_float=1', 438 'CAN_USE_FPU_INSTRUCTIONS', 439 ], 440 }, { 441 'defines': [ 442 '__mips_soft_float=1' 443 ], 444 }], 445 ['mips_arch_variant=="rx"', { 446 'defines': [ 447 '_MIPS_ARCH_MIPS32RX', 448 'FPU_MODE_FPXX', 449 ], 450 }], 451 ['mips_arch_variant=="r6"', { 452 'defines': [ 453 '_MIPS_ARCH_MIPS32R6', 454 'FPU_MODE_FP64', 455 ], 456 }], 457 ['mips_arch_variant=="r2"', { 458 'defines': ['_MIPS_ARCH_MIPS32R2',], 459 'conditions': [ 460 ['mips_fpu_mode=="fp64"', { 461 'defines': ['FPU_MODE_FP64',], 462 }], 463 ['mips_fpu_mode=="fpxx"', { 464 'defines': ['FPU_MODE_FPXX',], 465 }], 466 ['mips_fpu_mode=="fp32"', { 467 'defines': ['FPU_MODE_FP32',], 468 }], 469 ], 470 }], 471 ['mips_arch_variant=="r1"', { 472 'defines': ['FPU_MODE_FP32',], 473 }], 474 ['mips_arch_variant=="loongson"', { 475 'defines': [ 476 '_MIPS_ARCH_LOONGSON', 477 'FPU_MODE_FP32', 478 ], 479 }], 480 ], 481 }], # v8_target_arch=="mipsel" 482 ['v8_target_arch=="mips64el"', { 483 'defines': [ 484 'V8_TARGET_ARCH_MIPS64', 485 ], 486 'conditions': [ 487 ['v8_target_arch==target_arch and android_webview_build==0', { 488 # Target built with a Mips CXX compiler. 489 'target_conditions': [ 490 ['_toolset=="target"', { 491 'cflags': ['-EL'], 492 'ldflags': ['-EL'], 493 'conditions': [ 494 [ 'v8_use_mips_abi_hardfloat=="true"', { 495 'cflags': ['-mhard-float'], 496 'ldflags': ['-mhard-float'], 497 }, { 498 'cflags': ['-msoft-float'], 499 'ldflags': ['-msoft-float'], 500 }], 501 ['mips_arch_variant=="r6"', { 502 'cflags': ['-mips64r6', '-mabi=64', '-Wa,-mips64r6'], 503 'ldflags': [ 504 '-mips64r6', '-mabi=64', 505 '-Wl,--dynamic-linker=$(LDSO_PATH)', 506 '-Wl,--rpath=$(LD_R_PATH)', 507 ], 508 }], 509 ['mips_arch_variant=="r2"', { 510 'cflags': ['-mips64r2', '-mabi=64', '-Wa,-mips64r2'], 511 'ldflags': [ 512 '-mips64r2', '-mabi=64', 513 '-Wl,--dynamic-linker=$(LDSO_PATH)', 514 '-Wl,--rpath=$(LD_R_PATH)', 515 ], 516 }], 517 ], 518 }], 519 ], 520 }], 521 [ 'v8_can_use_fpu_instructions=="true"', { 522 'defines': [ 523 'CAN_USE_FPU_INSTRUCTIONS', 524 ], 525 }], 526 [ 'v8_use_mips_abi_hardfloat=="true"', { 527 'defines': [ 528 '__mips_hard_float=1', 529 'CAN_USE_FPU_INSTRUCTIONS', 530 ], 531 }, { 532 'defines': [ 533 '__mips_soft_float=1' 534 ], 535 }], 536 ['mips_arch_variant=="r6"', { 537 'defines': ['_MIPS_ARCH_MIPS64R6',], 538 }], 539 ['mips_arch_variant=="r2"', { 540 'defines': ['_MIPS_ARCH_MIPS64R2',], 541 }], 542 ], 543 }], # v8_target_arch=="mips64el" 544 ['v8_target_arch=="x64"', { 545 'defines': [ 546 'V8_TARGET_ARCH_X64', 547 ], 548 'xcode_settings': { 549 'ARCHS': [ 'x86_64' ], 550 }, 551 'msvs_settings': { 552 'VCLinkerTool': { 553 'StackReserveSize': '2097152', 554 }, 555 }, 556 'msvs_configuration_platform': 'x64', 557 }], # v8_target_arch=="x64" 558 ['v8_target_arch=="x32"', { 559 'defines': [ 560 # x32 port shares the source code with x64 port. 561 'V8_TARGET_ARCH_X64', 562 'V8_TARGET_ARCH_32_BIT', 563 ], 564 'cflags': [ 565 '-mx32', 566 # Inhibit warning if long long type is used. 567 '-Wno-long-long', 568 ], 569 'ldflags': [ 570 '-mx32', 571 ], 572 }], # v8_target_arch=="x32" 573 ['OS=="win"', { 574 'defines': [ 575 'WIN32', 576 ], 577 # 4351: VS 2005 and later are warning us that they've fixed a bug 578 # present in VS 2003 and earlier. 579 'msvs_disabled_warnings': [4351], 580 'msvs_configuration_attributes': { 581 'OutputDirectory': '<(DEPTH)\\build\\$(ConfigurationName)', 582 'IntermediateDirectory': '$(OutDir)\\obj\\$(ProjectName)', 583 'CharacterSet': '1', 584 }, 585 }], 586 ['OS=="win" and v8_target_arch=="ia32"', { 587 'msvs_settings': { 588 'VCCLCompilerTool': { 589 # Ensure no surprising artifacts from 80bit double math with x86. 590 'AdditionalOptions': ['/arch:SSE2'], 591 }, 592 }, 593 }], 594 ['OS=="win" and v8_enable_prof==1', { 595 'msvs_settings': { 596 'VCLinkerTool': { 597 'GenerateMapFile': 'true', 598 }, 599 }, 600 }], 601 ['(OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="solaris" \ 602 or OS=="netbsd" or OS=="mac" or OS=="android" or OS=="qnx") and \ 603 (v8_target_arch=="arm" or v8_target_arch=="ia32" or \ 604 v8_target_arch=="x87" or v8_target_arch=="mips" or \ 605 v8_target_arch=="mipsel")', { 606 'target_conditions': [ 607 ['_toolset=="host"', { 608 'conditions': [ 609 ['host_cxx_is_biarch==1', { 610 'cflags': [ '-m32' ], 611 'ldflags': [ '-m32' ] 612 }], 613 ], 614 'xcode_settings': { 615 'ARCHS': [ 'i386' ], 616 }, 617 }], 618 ['_toolset=="target"', { 619 'conditions': [ 620 ['target_cxx_is_biarch==1 and nacl_target_arch!="nacl_x64"', { 621 'cflags': [ '-m32' ], 622 'ldflags': [ '-m32' ], 623 }], 624 # Enable feedback-directed optimisation when building in android. 625 [ 'android_webview_build == 1', { 626 'aosp_build_settings': { 627 'LOCAL_FDO_SUPPORT': 'true', 628 }, 629 }], 630 ], 631 'xcode_settings': { 632 'ARCHS': [ 'i386' ], 633 }, 634 }], 635 ], 636 }], 637 ['(OS=="linux" or OS=="android") and \ 638 (v8_target_arch=="x64" or v8_target_arch=="arm64")', { 639 'target_conditions': [ 640 ['_toolset=="host"', { 641 'conditions': [ 642 ['host_cxx_is_biarch==1', { 643 'cflags': [ '-m64' ], 644 'ldflags': [ '-m64' ] 645 }], 646 ], 647 }], 648 ['_toolset=="target"', { 649 'conditions': [ 650 ['target_cxx_is_biarch==1', { 651 'cflags': [ '-m64' ], 652 'ldflags': [ '-m64' ], 653 }], 654 # Enable feedback-directed optimisation when building in android. 655 [ 'android_webview_build == 1', { 656 'aosp_build_settings': { 657 'LOCAL_FDO_SUPPORT': 'true', 658 }, 659 }], 660 ] 661 }], 662 ], 663 }], 664 ['OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="solaris" \ 665 or OS=="netbsd" or OS=="qnx"', { 666 'conditions': [ 667 [ 'v8_no_strict_aliasing==1', { 668 'cflags': [ '-fno-strict-aliasing' ], 669 }], 670 ], # conditions 671 }], 672 ['OS=="solaris"', { 673 'defines': [ '__C99FEATURES__=1' ], # isinf() etc. 674 }], 675 ['OS=="freebsd" or OS=="openbsd"', { 676 'cflags': [ '-I/usr/local/include' ], 677 }], 678 ['OS=="netbsd"', { 679 'cflags': [ '-I/usr/pkg/include' ], 680 }], 681 ], # conditions 682 'configurations': { 683 # Abstract configuration for v8_optimized_debug == 0. 684 'DebugBase0': { 685 'abstract': 1, 686 'msvs_settings': { 687 'VCCLCompilerTool': { 688 'Optimization': '0', 689 'conditions': [ 690 ['component=="shared_library"', { 691 'RuntimeLibrary': '3', # /MDd 692 }, { 693 'RuntimeLibrary': '1', # /MTd 694 }], 695 ], 696 }, 697 'VCLinkerTool': { 698 'LinkIncremental': '2', 699 }, 700 }, 701 'conditions': [ 702 ['OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="netbsd" or \ 703 OS=="qnx"', { 704 'cflags!': [ 705 '-O0', 706 '-O3', 707 '-O2', 708 '-O1', 709 '-Os', 710 ], 711 'cflags': [ 712 '-fdata-sections', 713 '-ffunction-sections', 714 ], 715 }], 716 ['OS=="mac"', { 717 'xcode_settings': { 718 'GCC_OPTIMIZATION_LEVEL': '0', # -O0 719 }, 720 }], 721 ], 722 }, # DebugBase0 723 # Abstract configuration for v8_optimized_debug == 1. 724 'DebugBase1': { 725 'abstract': 1, 726 'msvs_settings': { 727 'VCCLCompilerTool': { 728 'Optimization': '1', 729 'InlineFunctionExpansion': '2', 730 'EnableIntrinsicFunctions': 'true', 731 'FavorSizeOrSpeed': '0', 732 'StringPooling': 'true', 733 'BasicRuntimeChecks': '0', 734 'conditions': [ 735 ['component=="shared_library"', { 736 'RuntimeLibrary': '3', # /MDd 737 }, { 738 'RuntimeLibrary': '1', # /MTd 739 }], 740 ], 741 }, 742 'VCLinkerTool': { 743 'LinkIncremental': '2', 744 }, 745 }, 746 'conditions': [ 747 ['OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="netbsd" or \ 748 OS=="qnx"', { 749 'cflags!': [ 750 '-O0', 751 '-O3', # TODO(2807) should be -O1. 752 '-O2', 753 '-Os', 754 ], 755 'cflags': [ 756 '-fdata-sections', 757 '-ffunction-sections', 758 '-O1', # TODO(2807) should be -O3. 759 ], 760 'conditions': [ 761 ['gcc_version==44 and clang==0', { 762 'cflags': [ 763 # Avoid crashes with gcc 4.4 in the v8 test suite. 764 '-fno-tree-vrp', 765 ], 766 }], 767 ], 768 }], 769 ['OS=="mac"', { 770 'xcode_settings': { 771 'GCC_OPTIMIZATION_LEVEL': '3', # -O3 772 'GCC_STRICT_ALIASING': 'YES', 773 }, 774 }], 775 ], 776 }, # DebugBase1 777 # Abstract configuration for v8_optimized_debug == 2. 778 'DebugBase2': { 779 'abstract': 1, 780 'msvs_settings': { 781 'VCCLCompilerTool': { 782 'Optimization': '2', 783 'InlineFunctionExpansion': '2', 784 'EnableIntrinsicFunctions': 'true', 785 'FavorSizeOrSpeed': '0', 786 'StringPooling': 'true', 787 'BasicRuntimeChecks': '0', 788 'conditions': [ 789 ['component=="shared_library"', { 790 'RuntimeLibrary': '3', #/MDd 791 }, { 792 'RuntimeLibrary': '1', #/MTd 793 }], 794 ['v8_target_arch=="x64"', { 795 # TODO(2207): remove this option once the bug is fixed. 796 'WholeProgramOptimization': 'true', 797 }], 798 ], 799 }, 800 'VCLinkerTool': { 801 'LinkIncremental': '1', 802 'OptimizeReferences': '2', 803 'EnableCOMDATFolding': '2', 804 }, 805 }, 806 'conditions': [ 807 ['OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="netbsd" or \ 808 OS=="qnx"', { 809 'cflags!': [ 810 '-O0', 811 '-O1', 812 '-Os', 813 ], 814 'cflags': [ 815 '-fdata-sections', 816 '-ffunction-sections', 817 ], 818 'defines': [ 819 'OPTIMIZED_DEBUG' 820 ], 821 'conditions': [ 822 # TODO(crbug.com/272548): Avoid -O3 in NaCl 823 ['nacl_target_arch=="none"', { 824 'cflags': ['-O3'], 825 'cflags!': ['-O2'], 826 }, { 827 'cflags': ['-O2'], 828 'cflags!': ['-O3'], 829 }], 830 ['gcc_version==44 and clang==0', { 831 'cflags': [ 832 # Avoid crashes with gcc 4.4 in the v8 test suite. 833 '-fno-tree-vrp', 834 ], 835 }], 836 ], 837 }], 838 ['OS=="mac"', { 839 'xcode_settings': { 840 'GCC_OPTIMIZATION_LEVEL': '3', # -O3 841 'GCC_STRICT_ALIASING': 'YES', 842 }, 843 }], 844 ], 845 }, # DebugBase2 846 # Common settings for the Debug configuration. 847 'DebugBaseCommon': { 848 'abstract': 1, 849 'defines': [ 850 'ENABLE_DISASSEMBLER', 851 'V8_ENABLE_CHECKS', 852 'OBJECT_PRINT', 853 'VERIFY_HEAP', 854 'DEBUG' 855 ], 856 'conditions': [ 857 ['OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="netbsd" or \ 858 OS=="qnx"', { 859 'cflags': [ '-Woverloaded-virtual', '<(wno_array_bounds)', ], 860 }], 861 ['OS=="linux" and v8_enable_backtrace==1', { 862 # Support for backtrace_symbols. 863 'ldflags': [ '-rdynamic' ], 864 }], 865 ['OS=="android"', { 866 'variables': { 867 'android_full_debug%': 1, 868 }, 869 'conditions': [ 870 ['android_full_debug==0', { 871 # Disable full debug if we want a faster v8 in a debug build. 872 # TODO(2304): pass DISABLE_DEBUG_ASSERT instead of hiding DEBUG. 873 'defines!': [ 874 'DEBUG', 875 ], 876 }], 877 ], 878 }], 879 ], 880 }, # DebugBaseCommon 881 'Debug': { 882 'inherit_from': ['DebugBaseCommon'], 883 'conditions': [ 884 ['v8_optimized_debug==0', { 885 'inherit_from': ['DebugBase0'], 886 }], 887 ['v8_optimized_debug==1', { 888 'inherit_from': ['DebugBase1'], 889 }], 890 ['v8_optimized_debug==2', { 891 'inherit_from': ['DebugBase2'], 892 }], 893 ], 894 }, # Debug 895 'Release': { 896 'conditions': [ 897 ['OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="netbsd"', { 898 'cflags!': [ 899 '-Os', 900 ], 901 'cflags': [ 902 '-fdata-sections', 903 '-ffunction-sections', 904 '<(wno_array_bounds)', 905 ], 906 'conditions': [ 907 [ 'gcc_version==44 and clang==0', { 908 'cflags': [ 909 # Avoid crashes with gcc 4.4 in the v8 test suite. 910 '-fno-tree-vrp', 911 ], 912 }], 913 # TODO(crbug.com/272548): Avoid -O3 in NaCl 914 ['nacl_target_arch=="none"', { 915 'cflags': ['-O3'], 916 'cflags!': ['-O2'], 917 }, { 918 'cflags': ['-O2'], 919 'cflags!': ['-O3'], 920 }], 921 ], 922 }], 923 ['OS=="android"', { 924 'cflags!': [ 925 '-O3', 926 '-Os', 927 ], 928 'cflags': [ 929 '-fdata-sections', 930 '-ffunction-sections', 931 '-O2', 932 ], 933 'conditions': [ 934 [ 'gcc_version==44 and clang==0', { 935 'cflags': [ 936 # Avoid crashes with gcc 4.4 in the v8 test suite. 937 '-fno-tree-vrp', 938 ], 939 }], 940 ], 941 }], 942 ['OS=="mac"', { 943 'xcode_settings': { 944 'GCC_OPTIMIZATION_LEVEL': '3', # -O3 945 946 # -fstrict-aliasing. Mainline gcc 947 # enables this at -O2 and above, 948 # but Apple gcc does not unless it 949 # is specified explicitly. 950 'GCC_STRICT_ALIASING': 'YES', 951 }, 952 }], # OS=="mac" 953 ['OS=="win"', { 954 'msvs_settings': { 955 'VCCLCompilerTool': { 956 'Optimization': '2', 957 'InlineFunctionExpansion': '2', 958 'EnableIntrinsicFunctions': 'true', 959 'FavorSizeOrSpeed': '0', 960 'StringPooling': 'true', 961 'conditions': [ 962 ['component=="shared_library"', { 963 'RuntimeLibrary': '2', #/MD 964 }, { 965 'RuntimeLibrary': '0', #/MT 966 }], 967 ['v8_target_arch=="x64"', { 968 # TODO(2207): remove this option once the bug is fixed. 969 'WholeProgramOptimization': 'true', 970 }], 971 ], 972 }, 973 'VCLinkerTool': { 974 'LinkIncremental': '1', 975 'OptimizeReferences': '2', 976 'EnableCOMDATFolding': '2', 977 }, 978 }, 979 }], # OS=="win" 980 ], # conditions 981 }, # Release 982 }, # configurations 983 }, # target_defaults 984 } 985