# Copyright 2017 The Fuchsia 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/package.gni")
import("//build/testing/environments.gni")
import("//peridot/build/executable_package.gni")
import("//peridot/build/tests_package.gni")

executable_package("module_resolver") {
  meta = [
    {
      path = "meta/module_resolver.cmx"
      dest = "module_resolver.cmx"
    },
  ]

  sources = [
    "module_resolver_main.cc",
  ]

  deps = [
    ":local_module_resolver",
    "//garnet/public/lib/component/cpp",
    "//peridot/lib/module_manifest_source:firebase_source",
    "//peridot/lib/module_manifest_source:module_package_source",
    "//peridot/public/lib/app_driver/cpp:app_driver",
    "//peridot/public/lib/entity/cpp:json",
    "//sdk/fidl/fuchsia.modular",
    "//sdk/fidl/fuchsia.net.oldhttp",
    "//src/lib/fxl",
    "//zircon/public/lib/async-loop-cpp",
  ]
}

tests_package("module_resolver_unittests") {
  deps = [
    ":local_module_resolver_unittest",
  ]
  environments = basic_envs
}

source_set("local_module_resolver") {
  sources = [
    "local_module_resolver.cc",
    "local_module_resolver.h",
  ]

  deps = [
    "//peridot/lib/fidl:clone",
    "//peridot/lib/module_manifest_source",
    "//peridot/public/lib/async/cpp:operation",
    "//peridot/public/lib/context/cpp:context_helper",
    "//peridot/public/lib/entity/cpp:json",
    "//sdk/fidl/fuchsia.modular",
    "//src/lib/fxl",
  ]
}

executable("local_module_resolver_unittest") {
  testonly = true

  sources = [
    "local_module_resolver_unittest.cc",
  ]

  deps = [
    ":local_module_resolver",
    "//garnet/public/lib/fsl",
    "//garnet/public/lib/gtest",
    "//peridot/lib/fidl:clone",
    "//peridot/lib/testing:entity_resolver_fake",
    "//peridot/public/lib/entity/cpp:json",
    "//src/lib/fxl",
    "//third_party/googletest:gtest_main",
  ]
}
