# 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-test-tool",
    ":cryptohome-tpm-live-test",
  ]
}

pkg_config("cryptohome-test-tool_config") {
  pkg_deps = [
    "libbrillo",
    "libchrome",
  ]
}

executable("cryptohome-test-tool") {
  sources = [
    "../cryptohome-test-tool.cc",
    "../cryptorecovery/fake_recovery_mediator_crypto.cc",
    "../cryptorecovery/recovery_crypto_hsm_cbor_serialization.cc",
  ]
  configs += [
    ":cryptohome-test-tool_config",
    "//cryptohome/libs:target_defaults",
  ]
  libs = [ "cbor" ]
  deps = [ "//cryptohome/libs:libcrosplatform" ]
}

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",
  ]
}
