# 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") {
  configs += [ ":target_defaults" ]
  sources = [
    "png.cc",
    "screenshot.cc",
  ]
  deps = [ ":libscreen-capture" ]
}

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