blob: 39d9e994ba21d5ce807646cbd46e9120cd740a87 [file] [log] [blame]
# Copyright 2019 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.
# TODO: Fix the visibility on some libs.
# gnlint: disable=GnLintVisibilityFlags
import("//common-mk/pkg_config.gni")
import("//common-mk/proto_library.gni")
group("all") {
deps = [
":libtpm_manager",
":tpm_manager_client",
":tpm_manager_test",
":tpm_managerd",
]
if (use.test) {
deps += [ ":tpm_manager_testrunner" ]
}
}
pkg_config("target_default_deps") {
# This is a list of pkg-config dependencies
pkg_deps = [
"libbrillo-${libbase_ver}",
"libchrome-${libbase_ver}",
"openssl",
"protobuf-lite",
]
}
config("target_defaults") {
configs = [ ":target_default_deps" ]
if (use.tpm2) {
defines = [ "USE_TPM2" ]
}
}
# A library for just the protobufs.
proto_library("proto_library_proto") {
# Use -fPIC so this code can be linked into a shared library.
use_pic = true
proto_in_dir = "common"
proto_out_dir = "include/tpm_manager/common"
sources = [
"${proto_in_dir}/tpm_manager.proto",
]
standalone = true
}
static_library("proto_library") {
configs -= [ "//common-mk:use_thin_archive" ]
configs += [
":target_defaults",
"//common-mk:nouse_thin_archive",
# TODO: Use brillo/brillo_export.h instead to export symbols.
"//common-mk:visibility_default",
]
deps = [
":proto_library_proto",
]
proto_in_dir = "common"
sources = [
"${proto_in_dir}/print_tpm_manager_proto.cc",
]
}
# A shared library for clients.
shared_library("libtpm_manager") {
configs += [ ":target_defaults" ]
sources = [
"client/tpm_nvram_dbus_proxy.cc",
"client/tpm_ownership_dbus_proxy.cc",
]
deps = [
":proto_library",
]
}
# A client command line utility.
executable("tpm_manager_client") {
configs += [ ":target_defaults" ]
sources = [
"client/main.cc",
]
deps = [
":libtpm_manager",
":proto_library",
]
}
# A library for server code.
config("server_library_tpm2_config") {
libs = [ "trunks" ]
}
config("server_library_tpm1_config") {
libs = [ "tspi" ]
}
static_library("server_library") {
configs += [ ":target_defaults" ]
sources = [
"server/dbus_service.cc",
"server/local_data_store_impl.cc",
"server/openssl_crypto_util_impl.cc",
"server/tpm_manager_service.cc",
]
if (use.tpm2) {
sources += [
"server/tpm2_initializer_impl.cc",
"server/tpm2_nvram_impl.cc",
"server/tpm2_status_impl.cc",
]
all_dependent_configs = [ ":server_library_tpm2_config" ]
} else {
sources += [
"server/tpm_connection.cc",
"server/tpm_initializer_impl.cc",
"server/tpm_nvram_impl.cc",
"server/tpm_status_impl.cc",
]
all_dependent_configs = [ ":server_library_tpm1_config" ]
}
deps = [
":proto_library",
]
}
# The tpm_manager daemon.
pkg_config("tpm_managerd_config") {
pkg_deps = [ "libminijail" ]
}
executable("tpm_managerd") {
configs += [
":target_defaults",
":tpm_managerd_config",
]
sources = [
"server/main.cc",
]
deps = [
":proto_library",
":server_library",
]
}
# A library for externally useful tpm_manager_testtest code.
static_library("tpm_manager_test") {
configs += [
":target_defaults",
"//common-mk:nouse_thin_archive",
]
configs -= [ "//common-mk:use_thin_archive" ]
sources = [
"common/mock_tpm_nvram_interface.cc",
"common/mock_tpm_ownership_interface.cc",
]
deps = [
":proto_library",
]
}
if (use.test) {
pkg_config("tpm_manager_testrunner_config") {
pkg_deps = [
"libbrillo-test-${libbase_ver}",
"libchrome-test-${libbase_ver}",
]
}
executable("tpm_manager_testrunner") {
configs += [
"//common-mk:test",
":target_defaults",
":tpm_manager_testrunner_config",
]
sources = [
"client/tpm_nvram_dbus_proxy_test.cc",
"client/tpm_ownership_dbus_proxy_test.cc",
# "server/dbus_service_test.cc",
"server/mock_local_data_store.cc",
"server/mock_openssl_crypto_util.cc",
"server/mock_tpm_initializer.cc",
"server/mock_tpm_nvram.cc",
"server/mock_tpm_status.cc",
"server/tpm_manager_service_test.cc",
"tpm_manager_testrunner.cc",
]
if (use.tpm2) {
sources += [
"server/tpm2_initializer_test.cc",
"server/tpm2_nvram_test.cc",
"server/tpm2_status_test.cc",
]
libs = [ "trunks_test" ]
}
deps = [
":libtpm_manager",
":proto_library",
":server_library",
":tpm_manager_test",
]
}
}