# Copyright 2016 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/host.gni")
import("//build/package.gni")

executable("bin") {
  output_name = "insntrace"

  if (current_cpu == "x64") {
    sources = [
      "control.cc",
      "control.h",
      "main.cc",
      "server.cc",
      "server.h",
    ]
  } else {
    sources = [
      "main.cc",
    ]
  }

  deps = [
    "//garnet/lib/debugger_utils",
    "//garnet/lib/inferior_control",
    "//garnet/public/lib/component/cpp:environment_services",
    "//garnet/public/lib/fsl",
    "//garnet/public/lib/fxl",
    "//garnet/public/lib/svc/cpp",
    "//zircon/public/lib/async-loop-cpp",
    "//zircon/public/lib/zircon-internal",
  ]

  libs = [ "zircon" ]
}

install_host_tools("host_insntrace_print") {
  deps = [
    "print:insntrace_print",
  ]
  outputs = [
    "insntrace_print",
  ]
}

package("insntrace") {
  deps = [
    ":bin",
  ]

  binaries = [
    {
      name = "insntrace"
      shell = true
    }
  ]

  meta = [
    {
      path = rebase_path("meta/insntrace.cmx")
      dest = "insntrace.cmx"
    }
  ]
}
