# 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("config") {
  packages = [ "openh264" ]
}

shim_headers("openh264_shim") {
  prefix = "wels/"
  root_path = "src/codec/api/svc"
  headers = [
    "codec_api.h",
    "codec_app_def.h",
    "codec_def.h",
    "codec_ver.h",
  ]
}

source_set("common") {
  deps = [
    ":openh264_shim",
  ]
  public_configs = [ ":config" ]
}

source_set("processing") {
  deps = [
    ":openh264_shim",
  ]
  public_configs = [ ":config" ]
}

source_set("encoder") {
  deps = [
    ":openh264_shim",
  ]
  public_configs = [ ":config" ]
}
