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

import("//build/config.gni")
import("//build/package.gni")
import("//third_party/cobalt/metrics_registry.gni")

source_set("lib") {
  sources = [
    "high_water.cc",
    "high_water.h",
    "metrics.cc",
    "metrics.h",
    "monitor.cc",
    "monitor.h",
  ]
  public_deps = [
    "//sdk/fidl/fuchsia.memory",
    "//sdk/lib/sys/cpp",
    "//src/developer/memory/metrics",
    "//zircon/public/lib/inspect",
    "//zircon/public/lib/trace",
    "//zircon/system/fidl/fuchsia-cobalt",
  ]
  deps = [
    ":memory_metrics_registry",
    "//src/lib/cobalt/cpp:cobalt_event_builder",
    "//src/lib/fsl",
    "//src/lib/fxl",
    "//zircon/public/lib/async-loop-cpp",
    "//zircon/public/lib/async-loop-default",
    "//zircon/public/lib/trace-provider-with-fdio",
    "//zircon/system/fidl/fuchsia-boot:fuchsia-boot_c",
  ]
}

metrics_registry("memory_metrics_registry") {
  # This must match the ID of our Cobalt project as specified in:
  # third_party/cobalt_config/projects.yaml
  project_id = 3509424520
  namespace = "cobalt_registry"
  generate_cc = true
  generate_binarypb = false
}

executable("bin") {
  output_name = "memory_monitor"
  sources = [ "main.cc" ]
  deps = [
    ":lib",
    "//sdk/lib/sys/cpp",
    "//src/lib/fsl",
    "//src/lib/fxl",
    "//zircon/public/lib/async-default",
    "//zircon/public/lib/async-loop-cpp",
    "//zircon/public/lib/async-loop-default",
    "//zircon/public/lib/trace-provider-with-fdio",
    "//zircon/system/fidl/fuchsia-scheduler",
  ]
}

package("monitor") {
  package_name = "memory_monitor"
  deps = [
    ":bin",
    ":config",
  ]
  binary = "memory_monitor"
  meta = [
    {
      path = rebase_path("meta/memory_monitor.cmx")
      dest = "memory_monitor.cmx"
    },
  ]
}

config_data("config") {
  for_pkg = "sysmgr"
  sources = [ "memory_monitor.config" ]
}
