xref: /aosp_15_r20/frameworks/av/services/mediametrics/Android.bp (revision ec779b8e0859a360c3d303172224686826e6e0e1)
1*ec779b8eSAndroid Build Coastguard Worker// Media Statistics service
2*ec779b8eSAndroid Build Coastguard Worker//
3*ec779b8eSAndroid Build Coastguard Worker
4*ec779b8eSAndroid Build Coastguard Workerpackage {
5*ec779b8eSAndroid Build Coastguard Worker    // See: http://go/android-license-faq
6*ec779b8eSAndroid Build Coastguard Worker    // A large-scale-change added 'default_applicable_licenses' to import
7*ec779b8eSAndroid Build Coastguard Worker    // all of the 'license_kinds' from "frameworks_av_license"
8*ec779b8eSAndroid Build Coastguard Worker    // to get the below license kinds:
9*ec779b8eSAndroid Build Coastguard Worker    //   SPDX-license-identifier-Apache-2.0
10*ec779b8eSAndroid Build Coastguard Worker    default_applicable_licenses: ["frameworks_av_license"],
11*ec779b8eSAndroid Build Coastguard Worker}
12*ec779b8eSAndroid Build Coastguard Worker
13*ec779b8eSAndroid Build Coastguard Workertidy_errors = [
14*ec779b8eSAndroid Build Coastguard Worker    // https://clang.llvm.org/extra/clang-tidy/checks/list.html
15*ec779b8eSAndroid Build Coastguard Worker    // For many categories, the checks are too many to specify individually.
16*ec779b8eSAndroid Build Coastguard Worker    // Feel free to disable as needed - as warnings are generally ignored,
17*ec779b8eSAndroid Build Coastguard Worker    // we treat warnings as errors.
18*ec779b8eSAndroid Build Coastguard Worker    "android-*",
19*ec779b8eSAndroid Build Coastguard Worker    "bugprone-*",
20*ec779b8eSAndroid Build Coastguard Worker    "cert-*",
21*ec779b8eSAndroid Build Coastguard Worker    "clang-analyzer-security*",
22*ec779b8eSAndroid Build Coastguard Worker    "google-*",
23*ec779b8eSAndroid Build Coastguard Worker    "misc-*",
24*ec779b8eSAndroid Build Coastguard Worker    //"modernize-*",  // explicitly list the modernize as they can be subjective.
25*ec779b8eSAndroid Build Coastguard Worker    "modernize-avoid-bind",
26*ec779b8eSAndroid Build Coastguard Worker    //"modernize-avoid-c-arrays", // std::array<> can be verbose
27*ec779b8eSAndroid Build Coastguard Worker    "modernize-concat-nested-namespaces",
28*ec779b8eSAndroid Build Coastguard Worker    //"modernize-deprecated-headers", // C headers still ok even if there is C++ equivalent.
29*ec779b8eSAndroid Build Coastguard Worker    "modernize-deprecated-ios-base-aliases",
30*ec779b8eSAndroid Build Coastguard Worker    "modernize-loop-convert",
31*ec779b8eSAndroid Build Coastguard Worker    "modernize-make-shared",
32*ec779b8eSAndroid Build Coastguard Worker    "modernize-make-unique",
33*ec779b8eSAndroid Build Coastguard Worker    // "modernize-pass-by-value", // found in TimeMachine.h
34*ec779b8eSAndroid Build Coastguard Worker    "modernize-raw-string-literal",
35*ec779b8eSAndroid Build Coastguard Worker    "modernize-redundant-void-arg",
36*ec779b8eSAndroid Build Coastguard Worker    "modernize-replace-auto-ptr",
37*ec779b8eSAndroid Build Coastguard Worker    "modernize-replace-random-shuffle",
38*ec779b8eSAndroid Build Coastguard Worker    "modernize-return-braced-init-list",
39*ec779b8eSAndroid Build Coastguard Worker    "modernize-shrink-to-fit",
40*ec779b8eSAndroid Build Coastguard Worker    "modernize-unary-static-assert",
41*ec779b8eSAndroid Build Coastguard Worker    // "modernize-use-auto",  // found in MediaMetricsService.h, debatable - auto can obscure type
42*ec779b8eSAndroid Build Coastguard Worker    "modernize-use-bool-literals",
43*ec779b8eSAndroid Build Coastguard Worker    "modernize-use-default-member-init",
44*ec779b8eSAndroid Build Coastguard Worker    "modernize-use-emplace",
45*ec779b8eSAndroid Build Coastguard Worker    "modernize-use-equals-default",
46*ec779b8eSAndroid Build Coastguard Worker    "modernize-use-equals-delete",
47*ec779b8eSAndroid Build Coastguard Worker    // "modernize-use-nodiscard", // found in TimeMachine.h
48*ec779b8eSAndroid Build Coastguard Worker    "modernize-use-noexcept",
49*ec779b8eSAndroid Build Coastguard Worker    "modernize-use-nullptr",
50*ec779b8eSAndroid Build Coastguard Worker    "modernize-use-override",
51*ec779b8eSAndroid Build Coastguard Worker    //"modernize-use-trailing-return-type", // not necessarily more readable
52*ec779b8eSAndroid Build Coastguard Worker    "modernize-use-transparent-functors",
53*ec779b8eSAndroid Build Coastguard Worker    "modernize-use-uncaught-exceptions",
54*ec779b8eSAndroid Build Coastguard Worker    "modernize-use-using",
55*ec779b8eSAndroid Build Coastguard Worker    "performance-*",
56*ec779b8eSAndroid Build Coastguard Worker
57*ec779b8eSAndroid Build Coastguard Worker    // Remove some pedantic stylistic requirements.
58*ec779b8eSAndroid Build Coastguard Worker    "-google-readability-casting", // C++ casts not always necessary and may be verbose
59*ec779b8eSAndroid Build Coastguard Worker    "-google-readability-todo",    // do not require TODO(info)
60*ec779b8eSAndroid Build Coastguard Worker
61*ec779b8eSAndroid Build Coastguard Worker    "-bugprone-unhandled-self-assignment", // found in TimeMachine.h
62*ec779b8eSAndroid Build Coastguard Worker    "-bugprone-suspicious-string-compare", // found in TimeMachine.h
63*ec779b8eSAndroid Build Coastguard Worker    "-cert-oop54-cpp", // found in TransactionLog.h
64*ec779b8eSAndroid Build Coastguard Worker    "-bugprone-narrowing-conversions", // b/182410845
65*ec779b8eSAndroid Build Coastguard Worker]
66*ec779b8eSAndroid Build Coastguard Worker
67*ec779b8eSAndroid Build Coastguard Workercc_defaults {
68*ec779b8eSAndroid Build Coastguard Worker    name: "mediametrics_flags_defaults",
69*ec779b8eSAndroid Build Coastguard Worker    // https://clang.llvm.org/docs/UsersManual.html#command-line-options
70*ec779b8eSAndroid Build Coastguard Worker    // https://clang.llvm.org/docs/DiagnosticsReference.html
71*ec779b8eSAndroid Build Coastguard Worker    cflags: [
72*ec779b8eSAndroid Build Coastguard Worker        "-Wall",
73*ec779b8eSAndroid Build Coastguard Worker        "-Wdeprecated",
74*ec779b8eSAndroid Build Coastguard Worker        "-Werror",
75*ec779b8eSAndroid Build Coastguard Worker        "-Werror=implicit-fallthrough",
76*ec779b8eSAndroid Build Coastguard Worker        "-Werror=sometimes-uninitialized",
77*ec779b8eSAndroid Build Coastguard Worker        "-Werror=conditional-uninitialized",
78*ec779b8eSAndroid Build Coastguard Worker        "-Wextra",
79*ec779b8eSAndroid Build Coastguard Worker        "-Wredundant-decls",
80*ec779b8eSAndroid Build Coastguard Worker        "-Wshadow",
81*ec779b8eSAndroid Build Coastguard Worker        "-Wstrict-aliasing",
82*ec779b8eSAndroid Build Coastguard Worker        "-fstrict-aliasing",
83*ec779b8eSAndroid Build Coastguard Worker        "-Wthread-safety",
84*ec779b8eSAndroid Build Coastguard Worker        //"-Wthread-safety-negative", // experimental - looks broken in R.
85*ec779b8eSAndroid Build Coastguard Worker        "-Wunreachable-code",
86*ec779b8eSAndroid Build Coastguard Worker        "-Wunreachable-code-break",
87*ec779b8eSAndroid Build Coastguard Worker        "-Wunreachable-code-return",
88*ec779b8eSAndroid Build Coastguard Worker        "-Wunused",
89*ec779b8eSAndroid Build Coastguard Worker        "-Wused-but-marked-unused",
90*ec779b8eSAndroid Build Coastguard Worker    ],
91*ec779b8eSAndroid Build Coastguard Worker    // https://clang.llvm.org/extra/clang-tidy/
92*ec779b8eSAndroid Build Coastguard Worker    tidy: true,
93*ec779b8eSAndroid Build Coastguard Worker    tidy_checks: tidy_errors,
94*ec779b8eSAndroid Build Coastguard Worker    tidy_checks_as_errors: tidy_errors,
95*ec779b8eSAndroid Build Coastguard Worker    tidy_flags: [
96*ec779b8eSAndroid Build Coastguard Worker      "-format-style=file",
97*ec779b8eSAndroid Build Coastguard Worker    ],
98*ec779b8eSAndroid Build Coastguard Worker}
99*ec779b8eSAndroid Build Coastguard Worker
100*ec779b8eSAndroid Build Coastguard Workercc_binary {
101*ec779b8eSAndroid Build Coastguard Worker    name: "mediametrics",
102*ec779b8eSAndroid Build Coastguard Worker    defaults: [
103*ec779b8eSAndroid Build Coastguard Worker        "mediametrics_flags_defaults",
104*ec779b8eSAndroid Build Coastguard Worker    ],
105*ec779b8eSAndroid Build Coastguard Worker
106*ec779b8eSAndroid Build Coastguard Worker    srcs: [
107*ec779b8eSAndroid Build Coastguard Worker        "main_mediametrics.cpp",
108*ec779b8eSAndroid Build Coastguard Worker    ],
109*ec779b8eSAndroid Build Coastguard Worker
110*ec779b8eSAndroid Build Coastguard Worker    shared_libs: [
111*ec779b8eSAndroid Build Coastguard Worker        "libbinder",
112*ec779b8eSAndroid Build Coastguard Worker        "liblog",
113*ec779b8eSAndroid Build Coastguard Worker        "libmediametricsservice",
114*ec779b8eSAndroid Build Coastguard Worker        "libmediautils",
115*ec779b8eSAndroid Build Coastguard Worker        "libutils",
116*ec779b8eSAndroid Build Coastguard Worker        "mediametricsservice-aidl-cpp",
117*ec779b8eSAndroid Build Coastguard Worker        "packagemanager_aidl-cpp",
118*ec779b8eSAndroid Build Coastguard Worker    ],
119*ec779b8eSAndroid Build Coastguard Worker    header_libs: [
120*ec779b8eSAndroid Build Coastguard Worker        "libaudioutils_headers",
121*ec779b8eSAndroid Build Coastguard Worker        "libmediametrics_headers",
122*ec779b8eSAndroid Build Coastguard Worker    ],
123*ec779b8eSAndroid Build Coastguard Worker
124*ec779b8eSAndroid Build Coastguard Worker    init_rc: [
125*ec779b8eSAndroid Build Coastguard Worker        "mediametrics.rc",
126*ec779b8eSAndroid Build Coastguard Worker    ],
127*ec779b8eSAndroid Build Coastguard Worker}
128*ec779b8eSAndroid Build Coastguard Worker
129*ec779b8eSAndroid Build Coastguard Workercc_library {
130*ec779b8eSAndroid Build Coastguard Worker    name: "libmediametricsservice",
131*ec779b8eSAndroid Build Coastguard Worker    defaults: [
132*ec779b8eSAndroid Build Coastguard Worker        "mediametrics_flags_defaults",
133*ec779b8eSAndroid Build Coastguard Worker    ],
134*ec779b8eSAndroid Build Coastguard Worker
135*ec779b8eSAndroid Build Coastguard Worker    srcs: [
136*ec779b8eSAndroid Build Coastguard Worker        "AudioAnalytics.cpp",
137*ec779b8eSAndroid Build Coastguard Worker        "AudioPowerUsage.cpp",
138*ec779b8eSAndroid Build Coastguard Worker        "AudioTypes.cpp",
139*ec779b8eSAndroid Build Coastguard Worker        "cleaner.cpp",
140*ec779b8eSAndroid Build Coastguard Worker        "iface_statsd.cpp",
141*ec779b8eSAndroid Build Coastguard Worker        "MediaDrmStatsdHelper.cpp",
142*ec779b8eSAndroid Build Coastguard Worker        "MediaMetricsService.cpp",
143*ec779b8eSAndroid Build Coastguard Worker        "statsd_audiopolicy.cpp",
144*ec779b8eSAndroid Build Coastguard Worker        "statsd_audiorecord.cpp",
145*ec779b8eSAndroid Build Coastguard Worker        "statsd_audiothread.cpp",
146*ec779b8eSAndroid Build Coastguard Worker        "statsd_audiotrack.cpp",
147*ec779b8eSAndroid Build Coastguard Worker        "statsd_codec.cpp",
148*ec779b8eSAndroid Build Coastguard Worker        "statsd_drm.cpp",
149*ec779b8eSAndroid Build Coastguard Worker        "statsd_extractor.cpp",
150*ec779b8eSAndroid Build Coastguard Worker        "statsd_mediaparser.cpp",
151*ec779b8eSAndroid Build Coastguard Worker        "statsd_nuplayer.cpp",
152*ec779b8eSAndroid Build Coastguard Worker        "statsd_recorder.cpp",
153*ec779b8eSAndroid Build Coastguard Worker        "StringUtils.cpp",
154*ec779b8eSAndroid Build Coastguard Worker        "ValidateId.cpp",
155*ec779b8eSAndroid Build Coastguard Worker    ],
156*ec779b8eSAndroid Build Coastguard Worker
157*ec779b8eSAndroid Build Coastguard Worker    proto: {
158*ec779b8eSAndroid Build Coastguard Worker        type: "lite",
159*ec779b8eSAndroid Build Coastguard Worker    },
160*ec779b8eSAndroid Build Coastguard Worker
161*ec779b8eSAndroid Build Coastguard Worker    shared_libs: [
162*ec779b8eSAndroid Build Coastguard Worker        "libaudioutils",
163*ec779b8eSAndroid Build Coastguard Worker        "libbase", // android logging
164*ec779b8eSAndroid Build Coastguard Worker        "libbinder",
165*ec779b8eSAndroid Build Coastguard Worker        "libcutils",
166*ec779b8eSAndroid Build Coastguard Worker        "liblog",
167*ec779b8eSAndroid Build Coastguard Worker        "libmedia_helper",
168*ec779b8eSAndroid Build Coastguard Worker        "libmediametrics",
169*ec779b8eSAndroid Build Coastguard Worker        "libmediautils",
170*ec779b8eSAndroid Build Coastguard Worker        "libmemunreachable",
171*ec779b8eSAndroid Build Coastguard Worker        "libprotobuf-cpp-lite",
172*ec779b8eSAndroid Build Coastguard Worker        "libstagefright_foundation",
173*ec779b8eSAndroid Build Coastguard Worker        "libstats_media_metrics",
174*ec779b8eSAndroid Build Coastguard Worker        "libstatspull",
175*ec779b8eSAndroid Build Coastguard Worker        "libstatssocket",
176*ec779b8eSAndroid Build Coastguard Worker        "libutils",
177*ec779b8eSAndroid Build Coastguard Worker        "mediametricsservice-aidl-cpp",
178*ec779b8eSAndroid Build Coastguard Worker        "packagemanager_aidl-cpp",
179*ec779b8eSAndroid Build Coastguard Worker    ],
180*ec779b8eSAndroid Build Coastguard Worker
181*ec779b8eSAndroid Build Coastguard Worker    export_shared_lib_headers: [
182*ec779b8eSAndroid Build Coastguard Worker        "libstats_media_metrics",
183*ec779b8eSAndroid Build Coastguard Worker        "libstatspull",
184*ec779b8eSAndroid Build Coastguard Worker        "libstatssocket",
185*ec779b8eSAndroid Build Coastguard Worker    ],
186*ec779b8eSAndroid Build Coastguard Worker
187*ec779b8eSAndroid Build Coastguard Worker    // within the library, we use "xxx.h"
188*ec779b8eSAndroid Build Coastguard Worker    local_include_dirs: [
189*ec779b8eSAndroid Build Coastguard Worker        "include/mediametricsservice",
190*ec779b8eSAndroid Build Coastguard Worker    ],
191*ec779b8eSAndroid Build Coastguard Worker
192*ec779b8eSAndroid Build Coastguard Worker    // external parties use <mediametricsservice/xxx.h>
193*ec779b8eSAndroid Build Coastguard Worker    export_include_dirs: [
194*ec779b8eSAndroid Build Coastguard Worker        "include",
195*ec779b8eSAndroid Build Coastguard Worker    ],
196*ec779b8eSAndroid Build Coastguard Worker
197*ec779b8eSAndroid Build Coastguard Worker    static_libs: [
198*ec779b8eSAndroid Build Coastguard Worker        "libplatformprotos",
199*ec779b8eSAndroid Build Coastguard Worker    ],
200*ec779b8eSAndroid Build Coastguard Worker
201*ec779b8eSAndroid Build Coastguard Worker    header_libs: [
202*ec779b8eSAndroid Build Coastguard Worker        "libaaudio_headers",
203*ec779b8eSAndroid Build Coastguard Worker        "libaudioutils_headers",
204*ec779b8eSAndroid Build Coastguard Worker    ],
205*ec779b8eSAndroid Build Coastguard Worker}
206*ec779b8eSAndroid Build Coastguard Worker
207*ec779b8eSAndroid Build Coastguard Workercc_library {
208*ec779b8eSAndroid Build Coastguard Worker    name: "libstats_media_metrics",
209*ec779b8eSAndroid Build Coastguard Worker    generated_sources: ["stats_media_metrics.cpp"],
210*ec779b8eSAndroid Build Coastguard Worker    generated_headers: ["stats_media_metrics.h"],
211*ec779b8eSAndroid Build Coastguard Worker    export_generated_headers: ["stats_media_metrics.h"],
212*ec779b8eSAndroid Build Coastguard Worker    shared_libs: [
213*ec779b8eSAndroid Build Coastguard Worker        "libcutils",
214*ec779b8eSAndroid Build Coastguard Worker        "libstatspull",
215*ec779b8eSAndroid Build Coastguard Worker        "libstatssocket",
216*ec779b8eSAndroid Build Coastguard Worker    ],
217*ec779b8eSAndroid Build Coastguard Worker}
218*ec779b8eSAndroid Build Coastguard Worker
219*ec779b8eSAndroid Build Coastguard Workergenrule {
220*ec779b8eSAndroid Build Coastguard Worker    name: "stats_media_metrics.h",
221*ec779b8eSAndroid Build Coastguard Worker    tools: ["stats-log-api-gen"],
222*ec779b8eSAndroid Build Coastguard Worker    cmd: "$(location stats-log-api-gen) --header $(genDir)/stats_media_metrics.h --module media_metrics --namespace android,stats,media_metrics",
223*ec779b8eSAndroid Build Coastguard Worker    out: [
224*ec779b8eSAndroid Build Coastguard Worker        "stats_media_metrics.h",
225*ec779b8eSAndroid Build Coastguard Worker    ],
226*ec779b8eSAndroid Build Coastguard Worker}
227*ec779b8eSAndroid Build Coastguard Worker
228*ec779b8eSAndroid Build Coastguard Workergenrule {
229*ec779b8eSAndroid Build Coastguard Worker    name: "stats_media_metrics.cpp",
230*ec779b8eSAndroid Build Coastguard Worker    tools: ["stats-log-api-gen"],
231*ec779b8eSAndroid Build Coastguard Worker    cmd: "$(location stats-log-api-gen) --cpp $(genDir)/stats_media_metrics.cpp --module media_metrics --namespace android,stats,media_metrics --importHeader stats_media_metrics.h",
232*ec779b8eSAndroid Build Coastguard Worker    out: [
233*ec779b8eSAndroid Build Coastguard Worker        "stats_media_metrics.cpp",
234*ec779b8eSAndroid Build Coastguard Worker    ],
235*ec779b8eSAndroid Build Coastguard Worker}
236