Support non-installable java libraries
Some java libraries will never be installed, support an installable: false property and export it back to make as LOCAL_UNINSTALLABLE_MODULE := true. Test: m -j checkbuild, manually inspect out/soong/Android*.mk Change-Id: I825ec897648c82fb7323da7df3539c9aaa6bcfce
This commit is contained in:
parent
5aac362949
commit
2c429dc7d4
|
@ -37,6 +37,7 @@ var rewriteProperties = map[string](func(variableAssignmentContext) error){
|
|||
"LOCAL_SANITIZE": sanitize(""),
|
||||
"LOCAL_SANITIZE_DIAG": sanitize("diag."),
|
||||
"LOCAL_CFLAGS": cflags,
|
||||
"LOCAL_UNINSTALLABLE_MODULE": invert("installable"),
|
||||
|
||||
// composite functions
|
||||
"LOCAL_MODULE_TAGS": includeVariableIf(bpVariable{"tags", bpparser.ListType}, not(valueDumpEquals("optional"))),
|
||||
|
@ -129,7 +130,6 @@ func init() {
|
|||
"LOCAL_TIDY": "tidy",
|
||||
"LOCAL_PROPRIETARY_MODULE": "proprietary",
|
||||
"LOCAL_VENDOR_MODULE": "vendor",
|
||||
|
||||
"LOCAL_EXPORT_PACKAGE_RESOURCES": "export_package_resources",
|
||||
})
|
||||
}
|
||||
|
@ -528,6 +528,19 @@ func cflags(ctx variableAssignmentContext) error {
|
|||
return includeVariableNow(bpVariable{"cflags", bpparser.ListType}, ctx)
|
||||
}
|
||||
|
||||
func invert(name string) func(ctx variableAssignmentContext) error {
|
||||
return func(ctx variableAssignmentContext) error {
|
||||
val, err := makeVariableToBlueprint(ctx.file, ctx.mkvalue, bpparser.BoolType)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
val.(*bpparser.Bool).Value = !val.(*bpparser.Bool).Value
|
||||
|
||||
return setVariable(ctx.file, ctx.append, ctx.prefix, name, val, true)
|
||||
}
|
||||
}
|
||||
|
||||
// given a conditional, returns a function that will insert a variable assignment or not, based on the conditional
|
||||
func includeVariableIf(bpVar bpVariable, conditional func(ctx variableAssignmentContext) bool) func(ctx variableAssignmentContext) error {
|
||||
return func(ctx variableAssignmentContext) error {
|
||||
|
|
|
@ -29,6 +29,9 @@ func (library *Library) AndroidMk() android.AndroidMkData {
|
|||
Extra: []android.AndroidMkExtraFunc{
|
||||
func(w io.Writer, outputFile android.Path) {
|
||||
fmt.Fprintln(w, "LOCAL_MODULE_SUFFIX := .jar")
|
||||
if library.properties.Installable != nil && *library.properties.Installable == false {
|
||||
fmt.Fprintln(w, "LOCAL_UNINSTALLABLE_MODULE := true")
|
||||
}
|
||||
},
|
||||
},
|
||||
}
|
||||
|
@ -41,6 +44,7 @@ func (prebuilt *Import) AndroidMk() android.AndroidMkData {
|
|||
Extra: []android.AndroidMkExtraFunc{
|
||||
func(w io.Writer, outputFile android.Path) {
|
||||
fmt.Fprintln(w, "LOCAL_MODULE_SUFFIX := .jar")
|
||||
fmt.Fprintln(w, "LOCAL_UNINSTALLABLE_MODULE := true")
|
||||
},
|
||||
},
|
||||
}
|
||||
|
|
11
java/java.go
11
java/java.go
|
@ -96,6 +96,9 @@ type CompilerProperties struct {
|
|||
|
||||
// If not blank, set the java version passed to javac as -source and -target
|
||||
Java_version *string
|
||||
|
||||
// If set to false, don't allow this module to be installed. Defaults to true.
|
||||
Installable *bool
|
||||
}
|
||||
|
||||
type CompilerDeviceProperties struct {
|
||||
|
@ -473,7 +476,10 @@ type Library struct {
|
|||
func (j *Library) GenerateAndroidBuildActions(ctx android.ModuleContext) {
|
||||
j.compile(ctx)
|
||||
|
||||
j.installFile = ctx.InstallFile(android.PathForModuleInstall(ctx, "framework"), ctx.ModuleName()+".jar", j.outputFile)
|
||||
if j.properties.Installable == nil || *j.properties.Installable == true {
|
||||
j.installFile = ctx.InstallFile(android.PathForModuleInstall(ctx, "framework"),
|
||||
ctx.ModuleName()+".jar", j.outputFile)
|
||||
}
|
||||
}
|
||||
|
||||
func (j *Library) DepsMutator(ctx android.BottomUpMutatorContext) {
|
||||
|
@ -605,9 +611,6 @@ func (j *Import) GenerateAndroidBuildActions(ctx android.ModuleContext) {
|
|||
}
|
||||
|
||||
j.combinedClasspathFile = TransformClassesToJar(ctx, j.classJarSpecs, android.OptionalPath{}, nil)
|
||||
|
||||
ctx.InstallFile(android.PathForModuleInstall(ctx, "framework"),
|
||||
ctx.ModuleName()+".jar", j.combinedClasspathFile)
|
||||
}
|
||||
|
||||
var _ Dependency = (*Import)(nil)
|
||||
|
|
Loading…
Reference in New Issue