• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
17package {
18    default_applicable_licenses: ["Android-Apache-2.0"],
19}
20
21cc_defaults {
22    name: "statsd_defaults",
23
24    srcs: [
25        "src/active_config_list.proto",
26        "src/anomaly/AlarmMonitor.cpp",
27        "src/anomaly/AlarmTracker.cpp",
28        "src/anomaly/AnomalyTracker.cpp",
29        "src/anomaly/DurationAnomalyTracker.cpp",
30        "src/anomaly/subscriber_util.cpp",
31        "src/condition/CombinationConditionTracker.cpp",
32        "src/condition/condition_util.cpp",
33        "src/condition/ConditionWizard.cpp",
34        "src/condition/SimpleConditionTracker.cpp",
35        "src/config/ConfigKey.cpp",
36        "src/config/ConfigListener.cpp",
37        "src/config/ConfigManager.cpp",
38        "src/experiment_ids.proto",
39        "src/external/Perfetto.cpp",
40        "src/external/PullResultReceiver.cpp",
41        "src/external/puller_util.cpp",
42        "src/external/StatsCallbackPuller.cpp",
43        "src/external/StatsPuller.cpp",
44        "src/external/StatsPullerManager.cpp",
45        "src/external/TrainInfoPuller.cpp",
46        "src/FieldValue.cpp",
47        "src/flags/FlagProvider.cpp",
48        "src/guardrail/StatsdStats.cpp",
49        "src/hash.cpp",
50        "src/HashableDimensionKey.cpp",
51        "src/logd/LogEvent.cpp",
52        "src/logd/LogEventQueue.cpp",
53        "src/matchers/CombinationAtomMatchingTracker.cpp",
54        "src/matchers/EventMatcherWizard.cpp",
55        "src/matchers/matcher_util.cpp",
56        "src/matchers/SimpleAtomMatchingTracker.cpp",
57        "src/metadata_util.cpp",
58        "src/metrics/CountMetricProducer.cpp",
59        "src/metrics/duration_helper/MaxDurationTracker.cpp",
60        "src/metrics/duration_helper/OringDurationTracker.cpp",
61        "src/metrics/DurationMetricProducer.cpp",
62        "src/metrics/EventMetricProducer.cpp",
63        "src/metrics/GaugeMetricProducer.cpp",
64        "src/metrics/KllMetricProducer.cpp",
65        "src/metrics/MetricProducer.cpp",
66        "src/metrics/MetricsManager.cpp",
67        "src/metrics/ValueMetricProducer.cpp",
68        "src/metrics/parsing_utils/config_update_utils.cpp",
69        "src/metrics/parsing_utils/metrics_manager_util.cpp",
70        "src/metrics/NumericValueMetricProducer.cpp",
71        "src/packages/UidMap.cpp",
72        "src/shell/shell_config.proto",
73        "src/shell/ShellSubscriber.cpp",
74        "src/socket/StatsSocketListener.cpp",
75        "src/state/StateManager.cpp",
76        "src/state/StateTracker.cpp",
77        "src/stats_log_util.cpp",
78        "src/statscompanion_util.cpp",
79        "src/statsd_config.proto",
80        "src/statsd_metadata.proto",
81        "src/StatsLogProcessor.cpp",
82        "src/StatsService.cpp",
83        "src/storage/StorageManager.cpp",
84        "src/subscriber/IncidentdReporter.cpp",
85        "src/subscriber/SubscriberReporter.cpp",
86        "src/uid_data.proto",
87        "src/utils/MultiConditionTrigger.cpp",
88    ],
89
90    local_include_dirs: [
91        "src",
92    ],
93
94    static_libs: [
95        "libbase",
96        "libcutils",
97        "libkll",
98        "libmodules-utils-build",
99        "libprotoutil",
100        "libstatslog_statsd",
101        "libsysutils",
102        "libutils",
103        "server_configurable_flags",
104        "statsd-aidl-ndk",
105    ],
106    shared_libs: [
107        "libbinder_ndk",
108        "libincident",
109        "liblog",
110    ],
111    header_libs: [
112        "libgtest_prod_headers",
113    ],
114}
115
116genrule {
117    name: "statslog_statsd.h",
118    tools: ["stats-log-api-gen"],
119    cmd: "$(location stats-log-api-gen) --header $(genDir)/statslog_statsd.h --module statsd --namespace android,os,statsd,util",
120    out: [
121        "statslog_statsd.h",
122    ],
123}
124
125genrule {
126    name: "statslog_statsd.cpp",
127    tools: ["stats-log-api-gen"],
128    cmd: "$(location stats-log-api-gen) --cpp $(genDir)/statslog_statsd.cpp --module statsd --namespace android,os,statsd,util --importHeader statslog_statsd.h",
129    out: [
130        "statslog_statsd.cpp",
131    ],
132}
133
134genrule {
135    name: "statslog_statsdtest.h",
136    tools: ["stats-log-api-gen"],
137    cmd: "$(location stats-log-api-gen) --header $(genDir)/statslog_statsdtest.h --module statsdtest --namespace android,os,statsd,util",
138    out: [
139        "statslog_statsdtest.h",
140    ],
141}
142
143genrule {
144    name: "statslog_statsdtest.cpp",
145    tools: ["stats-log-api-gen"],
146    cmd: "$(location stats-log-api-gen) --cpp $(genDir)/statslog_statsdtest.cpp --module statsdtest --namespace android,os,statsd,util --importHeader statslog_statsdtest.h",
147    out: [
148        "statslog_statsdtest.cpp",
149    ],
150}
151
152cc_library_static {
153    name: "libstatslog_statsdtest",
154    generated_sources: ["statslog_statsdtest.cpp"],
155    generated_headers: ["statslog_statsdtest.h"],
156    export_generated_headers: ["statslog_statsdtest.h"],
157    shared_libs: [
158        "libstatssocket",
159        "libstatspull",
160    ],
161}
162
163cc_library_static {
164    name: "libstatslog_statsd",
165    generated_sources: ["statslog_statsd.cpp"],
166    generated_headers: ["statslog_statsd.h"],
167    export_generated_headers: ["statslog_statsd.h"],
168    apex_available: [
169        "com.android.os.statsd",
170        "test_com.android.os.statsd",
171    ],
172    min_sdk_version: "30",
173    shared_libs: [
174        "libstatssocket",
175        "libstatspull",
176    ],
177    export_shared_lib_headers: [
178        "libstatspull",
179    ],
180}
181
182// =========
183// statsd
184// =========
185
186cc_binary {
187    name: "statsd",
188    defaults: ["statsd_defaults"],
189
190    srcs: ["src/main.cpp"],
191
192    cflags: [
193        "-Wall",
194        "-Wextra",
195        "-Werror",
196        "-Wno-unused-parameter",
197        // optimize for size (protobuf glop can get big)
198        "-Os",
199        // "-g",
200        // "-O0",
201    ],
202
203    product_variables: {
204        eng: {
205            // Enable sanitizer ONLY on eng builds
206            //sanitize: {
207            //    address: true,
208            //},
209        },
210    },
211
212    proto: {
213        type: "lite",
214        static: true,
215    },
216    stl: "libc++_static",
217
218    shared_libs: [
219        "libstatssocket",
220    ],
221
222    apex_available: [
223        "com.android.os.statsd",
224        "test_com.android.os.statsd",
225    ],
226    min_sdk_version: "30",
227
228    sanitize: {
229        memtag_heap: true,
230    },
231}
232
233// ==============
234// statsd_test
235// ==============
236
237cc_test {
238    name: "statsd_test",
239    defaults: ["statsd_defaults"],
240    test_suites: ["device-tests", "mts-statsd"],
241    test_config: "statsd_test.xml",
242
243    //TODO(b/153588990): Remove when the build system properly separates
244    //32bit and 64bit architectures.
245    compile_multilib: "both",
246    multilib: {
247        lib64: {
248            suffix: "64",
249        },
250        lib32: {
251            suffix: "32",
252        },
253    },
254
255    cflags: [
256        "-Wall",
257        "-Werror",
258        "-Wno-enum-compare",
259        "-Wno-missing-field-initializers",
260        "-Wno-unused-function",
261        "-Wno-unused-parameter",
262        "-Wno-unused-variable",
263    ],
264
265    require_root: true,
266
267    srcs: [
268        // atom_field_options.proto needs field_options.proto, but that is
269        // not included in libprotobuf-cpp-lite, so compile it here.
270        ":libprotobuf-internal-protos",
271        ":libstats_internal_protos",
272
273        "src/shell/shell_data.proto",
274        "src/stats_log.proto",
275        "tests/AlarmMonitor_test.cpp",
276        "tests/anomaly/AlarmTracker_test.cpp",
277        "tests/anomaly/AnomalyTracker_test.cpp",
278        "tests/condition/CombinationConditionTracker_test.cpp",
279        "tests/condition/ConditionTimer_test.cpp",
280        "tests/condition/SimpleConditionTracker_test.cpp",
281        "tests/ConfigManager_test.cpp",
282        "tests/e2e/Alarm_e2e_test.cpp",
283        "tests/e2e/Anomaly_count_e2e_test.cpp",
284        "tests/e2e/Anomaly_duration_sum_e2e_test.cpp",
285        "tests/e2e/Attribution_e2e_test.cpp",
286        "tests/e2e/ConfigTtl_e2e_test.cpp",
287        "tests/e2e/ConfigUpdate_e2e_ab_test.cpp",
288        "tests/e2e/ConfigUpdate_e2e_test.cpp",
289        "tests/e2e/CountMetric_e2e_test.cpp",
290        "tests/e2e/DurationMetric_e2e_test.cpp",
291        "tests/e2e/EventMetric_e2e_test.cpp",
292        "tests/e2e/GaugeMetric_e2e_pull_test.cpp",
293        "tests/e2e/GaugeMetric_e2e_push_test.cpp",
294        "tests/e2e/KllMetric_e2e_test.cpp",
295        "tests/e2e/MetricActivation_e2e_test.cpp",
296        "tests/e2e/MetricConditionLink_e2e_test.cpp",
297        "tests/e2e/PartialBucket_e2e_test.cpp",
298        "tests/e2e/ValueMetric_pull_e2e_test.cpp",
299        "tests/e2e/WakelockDuration_e2e_test.cpp",
300        "tests/external/puller_util_test.cpp",
301        "tests/external/StatsCallbackPuller_test.cpp",
302        "tests/external/StatsPuller_test.cpp",
303        "tests/external/StatsPullerManager_test.cpp",
304        "tests/FieldValue_test.cpp",
305        "tests/flags/FlagProvider_test.cpp",
306        "tests/guardrail/StatsdStats_test.cpp",
307        "tests/HashableDimensionKey_test.cpp",
308        "tests/indexed_priority_queue_test.cpp",
309        "tests/log_event/LogEventQueue_test.cpp",
310        "tests/LogEntryMatcher_test.cpp",
311        "tests/LogEvent_test.cpp",
312        "tests/metadata_util_test.cpp",
313        "tests/metrics/CountMetricProducer_test.cpp",
314        "tests/metrics/DurationMetricProducer_test.cpp",
315        "tests/metrics/EventMetricProducer_test.cpp",
316        "tests/metrics/GaugeMetricProducer_test.cpp",
317        "tests/metrics/KllMetricProducer_test.cpp",
318        "tests/metrics/MaxDurationTracker_test.cpp",
319        "tests/metrics/metrics_test_helper.cpp",
320        "tests/metrics/OringDurationTracker_test.cpp",
321        "tests/metrics/NumericValueMetricProducer_test.cpp",
322        "tests/metrics/parsing_utils/config_update_utils_test.cpp",
323        "tests/metrics/parsing_utils/metrics_manager_util_test.cpp",
324        "tests/subscriber/SubscriberReporter_test.cpp",
325        "tests/MetricsManager_test.cpp",
326        "tests/shell/ShellSubscriber_test.cpp",
327        "tests/state/StateTracker_test.cpp",
328        "tests/statsd_test_util.cpp",
329        "tests/StatsLogProcessor_test.cpp",
330        "tests/StatsService_test.cpp",
331        "tests/storage/StorageManager_test.cpp",
332        "tests/UidMap_test.cpp",
333        "tests/utils/MultiConditionTrigger_test.cpp",
334    ],
335
336    static_libs: [
337        "libgmock",
338        "libplatformprotos",
339        "libstatslog_statsdtest",
340        "libstatssocket_private",
341    ],
342
343    proto: {
344        type: "lite",
345        include_dirs: [
346            "external/protobuf/src",
347            "frameworks/proto_logging/stats",
348        ],
349    },
350
351}
352
353//#############################
354// statsd micro benchmark
355//#############################
356
357cc_benchmark {
358    name: "statsd_benchmark",
359    defaults: ["statsd_defaults"],
360
361    srcs: [
362        // atom_field_options.proto needs field_options.proto, but that is
363        // not included in libprotobuf-cpp-lite, so compile it here.
364        ":libprotobuf-internal-protos",
365        ":libstats_internal_protos",
366
367        "benchmark/duration_metric_benchmark.cpp",
368        "benchmark/filter_value_benchmark.cpp",
369        "benchmark/get_dimensions_for_condition_benchmark.cpp",
370        "benchmark/hello_world_benchmark.cpp",
371        "benchmark/log_event_benchmark.cpp",
372        "benchmark/main.cpp",
373        "benchmark/metric_util.cpp",
374        "benchmark/stats_write_benchmark.cpp",
375        "src/stats_log.proto",
376    ],
377
378    proto: {
379        type: "lite",
380        include_dirs: [
381            "external/protobuf/src",
382            "frameworks/proto_logging/stats",
383        ],
384    },
385
386    cflags: [
387        "-Wall",
388        "-Werror",
389        "-Wno-unused-parameter",
390        "-Wno-unused-variable",
391        "-Wno-unused-function",
392
393        // Bug: http://b/29823425 Disable -Wvarargs for Clang update to r271374
394        "-Wno-varargs",
395    ],
396
397    static_libs: [
398        "libplatformprotos",
399        "libstatssocket_private",
400    ],
401
402    shared_libs: [
403        "libprotobuf-cpp-lite",
404        "libstatslog",
405    ],
406
407    header_libs: [
408        "libgtest_prod_headers",
409    ],
410}
411
412// ====  java proto device library (for test only)  ==============================
413java_library {
414    name: "statsdprotolite",
415    sdk_version: "core_current",
416    proto: {
417        type: "lite",
418        include_dirs: [
419            "external/protobuf/src",
420            "frameworks/proto_logging/stats",
421        ],
422    },
423
424    srcs: [
425        ":libstats_atoms_proto",
426        "src/shell/shell_config.proto",
427        "src/shell/shell_data.proto",
428        "src/stats_log.proto",
429        "src/statsd_config.proto",
430    ],
431
432    static_libs: [
433        "platformprotoslite",
434    ],
435    // Protos have lots of MissingOverride and similar.
436    errorprone: {
437        javacflags: ["-XepDisableAllChecks"],
438    },
439}
440
441java_library {
442    name: "statsdprotonano",
443    sdk_version: "9",
444    proto: {
445        type: "nano",
446        output_params: ["store_unknown_fields=true"],
447        include_dirs: [
448            "external/protobuf/src",
449            "frameworks/proto_logging/stats",
450        ],
451    },
452    srcs: [
453        ":libstats_atoms_proto",
454        "src/shell/shell_config.proto",
455        "src/shell/shell_data.proto",
456        "src/stats_log.proto",
457        "src/statsd_config.proto",
458    ],
459    static_libs: [
460        "platformprotosnano",
461    ],
462    // Protos have lots of MissingOverride and similar.
463    errorprone: {
464        javacflags: ["-XepDisableAllChecks"],
465    },
466}
467
468// Filegroup for statsd config proto definition.
469filegroup {
470    name: "statsd-config-proto-def",
471    srcs: ["src/statsd_config.proto"],
472}
473
474// Filegroup for all statsd protos
475filegroup {
476    name: "statsd_internal_protos",
477    srcs: [
478        "src/active_config_list.proto",
479        "src/experiment_ids.proto",
480        "src/shell/shell_config.proto",
481        "src/shell/shell_data.proto",
482        "src/statsd_config.proto",
483        "src/statsd_metadata.proto",
484        "src/stats_log.proto",
485        "src/uid_data.proto",
486    ],
487}
488