blob: 5bfa02f759fd925f5fc609ea6604c5d6b9267b16 [file] [log] [blame]
# Copyright 2019 The ChromiumOS Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
# TODO(crbug.com/932128): Fix the visibility on the shared lib.
# gnlint: disable=GnLintVisibilityFlags
import("//common-mk/pkg_config.gni")
import("//common-mk/proto_library.gni")
group("all") {
deps = [
":install_minijail_conf",
":libmetrics",
":libmetrics_daemon",
":libupload_service",
":metrics_client",
"//metrics/structured:libstructuredmetrics",
"//metrics/structured:libstructuredmetrics_install_headers",
"//metrics/structured:libstructuredmetrics_pkg_config",
"//metrics/structured:update_reset_counter",
]
if (use.passive_metrics) {
deps += [ ":metrics_daemon" ]
}
if (use.test) {
deps += [
":cumulative_metrics_test",
":debugd_reader_test",
":metrics_library_test",
":mmc_error_parser_test",
":persistent_integer_test",
":timer_test",
":upload_service_test",
"//metrics/structured:structured_metrics_test",
]
}
if (use.passive_metrics && use.test) {
deps += [ ":metrics_daemon_test" ]
}
if (use.fuzzer) {
deps += [
":metrics_library_consent_id_fuzzer",
":metrics_serialization_utils_fuzzer",
]
}
}
install_config("install_minijail_conf") {
sources = [ "minijail/metrics_daemon.conf" ]
install_path = "minijail_conf"
}
shared_library("libmetrics") {
pkg_deps = [
"libbrillo",
"libchrome",
"libsession_manager-client",
]
sources = [
"c_metrics_library.cc",
"cumulative_metrics.cc",
"metrics_library.cc",
"metrics_writer.cc",
"persistent_integer.cc",
"serialization/metric_sample.cc",
"serialization/serialization_utils.cc",
"timer.cc",
]
configs += [ "//common-mk:visibility_default" ]
cflags_cc = [ "-fno-exceptions" ]
libs = [ "policy" ]
include_dirs = [ "." ]
if (use.metrics_uploader) {
defines = [ "USE_METRICS_UPLOADER=1" ]
}
}
source_set("metrics_test_support") {
sources = [ "fake_metrics_library.cc" ]
configs += [ ":target_defaults" ]
if (use.metrics_uploader) {
defines = [ "USE_METRICS_UPLOADER=1" ]
}
include_dirs = [ "." ]
public_deps = [ ":libmetrics" ]
}
pkg_config("target_defaults_pkg_deps") {
pkg_deps = [
"dbus-1",
"libbrillo",
"libchrome",
"libdebugd-client",
"re2",
]
}
config("target_defaults") {
cflags_cc = [ "-fno-exceptions" ]
configs = [ ":target_defaults_pkg_deps" ]
}
static_library("libmetrics_daemon") {
sources = [
"debugd_reader.cc",
"metrics_daemon.cc",
"metrics_daemon_main.cc",
"mmc_error_parser.cc",
"vmlog_writer.cc",
]
configs += [ ":target_defaults" ]
libs = [
"rootdev",
"system_api-power_manager-protos",
]
include_dirs = [ "." ]
deps = [
":libmetrics",
":libupload_service",
":metrics_proto",
]
}
executable("metrics_client") {
sources = [ "metrics_client.cc" ]
configs += [ ":target_defaults" ]
deps = [ ":libmetrics" ]
}
static_library("libupload_service") {
sources = [
"uploader/metrics_hashes.cc",
"uploader/metrics_log.cc",
"uploader/metrics_log_base.cc",
"uploader/sender_http.cc",
"uploader/system_profile_cache.cc",
"uploader/upload_service.cc",
]
configs += [ ":target_defaults" ]
include_dirs = [ "." ]
deps = [
":libmetrics",
":metrics_proto",
]
all_dependent_pkg_deps = [ "vboot_host" ]
if (use.fuzzer) {
all_dependent_pkg_deps += [ "protobuf" ]
} else {
all_dependent_pkg_deps += [ "protobuf-lite" ]
}
}
proto_library("metrics_proto") {
proto_in_dir = "uploader/proto"
proto_out_dir = "include/metrics/uploader/proto"
sources = [
"${proto_in_dir}/chrome_user_metrics_extension.proto",
"${proto_in_dir}/histogram_event.proto",
"${proto_in_dir}/system_profile.proto",
"${proto_in_dir}/user_action_event.proto",
]
}
if (use.passive_metrics) {
executable("metrics_daemon") {
configs += [ ":target_defaults" ]
deps = [ ":libmetrics_daemon" ]
}
}
if (use.test) {
executable("persistent_integer_test") {
sources = [
"persistent_integer.cc",
"persistent_integer_test.cc",
]
configs += [
"//common-mk:test",
":target_defaults",
]
deps = [ "//common-mk/testrunner:testrunner" ]
}
executable("cumulative_metrics_test") {
sources = [
"cumulative_metrics.cc",
"cumulative_metrics_test.cc",
"persistent_integer.cc",
]
configs += [
"//common-mk:test",
":target_defaults",
]
deps = [ "//common-mk/testrunner:testrunner" ]
}
executable("debugd_reader_test") {
sources = [
"debugd_reader.cc",
"debugd_reader_test.cc",
]
configs += [
"//common-mk:test",
":target_defaults",
]
deps = [ "//common-mk/testrunner:testrunner" ]
}
executable("hold_lock_file") {
sources = [ "serialization/hold_lock_file.cc" ]
configs += [
"//common-mk:test",
":target_defaults",
]
}
executable("metrics_library_test") {
sources = [
"fake_metrics_library_test.cc",
"metrics_library_test.cc",
"metrics_writer_test.cc",
"serialization/serialization_utils_test.cc",
]
configs += [
"//common-mk:test",
":target_defaults",
]
libs = [ "policy" ]
deps = [
":hold_lock_file",
":libmetrics",
":metrics_test_support",
"//common-mk/testrunner:testrunner",
]
}
executable("mmc_error_parser_test") {
sources = [
"debugd_reader.cc",
"mmc_error_parser.cc",
"mmc_error_parser_test.cc",
"persistent_integer.cc",
]
configs += [
"//common-mk:test",
":target_defaults",
]
deps = [ "//common-mk/testrunner:testrunner" ]
}
executable("timer_test") {
sources = [
"timer.cc",
"timer_test.cc",
]
configs += [
"//common-mk:test",
":target_defaults",
]
deps = [ "//common-mk/testrunner:testrunner" ]
}
executable("upload_service_test") {
sources = [
"persistent_integer.cc",
"uploader/metrics_hashes_test.cc",
"uploader/metrics_log_base_test.cc",
"uploader/mock/sender_mock.cc",
"uploader/upload_service_test.cc",
]
configs += [
"//common-mk:test",
":target_defaults",
]
include_dirs = [ "." ]
deps = [
":libupload_service",
"//common-mk/testrunner:testrunner",
]
}
}
if (use.passive_metrics && use.test) {
executable("metrics_daemon_test") {
sources = [
"metrics_daemon_test.cc",
"vmlog_writer_test.cc",
]
configs += [
"//common-mk:test",
":target_defaults",
]
include_dirs = [ "." ]
deps = [ ":libmetrics_daemon" ]
}
}
if (use.fuzzer) {
executable("metrics_library_consent_id_fuzzer") {
sources = [ "metrics_library_consent_id_fuzzer.cc" ]
configs += [
"//common-mk/common_fuzzer:common_fuzzer",
":target_defaults",
]
deps = [ ":libmetrics" ]
}
executable("metrics_serialization_utils_fuzzer") {
sources = [ "serialization/metrics_serialization_utils_fuzzer.cc" ]
configs += [
"//common-mk/common_fuzzer:common_fuzzer",
":target_defaults",
]
deps = [ ":libmetrics" ]
}
}