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

##########################################
# Though under //zircon, this build file #
# is meant to be used in the Fuchsia GN  #
# build.                                 #
# See fxb/36139.                         #
##########################################

assert(!defined(zx) || zx != "/",
       "This file can only be used in the Fuchsia GN build.")

import("//build/unification/images/migrated_manifest.gni")

executable("mutex_pi_exerciser") {
  if (is_fuchsia) {
    configs += [ "//build/unification/config:zircon-migrated" ]
  }
  if (is_fuchsia) {
    fdio_config = [ "//build/config/fuchsia:fdio_config" ]
    if (configs + fdio_config - fdio_config != configs) {
      configs -= fdio_config
    }
  }
  sources = [
    "event.cc",
    "main.cc",
    "thread.cc",
    "tracer.cc",
  ]
  deps = [
    "//zircon/public/lib/async-loop-cpp",
    "//zircon/public/lib/async-loop-default",
    "//zircon/public/lib/fbl",
    "//zircon/public/lib/fdio",
    "//zircon/public/lib/sync",
    "//zircon/public/lib/trace",
    "//zircon/public/lib/trace-engine",
    "//zircon/public/lib/trace-provider-with-fdio",
    "//zircon/public/lib/zircon-internal",
    "//zircon/public/lib/zx",
    "//zircon/system/fidl/fuchsia-scheduler:c",
  ]
}

migrated_manifest("mutex_pi_exerciser-manifest") {
  deps = [ ":mutex_pi_exerciser" ]
}
