diff --git a/apex/prebuilt.go b/apex/prebuilt.go index ba7482c07..aaa3a2289 100644 --- a/apex/prebuilt.go +++ b/apex/prebuilt.go @@ -217,52 +217,57 @@ func (p *prebuiltCommon) AndroidMkEntries() []android.AndroidMkEntries { // apex specific variants of the exported java modules available for use from within make. apexName := p.BaseModuleName() for _, fi := range p.apexFilesForAndroidMk { - moduleName := fi.androidMkModuleName + "." + apexName - entries := android.AndroidMkEntries{ - Class: fi.class.nameInMake(), - OverrideName: moduleName, - OutputFile: android.OptionalPathForPath(fi.builtFile), - Include: "$(BUILD_SYSTEM)/soong_java_prebuilt.mk", - ExtraEntries: []android.AndroidMkExtraEntriesFunc{ - func(ctx android.AndroidMkExtraEntriesContext, entries *android.AndroidMkEntries) { - entries.SetString("LOCAL_MODULE_PATH", p.installDir.ToMakePath().String()) - - // soong_java_prebuilt.mk sets LOCAL_MODULE_SUFFIX := .jar Therefore - // we need to remove the suffix from LOCAL_MODULE_STEM, otherwise - // we will have foo.jar.jar - entries.SetString("LOCAL_MODULE_STEM", strings.TrimSuffix(fi.stem(), ".jar")) - var classesJar android.Path - var headerJar android.Path - if javaModule, ok := fi.module.(java.ApexDependency); ok { - classesJar = javaModule.ImplementationAndResourcesJars()[0] - headerJar = javaModule.HeaderJars()[0] - } else { - classesJar = fi.builtFile - headerJar = fi.builtFile - } - entries.SetString("LOCAL_SOONG_CLASSES_JAR", classesJar.String()) - entries.SetString("LOCAL_SOONG_HEADER_JAR", headerJar.String()) - entries.SetString("LOCAL_SOONG_DEX_JAR", fi.builtFile.String()) - entries.SetString("LOCAL_DEX_PREOPT", "false") - }, - }, - ExtraFooters: []android.AndroidMkExtraFootersFunc{ - func(w io.Writer, name, prefix, moduleDir string) { - // m will build . as well. - if fi.androidMkModuleName != moduleName { - fmt.Fprintf(w, ".PHONY: %s\n", fi.androidMkModuleName) - fmt.Fprintf(w, "%s: %s\n", fi.androidMkModuleName, moduleName) - } - }, - }, - } - + entries := p.createEntriesForApexFile(fi, apexName) entriesList = append(entriesList, entries) } return entriesList } +// createEntriesForApexFile creates an AndroidMkEntries for the supplied apexFile +func (p *prebuiltCommon) createEntriesForApexFile(fi apexFile, apexName string) android.AndroidMkEntries { + moduleName := fi.androidMkModuleName + "." + apexName + entries := android.AndroidMkEntries{ + Class: fi.class.nameInMake(), + OverrideName: moduleName, + OutputFile: android.OptionalPathForPath(fi.builtFile), + Include: "$(BUILD_SYSTEM)/soong_java_prebuilt.mk", + ExtraEntries: []android.AndroidMkExtraEntriesFunc{ + func(ctx android.AndroidMkExtraEntriesContext, entries *android.AndroidMkEntries) { + entries.SetString("LOCAL_MODULE_PATH", p.installDir.ToMakePath().String()) + + // soong_java_prebuilt.mk sets LOCAL_MODULE_SUFFIX := .jar Therefore + // we need to remove the suffix from LOCAL_MODULE_STEM, otherwise + // we will have foo.jar.jar + entries.SetString("LOCAL_MODULE_STEM", strings.TrimSuffix(fi.stem(), ".jar")) + var classesJar android.Path + var headerJar android.Path + if javaModule, ok := fi.module.(java.ApexDependency); ok { + classesJar = javaModule.ImplementationAndResourcesJars()[0] + headerJar = javaModule.HeaderJars()[0] + } else { + classesJar = fi.builtFile + headerJar = fi.builtFile + } + entries.SetString("LOCAL_SOONG_CLASSES_JAR", classesJar.String()) + entries.SetString("LOCAL_SOONG_HEADER_JAR", headerJar.String()) + entries.SetString("LOCAL_SOONG_DEX_JAR", fi.builtFile.String()) + entries.SetString("LOCAL_DEX_PREOPT", "false") + }, + }, + ExtraFooters: []android.AndroidMkExtraFootersFunc{ + func(w io.Writer, name, prefix, moduleDir string) { + // m will build . as well. + if fi.androidMkModuleName != moduleName { + fmt.Fprintf(w, ".PHONY: %s\n", fi.androidMkModuleName) + fmt.Fprintf(w, "%s: %s\n", fi.androidMkModuleName, moduleName) + } + }, + }, + } + return entries +} + // prebuiltApexModuleCreator defines the methods that need to be implemented by prebuilt_apex and // apex_set in order to create the modules needed to provide access to the prebuilt .apex file. type prebuiltApexModuleCreator interface {