Add imports_sdk_version to prebuilt_apis
This allows setting the prebuilt sdk's generated java_imports sdk_version to "none". Test: go tests Test: m Bug: 160455085 Merged-In: Id24aca811f0f09692971e63418da6685d8351737 Change-Id: Id24aca811f0f09692971e63418da6685d8351737
This commit is contained in:
parent
6a4700842c
commit
7b9cd3be32
|
@ -199,7 +199,7 @@ func (prebuilt *Import) AndroidMkEntries() []android.AndroidMkEntries {
|
|||
entries.SetBool("LOCAL_UNINSTALLABLE_MODULE", !Bool(prebuilt.properties.Installable))
|
||||
entries.SetPath("LOCAL_SOONG_HEADER_JAR", prebuilt.combinedClasspathFile)
|
||||
entries.SetPath("LOCAL_SOONG_CLASSES_JAR", prebuilt.combinedClasspathFile)
|
||||
entries.SetString("LOCAL_SDK_VERSION", prebuilt.sdkVersion().raw)
|
||||
entries.SetString("LOCAL_SDK_VERSION", prebuilt.makeSdkVersion())
|
||||
entries.SetString("LOCAL_MODULE_STEM", prebuilt.Stem())
|
||||
},
|
||||
},
|
||||
|
|
|
@ -2464,6 +2464,10 @@ func (j *Import) sdkVersion() sdkSpec {
|
|||
return sdkSpecFrom(String(j.properties.Sdk_version))
|
||||
}
|
||||
|
||||
func (j *Import) makeSdkVersion() string {
|
||||
return j.sdkVersion().raw
|
||||
}
|
||||
|
||||
func (j *Import) minSdkVersion() sdkSpec {
|
||||
return j.sdkVersion()
|
||||
}
|
||||
|
|
|
@ -34,6 +34,10 @@ func RegisterPrebuiltApisBuildComponents(ctx android.RegistrationContext) {
|
|||
type prebuiltApisProperties struct {
|
||||
// list of api version directories
|
||||
Api_dirs []string
|
||||
|
||||
// The sdk_version of java_import modules generated based on jar files.
|
||||
// Defaults to "current"
|
||||
Imports_sdk_version *string
|
||||
}
|
||||
|
||||
type prebuiltApis struct {
|
||||
|
@ -74,7 +78,7 @@ func prebuiltApiModuleName(mctx android.LoadHookContext, module string, scope st
|
|||
return mctx.ModuleName() + "_" + scope + "_" + apiver + "_" + module
|
||||
}
|
||||
|
||||
func createImport(mctx android.LoadHookContext, module string, scope string, apiver string, path string) {
|
||||
func createImport(mctx android.LoadHookContext, module, scope, apiver, path, sdk_version string) {
|
||||
props := struct {
|
||||
Name *string
|
||||
Jars []string
|
||||
|
@ -83,7 +87,7 @@ func createImport(mctx android.LoadHookContext, module string, scope string, api
|
|||
}{}
|
||||
props.Name = proptools.StringPtr(prebuiltApiModuleName(mctx, module, scope, apiver))
|
||||
props.Jars = append(props.Jars, path)
|
||||
props.Sdk_version = proptools.StringPtr(scope)
|
||||
props.Sdk_version = proptools.StringPtr(sdk_version)
|
||||
props.Installable = proptools.BoolPtr(false)
|
||||
|
||||
mctx.CreateModule(ImportFactory, &props)
|
||||
|
@ -100,10 +104,10 @@ func createFilegroup(mctx android.LoadHookContext, module string, scope string,
|
|||
mctx.CreateModule(android.FileGroupFactory, &filegroupProps)
|
||||
}
|
||||
|
||||
func getPrebuiltFiles(mctx android.LoadHookContext, name string) []string {
|
||||
func getPrebuiltFiles(mctx android.LoadHookContext, p *prebuiltApis, name string) []string {
|
||||
mydir := mctx.ModuleDir() + "/"
|
||||
var files []string
|
||||
for _, apiver := range mctx.Module().(*prebuiltApis).properties.Api_dirs {
|
||||
for _, apiver := range p.properties.Api_dirs {
|
||||
for _, scope := range []string{"public", "system", "test", "core", "module-lib", "system-server"} {
|
||||
vfiles, err := mctx.GlobWithDeps(mydir+apiver+"/"+scope+"/"+name, nil)
|
||||
if err != nil {
|
||||
|
@ -115,16 +119,18 @@ func getPrebuiltFiles(mctx android.LoadHookContext, name string) []string {
|
|||
return files
|
||||
}
|
||||
|
||||
func prebuiltSdkStubs(mctx android.LoadHookContext) {
|
||||
func prebuiltSdkStubs(mctx android.LoadHookContext, p *prebuiltApis) {
|
||||
mydir := mctx.ModuleDir() + "/"
|
||||
// <apiver>/<scope>/<module>.jar
|
||||
files := getPrebuiltFiles(mctx, "*.jar")
|
||||
files := getPrebuiltFiles(mctx, p, "*.jar")
|
||||
|
||||
sdk_version := proptools.StringDefault(p.properties.Imports_sdk_version, "current")
|
||||
|
||||
for _, f := range files {
|
||||
// create a Import module for each jar file
|
||||
localPath := strings.TrimPrefix(f, mydir)
|
||||
module, apiver, scope := parseJarPath(localPath)
|
||||
createImport(mctx, module, scope, apiver, localPath)
|
||||
createImport(mctx, module, scope, apiver, localPath, sdk_version)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -139,8 +145,8 @@ func createSystemModules(mctx android.LoadHookContext, apiver string) {
|
|||
mctx.CreateModule(SystemModulesFactory, &props)
|
||||
}
|
||||
|
||||
func prebuiltSdkSystemModules(mctx android.LoadHookContext) {
|
||||
for _, apiver := range mctx.Module().(*prebuiltApis).properties.Api_dirs {
|
||||
func prebuiltSdkSystemModules(mctx android.LoadHookContext, p *prebuiltApis) {
|
||||
for _, apiver := range p.properties.Api_dirs {
|
||||
jar := android.ExistentPathForSource(mctx,
|
||||
mctx.ModuleDir(), apiver, "public", "core-for-system-modules.jar")
|
||||
if jar.Valid() {
|
||||
|
@ -149,10 +155,10 @@ func prebuiltSdkSystemModules(mctx android.LoadHookContext) {
|
|||
}
|
||||
}
|
||||
|
||||
func prebuiltApiFiles(mctx android.LoadHookContext) {
|
||||
func prebuiltApiFiles(mctx android.LoadHookContext, p *prebuiltApis) {
|
||||
mydir := mctx.ModuleDir() + "/"
|
||||
// <apiver>/<scope>/api/<module>.txt
|
||||
files := getPrebuiltFiles(mctx, "api/*.txt")
|
||||
files := getPrebuiltFiles(mctx, p, "api/*.txt")
|
||||
|
||||
if len(files) == 0 {
|
||||
mctx.ModuleErrorf("no api file found under %q", mydir)
|
||||
|
@ -200,10 +206,10 @@ func prebuiltApiFiles(mctx android.LoadHookContext) {
|
|||
}
|
||||
|
||||
func createPrebuiltApiModules(mctx android.LoadHookContext) {
|
||||
if _, ok := mctx.Module().(*prebuiltApis); ok {
|
||||
prebuiltApiFiles(mctx)
|
||||
prebuiltSdkStubs(mctx)
|
||||
prebuiltSdkSystemModules(mctx)
|
||||
if p, ok := mctx.Module().(*prebuiltApis); ok {
|
||||
prebuiltApiFiles(mctx, p)
|
||||
prebuiltSdkStubs(mctx, p)
|
||||
prebuiltSdkSystemModules(mctx, p)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue