diff options
Diffstat (limited to 'java/bootclasspath_fragment.go')
| -rw-r--r-- | java/bootclasspath_fragment.go | 31 | 
1 files changed, 30 insertions, 1 deletions
diff --git a/java/bootclasspath_fragment.go b/java/bootclasspath_fragment.go index 5fe409e25..eddcb61f9 100644 --- a/java/bootclasspath_fragment.go +++ b/java/bootclasspath_fragment.go @@ -16,6 +16,7 @@ package java  import (  	"fmt" +	"io"  	"path/filepath"  	"reflect"  	"strings" @@ -588,6 +589,19 @@ func (b *BootclasspathFragmentModule) GenerateAndroidBuildActions(ctx android.Mo  			// Provide the apex content info.  			b.provideApexContentInfo(ctx, imageConfig, hiddenAPIOutput, bootImageFilesByArch)  		} +	} else { +		// Versioned fragments are not needed by make. +		b.HideFromMake() +	} + +	// In order for information about bootclasspath_fragment modules to be added to module-info.json +	// it is necessary to output an entry to Make. As bootclasspath_fragment modules are part of an +	// APEX there can be multiple variants, including the default/platform variant and only one can +	// be output to Make but it does not really matter which variant is output. The default/platform +	// variant is the first (ctx.PrimaryModule()) and is usually hidden from make so this just picks +	// the last variant (ctx.FinalModule()). +	if ctx.Module() != ctx.FinalModule() { +		b.HideFromMake()  	}  } @@ -849,7 +863,22 @@ func (b *BootclasspathFragmentModule) generateBootImageBuildActions(ctx android.  }  func (b *BootclasspathFragmentModule) AndroidMkEntries() []android.AndroidMkEntries { -	var entriesList []android.AndroidMkEntries +	// Use the generated classpath proto as the output. +	outputFile := b.outputFilepath +	// Create a fake entry that will cause this to be added to the module-info.json file. +	entriesList := []android.AndroidMkEntries{{ +		Class:      "FAKE", +		OutputFile: android.OptionalPathForPath(outputFile), +		Include:    "$(BUILD_PHONY_PACKAGE)", +		ExtraFooters: []android.AndroidMkExtraFootersFunc{ +			func(w io.Writer, name, prefix, moduleDir string) { +				// Allow the bootclasspath_fragment to be built by simply passing its name on the command +				// line. +				fmt.Fprintln(w, ".PHONY:", b.Name()) +				fmt.Fprintln(w, b.Name()+":", outputFile.String()) +			}, +		}, +	}}  	for _, install := range b.bootImageDeviceInstalls {  		entriesList = append(entriesList, install.ToMakeEntries())  	}  |