media/webrtc/moz.build
author Chris Manchester <cmanchester@mozilla.com>
Tue, 25 Jul 2017 17:23:25 -0700
changeset 424216 ae6577d5769856cc5c899d42cf3b52d4dd1fef55
parent 418833 2cee59c29faa43df72dda47990c3e451af8c11f1
child 436044 b2b754756c4c386f9c2a5f030f5dde7979c03296
permissions -rw-r--r--
Bug 1382511 - Add --output-sync=line to MOZ_MAKE_FLAGS where available. r=glandium MozReview-Commit-ID: 27FK7x0NcHR

# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
# vim: set filetype=python:
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.

with Files("**"):
    BUG_COMPONENT = ("Core", "WebRTC")

with Files("signaling/**"):
    BUG_COMPONENT = ("Core", "WebRTC: Signaling")

include('/build/gyp.mozbuild')

webrtc_non_unified_sources = [
    'trunk/webrtc/common_audio/vad/vad_core.c',                                  # Because of name clash in the kInitCheck variable
    'trunk/webrtc/common_audio/vad/webrtc_vad.c',                                # Because of name clash in the kInitCheck variable
    'trunk/webrtc/modules/audio_coding/acm2/codec_manager.cc',                   # Because of duplicate IsCodecRED/etc
    'trunk/webrtc/modules/audio_coding/codecs/g722/g722_decode.c',               # Because of name clash in the saturate function
    'trunk/webrtc/modules/audio_coding/codecs/g722/g722_encode.c',               # Because of name clash in the saturate function
    'trunk/webrtc/modules/audio_coding/codecs/isac/fix/source/pitch_filter.c',   # Because of name clash in the kDampFilter variable
    'trunk/webrtc/modules/audio_coding/codecs/isac/fix/source/pitch_filter_c.c', # Because of name clash in the kDampFilter variable
    'trunk/webrtc/modules/audio_coding/neteq/audio_vector.cc',                   # Because of explicit template specializations
    'trunk/webrtc/modules/audio_device/android/audio_manager.cc',                # Because of TAG redefinition
    'trunk/webrtc/modules/audio_device/android/audio_record_jni.cc',             # Becuse of commonly named module static vars
    'trunk/webrtc/modules/audio_device/android/audio_track_jni.cc',              # Becuse of commonly named module static vars
    'trunk/webrtc/modules/audio_device/android/opensles_player.cc',              # Because of TAG redefinition
    'trunk/webrtc/modules/audio_device/linux/audio_device_pulse_linux.cc',       # Because of LATE()
    'trunk/webrtc/modules/audio_device/linux/audio_mixer_manager_pulse_linux.cc',# Because of LATE()
    'trunk/webrtc/modules/audio_device/win/audio_device_core_win.cc',            # Because of ordering assumptions in strsafe.h
    'trunk/webrtc/modules/audio_processing/aec/echo_cancellation.cc',            # Because of conflicts over 'near' on windows
    'trunk/webrtc/modules/audio_processing/aecm/aecm_core.cc',                   # Because of the PART_LEN2 define
    'trunk/webrtc/modules/audio_processing/aecm/aecm_core_c.cc',                 # Because of the PART_LEN2 define
    'trunk/webrtc/modules/audio_processing/aecm/echo_control_mobile.cc',         # Because of the PART_LEN2 define
    'trunk/webrtc/modules/audio_processing/agc/legacy/analog_agc.c',             # Because of name clash in the kInitCheck variable
    'trunk/webrtc/modules/audio_processing/beamformer/covariance_matrix_generator.cc', # Because of needing to define _USE_MATH_DEFINES before including <cmath>
    'trunk/webrtc/modules/audio_processing/beamformer/covariance_matrix_generator.cc',  # Because of needing to define _USE_MATH_DEFINES before including <cmath>
    'trunk/webrtc/modules/audio_processing/beamformer/nonlinear_beamformer.cc',  # Because of needing to define _USE_MATH_DEFINES before including <cmath>
    'trunk/webrtc/modules/audio_processing/echo_cancellation_impl.cc',           # Because of name clash in the MapError function
    'trunk/webrtc/modules/audio_processing/echo_control_mobile_impl.cc',         # Because of name clash in the MapError function
    'trunk/webrtc/modules/audio_processing/echo_detector/normalized_covariance_estimator.cc', # Because of kAlpha
    'trunk/webrtc/modules/audio_processing/gain_control_impl.cc',                # Because of name clash in the Handle typedef
    'trunk/webrtc/modules/audio_processing/noise_suppression_impl.cc',           # Because of name clash in the Handle typedef
    'trunk/webrtc/modules/audio_processing/rms_level.cc',                        # Because of name clash in the kMinLevel variable
    'trunk/webrtc/modules/congestion_controller/trendline_estimator.cc',         # Because of name clash in kDeltaCounterMax
    'trunk/webrtc/modules/desktop_capture/win/screen_capturer_win_gdi.cc',       # Because base/logging.h uses #ifndef LOG before defining anything
    'trunk/webrtc/modules/remote_bitrate_estimator/remote_bitrate_estimator_single_stream.cc', # Because of duplicate definitions of static consts against remote_bitrate_estimator_abs_send_time.cc
    'trunk/webrtc/modules/rtp_rtcp/source/flexfec_receiver.cc',                  # Because of identically named functions and vars between flexfec_receiver.cc and flexfec_sender.cc in an anonymous namespaces
    'trunk/webrtc/modules/rtp_rtcp/source/rtcp_packet/tmmbn.cc',                 # Because of identically named functions and vars between tmmbr.cc and tmmbn.cc in an anonymous namespaces
    'trunk/webrtc/modules/rtp_rtcp/source/rtcp_packet/tmmbr.cc',                 # Because of identically named functions and vars between tmmbr.cc and tmmbn.cc in an anonymous namespaces
    'trunk/webrtc/modules/rtp_rtcp/source/ulpfec_generator.cc',                  # Because of identically named constant kRedForFecHeaderLength in an anonymous namespace
    'trunk/webrtc/modules/video_capture/windows/BaseFilter.cpp',                 # Because it locally defines NS_IF_ADDREF/RELEASE
    'trunk/webrtc/modules/video_capture/windows/device_info_ds.cc',              # Because of the MEDIASUBTYPE_HDYC variable
    'trunk/webrtc/modules/video_capture/windows/help_functions_ds.cc',           # Because of initguid.h
    'trunk/webrtc/modules/video_capture/windows/sink_filter_ds.cc',              # Because of the MEDIASUBTYPE_HDYC variable and initguid.h
    'trunk/webrtc/video/overuse_frame_detector.cc',                              # Because of name clash with call_stats.cc on kWeightFactor
]

