Merge "Support instrumenting all PGO-enabled modules"
diff --git a/android/androidmk.go b/android/androidmk.go
index 704b560..0ea7564 100644
--- a/android/androidmk.go
+++ b/android/androidmk.go
@@ -237,7 +237,7 @@
fmt.Fprintln(&data.preamble, "LOCAL_ODM_MODULE := true")
}
if Bool(amod.commonProperties.Product_specific) {
- fmt.Fprintln(&data.preamble, "LOCAL_OEM_MODULE := true")
+ fmt.Fprintln(&data.preamble, "LOCAL_PRODUCT_MODULE := true")
}
if amod.commonProperties.Owner != nil {
fmt.Fprintln(&data.preamble, "LOCAL_MODULE_OWNER :=", *amod.commonProperties.Owner)
diff --git a/android/config.go b/android/config.go
index 2ce7f48..b5ec975 100644
--- a/android/config.go
+++ b/android/config.go
@@ -676,11 +676,11 @@
return "odm"
}
-func (c *deviceConfig) OemPath() string {
- if c.config.ProductVariables.OemPath != nil {
- return *c.config.ProductVariables.OemPath
+func (c *deviceConfig) ProductPath() string {
+ if c.config.ProductVariables.ProductPath != nil {
+ return *c.config.ProductVariables.ProductPath
}
- return "oem"
+ return "product"
}
func (c *deviceConfig) BtConfigIncludeDir() string {
diff --git a/android/module.go b/android/module.go
index 0fb9479..14b9f41 100644
--- a/android/module.go
+++ b/android/module.go
@@ -232,8 +232,8 @@
Device_specific *bool
// whether this module is specific to a software configuration of a product (e.g. country,
- // network operator, etc). When set to true, it is installed into /oem (or /system/oem if
- // oem partition does not exist).
+ // network operator, etc). When set to true, it is installed into /product (or
+ // /system/product if product partition does not exist).
Product_specific *bool
// init.rc files to be installed if this module is installed
diff --git a/android/paths.go b/android/paths.go
index 4d9c858..e941e96 100644
--- a/android/paths.go
+++ b/android/paths.go
@@ -850,7 +850,7 @@
} else if ctx.DeviceSpecific() {
partition = ctx.DeviceConfig().OdmPath()
} else if ctx.ProductSpecific() {
- partition = ctx.DeviceConfig().OemPath()
+ partition = ctx.DeviceConfig().ProductPath()
} else {
partition = "system"
}
diff --git a/android/paths_test.go b/android/paths_test.go
index 110974f..61a172f 100644
--- a/android/paths_test.go
+++ b/android/paths_test.go
@@ -264,7 +264,7 @@
out: "target/product/test_device/odm/bin/my_test",
},
{
- name: "oem binary",
+ name: "product binary",
ctx: &moduleInstallPathContextImpl{
androidBaseContextImpl: androidBaseContextImpl{
target: deviceTarget,
@@ -272,7 +272,7 @@
},
},
in: []string{"bin", "my_test"},
- out: "target/product/test_device/oem/bin/my_test",
+ out: "target/product/test_device/product/bin/my_test",
},
{
@@ -311,7 +311,7 @@
out: "target/product/test_device/data/nativetest/my_test",
},
{
- name: "oem native test binary",
+ name: "product native test binary",
ctx: &moduleInstallPathContextImpl{
androidBaseContextImpl: androidBaseContextImpl{
target: deviceTarget,
@@ -359,7 +359,7 @@
out: "target/product/test_device/data/asan/odm/bin/my_test",
},
{
- name: "sanitized oem binary",
+ name: "sanitized product binary",
ctx: &moduleInstallPathContextImpl{
androidBaseContextImpl: androidBaseContextImpl{
target: deviceTarget,
@@ -368,7 +368,7 @@
inSanitizerDir: true,
},
in: []string{"bin", "my_test"},
- out: "target/product/test_device/data/asan/oem/bin/my_test",
+ out: "target/product/test_device/data/asan/product/bin/my_test",
},
{
@@ -410,7 +410,7 @@
out: "target/product/test_device/data/asan/data/nativetest/my_test",
},
{
- name: "sanitized oem native test binary",
+ name: "sanitized product native test binary",
ctx: &moduleInstallPathContextImpl{
androidBaseContextImpl: androidBaseContextImpl{
target: deviceTarget,
diff --git a/android/variable.go b/android/variable.go
index 40fa45e..2c2a0cf 100644
--- a/android/variable.go
+++ b/android/variable.go
@@ -174,9 +174,9 @@
CFIExcludePaths *[]string `json:",omitempty"`
CFIIncludePaths *[]string `json:",omitempty"`
- VendorPath *string `json:",omitempty"`
- OdmPath *string `json:",omitempty"`
- OemPath *string `json:",omitempty"`
+ VendorPath *string `json:",omitempty"`
+ OdmPath *string `json:",omitempty"`
+ ProductPath *string `json:",omitempty"`
ClangTidy *bool `json:",omitempty"`
TidyChecks *string `json:",omitempty"`
diff --git a/androidmk/cmd/androidmk/android.go b/androidmk/cmd/androidmk/android.go
index 3e134b6..960f103 100644
--- a/androidmk/cmd/androidmk/android.go
+++ b/androidmk/cmd/androidmk/android.go
@@ -128,6 +128,7 @@
"LOCAL_JAVA_RESOURCE_DIRS": "java_resource_dirs",
"LOCAL_JAVACFLAGS": "javacflags",
+ "LOCAL_ERROR_PRONE_FLAGS": "errorprone.javacflags",
"LOCAL_DX_FLAGS": "dxflags",
"LOCAL_JAVA_LIBRARIES": "libs",
"LOCAL_STATIC_JAVA_LIBRARIES": "static_libs",
@@ -157,7 +158,7 @@
"LOCAL_PROPRIETARY_MODULE": "proprietary",
"LOCAL_VENDOR_MODULE": "vendor",
"LOCAL_ODM_MODULE": "device_specific",
- "LOCAL_OEM_MODULE": "product_specific",
+ "LOCAL_PRODUCT_MODULE": "product_specific",
"LOCAL_EXPORT_PACKAGE_RESOURCES": "export_package_resources",
"LOCAL_PRIVILEGED_MODULE": "privileged",
diff --git a/androidmk/cmd/androidmk/androidmk_test.go b/androidmk/cmd/androidmk/androidmk_test.go
index c85aaaa..3252791 100644
--- a/androidmk/cmd/androidmk/androidmk_test.go
+++ b/androidmk/cmd/androidmk/androidmk_test.go
@@ -474,6 +474,24 @@
}
`,
},
+ {
+ desc: "errorprone options for java library",
+ in: `
+ include $(CLEAR_VARS)
+ LOCAL_ERROR_PRONE_FLAGS := -Xep:AsyncCallableReturnsNull:ERROR -Xep:AsyncFunctionReturnsNull:ERROR
+ include $(BUILD_JAVA_LIBRARY)
+ `,
+ expected: `
+ java_library {
+ errorprone: {
+ javacflags: [
+ "-Xep:AsyncCallableReturnsNull:ERROR",
+ "-Xep:AsyncFunctionReturnsNull:ERROR",
+ ],
+ },
+ }
+ `,
+ },
}
func reformatBlueprint(input string) string {
diff --git a/cc/builder.go b/cc/builder.go
index fe35d5c..0646132 100644
--- a/cc/builder.go
+++ b/cc/builder.go
@@ -289,7 +289,7 @@
// Generate rules for compiling multiple .c, .cpp, or .S files to individual .o files
func TransformSourceToObj(ctx android.ModuleContext, subdir string, srcFiles android.Paths,
- flags builderFlags, pathDeps android.Paths, genDeps android.Paths) Objects {
+ flags builderFlags, pathDeps android.Paths, cFlagsDeps android.Paths) Objects {
objFiles := make(android.Paths, len(srcFiles))
var tidyFiles android.Paths
@@ -362,8 +362,8 @@
Description: "yasm " + srcFile.Rel(),
Output: objFile,
Input: srcFile,
- Implicits: pathDeps,
- OrderOnly: genDeps,
+ Implicits: cFlagsDeps,
+ OrderOnly: pathDeps,
Args: map[string]string{
"asFlags": flags.yasmFlags,
},
@@ -375,8 +375,8 @@
Description: "windres " + srcFile.Rel(),
Output: objFile,
Input: srcFile,
- Implicits: pathDeps,
- OrderOnly: genDeps,
+ Implicits: cFlagsDeps,
+ OrderOnly: pathDeps,
Args: map[string]string{
"windresCmd": gccCmd(flags.toolchain, "windres"),
"flags": flags.toolchain.WindresFlags(),
@@ -444,8 +444,8 @@
Output: objFile,
ImplicitOutputs: implicitOutputs,
Input: srcFile,
- Implicits: pathDeps,
- OrderOnly: genDeps,
+ Implicits: cFlagsDeps,
+ OrderOnly: pathDeps,
Args: map[string]string{
"cFlags": moduleCflags,
"ccCmd": ccCmd,
diff --git a/cc/cc.go b/cc/cc.go
index 9b1f220..9cc7dfa 100644
--- a/cc/cc.go
+++ b/cc/cc.go
@@ -1510,17 +1510,12 @@
mod := mctx.CreateVariations(vendorMode)
vendor := mod[0].(*Module)
vendor.Properties.UseVndk = true
- } else if prebuilt, ok := m.linker.(*vndkPrebuiltLibraryDecorator); ok {
+ } else if _, ok := m.linker.(*vndkPrebuiltLibraryDecorator); ok {
// Make vendor variants only for the versions in BOARD_VNDK_VERSION and
// PRODUCT_EXTRA_VNDK_VERSIONS.
mod := mctx.CreateVariations(vendorMode)
vendor := mod[0].(*Module)
vendor.Properties.UseVndk = true
- arches := mctx.DeviceConfig().Arches()
- if len(arches) == 0 || arches[0].ArchType.String() != prebuilt.arch() {
- vendor.Properties.PreventInstall = true
- vendor.Properties.HideFromMake = true
- }
} else if m.hasVendorVariant() && !vendorSpecific {
// This will be available in both /system and /vendor
// or a /system directory that is available to vendor.
diff --git a/cc/compiler.go b/cc/compiler.go
index 7e8e8b8..9b69114 100644
--- a/cc/compiler.go
+++ b/cc/compiler.go
@@ -160,7 +160,7 @@
type baseCompiler struct {
Properties BaseCompilerProperties
Proto android.ProtoProperties
- genDeps android.Paths
+ cFlagsDeps android.Paths
pathDeps android.Paths
flags builderFlags
@@ -548,16 +548,16 @@
srcs := append(android.Paths(nil), compiler.srcsBeforeGen...)
srcs, genDeps := genSources(ctx, srcs, buildFlags)
- pathDeps = append(pathDeps, flags.CFlagsDeps...)
+ pathDeps = append(pathDeps, genDeps...)
compiler.pathDeps = pathDeps
- compiler.genDeps = genDeps
+ compiler.cFlagsDeps = flags.CFlagsDeps
// Save src, buildFlags and context
compiler.srcs = srcs
// Compile files listed in c.Properties.Srcs into objects
- objs := compileObjs(ctx, buildFlags, "", srcs, pathDeps, genDeps)
+ objs := compileObjs(ctx, buildFlags, "", srcs, pathDeps, compiler.cFlagsDeps)
if ctx.Failed() {
return Objects{}
@@ -568,7 +568,7 @@
// Compile a list of source files into objects a specified subdirectory
func compileObjs(ctx android.ModuleContext, flags builderFlags,
- subdir string, srcFiles, pathDeps android.Paths, genDeps android.Paths) Objects {
+ subdir string, srcFiles, pathDeps android.Paths, cFlagsDeps android.Paths) Objects {
- return TransformSourceToObj(ctx, subdir, srcFiles, flags, pathDeps, genDeps)
+ return TransformSourceToObj(ctx, subdir, srcFiles, flags, pathDeps, cFlagsDeps)
}
diff --git a/cc/config/global.go b/cc/config/global.go
index 5e99cde..3784824 100644
--- a/cc/config/global.go
+++ b/cc/config/global.go
@@ -201,7 +201,7 @@
}
return ClangDefaultShortVersion, nil
})
- pctx.StaticVariable("ClangAsanLibDir", "${ClangPath}/lib64/clang/${ClangShortVersion}/lib/linux")
+ pctx.StaticVariable("ClangAsanLibDir", "${ClangBase}/linux-x86/${ClangVersion}/lib64/clang/${ClangShortVersion}/lib/linux")
if runtime.GOOS == "darwin" {
pctx.StaticVariable("LLVMGoldPlugin", "${ClangPath}/lib64/LLVMgold.dylib")
} else {
diff --git a/cc/library.go b/cc/library.go
index 00282fc..54c5476 100644
--- a/cc/library.go
+++ b/cc/library.go
@@ -384,11 +384,11 @@
if library.static() {
srcs := android.PathsForModuleSrc(ctx, library.Properties.Static.Srcs)
objs = objs.Append(compileObjs(ctx, buildFlags, android.DeviceStaticLibrary,
- srcs, library.baseCompiler.pathDeps, library.baseCompiler.genDeps))
+ srcs, library.baseCompiler.pathDeps, library.baseCompiler.cFlagsDeps))
} else if library.shared() {
srcs := android.PathsForModuleSrc(ctx, library.Properties.Shared.Srcs)
objs = objs.Append(compileObjs(ctx, buildFlags, android.DeviceSharedLibrary,
- srcs, library.baseCompiler.pathDeps, library.baseCompiler.genDeps))
+ srcs, library.baseCompiler.pathDeps, library.baseCompiler.cFlagsDeps))
}
return objs
@@ -676,8 +676,8 @@
}
library.reexportFlags(flags)
library.reuseExportedFlags = append(library.reuseExportedFlags, flags...)
- library.reexportDeps(library.baseCompiler.genDeps) // TODO: restrict to aidl deps
- library.reuseExportedDeps = append(library.reuseExportedDeps, library.baseCompiler.genDeps...)
+ library.reexportDeps(library.baseCompiler.pathDeps) // TODO: restrict to aidl deps
+ library.reuseExportedDeps = append(library.reuseExportedDeps, library.baseCompiler.pathDeps...)
}
}
@@ -689,8 +689,8 @@
}
library.reexportFlags(flags)
library.reuseExportedFlags = append(library.reuseExportedFlags, flags...)
- library.reexportDeps(library.baseCompiler.genDeps) // TODO: restrict to proto deps
- library.reuseExportedDeps = append(library.reuseExportedDeps, library.baseCompiler.genDeps...)
+ library.reexportDeps(library.baseCompiler.pathDeps) // TODO: restrict to proto deps
+ library.reuseExportedDeps = append(library.reuseExportedDeps, library.baseCompiler.pathDeps...)
}
}
diff --git a/cc/vndk_prebuilt.go b/cc/vndk_prebuilt.go
index 99e35f3..9c9545d 100644
--- a/cc/vndk_prebuilt.go
+++ b/cc/vndk_prebuilt.go
@@ -110,6 +110,10 @@
}
func (p *vndkPrebuiltLibraryDecorator) install(ctx ModuleContext, file android.Path) {
+ arches := ctx.DeviceConfig().Arches()
+ if len(arches) == 0 || arches[0].ArchType.String() != p.arch() {
+ return
+ }
if p.shared() {
if ctx.isVndkSp() {
p.baseInstaller.subDir = "vndk-sp-" + p.version()
diff --git a/java/builder.go b/java/builder.go
index bf826e1..7273290 100644
--- a/java/builder.go
+++ b/java/builder.go
@@ -155,6 +155,8 @@
aidlFlags string
javaVersion string
+ errorProneExtraJavacFlags string
+
kotlincFlags string
kotlincClasspath classpath
@@ -210,6 +212,14 @@
ctx.ModuleErrorf("cannot build with Error Prone, missing external/error_prone?")
}
+ if len(flags.errorProneExtraJavacFlags) > 0 {
+ if len(flags.javacFlags) > 0 {
+ flags.javacFlags = flags.errorProneExtraJavacFlags + " " + flags.javacFlags
+ } else {
+ flags.javacFlags = flags.errorProneExtraJavacFlags
+ }
+ }
+
transformJavaToClasses(ctx, outputFile, -1, srcFiles, srcJars, flags, nil,
"errorprone", "errorprone", errorprone)
}
diff --git a/java/java.go b/java/java.go
index 65e3b41..a6769e7 100644
--- a/java/java.go
+++ b/java/java.go
@@ -142,6 +142,11 @@
Exclude_filter []string
}
+ Errorprone struct {
+ // List of javac flags that should only be used when running errorprone.
+ Javacflags []string
+ }
+
Proto struct {
// List of extra options that will be passed to the proto generator.
Output_params []string
@@ -646,6 +651,10 @@
flags.javacFlags = "$javacFlags"
}
+ if len(j.properties.Errorprone.Javacflags) > 0 {
+ flags.errorProneExtraJavacFlags = strings.Join(j.properties.Errorprone.Javacflags, " ")
+ }
+
// javaVersion flag.
sdk := sdkStringToNumber(ctx, String(j.deviceProperties.Sdk_version))
if j.properties.Java_version != nil {
diff --git a/java/system_modules.go b/java/system_modules.go
index 196d041..943eaeb 100644
--- a/java/system_modules.go
+++ b/java/system_modules.go
@@ -137,6 +137,10 @@
fmt.Fprintln(w, makevar, ":=", system.outputFile.String())
fmt.Fprintln(w, ".KATI_READONLY", ":=", makevar)
fmt.Fprintln(w, name+":", "$("+makevar+")")
+ fmt.Fprintln(w)
+ makevar = "SOONG_SYSTEM_MODULES_LIBS_" + name
+ fmt.Fprintln(w, makevar, ":=", strings.Join(system.properties.Libs, " "))
+ fmt.Fprintln(w, ".KATI_READONLY :=", makevar)
}
},
}
diff --git a/ui/build/soong.go b/ui/build/soong.go
index 6dafd27..cbb75c7 100644
--- a/ui/build/soong.go
+++ b/ui/build/soong.go
@@ -35,7 +35,7 @@
cmd.Environment.Set("BLUEPRINTDIR", "./build/blueprint")
cmd.Environment.Set("BOOTSTRAP", "./build/blueprint/bootstrap.bash")
cmd.Environment.Set("BUILDDIR", config.SoongOutDir())
- cmd.Environment.Set("GOROOT", filepath.Join("./prebuilts/go", config.HostPrebuiltTag()))
+ cmd.Environment.Set("GOROOT", "./"+filepath.Join("prebuilts/go", config.HostPrebuiltTag()))
cmd.Environment.Set("BLUEPRINT_LIST_FILE", filepath.Join(config.FileListDir(), "Android.bp.list"))
cmd.Environment.Set("NINJA_BUILDDIR", config.OutDir())
cmd.Environment.Set("SRCDIR", ".")
@@ -99,7 +99,6 @@
if config.IsVerbose() {
cmd.Args = append(cmd.Args, "-v")
}
- cmd.Environment.Set("GOROOT", filepath.Join("./prebuilts/go", config.HostPrebuiltTag()))
cmd.Sandbox = soongSandbox
cmd.Stdin = ctx.Stdin()
cmd.Stdout = ctx.Stdout()