| package { |
| default_visibility: [":__subpackages__"], |
| default_applicable_licenses: ["system_bt_license"], |
| } |
| |
| // Added automatically by a large-scale-change that took the approach of |
| // 'apply every license found to every target'. While this makes sure we respect |
| // every license restriction, it may not be entirely correct. |
| // |
| // e.g. GPL in an MIT project might only apply to the contrib/ directory. |
| // |
| // Please consider splitting the single license below into multiple licenses, |
| // taking care not to lose any license_kind information, and overriding the |
| // default license using the 'licenses: [...]' property on targets as needed. |
| // |
| // For unused files, consider creating a 'fileGroup' with "//visibility:private" |
| // to attach the license to, and including a comment whether the files may be |
| // used in the current project. |
| // See: http://go/android-license-faq |
| license { |
| name: "system_bt_license", |
| visibility: [":__subpackages__"], |
| license_kinds: [ |
| "SPDX-license-identifier-Apache-2.0", |
| "SPDX-license-identifier-BSD", |
| "SPDX-license-identifier-MIT", |
| "legacy_unencumbered", |
| ], |
| license_text: [ |
| "NOTICE", |
| ], |
| } |
| |
| filegroup { |
| name: "BluetoothTestConfigTemplate", |
| srcs: [ |
| "AndroidTestTemplate.xml", |
| ], |
| } |
| |
| // This default contains properties that should be common to all the cc targets |
| // developed by the Bluetooth team. |
| // |
| // Be careful when adding new properties here: |
| // - The option should not impact negatively any target, for example "-Wno-*" |
| // options should not be added here but instead on every targets needing |
| // them to avoid allowing adding new warnings in targets that didn't contained |
| // them (you can use the bpmodify tool to ease the work of adding this warning |
| // everywhere) and also allows cleaning them one at a time. |
| // |
| // - The option should apply to all the c/c++ code developed by the Bluetooth team: |
| // test, tools, fuzzers, etc, not only production targets, if you need to add an option |
| // for a subset of Bluetooth cc targets you should look at the defaults including this |
| // defaults like "fluoride_defaults" and "gd_defaults". |
| // |
| // - Try to keep the name as precise as possible to document to the dependent of what |
| // this default contains. This also means that if you add a new option that isn't |
| // documented by the name of this default, rename it. |
| // |
| // - Try avoiding adding option that would not fit "future" targets, for example dependencies, |
| // even if every modules of Bluetooth depends on a specific dependency it should be left out |
| // from this default to not push it for future targets that might not need it. |
| cc_defaults { |
| name: "bluetooth_cflags", |
| cflags: [ |
| "-Wall", |
| "-Werror", |
| "-Wextra", |
| "-Wmissing-prototypes", |
| // Override global.go that demote the error to a warning |
| "-Werror=format", |
| "-Werror=reorder-init-list", |
| ], |
| c_std: "c99", |
| cpp_std: "c++20", |
| } |
| |
| // List of tidy checks that are enabled for cc targets. |
| // Note that the goal is not to enable all checks, many of them will |
| // appear as noise especially in the modernize-* range. |
| bluetooth_tidy_checks = [ |
| "-*", |
| "misc-*", |
| |
| // This check implements detection of local variables which could be declared |
| // as const but are not. |
| "-misc-const-correctness", |
| |
| // Finds classes that contain non-static data members in addition to user-declared |
| // non-static member functions and diagnose all data members declared with a |
| // non-public access specifier. |
| "-misc-non-private-member-variables-in-classes", |
| ] |
| |
| // This default tidy checks that will be run against all the cc targets |
| // developed by the Bluetooth team. |
| cc_defaults { |
| name: "bluetooth_tidy", |
| tidy: true, |
| tidy_checks: bluetooth_tidy_checks, |
| tidy_checks_as_errors: bluetooth_tidy_checks, |
| } |
| |
| java_defaults { |
| name: "bluetooth_errorprone_rules", |
| errorprone: { |
| enabled: true, |
| javacflags: [ |
| "-Xep:AlmostJavadoc:ERROR", |
| "-Xep:AlreadyChecked:ERROR", |
| "-Xep:BadImport:ERROR", |
| "-Xep:CatchAndPrintStackTrace:ERROR", |
| "-Xep:CatchFail:ERROR", |
| "-Xep:CheckReturnValue:ERROR", |
| "-Xep:ClassCanBeStatic:ERROR", |
| "-Xep:DateFormatConstant:ERROR", |
| "-Xep:DirectInvocationOnMock:ERROR", |
| "-Xep:EmptyBlockTag:ERROR", |
| "-Xep:EmptyCatch:ERROR", |
| "-Xep:EnumOrdinal:ERROR", |
| "-Xep:EqualsGetClass:ERROR", |
| "-Xep:EqualsHashCode:ERROR", |
| "-Xep:EqualsIncompatibleType:ERROR", |
| "-Xep:FallThrough:ERROR", |
| "-Xep:Finalize:ERROR", |
| "-Xep:FutureReturnValueIgnored:ERROR", |
| "-Xep:GuardedBy:ERROR", |
| "-Xep:HidingField:ERROR", |
| "-Xep:InconsistentHashCode:ERROR", |
| "-Xep:InlineFormatString:ERROR", |
| "-Xep:InlineMeInliner:ERROR", |
| "-Xep:InvalidBlockTag:ERROR", |
| "-Xep:InvalidInlineTag:ERROR", |
| "-Xep:InvalidParam:ERROR", |
| "-Xep:JavaUtilDate:ERROR", |
| "-Xep:JdkObsolete:ERROR", |
| "-Xep:LockOnNonEnclosingClassLiteral:ERROR", |
| "-Xep:LongFloatConversion:ERROR", |
| "-Xep:LoopOverCharArray:ERROR", |
| "-Xep:MissingCasesInEnumSwitch:ERROR", |
| "-Xep:MixedMutabilityReturnType:ERROR", |
| "-Xep:MockNotUsedInProduction:ERROR", |
| "-Xep:ModifiedButNotUsed:ERROR", |
| "-Xep:ModifyCollectionInEnhancedForLoop:ERROR", |
| "-Xep:NarrowCalculation:ERROR", |
| "-Xep:NarrowingCompoundAssignment:ERROR", |
| "-Xep:NonApiType:ERROR", |
| "-Xep:NonAtomicVolatileUpdate:ERROR", |
| "-Xep:NonCanonicalType:ERROR", |
| "-Xep:NotJavadoc:ERROR", |
| "-Xep:NullablePrimitive:ERROR", |
| "-Xep:NullableVoid:ERROR", |
| "-Xep:ObjectEqualsForPrimitives:ERROR", |
| "-Xep:OperatorPrecedence:ERROR", |
| "-Xep:ReferenceEquality:ERROR", |
| "-Xep:ReturnAtTheEndOfVoidFunction:ERROR", |
| "-Xep:ReturnFromVoid:ERROR", |
| "-Xep:StaticAssignmentInConstructor:ERROR", |
| "-Xep:StaticGuardedByInstance:ERROR", |
| "-Xep:StringCaseLocaleUsage:ERROR", |
| "-Xep:StringCharset:ERROR", |
| "-Xep:SynchronizeOnNonFinalField:ERROR", |
| "-Xep:ToStringReturnsNull:ERROR", |
| "-Xep:TruthConstantAsserts:ERROR", |
| "-Xep:TruthIncompatibleType:ERROR", |
| "-Xep:UndefinedEquals:ERROR", |
| "-Xep:UnnecessaryAssignment:ERROR", |
| "-Xep:UnnecessaryAsync:ERROR", |
| "-Xep:UnnecessaryStringBuilder:ERROR", |
| "-Xep:UnrecognisedJavadocTag:ERROR", |
| "-Xep:UnusedMethod:ERROR", |
| "-Xep:UnusedNestedClass:ERROR", |
| "-Xep:UnusedVariable:ERROR", |
| "-Xep:VariableNameSameAsType:ERROR", |
| "-Xep:WaitNotInLoop:ERROR", |
| "-Xep:WakelockReleasedDangerously:ERROR", |
| |
| // Exclude generated files |
| "-XepExcludedPaths:.*/srcjars/.*", |
| |
| // The @InlineMe annotation could be made available, but it would |
| // apply on external facing API. This is not desired. |
| // For more context, see https://r.android.com/3303475 |
| "-Xep:InlineMeSuggester:OFF", |
| ], |
| }, |
| } |
| |
| java_defaults { |
| name: "bluetooth_framework_errorprone_rules", |
| defaults: ["bluetooth_errorprone_rules"], |
| errorprone: { |
| extra_check_modules: ["error_prone_android_framework"], |
| |
| javacflags: [ |
| "-Xep:AndroidFrameworkBinderIdentity:ERROR", |
| "-Xep:AndroidFrameworkBluetoothPermission:ERROR", |
| "-Xep:AndroidFrameworkCompatChange:ERROR", |
| "-Xep:AndroidFrameworkEfficientParcelable:ERROR", |
| "-Xep:AndroidFrameworkEfficientStrings:ERROR", |
| "-Xep:AndroidFrameworkPendingIntentMutability:ERROR", |
| "-Xep:AndroidFrameworkRequiresPermission:ERROR", |
| "-Xep:AndroidFrameworkRethrowFromSystem:ERROR", |
| "-Xep:AndroidFrameworkTargetSdk:ERROR", |
| "-Xep:AndroidHideInComments:ERROR", |
| |
| // After fixing this errorprone, we decided to not merge the change. |
| // It is not very readable and the benefits are minimal when looking |
| // at the size of the maps used in the Bluetooth application. |
| // See https://r.android.com/3200511 |
| "-Xep:AndroidFrameworkEfficientCollections:OFF", |
| |
| // Does not look pertinent in our situation |
| "-Xep:AndroidFrameworkEfficientXml:OFF", |
| ], |
| }, |
| } |