# 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 = [
    ":screenshot",
  ]
}

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

executable("screenshot") {
  configs += [ ":target_defaults" ]
  sources = [
    "capture.cc",
    "crtc.cc",
    "egl_capture.cc",
    "main.cc",
    "png.cc",
  ]
}
