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