Extract java SdkMemberType instances as vars

This will allow them to be used from elsewhere in a follow up change.

Bug: 177892522
Test: m nothing
Change-Id: I60e94e148af5b1810aea7f724cba090b49ae758e
This commit is contained in:
Paul Duffin
2021-04-23 19:43:28 +01:00
parent ef289f8853
commit 2da0424b19

View File

@@ -68,9 +68,32 @@ func registerJavaBuildComponents(ctx android.RegistrationContext) {
func RegisterJavaSdkMemberTypes() { func RegisterJavaSdkMemberTypes() {
// Register sdk member types. // Register sdk member types.
android.RegisterSdkMemberType(javaHeaderLibsSdkMemberType) android.RegisterSdkMemberType(javaHeaderLibsSdkMemberType)
android.RegisterSdkMemberType(javaLibsSdkMemberType)
android.RegisterSdkMemberType(javaBootLibsSdkMemberType)
android.RegisterSdkMemberType(javaTestSdkMemberType)
}
var (
// Supports adding java header libraries to module_exports and sdk.
javaHeaderLibsSdkMemberType = &librarySdkMemberType{
android.SdkMemberTypeBase{
PropertyName: "java_header_libs",
SupportsSdk: true,
},
func(_ android.SdkMemberContext, j *Library) android.Path {
headerJars := j.HeaderJars()
if len(headerJars) != 1 {
panic(fmt.Errorf("there must be only one header jar from %q", j.Name()))
}
return headerJars[0]
},
sdkSnapshotFilePathForJar,
copyEverythingToSnapshot,
}
// Export implementation classes jar as part of the sdk. // Export implementation classes jar as part of the sdk.
exportImplementationClassesJar := func(_ android.SdkMemberContext, j *Library) android.Path { exportImplementationClassesJar = func(_ android.SdkMemberContext, j *Library) android.Path {
implementationJars := j.ImplementationAndResourcesJars() implementationJars := j.ImplementationAndResourcesJars()
if len(implementationJars) != 1 { if len(implementationJars) != 1 {
panic(fmt.Errorf("there must be only one implementation jar from %q", j.Name())) panic(fmt.Errorf("there must be only one implementation jar from %q", j.Name()))
@@ -78,17 +101,17 @@ func RegisterJavaSdkMemberTypes() {
return implementationJars[0] return implementationJars[0]
} }
// Register java implementation libraries for use only in module_exports (not sdk). // Supports adding java implementation libraries to module_exports but not sdk.
android.RegisterSdkMemberType(&librarySdkMemberType{ javaLibsSdkMemberType = &librarySdkMemberType{
android.SdkMemberTypeBase{ android.SdkMemberTypeBase{
PropertyName: "java_libs", PropertyName: "java_libs",
}, },
exportImplementationClassesJar, exportImplementationClassesJar,
sdkSnapshotFilePathForJar, sdkSnapshotFilePathForJar,
copyEverythingToSnapshot, copyEverythingToSnapshot,
}) }
// Register java boot libraries for use in sdk. // Supports adding java boot libraries to module_exports and sdk.
// //
// The build has some implicit dependencies (via the boot jars configuration) on a number of // The build has some implicit dependencies (via the boot jars configuration) on a number of
// modules, e.g. core-oj, apache-xml, that are part of the java boot class path and which are // modules, e.g. core-oj, apache-xml, that are part of the java boot class path and which are
@@ -99,7 +122,7 @@ func RegisterJavaSdkMemberTypes() {
// either java_libs, or java_header_libs would end up exporting more information than was strictly // either java_libs, or java_header_libs would end up exporting more information than was strictly
// necessary. The java_boot_libs property to allow those modules to be exported as part of the // necessary. The java_boot_libs property to allow those modules to be exported as part of the
// sdk/module_exports without exposing any unnecessary information. // sdk/module_exports without exposing any unnecessary information.
android.RegisterSdkMemberType(&librarySdkMemberType{ javaBootLibsSdkMemberType = &librarySdkMemberType{
android.SdkMemberTypeBase{ android.SdkMemberTypeBase{
PropertyName: "java_boot_libs", PropertyName: "java_boot_libs",
SupportsSdk: true, SupportsSdk: true,
@@ -110,16 +133,15 @@ func RegisterJavaSdkMemberTypes() {
exportImplementationClassesJar, exportImplementationClassesJar,
sdkSnapshotFilePathForJar, sdkSnapshotFilePathForJar,
onlyCopyJarToSnapshot, onlyCopyJarToSnapshot,
}) }
// Register java test libraries for use only in module_exports (not sdk). // Supports adding java test libraries to module_exports but not sdk.
android.RegisterSdkMemberType(&testSdkMemberType{ javaTestSdkMemberType = &testSdkMemberType{
SdkMemberTypeBase: android.SdkMemberTypeBase{ SdkMemberTypeBase: android.SdkMemberTypeBase{
PropertyName: "java_tests", PropertyName: "java_tests",
}, },
}) }
)
}
// JavaInfo contains information about a java module for use by modules that depend on it. // JavaInfo contains information about a java module for use by modules that depend on it.
type JavaInfo struct { type JavaInfo struct {
@@ -606,23 +628,6 @@ func (p *librarySdkMemberProperties) AddToPropertySet(ctx android.SdkMemberConte
} }
} }
var javaHeaderLibsSdkMemberType android.SdkMemberType = &librarySdkMemberType{
android.SdkMemberTypeBase{
PropertyName: "java_header_libs",
SupportsSdk: true,
},
func(_ android.SdkMemberContext, j *Library) android.Path {
headerJars := j.HeaderJars()
if len(headerJars) != 1 {
panic(fmt.Errorf("there must be only one header jar from %q", j.Name()))
}
return headerJars[0]
},
sdkSnapshotFilePathForJar,
copyEverythingToSnapshot,
}
// java_library builds and links sources into a `.jar` file for the device, and possibly for the host as well. // java_library builds and links sources into a `.jar` file for the device, and possibly for the host as well.
// //
// By default, a java_library has a single variant that produces a `.jar` file containing `.class` files that were // By default, a java_library has a single variant that produces a `.jar` file containing `.class` files that were