diff options
Diffstat (limited to 'java/java.go')
-rw-r--r-- | java/java.go | 63 |
1 files changed, 34 insertions, 29 deletions
diff --git a/java/java.go b/java/java.go index adb0c5644..7258dcefd 100644 --- a/java/java.go +++ b/java/java.go @@ -68,9 +68,32 @@ func registerJavaBuildComponents(ctx android.RegistrationContext) { func RegisterJavaSdkMemberTypes() { // Register sdk member types. 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. - exportImplementationClassesJar := func(_ android.SdkMemberContext, j *Library) android.Path { + exportImplementationClassesJar = func(_ android.SdkMemberContext, j *Library) android.Path { implementationJars := j.ImplementationAndResourcesJars() if len(implementationJars) != 1 { panic(fmt.Errorf("there must be only one implementation jar from %q", j.Name())) @@ -78,17 +101,17 @@ func RegisterJavaSdkMemberTypes() { return implementationJars[0] } - // Register java implementation libraries for use only in module_exports (not sdk). - android.RegisterSdkMemberType(&librarySdkMemberType{ + // Supports adding java implementation libraries to module_exports but not sdk. + javaLibsSdkMemberType = &librarySdkMemberType{ android.SdkMemberTypeBase{ PropertyName: "java_libs", }, exportImplementationClassesJar, sdkSnapshotFilePathForJar, 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 // 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 // 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. - android.RegisterSdkMemberType(&librarySdkMemberType{ + javaBootLibsSdkMemberType = &librarySdkMemberType{ android.SdkMemberTypeBase{ PropertyName: "java_boot_libs", SupportsSdk: true, @@ -110,16 +133,15 @@ func RegisterJavaSdkMemberTypes() { exportImplementationClassesJar, sdkSnapshotFilePathForJar, onlyCopyJarToSnapshot, - }) + } - // Register java test libraries for use only in module_exports (not sdk). - android.RegisterSdkMemberType(&testSdkMemberType{ + // Supports adding java test libraries to module_exports but not sdk. + javaTestSdkMemberType = &testSdkMemberType{ SdkMemberTypeBase: android.SdkMemberTypeBase{ PropertyName: "java_tests", }, - }) - -} + } +) // JavaInfo contains information about a java module for use by modules that depend on it. 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. // // By default, a java_library has a single variant that produces a `.jar` file containing `.class` files that were |