Allow custom ar flags to be set.
Adds the ability to set custom flags for ar in Soong, similar to how
they can currently be set for make.
Bug: 36290748
Test: sanitize.go is able to correct set custom ar flags for CFI. CFI
enabled Soong components build and boot without issue.
Change-Id: I3212793aa84ba51df910c184d8bb376b3650376e
diff --git a/cc/builder.go b/cc/builder.go
index 9a871d5..f3a4bcb 100644
--- a/cc/builder.go
+++ b/cc/builder.go
@@ -184,6 +184,7 @@
type builderFlags struct {
globalFlags string
+ arFlags string
asFlags string
cFlags string
conlyFlags string
@@ -367,6 +368,9 @@
arCmd := gccCmd(flags.toolchain, "ar")
arFlags := "crsPD"
+ if flags.arFlags != "" {
+ arFlags += " " + flags.arFlags
+ }
ctx.ModuleBuild(pctx, android.ModuleBuildParams{
Rule: ar,
diff --git a/cc/cc.go b/cc/cc.go
index ec95188..c5f1c35 100644
--- a/cc/cc.go
+++ b/cc/cc.go
@@ -96,6 +96,7 @@
type Flags struct {
GlobalFlags []string // Flags that apply to C, C++, and assembly source files
+ ArFlags []string // Flags that apply to ar
AsFlags []string // Flags that apply to assembly source files
CFlags []string // Flags that apply to C and C++ source files
ConlyFlags []string // Flags that apply to C source files
diff --git a/cc/util.go b/cc/util.go
index 570052e..919e14c 100644
--- a/cc/util.go
+++ b/cc/util.go
@@ -88,6 +88,7 @@
func flagsToBuilderFlags(in Flags) builderFlags {
return builderFlags{
globalFlags: strings.Join(in.GlobalFlags, " "),
+ arFlags: strings.Join(in.ArFlags, " "),
asFlags: strings.Join(in.AsFlags, " "),
cFlags: strings.Join(in.CFlags, " "),
conlyFlags: strings.Join(in.ConlyFlags, " "),