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

source_set("modular_config_constants") {
  sources = [ "modular_config_constants.h" ]
}

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

  public_deps = [
    ":modular_config_constants",

    # TODO(fxbug.dev/57392): Move it back to //third_party once unification completes.
    "//zircon/third_party/rapidjson",
  ]

  deps = [
    ":json_xdr",
    "//garnet/public/lib/json",
    "//sdk/fidl/fuchsia.modular",
    "//sdk/fidl/fuchsia.modular.internal",
    "//sdk/fidl/fuchsia.modular.session",
    "//src/lib/fsl",
    "//src/modular/lib/fidl:clone",
    "//src/modular/lib/fidl:json_xdr",
  ]
}

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

  deps = [
    ":modular_config",
    "//sdk/fidl/fuchsia.modular.session",
    "//sdk/lib/syslog/cpp",
    "//zircon/public/lib/fbl",
  ]
}

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

  public_deps = [ ":modular_config_constants" ]

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

source_set("unittests") {
  testonly = true

  sources = [
    "modular_config_accessor_unittest.cc",
    "modular_config_unittest.cc",
    "modular_config_xdr_unittest.cc",
  ]

  deps = [
    ":json_xdr",
    ":modular_config",
    ":modular_config_accessor",
    ":modular_config_constants",
    "//sdk/fidl/fuchsia.modular.internal",
    "//sdk/fidl/fuchsia.modular.session",
    "//sdk/lib/sys/cpp/testing:integration",
    "//src/modular/lib/pseudo_dir:pseudo_dir_server",
    "//src/modular/lib/pseudo_dir:pseudo_dir_utils",
    "//third_party/googletest:gtest",
    "//zircon/system/ulib/async-loop:async-loop-cpp",
    "//zircon/system/ulib/async-loop:async-loop-default",
  ]
}
