# Copyright 2018 The Chromium OS 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("//common-mk/pkg_config.gni")

group("all") {
  deps = [
    ":kmsvnc",
    ":screenshot",
  ]
}

pkg_config("target_defaults") {
  pkg_deps = [
    "egl",
    "gbm",
    "glesv2",
    "libchrome",
    "libdrm",
    "libpng",
  ]
}

static_library("libscreen-capture") {
  sources = [
    "bo_import_capture.cc",
    "crtc.cc",
    "egl_capture.cc",
  ]
  configs += [ ":target_defaults" ]
}

pkg_config("libvncserver") {
  pkg_deps = [ "libvncserver" ]
}

executable("screenshot") {
  sources = [
    "png.cc",
    "screenshot.cc",
  ]
  configs += [ ":target_defaults" ]
  deps = [ ":libscreen-capture" ]
}

executable("kmsvnc") {
  sources = [
    "kmsvnc.cc",
    "uinput.cc",
  ]
  configs += [
    ":target_defaults",
    ":libvncserver",
  ]
  deps = [ ":libscreen-capture" ]
  pkg_deps = [ "libmetrics" ]
}
