blob: 0c878c9b2157f1986353e80f73894d684667a4df [file] [log] [blame]
package {
default_applicable_licenses: [
"frameworks_av_services_audioflinger_license",
],
}
// Added automatically by a large-scale-change
// See: http://go/android-license-faq
license {
name: "frameworks_av_services_audioflinger_license",
visibility: [":__subpackages__"],
license_kinds: [
"SPDX-license-identifier-Apache-2.0",
],
license_text: [
"NOTICE",
],
}
// base tidy_errors for this and all subprojects.
audioflinger_base_tidy_errors = [
// https://clang.llvm.org/extra/clang-tidy/checks/list.html
// For many categories, the checks are too many to specify individually.
// Feel free to disable as needed - as warnings are generally ignored,
// we treat warnings as errors.
"android-*",
"bugprone-*",
"cert-*",
"clang-analyzer-security*",
"google-*",
"misc-*",
//"modernize-*", // explicitly list the modernize as they can be subjective.
"modernize-avoid-bind",
//"modernize-avoid-c-arrays", // std::array<> can be verbose
"modernize-concat-nested-namespaces",
//"modernize-deprecated-headers", // C headers still ok even if there is C++ equivalent.
"modernize-deprecated-ios-base-aliases",
"modernize-loop-convert",
"modernize-make-shared",
"modernize-make-unique",
// "modernize-pass-by-value",
"modernize-raw-string-literal",
"modernize-redundant-void-arg",
"modernize-replace-auto-ptr",
"modernize-replace-random-shuffle",
"modernize-return-braced-init-list",
"modernize-shrink-to-fit",
"modernize-unary-static-assert",
// "modernize-use-auto", // found in MediaMetricsService.h, debatable - auto can obscure type
"modernize-use-bool-literals",
"modernize-use-default-member-init",
"modernize-use-emplace",
"modernize-use-equals-default",
"modernize-use-equals-delete",
// "modernize-use-nodiscard",
"modernize-use-noexcept",
"modernize-use-nullptr",
"modernize-use-override",
//"modernize-use-trailing-return-type", // not necessarily more readable
"modernize-use-transparent-functors",
"modernize-use-uncaught-exceptions",
"modernize-use-using",
"performance-*",
// Remove some pedantic stylistic requirements.
"-google-readability-casting", // C++ casts not always necessary and may be verbose
"-google-readability-todo", // do not require TODO(info)
"-bugprone-unhandled-self-assignment",
"-bugprone-suspicious-string-compare",
"-cert-oop54-cpp", // found in TransactionLog.h
"-bugprone-narrowing-conversions", // b/182410845
]
// TODO(b/275642749) Reenable these warnings
audioflinger_tidy_errors = audioflinger_base_tidy_errors + [
"-bugprone-assignment-in-if-condition",
"-bugprone-forward-declaration-namespace",
"-bugprone-parent-virtual-call",
"-cert-dcl59-cpp",
"-cert-err34-c",
"-google-build-namespaces",
"-google-build-using-namespace",
"-google-default-arguments",
"-google-runtime-int",
"-misc-const-correctness",
"-misc-non-private-member-variables-in-classes",
"-modernize-concat-nested-namespaces",
"-modernize-loop-convert",
"-modernize-use-default-member-init",
"-modernize-use-equals-default",
"-modernize-use-nullptr",
"-modernize-use-override",
"-modernize-use-using",
"-performance-no-int-to-ptr",
]
audioflinger_base_cflags = [
"-Wall",
"-Wdeprecated",
"-Werror",
"-Werror=implicit-fallthrough",
"-Werror=sometimes-uninitialized",
"-Werror=conditional-uninitialized",
"-Wextra",
// suppress some warning chatter.
"-Wno-deprecated-copy-with-dtor",
"-Wno-deprecated-copy-with-user-provided-dtor",
"-Wredundant-decls",
"-Wshadow",
"-Wstrict-aliasing",
"-fstrict-aliasing",
"-Wthread-safety",
//"-Wthread-safety-negative", // experimental - looks broken in R.
"-Wunreachable-code",
"-Wunreachable-code-break",
"-Wunreachable-code-return",
"-Wunused",
"-Wused-but-marked-unused",
]
// Eventually use common tidy defaults
cc_defaults {
name: "audioflinger_flags_defaults",
// https://clang.llvm.org/docs/UsersManual.html#command-line-options
// https://clang.llvm.org/docs/DiagnosticsReference.html
cflags: audioflinger_base_cflags,
// https://clang.llvm.org/extra/clang-tidy/
tidy: true,
tidy_checks: audioflinger_tidy_errors,
tidy_checks_as_errors: audioflinger_tidy_errors,
tidy_flags: [
"-format-style=file",
],
}
cc_library_shared {
name: "libaudioflinger",
defaults: [
"audioflinger_flags_defaults",
"latest_android_hardware_audio_core_sounddose_ndk_export_shared_lib_header",
"latest_android_hardware_audio_core_sounddose_ndk_shared",
"latest_android_media_audio_common_types_cpp_shared",
],
srcs: [
"AudioFlinger.cpp",
"Client.cpp",
"DeviceEffectManager.cpp",
"Effects.cpp",
"MelReporter.cpp",
"PatchCommandThread.cpp",
"PatchPanel.cpp",
"Threads.cpp",
"Tracks.cpp",
],
include_dirs: [
"frameworks/av/services/audiopolicy",
"frameworks/av/services/medialog",
],
shared_libs: [
"audioflinger-aidl-cpp",
"audioclient-types-aidl-cpp",
"av-types-aidl-cpp",
"effect-aidl-cpp",
"libaudioclient_aidl_conversion",
"libactivitymanager_aidl",
"libaudioflinger_datapath",
"libaudioflinger_fastpath",
"libaudioflinger_timing",
"libaudioflinger_utils",
"libaudiofoundation",
"libaudiohal",
"libaudioprocessing",
"libaudiospdif",
"libaudioutils",
"libcutils",
"libutils",
"liblog",
"libbinder",
"libbinder_ndk",
"libaudioclient",
"libaudiomanager",
"libmedialogservice",
"libmediametrics",
"libmediautils",
"libnbaio",
"libnblog",
"libpermission",
"libpowermanager",
"libmemunreachable",
"libmedia_helper",
"libshmemcompat",
"libsounddose",
"libvibrator",
"packagemanager_aidl-cpp",
],
static_libs: [
"libcpustats",
"libpermission",
],
header_libs: [
"libaaudio_headers",
"libaudioclient_headers",
"libaudiohal_headers",
"libaudioutils_headers",
"libmedia_headers",
],
export_shared_lib_headers: [
"libpermission",
],
cflags: [
"-fvisibility=hidden",
"-Werror",
"-Wall",
],
sanitize: {
integer_overflow: true,
},
}
cc_library_headers {
name: "libaudioflinger_headers",
export_include_dirs: ["."],
}