Upstream version 5.34.104.0
[platform/framework/web/crosswalk.git] / src / build / common.gypi
index 80f291e..0050cc5 100644 (file)
@@ -56,9 +56,6 @@
           # Enable HiDPI support.
           'enable_hidpi%': 0,
 
-          # Enable touch optimized art assets and metrics.
-          'enable_touch_ui%': 0,
-
           # Override buildtype to select the desired build flavor.
           # Dev - everyday build for development/testing
           # Official - release build (generally implies additional processing)
               'use_aura%': 1,
             }],
 
-            # ToT Linux should be aura.
-            #
-            # TODO(erg): Merge this into the previous block once compiling with
-            # aura safely implies including ash capabilities.
-            ['OS=="linux"', {
-              'use_aura%': 1,
-            }],
-
             # Whether we're a traditional desktop unix.
             ['(OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="solaris") and chromeos==0', {
               'desktop_linux%': 1,
             ['OS=="win" or OS=="mac" or OS=="ios"', {
               'host_arch%': 'ia32',
             }, {
-              # This handles the Unix platforms for which there is some support.
-              # Anything else gets passed through, which probably won't work
-              # very well; such hosts should pass an explicit target_arch to
-              # gyp.
-              'host_arch%':
-                '<!(uname -m | sed -e "s/i.86/ia32/;s/x86_64/x64/;s/amd64/x64/;s/arm.*/arm/;s/i86pc/ia32/")',
+              'host_arch%': '<!(python <(DEPTH)/build/linux/detect_host_arch.py)',
             }],
 
             # Embedded implies ozone.
         'use_system_fontconfig%': '<(use_system_fontconfig)',
         'enable_viewport%': '<(enable_viewport)',
         'enable_hidpi%': '<(enable_hidpi)',
-        'enable_touch_ui%': '<(enable_touch_ui)',
         'buildtype%': '<(buildtype)',
         'branding%': '<(branding)',
         'host_arch%': '<(host_arch)',
 
         # Default architecture we're building for is the architecture we're
-        # building on.
+        # building on, and possibly sub-architecture (for iOS builds).
         'target_arch%': '<(host_arch)',
+        'target_subarch%': '',
 
         # This is set when building the Android WebView inside the Android
         # build system, using the 'android' gyp backend. The WebView code is
             'enable_hidpi%': 1,
           }],
 
-          # Enable touch UI on Metro.
-          ['OS=="win"', {
-            'enable_touch_ui%': 1,
-          }],
-
           # Enable App Launcher on ChromeOS, Windows and OSX.
           # On Linux, enable App Launcher for the Aura build.
           ['use_ash==1 or OS=="win" or OS=="mac" or (desktop_linux==1 and use_aura==1)', {
           }, {
             'gomadir': '<!(/bin/echo -n ${HOME}/goma)',
           }],
+
+          # Set the default "target_subarch" on iOS. Valid values are "arm32",
+          # "arm64" and "both" (meaning a fat binary).
+          #
+          # TODO(sdefresne): change the default from "arm32" to "both" for
+          # "target_subarch" once http://crbug.com/339477 is fixed.
+          #
+          # TODO(sdefresne): set the "target_arch" to "arm" once compilation
+          # of skia has been fixed for simulator. http://crbug.com/342377
+          ['OS=="ios"', {
+            'target_subarch%': 'arm32',
+          }],
         ],
       },
 
       'chromeos%': '<(chromeos)',
       'host_arch%': '<(host_arch)',
       'target_arch%': '<(target_arch)',
+      'target_subarch%': '<(target_subarch)',
       'toolkit_views%': '<(toolkit_views)',
       'toolkit_uses_gtk%': '<(toolkit_uses_gtk)',
       'desktop_linux%': '<(desktop_linux)',
       'use_system_fontconfig%': '<(use_system_fontconfig)',
       'enable_viewport%': '<(enable_viewport)',
       'enable_hidpi%': '<(enable_hidpi)',
