# 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")

static_library("perfmon") {
  sources = [
    "buffer_reader.cc",
    "buffer_reader.h",
    "event-registry.cc",
    "event-registry.h",
    "events.cc",
    "events.h",
    "file_reader.cc",
    "file_reader.h",
    "reader.cc",
    "reader.h",
    "records.cc",
    "records.h",
    "types.cc",
    "types.h",
    "writer.h",
  ]

  deps = []

  public_deps = [
    "//src/lib/fxl",
    "//zircon/public/lib/zircon-internal",
  ]

  if (is_fuchsia) {
    sources += [
      "controller.cc",
      "controller.h",
      "device_reader.cc",
      "device_reader.h",
      "properties.cc",
      "properties.h",
      "properties_impl.h",
    ]

    if (current_cpu == "arm64") {
      sources += [ "arm64-events.cc" ]
    }
    if (current_cpu == "x64") {
      sources += [ "intel-events.cc" ]
    }

    deps += [ "//zircon/public/lib/fbl" ]

    public_deps += [ "//zircon/public/lib/zx" ]
  } else {
    sources += [
      "arm64-events.cc",
      "intel-events.cc",
    ]
  }

  if (!is_fuchsia) {
    public_deps += [ "//zircon/system/public" ]
  }
}
