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