| # Copyright 2017 Google Inc. All Rights Reserved. |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| { |
| 'variables': { |
| 'target_arch': 'x64', |
| 'target_os': 'win', |
| |
| # Use a hardware rasterizer and graphical setup. |
| 'rasterizer_type': 'hardware', |
| |
| # Link with angle |
| 'gl_type': 'angle', |
| 'angle_platform_windows': 1, |
| |
| # Frame presentation is blocked on vsync, so the render thread will also |
| # block on vsync. However, use a non-zero minimum frame time to avoid |
| # possible busy-loops on unrendered submissions. |
| 'cobalt_minimum_frame_time_in_milliseconds': '1', |
| |
| 'cobalt_splash_screen_file': '<(DEPTH)/cobalt/browser/splash_screen/youtube_splash_screen.html', |
| 'fallback_splash_screen_url': 'file:///cobalt/browser/splash_screen/youtube_splash_screen.html', |
| |
| # win-win32-lib does not link this binary successfully today. |
| 'build_snapshot_app_stats': 0, |
| |
| # Platform-specific implementations to compile into cobalt. |
| 'cobalt_platform_dependencies': [ |
| '<(DEPTH)/starboard/egl_and_gles/egl_and_gles.gyp:egl_and_gles', |
| ], |
| |
| 'conditions': [ |
| ['cobalt_fastbuild==0', { |
| 'msvs_settings': { |
| 'VCCLCompilerTool': { |
| 'DebugInformationFormat': '3', |
| }, |
| 'VCLinkerTool': { |
| 'GenerateDebugInformation': 'true', |
| }, |
| } |
| }], |
| ], |
| }, |
| |
| 'target_defaults': { |
| 'configurations': { |
| 'winrt_base': { |
| 'msvs_settings': { |
| 'VCCLCompilerTool': { |
| 'AdditionalOptions': [ |
| '/ZW', # Windows Runtime |
| '/ZW:nostdlib', # Windows Runtime, no default #using |
| ] |
| } |
| }, |
| 'defines': [ |
| # VS2017 always defines this for UWP apps |
| 'WINAPI_FAMILY=WINAPI_FAMILY_APP', |
| # VS2017 always defines this for UWP apps |
| '__WRL_NO_DEFAULT_LIB__', |
| ] |
| }, # winrt_base |
| 'win32_base': { |
| 'abstract': 1, |
| 'msvs_settings': { |
| 'VCLinkerTool': { |
| 'SubSystem': 1, # Build a console application by default. |
| 'AdditionalDependencies': [ |
| 'shell32.lib', |
| 'winmm.lib', |
| 'gdi32.lib', |
| 'dbghelp.lib', |
| 'user32.lib', |
| 'shlwapi.lib' |
| ], |
| } |
| }, |
| 'msvs_target_platform': 'x64', |
| 'defines': [ |
| '_WIN32', |
| 'WIN32', |
| 'WINDOWS', |
| '_UNICODE', |
| 'UNICODE', |
| ], |
| }, # win32_base |
| 'msvs_base': { |
| 'abstract': 1, |
| 'msvs_configuration_attributes': { |
| 'OutputDirectory': '<(DEPTH)\\build\\<(build_dir_prefix)$(ConfigurationName)', |
| 'IntermediateDirectory': '$(OutDir)\\obj\\$(ProjectName)', |
| 'CharacterSet': '1', |
| }, |
| 'msvs_system_include_dirs': [ |
| '<(windows_sdk_path)/include/<(windows_sdk_version)/shared', |
| '<(windows_sdk_path)/include/<(windows_sdk_version)/ucrt', |
| '<(windows_sdk_path)/include/<(windows_sdk_version)/um', |
| '<(windows_sdk_path)/include/<(windows_sdk_version)/winrt', |
| '<(windows_sdk_path)/include/<(windows_sdk_version)', |
| '<(visual_studio_install_path)/include', |
| '<(visual_studio_install_path)/atlmfc/include', |
| ], |
| 'msvs_settings': { |
| 'VCLinkerTool': { |
| 'AdditionalDependencies': [ |
| 'mfplat.lib', |
| 'mfuuid.lib', |
| 'windowsapp.lib', |
| ], |
| 'AdditionalLibraryDirectories!': [ |
| '<(windows_sdk_path)/lib/<(windows_sdk_version)/ucrt/x86', |
| '<(windows_sdk_path)/lib/<(windows_sdk_version)/um/x86', |
| ], |
| 'AdditionalLibraryDirectories': [ |
| '<(windows_sdk_path)/lib/<(windows_sdk_version)/ucrt/x64', |
| '<(windows_sdk_path)/lib/<(windows_sdk_version)/um/x64', |
| '<(visual_studio_install_path)/lib/x64', |
| ], |
| }, |
| 'VCLibrarianTool': { |
| 'AdditionalLibraryDirectories!': [ |
| '<(windows_sdk_path)/lib/<(windows_sdk_version)/ucrt/x86', |
| '<(windows_sdk_path)/lib/<(windows_sdk_version)/um/x86', |
| ], |
| 'AdditionalLibraryDirectories': [ |
| '<(windows_sdk_path)/lib/<(windows_sdk_version)/ucrt/x64', |
| '<(windows_sdk_path)/lib/<(windows_sdk_version)/um/x64', |
| '<(visual_studio_install_path)/lib/x64', |
| ], |
| }, |
| }, |
| 'msvs_target_platform': 'x64', |
| # Add the default import libs. |
| 'conditions': [ |
| ['sb_pedantic_warnings==1', { |
| 'msvs_settings': { |
| 'VCCLCompilerTool': { |
| # Enable some warnings, even those that are disabled by default. |
| # See https://msdn.microsoft.com/en-us/library/23k5d385.aspx |
| 'WarningLevel': '4', |
| 'AdditionalOptions': [ |
| # Warn if an enumeration value is unhandled in switch (C4062). |
| # This warning is off by default, so it must be turned on explicitly. |
| '/w44062', |
| ], |
| }, |
| }, |
| }], |
| ['cobalt_fastbuild==0', { |
| 'msvs_settings': { |
| 'VCCLCompilerTool': { |
| 'DebugInformationFormat': '3', |
| 'AdditionalOptions': [ |
| '/FS', |
| ], |
| }, |
| 'VCLinkerTool': { |
| 'GenerateDebugInformation': 'true', |
| }, |
| }, |
| }], |
| ], |
| }, |
| 'msvs_debug': { |
| 'inherit_from': ['debug_base', 'msvs_base'], |
| 'msvs_settings': { |
| 'VCCLCompilerTool': { |
| 'Optimization': '0', |
| 'BasicRuntimeChecks': '3', # Check stack frame validity and check for uninitialized variables at run time. |
| 'AdditionalOptions': [ |
| '/MDd', # Use debug multithreaded library. |
| '/GS', |
| ], |
| }, |
| 'VCLinkerTool': { |
| 'AdditionalDependencies': ['dbghelp.lib'], |
| 'LinkIncremental': '1', # INCREMENTAL:NO |
| }, |
| }, |
| }, |
| 'msvs_devel': { |
| 'inherit_from': ['devel_base', 'msvs_base'], |
| 'msvs_settings': { |
| 'VCCLCompilerTool': { |
| 'Optimization': '2', |
| 'AdditionalOptions': [ |
| '/MDd', # Use debug multithreaded library. |
| '/GS', |
| ], |
| }, |
| 'VCLinkerTool': { |
| 'AdditionalDependencies': ['dbghelp.lib'], |
| 'LinkIncremental': '1', # INCREMENTAL:NO |
| }, |
| }, |
| }, |
| 'msvs_qa': { |
| 'inherit_from': ['qa_base', 'msvs_base'], |
| 'msvs_settings': { |
| 'VCCLCompilerTool': { |
| 'Optimization': '2', |
| 'AdditionalOptions': [ |
| '/MD', # Use release multithreaded library. |
| ], |
| }, |
| 'VCLinkerTool': { |
| 'AdditionalDependencies': ['dbghelp.lib'], |
| 'LinkIncremental': '1', # INCREMENTAL:NO |
| 'OptimizeReferences' : '2', # OPT:REF |
| 'EnableCOMDATFolding' : '2', # OPT:ICF |
| }, |
| }, |
| 'msvs_disabled_warnings': [ |
| # Unreferenced argument. |
| # Often variables are only referenced in DCHECKs. |
| 4100, |
| # Unreferenced variable. |
| # Often variables are only referenced in DCHECKs. |
| 4189, |
| ], |
| }, |
| 'msvs_gold': { |
| 'inherit_from': ['gold_base', 'msvs_base'], |
| 'msvs_settings': { |
| 'VCCLCompilerTool': { |
| 'Optimization': '2', |
| 'AdditionalOptions': [ |
| '/MD', # Use release multithreaded library. |
| ], |
| }, |
| 'VCLinkerTool': { |
| 'LinkIncremental': '1', # INCREMENTAL:NO |
| 'OptimizeReferences' : '2', # OPT:REF |
| 'EnableCOMDATFolding' : '2', # OPT:ICF |
| }, |
| }, |
| 'msvs_disabled_warnings': [ |
| # Unreferenced argument. |
| # Often variables are only referenced in DCHECKs. |
| 4100, |
| # Unreferenced variable. |
| # Often variables are only referenced in DCHECKs. |
| 4189, |
| ], |
| }, |
| }, |
| 'defines': [ |
| # Disable warnings. These options were inherited from Chromium. |
| '_CRT_SECURE_NO_DEPRECATE', |
| '_CRT_NONSTDC_NO_WARNINGS', |
| '_CRT_NONSTDC_NO_DEPRECATE', |
| '_SCL_SECURE_NO_DEPRECATE', |
| # Disable suggestions to switch to Microsoft-specific secure CRT. |
| '_CRT_SECURE_NO_WARNINGS', |
| # Disable support for exceptions in STL in order to detect their use |
| # (the use of exceptions is forbidden by Google C++ style guide). |
| '_HAS_EXCEPTIONS=0', |
| '__STDC_FORMAT_MACROS', # so that we get PRI* |
| # Enable GNU extensions to get prototypes like ffsl. |
| '_GNU_SOURCE=1', |
| 'WIN32_LEAN_AND_MEAN', |
| # By defining this, M_PI will get #defined. |
| '_USE_MATH_DEFINES', |
| # min and max collide with std::min and std::max |
| 'NOMINMAX', |
| # Conform with C99 spec. |
| '_CRT_STDIO_ISO_WIDE_SPECIFIERS', |
| ], |
| 'msvs_settings': { |
| 'VCCLCompilerTool': { |
| 'ForcedIncludeFiles': [], |
| |
| # Check for buffer overruns. |
| 'BufferSecurityCheck': 'true', |
| |
| 'Conformance': [ |
| # "for" loop's initializer go out of scope after the for loop. |
| 'forScope', |
| # wchar_t is treated as a built-in type. |
| 'wchar_t', |
| ], |
| |
| # Check for 64-bit portability issues. |
| 'Detect64BitPortabilityProblems': 'true', |
| |
| # Disable Microsoft-specific header dependency tracking. |
| # Incremental linker does not support the Windows metadata included |
| # in .obj files compiled with C++/CX support (/ZW). |
| 'MinimalRebuild': 'false', |
| |
| # Treat warnings as errors. |
| 'WarnAsError': 'true', |
| |
| # Enable some warnings, even those that are disabled by default. |
| # See https://msdn.microsoft.com/en-us/library/23k5d385.aspx |
| 'WarningLevel': '2', |
| |
| 'AdditionalOptions': [ |
| '/errorReport:none', # Don't send error reports to MS. |
| '/FS', # Force sync PDB updates for parallel compile. |
| ], |
| }, |
| 'VCLinkerTool': { |
| 'RandomizedBaseAddress': '2', # /DYNAMICBASE |
| # TODO: SubSystem is hardcoded in |
| # win\sources_template.vcxproj. This will have the exe behave in the |
| # expected way in MSVS: when it's run without debug (Ctrl+F5), it |
| # will pause after finish; when debugging (F5) it will not pause |
| # before the cmd window disappears. |
| # Currently the value is ignored by msvs_makefile.py which generates |
| # the MSVS project files (it's in "data" in GenerateOutput()). Fix |
| # it if we ever need to change SubSystem. |
| 'SubSystem': '1', # CONSOLE |
| 'TargetMachine': '17', # x86 - 64 |
| 'AdditionalOptions': [ |
| '/WINMD:NO', # Do not generate a WinMD file. |
| '/errorReport:none', # Don't send error reports to MS. |
| ], |
| }, |
| 'VCLibrarianTool': { |
| 'AdditionalOptions': [ |
| # Linking statically with C++/CX library is not recommended. |
| # TODO: Remove after removing ComponentExtensions |
| '/ignore:4264', |
| ], |
| }, |
| }, |
| 'msvs_disabled_warnings': [ |
| # Conditional expression is constant. |
| # Triggers in many legitimate cases, like branching on a constant declared |
| # in type traits. |
| 4127, |
| # 4244 (Level 2) - Implicit conversion from float to int |
| # 4244 (Level 3) - Implicit conversion from int to something smaller |
| # than int. |
| # 4244 (Level 4) - Implicit conversion of types, which may result in |
| # data loss. |
| 4244, |
| # Class has virtual functions, but destructor is not virtual. |
| # Far less useful than in GCC because doesn't take into account the fact |
| # that destructor is not public. |
| 4265, |
| # Inconsistent DLL linkage |
| 4273, |
| # Double -> float truncation. Not enabled on other compilers. |
| 4305, |
| # cast truncates constant value. |
| # We do not care. |
| 4310, |
| # An rvalue cannot be bound to a non-const reference. |
| # In previous versions of Visual C++, it was possible to bind an rvalue |
| # to a non-const reference in a direct initialization. This warning |
| # is useless as it simply describes proper C++ behavior. |
| 4350, |
| # layout of class may have changed from a previous version of |
| # the compiler due to better packing of member. We don't care about |
| # binary compatibility with other compiler versions. |
| 4371, |
| # relative include path contains '..'. |
| # This occurs in a lot third party libraries and we don't care. |
| 4464, |
| # decorated name length exceeded, name was truncated. |
| 4503, |
| # assignment operator could not be generated. |
| # This is expected for structs with const members. |
| 4512, |
| # Unreferenced inline function has been removed. |
| # While detection of dead code is good, this warning triggers in |
| # third-party libraries which renders it useless. |
| 4514, |
| # Expression before comma has no effect. |
| # Cannot be used because Microsoft uses _ASSERTE(("message", 0)) trick |
| # in malloc.h which is included pretty much everywhere. |
| 4548, |
| # Use of noexcept in targets compiled without /EHsc triggers a warning |
| # "termination on exception is not guaranteed" which we consider benign |
| # because we don't expect exceptions to cross the boundary of modules |
| # compiled with /EHsc. |
| 4577, |
| # Copy constructor could not be generated because a base class copy |
| # constructor is inaccessible. |
| # This is an expected consequence of using DISALLOW_COPY_AND_ASSIGN(). |
| 4625, |
| # Assignment operator could not be generated because a base class |
| # assignment operator is inaccessible. |
| # This is an expected consequence of using DISALLOW_COPY_AND_ASSIGN(). |
| 4626, |
| # Digraphs not supported. |
| # Thanks god! |
| 4628, |
| # Symbol is not defined as a preprocessor macro, replacing with '0'. |
| # Seems like common practice, used in Windows SDK and gtest. |
| 4668, |
| # Function not inlined. |
| # It's up to the compiler to decide what to inline. |
| 4710, |
| # Function selected for inline expansion. |
| # It's up to the compiler to decide what to inline. |
| 4711, |
| # The type and order of elements caused the compiler to add padding |
| # to the end of a struct. |
| # Unsurprisingly, most of the structs become larger because of padding |
| # but it's a universally acceptable price for better performance. |
| 4820, |
| # Disable static analyzer warning for std::min and std::max with |
| # objects. |
| # https://connect.microsoft.com/VisualStudio/feedback/details/783808/static-analyzer-warning-c28285-for-std-min-and-std-max |
| 28285, |
| ], |
| }, # end of target_defaults |
| } |