xref: /aosp_15_r20/frameworks/av/services/audioflinger/Android.bp (revision ec779b8e0859a360c3d303172224686826e6e0e1)
1*ec779b8eSAndroid Build Coastguard Worker
2*ec779b8eSAndroid Build Coastguard Worker
3*ec779b8eSAndroid Build Coastguard Workerpackage {
4*ec779b8eSAndroid Build Coastguard Worker    default_applicable_licenses: [
5*ec779b8eSAndroid Build Coastguard Worker        "frameworks_av_services_audioflinger_license",
6*ec779b8eSAndroid Build Coastguard Worker    ],
7*ec779b8eSAndroid Build Coastguard Worker}
8*ec779b8eSAndroid Build Coastguard Worker
9*ec779b8eSAndroid Build Coastguard Worker// Added automatically by a large-scale-change
10*ec779b8eSAndroid Build Coastguard Worker// See: http://go/android-license-faq
11*ec779b8eSAndroid Build Coastguard Workerlicense {
12*ec779b8eSAndroid Build Coastguard Worker    name: "frameworks_av_services_audioflinger_license",
13*ec779b8eSAndroid Build Coastguard Worker    visibility: [":__subpackages__"],
14*ec779b8eSAndroid Build Coastguard Worker    license_kinds: [
15*ec779b8eSAndroid Build Coastguard Worker        "SPDX-license-identifier-Apache-2.0",
16*ec779b8eSAndroid Build Coastguard Worker    ],
17*ec779b8eSAndroid Build Coastguard Worker    license_text: [
18*ec779b8eSAndroid Build Coastguard Worker        "NOTICE",
19*ec779b8eSAndroid Build Coastguard Worker    ],
20*ec779b8eSAndroid Build Coastguard Worker}
21*ec779b8eSAndroid Build Coastguard Worker
22*ec779b8eSAndroid Build Coastguard Worker// base tidy_errors for this and all subprojects.
23*ec779b8eSAndroid Build Coastguard Workeraudioflinger_base_tidy_errors = [
24*ec779b8eSAndroid Build Coastguard Worker    // https://clang.llvm.org/extra/clang-tidy/checks/list.html
25*ec779b8eSAndroid Build Coastguard Worker    // For many categories, the checks are too many to specify individually.
26*ec779b8eSAndroid Build Coastguard Worker    // Feel free to disable as needed - as warnings are generally ignored,
27*ec779b8eSAndroid Build Coastguard Worker    // we treat warnings as errors.
28*ec779b8eSAndroid Build Coastguard Worker    "android-*",
29*ec779b8eSAndroid Build Coastguard Worker    "bugprone-*",
30*ec779b8eSAndroid Build Coastguard Worker    "cert-*",
31*ec779b8eSAndroid Build Coastguard Worker    "clang-analyzer-security*",
32*ec779b8eSAndroid Build Coastguard Worker    "google-*",
33*ec779b8eSAndroid Build Coastguard Worker    "misc-*",
34*ec779b8eSAndroid Build Coastguard Worker    //"modernize-*",  // explicitly list the modernize as they can be subjective.
35*ec779b8eSAndroid Build Coastguard Worker    "modernize-avoid-bind",
36*ec779b8eSAndroid Build Coastguard Worker    //"modernize-avoid-c-arrays", // std::array<> can be verbose
37*ec779b8eSAndroid Build Coastguard Worker    "modernize-concat-nested-namespaces",
38*ec779b8eSAndroid Build Coastguard Worker    //"modernize-deprecated-headers", // C headers still ok even if there is C++ equivalent.
39*ec779b8eSAndroid Build Coastguard Worker    "modernize-deprecated-ios-base-aliases",
40*ec779b8eSAndroid Build Coastguard Worker    "modernize-loop-convert",
41*ec779b8eSAndroid Build Coastguard Worker    "modernize-make-shared",
42*ec779b8eSAndroid Build Coastguard Worker    "modernize-make-unique",
43*ec779b8eSAndroid Build Coastguard Worker    // "modernize-pass-by-value",
44*ec779b8eSAndroid Build Coastguard Worker    "modernize-raw-string-literal",
45*ec779b8eSAndroid Build Coastguard Worker    "modernize-redundant-void-arg",
46*ec779b8eSAndroid Build Coastguard Worker    "modernize-replace-auto-ptr",
47*ec779b8eSAndroid Build Coastguard Worker    "modernize-replace-random-shuffle",
48*ec779b8eSAndroid Build Coastguard Worker    "modernize-return-braced-init-list",
49*ec779b8eSAndroid Build Coastguard Worker    "modernize-shrink-to-fit",
50*ec779b8eSAndroid Build Coastguard Worker    "modernize-unary-static-assert",
51*ec779b8eSAndroid Build Coastguard Worker    // "modernize-use-auto",  // found in MediaMetricsService.h, debatable - auto can obscure type
52*ec779b8eSAndroid Build Coastguard Worker    "modernize-use-bool-literals",
53*ec779b8eSAndroid Build Coastguard Worker    "modernize-use-default-member-init",
54*ec779b8eSAndroid Build Coastguard Worker    "modernize-use-emplace",
55*ec779b8eSAndroid Build Coastguard Worker    "modernize-use-equals-default",
56*ec779b8eSAndroid Build Coastguard Worker    "modernize-use-equals-delete",
57*ec779b8eSAndroid Build Coastguard Worker    // "modernize-use-nodiscard",
58*ec779b8eSAndroid Build Coastguard Worker    "modernize-use-noexcept",
59*ec779b8eSAndroid Build Coastguard Worker    "modernize-use-nullptr",
60*ec779b8eSAndroid Build Coastguard Worker    "modernize-use-override",
61*ec779b8eSAndroid Build Coastguard Worker    //"modernize-use-trailing-return-type", // not necessarily more readable
62*ec779b8eSAndroid Build Coastguard Worker    "modernize-use-transparent-functors",
63*ec779b8eSAndroid Build Coastguard Worker    "modernize-use-uncaught-exceptions",
64*ec779b8eSAndroid Build Coastguard Worker    "modernize-use-using",
65*ec779b8eSAndroid Build Coastguard Worker    "performance-*",
66*ec779b8eSAndroid Build Coastguard Worker
67*ec779b8eSAndroid Build Coastguard Worker    // Remove some pedantic stylistic requirements.
68*ec779b8eSAndroid Build Coastguard Worker    "-google-readability-casting", // C++ casts not always necessary and may be verbose
69*ec779b8eSAndroid Build Coastguard Worker    "-google-readability-todo", // do not require TODO(info)
70*ec779b8eSAndroid Build Coastguard Worker
71*ec779b8eSAndroid Build Coastguard Worker    "-bugprone-narrowing-conversions", // b/182410845
72*ec779b8eSAndroid Build Coastguard Worker    "-bugprone-suspicious-string-compare",
73*ec779b8eSAndroid Build Coastguard Worker    "-bugprone-unhandled-self-assignment",
74*ec779b8eSAndroid Build Coastguard Worker    "-cert-oop54-cpp", // found in TransactionLog.h
75*ec779b8eSAndroid Build Coastguard Worker]
76*ec779b8eSAndroid Build Coastguard Worker
77*ec779b8eSAndroid Build Coastguard Worker// TODO(b/275642749) Reenable these warnings
78*ec779b8eSAndroid Build Coastguard Workeraudioflinger_tidy_errors = audioflinger_base_tidy_errors + [
79*ec779b8eSAndroid Build Coastguard Worker    "-bugprone-assignment-in-if-condition",
80*ec779b8eSAndroid Build Coastguard Worker    "-bugprone-forward-declaration-namespace",
81*ec779b8eSAndroid Build Coastguard Worker    "-bugprone-parent-virtual-call",
82*ec779b8eSAndroid Build Coastguard Worker    "-cert-dcl59-cpp",
83*ec779b8eSAndroid Build Coastguard Worker    "-cert-err34-c",
84*ec779b8eSAndroid Build Coastguard Worker    "-google-build-namespaces",
85*ec779b8eSAndroid Build Coastguard Worker    "-google-build-using-namespace",
86*ec779b8eSAndroid Build Coastguard Worker    "-google-default-arguments",
87*ec779b8eSAndroid Build Coastguard Worker    "-google-runtime-int",
88*ec779b8eSAndroid Build Coastguard Worker    "-misc-const-correctness",
89*ec779b8eSAndroid Build Coastguard Worker    "-misc-non-private-member-variables-in-classes",
90*ec779b8eSAndroid Build Coastguard Worker    "-modernize-concat-nested-namespaces",
91*ec779b8eSAndroid Build Coastguard Worker    "-modernize-loop-convert",
92*ec779b8eSAndroid Build Coastguard Worker    "-modernize-use-default-member-init",
93*ec779b8eSAndroid Build Coastguard Worker    "-modernize-use-equals-default",
94*ec779b8eSAndroid Build Coastguard Worker    "-modernize-use-nullptr",
95*ec779b8eSAndroid Build Coastguard Worker    "-modernize-use-override",
96*ec779b8eSAndroid Build Coastguard Worker    "-modernize-use-using",
97*ec779b8eSAndroid Build Coastguard Worker    "-performance-no-int-to-ptr",
98*ec779b8eSAndroid Build Coastguard Worker]
99*ec779b8eSAndroid Build Coastguard Worker
100*ec779b8eSAndroid Build Coastguard Workeraudioflinger_base_cflags = [
101*ec779b8eSAndroid Build Coastguard Worker    "-Wall",
102*ec779b8eSAndroid Build Coastguard Worker    "-Wdeprecated",
103*ec779b8eSAndroid Build Coastguard Worker    "-Werror",
104*ec779b8eSAndroid Build Coastguard Worker    "-Werror=conditional-uninitialized",
105*ec779b8eSAndroid Build Coastguard Worker    "-Werror=implicit-fallthrough",
106*ec779b8eSAndroid Build Coastguard Worker    "-Werror=sometimes-uninitialized",
107*ec779b8eSAndroid Build Coastguard Worker    "-Wextra",
108*ec779b8eSAndroid Build Coastguard Worker
109*ec779b8eSAndroid Build Coastguard Worker    // suppress some warning chatter.
110*ec779b8eSAndroid Build Coastguard Worker    "-Wno-deprecated-copy-with-dtor",
111*ec779b8eSAndroid Build Coastguard Worker    "-Wno-deprecated-copy-with-user-provided-dtor",
112*ec779b8eSAndroid Build Coastguard Worker
113*ec779b8eSAndroid Build Coastguard Worker    "-Wredundant-decls",
114*ec779b8eSAndroid Build Coastguard Worker    "-Wshadow",
115*ec779b8eSAndroid Build Coastguard Worker    "-Wstrict-aliasing",
116*ec779b8eSAndroid Build Coastguard Worker    "-Wthread-safety",
117*ec779b8eSAndroid Build Coastguard Worker    //"-Wthread-safety-negative", // experimental - looks broken in R.
118*ec779b8eSAndroid Build Coastguard Worker    "-Wunreachable-code",
119*ec779b8eSAndroid Build Coastguard Worker    "-Wunreachable-code-break",
120*ec779b8eSAndroid Build Coastguard Worker    "-Wunreachable-code-return",
121*ec779b8eSAndroid Build Coastguard Worker    "-Wunused",
122*ec779b8eSAndroid Build Coastguard Worker    "-Wused-but-marked-unused",
123*ec779b8eSAndroid Build Coastguard Worker    "-fstrict-aliasing",
124*ec779b8eSAndroid Build Coastguard Worker]
125*ec779b8eSAndroid Build Coastguard Worker
126*ec779b8eSAndroid Build Coastguard Worker// Eventually use common tidy defaults
127*ec779b8eSAndroid Build Coastguard Workercc_defaults {
128*ec779b8eSAndroid Build Coastguard Worker    name: "audioflinger_flags_defaults",
129*ec779b8eSAndroid Build Coastguard Worker    // https://clang.llvm.org/docs/UsersManual.html#command-line-options
130*ec779b8eSAndroid Build Coastguard Worker    // https://clang.llvm.org/docs/DiagnosticsReference.html
131*ec779b8eSAndroid Build Coastguard Worker    cflags: audioflinger_base_cflags,
132*ec779b8eSAndroid Build Coastguard Worker    // https://clang.llvm.org/extra/clang-tidy/
133*ec779b8eSAndroid Build Coastguard Worker    tidy: true,
134*ec779b8eSAndroid Build Coastguard Worker    tidy_checks: audioflinger_tidy_errors,
135*ec779b8eSAndroid Build Coastguard Worker    tidy_checks_as_errors: audioflinger_tidy_errors,
136*ec779b8eSAndroid Build Coastguard Worker    tidy_flags: [
137*ec779b8eSAndroid Build Coastguard Worker        "-format-style=file",
138*ec779b8eSAndroid Build Coastguard Worker    ],
139*ec779b8eSAndroid Build Coastguard Worker}
140*ec779b8eSAndroid Build Coastguard Worker
141*ec779b8eSAndroid Build Coastguard Workercc_defaults {
142*ec779b8eSAndroid Build Coastguard Worker    name: "libaudioflinger_dependencies",
143*ec779b8eSAndroid Build Coastguard Worker
144*ec779b8eSAndroid Build Coastguard Worker    header_libs: [
145*ec779b8eSAndroid Build Coastguard Worker        "libaudiohal_headers", // required for AudioFlinger
146*ec779b8eSAndroid Build Coastguard Worker    ],
147*ec779b8eSAndroid Build Coastguard Worker
148*ec779b8eSAndroid Build Coastguard Worker    shared_libs: [
149*ec779b8eSAndroid Build Coastguard Worker        "audio-permission-aidl-cpp",
150*ec779b8eSAndroid Build Coastguard Worker        "audioclient-types-aidl-cpp",
151*ec779b8eSAndroid Build Coastguard Worker        "audioflinger-aidl-cpp",
152*ec779b8eSAndroid Build Coastguard Worker        "libaudiopermission",
153*ec779b8eSAndroid Build Coastguard Worker        "av-types-aidl-cpp",
154*ec779b8eSAndroid Build Coastguard Worker        "com.android.media.audio-aconfig-cc",
155*ec779b8eSAndroid Build Coastguard Worker        "com.android.media.audioserver-aconfig-cc",
156*ec779b8eSAndroid Build Coastguard Worker        "effect-aidl-cpp",
157*ec779b8eSAndroid Build Coastguard Worker        "libactivitymanager_aidl",
158*ec779b8eSAndroid Build Coastguard Worker        "libaudioclient",
159*ec779b8eSAndroid Build Coastguard Worker        "libaudioclient_aidl_conversion",
160*ec779b8eSAndroid Build Coastguard Worker        "libaudioflinger_datapath",
161*ec779b8eSAndroid Build Coastguard Worker        "libaudioflinger_fastpath",
162*ec779b8eSAndroid Build Coastguard Worker        "libaudioflinger_timing",
163*ec779b8eSAndroid Build Coastguard Worker        "libaudioflinger_utils",
164*ec779b8eSAndroid Build Coastguard Worker        "libaudiofoundation",
165*ec779b8eSAndroid Build Coastguard Worker        "libaudiohal",
166*ec779b8eSAndroid Build Coastguard Worker        "libaudiomanager",
167*ec779b8eSAndroid Build Coastguard Worker        "libaudioprocessing",
168*ec779b8eSAndroid Build Coastguard Worker        "libaudioutils",
169*ec779b8eSAndroid Build Coastguard Worker        "libbinder",
170*ec779b8eSAndroid Build Coastguard Worker        "libbinder_ndk",
171*ec779b8eSAndroid Build Coastguard Worker        "libcutils",
172*ec779b8eSAndroid Build Coastguard Worker        "liblog",
173*ec779b8eSAndroid Build Coastguard Worker        "libmedia_helper",
174*ec779b8eSAndroid Build Coastguard Worker        "libmediametrics",
175*ec779b8eSAndroid Build Coastguard Worker        "libmediautils",
176*ec779b8eSAndroid Build Coastguard Worker        "libmemunreachable",
177*ec779b8eSAndroid Build Coastguard Worker        "libnbaio",
178*ec779b8eSAndroid Build Coastguard Worker        "libnblog",
179*ec779b8eSAndroid Build Coastguard Worker        "libpermission",
180*ec779b8eSAndroid Build Coastguard Worker        "libpowermanager",
181*ec779b8eSAndroid Build Coastguard Worker        "libshmemcompat",
182*ec779b8eSAndroid Build Coastguard Worker        "libsounddose",
183*ec779b8eSAndroid Build Coastguard Worker        "libutils",
184*ec779b8eSAndroid Build Coastguard Worker        "libvibrator",
185*ec779b8eSAndroid Build Coastguard Worker        "packagemanager_aidl-cpp",
186*ec779b8eSAndroid Build Coastguard Worker    ],
187*ec779b8eSAndroid Build Coastguard Worker}
188*ec779b8eSAndroid Build Coastguard Worker
189*ec779b8eSAndroid Build Coastguard Workercc_library {
190*ec779b8eSAndroid Build Coastguard Worker    name: "libaudioflinger",
191*ec779b8eSAndroid Build Coastguard Worker
192*ec779b8eSAndroid Build Coastguard Worker    defaults: [
193*ec779b8eSAndroid Build Coastguard Worker        "audioflinger_flags_defaults",
194*ec779b8eSAndroid Build Coastguard Worker        "latest_android_hardware_audio_core_sounddose_ndk_export_shared_lib_header",
195*ec779b8eSAndroid Build Coastguard Worker        "latest_android_hardware_audio_core_sounddose_ndk_shared",
196*ec779b8eSAndroid Build Coastguard Worker        "latest_android_media_audio_common_types_cpp_shared",
197*ec779b8eSAndroid Build Coastguard Worker        "libaudioflinger_dependencies",
198*ec779b8eSAndroid Build Coastguard Worker    ],
199*ec779b8eSAndroid Build Coastguard Worker
200*ec779b8eSAndroid Build Coastguard Worker    srcs: [
201*ec779b8eSAndroid Build Coastguard Worker        "AudioFlinger.cpp",
202*ec779b8eSAndroid Build Coastguard Worker        "Client.cpp",
203*ec779b8eSAndroid Build Coastguard Worker        "DeviceEffectManager.cpp",
204*ec779b8eSAndroid Build Coastguard Worker        "Effects.cpp",
205*ec779b8eSAndroid Build Coastguard Worker        "MelReporter.cpp",
206*ec779b8eSAndroid Build Coastguard Worker        "PatchCommandThread.cpp",
207*ec779b8eSAndroid Build Coastguard Worker        "PatchPanel.cpp",
208*ec779b8eSAndroid Build Coastguard Worker        "Threads.cpp",
209*ec779b8eSAndroid Build Coastguard Worker        "Tracks.cpp",
210*ec779b8eSAndroid Build Coastguard Worker    ],
211*ec779b8eSAndroid Build Coastguard Worker
212*ec779b8eSAndroid Build Coastguard Worker    include_dirs: [
213*ec779b8eSAndroid Build Coastguard Worker        "frameworks/av/services/audiopolicy",
214*ec779b8eSAndroid Build Coastguard Worker        "frameworks/av/services/medialog",
215*ec779b8eSAndroid Build Coastguard Worker    ],
216*ec779b8eSAndroid Build Coastguard Worker
217*ec779b8eSAndroid Build Coastguard Worker    static_libs: [
218*ec779b8eSAndroid Build Coastguard Worker        "libaudiospdif",
219*ec779b8eSAndroid Build Coastguard Worker        "libcpustats",
220*ec779b8eSAndroid Build Coastguard Worker        "libmedialogservice",
221*ec779b8eSAndroid Build Coastguard Worker    ],
222*ec779b8eSAndroid Build Coastguard Worker
223*ec779b8eSAndroid Build Coastguard Worker    header_libs: [
224*ec779b8eSAndroid Build Coastguard Worker        "audiopolicyservicelocal_headers",
225*ec779b8eSAndroid Build Coastguard Worker        "libaaudio_headers",
226*ec779b8eSAndroid Build Coastguard Worker        "libmedia_headers",
227*ec779b8eSAndroid Build Coastguard Worker    ],
228*ec779b8eSAndroid Build Coastguard Worker
229*ec779b8eSAndroid Build Coastguard Worker    export_header_lib_headers: ["audiopolicyservicelocal_headers"],
230*ec779b8eSAndroid Build Coastguard Worker
231*ec779b8eSAndroid Build Coastguard Worker    export_include_dirs: ["."],
232*ec779b8eSAndroid Build Coastguard Worker
233*ec779b8eSAndroid Build Coastguard Worker    export_shared_lib_headers: [
234*ec779b8eSAndroid Build Coastguard Worker        "libpermission",
235*ec779b8eSAndroid Build Coastguard Worker    ],
236*ec779b8eSAndroid Build Coastguard Worker
237*ec779b8eSAndroid Build Coastguard Worker    export_static_lib_headers: [
238*ec779b8eSAndroid Build Coastguard Worker        "libpshutils",
239*ec779b8eSAndroid Build Coastguard Worker    ],
240*ec779b8eSAndroid Build Coastguard Worker
241*ec779b8eSAndroid Build Coastguard Worker    shared: {
242*ec779b8eSAndroid Build Coastguard Worker        static_libs: [
243*ec779b8eSAndroid Build Coastguard Worker            "libpshutils",
244*ec779b8eSAndroid Build Coastguard Worker        ],
245*ec779b8eSAndroid Build Coastguard Worker    },
246*ec779b8eSAndroid Build Coastguard Worker
247*ec779b8eSAndroid Build Coastguard Worker    static: {
248*ec779b8eSAndroid Build Coastguard Worker        whole_static_libs: [
249*ec779b8eSAndroid Build Coastguard Worker            "libpshutils",
250*ec779b8eSAndroid Build Coastguard Worker        ],
251*ec779b8eSAndroid Build Coastguard Worker    },
252*ec779b8eSAndroid Build Coastguard Worker
253*ec779b8eSAndroid Build Coastguard Worker    cflags: [
254*ec779b8eSAndroid Build Coastguard Worker        "-Wall",
255*ec779b8eSAndroid Build Coastguard Worker        "-Werror",
256*ec779b8eSAndroid Build Coastguard Worker        "-fvisibility=hidden",
257*ec779b8eSAndroid Build Coastguard Worker    ],
258*ec779b8eSAndroid Build Coastguard Worker    sanitize: {
259*ec779b8eSAndroid Build Coastguard Worker        integer_overflow: true,
260*ec779b8eSAndroid Build Coastguard Worker    },
261*ec779b8eSAndroid Build Coastguard Worker
262*ec779b8eSAndroid Build Coastguard Worker}
263*ec779b8eSAndroid Build Coastguard Worker
264*ec779b8eSAndroid Build Coastguard Workercc_library_headers {
265*ec779b8eSAndroid Build Coastguard Worker    name: "libaudioflinger_headers",
266*ec779b8eSAndroid Build Coastguard Worker    export_include_dirs: ["."],
267*ec779b8eSAndroid Build Coastguard Worker}
268