# Copyright 2018 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 = [ ":cryptohome-tpm-live-test" ]
}

pkg_config("cryptohome-tpm-live-test_config") {
  pkg_deps = [
    "libbrillo",
    "libchrome",
    "libmetrics",
    "openssl",
    "protobuf",
  ]
}

executable("cryptohome-tpm-live-test") {
  sources = [
    "../cryptohome-tpm-live-test.cc",
    "../tpm_live_test.cc",
  ]
  configs += [
    ":cryptohome-tpm-live-test_config",
    "//cryptohome/libs:target_defaults",
  ]
  deps = [ "//cryptohome/libs:libcrostpm" ]

  # NOSORT
  pkg_deps = [
    # system_api depends on protobuf (or protobuf-lite). It must appear
    # before protobuf here or the linker flags won't be in the right
    # order.
    "system_api",
    "protobuf",
  ]
}