GYP_DIRS += ['trunk']

# Set gyp vars that webrtc needs when building under various analysis tools.
# Primarily this prevents webrtc from setting NVALGRIND and breaking builds.
gyp_vars_copy = gyp_vars.copy()
if CONFIG['MOZ_VALGRIND']:
    gyp_vars_copy.update(build_for_tool="memcheck")
elif CONFIG['MOZ_ASAN']:
    gyp_vars_copy.update(build_for_tool="asan")
elif CONFIG['MOZ_TSAN']:
    gyp_vars_copy.update(build_for_tool="tsan")

GYP_DIRS['trunk'].input = 'trunk/peerconnection.gyp'
GYP_DIRS['trunk'].variables = gyp_vars_copy
# We allow warnings for third-party code that can be updated from upstream.
GYP_DIRS['trunk'].sandbox_vars['ALLOW_COMPILER_WARNINGS'] = True
GYP_DIRS['trunk'].sandbox_vars['FINAL_LIBRARY'] = 'webrtc'
GYP_DIRS['trunk'].non_unified_sources += webrtc_non_unified_sources

if CONFIG['ENABLE_TESTS']:
    TEST_DIRS += [
#        'trunk/gtest',
    ]

if CONFIG['MOZ_WEBRTC_SIGNALING']:
    GYP_DIRS += ['signaling']
    GYP_DIRS['signaling'].input = 'signaling/signaling.gyp'
    GYP_DIRS['signaling'].variables = gyp_vars_copy.copy()
    GYP_DIRS['signaling'].variables.update(
        build_for_test=0,
        build_for_standalone=0
    )
    GYP_DIRS['signaling'].sandbox_vars['FINAL_LIBRARY'] = 'xul'
    # Excluded for various symbol conflicts
    signaling_non_unified_sources = [
        'signaling/src/common/browser_logging/CSFLog.cpp',
        'signaling/src/jsep/JsepSessionImpl.cpp',
        'signaling/src/media-conduit/AudioConduit.cpp',
        'signaling/src/media-conduit/MediaCodecVideoCodec.cpp',
        'signaling/src/media-conduit/VideoConduit.cpp',
        'signaling/src/media-conduit/WebrtcMediaCodecVP8VideoCodec.cpp',
        'signaling/src/mediapipeline/MediaPipeline.cpp',
        'signaling/src/mediapipeline/MediaPipelineFilter.cpp',
        'signaling/src/mediapipeline/SrtpFlow.cpp',
        'signaling/src/peerconnection/MediaPipelineFactory.cpp',
        'signaling/src/peerconnection/MediaStreamList.cpp',
        'signaling/src/peerconnection/PeerConnectionCtx.cpp',
        'signaling/src/peerconnection/PeerConnectionImpl.cpp',
        'signaling/src/peerconnection/PeerConnectionMedia.cpp',
        'signaling/src/peerconnection/WebrtcGlobalInformation.cpp',
        'signaling/src/sdp/sipcc/cpr_string.c',
        'signaling/src/sdp/sipcc/sdp_access.c',
        'signaling/src/sdp/sipcc/sdp_attr.c',
        'signaling/src/sdp/sipcc/sdp_attr_access.c',
        'signaling/src/sdp/sipcc/sdp_base64.c',
        'signaling/src/sdp/sipcc/sdp_config.c',
        'signaling/src/sdp/sipcc/sdp_main.c',
        'signaling/src/sdp/sipcc/sdp_services_unix.c',
        'signaling/src/sdp/sipcc/sdp_token.c',
        'signaling/src/sdp/sipcc/sdp_utils.c',
    ]

    GYP_DIRS['signaling'].non_unified_sources += signaling_non_unified_sources

    GYP_DIRS += ['trunk/third_party/gflags']
    GYP_DIRS['trunk/third_party/gflags'].input = 'trunk/third_party/gflags/gflags.gyp'
    GYP_DIRS['trunk/third_party/gflags'].variables = gyp_vars_copy
    GYP_DIRS['trunk/third_party/gflags'].sandbox_vars['ALLOW_COMPILER_WARNINGS'] = True

    if CONFIG['_MSC_VER']:
        # Avoid warnings from third-party code that we can not modify.
        if CONFIG['CLANG_CL']:
            CXXFLAGS += ['-Wno-invalid-source-encoding']
        else:
            CXXFLAGS += ['-validate-charset-']

    if CONFIG['ENABLE_TESTS']:
        TEST_DIRS += [
            'signaling/gtest',
            'trunk/gtest',
        ]

    if CONFIG['FUZZING']:
        if CONFIG['LIBFUZZER']:
            # Add trace-pc coverage for libfuzzer
            CFLAGS += ['-fsanitize-coverage=trace-pc-guard']
            CXXFLAGS += ['-fsanitize-coverage=trace-pc-guard']

        TEST_DIRS += [
            'signaling/fuzztest'
        ]