diff options
Diffstat (limited to 'apex')
| -rw-r--r-- | apex/androidmk.go | 29 | ||||
| -rw-r--r-- | apex/apex.go | 5 | ||||
| -rw-r--r-- | apex/builder.go | 27 | ||||
| -rw-r--r-- | apex/testing.go | 1 |
4 files changed, 38 insertions, 24 deletions
diff --git a/apex/androidmk.go b/apex/androidmk.go index 80237fb5f..4f37fc3d5 100644 --- a/apex/androidmk.go +++ b/apex/androidmk.go @@ -449,23 +449,18 @@ func (a *apexBundle) androidMkForType() android.AndroidMkData { fmt.Fprintf(w, dist) } - if a.apisUsedByModuleFile.String() != "" { - goal := "apps_only" - distFile := a.apisUsedByModuleFile.String() - fmt.Fprintf(w, "ifneq (,$(filter $(my_register_name),$(TARGET_BUILD_APPS)))\n"+ - " $(call dist-for-goals,%s,%s:ndk_apis_usedby_apex/$(notdir %s))\n"+ - "endif\n", - goal, distFile, distFile) - } - - if a.apisBackedByModuleFile.String() != "" { - goal := "apps_only" - distFile := a.apisBackedByModuleFile.String() - fmt.Fprintf(w, "ifneq (,$(filter $(my_register_name),$(TARGET_BUILD_APPS)))\n"+ - " $(call dist-for-goals,%s,%s:ndk_apis_backedby_apex/$(notdir %s))\n"+ - "endif\n", - goal, distFile, distFile) - } + distCoverageFiles(w, "ndk_apis_usedby_apex", a.nativeApisUsedByModuleFile.String()) + distCoverageFiles(w, "ndk_apis_usedby_apex", a.nativeApisBackedByModuleFile.String()) + distCoverageFiles(w, "java_apis_used_by_apex", a.javaApisUsedByModuleFile.String()) } }} } + +func distCoverageFiles(w io.Writer, dir string, distfile string) { + if distfile != "" { + goal := "apps_only" + fmt.Fprintf(w, "ifneq (,$(filter $(my_register_name),$(TARGET_BUILD_APPS)))\n"+ + " $(call dist-for-goals,%s,%s:%s/$(notdir %s))\n"+ + "endif\n", goal, distfile, dir, distfile) + } +} diff --git a/apex/apex.go b/apex/apex.go index 33188cbcb..20660d345 100644 --- a/apex/apex.go +++ b/apex/apex.go @@ -424,8 +424,9 @@ type apexBundle struct { isCompressed bool // Path of API coverage generate file - apisUsedByModuleFile android.ModuleOutPath - apisBackedByModuleFile android.ModuleOutPath + nativeApisUsedByModuleFile android.ModuleOutPath + nativeApisBackedByModuleFile android.ModuleOutPath + javaApisUsedByModuleFile android.ModuleOutPath // Collect the module directory for IDE info in java/jdeps.go. modulePaths []string diff --git a/apex/builder.go b/apex/builder.go index e22d69411..2e21ddfa1 100644 --- a/apex/builder.go +++ b/apex/builder.go @@ -67,6 +67,7 @@ func init() { pctx.HostBinToolVariable("sload_f2fs", "sload_f2fs") pctx.HostBinToolVariable("make_erofs", "make_erofs") pctx.HostBinToolVariable("apex_compression_tool", "apex_compression_tool") + pctx.HostBinToolVariable("dexdeps", "dexdeps") pctx.SourcePathVariable("genNdkUsedbyApexPath", "build/soong/scripts/gen_ndk_usedby_apex.sh") } @@ -707,12 +708,12 @@ func (a *apexBundle) buildUnflattenedApex(ctx android.ModuleContext) { "readelf": "${config.ClangBin}/llvm-readelf", }, }) - a.apisUsedByModuleFile = apisUsedbyOutputFile + a.nativeApisUsedByModuleFile = apisUsedbyOutputFile - var libNames []string + var nativeLibNames []string for _, f := range a.filesInfo { if f.class == nativeSharedLib { - libNames = append(libNames, f.stem()) + nativeLibNames = append(nativeLibNames, f.stem()) } } apisBackedbyOutputFile := android.PathForModuleOut(ctx, a.Name()+"_backing.txt") @@ -720,9 +721,25 @@ func (a *apexBundle) buildUnflattenedApex(ctx android.ModuleContext) { rule.Command(). Tool(android.PathForSource(ctx, "build/soong/scripts/gen_ndk_backedby_apex.sh")). Output(apisBackedbyOutputFile). - Flags(libNames) + Flags(nativeLibNames) rule.Build("ndk_backedby_list", "Generate API libraries backed by Apex") - a.apisBackedByModuleFile = apisBackedbyOutputFile + a.nativeApisBackedByModuleFile = apisBackedbyOutputFile + + var javaLibOrApkPath []android.Path + for _, f := range a.filesInfo { + if f.class == javaSharedLib || f.class == app { + javaLibOrApkPath = append(javaLibOrApkPath, f.builtFile) + } + } + javaApiUsedbyOutputFile := android.PathForModuleOut(ctx, a.Name()+"_using.xml") + javaUsedByRule := android.NewRuleBuilder(pctx, ctx) + javaUsedByRule.Command(). + Tool(android.PathForSource(ctx, "build/soong/scripts/gen_java_usedby_apex.sh")). + BuiltTool("dexdeps"). + Output(javaApiUsedbyOutputFile). + Inputs(javaLibOrApkPath) + javaUsedByRule.Build("java_usedby_list", "Generate Java APIs used by Apex") + a.javaApisUsedByModuleFile = javaApiUsedbyOutputFile bundleConfig := a.buildBundleConfig(ctx) diff --git a/apex/testing.go b/apex/testing.go index 69bd73e5d..337c86210 100644 --- a/apex/testing.go +++ b/apex/testing.go @@ -24,6 +24,7 @@ var PrepareForTestWithApexBuildComponents = android.GroupFixturePreparers( android.MockFS{ // Needed by apex. "system/core/rootdir/etc/public.libraries.android.txt": nil, + "build/soong/scripts/gen_java_usedby_apex.sh": nil, "build/soong/scripts/gen_ndk_backedby_apex.sh": nil, // Needed by prebuilt_apex. "build/soong/scripts/unpack-prebuilt-apex.sh": nil, |