# Copyright 2018 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.

group("module_manifest") {
  public_deps = [
    ":json_xdr",
  ]
}

group("unittests") {
  testonly = true

  deps = [
    ":module_facet_reader_impl_unittest",
    ":module_manifest_xdr_unittest",
  ]
}

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

  deps = [
    "//sdk/fidl/fuchsia.modular",
  ]
}

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

  deps = [
    ":json_xdr",
    ":module_facet_reader",
    "//garnet/public/lib/cmx_facet_parser",
    "//garnet/public/lib/component/cpp",
    "//garnet/public/lib/fsl",
    "//garnet/public/lib/json",
    "//peridot/lib/fidl:json_xdr",
    "//sdk/fidl/fuchsia.modular",
    "//sdk/fidl/fuchsia.sys",
    "//src/lib/pkg_url",
  ]
}

source_set("module_facet_reader_impl_unittest") {
  testonly = true

  sources = [
    "module_facet_reader_impl_unittest.cc",
  ]

  deps = [
    ":module_facet_reader_impl",
    "//garnet/public/lib/fsl",
    "//garnet/public/lib/gtest",
    "//peridot/lib/scoped_tmpfs",
    "//sdk/fidl/fuchsia.modular",
    "//src/lib/fxl",
    "//third_party/googletest:gtest",
  ]
}

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

  deps = [
    "//peridot/lib/fidl:json_xdr",
    "//sdk/fidl/fuchsia.modular",
  ]
}

source_set("module_manifest_xdr_unittest") {
  testonly = true

  sources = [
    "module_manifest_xdr_unittest.cc",
  ]

  deps = [
    ":json_xdr",
    "//peridot/lib/fidl:json_xdr",
    "//sdk/fidl/fuchsia.modular",
    "//third_party/googletest:gtest",
  ]
}
