blob: f8958cfb0fbe1fc50e2e181ef07c967c600fd63c [file] [log] [blame]
# 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/generate-dbus-adaptors.gni")
import("//common-mk/pkg_config.gni")
import("//common-mk/proto_library.gni")
group("all") {
deps = [
":keygen",
":libsession_manager",
":session_manager",
":session_manager-adaptors",
]
if (use.test) {
deps += [ ":session_manager_test" ]
}
if (use.fuzzer) {
deps += [
":login_manager_validator_utils_fuzzer",
":login_manager_validator_utils_policy_desc_fuzzer",
]
}
}
pkg_config("target_defaults") {
# NOSORT
pkg_deps = [
"dbus-1",
"libbrillo",
"libchrome-${libbase_ver}",
"libchromeos-ui-${libbase_ver}",
"libcontainer",
"libcros_config",
"libmetrics",
"libminijail",
"libpasswordprovider",
"nss",
# 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",
"vboot_host",
]
if (use.fuzzer) {
# Link against protobuf for fuzzers so we can use libprotobuf-mutator.
pkg_deps += [ "protobuf" ]
} else {
pkg_deps += [ "protobuf-lite" ]
}
defines = [
"OS_CHROMEOS",
"USE_ARC_ADB_SIDELOADING=${use.arc_adb_sideloading}",
"USE_CHEETS=${use.cheets}",
"USE_NSS_CERTS",
"USE_SYSTEMD=${use.systemd}",
"USE_USER_SESSION_ISOLATION=${use.user_session_isolation}",
]
}
generate_dbus_adaptors("session_manager-adaptors") {
dbus_service_config = "dbus_bindings/dbus-service-config.json"
dbus_adaptors_out_dir = "include/login_manager/dbus_adaptors"
sources = [ "dbus_bindings/org.chromium.SessionManagerInterface.xml" ]
}
static_library("libsession_manager") {
configs += [ ":target_defaults" ]
sources = [
"android_oci_wrapper.cc",
"blob_util.cc",
"browser_job.cc",
"child_exit_dispatcher.cc",
"child_exit_handler.cc",
"child_job.cc",
"chrome_features_service_client.cc",
"chrome_setup.cc",
"container_manager_interface.cc",
"crossystem.cc",
"crossystem_impl.cc",
"cumulative_use_time_metric.cc",
"dbus_util.cc",
"device_local_account_manager.cc",
"device_policy_service.cc",
"file_checker.cc",
"generator_job.cc",
"key_generator.cc",
"liveness_checker_impl.cc",
"login_metrics.cc",
"login_screen_storage.cc",
"nss_util.cc",
"owner_key_loss_mitigator.cc",
"policy_key.cc",
"policy_service.cc",
"policy_store.cc",
"regen_mitigator.cc",
"resilient_policy_store.cc",
"secret_util.cc",
"server_backed_state_key_generator.cc",
"session_manager_impl.cc",
"session_manager_service.cc",
"subprocess.cc",
"system_utils_impl.cc",
"systemd_unit_starter.cc",
"upstart_signal_emitter.cc",
"user_policy_service.cc",
"user_policy_service_factory.cc",
"validator_utils.cc",
"vpd_process_impl.cc",
]
if (use.arc_adb_sideloading) {
sources += [ "arc_sideload_status.cc" ]
} else {
sources += [ "arc_sideload_status_stub.cc" ]
}
libs = [
"bootstat",
"installattributes",
"policy",
]
deps = [
":login_manager-login_screen_storage-protos",
":session_manager-adaptors",
"//common-mk/external_dependencies:install_attributes-proto",
"//common-mk/external_dependencies:policy-protos",
]
}
executable("keygen") {
configs += [ ":target_defaults" ]
sources = [
"child_job.cc",
"keygen.cc",
"keygen_worker.cc",
"nss_util.cc",
"policy_key.cc",
"system_utils_impl.cc",
]
}
executable("session_manager") {
configs += [ ":target_defaults" ]
sources = [ "session_manager_main.cc" ]
libs = [
"rootdev",
"container",
]
deps = [ ":libsession_manager" ]
}
if (use.test) {
pkg_config("test_config") {
pkg_deps = [
"libbrillo-test",
"libchrome-test-${libbase_ver}",
"libcros_config",
]
}
executable("session_manager_test") {
configs += [
"//common-mk:test",
":target_defaults",
":test_config",
]
sources = [
"android_oci_wrapper_test.cc",
"browser_job_test.cc",
"child_exit_dispatcher_test.cc",
"chrome_setup_test.cc",
"cumulative_use_time_metric_test.cc",
"device_local_account_manager_test.cc",
"device_policy_service_test.cc",
"fake_browser_job.cc",
"fake_child_process.cc",
"fake_container_manager.cc",
"fake_crossystem.cc",
"fake_generated_key_handler.cc",
"fake_generator_job.cc",
"fake_secret_util.cc",
"key_generator_test.cc",
"keygen_worker.cc",
"liveness_checker_impl_test.cc",
"login_metrics_test.cc",
"login_screen_storage_test.cc",
"mock_constructors.cc",
"mock_nss_util.cc",
"nss_util_test.cc",
"policy_key_test.cc",
"policy_service_test.cc",
"policy_store_test.cc",
"regen_mitigator_test.cc",
"resilient_policy_store_test.cc",
"server_backed_state_key_generator_test.cc",
"session_manager_impl_test.cc",
"session_manager_process_test.cc",
"subprocess_test.cc",
"system_utils_test.cc",
"user_policy_service_test.cc",
"validator_utils_test.cc",
]
if (use.arc_adb_sideloading) {
sources += [ "arc_sideload_status_test.cc" ]
}
defines = [ "UNIT_TEST" ]
libs = [ "keyutils" ]
deps = [
":libsession_manager",
"//common-mk/testrunner",
]
}
}
proto_library("login_manager-login_screen_storage-protos") {
proto_in_dir = "proto"
proto_out_dir = "include/login_manager/login_screen_storage"
sources = [ "${proto_in_dir}/login_screen_storage_index.proto" ]
standalone = true
}
if (use.fuzzer) {
pkg_config("run_fuzzer_config") {
pkg_deps = [ "libprotobuf-mutator" ]
}
executable("login_manager_validator_utils_policy_desc_fuzzer") {
configs += [
"//common-mk/common_fuzzer:common_fuzzer",
":run_fuzzer_config",
":target_defaults",
]
deps = [ ":libsession_manager" ]
sources = [ "fuzzers/validator_utils_policy_desc_fuzzer.cc" ]
}
executable("login_manager_validator_utils_fuzzer") {
configs += [
"//common-mk/common_fuzzer:common_fuzzer",
":target_defaults",
]
deps = [ ":libsession_manager" ]
sources = [ "fuzzers/validator_utils_fuzzer.cc" ]
}
}