Support sdk_version: "core_current"

am: 750e557011

Change-Id: Ia08877be036ad874dd01fe4a35e5d2e28322a764
This commit is contained in:
Jiyong Park
2018-02-06 23:10:49 +00:00
committed by android-build-merger
2 changed files with 30 additions and 2 deletions

View File

@@ -315,7 +315,7 @@ type sdkDep struct {
func sdkStringToNumber(ctx android.BaseContext, v string) int {
switch v {
case "", "current", "system_current", "test_current":
case "", "current", "system_current", "test_current", "core_current":
return android.FutureApiLevel
default:
if i, err := strconv.Atoi(android.GetNumericSdkVersion(v)); err != nil {
@@ -361,8 +361,15 @@ func decodeSdkDep(ctx android.BaseContext, v string) sdkDep {
}
toFile := func(v string) sdkDep {
isCore := strings.HasPrefix(v, "core_")
if isCore {
v = strings.TrimPrefix(v, "core_")
}
dir := filepath.Join("prebuilts/sdk", v)
jar := filepath.Join(dir, "android.jar")
if isCore {
jar = filepath.Join(dir, "core.jar")
}
aidl := filepath.Join(dir, "framework.aidl")
jarPath := android.ExistentPathForSource(ctx, "sdkdir", jar)
aidlPath := android.ExistentPathForSource(ctx, "sdkdir", aidl)
@@ -557,6 +564,15 @@ func checkProducesJars(ctx android.ModuleContext, dep android.SourceFileProducer
}
}
func checkLinkType(ctx android.ModuleContext, from *Module, to *Library, tag dependencyTag) {
if strings.HasPrefix(String(from.deviceProperties.Sdk_version), "core_") {
if !strings.HasPrefix(String(to.deviceProperties.Sdk_version), "core_") {
ctx.ModuleErrorf("depends on other library %q using non-core Java APIs",
ctx.OtherModuleName(to))
}
}
}
func (j *Module) collectDeps(ctx android.ModuleContext) deps {
var deps deps
@@ -573,6 +589,9 @@ func (j *Module) collectDeps(ctx android.ModuleContext) deps {
otherName := ctx.OtherModuleName(module)
tag := ctx.OtherModuleDependencyTag(module)
if to, ok := module.(*Library); ok {
checkLinkType(ctx, j, to, tag.(dependencyTag))
}
switch dep := module.(type) {
case Dependency:
switch tag {
@@ -989,7 +1008,7 @@ func (j *Module) instrument(ctx android.ModuleContext, flags javaBuilderFlags,
// modules targeting an unreleased SDK (meaning it does not yet have a number) it returns "10000".
func (j *Module) minSdkVersionNumber(ctx android.ModuleContext) string {
switch String(j.deviceProperties.Sdk_version) {
case "", "current", "test_current", "system_current":
case "", "current", "test_current", "system_current", "core_current":
return strconv.Itoa(ctx.Config().DefaultAppTargetSdkInt())
default:
return android.GetNumericSdkVersion(String(j.deviceProperties.Sdk_version))

View File

@@ -146,6 +146,7 @@ func testContext(config android.Config, bp string,
"prebuilts/sdk/14/framework.aidl": nil,
"prebuilts/sdk/current/android.jar": nil,
"prebuilts/sdk/current/framework.aidl": nil,
"prebuilts/sdk/current/core.jar": nil,
"prebuilts/sdk/system_current/android.jar": nil,
"prebuilts/sdk/system_current/framework.aidl": nil,
"prebuilts/sdk/system_14/android.jar": nil,
@@ -360,6 +361,14 @@ var classpathTestcases = []struct {
system: "bootclasspath", // special value to tell 1.9 test to expect bootclasspath
classpath: []string{"prebuilts/sdk/test_current/android.jar"},
},
{
name: "core_current",
properties: `sdk_version: "core_current",`,
bootclasspath: []string{`""`},
system: "bootclasspath", // special value to tell 1.9 test to expect bootclasspath
classpath: []string{"prebuilts/sdk/current/core.jar"},
},
{
name: "nostdlib",