summaryrefslogtreecommitdiff
path: root/cc/builder.go
diff options
context:
space:
mode:
Diffstat (limited to 'cc/builder.go')
-rw-r--r--cc/builder.go49
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