# 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") {
  configs += [
    ":cryptohome-tpm-live-test_config",
    "//cryptohome/libs:target_defaults",
  ]
  sources = [
    "../cryptohome-tpm-live-test.cc",
    "../tpm_live_test.cc",
  ]
  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",
  ]
}
