# Copyright 2018 Google LLC. All Rights Reserved. This file and proprietary # source code may only be used and distributed under the Widevine Master # License Agreement. { # Here you can override global gyp variables with platform-specific values. # See cdm.gyp for a complete list of settings you can override. 'variables': { 'asm_target_arch': 'x86-64', }, # end variables # Here you can set platform-specific compiler settings. 'target_defaults': { # These are flags passed to the compiler for all C & C++ files. 'cflags': [ '-fPIC', '-fvisibility=hidden', '-fno-common', '-Wno-unknown-warning-option', # Enable many warnings, and treat warnings as errors. Note that, for # cross-compatibility reasons between GCC and Clang, we cannot just use # -Werror to treat warnings as errors, as GCC has no equivalent of # -Wno-unknown-warning-option. '-Werror=all', '-Werror=extra', '-Werror=unused', '-Werror=format=2', '-Werror=format-nonliteral', '-Werror=format-signedness', '-Werror=cast-align', '-Werror=return-type', '-Werror=shadow', '-Wno-unused-parameter', # OEC Ref requires this '-Wno-dangling-else', # Allowed by Google C++ Style ], # These are flags passed to the compiler for plain C only. 'cflags_c': [ # Compile using the C11 standard with POSIX extensions '-std=c11', '-D_POSIX_C_SOURCE=200809L', # Enable C-specific warnings '-Wbad-function-cast', '-Wno-error=bad-function-cast', '-Wcast-qual', '-Wno-error=cast-qual', ], # These are flags passed to the compiler for C++ only. 'cflags_cc': [ # Compile using the C++11 standard. '-std=c++11', # CE CDM does not use exceptions, and they are expensive. '-fno-exceptions', # Enable C++-specific warnings '-Werror=cast-qual', '-Werror=non-virtual-dtor', '-Werror=strict-null-sentinel', '-Werror=useless-cast', # TODO(b/156766290): We cannot enable these until we update to gTest 1.10 # and update all our tests to use the new version of MOCK_METHOD that # allows specifying |override|. # #'-Werror=overloaded-virtual', #'-Werror=suggest-override', #'-Werror=zero-as-null-pointer-constant', '-Wdeprecated-declarations', '-Wno-error=deprecated-declarations', ], # These are flags passed to the linker. 'ldflags': [ ], # These are macros set by the compiler. 'defines': [ #'EXAMPLE_MACRO_WITH_NO_VALUE', #'EXAMPLE_KEY=EXAMPLE_VALUE', ], # These are additional include paths to search for headers. 'include_dirs': [ #'/usr/local/include', ], 'target_conditions': [ ['_toolset == "host"', { # These are settings specifically for the host toolchain. # The extra equals sign in the key name instructs gyp to replace # the generic settings above rather than append to them. 'cflags=': [], 'cflags_c=': [], 'cflags_cc=': [], 'ldflags=': [], 'defines=': [], 'include_dirs=': [], }], # end _toolset == "host" condition ], # end target_conditions 'configurations': { # These are additional settings per build configuration. # You may specify any of the keys above in this section # (cflags, cflags_c, cflags_cc, ldflags, defines, include_dirs). 'debug': { 'cflags': [ '-g3', '-fsanitize=address,undefined,float-divide-by-zero,bounds', '-fno-sanitize-recover=address,undefined,float-divide-by-zero,bounds', '-fsanitize-address-use-after-scope', # These are the flags recommended by the Address Sanitizer team when # enabling Address Sanitizer. '-U_FORTIFY_SOURCE', '-O1', '-fno-omit-frame-pointer', '-fno-inline', '-fno-optimize-sibling-calls', ], 'cflags_cc': [ # CE CDM does not use RTTI, but UBSan needs it for its vptr checks '-frtti', ], 'defines': [ '_DEBUG', '_GLIBCXX_DEBUG', ], 'ldflags': [ '-g3', '-fsanitize=address,undefined,float-divide-by-zero,bounds', ], }, 'release': { 'cflags': [ '-O2', '-g0', ], 'cflags_cc': [ # CE CDM does not use RTTI, and it is expensive. '-fno-rtti', ], 'ldflags': [ '-flto', ], 'defines': [ 'NDEBUG', ], }, }, # end configurations }, # end target_defaults }