# Copyright 2015 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("//chromecast/chromecast.gni")

config("public_config") {
  include_dirs = [ "//chromecast/public" ]
}

cast_source_set("public") {
  sources = [
    "avsettings.h",
    "bluetooth/bluetooth_types.h",
    "cast_egl_platform.h",
    "cast_egl_platform_shlib.h",
    "cast_media_shlib.h",
    "cast_sys_info.h",
    "cast_sys_info_shlib.h",
    "chromecast_export.h",
    "graphics_properties_shlib.h",
    "graphics_types.h",
    "osd_plane.h",
    "osd_plane_shlib.h",
    "osd_surface.h",
    "reboot_shlib.h",
    "task_runner.h",
    "video_plane.h",
    "volume_control.h",
  ]

  public_configs = [ ":public_config" ]
}

if (is_android) {
  import("//build/config/android/rules.gni")

  java_cpp_enum("java_enums") {
    sources = [
      "avsettings.h",
    ]
  }

  java_cpp_enum("java_enums_volume_control") {
    sources = [
      "volume_control.h",
    ]
  }

  android_library("volume_control_enums_java") {
    srcjar_deps = [ ":java_enums_volume_control" ]
    deps = [
      "//third_party/android_deps:android_support_annotations_java",
    ]
  }
}
