# Copyright 2017 The Chromium 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/config/linux/pkg_config.gni")
import("//build/shim_headers.gni")

pkg_config("opus_config") {
  packages = [ "opus" ]
}

shim_headers("opus_shim") {
  root_path = "src/include"
  headers = [
    "opus.h",
    "opus_defines.h",
    "opus_multistream.h",
    "opus_types.h",
  ]
}

source_set("opus") {
  deps = [
    ":opus_shim",
  ]
  public_configs = [ ":opus_config" ]
}

source_set("opus_compare") {
}

source_set("opus_demo") {
}

source_set("test_opus_api") {
}

source_set("test_opus_decode") {
}

source_set("test_opus_encode") {
}

source_set("test_opus_padding") {
}
