# -*- 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/.

# Once we have gn support available in the build system
# (see Bug 1336429) we can use the gn build files directly
# rather than building things here.
include('/media/webrtc/webrtc.mozbuild')

AllowCompilerWarnings()

DEFINES['GTEST_RELATIVE_PATH'] = True
DEFINES['WEBRTC_APM_DEBUG_DUMP'] = True
DEFINES['WEBRTC_INTELLIGIBILITY_ENHANCER'] = 0
DEFINES['WEBRTC_MOZILLA_BUILD'] = 1

# Hit build errors on windows with xutility otherwise
DisableStlWrapping()

LOCAL_INCLUDES += [
    '../',
    '/ipc/chromium/src/',
    '/media/libopus/celt/',
    '/media/libopus/include',
    '/media/libopus/src',
    '/media/libyuv/libyuv/include',
]

USE_LIBS += [
    '/media/webrtc/trunk/third_party/gflags/gflags_gflags/gflags',
    '/testing/gtest/gtest',
    'media_libopus',
    'speex',
    'webrtc',
    'webrtc_common',
    'webrtc_i420',
    'webrtc_lib',
    'webrtc_utility',
    'webrtc_vp8',
    'webrtc_vp9',
    'yuv',
]

if CONFIG['MOZ_SYSTEM_JPEG']:
    OS_LIBS += CONFIG['MOZ_JPEG_LIBS']
else:
    USE_LIBS += ['media_libjpeg']

if CONFIG['MOZ_SYSTEM_LIBVPX']:
    OS_LIBS += CONFIG['MOZ_LIBVPX_LIBS']
else:
    USE_LIBS += ['media_libvpx']

