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

import("../../../../webrtc.gni")

if (!build_with_chromium) {
  group("py_quality_assessment") {
    testonly = true
    deps = [
      ":scripts",
      ":unit_tests",
    ]
  }

  copy("scripts") {
    testonly = true
    sources = [
      "README.md",
      "apm_quality_assessment.py",
      "apm_quality_assessment.sh",
      "apm_quality_assessment_boxplot.py",
      "apm_quality_assessment_export.py",
      "apm_quality_assessment_gencfgs.py",
      "apm_quality_assessment_optimize.py",
    ]
    outputs = [ "$root_build_dir/py_quality_assessment/{{source_file_part}}" ]
    deps = [
      ":apm_configs",
      ":lib",
      ":output",
      "../../../../resources/audio_processing/test/py_quality_assessment:probing_signals",
      "../../../../rtc_tools:audioproc_f",
    ]
  }

  copy("apm_configs") {
    testonly = true
    sources = [ "apm_configs/default.json" ]
    visibility = [ ":*" ]  # Only targets in this file can depend on this.
    outputs = [
      "$root_build_dir/py_quality_assessment/apm_configs/{{source_file_part}}",
    ]
  }  # apm_configs

  copy("lib") {
    testonly = true
    sources = [
      "quality_assessment/__init__.py",
      "quality_assessment/annotations.py",
      "quality_assessment/audioproc_wrapper.py",
      "quality_assessment/collect_data.py",
      "quality_assessment/data_access.py",
      "quality_assessment/echo_path_simulation.py",
      "quality_assessment/echo_path_simulation_factory.py",
      "quality_assessment/eval_scores.py",
      "quality_assessment/eval_scores_factory.py",
      "quality_assessment/evaluation.py",
      "quality_assessment/exceptions.py",
      "quality_assessment/export.py",
      "quality_assessment/export_unittest.py",
      "quality_assessment/external_vad.py",
      "quality_assessment/input_mixer.py",
      "quality_assessment/input_signal_creator.py",
      "quality_assessment/results.css",
      "quality_assessment/results.js",
      "quality_assessment/signal_processing.py",
      "quality_assessment/simulation.py",
      "quality_assessment/test_data_generation.py",
      "quality_assessment/test_data_generation_factory.py",
    ]
    visibility = [ ":*" ]  # Only targets in this file can depend on this.
    outputs = [ "$root_build_dir/py_quality_assessment/quality_assessment/{{source_file_part}}" ]
    deps = [ "../../../../resources/audio_processing/test/py_quality_assessment:noise_tracks" ]
  }

  copy("output") {
    testonly = true
    sources = [ "output/README.md" ]
    visibility = [ ":*" ]  # Only targets in this file can depend on this.
    outputs =
        [ "$root_build_dir/py_quality_assessment/output/{{source_file_part}}" ]
  }

  group("unit_tests") {
    testonly = true
    visibility = [ ":*" ]  # Only targets in this file can depend on this.
    deps = [
      ":apm_vad",
      ":fake_polqa",
      ":lib_unit_tests",
      ":scripts_unit_tests",
      ":vad",
    ]
  }

  rtc_executable("fake_polqa") {
    testonly = true
    sources = [ "quality_assessment/fake_polqa.cc" ]
    visibility = [ ":*" ]  # Only targets in this file can depend on this.
    output_dir = "${root_out_dir}/py_quality_assessment/quality_assessment"
    deps = [
      "../../../../rtc_base:checks",
      "//third_party/abseil-cpp/absl/strings",
    ]
  }

  rtc_executable("vad") {
    testonly = true
    sources = [ "quality_assessment/vad.cc" ]
    deps = [
      "../../../../common_audio",
      "../../../../rtc_base:logging",
      "//third_party/abseil-cpp/absl/flags:flag",
      "//third_party/abseil-cpp/absl/flags:parse",
    ]
  }

  rtc_executable("apm_vad") {
    testonly = true
    sources = [ "quality_assessment/apm_vad.cc" ]
    deps = [
      "../..",
      "../../../../common_audio",
      "../../../../rtc_base:logging",
      "../../vad",
      "//third_party/abseil-cpp/absl/flags:flag",
      "//third_party/abseil-cpp/absl/flags:parse",
    ]
  }

  rtc_executable("sound_level") {
    testonly = true
    sources = [ "quality_assessment/sound_level.cc" ]
    deps = [
      "../..",
      "../../../../common_audio",
      "../../../../rtc_base:logging",
      "//third_party/abseil-cpp/absl/flags:flag",
      "//third_party/abseil-cpp/absl/flags:parse",
    ]
  }

  copy("lib_unit_tests") {
    testonly = true
    sources = [
      "quality_assessment/annotations_unittest.py",
      "quality_assessment/echo_path_simulation_unittest.py",
      "quality_assessment/eval_scores_unittest.py",
      "quality_assessment/fake_external_vad.py",
      "quality_assessment/input_mixer_unittest.py",
      "quality_assessment/signal_processing_unittest.py",
      "quality_assessment/simulation_unittest.py",
      "quality_assessment/test_data_generation_unittest.py",
    ]
    visibility = [ ":*" ]  # Only targets in this file can depend on this.
    outputs = [ "$root_build_dir/py_quality_assessment/quality_assessment/{{source_file_part}}" ]
  }

  copy("scripts_unit_tests") {
    testonly = true
    sources = [ "apm_quality_assessment_unittest.py" ]
    visibility = [ ":*" ]  # Only targets in this file can depend on this.
    outputs = [ "$root_build_dir/py_quality_assessment/{{source_file_part}}" ]
  }
}
