# Copyright (c) 2016 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.

# TODO(ehmaldonado): Replace by the new paths once the upstream changes land.
# See https://codereview.chromium.org/2526883002/ for valgrind-binaries.gni and
# https://codereview.chromium.org/2517953007/ for python-google.gni and
# valgrind.gni
import("python-google.gni")
import("valgrind-binaries.gni")
import("valgrind.gni")

valgrind_webrtc_dependencies = [
                                 "../tools_webrtc/valgrind/gtest_exclude/modules_tests.gtest-memcheck.txt",
                                 "../tools_webrtc/valgrind/gtest_exclude/modules_unittests.gtest-memcheck.txt",
                                 "../tools_webrtc/valgrind/gtest_exclude/ortc_unittests.gtest-memcheck.txt",
                                 "../tools_webrtc/valgrind/gtest_exclude/peerconnection_unittests.gtest-memcheck.txt",
                                 "../tools_webrtc/valgrind/gtest_exclude/rtc_media_unittests.gtest-memcheck.txt",
                                 "../tools_webrtc/valgrind/gtest_exclude/rtc_media_unittests.gtest-memcheck_mac.txt",
                                 "../tools_webrtc/valgrind/gtest_exclude/rtc_pc_unittests.gtest-memcheck.txt",
                                 "../tools_webrtc/valgrind/gtest_exclude/rtc_unittests.gtest-memcheck.txt",
                                 "../tools_webrtc/valgrind/gtest_exclude/video_engine_tests.gtest-memcheck.txt",
                                 "../tools_webrtc/valgrind/gtest_exclude/webrtc_nonparallel_tests.gtest-memcheck.txt",
                                 "../tools_webrtc/valgrind/memcheck/suppressions.txt",
                                 "../tools_webrtc/valgrind/memcheck/suppressions_mac.txt",
                                 "../tools_webrtc/valgrind/memcheck/suppressions_win32.txt",
                                 "../tools_webrtc/valgrind/chrome_tests.bat",
                                 "../tools_webrtc/valgrind/chrome_tests.py",
                                 "../tools_webrtc/valgrind/chrome_tests.sh",
                                 "../tools_webrtc/valgrind/common.py",
                                 "../tools_webrtc/valgrind/gdb_helper.py",
                                 "../tools_webrtc/valgrind/locate_valgrind.sh",
                                 "../tools_webrtc/valgrind/memcheck_analyze.py",
                                 "../tools_webrtc/valgrind/valgrind.sh",
                                 "../tools_webrtc/valgrind/valgrind_test.py",
                                 "../tools_webrtc/valgrind/webrtc_tests.py",
                                 "../tools_webrtc/valgrind/webrtc_tests.sh",
                               ] + valgrind_dependencies + valgrind_binaries +
                               python_google
