diff --git a/cc/compiler.go b/cc/compiler.go index 671861b0b..2bc6ae26e 100644 --- a/cc/compiler.go +++ b/cc/compiler.go @@ -27,6 +27,10 @@ import ( "android/soong/cc/config" ) +var ( + allowedManualInterfacePaths = []string{"vendor/", "hardware/"} +) + // This file contains the basic C/C++/assembly to .o compliation steps type BaseCompilerProperties struct { @@ -509,6 +513,12 @@ func (compiler *baseCompiler) compilerFlags(ctx ModuleContext, flags Flags, deps flags.Local.CFlags = append(flags.Local.CFlags, "-fopenmp") } + // Exclude directories from manual binder interface whitelisting. + //TODO(b/145621474): Move this check into IInterface.h when clang-tidy no longer uses absolute paths. + if android.PrefixInList(ctx.ModuleDir(), allowedManualInterfacePaths) { + flags.Local.CFlags = append(flags.Local.CFlags, "-DDO_NOT_CHECK_MANUAL_BINDER_INTERFACES") + } + return flags } diff --git a/cc/makevars.go b/cc/makevars.go index e8cedf0f6..0f9f4c1e1 100644 --- a/cc/makevars.go +++ b/cc/makevars.go @@ -147,6 +147,7 @@ func makeVarsProvider(ctx android.MakeVarsContext) { ctx.Strict("WITH_TIDY_FLAGS", "${config.TidyWithTidyFlags}") ctx.Strict("AIDL_CPP", "${aidlCmd}") + ctx.Strict("ALLOWED_MANUAL_INTERFACE_PATHS", strings.Join(allowedManualInterfacePaths, " ")) ctx.Strict("M4", "${m4Cmd}")