-      'enable_touch_ui%': '<(enable_touch_ui)',
       'android_webview_build%': '<(android_webview_build)',
       'use_goma%': '<(use_goma)',
       'gomadir%': '<(gomadir)',
 
       # The system root for cross-compiles. Default: none.
       'sysroot%': '',
+      'chroot_cmd%': '',
 
       # The system libdir used for this ABI.
       'system_libdir%': 'lib',
       # controls coverage granularity (experimental).
       'asan_coverage%': 0,
 
+      # Enable building with SyzyAsan.
+      # See https://code.google.com/p/sawbuck/wiki/SyzyASanHowTo
+      'syzyasan%': 0,
+
       # Enable building with LSan (Clang's -fsanitize=leak option).
       # -fsanitize=leak only works with clang, but lsan=1 implies clang=1
       # See https://sites.google.com/a/chromium.org/dev/developers/testing/leaksanitizer
       'data_reduction_proxy_probe_url%' : '',
       'enable_mdns%' : 0,
       'enable_enhanced_bookmarks%': 0,
+      'enable_hangout_services_extension%': 0,
 
       'conditions': [
         # A flag for POSIX platforms
           'native_discardable_memory%': 1,
           'native_memory_pressure_signals%': 1,
           'enable_printing%': 2,
+          'enable_task_manager%':0,
+           # Set to 1 once we have a notification system for Android.
+           # http://crbug.com/115320
+          'notifications%': 0,
         }],
 
         # Android OS includes support for proprietary codecs regardless of
           'remoting%': 0,
           'safe_browsing%': 0,
           'enable_managed_users%': 0,
+          'enable_task_manager%': 0,
         }],
 
         # Use GPU accelerated cross process image transport by default
     'branding%': '<(branding)',
     'buildtype%': '<(buildtype)',
     'target_arch%': '<(target_arch)',
+    'target_subarch%': '<(target_subarch)',
     'host_arch%': '<(host_arch)',
     'toolkit_views%': '<(toolkit_views)',
     'ui_compositor_image_transport%': '<(ui_compositor_image_transport)',
     'chromeos%': '<(chromeos)',
     'enable_viewport%': '<(enable_viewport)',
     'enable_hidpi%': '<(enable_hidpi)',
-    'enable_touch_ui%': '<(enable_touch_ui)',
     'use_xi2_mt%':'<(use_xi2_mt)',
     'image_loader_extension%': '<(image_loader_extension)',
     'fastbuild%': '<(fastbuild)',
     'arm_neon%': '<(arm_neon)',
     'arm_neon_optional%': '<(arm_neon_optional)',
     'sysroot%': '<(sysroot)',
+    'chroot_cmd%': '<(chroot_cmd)',
     'system_libdir%': '<(system_libdir)',
     'component%': '<(component)',
     'use_titlecase_in_grd_files%': '<(use_titlecase_in_grd_files)',
     'mac_want_real_dsym%': '<(mac_want_real_dsym)',
     'asan%': '<(asan)',
     'asan_coverage%': '<(asan_coverage)',
+    'syzyasan%': '<(syzyasan)',
     'lsan%': '<(lsan)',
     'msan%': '<(msan)',
     'msan_blacklist%': '<(msan_blacklist)',
     'data_reduction_proxy_probe_url%': '<(data_reduction_proxy_probe_url)',
     'enable_mdns%' : '<(enable_mdns)',
     'enable_enhanced_bookmarks%' : '<(enable_enhanced_bookmarks)',
+    'enable_hangout_services_extension%' : '<(enable_hangout_services_extension)',
     'v8_optimized_debug%': '<(v8_optimized_debug)',
     'proprietary_codecs%': '<(proprietary_codecs)',
     'use_goma%': '<(use_goma)',
     'gomadir%': '<(gomadir)',
 
-    # Use system nspr instead of the bundled one.
-    'use_system_nspr%': 0,
-
     # Use system protobuf instead of bundled one.
     'use_system_protobuf%': 0,
 
     'clang%': '<(clang)',
     'make_clang_dir%': 'third_party/llvm-build/Release+Asserts',
 
