diff options
Diffstat (limited to 'cc/builder.go')
-rw-r--r-- | cc/builder.go | 49 |
1 files changed, 43 insertions, 6 deletions
diff --git a/cc/builder.go b/cc/builder.go index 51c8a0bdf..667d766a8 100644 --- a/cc/builder.go +++ b/cc/builder.go @@ -375,6 +375,7 @@ type builderFlags struct { toolchain config.Toolchain // True if these extra features are enabled. + sdclang bool tidy bool gcovCoverage bool sAbiDump bool @@ -585,7 +586,13 @@ func transformSourceToObj(ctx android.ModuleContext, subdir string, srcFiles and ccDesc := ccCmd - ccCmd = "${config.ClangBin}/" + ccCmd + var extraFlags string + if flags.sdclang { + ccCmd = "${config.SDClangBin}/" + ccCmd + extraFlags = " ${config.SDClangFlags}" + } else { + ccCmd = "${config.ClangBin}/" + ccCmd + } var implicitOutputs android.WritablePaths if coverage { @@ -603,7 +610,7 @@ func transformSourceToObj(ctx android.ModuleContext, subdir string, srcFiles and Implicits: cFlagsDeps, OrderOnly: pathDeps, Args: map[string]string{ - "cFlags": moduleFlags, + "cFlags": moduleFlags + extraFlags, "ccCmd": ccCmd, }, }) @@ -691,6 +698,9 @@ func transformObjToStaticLib(ctx android.ModuleContext, flags builderFlags, outputFile android.ModuleOutPath, deps android.Paths) { arCmd := "${config.ClangBin}/llvm-ar" + if flags.sdclang { + arCmd = "${config.SDClangBin}/llvm-ar" + } arFlags := "" if !ctx.Darwin() { arFlags += " -format=gnu" @@ -733,7 +743,14 @@ func transformObjToDynamicBinary(ctx android.ModuleContext, objFiles, sharedLibs, staticLibs, lateStaticLibs, wholeStaticLibs, deps android.Paths, crtBegin, crtEnd android.OptionalPath, groupLate bool, flags builderFlags, outputFile android.WritablePath, implicitOutputs android.WritablePaths) { - ldCmd := "${config.ClangBin}/clang++" + var ldCmd string + var extraFlags string + if flags.sdclang { + ldCmd = "${config.SDClangBin}/clang++" + extraFlags = " ${config.SDClangFlags}" + } else { + ldCmd = "${config.ClangBin}/clang++" + } var libFlagsList []string @@ -788,7 +805,7 @@ func transformObjToDynamicBinary(ctx android.ModuleContext, "crtBegin": crtBegin.String(), "libFlags": strings.Join(libFlagsList, " "), "extraLibFlags": flags.extraLibFlags, - "ldFlags": flags.globalLdFlags + " " + flags.localLdFlags, + "ldFlags": flags.globalLdFlags + " " + flags.localLdFlags + " " + extraFlags, "crtEnd": crtEnd.String(), } if ctx.Config().UseRBE() && ctx.Config().IsEnvTrue("RBE_CXX_LINKS") { @@ -903,6 +920,19 @@ func sourceAbiDiff(ctx android.ModuleContext, inputDump android.Path, referenceD if isVndkExt { extraFlags = append(extraFlags, "-allow-extensions") } + var sdclangAbiCheckIgnoreList = []string{ + "libbinder", + "libhwbinder", + "libprotobuf-cpp-lite", + "libprotobuf-cpp-full", + "libunwindstack", + "libvixl-arm64", + "libvixl-arm", + } + if config.SDClang && !inList("-advice-only", extraFlags) && + inList(ctx.ModuleName(), sdclangAbiCheckIgnoreList) { + extraFlags = append(extraFlags, "-advice-only") + } ctx.Build(pctx, android.BuildParams{ Rule: sAbiDiff, @@ -950,12 +980,19 @@ func transformSharedObjectToToc(ctx android.ModuleContext, inputFile android.Pat func transformObjsToObj(ctx android.ModuleContext, objFiles android.Paths, flags builderFlags, outputFile android.WritablePath, deps android.Paths) { - ldCmd := "${config.ClangBin}/clang++" + var ldCmd string + var extraFlags string + if flags.sdclang { + ldCmd = "${config.SDClangBin}/clang++" + extraFlags = " ${config.SDClangFlags}" + } else { + ldCmd = "${config.ClangBin}/clang++" + } rule := partialLd args := map[string]string{ "ldCmd": ldCmd, - "ldFlags": flags.globalLdFlags + " " + flags.localLdFlags, + "ldFlags": flags.globalLdFlags + " " + flags.localLdFlags + " " + extraFlags, } if ctx.Config().UseRBE() && ctx.Config().IsEnvTrue("RBE_CXX_LINKS") { rule = partialLdRE |