# Copyright 2020 The Chromium OS 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("//common-mk/pkg_config.gni")

group("all") {
  deps = [ ":arcvm_boot_notification_server" ]
  if (use.test) {
    deps += [ ":arcvm_boot_notification_server_testrunner" ]
  }
}

pkg_config("arcvm_boot_notification_server_config") {
  pkg_deps = [
    "libbrillo",
    "libchrome",
  ]
}

executable("arcvm_boot_notification_server") {
  output_name = "boot_notification_server"
  sources = [
    "main.cc",
    "util.cc",
  ]
  configs += [ ":arcvm_boot_notification_server_config" ]
}

if (use.test) {
  pkg_config("arcvm_boot_notification_server_testrunner_config") {
    pkg_deps = [
      "libchrome",
      "libchrome-test",
    ]
  }
  executable("arcvm_boot_notification_server_testrunner") {
    output_name = "boot_notification_server_testrunner"
    sources = [
      "util.cc",
      "util_test.cc",
    ]
    configs += [
      "//common-mk:test",
      ":arcvm_boot_notification_server_testrunner_config",
    ]
    deps = [ "//common-mk/testrunner:testrunner" ]
  }
}
