summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cc/builder.go6
-rw-r--r--cc/cc.go6
-rw-r--r--cc/util.go3
3 files changed, 12 insertions, 3 deletions
diff --git a/cc/builder.go b/cc/builder.go
index 00dc742e8..554706ca8 100644
--- a/cc/builder.go
+++ b/cc/builder.go
@@ -271,6 +271,8 @@ type builderFlags struct {
sAbiDump bool
emitXrefs bool
+ assemblerWithCpp bool
+
systemIncludeFlags string
groupStaticLibs bool
@@ -428,7 +430,9 @@ func TransformSourceToObj(ctx android.ModuleContext, subdir string, srcFiles and
switch srcFile.Ext() {
case ".s":
- rule = ccNoDeps
+ if !flags.assemblerWithCpp {
+ rule = ccNoDeps
+ }
fallthrough
case ".S":
ccCmd = "clang"
diff --git a/cc/cc.go b/cc/cc.go
index 0245c6a18..4edbee6a6 100644
--- a/cc/cc.go
+++ b/cc/cc.go
@@ -174,7 +174,8 @@ type Flags struct {
CFlagsDeps android.Paths // Files depended on by compiler flags
LdFlagsDeps android.Paths // Files depended on by linker flags
- GroupStaticLibs bool
+ AssemblerWithCpp bool
+ GroupStaticLibs bool
proto android.ProtoFlags
protoC bool // Whether to use C instead of C++
@@ -1053,6 +1054,9 @@ func (c *Module) GenerateAndroidBuildActions(actx android.ModuleContext) {
if c.sabi != nil {
flags = c.sabi.flags(ctx, flags)
}
+
+ flags.AssemblerWithCpp = inList("-xassembler-with-cpp", flags.AsFlags)
+
// Optimization to reduce size of build.ninja
// Replace the long list of flags for each file with a module-local variable
ctx.Variable(pctx, "cflags", strings.Join(flags.CFlags, " "))
diff --git a/cc/util.go b/cc/util.go
index fb6338ac2..7b8ad1872 100644
--- a/cc/util.go
+++ b/cc/util.go
@@ -79,7 +79,8 @@ func flagsToBuilderFlags(in Flags) builderFlags {
systemIncludeFlags: strings.Join(in.SystemIncludeFlags, " "),
- groupStaticLibs: in.GroupStaticLibs,
+ assemblerWithCpp: in.AssemblerWithCpp,
+ groupStaticLibs: in.GroupStaticLibs,
proto: in.proto,
protoC: in.protoC,