| # Copyright 2022 The ChromiumOS Authors | |
| # Use of this source code is governed by a BSD-style license that can be | |
| # found in the LICENSE file. | |
| import("//common-mk/generate-dbus-adaptors.gni") | |
| import("//common-mk/generate-dbus-proxies.gni") | |
| import("//common-mk/pkg_config.gni") | |
| import("//common-mk/proto_library.gni") | |
| group("all") { | |
| deps = [ | |
| ":install_init", | |
| ":install_minijail_conf", | |
| ":install_policy", | |
| ":install_systemd", | |
| ":install_tmpfiles_config", | |
| ":vtpm_client", | |
| ":vtpmd", | |
| ] | |
| if (use.test) { | |
| deps += [ ":vtpm_test" ] | |
| } | |
| } | |
| pkg_config("target_defaults") { | |
| pkg_deps = [ | |
| # This is a list of pkg-config dependencies | |
| "libattestation-client", | |
| "libbrillo", | |
| "libchrome", | |
| "libtpm_manager-client", | |
| "protobuf", | |
| "system_api", | |
| ] | |
| } | |
| proto_library("interface_proto") { | |
| proto_in_dir = "." | |
| proto_out_dir = "include/vtpm" | |
| sources = [ "${proto_in_dir}/vtpm_interface.proto" ] | |
| } | |
| proto_library("database_proto") { | |
| proto_in_dir = "./backends" | |
| proto_out_dir = "include/vtpm/backends" | |
| sources = [ "${proto_in_dir}/database.proto" ] | |
| } | |
| generate_dbus_adaptors("vtpm-adaptors") { | |
| sources = [ "dbus_bindings/org.chromium.Vtpm.xml" ] | |
| dbus_adaptors_out_dir = "include/vtpm/dbus_adaptors" | |
| dbus_service_config = "dbus_bindings/dbus-service-config.json" | |
| } | |
| generate_dbus_proxies("vtpm_proxies") { | |
| sources = [ "dbus_bindings/org.chromium.Vtpm.xml" ] | |
| proxy_output_file = "include/vtpm/dbus_proxies.h" | |
| } | |
| source_set("vtpm_server_library") { | |
| sources = [ | |
| "backends/attested_virtual_endorsement.cc", | |
| "backends/cacheable_blob.cc", | |
| "backends/disk_cache_blob.cc", | |
| "backends/endorsement_password_changer.cc", | |
| "backends/real_static_analyzer.cc", | |
| "backends/real_tpm_handle_manager.cc", | |
| "backends/real_tpm_property_manager.cc", | |
| "backends/scoped_host_key_handle.cc", | |
| "backends/vek.cc", | |
| "backends/vek_cert.cc", | |
| "backends/vek_cert_manager.cc", | |
| "backends/vsrk.cc", | |
| "commands/direct_forward_command.cc", | |
| "commands/forward_command.cc", | |
| "commands/get_capability_command.cc", | |
| "commands/null_command.cc", | |
| "commands/nv_read_command.cc", | |
| "commands/nv_read_public_command.cc", | |
| "commands/self_test_command.cc", | |
| "commands/unsupported_command.cc", | |
| "commands/virtualizer.cc", | |
| "vtpm_service.cc", | |
| ] | |
| configs += [ ":target_defaults" ] | |
| deps = [ | |
| ":database_proto", | |
| ":interface_proto", | |
| ":vtpm-adaptors", | |
| ] | |
| } | |
| config("vtpmd_config") { | |
| libs = [ | |
| "trunks", | |
| "hwsec-foundation", | |
| ] | |
| } | |
| executable("vtpm_client") { | |
| sources = [ | |
| "client/vtpm_client.cc", | |
| "client/vtpm_dbus_proxy.cc", | |
| ] | |
| configs += [ ":target_defaults" ] | |
| install_path = "bin" | |
| libs = [ "trunks" ] | |
| deps = [ | |
| ":interface_proto", | |
| ":vtpm_proxies", | |
| ] | |
| } | |
| executable("vtpmd") { | |
| sources = [ "main.cc" ] | |
| configs += [ | |
| ":target_defaults", | |
| ":vtpmd_config", | |
| ] | |
| libs = [ "hwsec-profiling" ] | |
| install_path = "sbin" | |
| deps = [ | |
| ":vtpm-adaptors", | |
| ":vtpm_server_library", | |
| ] | |
| } | |
| install_config("install_init") { | |
| sources = [ "vtpmd.conf" ] | |
| install_path = "upstart" | |
| } | |
| install_config("install_minijail_conf") { | |
| sources = [ "minijail/vtpm.conf" ] | |
| install_path = "minijail_conf" | |
| } | |
| install_config("install_policy") { | |
| _arch = getenv("ARCH") | |
| sources = [ "vtpmd-seccomp-${_arch}.policy" ] | |
| install_path = "seccomp_policy" | |
| outputs = [ "vtpmd-seccomp.policy" ] | |
| } | |
| install_config("install_systemd") { | |
| sources = [ "org.chromium.Vtpm.conf" ] | |
| install_path = "dbus_system_d" | |
| } | |
| install_config("install_tmpfiles_config") { | |
| sources = [ "tmpfiles.d/vtpm.conf" ] | |
| install_path = "tmpfilesd" | |
| } | |
| if (use.test) { | |
| config("vtpm_test_config") { | |
| libs = [ | |
| "trunks", | |
| "trunks_test", | |
| ] | |
| } | |
| executable("vtpm_test") { | |
| sources = [ | |
| "backends/attested_virtual_endorsement_test.cc", | |
| "backends/cacheable_blob_test.cc", | |
| "backends/disk_cache_blob_test.cc", | |
| "backends/endorsement_password_changer_test.cc", | |
| "backends/real_tpm_handle_manager_test.cc", | |
| "backends/real_tpm_property_manager_test.cc", | |
| "backends/vek_cert_manager_test.cc", | |
| "backends/vek_cert_test.cc", | |
| "backends/vek_test.cc", | |
| "backends/vsrk_test.cc", | |
| "client/vtpm_dbus_proxy.cc", | |
| "client/vtpm_dbus_proxy_test.cc", | |
| "commands/direct_forward_command_test.cc", | |
| "commands/forward_command_test.cc", | |
| "commands/get_capability_command_test.cc", | |
| "commands/nv_read_command_test.cc", | |
| "commands/nv_read_public_command_test.cc", | |
| "commands/self_test_command_test.cc", | |
| "commands/unsupported_command_test.cc", | |
| "commands/virtualizer_test.cc", | |
| "vtpm_service_test.cc", | |
| ] | |
| pkg_deps = [ | |
| "libattestation-client-test", | |
| "libtpm_manager-client-test", | |
| ] | |
| configs += [ | |
| "//common-mk:test", | |
| ":target_defaults", | |
| ":vtpm_test_config", | |
| ] | |
| deps = [ | |
| ":vtpm_server_library", | |
| "//common-mk/testrunner:testrunner", | |
| ] | |
| run_test = true | |
| } | |
| } |