+    # Control which version of clang to use when 'clang' is set to 1 when
+    # building for iOS (Apple has not yet open-sourced support for "arm64"
+    # so when building for that 'target_arch' we have to use clang shipped
+    # with Xcode that does not supports some flags).
+    # TODO(sdefresne): remove this once http://crbug.com/341453 is fixed.
+    'clang_xcode%': 0,
+
     # These two variables can be set in GYP_DEFINES while running
     # |gclient runhooks| to let clang run a plugin in every compilation.
     # Only has an effect if 'clang=1' is in GYP_DEFINES as well.
     'linux_link_gsettings%': 0,
 
     # Default arch variant for MIPS.
-    'mips_arch_variant%': 'mips32r2',
+    'mips_arch_variant%': 'mips32r1',
 
     # Enable use of OpenMAX DL FFT routines.
     'use_openmax_dl_fft%': '<(use_openmax_dl_fft)',
     # TODO(thakis): Make this a blacklist instead, http://crbug.com/101600
     'enable_wexit_time_destructors%': 0,
 
+    # Build libpeerconnection as a static library by default.
+    'libpeer_target_type%': 'static_library',
+
     # Set to 1 to compile with the built in pdf viewer.
     'internal_pdf%': 0,
 
             # can use breakpad for these builds.
             'release_unwind_tables%': 0,
           }],
-         # TODO(jungshik): Turn this on on Android and CrOS as well.
-          ['OS!="android" and chromeos==0', {
+          # TODO(jungshik): Turn this on on Android.
+          # For ChromeOS, this should be turned on in chromeos-chrome.ebuild
+          # file as well by adding icu_use_data_file_flag=1 to BUILD_DEFINES.
+          ['OS!="android"', {
             'icu_use_data_file_flag%': 1,
           }],
         ],
       }],  # os_posix==1 and OS!="mac" and OS!="ios"
+      ['OS=="mac"', {
+        'icu_use_data_file_flag%': 1,
+      }],  # os=="mac"
       ['OS=="ios"', {
         'disable_nacl%': 1,
         'enable_background%': 0,
-        'enable_task_manager%': 0,
         'icu_use_data_file_flag%': 1,
         'use_system_libxml%': 1,
         'use_system_sqlite%': 1,
              'android_sdk_root%': '<!(cd <(DEPTH) && pwd -P)/third_party/android_tools/sdk/',
              'android_host_arch%': '<!(uname -m)',
              # Android API-level of the SDK used for compilation.
-             'android_sdk_version%': '<!(/bin/echo -n ${ANDROID_SDK_VERSION})',
-             # Android SDK build tools (e.g. dx, aapt, aidl)
-             'android_sdk_tools%': '<!(/bin/echo -n ${ANDROID_SDK_TOOLS})',
+             'android_sdk_version%': '19',
+             'android_sdk_build_tools_version%': '19.0.0',
+             'host_os%': "<!(uname -s | sed -e 's/Linux/linux/;s/Darwin/mac/')",
           },
           # Copy conditionally-set variables out one scope.
           'android_ndk_root%': '<(android_ndk_root)',
           'android_sdk_root%': '<(android_sdk_root)',
           'android_sdk_version%': '<(android_sdk_version)',
-          'android_sdk_tools%': '<(android_sdk_tools)',
           'android_stlport_root': '<(android_ndk_root)/sources/cxx-stl/stlport',
+          'host_os%': '<(host_os)',
 
           'android_sdk%': '<(android_sdk_root)/platforms/android-<(android_sdk_version)',
+          # Android SDK build tools (e.g. dx, aapt, aidl)
+          'android_sdk_tools%': '<(android_sdk_root)/build-tools/<(android_sdk_build_tools_version)',
 
           # Android API level 14 is ICS (Android 4.0) which is the minimum
           # platform requirement for Chrome on Android, we use it for native
         'android_stlport_root': '<(android_stlport_root)',
         'android_stlport_include': '<(android_stlport_root)/stlport',
         'android_stlport_libs_dir': '<(android_stlport_root)/libs/<(android_app_abi)',
+        'host_os%': '<(host_os)',
 
         # Location of the "strip" binary, used by both gyp and scripts.
         'android_strip%' : '<!(/bin/echo -n <(android_toolchain)/*-strip)',
         'use_openssl%': 1,
 
         'proprietary_codecs%': '<(proprietary_codecs)',
-        'enable_task_manager%': 0,
         'safe_browsing%': 2,
         'input_speech%': 0,
         'enable_automation%': 0,
         # Sessions are store separately in the Java side.
         'enable_session_service%': 0,
 
-        # Set to 1 once we have a notification system for Android.
-        # http://crbug.com/115320
-        'notifications%': 0,
-
         'p2p_apis%' : 0,
 
         'gtest_target_type%': 'shared_library',
           },{
             'msvs_large_module_debug_link_mode%': '2',  # Yes
           }],
