1# Copyright (C) 2017 The Android Open Source Project 2# 3# Licensed under the Apache License, Version 2.0 (the "License"); 4# you may not use this file except in compliance with the License. 5# You may obtain a copy of the License at 6# 7# http://www.apache.org/licenses/LICENSE-2.0 8# 9# Unless required by applicable law or agreed to in writing, software 10# distributed under the License is distributed on an "AS IS" BASIS, 11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12# See the License for the specific language governing permissions and 13# limitations under the License. 14 15LOCAL_PATH:= $(call my-dir) 16 17statsd_common_src := \ 18 ../../core/java/android/os/IStatsCompanionService.aidl \ 19 ../../core/java/android/os/IStatsManager.aidl \ 20 src/statsd_config.proto \ 21 src/FieldValue.cpp \ 22 src/hash.cpp \ 23 src/stats_log_util.cpp \ 24 src/anomaly/AlarmMonitor.cpp \ 25 src/anomaly/AlarmTracker.cpp \ 26 src/anomaly/AnomalyTracker.cpp \ 27 src/anomaly/DurationAnomalyTracker.cpp \ 28 src/anomaly/subscriber_util.cpp \ 29 src/condition/CombinationConditionTracker.cpp \ 30 src/condition/condition_util.cpp \ 31 src/condition/SimpleConditionTracker.cpp \ 32 src/condition/ConditionWizard.cpp \ 33 src/condition/StateTracker.cpp \ 34 src/config/ConfigKey.cpp \ 35 src/config/ConfigListener.cpp \ 36 src/config/ConfigManager.cpp \ 37 src/external/Perfetto.cpp \ 38 src/external/StatsPuller.cpp \ 39 src/external/StatsCompanionServicePuller.cpp \ 40 src/external/SubsystemSleepStatePuller.cpp \ 41 src/external/ResourceHealthManagerPuller.cpp \ 42 src/external/ResourceThermalManagerPuller.cpp \ 43 src/external/StatsPullerManagerImpl.cpp \ 44 src/external/puller_util.cpp \ 45 src/logd/LogEvent.cpp \ 46 src/logd/LogListener.cpp \ 47 src/logd/LogReader.cpp \ 48 src/matchers/CombinationLogMatchingTracker.cpp \ 49 src/matchers/matcher_util.cpp \ 50 src/matchers/SimpleLogMatchingTracker.cpp \ 51 src/metrics/MetricProducer.cpp \ 52 src/metrics/EventMetricProducer.cpp \ 53 src/metrics/CountMetricProducer.cpp \ 54 src/metrics/DurationMetricProducer.cpp \ 55 src/metrics/duration_helper/OringDurationTracker.cpp \ 56 src/metrics/duration_helper/MaxDurationTracker.cpp \ 57 src/metrics/ValueMetricProducer.cpp \ 58 src/metrics/GaugeMetricProducer.cpp \ 59 src/metrics/MetricsManager.cpp \ 60 src/metrics/metrics_manager_util.cpp \ 61 src/packages/UidMap.cpp \ 62 src/perfetto/perfetto_config.proto \ 63 src/storage/StorageManager.cpp \ 64 src/StatsLogProcessor.cpp \ 65 src/StatsService.cpp \ 66 src/statscompanion_util.cpp \ 67 src/subscriber/IncidentdReporter.cpp \ 68 src/subscriber/SubscriberReporter.cpp \ 69 src/HashableDimensionKey.cpp \ 70 src/guardrail/StatsdStats.cpp \ 71 src/socket/StatsSocketListener.cpp 72 73statsd_common_c_includes := \ 74 $(LOCAL_PATH)/src \ 75 $(LOCAL_PATH)/../../libs/services/include 76 77statsd_common_aidl_includes := \ 78 $(LOCAL_PATH)/../../core/java 79 80statsd_common_static_libraries := \ 81 libhealthhalutils \ 82 libplatformprotos \ 83 84statsd_common_shared_libraries := \ 85 libbase \ 86 libbinder \ 87 libincident \ 88 liblog \ 89 libutils \ 90 libservices \ 91 libprotoutil \ 92 libstatslog \ 93 libhardware \ 94 libhardware_legacy \ 95 libhidlbase \ 96 libhidltransport \ 97 libhwbinder \ 98 android.hardware.health@2.0 \ 99 android.hardware.power@1.0 \ 100 android.hardware.power@1.1 \ 101 android.hardware.thermal@1.0 \ 102 libpackagelistparser \ 103 libsysutils \ 104 libcutils 105 106# ========= 107# statsd 108# ========= 109 110include $(CLEAR_VARS) 111 112LOCAL_MODULE := statsd 113 114LOCAL_SRC_FILES := \ 115 $(statsd_common_src) \ 116 src/main.cpp 117 118LOCAL_CFLAGS += \ 119 -Wall \ 120 -Wextra \ 121 -Werror \ 122 -Wno-unused-parameter 123 124ifeq (debug,) 125 LOCAL_CFLAGS += \ 126 -g -O0 127else 128 # optimize for size (protobuf glop can get big) 129 LOCAL_CFLAGS += \ 130 -Os 131endif 132LOCAL_PROTOC_OPTIMIZE_TYPE := lite 133 134LOCAL_AIDL_INCLUDES := $(statsd_common_aidl_includes) 135LOCAL_C_INCLUDES += $(statsd_common_c_includes) 136 137LOCAL_STATIC_LIBRARIES := $(statsd_common_static_libraries) 138 139LOCAL_SHARED_LIBRARIES := $(statsd_common_shared_libraries) \ 140 libgtest_prod 141 142LOCAL_MODULE_CLASS := EXECUTABLES 143 144# Enable sanitizer and allow very verbose printing on eng builds 145ifeq ($(TARGET_BUILD_VARIANT),eng) 146 LOCAL_CLANG := true 147 LOCAL_SANITIZE := address 148 LOCAL_CFLAGS += \ 149 -DVERY_VERBOSE_PRINTING 150endif 151 152LOCAL_INIT_RC := statsd.rc 153 154include $(BUILD_EXECUTABLE) 155 156 157# ============== 158# statsd_test 159# ============== 160 161include $(CLEAR_VARS) 162 163LOCAL_MODULE := statsd_test 164LOCAL_COMPATIBILITY_SUITE := device-tests 165LOCAL_MODULE_TAGS := tests 166 167LOCAL_AIDL_INCLUDES := $(statsd_common_aidl_includes) 168LOCAL_C_INCLUDES += $(statsd_common_c_includes) 169 170LOCAL_CFLAGS += \ 171 -Wall \ 172 -Werror \ 173 -Wno-missing-field-initializers \ 174 -Wno-unused-variable \ 175 -Wno-unused-function \ 176 -Wno-unused-parameter 177 178LOCAL_SRC_FILES := \ 179 $(statsd_common_src) \ 180 src/atom_field_options.proto \ 181 src/atoms.proto \ 182 src/stats_log.proto \ 183 tests/AlarmMonitor_test.cpp \ 184 tests/anomaly/AlarmTracker_test.cpp \ 185 tests/anomaly/AnomalyTracker_test.cpp \ 186 tests/ConfigManager_test.cpp \ 187 tests/external/puller_util_test.cpp \ 188 tests/indexed_priority_queue_test.cpp \ 189 tests/LogEntryMatcher_test.cpp \ 190 tests/LogReader_test.cpp \ 191 tests/LogEvent_test.cpp \ 192 tests/MetricsManager_test.cpp \ 193 tests/StatsLogProcessor_test.cpp \ 194 tests/StatsService_test.cpp \ 195 tests/UidMap_test.cpp \ 196 tests/FieldValue_test.cpp \ 197 tests/condition/CombinationConditionTracker_test.cpp \ 198 tests/condition/SimpleConditionTracker_test.cpp \ 199 tests/condition/StateTracker_test.cpp \ 200 tests/metrics/OringDurationTracker_test.cpp \ 201 tests/metrics/MaxDurationTracker_test.cpp \ 202 tests/metrics/CountMetricProducer_test.cpp \ 203 tests/metrics/DurationMetricProducer_test.cpp \ 204 tests/metrics/EventMetricProducer_test.cpp \ 205 tests/metrics/ValueMetricProducer_test.cpp \ 206 tests/metrics/GaugeMetricProducer_test.cpp \ 207 tests/guardrail/StatsdStats_test.cpp \ 208 tests/metrics/metrics_test_helper.cpp \ 209 tests/statsd_test_util.cpp \ 210 tests/e2e/WakelockDuration_e2e_test.cpp \ 211 tests/e2e/MetricConditionLink_e2e_test.cpp \ 212 tests/e2e/Alarm_e2e_test.cpp \ 213 tests/e2e/Attribution_e2e_test.cpp \ 214 tests/e2e/GaugeMetric_e2e_push_test.cpp \ 215 tests/e2e/GaugeMetric_e2e_pull_test.cpp \ 216 tests/e2e/ValueMetric_pull_e2e_test.cpp \ 217 tests/e2e/DimensionInCondition_e2e_combination_AND_cond_test.cpp \ 218 tests/e2e/DimensionInCondition_e2e_combination_OR_cond_test.cpp \ 219 tests/e2e/DimensionInCondition_e2e_simple_cond_test.cpp \ 220 tests/e2e/Anomaly_count_e2e_test.cpp \ 221 tests/e2e/Anomaly_duration_sum_e2e_test.cpp \ 222 tests/e2e/ConfigTtl_e2e_test.cpp \ 223 tests/e2e/PartialBucket_e2e_test.cpp 224 225LOCAL_STATIC_LIBRARIES := \ 226 $(statsd_common_static_libraries) \ 227 libgmock 228 229LOCAL_PROTOC_OPTIMIZE_TYPE := full 230 231LOCAL_PROTOC_FLAGS := \ 232 -Iexternal/protobuf/src 233 234LOCAL_SHARED_LIBRARIES := $(statsd_common_shared_libraries) \ 235 libprotobuf-cpp-full 236 237include $(BUILD_NATIVE_TEST) 238 239############################## 240# stats proto static java lib 241############################## 242 243include $(CLEAR_VARS) 244LOCAL_MODULE := statsdprotolite 245 246LOCAL_SRC_FILES := \ 247 src/stats_log.proto \ 248 src/statsd_config.proto \ 249 src/perfetto/perfetto_config.proto \ 250 src/atoms.proto 251 252LOCAL_PROTOC_OPTIMIZE_TYPE := lite 253 254LOCAL_STATIC_JAVA_LIBRARIES := \ 255 platformprotoslite 256 257LOCAL_PROTOC_FLAGS := \ 258 -Iexternal/protobuf/src 259 260include $(BUILD_STATIC_JAVA_LIBRARY) 261 262############################## 263# statsd micro benchmark 264############################## 265 266include $(CLEAR_VARS) 267LOCAL_MODULE := statsd_benchmark 268 269LOCAL_SRC_FILES := $(statsd_common_src) \ 270 src/atom_field_options.proto \ 271 src/atoms.proto \ 272 src/stats_log.proto \ 273 benchmark/main.cpp \ 274 benchmark/hello_world_benchmark.cpp \ 275 benchmark/log_event_benchmark.cpp \ 276 benchmark/stats_write_benchmark.cpp \ 277 benchmark/filter_value_benchmark.cpp \ 278 benchmark/get_dimensions_for_condition_benchmark.cpp \ 279 benchmark/metric_util.cpp \ 280 benchmark/duration_metric_benchmark.cpp 281 282LOCAL_STATIC_LIBRARIES := \ 283 $(statsd_common_static_libraries) 284 285LOCAL_PROTOC_OPTIMIZE_TYPE := full 286 287LOCAL_PROTOC_FLAGS := \ 288 -Iexternal/protobuf/src 289 290LOCAL_SHARED_LIBRARIES := $(statsd_common_shared_libraries) \ 291 libprotobuf-cpp-full 292 293 294LOCAL_STATIC_JAVA_LIBRARIES := \ 295 platformprotoslite 296 297LOCAL_C_INCLUDES := $(statsd_common_c_includes) 298 299LOCAL_CFLAGS := -Wall \ 300 -Werror \ 301 -Wno-unused-parameter \ 302 -Wno-unused-variable \ 303 -Wno-unused-function \ 304 305# Bug: http://b/29823425 Disable -Wvarargs for Clang update to r271374 306LOCAL_CFLAGS += -Wno-varargs 307 308LOCAL_AIDL_INCLUDES := $(statsd_common_aidl_includes) 309 310LOCAL_STATIC_LIBRARIES := \ 311 $(statsd_common_static_libraries) 312 313LOCAL_SHARED_LIBRARIES := $(statsd_common_shared_libraries) \ 314 libgtest_prod \ 315 libstatslog 316 317LOCAL_MODULE_TAGS := eng tests 318 319include $(BUILD_NATIVE_BENCHMARK) 320 321 322statsd_common_src:= 323statsd_common_aidl_includes:= 324statsd_common_c_includes:= 325statsd_common_static_libraries:= 326statsd_common_shared_libraries:= 327 328 329include $(call all-makefiles-under,$(LOCAL_PATH)) 330