# Copyright 2021 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 = [ ":secanomalyd" ]
  if (use.test) {
    deps += [ ":secanomalyd_testrunner" ]
  }
}

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

static_library("libsecanomaly") {
  sources = [
    "daemon.cc",
    "mount_entry.cc",
  ]
  configs += [ ":target_defaults" ]
}

executable("secanomalyd") {
  sources = [ "main.cc" ]
  configs += [ ":target_defaults" ]
  deps = [ ":libsecanomaly" ]
}

if (use.test) {
  pkg_config("secanomalyd_testrunner_config") {
    pkg_deps = [ "libchrome-test" ]
  }

  executable("secanomalyd_testrunner") {
    sources = [ "mount_entry_test.cc" ]
    configs += [
      "//common-mk:test",
      ":secanomalyd_testrunner_config",
      ":target_defaults",
    ]
    deps = [
      ":libsecanomaly",
      "//common-mk/testrunner",
    ]
  }
}
