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