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

mojo_sdk_source_set("environment") {
  sources = [
    "async_waiter.h",
    "environment.h",
    "logging.h",
  ]

  mojo_sdk_public_deps = [ "mojo/public/c/environment" ]

  mojo_sdk_deps = [
    "mojo/public/cpp/bindings:callback",
    "mojo/public/cpp/system",
  ]
}

mojo_sdk_source_set("standalone") {
  sources = [
    "lib/async_waiter.cc",
    "lib/default_async_waiter.cc",
    "lib/default_async_waiter.h",
    "lib/default_logger.cc",
    "lib/default_logger.h",
    "lib/environment.cc",
    "lib/logging.cc",
  ]

  public_deps = [
    ":environment",
  ]

  mojo_sdk_deps = [
    "mojo/public/c/environment",
    "mojo/public/cpp/system",
    "mojo/public/cpp/utility",
  ]
}

# This is an implementation of Environment, which can be used instead of
# :standalone, that provides only logging and has no external dependencies.
mojo_sdk_source_set("logging_only") {
  sources = [
    "lib/default_logger.cc",
    "lib/default_logger.h",
    "lib/logging.cc",
    "lib/logging_only_environment.cc",
  ]

  public_deps = [
    ":environment",
  ]
}
