Merge "Stop generating unnecessary hidden API rules"
diff --git a/cc/builder.go b/cc/builder.go
index 29cde9d..51c8a0b 100644
--- a/cc/builder.go
+++ b/cc/builder.go
@@ -804,6 +804,7 @@
ImplicitOutputs: implicitOutputs,
Inputs: objFiles,
Implicits: deps,
+ OrderOnly: sharedLibs,
Args: args,
})
}
diff --git a/cc/library.go b/cc/library.go
index c5ff9b1..1ba3597 100644
--- a/cc/library.go
+++ b/cc/library.go
@@ -1426,11 +1426,10 @@
}
}
-func processLLNDKHeaders(ctx ModuleContext, srcHeaderDir string, outDir android.ModuleGenPath) android.Path {
+func processLLNDKHeaders(ctx ModuleContext, srcHeaderDir string, outDir android.ModuleGenPath) (timestamp android.Path, installPaths android.WritablePaths) {
srcDir := android.PathForModuleSrc(ctx, srcHeaderDir)
srcFiles := ctx.GlobFiles(filepath.Join(srcDir.String(), "**/*.h"), nil)
- var installPaths []android.WritablePath
for _, header := range srcFiles {
headerDir := filepath.Dir(header.String())
relHeaderDir, err := filepath.Rel(srcDir.String(), headerDir)
@@ -1443,7 +1442,7 @@
installPaths = append(installPaths, outDir.Join(ctx, relHeaderDir, header.Base()))
}
- return processHeadersWithVersioner(ctx, srcDir, outDir, srcFiles, installPaths)
+ return processHeadersWithVersioner(ctx, srcDir, outDir, srcFiles, installPaths), installPaths
}
// link registers actions to link this library, and sets various fields
@@ -1459,7 +1458,9 @@
var timestampFiles android.Paths
for _, dir := range library.Properties.Llndk.Export_preprocessed_headers {
- timestampFiles = append(timestampFiles, processLLNDKHeaders(ctx, dir, genHeaderOutDir))
+ timestampFile, installPaths := processLLNDKHeaders(ctx, dir, genHeaderOutDir)
+ timestampFiles = append(timestampFiles, timestampFile)
+ library.addExportedGeneratedHeaders(installPaths.Paths()...)
}
if Bool(library.Properties.Llndk.Export_headers_as_system) {
diff --git a/java/bootclasspath_fragment.go b/java/bootclasspath_fragment.go
index a839c11..16aa5e2 100644
--- a/java/bootclasspath_fragment.go
+++ b/java/bootclasspath_fragment.go
@@ -384,11 +384,7 @@
ctx.VisitDirectDeps(func(module android.Module) {
tag := ctx.OtherModuleDependencyTag(module)
if IsBootclasspathFragmentContentDepTag(tag) {
- if sdkLibrary, ok := module.(SdkLibraryDependency); ok && sdkLibrary.sharedLibrary() {
- ctx.PropertyErrorf("contents", "invalid module: %s, shared libraries cannot be on the bootclasspath", ctx.OtherModuleName(module))
- } else {
- contents = append(contents, module)
- }
+ contents = append(contents, module)
}
})
diff --git a/java/hiddenapi_modular.go b/java/hiddenapi_modular.go
index 86466d6..2dceb65 100644
--- a/java/hiddenapi_modular.go
+++ b/java/hiddenapi_modular.go
@@ -99,7 +99,12 @@
systemStubModules = append(systemStubModules, config.ProductHiddenAPIStubsSystem()...)
testStubModules = append(testStubModules, config.ProductHiddenAPIStubsTest()...)
if config.IsEnvTrue("EMMA_INSTRUMENT") {
+ // Add jacoco-stubs to public, system and test. It doesn't make any real difference as public
+ // allows everyone access but it is needed to ensure consistent flags between the
+ // bootclasspath fragment generated flags and the platform_bootclasspath generated flags.
publicStubModules = append(publicStubModules, "jacoco-stubs")
+ systemStubModules = append(systemStubModules, "jacoco-stubs")
+ testStubModules = append(testStubModules, "jacoco-stubs")
}
m := map[android.SdkKind][]string{}