blob: d9b2df742ac85a14a0a9cbeb0a7f51ec2cf2ecc2 [file] [log] [blame] [edit]
# 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/ebpf_gen.gni")
import("//common-mk/pkg_config.gni")
import("//common-mk/proto_library.gni")
group("all") {
deps = [
":install_freezer_tmpfilesd",
":install_minijail_conf",
":install_rsyslog_conf",
":install_tmpfiles_conf",
":install_upstart_conf",
":secagentd",
]
if (use.test) {
deps += [ ":secagentd_testrunner" ]
}
}
generate_vmlinux("vmlinux_h") {
vmlinux_out_dir = "include/secagentd/vmlinux"
btf_out_dir = "btf"
}
global_use_defines = []
if (use.secagentd_min_core_btf) {
global_use_defines += [ "USE_MIN_CORE_BTF=1" ]
}
generate_ebpf_skeletons("bpf_process") {
sources = [ "bpf/process_bpf.c" ]
bpf_skeleton_out_dir = "include/secagentd/bpf_skeletons"
if (use.secagentd_min_core_btf) {
# Need to match the path in ebuild src_install().
btf_inout_dir = "btf"
} else {
btf_inout_dir = ""
}
defines = global_use_defines
deps = [ ":vmlinux_h" ]
}
generate_ebpf_skeletons("bpf_network") {
sources = [ "bpf/network_bpf.c" ]
bpf_skeleton_out_dir = "include/secagentd/bpf_skeletons"
if (use.secagentd_min_core_btf) {
#Need to match the path in ebuild src_install().
btf_inout_dir = "btf"
} else {
btf_inout_dir = ""
}
defines = global_use_defines
deps = [ ":vmlinux_h" ]
}
pkg_config("target_defaults") {
# NOSORT
pkg_deps = [
"absl",
"libattestation-client",
"libbpf",
"libbrillo",
"libchrome",
"libfeatures",
"libmetrics",
"libmissiveclient",
"libsession_manager-client",
"libshill-client",
"libshill-dbus-client",
"libtpm_manager-client",
"libuser_data_auth-client",
"openssl",
"protobuf",
"system_api",
"vboot_host",
]
defines = global_use_defines
}
static_library("libsecagent") {
sources = [
"agent_plugin.cc",
"authentication_plugin.cc",
"bpf_skeletons.cc",
"common.cc",
"daemon.cc",
"device_user.cc",
"factories.cc",
"message_sender.cc",
"metrics_sender.cc",
"network_plugin.cc",
"platform.cc",
"policies_features_broker.cc",
"process_cache.cc",
"process_plugin.cc",
"secagent.cc",
]
libs = [ "policy" ]
configs += [ ":target_defaults" ]
deps = [
":bpf_network",
":bpf_process",
"proto:security_xdr_events_proto",
"//common-mk/external_dependencies:policy-protos",
]
pkg_deps = [ "re2" ]
}
executable("secagentd") {
sources = [ "main.cc" ]
configs += [ ":target_defaults" ]
deps = [ ":libsecagent" ]
}
# Install Upstart configuration.
install_config("install_upstart_conf") {
sources = [ "init/secagentd.conf" ]
install_path = "upstart"
}
# We invoke systemd-tmpfiles explicitly from the upstart config
# since it needs to run when /sys/fs/cgroup is available.
install_config("install_freezer_tmpfilesd") {
sources = [ "tmpfiles.d/secagentd_freezer.conf" ]
install_path = "tmpfiled_ondemand"
}
# Install Minijail configuration.
install_config("install_minijail_conf") {
sources = [ "minijail/secagentd.conf" ]
install_path = "minijail_conf"
}
# Redirects log messages to /var/log/secagentd.log.
install_config("install_rsyslog_conf") {
sources = [ "rsyslog/rsyslog.secagentd.conf" ]
install_path = "/etc/rsyslog.d"
}
# Creates secagentd.log entry.
install_config("install_tmpfiles_conf") {
sources = [ "tmpfiles.d/secagentd.conf" ]
install_path = "tmpfilesd"
}
if (use.test) {
pkg_config("secagentd_testrunner_config") {
pkg_deps = [
"libattestation-client-test",
"libchrome-test",
"libsession_manager-client-test",
"libtpm_manager-client-test",
"libuser_data_auth-client-test",
]
}
executable("secagentd_testrunner") {
sources = [
"test/agent_plugin_test.cc",
"test/authentication_plugin_test.cc",
"test/batch_sender_test.cc",
"test/bpf_skeleton_factory_tests.cc",
"test/device_user_test.cc",
"test/disable_unaffiliated_secagent_test.cc",
"test/message_sender_test.cc",
"test/metrics_sender_test.cc",
"test/network_bpf_test.cc",
"test/network_plugin_test.cc",
"test/policies_features_broker_test.cc",
"test/process_cache_test.cc",
"test/process_plugin_test.cc",
"test/secagent_test.cc",
]
configs += [
"//common-mk:test",
":secagentd_testrunner_config",
":target_defaults",
]
defines = [ "SECAGENTD_TEST=1" ]
run_test = true
deps = [
":libsecagent",
"proto:security_xdr_events_proto",
"//common-mk/testrunner",
]
pkg_deps = [ "libfake_platform_features" ]
}
}