Merge "Replace `is_uses_lib` property with `provides_uses_lib`."
diff --git a/apex/apex.go b/apex/apex.go
index 62d91da..c95ee94 100644
--- a/apex/apex.go
+++ b/apex/apex.go
@@ -1189,6 +1189,8 @@
overriddenPackageName string // only for apps
isJniLib bool
+
+ noticeFiles android.Paths
}
func newApexFile(ctx android.BaseModuleContext, builtFile android.Path, androidMkModuleName string, installDir string, class apexFileClass, module android.Module) apexFile {
@@ -1204,6 +1206,7 @@
ret.requiredModuleNames = module.RequiredModuleNames()
ret.targetRequiredModuleNames = module.TargetRequiredModuleNames()
ret.hostRequiredModuleNames = module.HostRequiredModuleNames()
+ ret.noticeFiles = module.NoticeFiles()
}
return ret
}
diff --git a/apex/builder.go b/apex/builder.go
index 22cd69b..60e535f 100644
--- a/apex/builder.go
+++ b/apex/builder.go
@@ -286,6 +286,10 @@
return true
})
+ for _, fi := range a.filesInfo {
+ noticeFiles = append(noticeFiles, fi.noticeFiles...)
+ }
+
if len(noticeFiles) == 0 {
return android.NoticeOutputs{}
}
@@ -652,7 +656,7 @@
a.container_certificate_file,
a.container_private_key_file,
}
- if ctx.Config().IsEnvTrue("RBE_SIGNAPK") {
+ if ctx.Config().UseRBE() && ctx.Config().IsEnvTrue("RBE_SIGNAPK") {
rule = java.SignapkRE
args["implicits"] = strings.Join(implicits.Strings(), ",")
args["outCommaList"] = a.outputFile.String()
diff --git a/cc/builder.go b/cc/builder.go
index 81d2f1e..ef65348 100644
--- a/cc/builder.go
+++ b/cc/builder.go
@@ -584,7 +584,7 @@
tidyFiles = append(tidyFiles, tidyFile)
rule := clangTidy
- if ctx.Config().IsEnvTrue("RBE_CLANG_TIDY") {
+ if ctx.Config().UseRBE() && ctx.Config().IsEnvTrue("RBE_CLANG_TIDY") {
rule = clangTidyRE
}
@@ -610,7 +610,7 @@
sAbiDumpFiles = append(sAbiDumpFiles, sAbiDumpFile)
dumpRule := sAbiDump
- if ctx.Config().IsEnvTrue("RBE_ABI_DUMPER") {
+ if ctx.Config().UseRBE() && ctx.Config().IsEnvTrue("RBE_ABI_DUMPER") {
dumpRule = sAbiDumpRE
}
ctx.Build(pctx, android.BuildParams{
@@ -745,7 +745,7 @@
"ldFlags": flags.globalLdFlags + " " + flags.localLdFlags,
"crtEnd": crtEnd.String(),
}
- if ctx.Config().IsEnvTrue("RBE_CXX_LINKS") {
+ if ctx.Config().UseRBE() && ctx.Config().IsEnvTrue("RBE_CXX_LINKS") {
rule = ldRE
args["implicitOutputs"] = strings.Join(implicitOutputs.Strings(), ",")
args["implicitInputs"] = strings.Join(deps.Strings(), ",")
@@ -789,7 +789,7 @@
"arch": ctx.Arch().ArchType.Name,
"exportedHeaderFlags": exportedHeaderFlags,
}
- if ctx.Config().IsEnvTrue("RBE_ABI_LINKER") {
+ if ctx.Config().UseRBE() && ctx.Config().IsEnvTrue("RBE_ABI_LINKER") {
rule = sAbiLinkRE
rbeImplicits := implicits.Strings()
for _, p := range strings.Split(exportedHeaderFlags, " ") {
@@ -912,7 +912,7 @@
"ldCmd": ldCmd,
"ldFlags": flags.globalLdFlags + " " + flags.localLdFlags,
}
- if ctx.Config().IsEnvTrue("RBE_CXX_LINKS") {
+ if ctx.Config().UseRBE() && ctx.Config().IsEnvTrue("RBE_CXX_LINKS") {
rule = partialLdRE
args["inCommaList"] = strings.Join(objFiles.Strings(), ",")
args["implicitInputs"] = strings.Join(deps.Strings(), ",")
diff --git a/java/app_builder.go b/java/app_builder.go
index 014bd54..2a08e04 100644
--- a/java/app_builder.go
+++ b/java/app_builder.go
@@ -97,7 +97,7 @@
"certificates": strings.Join(certificateArgs, " "),
"flags": strings.Join(flags, " "),
}
- if ctx.Config().IsEnvTrue("RBE_SIGNAPK") {
+ if ctx.Config().UseRBE() && ctx.Config().IsEnvTrue("RBE_SIGNAPK") {
rule = SignapkRE
args["implicits"] = strings.Join(deps.Strings(), ",")
args["outCommaList"] = strings.Join(outputFiles.Strings(), ",")
@@ -236,7 +236,7 @@
args := map[string]string{
"jarArgs": strings.Join(proptools.NinjaAndShellEscapeList(jarArgs), " "),
}
- if ctx.Config().IsEnvTrue("RBE_ZIP") {
+ if ctx.Config().UseRBE() && ctx.Config().IsEnvTrue("RBE_ZIP") {
rule = zipRE
args["implicits"] = strings.Join(deps.Strings(), ",")
}
diff --git a/java/builder.go b/java/builder.go
index 7318fcb..3043e46 100644
--- a/java/builder.go
+++ b/java/builder.go
@@ -385,7 +385,7 @@
"outDir": android.PathForModuleOut(ctx, "turbine", "classes").String(),
"javaVersion": flags.javaVersion.String(),
}
- if ctx.Config().IsEnvTrue("RBE_TURBINE") {
+ if ctx.Config().UseRBE() && ctx.Config().IsEnvTrue("RBE_TURBINE") {
rule = turbineRE
args["implicits"] = strings.Join(deps.Strings(), ",")
}
@@ -452,7 +452,7 @@
annoDir = filepath.Join(shardDir, annoDir)
}
rule := javac
- if ctx.Config().IsEnvTrue("RBE_JAVAC") {
+ if ctx.Config().UseRBE() && ctx.Config().IsEnvTrue("RBE_JAVAC") {
rule = javacRE
}
ctx.Build(pctx, android.BuildParams{
@@ -480,7 +480,7 @@
jarArgs []string, deps android.Paths) {
rule := jar
- if ctx.Config().IsEnvTrue("RBE_JAR") {
+ if ctx.Config().UseRBE() && ctx.Config().IsEnvTrue("RBE_JAR") {
rule = jarRE
}
ctx.Build(pctx, android.BuildParams{
diff --git a/java/dex.go b/java/dex.go
index c85914c..15b4431 100644
--- a/java/dex.go
+++ b/java/dex.go
@@ -288,7 +288,7 @@
"outUsageZip": proguardUsageZip.String(),
"outDir": outDir.String(),
}
- if ctx.Config().IsEnvTrue("RBE_R8") {
+ if ctx.Config().UseRBE() && ctx.Config().IsEnvTrue("RBE_R8") {
rule = r8RE
args["implicits"] = strings.Join(r8Deps.Strings(), ",")
}
@@ -304,7 +304,7 @@
} else {
d8Flags, d8Deps := d8Flags(flags)
rule := d8
- if ctx.Config().IsEnvTrue("RBE_D8") {
+ if ctx.Config().UseRBE() && ctx.Config().IsEnvTrue("RBE_D8") {
rule = d8RE
}
ctx.Build(pctx, android.BuildParams{
diff --git a/java/droiddoc.go b/java/droiddoc.go
index 4c5f66c..67892d4 100644
--- a/java/droiddoc.go
+++ b/java/droiddoc.go
@@ -1464,7 +1464,7 @@
// Metalava uses lots of memory, restrict the number of metalava jobs that can run in parallel.
rule.HighMem()
cmd := rule.Command()
- if ctx.Config().IsEnvTrue("RBE_METALAVA") {
+ if ctx.Config().UseRBE() && ctx.Config().IsEnvTrue("RBE_METALAVA") {
rule.Remoteable(android.RemoteRuleSupports{RBE: true})
pool := ctx.Config().GetenvWithDefault("RBE_METALAVA_POOL", "metalava")
execStrategy := ctx.Config().GetenvWithDefault("RBE_METALAVA_EXEC_STRATEGY", remoteexec.LocalExecStrategy)
diff --git a/java/java.go b/java/java.go
index 1a630c7..f0d3aaf 100644
--- a/java/java.go
+++ b/java/java.go
@@ -1490,7 +1490,7 @@
args := map[string]string{
"jarArgs": "-P META-INF/services/ " + strings.Join(proptools.NinjaAndShellEscapeList(zipargs), " "),
}
- if ctx.Config().IsEnvTrue("RBE_ZIP") {
+ if ctx.Config().UseRBE() && ctx.Config().IsEnvTrue("RBE_ZIP") {
rule = zipRE
args["implicits"] = strings.Join(services.Strings(), ",")
}
diff --git a/rust/bindgen.go b/rust/bindgen.go
index 0336308..cafdb8b 100644
--- a/rust/bindgen.go
+++ b/rust/bindgen.go
@@ -27,15 +27,14 @@
defaultBindgenFlags = []string{""}
// bindgen should specify its own Clang revision so updating Clang isn't potentially blocked on bindgen failures.
- bindgenClangVersion = "clang-r383902c"
- bindgenLibClangSoGit = "11git"
+ bindgenClangVersion = "clang-r383902c"
//TODO(b/160803703) Use a prebuilt bindgen instead of the built bindgen.
_ = pctx.SourcePathVariable("bindgenCmd", "out/host/${config.HostPrebuiltTag}/bin/bindgen")
_ = pctx.SourcePathVariable("bindgenClang",
"${cc_config.ClangBase}/${config.HostPrebuiltTag}/"+bindgenClangVersion+"/bin/clang")
_ = pctx.SourcePathVariable("bindgenLibClang",
- "${cc_config.ClangBase}/${config.HostPrebuiltTag}/"+bindgenClangVersion+"/lib64/libclang.so."+bindgenLibClangSoGit)
+ "${cc_config.ClangBase}/${config.HostPrebuiltTag}/"+bindgenClangVersion+"/lib64/")
//TODO(ivanlozano) Switch this to RuleBuilder
bindgen = pctx.AndroidStaticRule("bindgen",
@@ -97,8 +96,7 @@
var cflags []string
var implicits android.Paths
- implicits = append(implicits, deps.depIncludePaths...)
- implicits = append(implicits, deps.depSystemIncludePaths...)
+ implicits = append(implicits, deps.depGeneratedHeaders...)
// Default clang flags
cflags = append(cflags, "${cc_config.CommonClangGlobalCflags}")
diff --git a/rust/config/arm64_device.go b/rust/config/arm64_device.go
index 180fd8b..a0c496d 100644
--- a/rust/config/arm64_device.go
+++ b/rust/config/arm64_device.go
@@ -23,12 +23,7 @@
var (
Arm64RustFlags = []string{}
Arm64ArchFeatureRustFlags = map[string][]string{}
- Arm64LinkFlags = []string{
- "-Wl,--icf=safe",
- "-Wl,-z,max-page-size=4096",
-
- "-Wl,-z,separate-code",
- }
+ Arm64LinkFlags = []string{}
Arm64ArchVariantRustFlags = map[string][]string{
"armv8-a": []string{},
@@ -59,7 +54,8 @@
}
func (t *toolchainArm64) ToolchainLinkFlags() string {
- return "${config.DeviceGlobalLinkFlags} ${config.Arm64ToolchainLinkFlags}"
+ // Prepend the lld flags from cc_config so we stay in sync with cc
+ return "${config.DeviceGlobalLinkFlags} ${cc_config.Arm64Lldflags} ${config.Arm64ToolchainLinkFlags}"
}
func (t *toolchainArm64) ToolchainRustFlags() string {
diff --git a/rust/config/arm_device.go b/rust/config/arm_device.go
index ac2580b..ac4f1c6 100644
--- a/rust/config/arm_device.go
+++ b/rust/config/arm_device.go
@@ -23,10 +23,7 @@
var (
ArmRustFlags = []string{}
ArmArchFeatureRustFlags = map[string][]string{}
- ArmLinkFlags = []string{
- "-Wl,--icf=safe",
- "-Wl,-m,armelf",
- }
+ ArmLinkFlags = []string{}
ArmArchVariantRustFlags = map[string][]string{
"armv7-a": []string{},
@@ -59,7 +56,8 @@
}
func (t *toolchainArm) ToolchainLinkFlags() string {
- return "${config.DeviceGlobalLinkFlags} ${config.ArmToolchainLinkFlags}"
+ // Prepend the lld flags from cc_config so we stay in sync with cc
+ return "${config.DeviceGlobalLinkFlags} ${cc_config.ArmLldflags} ${config.ArmToolchainLinkFlags}"
}
func (t *toolchainArm) ToolchainRustFlags() string {
diff --git a/rust/config/global.go b/rust/config/global.go
index 2f4d930..6a5251b 100644
--- a/rust/config/global.go
+++ b/rust/config/global.go
@@ -42,22 +42,18 @@
deviceGlobalRustFlags = []string{}
deviceGlobalLinkFlags = []string{
+ // Prepend the lld flags from cc_config so we stay in sync with cc
+ "${cc_config.DeviceGlobalLldflags}",
+
+ // Override cc's --no-undefined-version to allow rustc's generated alloc functions
+ "-Wl,--undefined-version",
+
"-Bdynamic",
"-nostdlib",
- "-Wl,-z,noexecstack",
- "-Wl,-z,relro",
- "-Wl,-z,now",
- "-Wl,--build-id=md5",
- "-Wl,--warn-shared-textrel",
- "-Wl,--fatal-warnings",
-
"-Wl,--pack-dyn-relocs=android+relr",
"-Wl,--use-android-relr-tags",
"-Wl,--no-undefined",
- "-Wl,--hash-style=gnu",
-
"-B${cc_config.ClangBin}",
- "-fuse-ld=lld",
}
)
diff --git a/rust/config/x86_64_device.go b/rust/config/x86_64_device.go
index 9a6c00b..5f6e85a 100644
--- a/rust/config/x86_64_device.go
+++ b/rust/config/x86_64_device.go
@@ -61,7 +61,8 @@
}
func (t *toolchainX86_64) ToolchainLinkFlags() string {
- return "${config.DeviceGlobalLinkFlags} ${config.X86_64ToolchainLinkFlags}"
+ // Prepend the lld flags from cc_config so we stay in sync with cc
+ return "${config.DeviceGlobalLinkFlags} ${cc_config.X86_64Lldflags} ${config.X86_64ToolchainLinkFlags}"
}
func (t *toolchainX86_64) ToolchainRustFlags() string {
diff --git a/rust/config/x86_darwin_host.go b/rust/config/x86_darwin_host.go
index a13a9a6..ddd93e8 100644
--- a/rust/config/x86_darwin_host.go
+++ b/rust/config/x86_darwin_host.go
@@ -77,7 +77,8 @@
}
func (t *toolchainDarwinX8664) ToolchainLinkFlags() string {
- return "${config.DarwinToolchainLinkFlags} ${config.DarwinToolchainX8664LinkFlags}"
+ // Prepend the lld flags from cc_config so we stay in sync with cc
+ return "${cc_config.DarwinClangLldflags} ${config.DarwinToolchainLinkFlags} ${config.DarwinToolchainX8664LinkFlags}"
}
func (t *toolchainDarwinX8664) ToolchainRustFlags() string {
diff --git a/rust/config/x86_device.go b/rust/config/x86_device.go
index ec19b3c..daeeb14 100644
--- a/rust/config/x86_device.go
+++ b/rust/config/x86_device.go
@@ -64,7 +64,8 @@
}
func (t *toolchainX86) ToolchainLinkFlags() string {
- return "${config.DeviceGlobalLinkFlags} ${config.X86ToolchainLinkFlags}"
+ // Prepend the lld flags from cc_config so we stay in sync with cc
+ return "${config.DeviceGlobalLinkFlags} ${cc_config.X86ClangLldflags} ${config.X86ToolchainLinkFlags}"
}
func (t *toolchainX86) ToolchainRustFlags() string {
diff --git a/rust/config/x86_linux_host.go b/rust/config/x86_linux_host.go
index b55b2f2..e7f26ce 100644
--- a/rust/config/x86_linux_host.go
+++ b/rust/config/x86_linux_host.go
@@ -25,6 +25,7 @@
LinuxRustLinkFlags = []string{
"-B${cc_config.ClangBin}",
"-fuse-ld=lld",
+ "-Wl,--undefined-version",
}
linuxX86Rustflags = []string{}
linuxX86Linkflags = []string{}
@@ -77,7 +78,9 @@
}
func (t *toolchainLinuxX8664) ToolchainLinkFlags() string {
- return "${config.LinuxToolchainLinkFlags} ${config.LinuxToolchainX8664LinkFlags}"
+ // Prepend the lld flags from cc_config so we stay in sync with cc
+ return "${cc_config.LinuxClangLldflags} ${cc_config.LinuxX8664ClangLldflags} " +
+ "${config.LinuxToolchainLinkFlags} ${config.LinuxToolchainX8664LinkFlags}"
}
func (t *toolchainLinuxX8664) ToolchainRustFlags() string {
@@ -105,7 +108,9 @@
}
func (t *toolchainLinuxX86) ToolchainLinkFlags() string {
- return "${config.LinuxToolchainLinkFlags} ${config.LinuxToolchainX86LinkFlags}"
+ // Prepend the lld flags from cc_config so we stay in sync with cc
+ return "${cc_config.LinuxClangLldflags} ${cc_config.LinuxX86ClangLldflags} " +
+ "${config.LinuxToolchainLinkFlags} ${config.LinuxToolchainX86LinkFlags}"
}
func (t *toolchainLinuxX86) ToolchainRustFlags() string {
diff --git a/rust/rust.go b/rust/rust.go
index 5c6cdb7..4cba6d6 100644
--- a/rust/rust.go
+++ b/rust/rust.go
@@ -258,6 +258,7 @@
// Used by bindgen modules which call clang
depClangFlags []string
depIncludePaths android.Paths
+ depGeneratedHeaders android.Paths
depSystemIncludePaths android.Paths
coverageFiles android.Paths
@@ -875,6 +876,7 @@
if mod, ok := ccDep.(*cc.Module); ok {
depPaths.depSystemIncludePaths = append(depPaths.depSystemIncludePaths, mod.ExportedSystemIncludeDirs()...)
depPaths.depClangFlags = append(depPaths.depClangFlags, mod.ExportedFlags()...)
+ depPaths.depGeneratedHeaders = append(depPaths.depGeneratedHeaders, mod.ExportedGeneratedHeaders()...)
}
depPaths.coverageFiles = append(depPaths.coverageFiles, ccDep.CoverageFiles()...)
directStaticLibDeps = append(directStaticLibDeps, ccDep)
@@ -886,6 +888,7 @@
if mod, ok := ccDep.(*cc.Module); ok {
depPaths.depSystemIncludePaths = append(depPaths.depSystemIncludePaths, mod.ExportedSystemIncludeDirs()...)
depPaths.depClangFlags = append(depPaths.depClangFlags, mod.ExportedFlags()...)
+ depPaths.depGeneratedHeaders = append(depPaths.depGeneratedHeaders, mod.ExportedGeneratedHeaders()...)
}
directSharedLibDeps = append(directSharedLibDeps, ccDep)
mod.Properties.AndroidMkSharedLibs = append(mod.Properties.AndroidMkSharedLibs, depName)