# 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 = [
    ":libhwsec-foundation",
    ":tpm_version_client",
  ]
  if (use.test) {
    deps += [ ":hwsec-foundation_testrunner" ]
  }
}

pkg_config("target_defaults") {
  defines = [
    "USE_TPM1=${use.tpm}",
    "USE_TPM2=${use.tpm2}",
    "USE_TPM_DYNAMIC=${use.tpm_dynamic}",
  ]
  pkg_deps = [
    "libbrillo",
    "libchrome",
    "openssl",
    "re2",
  ]
}

shared_library("libhwsec-foundation") {
  sources = [
    "da_reset/da_resetter.cc",
    "syscaller/syscaller_impl.cc",
    "tpm/tpm_version.cc",
    "tpm_error/auth_failure_analysis.cc",
    "tpm_error/handle_auth_failure.cc",
    "tpm_error/tpm_error_data.cc",
    "tpm_error/tpm_error_uma_reporter.cc",
    "utility/crypto.cc",
  ]
  pkg_deps = [
    "libmetrics",
    "libtpm_manager-client",
    "system_api",
  ]
  configs += [ ":target_defaults" ]
}

executable("tpm_version_client") {
  sources = [ "tool/tpm_version_client.cc" ]
  configs += [ ":target_defaults" ]
  deps = [ ":libhwsec-foundation" ]
}

if (use.test) {
  pkg_config("test_config") {
    pkg_deps = [
      "libchrome-test",
      "libmetrics",
      "libtpm_manager-client",
      "libtpm_manager-client-test",
      "system_api",
    ]
  }

  executable("hwsec-foundation_testrunner") {
    sources = [
      "da_reset/da_resetter_test.cc",
      "error/error_test.cc",
      "tpm_error/auth_failure_analysis_test.cc",
      "tpm_error/handle_auth_failure_test.cc",
      "tpm_error/tpm_error_uma_reporter_test.cc",
      "utility/crypto_test.cc",
    ]
    sources += [
      "tpm_error/tpm_error_data.cc",
      "tpm_error/tpm_error_uma_reporter.cc",
    ]
    configs += [
      "//common-mk:test",
      ":target_defaults",
      ":test_config",
    ]
    deps = [
      ":libhwsec-foundation",
      "//common-mk/testrunner",
    ]
  }
}
