# 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",
    "task_tracker.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/default_task_tracker.cc",
    "lib/default_task_tracker.h",
    "lib/environment.cc",
    "lib/logging.cc",
    "lib/scoped_task_tracking.cc",
    "lib/scoped_task_tracking.h",
  ]

  public_deps = [
    ":environment",
  ]

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