# Copyright 2020 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import("//build/components.gni")
import("//src/sys/core/build/core_shard.gni")

fuchsia_package_with_single_component("soundplayer") {
  manifest = "meta/soundplayer.cml"
  deps = [ ":bin" ]
}

executable("bin") {
  output_name = "soundplayer"

  sources = [ "main.cc" ]

  deps = [
    ":source",
    "//sdk/fidl/fuchsia.media.sounds",
    "//sdk/lib/sys/cpp",
    "//sdk/lib/syslog/cpp",
    "//sdk/lib/syslog/cpp:backend_legacy",
    "//zircon/system/ulib/async-loop:async-loop-cpp",
    "//zircon/system/ulib/async-loop:async-loop-default",
  ]
}

source_set("source") {
  sources = [
    "ogg_demux.cc",
    "ogg_demux.h",
    "opus_decoder.cc",
    "opus_decoder.h",
    "sound.cc",
    "sound.h",
    "sound_player_impl.cc",
    "sound_player_impl.h",
    "wav_reader.cc",
    "wav_reader.h",
  ]

  public_deps = [
    "//sdk/lib/fit",
    "//third_party/ogg",
    "//third_party/opus",
  ]

  deps = [
    "//sdk/fidl/fuchsia.media",
    "//sdk/fidl/fuchsia.media.sounds",
    "//sdk/lib/fit-promise",
    "//sdk/lib/sys/cpp",
    "//sdk/lib/syslog/cpp",
    "//sdk/lib/syslog/cpp:backend_legacy",
    "//src/lib/files",
    "//zircon/system/ulib/fbl",
  ]

  # TODO(fxb/58162): delete the below and fix compiler warnings
  configs += [ "//build/config:Wno-conversion" ]
}

# Obsolete now that we use CFv2. This target is referenced from out-of-tree,
# so the placeholder remains.
group("configs") {
  deps = []
}

group("tests") {
  testonly = true
  deps = [ ":soundplayer-tests" ]
}

executable("soundplayer-tests-bin") {
  testonly = true
  output_name = "soundplayer-tests"

  sources = [
    "test/fake_audio_renderer.cc",
    "test/fake_audio_renderer.h",
    "test/ogg_opus_tests.cc",
    "test/soundplayer_tests.cc",
    "test/wav_reader_tests.cc",
  ]

  deps = [
    ":source",
    "//sdk/fidl/fuchsia.media",
    "//sdk/fidl/fuchsia.media.sounds",
    "//src/lib/fsl",
    "//src/lib/fxl/test:gtest_main",
    "//src/lib/testing/loop_fixture",
    "//third_party/googletest:gtest",
    "//third_party/ogg",
    "//zircon/system/ulib/zx",
  ]
}

resource("ogg_file") {
  sources = [ "//prebuilt/test_data/media/third_party/chromium_media_test_data/bear-opus.ogg" ]
  outputs = [ "data/testfile.ogg" ]
}

resource("wav_file") {
  sources = [ "//prebuilt/test_data/media/third_party/chromium_media_test_data/sfx_s16le.wav" ]
  outputs = [ "data/sfx.wav" ]
}

fuchsia_component("soundplayer-tests-driver") {
  testonly = true

  manifest = "meta/soundplayer-tests.cml"

  deps = [
    ":ogg_file",
    ":soundplayer-tests-bin",
    ":wav_file",
  ]
}

fuchsia_test_package("soundplayer-tests") {
  test_components = [ ":soundplayer-tests-driver" ]
}

core_shard("core_shard") {
  shard_file = "meta/soundplayer.core_shard.cml"
}
