1// 2// Copyright (C) 2017 The Android Open Source Project 3// 4// Licensed under the Apache License, Version 2.0 (the "License"); 5// you may not use this file except in compliance with the License. 6// You may obtain a copy of the License at 7// 8// http://www.apache.org/licenses/LICENSE-2.0 9// 10// Unless required by applicable law or agreed to in writing, software 11// distributed under the License is distributed on an "AS IS" BASIS, 12// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13// See the License for the specific language governing permissions and 14// limitations under the License. 15// 16 17// ========================================================== 18// Build the library for use on the host 19// ========================================================== 20cc_library_host_shared { 21 name: "libstats_proto_host", 22 srcs: [ 23 "src/atoms.proto", 24 "src/atom_field_options.proto", 25 ], 26 27 shared_libs: [ 28 "libplatformprotos", 29 ], 30 31 proto: { 32 type: "full", 33 export_proto_headers: true, 34 include_dirs: [ 35 "external/protobuf/src", 36 ], 37 }, 38 39 export_shared_lib_headers: [ 40 "libplatformprotos", 41 ] 42 43} 44 45cc_defaults { 46 name: "statsd_defaults", 47 aidl: { 48 include_dirs: ["frameworks/base/core/java"], 49 }, 50 51 srcs: [ 52 ":statsd_aidl", 53 "src/active_config_list.proto", 54 "src/statsd_config.proto", 55 "src/uid_data.proto", 56 "src/FieldValue.cpp", 57 "src/hash.cpp", 58 "src/stats_log_util.cpp", 59 "src/anomaly/AlarmMonitor.cpp", 60 "src/anomaly/AlarmTracker.cpp", 61 "src/anomaly/AnomalyTracker.cpp", 62 "src/anomaly/DurationAnomalyTracker.cpp", 63 "src/anomaly/subscriber_util.cpp", 64 "src/condition/CombinationConditionTracker.cpp", 65 "src/condition/condition_util.cpp", 66 "src/condition/SimpleConditionTracker.cpp", 67 "src/condition/ConditionWizard.cpp", 68 "src/condition/StateTracker.cpp", 69 "src/config/ConfigKey.cpp", 70 "src/config/ConfigListener.cpp", 71 "src/config/ConfigManager.cpp", 72 "src/external/GpuStatsPuller.cpp", 73 "src/external/Perfetto.cpp", 74 "src/external/Perfprofd.cpp", 75 "src/external/StatsPuller.cpp", 76 "src/external/StatsCallbackPuller.cpp", 77 "src/external/StatsCompanionServicePuller.cpp", 78 "src/external/SubsystemSleepStatePuller.cpp", 79 "src/external/PowerStatsPuller.cpp", 80 "src/external/ResourceHealthManagerPuller.cpp", 81 "src/external/TrainInfoPuller.cpp", 82 "src/external/StatsPullerManager.cpp", 83 "src/external/puller_util.cpp", 84 "src/logd/LogEvent.cpp", 85 "src/logd/LogEventQueue.cpp", 86 "src/matchers/CombinationLogMatchingTracker.cpp", 87 "src/matchers/EventMatcherWizard.cpp", 88 "src/matchers/matcher_util.cpp", 89 "src/matchers/SimpleLogMatchingTracker.cpp", 90 "src/metrics/MetricProducer.cpp", 91 "src/metrics/EventMetricProducer.cpp", 92 "src/metrics/CountMetricProducer.cpp", 93 "src/metrics/DurationMetricProducer.cpp", 94 "src/metrics/duration_helper/OringDurationTracker.cpp", 95 "src/metrics/duration_helper/MaxDurationTracker.cpp", 96 "src/metrics/ValueMetricProducer.cpp", 97 "src/metrics/GaugeMetricProducer.cpp", 98 "src/metrics/MetricsManager.cpp", 99 "src/metrics/metrics_manager_util.cpp", 100 "src/packages/UidMap.cpp", 101 "src/storage/StorageManager.cpp", 102 "src/StatsLogProcessor.cpp", 103 "src/StatsService.cpp", 104 "src/statscompanion_util.cpp", 105 "src/subscriber/IncidentdReporter.cpp", 106 "src/subscriber/SubscriberReporter.cpp", 107 "src/HashableDimensionKey.cpp", 108 "src/guardrail/StatsdStats.cpp", 109 "src/socket/StatsSocketListener.cpp", 110 "src/shell/ShellSubscriber.cpp", 111 "src/shell/shell_config.proto", 112 113 ":perfprofd_aidl", 114 ], 115 116 local_include_dirs: [ 117 "src", 118 ], 119 120 static_libs: [ 121 "libhealthhalutils", 122 "libplatformprotos", 123 ], 124 125 shared_libs: [ 126 "libbase", 127 "libbinder", 128 "libgraphicsenv", 129 "libincident", 130 "liblog", 131 "libutils", 132 "libservices", 133 "libprotoutil", 134 "libstatslog", 135 "libhardware", 136 "libhardware_legacy", 137 "libhidlbase", 138 "libhidltransport", 139 "libhwbinder", 140 "android.frameworks.stats@1.0", 141 "android.hardware.health@2.0", 142 "android.hardware.power@1.0", 143 "android.hardware.power@1.1", 144 "android.hardware.power.stats@1.0", 145 "libpackagelistparser", 146 "libsysutils", 147 "libcutils", 148 ], 149} 150 151// ========= 152// statsd 153// ========= 154 155cc_binary { 156 name: "statsd", 157 defaults: ["statsd_defaults"], 158 159 srcs: ["src/main.cpp"], 160 161 cflags: [ 162 "-Wall", 163 "-Wextra", 164 "-Werror", 165 "-Wno-unused-parameter", 166 // optimize for size (protobuf glop can get big) 167 "-Os", 168 // "-g", 169 // "-O0", 170 ], 171 172 product_variables: { 173 eng: { 174 // Enable sanitizer ONLY on eng builds 175 //sanitize: { 176 // address: true, 177 //}, 178 }, 179 debuggable: { 180 // Add a flag to enable stats log printing from statsd on debug builds. 181 cflags: ["-DVERY_VERBOSE_PRINTING"], 182 }, 183 }, 184 185 proto: { 186 type: "lite", 187 }, 188 189 shared_libs: ["libgtest_prod"], 190 191 vintf_fragments: ["android.frameworks.stats@1.0-service.xml"], 192 193 init_rc: ["statsd.rc"], 194} 195 196// ============== 197// statsd_test 198// ============== 199 200cc_test { 201 name: "statsd_test", 202 defaults: ["statsd_defaults"], 203 test_suites: ["device-tests"], 204 205 cflags: [ 206 "-Wall", 207 "-Werror", 208 "-Wno-missing-field-initializers", 209 "-Wno-unused-variable", 210 "-Wno-unused-function", 211 "-Wno-unused-parameter", 212 ], 213 214 srcs: [ 215 "src/atom_field_options.proto", 216 "src/atoms.proto", 217 "src/stats_log.proto", 218 "src/shell/shell_data.proto", 219 "tests/AlarmMonitor_test.cpp", 220 "tests/anomaly/AlarmTracker_test.cpp", 221 "tests/anomaly/AnomalyTracker_test.cpp", 222 "tests/ConfigManager_test.cpp", 223 "tests/external/puller_util_test.cpp", 224 "tests/external/GpuStatsPuller_test.cpp", 225 "tests/external/IncidentReportArgs_test.cpp", 226 "tests/external/StatsPuller_test.cpp", 227 "tests/indexed_priority_queue_test.cpp", 228 "tests/LogEntryMatcher_test.cpp", 229 "tests/LogEvent_test.cpp", 230 "tests/log_event/LogEventQueue_test.cpp", 231 "tests/MetricsManager_test.cpp", 232 "tests/StatsLogProcessor_test.cpp", 233 "tests/StatsService_test.cpp", 234 "tests/UidMap_test.cpp", 235 "tests/FieldValue_test.cpp", 236 "tests/condition/CombinationConditionTracker_test.cpp", 237 "tests/condition/SimpleConditionTracker_test.cpp", 238 "tests/condition/StateTracker_test.cpp", 239 "tests/condition/ConditionTimer_test.cpp", 240 "tests/metrics/OringDurationTracker_test.cpp", 241 "tests/metrics/MaxDurationTracker_test.cpp", 242 "tests/metrics/CountMetricProducer_test.cpp", 243 "tests/metrics/DurationMetricProducer_test.cpp", 244 "tests/metrics/EventMetricProducer_test.cpp", 245 "tests/metrics/ValueMetricProducer_test.cpp", 246 "tests/metrics/GaugeMetricProducer_test.cpp", 247 "tests/guardrail/StatsdStats_test.cpp", 248 "tests/metrics/metrics_test_helper.cpp", 249 "tests/statsd_test_util.cpp", 250 "tests/storage/StorageManager_test.cpp", 251 "tests/e2e/WakelockDuration_e2e_test.cpp", 252 "tests/e2e/MetricActivation_e2e_test.cpp", 253 "tests/e2e/MetricConditionLink_e2e_test.cpp", 254 "tests/e2e/Alarm_e2e_test.cpp", 255 "tests/e2e/Attribution_e2e_test.cpp", 256 "tests/e2e/GaugeMetric_e2e_push_test.cpp", 257 "tests/e2e/GaugeMetric_e2e_pull_test.cpp", 258 "tests/e2e/ValueMetric_pull_e2e_test.cpp", 259 "tests/e2e/DimensionInCondition_e2e_combination_AND_cond_test.cpp", 260 "tests/e2e/DimensionInCondition_e2e_combination_OR_cond_test.cpp", 261 "tests/e2e/DimensionInCondition_e2e_simple_cond_test.cpp", 262 "tests/e2e/Anomaly_count_e2e_test.cpp", 263 "tests/e2e/Anomaly_duration_sum_e2e_test.cpp", 264 "tests/e2e/ConfigTtl_e2e_test.cpp", 265 "tests/e2e/PartialBucket_e2e_test.cpp", 266 "tests/e2e/DurationMetric_e2e_test.cpp", 267 "tests/shell/ShellSubscriber_test.cpp", 268 ], 269 270 static_libs: [ 271 "libgmock", 272 "libplatformprotos", 273 ], 274 275 proto: { 276 type: "full", 277 include_dirs: ["external/protobuf/src"], 278 }, 279 280 shared_libs: ["libprotobuf-cpp-full"], 281 282} 283 284//############################# 285// statsd micro benchmark 286//############################# 287 288cc_benchmark { 289 name: "statsd_benchmark", 290 defaults: ["statsd_defaults"], 291 292 srcs: [ 293 "src/atom_field_options.proto", 294 "src/atoms.proto", 295 "src/stats_log.proto", 296 "benchmark/main.cpp", 297 "benchmark/hello_world_benchmark.cpp", 298 "benchmark/log_event_benchmark.cpp", 299 "benchmark/stats_write_benchmark.cpp", 300 "benchmark/filter_value_benchmark.cpp", 301 "benchmark/get_dimensions_for_condition_benchmark.cpp", 302 "benchmark/metric_util.cpp", 303 "benchmark/duration_metric_benchmark.cpp", 304 ], 305 306 proto: { 307 type: "full", 308 include_dirs: ["external/protobuf/src"], 309 }, 310 311 cflags: [ 312 "-Wall", 313 "-Werror", 314 "-Wno-unused-parameter", 315 "-Wno-unused-variable", 316 "-Wno-unused-function", 317 318 // Bug: http://b/29823425 Disable -Wvarargs for Clang update to r271374 319 "-Wno-varargs" 320 ], 321 322 static_libs: [ 323 "libplatformprotos", 324 ], 325 326 shared_libs: [ 327 "libgtest_prod", 328 "libstatslog", 329 "libprotobuf-cpp-full", 330 ], 331} 332 333// ==== java proto device library (for test only) ============================== 334java_library { 335 name: "statsdprotolite", 336 no_framework_libs: true, 337 proto: { 338 type: "lite", 339 include_dirs: ["external/protobuf/src"], 340 }, 341 342 srcs: [ 343 "src/stats_log.proto", 344 "src/statsd_config.proto", 345 "src/atoms.proto", 346 "src/shell/shell_config.proto", 347 "src/shell/shell_data.proto", 348 ], 349 350 static_libs: [ 351 "platformprotoslite", 352 ], 353 // Protos have lots of MissingOverride and similar. 354 errorprone: { 355 javacflags: ["-XepDisableAllChecks"], 356 }, 357} 358 359// Filegroup for statsd config proto definition. 360filegroup { 361 name: "statsd-config-proto-def", 362 srcs: ["src/statsd_config.proto"], 363} 364