{ 'includes': [ '../vendor/download/libchromiumcontent/filenames.gypi', ], 'variables': { 'libchromiumcontent_component%': 1, 'pkg-config%': 'pkg-config', 'conditions': [ # The "libchromiumcontent_component" is defined when calling "gyp". ['libchromiumcontent_component', { 'libchromiumcontent_dir%': '<(libchromiumcontent_shared_libraries_dir)', 'libchromiumcontent_libraries%': '<(libchromiumcontent_shared_libraries)', 'libchromiumcontent_v8_libraries%': '<(libchromiumcontent_shared_v8_libraries)', }, { 'libchromiumcontent_dir%': '<(libchromiumcontent_static_libraries_dir)', 'libchromiumcontent_libraries%': '<(libchromiumcontent_static_libraries)', 'libchromiumcontent_v8_libraries%': '<(libchromiumcontent_static_v8_libraries)', }], ], }, 'target_defaults': { 'includes': [ # Rules for excluding e.g. foo_win.cc from the build on non-Windows. 'filename_rules.gypi', ], # Putting this in "configurations" will make overrides not working. 'xcode_settings': { 'ALWAYS_SEARCH_USER_PATHS': 'NO', 'ARCHS': ['x86_64'], 'COMBINE_HIDPI_IMAGES': 'YES', 'GCC_ENABLE_CPP_EXCEPTIONS': 'NO', 'GCC_ENABLE_CPP_RTTI': 'NO', 'GCC_TREAT_WARNINGS_AS_ERRORS': 'YES', 'CLANG_CXX_LANGUAGE_STANDARD': 'c++14', 'MACOSX_DEPLOYMENT_TARGET': '10.9', 'RUN_CLANG_STATIC_ANALYZER': 'YES', 'USE_HEADER_MAP': 'NO', }, 'msvs_configuration_attributes': { 'OutputDirectory': '<(DEPTH)\\build\\$(ConfigurationName)', 'IntermediateDirectory': '$(OutDir)\\obj\\$(ProjectName)', 'CharacterSet': '1', }, 'msvs_system_include_dirs': [ '$(VSInstallDir)/VC/atlmfc/include', ], 'msvs_settings': { 'VCCLCompilerTool': { 'AdditionalOptions': ['/MP'], 'MinimalRebuild': 'false', 'BufferSecurityCheck': 'true', 'EnableFunctionLevelLinking': 'true', 'RuntimeTypeInfo': 'false', 'WarningLevel': '4', 'WarnAsError': 'true', 'DebugInformationFormat': '3', }, 'VCLinkerTool': { 'GenerateDebugInformation': 'true', 'MapFileName': '$(OutDir)\\$(TargetName).map', 'ImportLibrary': '$(OutDir)\\lib\\$(TargetName).lib', 'LargeAddressAware': '2', 'AdditionalOptions': [ # ATL 8.0 included in WDK 7.1 makes the linker to generate # following # warnings: # - warning LNK4254: section 'ATL' (50000040) merged into # '.rdata' (40000040) with different attributes # - warning LNK4078: multiple 'ATL' sections found with # different attributes '/ignore:4254', '/ignore:4078', # views_chromiumcontent.lib generates this warning because it's # symobls are defined as dllexport but used as static library: # - warning LNK4217: locally defined symbol imported in function # - warning LNK4049: locally defined symbol imported '/ignore:4217', '/ignore:4049', ], }, }, 'configurations': { # The "Debug" and "Release" configurations are not actually used. 'Debug': {}, 'Release': {}, 'Common_Base': { 'abstract': 1, 'defines': [ # Needed by gin: 'V8_USE_EXTERNAL_STARTUP_DATA', # Special configuration for node: 'V8_PROMISE_INTERNAL_FIELD_COUNT=1', # From skia_for_chromium_defines.gypi: 'SK_SUPPORT_LEGACY_GETTOPDEVICE', 'SK_SUPPORT_LEGACY_BITMAP_CONFIG', 'SK_SUPPORT_LEGACY_DEVICE_VIRTUAL_ISOPAQUE', 'SK_SUPPORT_LEGACY_N32_NAME', 'SK_SUPPORT_LEGACY_SETCONFIG', 'SK_IGNORE_ETC1_SUPPORT', 'SK_IGNORE_GPU_DITHER', # NACL is not enabled: 'DISABLE_NACL', ], 'conditions': [ ['OS!="mac"', { 'defines': [ 'TOOLKIT_VIEWS', 'USE_AURA', ], }], ['OS in ["mac", "win"]', { 'defines': [ 'USE_OPENSSL', ], }, { 'defines': [ 'USE_X11', # "use_nss_certs" is set to 1 in libchromiumcontent. 'USE_NSS_CERTS', 'USE_NSS', # deprecated after Chrome 45. ], }], ['OS in ["linux", "mac"]', { 'defines': [ 'WEBRTC_POSIX', 'UCHAR_TYPE=uint16_t', ], }], ['OS=="linux"', { 'defines': [ '_LARGEFILE_SOURCE', '_LARGEFILE64_SOURCE', '_FILE_OFFSET_BITS=64', 'WEBRTC_LINUX', ], 'cflags_cc': [ '-D__STRICT_ANSI__', '-fno-rtti', ], 'ldflags': [ '-Wl,-z,noexecstack', ], }], # OS=="linux" ['OS=="linux" and target_arch in ["ia32", "x64", "arm64"]', { 'ldflags': [ '-fuse-ld=lld', # Chromium Clang uses lld for linking ], }], # OS=="linux" and target_arch in ["ia32", "x64", "arm64"] ['OS=="mac"', { 'defines': [ # The usage of "webrtc/modules/desktop_capture/desktop_capture_options.h" # is required to see this macro. 'WEBRTC_MAC', ], }], # OS=="mac" ['OS=="win"', { 'include_dirs': [ '<(libchromiumcontent_src_dir)/third_party/wtl/include', ], 'defines': [ '_WIN32_WINNT=0x0602', 'WINVER=0x0602', 'WIN32', '_WINDOWS', 'NOMINMAX', 'PSAPI_VERSION=1', '_CRT_RAND_S', 'CERT_CHAIN_PARA_HAS_EXTRA_FIELDS', 'WIN32_LEAN_AND_MEAN', '_ATL_NO_OPENGL', '_SECURE_ATL', # The usage of "webrtc/modules/desktop_capture/desktop_capture_options.h" # is required to see this macro. 'WEBRTC_WIN', 'UCHAR_TYPE=wchar_t', ], 'conditions': [ ['target_arch=="x64"', { 'msvs_configuration_platform': 'x64', 'msvs_settings': { 'VCLinkerTool': { 'MinimumRequiredVersion': '5.02', # Server 2003. 'TargetMachine': '17', # x86 - 64 # Doesn't exist x64 SDK. Should use oleaut32 in any case. 'IgnoreDefaultLibraryNames': [ 'olepro32.lib' ], }, 'VCLibrarianTool': { 'TargetMachine': '17', # x64 }, }, }], ], }], # OS=="win" ], }, # Common_Base 'Debug_Base': { 'abstract': 1, 'defines': [ # Use this instead of "NDEBUG" to determine whether we are in # Debug build, because "NDEBUG" is already used by Chromium. 'DEBUG', '_DEBUG', # Require when using libchromiumcontent. 'COMPONENT_BUILD', 'GURL_DLL', 'SKIA_DLL', 'USING_V8_SHARED', 'WEBKIT_DLL', ], 'msvs_settings': { 'VCCLCompilerTool': { 'RuntimeLibrary': '3', # /MDd (debug DLL) 'Optimization': '0', # 0 = /Od # See http://msdn.microsoft.com/en-us/library/8wtf2dfz(VS.71).aspx 'BasicRuntimeChecks': '3', # 3 = all checks enabled, 0 = off }, 'VCLinkerTool': { 'OptimizeReferences': 2, # /OPT:REF 'EnableCOMDATFolding': 2, # /OPT:ICF }, }, 'conditions': [ ['OS=="linux" and target_arch=="x64"', { 'defines': [ '_GLIBCXX_DEBUG', ], 'cflags': [ '-g', ], }], # OS=="linux" ], }, # Debug_Base 'Release_Base': { 'abstract': 1, 'defines': [ 'NDEBUG', ], 'msvs_settings': { 'VCCLCompilerTool': { 'RuntimeLibrary': '2', # /MD (nondebug DLL) 'Optimization': '2', # /O2 'WholeProgramOptimization': 'true', # /GL # See http://msdn.microsoft.com/en-us/library/47238hez(VS.71).aspx 'InlineFunctionExpansion': '2', # 2 = max # See http://msdn.microsoft.com/en-us/library/2kxx5t2c(v=vs.80).aspx 'OmitFramePointers': 'false', # The above is not sufficient (http://crbug.com/106711): it # simply eliminates an explicit "/Oy", but both /O2 and /Ox # perform FPO regardless, so we must explicitly disable. # We still want the false setting above to avoid having # "/Oy /Oy-" and warnings about overriding. 'AdditionalOptions': ['/Oy-', '/d2guard4'], }, 'VCLibrarianTool': { 'LinkTimeCodeGeneration': 'true', # /LTCG }, 'VCLinkerTool': { # Control Flow Guard is a security feature in Windows # 8.1 and higher designed to prevent exploitation of # indirect calls in executables. # Control Flow Guard is enabled using the /d2guard4 # compiler setting in combination with the /guard:cf # linker setting. 'AdditionalOptions': ['/guard:cf'], # Turn off incremental linking to save binary size. 'LinkIncremental': '1', # /INCREMENTAL:NO 'LinkTimeCodeGeneration': '1', # /LTCG 'OptimizeReferences': 2, # /OPT:REF 'EnableCOMDATFolding': 2, # /OPT:ICF }, }, 'conditions': [ ['OS=="linux"', { 'cflags': [ '-O2', # Generate symbols, will be stripped later. '-g', # Don't emit the GCC version ident directives, they just end up # in the .comment section taking up binary size. '-fno-ident', # Put data and code in their own sections, so that unused symbols # can be removed at link time with --gc-sections. '-fdata-sections', '-ffunction-sections', ], 'ldflags': [ # Specifically tell the linker to perform optimizations. # See http://lwn.net/Articles/192624/ . '-Wl,-O1', '-Wl,--as-needed', '-Wl,--gc-sections', ], }], # OS=="linux" ['OS=="linux" and target_arch in ["ia32", "x64", "arm64"]', { 'cflags': [ '-flto=thin', ], 'ldflags': [ '-flto=thin', '-Wl,--icf=all', '-Wl,--lto-O0', # this could be removed in future; see https://codereview.chromium.org/2939923004 '-Wl,-mllvm,-function-sections', '-Wl,-mllvm,-data-sections', ], }], ], }, # Release_Base 'conditions': [ ['libchromiumcontent_component', { 'D': { 'inherit_from': ['Common_Base', 'Debug_Base'], }, # D (Debug) }, { 'R': { 'inherit_from': ['Common_Base', 'Release_Base'], }, # R (Release) }], # libchromiumcontent_component ['OS=="win"', { 'conditions': [ # gyp always assumes "_x64" targets on Windows. ['libchromiumcontent_component', { 'D_x64': { 'inherit_from': ['Common_Base', 'Debug_Base'], }, # D_x64 }, { 'R_x64': { 'inherit_from': ['Common_Base', 'Release_Base'], }, # R_x64 }], # libchromiumcontent_component ], }], # OS=="win" ], }, # configurations 'target_conditions': [ # Putting this under "configurations" doesn't work. ['libchromiumcontent_component', { 'xcode_settings': { 'GCC_OPTIMIZATION_LEVEL': '0', }, }, { # "Debug_Base" 'xcode_settings': { 'DEAD_CODE_STRIPPING': 'YES', # -Wl,-dead_strip 'GCC_OPTIMIZATION_LEVEL': '2', 'OTHER_CFLAGS': [ '-fno-inline', '-fno-omit-frame-pointer', '-fno-builtin', '-fno-optimize-sibling-calls', ], }, }], # "Release_Base" ['OS=="mac" and libchromiumcontent_component==0 and _type in ["executable", "shared_library"]', { 'xcode_settings': { # Generates symbols and strip the binary. 'DEBUG_INFORMATION_FORMAT': 'dwarf-with-dsym', 'DEPLOYMENT_POSTPROCESSING': 'YES', 'STRIP_INSTALLED_PRODUCT': 'YES', 'STRIPFLAGS': '-x', }, }], # OS=="mac" and libchromiumcontent_component==0 and _type in ["executable", "shared_library"] ['OS=="linux" and target_arch=="ia32" and _toolset=="target"', { 'ldflags': [ # Workaround for linker OOM. '-Wl,--no-keep-memory', ], }], ], # target_conditions # Ignored compiler warnings of Chromium/Node.js 'conditions': [ ['OS=="mac"', { 'xcode_settings': { 'WARNING_CFLAGS': [ '-Wall', '-Wextra', '-Wno-unused-parameter', '-Wno-missing-field-initializers', '-Wno-deprecated-declarations', '-Wno-undefined-var-template', # https://crbug.com/604888 '-Wno-unneeded-internal-declaration', '-Wno-inconsistent-missing-override', '-Wno-tautological-unsigned-enum-zero-compare', ], }, }], ['OS=="linux" and clang==1', { 'cflags': [ '-Wno-inconsistent-missing-override', '-Wno-undefined-var-template', # https://crbug.com/604888 '-Wno-tautological-unsigned-enum-zero-compare', ], }], ['OS=="win"', { 'msvs_disabled_warnings': [ 4100, # unreferenced formal parameter 4102, # unreferencd label 4121, # alignment of a member was sensitive to packing 4127, # conditional expression is constant 4189, # local variable is initialized but not referenced 4244, # 'initializing' : conversion from 'double' to 'size_t', possible loss of data 4245, # 'initializing' : conversion from 'int' to 'const net::QuicVersionTag', signed/unsigned mismatch 4251, # class 'std::xx' needs to have dll-interface. 4310, # cast truncates constant value 4355, # 'this' : used in base member initializer list 4480, # nonstandard extension used: specifying underlying type for enum 4481, # nonstandard extension used: override specifier 'override' 4510, # default constructor could not be generated 4512, # assignment operator could not be generated 4610, # user defined constructor required 4702, # unreachable code 4715, # not all control paths return a value 4819, # The file contains a character that cannot be represented in the current code page 4275, # non dll-interface class used as base for dll-interface class ], }], ], # conditions }, # target_defaults }