-          ['MSVS_VERSION=="2012e" or MSVS_VERSION=="2010e"', {
+          ['MSVS_VERSION=="2013e" or MSVS_VERSION=="2012e" or MSVS_VERSION=="2010e"', {
             'msvs_express%': 1,
             'secure_atl%': 0,
           },{
       ['toolkit_views==1', {
         'grit_defines': ['-D', 'toolkit_views'],
       }],
+      ['toolkit_uses_gtk==1', {
+        'grit_defines': ['-D', 'toolkit_uses_gtk'],
+      }],
       ['use_aura==1', {
         'grit_defines': ['-D', 'use_aura'],
       }],
           ['"<(GENERATOR)"=="ninja"', {
             'clang%': 1,
             'host_os%': "mac",
-          }]
+          }],
+          # Apple has not upstreamed the support for "arm64" yet, so when
+          # building for "arm64" or "both", we need to use the clang that
+          # is provided with Xcode.
+          ['target_subarch!="arm32"', {
+            'clang_xcode%': 1,
+          }],
         ],
       }],
       ['enable_extensions==1', {
         'grit_defines': ['-D', 'enable_extensions'],
       }],
       ['enable_plugins!=0', {
-
         'grit_defines': ['-D', 'enable_plugins'],
       }],
       ['enable_printing!=0', {
       ['enable_enhanced_bookmarks==1', {
         'grit_defines': ['-D', 'enable_enhanced_bookmarks'],
       }],
+      ['enable_hangout_services_extension==1', {
+        'grit_defines': ['-D', 'enable_hangout_services_extension'],
+      }],
+      ['enable_task_manager==1', {
+        'grit_defines': ['-D', 'enable_task_manager'],
+      }],
+      ['notifications==1', {
+        'grit_defines': ['-D', 'enable_notifications'],
+      }],
       ['clang_use_chrome_plugins==1 and OS!="win"', {
         'clang_chrome_plugins_flags': [
           '<!@(<(DEPTH)/tools/clang/scripts/plugin_flags.sh)'
         ],
       }],
 
+      ['asan==1 and OS=="win"', {
+        # TODO(hans): Remove once users set syzyasan (crbug.com/343960).
+        'syzyasan%': 1,
+      }],
       ['asan==1 and OS!="win"', {
+        # TODO(hans): Windows should use Clang-based ASan (crbug.com/343960).
         'clang%': 1,
       }],
       ['asan==1 and OS=="mac"', {
       }],
       ['arm_version==7 and android_webview_build==0', {
         'arm_arch%': 'armv7-a',
-        'arm_tune%': 'cortex-a8',
+        'arm_tune%': '',
         'conditions': [
           ['arm_neon==1', {
             'arm_fpu%': 'neon',
           'mac_release_optimization%': '3', # Use -O3 unless overridden
           'mac_debug_optimization%': '0',   # Use -O0 unless overridden
         }],
+        ['OS=="android"', {
+          'host_os%': '<(host_os)',  # See comment above chromium_code.
+        }],
       ],
     },
     'defines': [
       ['use_udev==1', {
         'defines': ['USE_UDEV'],
       }],
-      ['icu_use_data_file_flag==1', {
-        'defines': ['ICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_FILE'],
-      }, { # else icu_use_data_file_flag !=1
-        'conditions': [
-          ['OS=="win"', {
-            'defines': ['ICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_SHARED'],
-          }, {
-            'defines': ['ICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_STATIC'],
-          }],
-        ],
-      }],
       ['fastbuild!=0', {
         'xcode_settings': {
           'GCC_GENERATE_DEBUGGING_SYMBOLS': 'NO',
           'ENABLE_EGLIMAGE=1',
         ],
       }],
-      ['asan==1 and OS=="win"', {
-        # Since asan on windows uses Syzygy, we need /PROFILE turned on to
-        # produce appropriate pdbs.
+      ['syzyasan==1', {
+        # SyzyAsan needs /PROFILE turned on to produce appropriate pdbs.
         'msvs_settings': {
           'VCLinkerTool': {
             'Profile': 'true',
             'ADDRESS_SANITIZER',
             'MEMORY_TOOL_REPLACES_ALLOCATOR',
         ],
-      }],  # asan==1 and OS=="win"
+      }],
       ['OS=="win"', {
         'defines': [
           '__STD_C',
       ['enable_enhanced_bookmarks==1', {
         'defines': ['ENABLE_ENHANCED_BOOKMARKS=1'],
       }],
+      ['enable_hangout_services_extension==1', {
+        'defines': ['ENABLE_HANGOUT_SERVICES_EXTENSION=1'],
+      }],
       ['enable_ipc_fuzzer==1', {
         'defines': ['ENABLE_IPC_FUZZER=1'],
       }],
+      ['OS=="win" and component=="shared_library"', {
+        'dependencies': [
+          # All targets in a component build must depend on chrome_redirects,
+          # to ensure that certain calls go through it.
+          '<(DEPTH)/chrome_elf/chrome_elf.gyp:chrome_redirects',
+         ],
+      }],
     ],  # conditions for 'target_defaults'
     'target_conditions': [
       ['enable_wexit_time_destructors==1', {
         'abstract': 1,
         'msvs_settings': {
           'VCLinkerTool': {
+            'MinimumRequiredVersion': '5.01',  # XP.
             'TargetMachine': '1',
           },
           'VCLibrarianTool': {
           ['win_use_allocator_shim==0', {
             'defines': ['NO_TCMALLOC'],
           }],
-          ['os_posix==1', {
+          # _FORTIFY_SOURCE isn't really supported by Clang now, see
+          # http://llvm.org/bugs/show_bug.cgi?id=16821.
+          # TODO(glider): once the bug is fixed, disable source fortification
+          # under the sanitizer tools only.
+          ['os_posix==1 and (OS!="linux" or clang!=1)', {
             'target_conditions': [
               ['chromium_code==1', {
                 # Non-chromium code is not guaranteed to compile cleanly
                           # Clang does not support the following options.
                           '-fuse-ld=gold',
                         ],
+                        'ldflags': [
+                          # As long as -fuse-ld=gold doesn't work, add a dummy directory
+                          # with an 'ld' that redirects to gold, so that clang uses gold.
+                          '-B<(PRODUCT_DIR)/../../build/android/arm-linux-androideabi-gold',
+                        ],
                       }],
                       ['asan==1', {
                         'cflags': [
                   '-Wno-extra', # Enabled by -Wextra, but no specific flag
                   '-Wno-ignored-qualifiers',
                   '-Wno-type-limits',
+                  '-Wno-unused-but-set-variable',
                 ],
                 'cflags_cc': [
                   # Other things unrelated to -Wextra:
             # Note that the prebuilt Clang binaries should not be used for iOS
             # development except for ASan builds.
             ['clang==1', {
-              'CC': '$(SOURCE_ROOT)/<(clang_dir)/clang',
-              'LDPLUSPLUS': '$(SOURCE_ROOT)/<(clang_dir)/clang++',
-
               # gnu++11 instead of c++11 is needed because some code uses
               # typeof() (a GNU extension).
               # TODO(thakis): Eventually switch this to c++11 instead of
 
                 # Warns when a const char[] is converted to bool.
                 '-Wstring-conversion',
+              ],
 
-                # Clang considers the `register` keyword as deprecated, but e.g.
-                # code generated by flex (used in angle) contains that keyword.
-                # http://crbug.com/255186
-                '-Wno-deprecated-register',
+              'conditions': [
+                ['clang_xcode==0', {
+                  'CC': '$(SOURCE_ROOT)/<(clang_dir)/clang',
+                  'LDPLUSPLUS': '$(SOURCE_ROOT)/<(clang_dir)/clang++',
+
+                  'WARNING_CFLAGS': [
+                    # Clang considers the `register` keyword as deprecated, but
+                    # e.g. code generated by flex (used in angle) contains that
+                    # keyword. http://crbug.com/255186
+                    #
+                    # Note: clang as shipped with Xcode is older and does not
+                    # treat the `register` as deprecated and does not define
+                    # this flag, so don't enable it if "clang_xcode" is "1".
+                    '-Wno-deprecated-register',
+                  ],
+                }],
               ],
             }],
-            ['clang==1 and clang_use_chrome_plugins==1', {
+            ['clang==1 and clang_xcode==0 and clang_use_chrome_plugins==1', {
               'OTHER_CFLAGS': [
                 '<@(clang_chrome_plugins_flags)',
               ],
             }],
-            ['clang==1 and clang_load!=""', {
+            ['clang==1 and clang_xcode==0 and clang_load!=""', {
               'OTHER_CFLAGS': [
                 '-Xclang', '-load', '-Xclang', '<(clang_load)',
               ],
             }],
-            ['clang==1 and clang_add_plugin!=""', {
+            ['clang==1 and clang_xcode==0 and clang_add_plugin!=""', {
               'OTHER_CFLAGS': [
                 '-Xclang', '-add-plugin', '-Xclang', '<(clang_add_plugin)',
               ],
             # Match OS X clang C++11 warning settings.
             '-Wno-c++11-narrowing',
           ],
+
+          # Limit the valid architectures depending on "target_subarch".
+          # This need to include the "arm" architectures but also the "x86"
+          # ones (they are used when building for the simulator).
+          'conditions': [
+            ['target_subarch=="arm32"', {
+              'VALID_ARCHS': ['armv7', 'i386'],
+            }],
+            ['target_subarch=="arm64"', {
+              'VALID_ARCHS': ['arm64', 'x86_64'],
+            }],
+            ['target_subarch=="both"', {
+              'VALID_ARCHS': ['arm64', 'armv7', 'x86_64', 'i386'],
+            }],
+          ],
         },
         'target_conditions': [
           ['_toolset=="host"', {
             'xcode_settings': {
               'SDKROOT': 'macosx<(mac_sdk)',  # -isysroot
               'MACOSX_DEPLOYMENT_TARGET': '<(mac_deployment_target)',
+              'VALID_ARCHS': [
+                'x86_64',
+              ],
               'ARCHS': [
-                'x86_64'
+                'x86_64',
               ],
             },
           }],
               # since we can't negate the iphone deployment target above, we
               # instead set it here for target only.
               'IPHONEOS_DEPLOYMENT_TARGET': '<(ios_deployment_target)',
+              'ARCHS': ['$(ARCHS_STANDARD_INCLUDING_64_BIT)'],
             },
           }],
           ['_type=="executable"', {
               '<(windows_driver_kit_path)/inc/mfc42',
             ],
             'target_conditions': [
-              ['chromium_code', {
+              ['chromium_code and MSVS_VERSION=="2010e"', {
                 # Workaround for intsafe in 2010 Express + WDK.
                 # ATL code uses intsafe.h and both intsafe.h and stdint.h
                 # define INT8_MIN et al.
                 # We can't use this workaround in third_party code because
                 # it has various levels of intolerance for including stdint.h.
+                # This is not necessary in 2013e, and should be removed once
+                # mainline is switched: http://crbug.com/340358.
                 'msvs_system_include_dirs': [
                   '<(DEPTH)/build',
                 ],
           '<(windows_sdk_path)/Include/winrt',
           '$(VSInstallDir)/VC/atlmfc/include',
         ],
-        'msvs_cygwin_dirs': ['<(DEPTH)/third_party/cygwin'],
         'msvs_cygwin_shell': 0,
         'msvs_disabled_warnings': [4351, 4355, 4396, 4503, 4819,
           # TODO(maruel): These warnings are level 4. They will be slowly
                   '-Wno-deprecated-register',
                   '-Wno-empty-body',
                   '-Wno-enum-conversion',
+                  '-Wno-extra-tokens',
+                  '-Wno-ignored-attributes',
                   '-Wno-incompatible-pointer-types',
+                  '-Wno-int-to-void-pointer-cast',
+                  '-Wno-invalid-noreturn',
                   '-Wno-logical-op-parentheses',
                   '-Wno-microsoft',
                   '-Wno-missing-braces',
+                  '-Wno-missing-declarations',
                   '-Wno-msvc-include',
                   '-Wno-null-dereference',
                   '-Wno-overloaded-virtual',
                   '-Wno-reorder',
                   '-Wno-return-type-c-linkage',
                   '-Wno-self-assign',
+                  '-Wno-sometimes-uninitialized',
                   '-Wno-switch',
                   '-Wno-tautological-compare',
                   '-Wno-unknown-pragmas',
                   '-ferror-limit=1',
                 ],
               },
+              'conditions': [
+                ['MSVS_VERSION=="2013" or MSVS_VERSION=="2013e"', {
+                  'VCCLCompilerTool': {
+                    'AdditionalOptions': [
+                      '-fmsc-version=1800',
+                    ],
+                  },
+                }],
+                ['MSVS_VERSION=="2010" or MSVS_VERSION=="2010e"', {
+                  'VCCLCompilerTool': {
+                    'AdditionalOptions': [
+                      '-fmsc-version=1600',
+                    ],
+                  },
+                }],
+              ],
             }],
           ],
         },
                   '/nxcompat',
                 ],
                 'conditions': [
-                  ['asan==0', {
+                  ['syzyasan==0', {
                     'AdditionalOptions': ['/largeaddressaware'],
                   }],
                 ],
         ],
       },
     }],
-    ['clang==1', {
+    ['clang==1 and ((OS!="mac" and OS!="ios") or clang_xcode==0) '
+        'and OS!="win"', {
       'make_global_settings': [
         ['CC', '<(make_clang_dir)/bin/clang'],
         ['CXX', '<(make_clang_dir)/bin/clang++'],
         ['CXX.host', '$(CXX)'],
       ],
     }],
+    ['clang==1 and OS=="win"', {
+      'make_global_settings': [
+        # On Windows, gyp's ninja generator only looks at CC.
+        ['CC', '<(make_clang_dir)/bin/clang-cl'],
+      ],
+    }],
     ['OS=="android" and clang==0', {
       # Hardcode the compiler names in the Makefile so that
       # it won't depend on the environment at make time.
     # TODO(yyanagisawa): supports GENERATOR==make
     #  make generator doesn't support CC_wrapper without CC
     #  in make_global_settings yet.
-    ['use_goma==1 and ("<(GENERATOR)"=="ninja" or clang==1)', {
+    ['use_goma==1 and ((OS!="mac" and OS!="ios") or clang_xcode==0) and '
+        '("<(GENERATOR)"=="ninja" or clang==1)', {
       'make_global_settings': [
        ['CC_wrapper', '<(gomadir)/gomacc'],
        ['CXX_wrapper', '<(gomadir)/gomacc'],
       ['OS=="ios"', {
         # Target both iPhone and iPad.
         'TARGETED_DEVICE_FAMILY': '1,2',
-        'VALID_ARCHS': 'armv7 i386',
       }, {  # OS!="ios"
         'conditions': [
           ['target_arch=="x64"', {