# Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
#
# Use of this source code is governed by a BSD-style license
# that can be found in the LICENSE file in the root of the source
# tree. An additional intellectual property rights grant can be found
# in the file PATENTS.  All contributing project authors may
# be found in the AUTHORS file in the root of the source tree.

# This file contains common settings for building WebRTC components.

{
  # Nesting is required in order to use variables for setting other variables.
  'variables': {
    'variables': {
      'variables': {
        'variables': {
          # This will already be set to zero by supplement.gypi
          'build_with_chromium%': 1,

          # Enable to use the Mozilla internal settings.
          'build_with_mozilla%': 0,
        },
        'build_with_chromium%': '<(build_with_chromium)',
        'build_with_mozilla%': '<(build_with_mozilla%)',
        'include_opus%': 1,

        'conditions': [
          # Include the iLBC audio codec?
          ['build_with_chromium==1 or build_with_mozilla==1', {
            'include_ilbc%': 0,
          }, {
            'include_ilbc%': 1,
          }],

          ['build_with_chromium==1', {
            'webrtc_root%': '<(DEPTH)/third_party/webrtc',
          }, {
            'webrtc_root%': '<(DEPTH)/webrtc',
          }],

          # Controls whether we use libevent on posix platforms.
          # TODO(phoglund): should arguably be controlled by platform #ifdefs
          # in the code instead.
          ['OS=="win" or OS=="mac" or OS=="ios"', {
            'build_libevent%': 0,
            'enable_libevent%': 0,
          }, {
            'build_libevent%': 1,
            'enable_libevent%': 1,
          }],
        ],
      },
      'build_with_chromium%': '<(build_with_chromium)',
      'build_with_mozilla%': '<(build_with_mozilla)',
      'build_libevent%': '<(build_libevent)',
      'enable_libevent%': '<(enable_libevent)',
      'webrtc_root%': '<(webrtc_root)',
      'webrtc_vp8_dir%': '<(webrtc_root)/modules/video_coding/codecs/vp8',
      'webrtc_vp9_dir%': '<(webrtc_root)/modules/video_coding/codecs/vp9',
      'include_ilbc%': '<(include_ilbc)',
      'include_opus%': '<(include_opus)',
      'opus_dir%': '<(DEPTH)/third_party/opus',
    },
    'build_with_chromium%': '<(build_with_chromium)',
    'build_with_mozilla%': '<(build_with_mozilla)',
    'build_libevent%': '<(build_libevent)',
    'enable_libevent%': '<(enable_libevent)',
    'webrtc_root%': '<(webrtc_root)',
    'test_runner_path': '<(DEPTH)/webrtc/build/android/test_runner.py',
    'webrtc_vp8_dir%': '<(webrtc_vp8_dir)',
    'webrtc_vp9_dir%': '<(webrtc_vp9_dir)',
    'include_ilbc%': '<(include_ilbc)',
    'include_opus%': '<(include_opus)',
    'rtc_relative_path%': 1,
    'external_libraries%': '0',
    'json_root%': '<(DEPTH)/third_party/jsoncpp/source/include/',
    # openssl needs to be defined or gyp will complain. Is is only used when
    # when providing external libraries so just use current directory as a
    # placeholder.
    'ssl_root%': '.',

    # The Chromium common.gypi we use treats all gyp files without
    # chromium_code==1 as third party code. This disables many of the
    # preferred warning settings.
    #
    # We can set this here to have WebRTC code treated as Chromium code. Our
    # third party code will still have the reduced warning settings.
    'chromium_code': 1,

    # Targets are by default not NaCl untrusted code. Use this variable exclude
    # code that uses libraries that aren't available in the NaCl sandbox.
    'nacl_untrusted_build%': 0,

    # Set to 1 to enable code coverage on Linux using the gcov library.
    'coverage%': 0,

    # Set to "func", "block", "edge" for coverage generation.
    # At unit test runtime set UBSAN_OPTIONS="coverage=1".
    # It is recommend to set include_examples=0.
    # Use llvm's sancov -html-report for human readable reports.
    # See http://clang.llvm.org/docs/SanitizerCoverage.html .
    'webrtc_sanitize_coverage%': "",

    # Remote bitrate estimator logging/plotting.
    'enable_bwe_test_logging%': 0,

    # Selects fixed-point code where possible.
    'prefer_fixed_point%': 0,

    # Enable data logging. Produces text files with data logged within engines
    # which can be easily parsed for offline processing.
    'enable_data_logging%': 0,

    # Enables the use of protocol buffers for debug recordings.
    'enable_protobuf%': 1,

    # Disable the code for the intelligibility enhancer by default.
    'enable_intelligibility_enhancer%': 0,

    # Selects whether debug dumps for the audio processing module
    # should be generated.
    'apm_debug_dump%': 0,

    # Disable these to not build components which can be externally provided.
    'build_expat%': 1,
    'build_json%': 1,
    'build_libsrtp%': 1,
    'build_libvpx%': 1,
    'libvpx_build_vp9%': 1,
    'build_libyuv%': 1,
    'build_openmax_dl%': 1,
    'build_opus%': 1,
    'build_protobuf%': 1,
    'build_ssl%': 1,
    'build_usrsctp%': 1,

    # Disable by default
    'have_dbus_glib%': 0,

    # Make it possible to provide custom locations for some libraries.
    'libvpx_dir%': '<(DEPTH)/third_party/libvpx',
    'libyuv_dir%': '<(DEPTH)/third_party/libyuv',
    'opus_dir%': '<(opus_dir)',

    # Use Java based audio layer as default for Android.
    # Change this setting to 1 to use Open SL audio instead.
    # TODO(henrika): add support for Open SL ES.
    'enable_android_opensl%': 0,

    # Link-Time Optimizations
    # Executes code generation at link-time instead of compile-time
    # https://gcc.gnu.org/wiki/LinkTimeOptimization
    'use_lto%': 0,

    # Defer ssl perference to that specified through sslconfig.h instead of
    # choosing openssl or nss directly.  In practice, this can be used to
    # enable schannel on windows.
    'use_legacy_ssl_defaults%': 0,

    # Determines whether NEON code will be built.
    'build_with_neon%': 0,

    # Disable this to skip building source requiring GTK.
    'use_gtk%': 1,

    # Enable this to use HW H.264 encoder/decoder on iOS/Mac PeerConnections.
    # Enabling this may break interop with Android clients that support H264.
    'use_objc_h264%': 0,

    # Enable this to prevent extern symbols from being hidden on iOS builds.
    # The chromium settings we inherit hide symbols by default on Release
    # builds. We want our symbols to be visible when distributing WebRTC via
    # static libraries to avoid linker warnings.
    'ios_override_visibility%': 0,

    # Determines whether QUIC code will be built.
    'use_quic%': 0,

    # By default, use normal platform audio support or dummy audio, but don't
    # use file-based audio playout and record.
    'use_dummy_audio_file_devices%': 0,

    'conditions': [
      # Enable this to build OpenH264 encoder/FFmpeg decoder. This is supported
      # on all platforms except Android and iOS. Because FFmpeg can be built
      # with/without H.264 support, |ffmpeg_branding| has to separately be set
      # to a value that includes H.264, for example "Chrome". If FFmpeg is built
      # without H.264, compilation succeeds but |H264DecoderImpl| fails to
      # initialize. See also: |rtc_initialize_ffmpeg|.
      # CHECK THE OPENH264, FFMPEG AND H.264 LICENSES/PATENTS BEFORE BUILDING.
      # http://www.openh264.org, https://www.ffmpeg.org/
      ['proprietary_codecs==1 and OS!="android" and OS!="ios"', {
        'rtc_use_h264%': 1,
      }, {
        'rtc_use_h264%': 0,
      }],

      # FFmpeg must be initialized for |H264DecoderImpl| to work. This can be
      # done by WebRTC during |H264DecoderImpl::InitDecode| or externally.
      # FFmpeg must only be initialized once. Projects that initialize FFmpeg
      # externally, such as Chromium, must turn this flag off so that WebRTC
      # does not also initialize.
      ['build_with_chromium==0', {
        'rtc_initialize_ffmpeg%': 1,
      }, {
        'rtc_initialize_ffmpeg%': 0,
      }],

      ['build_with_chromium==1', {
        # Build sources requiring GTK. NOTICE: This is not present in Chrome OS
        # build environments, even if available for Chromium builds.
        'use_gtk%': 0,
        # Exclude pulse audio on Chromium since its prerequisites don't require
        # pulse audio.
        'include_pulse_audio%': 0,

        # Exclude internal ADM since Chromium uses its own IO handling.
        'include_internal_audio_device%': 0,

        # Remove tests for Chromium to avoid slowing down GYP generation.
        'include_tests%': 0,
        'restrict_webrtc_logging%': 1,
      }, {  # Settings for the standalone (not-in-Chromium) build.
        'use_gtk%': 1,
        # TODO(andrew): For now, disable the Chrome plugins, which causes a
        # flood of chromium-style warnings. Investigate enabling them:
        # http://code.google.com/p/webrtc/issues/detail?id=163
        'clang_use_chrome_plugins%': 0,

        'include_pulse_audio%': 1,
        'include_internal_audio_device%': 1,
        'include_tests%': 1,
        'restrict_webrtc_logging%': 0,
      }],
      ['target_arch=="arm" or target_arch=="arm64" or target_arch=="mipsel"', {
        'prefer_fixed_point%': 1,
      }],
      ['(target_arch=="arm" and arm_neon==1) or target_arch=="arm64"', {
        'build_with_neon%': 1,
      }],
      ['OS!="ios" and (target_arch!="arm" or arm_version>=7) and target_arch!="mips64el"', {
        'rtc_use_openmax_dl%': 1,
      }, {
        'rtc_use_openmax_dl%': 0,
      }],
    ], # conditions
  },
  'target_defaults': {
    'conditions': [
      ['restrict_webrtc_logging==1', {
        'defines': ['WEBRTC_RESTRICT_LOGGING',],
      }],
      ['build_with_mozilla==1', {
        'defines': [
          # Changes settings for Mozilla build.
          'WEBRTC_MOZILLA_BUILD',
         ],
      }],
      ['have_dbus_glib==1', {
        'defines': [
          'HAVE_DBUS_GLIB',
         ],
         'cflags': [
           '<!@(pkg-config --cflags dbus-glib-1)',
         ],
      }],
      ['rtc_relative_path==1', {
        'defines': ['EXPAT_RELATIVE_PATH',],
      }],
      ['os_posix==1', {
        'configurations': {
          'Debug_Base': {
            'defines': [
              # Chromium's build/common.gypi defines _DEBUG for all posix
              # _except_ for ios & mac.  The size of data types such as
              # pthread_mutex_t varies between release and debug builds
              # and is controlled via this flag.  Since we now share code
              # between base/base.gyp and build/common.gypi (this file),
              # both gyp(i) files, must consistently set this flag uniformly
              # or else we'll run in to hard-to-figure-out problems where
              # one compilation unit uses code from another but expects
              # differently laid out types.
              # For WebRTC, we want it there as well, because ASSERT and
              # friends trigger off of it.
              '_DEBUG',
            ],
          },
        },
      }],
      ['build_with_chromium==1', {
        'defines': [
          # Changes settings for Chromium build.
          # TODO(kjellander): Cleanup unused ones and move defines closer to the
          # source when webrtc:4256 is completed.
          'ENABLE_EXTERNAL_AUTH',
          'FEATURE_ENABLE_SSL',
          'HAVE_OPENSSL_SSL_H',
          'HAVE_SCTP',
          'HAVE_SRTP',
          'HAVE_WEBRTC_VIDEO',
          'HAVE_WEBRTC_VOICE',
          'LOGGING_INSIDE_WEBRTC',
          'NO_MAIN_THREAD_WRAPPING',
          'NO_SOUND_SYSTEM',
          'SRTP_RELATIVE_PATH',
          'SSL_USE_OPENSSL',
          'USE_WEBRTC_DEV_BRANCH',
          'WEBRTC_CHROMIUM_BUILD',
        ],
        'include_dirs': [
          # Include the top-level directory when building in Chrome, so we can
          # use full paths (e.g. headers inside testing/ or third_party/).
          '<(DEPTH)',
          # The overrides must be included before the WebRTC root as that's the
          # mechanism for selecting the override headers in Chromium.
          '../../webrtc_overrides',
          # The WebRTC root is needed to allow includes in the WebRTC code base
          # to be prefixed with webrtc/.
          '../..',
        ],
      }, {
         # Include the top-level dir so the WebRTC code can use full paths.
        'include_dirs': [
          '../..',
        ],
        'conditions': [
          ['os_posix==1', {
            'conditions': [
              # -Wextra is currently disabled in Chromium's common.gypi. Enable
              # for targets that can handle it. For Android/arm64 right now
              # there will be an 'enumeral and non-enumeral type in conditional
              # expression' warning in android_tools/ndk_experimental's version
              # of stlport.
              # See: https://code.google.com/p/chromium/issues/detail?id=379699
              ['target_arch!="arm64" or OS!="android"', {
                'cflags': [
                  '-Wextra',
                  # We need to repeat some flags from Chromium's common.gypi
                  # here that get overridden by -Wextra.
                  '-Wno-unused-parameter',
                  '-Wno-missing-field-initializers',
                  '-Wno-strict-overflow',
                ],
              }],
            ],
            'cflags_cc': [
              '-Wnon-virtual-dtor',
              # This is enabled for clang; enable for gcc as well.
              '-Woverloaded-virtual',
            ],
          }],
          ['clang==1', {
            'cflags': [
              '-Wimplicit-fallthrough',
              '-Wthread-safety',
              '-Winconsistent-missing-override',
            ],
          }],
        ],
      }],
      ['target_arch=="arm64"', {
        'defines': [
          'WEBRTC_ARCH_ARM64',
          'WEBRTC_HAS_NEON',
        ],
      }],
      ['target_arch=="arm"', {
        'defines': [
          'WEBRTC_ARCH_ARM',
        ],
        'conditions': [
          ['arm_version>=7', {
            'defines': ['WEBRTC_ARCH_ARM_V7',],
            'conditions': [
              ['arm_neon==1', {
                'defines': ['WEBRTC_HAS_NEON',],
              }],
            ],
          }],
        ],
      }],
      ['target_arch=="mipsel" and mips_arch_variant!="r6"', {
        'defines': [
          'MIPS32_LE',
        ],
        'conditions': [
          ['mips_float_abi=="hard"', {
            'defines': [
              'MIPS_FPU_LE',
            ],
          }],
          ['mips_arch_variant=="r2"', {
            'defines': [
              'MIPS32_R2_LE',
            ],
          }],
          ['mips_dsp_rev==1', {
            'defines': [
              'MIPS_DSP_R1_LE',
            ],
          }],
          ['mips_dsp_rev==2', {
            'defines': [
              'MIPS_DSP_R1_LE',
              'MIPS_DSP_R2_LE',
            ],
          }],
        ],
      }],
      ['coverage==1 and OS=="linux"', {
        'cflags': [ '-ftest-coverage',
                    '-fprofile-arcs' ],
        'ldflags': [ '--coverage' ],
        'link_settings': { 'libraries': [ '-lgcov' ] },
      }],
     ['webrtc_sanitize_coverage!=""', {
        'cflags': [ '-fsanitize-coverage=<(webrtc_sanitize_coverage)' ],
        'ldflags': [ '-fsanitize-coverage=<(webrtc_sanitize_coverage)' ],
     }],
     ['webrtc_sanitize_coverage!="" and OS=="mac"', {
        'xcode_settings': {
            'OTHER_CFLAGS': [
               '-fsanitize-coverage=func',
            ],
         },
      }],
      ['os_posix==1', {
        # For access to standard POSIXish features, use WEBRTC_POSIX instead of
        # a more specific macro.
        'defines': [
          'WEBRTC_POSIX',
        ],
      }],
      ['OS=="ios"', {
        'defines': [
          'WEBRTC_MAC',
          'WEBRTC_IOS',
        ],
      }],
      ['OS=="ios" and ios_override_visibility==1', {
        'xcode_settings': {
          'GCC_INLINES_ARE_PRIVATE_EXTERN': 'NO',
          'GCC_SYMBOLS_PRIVATE_EXTERN': 'NO',
        }
      }],
      ['OS=="ios" and use_objc_h264==1', {
        'defines': [
          'WEBRTC_OBJC_H264',
        ],
      }],
      ['OS=="linux"', {
        'defines': [
          'WEBRTC_LINUX',
        ],
      }],
      ['OS=="mac"', {
        'defines': [
          'WEBRTC_MAC',
        ],
      }],
      ['OS=="win"', {
        'defines': [
          'WEBRTC_WIN',
        ],
        # TODO(andrew): enable all warnings when possible.
        # TODO(phoglund): get rid of 4373 supression when
        # http://code.google.com/p/webrtc/issues/detail?id=261 is solved.
        'msvs_disabled_warnings': [
          4373,  # legacy warning for ignoring const / volatile in signatures.
          4389,  # Signed/unsigned mismatch.
        ],
        # Re-enable some warnings that Chromium disables.
        'msvs_disabled_warnings!': [4189,],
      }],
      ['OS=="android"', {
        'defines': [
          'WEBRTC_LINUX',
          'WEBRTC_ANDROID',
         ],
         'conditions': [
           ['clang==0', {
             # The Android NDK doesn't provide optimized versions of these
             # functions. Ensure they are disabled for all compilers.
             'cflags': [
               '-fno-builtin-cos',
               '-fno-builtin-sin',
               '-fno-builtin-cosf',
               '-fno-builtin-sinf',
             ],
           }],
         ],
      }],
      ['chromeos==1', {
        'defines': [
          'CHROMEOS',
        ],
      }],
      ['os_bsd==1', {
        'defines': [
          'BSD',
        ],
      }],
      ['OS=="openbsd"', {
        'defines': [
          'OPENBSD',
        ],
      }],
      ['OS=="freebsd"', {
        'defines': [
          'FREEBSD',
        ],
      }],
      ['include_internal_audio_device==1', {
        'defines': [
          'WEBRTC_INCLUDE_INTERNAL_AUDIO_DEVICE',
        ],
      }],
      ['libvpx_build_vp9==0', {
        'defines': [
          'RTC_DISABLE_VP9',
        ],
      }],
    ], # conditions
    'direct_dependent_settings': {
      'conditions': [
        ['build_with_mozilla==1', {
          'defines': [
            # Changes settings for Mozilla build.
            'WEBRTC_MOZILLA_BUILD',
           ],
        }],
        ['build_with_chromium==1', {
          'defines': [
            # Changes settings for Chromium build.
            # TODO(kjellander): Cleanup unused ones and move defines closer to
            # the source when webrtc:4256 is completed.
            'FEATURE_ENABLE_SSL',
            'FEATURE_ENABLE_VOICEMAIL',
            'EXPAT_RELATIVE_PATH',
            'GTEST_RELATIVE_PATH',
            'NO_MAIN_THREAD_WRAPPING',
            'NO_SOUND_SYSTEM',
            'WEBRTC_CHROMIUM_BUILD',
          ],
          'include_dirs': [
            # The overrides must be included first as that is the mechanism for
            # selecting the override headers in Chromium.
            '../../webrtc_overrides',
            '../..',
          ],
        }, {
          'include_dirs': [
            '../..',
          ],
        }],
        ['OS=="mac"', {
          'defines': [
            'WEBRTC_MAC',
          ],
        }],
        ['OS=="ios"', {
          'defines': [
            'WEBRTC_MAC',
            'WEBRTC_IOS',
          ],
        }],
        ['OS=="win"', {
          'defines': [
            'WEBRTC_WIN',
            '_CRT_SECURE_NO_WARNINGS',  # Suppress warnings about _vsnprinf
          ],
        }],
        ['OS=="linux"', {
          'defines': [
            'WEBRTC_LINUX',
          ],
        }],
        ['OS=="android"', {
          'defines': [
            'WEBRTC_LINUX',
            'WEBRTC_ANDROID',
           ],
        }],
        ['os_posix==1', {
          # For access to standard POSIXish features, use WEBRTC_POSIX instead
          # of a more specific macro.
          'defines': [
            'WEBRTC_POSIX',
          ],
        }],
        ['chromeos==1', {
          'defines': [
            'CHROMEOS',
          ],
        }],
        ['os_bsd==1', {
          'defines': [
            'BSD',
          ],
        }],
        ['OS=="openbsd"', {
          'defines': [
            'OPENBSD',
          ],
        }],
        ['OS=="freebsd"', {
          'defines': [
            'FREEBSD',
          ],
        }],
      ],
    },
  }, # target_defaults
}