if CONFIG['OS_TARGET'] in ['Darwin', 'Linux', 'WINNT']:
    if CONFIG['OS_TARGET'] == 'Linux':
        DEFINES['USE_X11'] = True
        DEFINES['WEBRTC_BUILD_LIBEVENT'] = True

        LOCAL_INCLUDES += [
            '../third_party/gflags/gen/posix/include',
            '../third_party/gflags/gen/posix/include/private',
        ]

        if CONFIG['MOZ_SYSTEM_LIBEVENT']:
            OS_LIBS += CONFIG['MOZ_LIBEVENT_LIBS']
        else:
            USE_LIBS += [
                'libevent',
            ]

        OS_LIBS += [
            'rt',
            'X11',
            'Xcomposite',
            'Xdamage',
            'Xext',
            'Xfixes',
            'Xrandr',
            'Xrender',
        ]
    elif CONFIG['OS_TARGET'] == 'Darwin':

        LOCAL_INCLUDES += [
            '../third_party/gflags/gen/posix/include',
            '../third_party/gflags/gen/posix/include/private',
        ]

        USE_LIBS += [
            'libevent',
        ]

        OS_LIBS += [
            '-framework AudioToolbox',
            '-framework AudioUnit',
            '-framework Carbon',
            '-framework CoreAudio',
            '-framework OpenGL',
            '-framework AVFoundation',
            '-framework CoreMedia',
            '-framework QuartzCore',
            '-framework Security',
            '-framework SystemConfiguration',
            '-framework IOKit',
            '-F%s' % CONFIG['MACOS_PRIVATE_FRAMEWORKS_DIR'],
            '-framework CoreUI',
        ]

        SOURCES += [
             '../webrtc/modules/desktop_capture/screen_capturer_mac_unittest.cc',
             'OSXRunLoopSingleton.cpp',
        ]
    elif CONFIG['OS_TARGET'] == 'WINNT':
        DEFINES['UNICODE'] = True
        DEFINES['_UNICODE'] = True

        LOCAL_INCLUDES += [
            '../third_party/gflags/gen/win/include',
            '../third_party/gflags/gen/win/include/private',
        ]

        OS_LIBS += [
            "amstrmid",
            "dmoguids",
            'msdmo',
            'shell32',
            'shlwapi',
            'strmiids',
            "wmcodecdspuuid",
        ]

        SOURCES += [
            '../webrtc/modules/desktop_capture/win/cursor_unittest.cc',
        ]

    UNIFIED_SOURCES += [
    # Test failures
    #    '../webrtc/audio/audio_receive_stream_unittest.cc',
        '../webrtc/audio/utility/audio_frame_operations_unittest.cc',
    # Test failures
    #    '../webrtc/call/call_unittest.cc',
        '../webrtc/common_audio/audio_converter_unittest.cc',
        '../webrtc/common_audio/audio_ring_buffer_unittest.cc',
        '../webrtc/common_audio/audio_util_unittest.cc',
        '../webrtc/common_audio/blocker_unittest.cc',
        '../webrtc/common_audio/channel_buffer_unittest.cc',
        '../webrtc/common_audio/fir_filter_unittest.cc',
        '../webrtc/common_audio/lapped_transform_unittest.cc',
        '../webrtc/common_audio/real_fourier_unittest.cc',
        '../webrtc/common_audio/resampler/push_resampler_unittest.cc',
        '../webrtc/common_audio/resampler/push_sinc_resampler_unittest.cc',
        '../webrtc/common_audio/resampler/sinusoidal_linear_chirp_source.cc',
        '../webrtc/common_audio/ring_buffer_unittest.cc',
        '../webrtc/common_audio/signal_processing/real_fft_unittest.cc',
        '../webrtc/common_audio/signal_processing/signal_processing_unittest.cc',
        '../webrtc/common_audio/smoothing_filter_unittest.cc',
        '../webrtc/common_audio/vad/vad_core_unittest.cc',
        '../webrtc/common_audio/vad/vad_filterbank_unittest.cc',
        '../webrtc/common_audio/vad/vad_gmm_unittest.cc',
        '../webrtc/common_audio/vad/vad_sp_unittest.cc',
        '../webrtc/common_audio/vad/vad_unittest.cc',
        '../webrtc/common_audio/wav_file_unittest.cc',
        '../webrtc/common_audio/wav_header_unittest.cc',
        '../webrtc/common_audio/window_generator_unittest.cc',
        '../webrtc/common_video/bitrate_adjuster_unittest.cc',
        '../webrtc/common_video/i420_buffer_pool_unittest.cc',
        '../webrtc/common_video/i420_video_frame_unittest.cc',
    # Needs external resource to run
    #    '../webrtc/common_video/libyuv/libyuv_unittest.cc',
    # Needs external resource to run
    #    '../webrtc/common_video/libyuv/scaler_unittest.cc',
        '../webrtc/modules/audio_coding/acm2/acm_receive_test.cc',
    # We don't use all of the codecs tested here
    #    '../webrtc/modules/audio_coding/acm2/acm_receiver_unittest.cc',
    # Requires external files
    #    '../webrtc/modules/audio_coding/acm2/acm_send_test.cc',
    #    '../webrtc/modules/audio_coding/acm2/audio_coding_module_unittest.cc',
        '../webrtc/modules/audio_coding/acm2/call_statistics_unittest.cc',
    # Stack overflow
        '../webrtc/modules/audio_coding/acm2/codec_manager_unittest.cc',
    # Test failure
    #    '../webrtc/modules/audio_coding/acm2/rent_a_codec_unittest.cc',
        '../webrtc/modules/audio_coding/audio_network_adaptor/audio_network_adaptor_impl_unittest.cc',
        '../webrtc/modules/audio_coding/audio_network_adaptor/bitrate_controller_unittest.cc',
        '../webrtc/modules/audio_coding/audio_network_adaptor/channel_controller_unittest.cc',
        '../webrtc/modules/audio_coding/audio_network_adaptor/fec_controller_unittest.cc',
    # Fails, but we don't build all of the codecs
    #    '../webrtc/modules/audio_coding/codecs/audio_decoder_factory_unittest.cc',
        '../webrtc/modules/audio_coding/codecs/cng/audio_encoder_cng_unittest.cc',
    # Requires external files
    #    '../webrtc/modules/audio_coding/codecs/cng/cng_unittest.cc',
        '../webrtc/modules/audio_coding/codecs/isac/fix/source/filterbanks_unittest.cc',
        '../webrtc/modules/audio_coding/codecs/isac/fix/source/filters_unittest.cc',
        '../webrtc/modules/audio_coding/codecs/isac/fix/source/lpc_masking_model_unittest.cc',
        '../webrtc/modules/audio_coding/codecs/isac/fix/source/transform_unittest.cc',
        '../webrtc/modules/audio_coding/codecs/isac/main/source/audio_encoder_isac_unittest.cc',
    # Test failures
    #    '../webrtc/modules/audio_coding/codecs/isac/main/source/isac_unittest.cc',
        '../webrtc/modules/audio_coding/codecs/legacy_encoded_audio_frame_unittest.cc',
        '../webrtc/modules/audio_coding/codecs/mock/mock_audio_encoder.cc',
    # Requires external files
    #    '../webrtc/modules/audio_coding/codecs/opus/opus_unittest.cc',
    # Requires external files
    #    '../webrtc/modules/audio_coding/codecs/isac/main/source/isac_unittest.cc',
    # Requires external files
    #    '../webrtc/modules/audio_coding/neteq/audio_classifier_unittest.cc',
        '../webrtc/modules/audio_coding/neteq/audio_multi_vector_unittest.cc',
        '../webrtc/modules/audio_coding/neteq/audio_vector_unittest.cc',
        '../webrtc/modules/audio_coding/neteq/background_noise_unittest.cc',
        '../webrtc/modules/audio_coding/neteq/buffer_level_filter_unittest.cc',
        '../webrtc/modules/audio_coding/neteq/comfort_noise_unittest.cc',
        '../webrtc/modules/audio_coding/neteq/decision_logic_unittest.cc',
        '../webrtc/modules/audio_coding/neteq/decoder_database_unittest.cc',
        '../webrtc/modules/audio_coding/neteq/delay_manager_unittest.cc',
        '../webrtc/modules/audio_coding/neteq/delay_peak_detector_unittest.cc',
        '../webrtc/modules/audio_coding/neteq/dsp_helper_unittest.cc',
        '../webrtc/modules/audio_coding/neteq/dtmf_buffer_unittest.cc',
        '../webrtc/modules/audio_coding/neteq/dtmf_tone_generator_unittest.cc',
    # Requires external files
    #    '../webrtc/modules/audio_coding/neteq/expand_unittest.cc',
        '../webrtc/modules/audio_coding/neteq/merge_unittest.cc',
    #    '../webrtc/modules/audio_coding/neteq/nack_unittest.cc',
    # Requires external files
    #    '../webrtc/modules/audio_coding/neteq/neteq_stereo_unittest.cc',
    # Requires external files
    #    '../webrtc/modules/audio_coding/neteq/neteq_unittest.cc',
        '../webrtc/modules/audio_coding/neteq/normal_unittest.cc',
        '../webrtc/modules/audio_coding/neteq/packet_buffer_unittest.cc',
        '../webrtc/modules/audio_coding/neteq/post_decode_vad_unittest.cc',
        '../webrtc/modules/audio_coding/neteq/random_vector_unittest.cc',
        '../webrtc/modules/audio_coding/neteq/sync_buffer_unittest.cc',
    # Requires external files
    #    '../webrtc/modules/audio_coding/neteq/time_stretch_unittest.cc',
    # We don't use all of the codecs tested here
    #    '../webrtc/modules/audio_coding/neteq/timestamp_scaler_unittest.cc',
        '../webrtc/modules/audio_coding/neteq/tools/audio_loop.cc',
        '../webrtc/modules/audio_coding/neteq/tools/audio_sink.cc',
        '../webrtc/modules/audio_coding/neteq/tools/constant_pcm_packet_source.cc',
        '../webrtc/modules/audio_coding/neteq/tools/input_audio_file.cc',
        '../webrtc/modules/audio_coding/neteq/tools/input_audio_file_unittest.cc',
        '../webrtc/modules/audio_coding/neteq/tools/packet.cc',
        '../webrtc/modules/audio_coding/neteq/tools/packet_source.cc',
        '../webrtc/modules/audio_coding/neteq/tools/packet_unittest.cc',
        '../webrtc/modules/audio_coding/neteq/tools/rtp_file_source.cc',
        '../webrtc/modules/audio_coding/neteq/tools/rtp_generator.cc',
        '../webrtc/modules/audio_coding/test/target_delay_unittest.cc',
        '../webrtc/modules/audio_conference_mixer/test/audio_conference_mixer_unittest.cc',
        '../webrtc/modules/audio_device/fine_audio_buffer_unittest.cc',
        '../webrtc/modules/audio_processing/aec/echo_cancellation_unittest.cc',
    # Seg faults
    #    '../webrtc/modules/audio_processing/aec/system_delay_unittest.cc',
        '../webrtc/modules/audio_processing/aec3/block_framer_unittest.cc',
        '../webrtc/modules/audio_processing/aec3/cascaded_biquad_filter_unittest.cc',
        '../webrtc/modules/audio_processing/agc/agc_manager_direct_unittest.cc',
    # Requires external files
    #    '../webrtc/modules/audio_processing/agc/loudness_histogram_unittest.cc',
        '../webrtc/modules/audio_processing/audio_buffer_unittest.cc',
        '../webrtc/modules/audio_processing/audio_processing_impl_unittest.cc',
        '../webrtc/modules/audio_processing/audio_processing_performance_unittest.cc',
    # Requires external files
    #    '../webrtc/modules/audio_processing/audio_processing_unittest.cc',
        '../webrtc/modules/audio_processing/beamformer/array_util_unittest.cc',
        '../webrtc/modules/audio_processing/beamformer/complex_matrix_unittest.cc',
        '../webrtc/modules/audio_processing/beamformer/covariance_matrix_generator_unittest.cc',
        '../webrtc/modules/audio_processing/beamformer/matrix_unittest.cc',
        '../webrtc/modules/audio_processing/config_unittest.cc',
    # Requires external files
    #    '../webrtc/modules/audio_processing/echo_cancellation_bit_exact_unittest.cc',
        '../webrtc/modules/audio_processing/echo_cancellation_impl_unittest.cc',
        '../webrtc/modules/audio_processing/echo_detector/circular_buffer_unittest.cc',
        '../webrtc/modules/audio_processing/echo_detector/mean_variance_estimator_unittest.cc',
        '../webrtc/modules/audio_processing/echo_detector/moving_max_unittest.cc',
        '../webrtc/modules/audio_processing/echo_detector/normalized_covariance_estimator_unittest.cc',
    # disabled in our build
    #   '../webrtc/modules/audio_processing/intelligibility/intelligibility_enhancer_unittest.cc',
    #   '../webrtc/modules/audio_processing/intelligibility/intelligibility_utils_unittest.cc',
        '../webrtc/modules/audio_processing/level_controller/level_controller_unittest.cc',
        '../webrtc/modules/audio_processing/low_cut_filter_unittest.cc',
        '../webrtc/modules/audio_processing/residual_echo_detector_unittest.cc',
        '../webrtc/modules/audio_processing/splitting_filter_unittest.cc',
        '../webrtc/modules/audio_processing/test/audio_buffer_tools.cc',
        '../webrtc/modules/audio_processing/test/bitexactness_tools.cc',
    # Requires external files
    #    '../webrtc/modules/audio_processing/test/debug_dump_test.cc',
        '../webrtc/modules/audio_processing/test/performance_timer.cc',
        '../webrtc/modules/audio_processing/test/simulator_buffers.cc',
        '../webrtc/modules/audio_processing/test/test_utils.cc',
        '../webrtc/modules/audio_processing/transient/dyadic_decimator_unittest.cc',
        '../webrtc/modules/audio_processing/transient/file_utils.cc',
    # Requires external files
    #    '../webrtc/modules/audio_processing/transient/file_utils_unittest.cc',
        '../webrtc/modules/audio_processing/transient/moving_moments_unittest.cc',
    # Requires external files
    #    '../webrtc/modules/audio_processing/transient/transient_detector_unittest.cc',
        '../webrtc/modules/audio_processing/transient/transient_suppressor_unittest.cc',
    # Requires external files
    #    '../webrtc/modules/audio_processing/transient/wpd_tree_unittest.cc',
        '../webrtc/modules/audio_processing/utility/delay_estimator_unittest.cc',
        '../webrtc/modules/audio_processing/vad/gmm_unittest.cc',
    # Requires external files
    #    '../webrtc/modules/audio_processing/vad/pitch_based_vad_unittest.cc',
        '../webrtc/modules/audio_processing/vad/pitch_internal_unittest.cc',
        '../webrtc/modules/audio_processing/vad/pole_zero_filter_unittest.cc',
    # Requires external files
    #    '../webrtc/modules/audio_processing/vad/standalone_vad_unittest.cc',
        '../webrtc/modules/audio_processing/vad/vad_audio_proc_unittest.cc',
        '../webrtc/modules/audio_processing/vad/vad_circular_buffer_unittest.cc',
    # Requires external files
    #    '../webrtc/modules/audio_processing/vad/voice_activity_detector_unittest.cc',
        '../webrtc/modules/bitrate_controller/bitrate_controller_unittest.cc',
        '../webrtc/modules/bitrate_controller/send_side_bandwidth_estimation_unittest.cc',
        '../webrtc/modules/desktop_capture/desktop_and_cursor_composer_unittest.cc',
        '../webrtc/modules/desktop_capture/desktop_frame_rotation_unittest.cc',
        '../webrtc/modules/desktop_capture/desktop_region_unittest.cc',
        '../webrtc/modules/desktop_capture/differ_block_unittest.cc',
        '../webrtc/modules/desktop_capture/mouse_cursor_monitor_unittest.cc',
        '../webrtc/modules/desktop_capture/screen_capturer_unittest.cc',
        '../webrtc/modules/desktop_capture/test_utils.cc',
    # Requires external files
    #    '../webrtc/modules/media_file/media_file_unittest.cc',
        '../webrtc/modules/module_common_types_unittest.cc',
        '../webrtc/modules/pacing/bitrate_prober_unittest.cc',
        '../webrtc/modules/pacing/paced_sender_unittest.cc',
        '../webrtc/modules/pacing/packet_router_unittest.cc',
        '../webrtc/modules/remote_bitrate_estimator/aimd_rate_control_unittest.cc',
        '../webrtc/modules/remote_bitrate_estimator/inter_arrival_unittest.cc',
    # Test fails
    #    '../webrtc/modules/remote_bitrate_estimator/overuse_detector_unittest.cc',
        '../webrtc/modules/remote_bitrate_estimator/remote_bitrate_estimator_abs_send_time_unittest.cc',
        '../webrtc/modules/remote_bitrate_estimator/remote_bitrate_estimator_single_stream_unittest.cc',
        '../webrtc/modules/remote_bitrate_estimator/remote_bitrate_estimator_unittest_helper.cc',
        '../webrtc/modules/remote_bitrate_estimator/remote_estimator_proxy_unittest.cc',
        '../webrtc/modules/remote_bitrate_estimator/send_time_history_unittest.cc',
        '../webrtc/modules/remote_bitrate_estimator/test/bwe.cc',
        '../webrtc/modules/remote_bitrate_estimator/test/bwe_test_framework.cc',
    # Requires external files
    #    '../webrtc/modules/remote_bitrate_estimator/test/bwe_test_framework_unittest.cc',
        '../webrtc/modules/remote_bitrate_estimator/test/estimators/nada.cc',
        '../webrtc/modules/remote_bitrate_estimator/test/estimators/nada_unittest.cc',
        '../webrtc/modules/remote_bitrate_estimator/test/estimators/remb.cc',
        '../webrtc/modules/remote_bitrate_estimator/test/estimators/send_side.cc',
        '../webrtc/modules/remote_bitrate_estimator/test/estimators/tcp.cc',
        '../webrtc/modules/remote_bitrate_estimator/test/metric_recorder.cc',
        '../webrtc/modules/remote_bitrate_estimator/test/metric_recorder_unittest.cc',
        '../webrtc/modules/remote_bitrate_estimator/test/packet_sender.cc',
        '../webrtc/modules/rtp_rtcp/source/byte_io_unittest.cc',
        '../webrtc/modules/rtp_rtcp/source/fec_test_helper.cc',
        '../webrtc/modules/rtp_rtcp/source/flexfec_receiver_unittest.cc',
        '../webrtc/modules/rtp_rtcp/source/nack_rtx_unittest.cc',
        '../webrtc/modules/rtp_rtcp/source/packet_loss_stats_unittest.cc',
        '../webrtc/modules/rtp_rtcp/source/playout_delay_oracle_unittest.cc',
        '../webrtc/modules/rtp_rtcp/source/receive_statistics_unittest.cc',
        '../webrtc/modules/rtp_rtcp/source/remote_ntp_time_estimator_unittest.cc',
        '../webrtc/modules/rtp_rtcp/source/rtcp_packet/app_unittest.cc',
        '../webrtc/modules/rtp_rtcp/source/rtcp_packet/extended_jitter_report_unittest.cc',
        '../webrtc/modules/rtp_rtcp/source/rtcp_packet/transport_feedback_unittest.cc',
        '../webrtc/modules/rtp_rtcp/source/rtcp_packet/voip_metric_unittest.cc',
        '../webrtc/modules/rtp_rtcp/source/rtcp_utility_unittest.cc',
        '../webrtc/modules/rtp_rtcp/source/rtp_format_vp8_test_helper.cc',
        '../webrtc/modules/rtp_rtcp/source/rtp_format_vp8_unittest.cc',
        '../webrtc/modules/rtp_rtcp/source/rtp_format_vp9_unittest.cc',
        '../webrtc/modules/rtp_rtcp/source/rtp_header_extension_unittest.cc',
        '../webrtc/modules/rtp_rtcp/source/rtp_packet_history_unittest.cc',
        '../webrtc/modules/rtp_rtcp/source/rtp_payload_registry_unittest.cc',
        '../webrtc/modules/rtp_rtcp/source/time_util_unittest.cc',
        '../webrtc/modules/rtp_rtcp/source/ulpfec_generator_unittest.cc',
        '../webrtc/modules/rtp_rtcp/source/vp8_partition_aggregator_unittest.cc',
        '../webrtc/modules/utility/source/process_thread_impl_unittest.cc',
        '../webrtc/modules/video_capture/test/video_capture_unittest.cc',
        '../webrtc/modules/video_coding/codecs/test/packet_manipulator.cc',
        '../webrtc/modules/video_coding/codecs/test/predictive_packet_manipulator.cc',
        '../webrtc/modules/video_coding/codecs/test/stats.cc',
        '../webrtc/modules/video_coding/codecs/test/videoprocessor.cc',
        '../webrtc/modules/video_coding/codecs/vp8/default_temporal_layers_unittest.cc',
        '../webrtc/modules/video_coding/codecs/vp8/reference_picture_selection_unittest.cc',
        '../webrtc/modules/video_coding/codecs/vp8/screenshare_layers_unittest.cc',
        '../webrtc/modules/video_coding/codecs/vp8/simulcast_encoder_adapter_unittest.cc',
        '../webrtc/modules/video_coding/codecs/vp8/simulcast_unittest.cc',
    # Test failures
    #    '../webrtc/modules/video_coding/codecs/vp8/test/vp8_impl_unittest.cc',
        '../webrtc/modules/video_coding/codecs/vp9/vp9_screenshare_layers_unittest.cc',
        '../webrtc/modules/video_coding/decoding_state_unittest.cc',
        '../webrtc/modules/video_coding/frame_buffer2_unittest.cc',
        '../webrtc/modules/video_coding/h264_sprop_parameter_sets_unittest.cc',
        '../webrtc/modules/video_coding/h264_sps_pps_tracker_unittest.cc',
        '../webrtc/modules/video_coding/histogram_unittest.cc',
    # Segfaults
    #    '../webrtc/modules/video_coding/jitter_buffer_unittest.cc',
        '../webrtc/modules/video_coding/nack_module_unittest.cc',
        '../webrtc/modules/video_coding/protection_bitrate_calculator_unittest.cc',
        '../webrtc/modules/video_coding/receiver_unittest.cc',
        '../webrtc/modules/video_coding/rtp_frame_reference_finder_unittest.cc',
        '../webrtc/modules/video_coding/sequence_number_util_unittest.cc',
        '../webrtc/modules/video_coding/session_info_unittest.cc',
        '../webrtc/modules/video_coding/test/stream_generator.cc',
        '../webrtc/modules/video_coding/timing_unittest.cc',
        '../webrtc/modules/video_coding/utility/default_video_bitrate_allocator_unittest.cc',
        '../webrtc/modules/video_coding/utility/frame_dropper_unittest.cc',
        '../webrtc/modules/video_coding/utility/moving_average_unittest.cc',
        '../webrtc/modules/video_coding/utility/quality_scaler_unittest.cc',
        '../webrtc/modules/video_coding/utility/simulcast_rate_allocator_unittest.cc',
        '../webrtc/modules/video_coding/video_coding_robustness_unittest.cc',
        '../webrtc/modules/video_coding/video_packet_buffer_unittest.cc',
        '../webrtc/modules/video_coding/video_receiver_unittest.cc',
    # Requires external files
    #    '../webrtc/modules/video_coding/video_sender_unittest.cc',
        '../webrtc/system_wrappers/source/aligned_array_unittest.cc',
        '../webrtc/system_wrappers/source/aligned_malloc_unittest.cc',
        '../webrtc/system_wrappers/source/clock_unittest.cc',
        '../webrtc/system_wrappers/source/condition_variable_unittest.cc',
        '../webrtc/system_wrappers/source/critical_section_unittest.cc',
    # Test failures
       '../webrtc/system_wrappers/source/logging_unittest.cc',
        '../webrtc/system_wrappers/source/ntp_time_unittest.cc',
        '../webrtc/system_wrappers/source/rtp_to_ntp_estimator_unittest.cc',
        '../webrtc/system_wrappers/source/stringize_macros_unittest.cc',
        '../webrtc/test/encoder_settings.cc',
        '../webrtc/test/fake_decoder.cc',
        '../webrtc/test/fake_encoder.cc',
        '../webrtc/test/fake_texture_frame.cc',
        '../webrtc/test/field_trial.cc',
        '../webrtc/test/frame_generator.cc',
        '../webrtc/test/frame_generator_capturer.cc',
        '../webrtc/test/frame_generator_unittest.cc',
        '../webrtc/test/frame_utils.cc',
        '../webrtc/test/rtcp_packet_parser.cc',
        '../webrtc/test/rtp_file_reader.cc',
    # Requires external files
    #    '../webrtc/test/rtp_file_reader_unittest.cc',
        '../webrtc/test/rtp_file_writer_unittest.cc',
        '../webrtc/test/test_main.cc',
        '../webrtc/test/testsupport/always_passing_unittest.cc',
        '../webrtc/test/testsupport/fileutils.cc',
        '../webrtc/test/testsupport/frame_reader.cc',
        '../webrtc/test/testsupport/frame_reader_unittest.cc',
        '../webrtc/test/testsupport/frame_writer.cc',
        '../webrtc/test/testsupport/metrics/video_metrics.cc',
    # Requires external files
    #    '../webrtc/test/testsupport/metrics/video_metrics_unittest.cc',
        '../webrtc/test/testsupport/packet_reader.cc',
        '../webrtc/test/testsupport/packet_reader_unittest.cc',
        '../webrtc/test/testsupport/perf_test.cc',
        '../webrtc/test/testsupport/trace_to_stderr.cc',
        '../webrtc/test/vcm_capturer.cc',
    #    '../webrtc/test/video_capturer.cc',
        '../webrtc/video/call_stats_unittest.cc',
    #    '../webrtc/video/encoder_state_feedback_unittest.cc',
        '../webrtc/video/payload_router_unittest.cc',
        '../webrtc/video/quality_threshold_unittest.cc',
        '../webrtc/video/receive_statistics_proxy_unittest.cc',
        '../webrtc/video/report_block_stats_unittest.cc',
        '../webrtc/video/send_delay_stats_unittest.cc',
        '../webrtc/video/send_statistics_proxy_unittest.cc',
        '../webrtc/video/stats_counter_unittest.cc',
        '../webrtc/video/stream_synchronization_unittest.cc',
    # SIGABRT, stack smashing detected
    #    '../webrtc/video/vie_encoder_unittest.cc',
        '../webrtc/video/vie_remb_unittest.cc',
        '../webrtc/voice_engine/channel_unittest.cc',
    # Test failures
    #    '../webrtc/voice_engine/file_player_unittests.cc',
        '../webrtc/voice_engine/transmit_mixer_unittest.cc',
        '../webrtc/voice_engine/utility_unittest.cc',
        '../webrtc/voice_engine/voe_audio_processing_unittest.cc',
    # Fails VoEBaseTest.GetVersion!
    #    '../webrtc/voice_engine/voe_base_unittest.cc',
        '../webrtc/voice_engine/voe_codec_unittest.cc',
        '../webrtc/voice_engine/voe_network_unittest.cc',
        'FakeIPC.cpp',
        'FakeNsTraceRefcnt.cpp',
    ]

    # Unable to use unified build due to multiply defined symbols
    SOURCES += [
    # These both fail when creating AudioState, looks like a bad mix of mocked and real classes.
    #    '../webrtc/audio/audio_send_stream_unittest.cc',
    #    '../webrtc/audio/audio_state_unittest.cc',
        '../webrtc/common_audio/sparse_fir_filter_unittest.cc',
        '../webrtc/modules/audio_coding/audio_network_adaptor/controller_manager_unittest.cc',
        '../webrtc/modules/audio_coding/audio_network_adaptor/dtx_controller_unittest.cc',
        '../webrtc/modules/audio_coding/audio_network_adaptor/frame_length_controller_unittest.cc',
        '../webrtc/modules/audio_processing/aec3/block_processor_unittest.cc',
        '../webrtc/modules/audio_processing/aec3/echo_canceller3_unittest.cc',
        '../webrtc/modules/audio_processing/aec3/frame_blocker_unittest.cc',
    # Requires external files
    #    '../webrtc/modules/audio_processing/beamformer/nonlinear_beamformer_unittest.cc',
    # Segfaults
    #    '../webrtc/modules/audio_processing/echo_control_mobile_unittest.cc',
    # Disabled in our build
    #   '../webrtc/modules/audio_processing/intelligibility/intelligibility_enhancer_unittest.cc',
    # Requires external files
    #    '../webrtc/modules/audio_processing/level_estimator_unittest.cc',
    # Requires external files
    #    '../webrtc/modules/audio_processing/noise_suppression_unittest.cc',
        '../webrtc/modules/audio_processing/residual_echo_detector_complexity_unittest.cc',
        '../webrtc/modules/audio_processing/transient/wpd_node_unittest.cc',
        '../webrtc/modules/congestion_controller/congestion_controller_unittest.cc',
        '../webrtc/modules/congestion_controller/delay_based_bwe_unittest.cc',
        '../webrtc/modules/congestion_controller/delay_based_bwe_unittest_helper.cc',
        '../webrtc/modules/congestion_controller/median_slope_estimator_unittest.cc',
        '../webrtc/modules/congestion_controller/probe_bitrate_estimator_unittest.cc',
        '../webrtc/modules/congestion_controller/probe_controller_unittest.cc',
        '../webrtc/modules/congestion_controller/probing_interval_estimator_unittest.cc',
        '../webrtc/modules/congestion_controller/transport_feedback_adapter_unittest.cc',
        '../webrtc/modules/congestion_controller/trendline_estimator_unittest.cc',
        '../webrtc/modules/desktop_capture/mock_desktop_capturer_callback.cc',
        '../webrtc/modules/desktop_capture/screen_capturer_helper_unittest.cc',
        '../webrtc/modules/desktop_capture/window_capturer_unittest.cc',
        '../webrtc/modules/remote_bitrate_estimator/test/bwe_unittest.cc',
        '../webrtc/modules/rtp_rtcp/source/flexfec_header_reader_writer_unittest.cc',
        '../webrtc/modules/rtp_rtcp/source/flexfec_sender_unittest.cc',
        '../webrtc/modules/rtp_rtcp/source/rtcp_packet/bye_unittest.cc',
        '../webrtc/modules/rtp_rtcp/source/rtcp_packet/common_header_unittest.cc',
        '../webrtc/modules/rtp_rtcp/source/rtcp_packet/compound_packet_unittest.cc',
        '../webrtc/modules/rtp_rtcp/source/rtcp_packet/dlrr_unittest.cc',
        '../webrtc/modules/rtp_rtcp/source/rtcp_packet/extended_reports_unittest.cc',
        '../webrtc/modules/rtp_rtcp/source/rtcp_packet/fir_unittest.cc',
        '../webrtc/modules/rtp_rtcp/source/rtcp_packet/nack_unittest.cc',
        '../webrtc/modules/rtp_rtcp/source/rtcp_packet/pli_unittest.cc',
        '../webrtc/modules/rtp_rtcp/source/rtcp_packet/rapid_resync_request_unittest.cc',
        '../webrtc/modules/rtp_rtcp/source/rtcp_packet/receiver_report_unittest.cc',
        '../webrtc/modules/rtp_rtcp/source/rtcp_packet/remb_unittest.cc',
        '../webrtc/modules/rtp_rtcp/source/rtcp_packet/report_block_unittest.cc',
        '../webrtc/modules/rtp_rtcp/source/rtcp_packet/rpsi_unittest.cc',
        '../webrtc/modules/rtp_rtcp/source/rtcp_packet/rrtr_unittest.cc',
        '../webrtc/modules/rtp_rtcp/source/rtcp_packet/sdes_unittest.cc',
        '../webrtc/modules/rtp_rtcp/source/rtcp_packet/sender_report_unittest.cc',
        '../webrtc/modules/rtp_rtcp/source/rtcp_packet/sli_unittest.cc',
        '../webrtc/modules/rtp_rtcp/source/rtcp_packet/target_bitrate_unittest.cc',
        '../webrtc/modules/rtp_rtcp/source/rtcp_packet/tmmbn_unittest.cc',
        '../webrtc/modules/rtp_rtcp/source/rtcp_packet/tmmbr_unittest.cc',
        '../webrtc/modules/rtp_rtcp/source/rtcp_packet/transport_feedback_unittest.cc',
        '../webrtc/modules/rtp_rtcp/source/rtcp_packet_unittest.cc',
    # Test failures
    #   '../webrtc/modules/rtp_rtcp/source/rtcp_receiver_unittest.cc',
        '../webrtc/modules/rtp_rtcp/source/rtcp_sender_unittest.cc',
        '../webrtc/modules/rtp_rtcp/source/rtp_fec_unittest.cc',
        '../webrtc/modules/rtp_rtcp/source/rtp_format_h264_unittest.cc',
        '../webrtc/modules/rtp_rtcp/source/rtp_packet_unittest.cc',
        '../webrtc/modules/rtp_rtcp/source/rtp_rtcp_impl_unittest.cc',
    # Test failures
    #    '../webrtc/modules/rtp_rtcp/source/rtp_sender_unittest.cc',
        '../webrtc/modules/rtp_rtcp/source/rtp_utility_unittest.cc',
        '../webrtc/modules/rtp_rtcp/source/ulpfec_header_reader_writer_unittest.cc',
        '../webrtc/modules/rtp_rtcp/source/ulpfec_receiver_unittest.cc',
        '../webrtc/modules/video_coding/codecs/test/packet_manipulator_unittest.cc',
        '../webrtc/modules/video_coding/codecs/test/stats_unittest.cc',
        '../webrtc/modules/video_coding/codecs/test/videoprocessor_unittest.cc',
        '../webrtc/modules/video_coding/video_codec_initializer_unittest.cc',
        '../webrtc/test/rtp_file_writer.cc',
        '../webrtc/test/testsupport/frame_writer_unittest.cc',
        '../webrtc/video/overuse_frame_detector_unittest.cc',
        '../webrtc/voice_engine/voe_codec_unittest.cc',
        '../webrtc/voice_engine/voice_engine_fixture.cc',
    ]

    if CONFIG['CC_TYPE'] in ('clang', 'gcc'):
        CXXFLAGS += [
            '-Wno-inconsistent-missing-override',
            '-Wno-overloaded-virtual',
        ]
        if CONFIG['CC_TYPE'] == 'clang':
            CXXFLAGS += ['-Wno-comma']

    if CONFIG['CC_TYPE'] in ('msvc', 'clang-cl'):
        # This is intended as a temporary workaround to enable warning free building
        # with VS2015.
        # reinterpret_cast': conversion from 'DWORD' to 'HANDLE' of greater size
        CXXFLAGS += ['-wd4312']

    GeckoProgram('webrtc-gtest', linkage=None)
