# Copyright 2016 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/module_args/mojo.gni")
import("$mojo_sdk_root/mojo/public/mojo_sdk.gni")
import("$mojo_sdk_root/mojo/public/mojo_application.gni")

mojo_sdk_source_set("lib") {
  restrict_external_deps = false
  sources = [
    "image_pipe_consumer_delegate.h",
    "image_pipe_consumer_endpoint.cc",
    "image_pipe_consumer_endpoint.h",
    "image_pipe_endpoint.cc",
    "image_pipe_endpoint.h",
    "image_pipe_producer_endpoint.cc",
    "image_pipe_producer_endpoint.h",
  ]

  deps = [
    "../interfaces",
  ]
}

mojo_native_application("image_pipe_apptest") {
  output_name = "image_pipe_apptests"

  testonly = true

  sources = [
    "image_pipe_apptest.cc",
  ]

  deps = [
    ":lib",
    "$mojo_sdk_root/mojo/public/cpp/application:standalone",
    "$mojo_sdk_root/mojo/public/cpp/application:test_support_standalone",
    "$mojo_sdk_root/mojo/public/cpp/environment",
    "$mojo_sdk_root/mojo/public/cpp/system",
    "$mojo_sdk_root/mojo/public/cpp/utility",
  ]
}
