# Copyright 2016 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/fidl/fidl.gni")
import("//build/package.gni")

# We have a separate package for each example to clarify the dependencies of
# each example, and to make them easier to run ("run fx" instead of
# "run media_examples#meta/fx.cmx" or
# "run fuchsia-pkg://fuchsia.com/media_examples#meta/fx.cmx").

package("fx") {
  deps = [
    "fx",
  ]
  binary = "fx"
  meta = [
    {
      path = rebase_path("fx/meta/fx.cmx")
      dest = "fx.cmx"
    },
  ]
}

package("simple_sine") {
  deps = [
    "simple_sine",
  ]
  binary = "simple_sine"
  meta = [
    {
      path = rebase_path("simple_sine/meta/simple_sine.cmx")
      dest = "simple_sine.cmx"
    },
  ]
}

package("simple_sine_sync") {
  deps = [
    "simple_sine_sync",
  ]
  binary = "simple_sine_sync"
  meta = [
    {
      path = rebase_path("simple_sine_sync/meta/simple_sine_sync.cmx")
      dest = "simple_sine_sync.cmx"
    },
  ]
}

package("tones") {
  deps = [
    "tones",
  ]
  binary = "tones"
  meta = [
    {
      path = rebase_path("tones/meta/tones.cmx")
      dest = "tones.cmx"
    },
  ]
}

package("tts") {
  deps = [
    "tts",
  ]
  binary = "tts"
  meta = [
    {
      path = rebase_path("tts/meta/tts.cmx")
      dest = "tts.cmx"
    },
  ]
}

package("use_media_decoder") {
  deps = [
    "use_media_decoder",
  ]
  binary = "use_media_decoder"
  meta = [
    {
      path = rebase_path("use_media_decoder/meta/use_media_decoder.cmx")
      dest = "use_media_decoder.cmx"
    },
  ]
}

package("wav_recorder") {
  deps = [
    "wav_recorder",
  ]
  binary = "wav_recorder"
  meta = [
    {
      path = rebase_path("wav_recorder/meta/wav_recorder.cmx")
      dest = "wav_recorder.cmx"
    },
  ]
}

#
# Tests that run on CQ
#

package("use_aac_decoder_test") {
  testonly = true

  deps = [
    "//garnet/examples/media/use_media_decoder:use_aac_decoder_test",
  ]

  tests = [
    {
      name = "use_aac_decoder_test"
    },
  ]

  resources = [
    {
      path = rebase_path("use_media_decoder/test/test_audio.adts")
      dest = "media_test_data/test_audio.adts"
    },
  ]

  meta = [
    {
      path = rebase_path("use_media_decoder/meta/use_aac_decoder_test.cmx")
      dest = "use_aac_decoder_test.cmx"
    },
  ]
}

#
# Tests that don't run on CQ yet.
#

package("use_h264_decoder_test") {
  testonly = true

  deps = [
    "//garnet/examples/media/use_media_decoder:use_h264_decoder_test",
  ]

  tests = [
    {
      # Should pass when run manually on VIM2, fails otherwise.
      name = "use_h264_decoder_test"
    },
  ]

  resources = [
    {
      path = rebase_path(
              "../../test_data/media/third_party/chromium_media_test_data/bear.h264")
      dest = "media_test_data/bear.h264"
    },
  ]
}
