Loading java/java.go +70 −43 Original line number Diff line number Diff line Loading @@ -1879,12 +1879,12 @@ const ( ) // path to the jar file of a java library. Relative to <sdk_root>/<api_dir> func sdkSnapshotFilePathForJar(member android.SdkMember) string { return sdkSnapshotFilePathForMember(member, jarFileSuffix) func sdkSnapshotFilePathForJar(name string) string { return sdkSnapshotFilePathForMember(name, jarFileSuffix) } func sdkSnapshotFilePathForMember(member android.SdkMember, suffix string) string { return filepath.Join(javaDir, member.Name()+suffix) func sdkSnapshotFilePathForMember(name string, suffix string) string { return filepath.Join(javaDir, name+suffix) } type librarySdkMemberType struct { Loading @@ -1904,23 +1904,37 @@ func (mt *librarySdkMemberType) IsInstance(module android.Module) bool { return ok } func (mt *librarySdkMemberType) BuildSnapshot(sdkModuleContext android.ModuleContext, builder android.SnapshotBuilder, member android.SdkMember) { func (mt *librarySdkMemberType) AddPrebuiltModule(sdkModuleContext android.ModuleContext, builder android.SnapshotBuilder, member android.SdkMember) android.BpModule { return builder.AddPrebuiltModule(member, "java_import") } variants := member.Variants() if len(variants) != 1 { sdkModuleContext.ModuleErrorf("sdk contains %d variants of member %q but only one is allowed", len(variants), member.Name()) for _, variant := range variants { sdkModuleContext.ModuleErrorf(" %q", variant) func (mt *librarySdkMemberType) CreateVariantPropertiesStruct() android.SdkMemberProperties { return &librarySdkMemberProperties{memberType: mt} } type librarySdkMemberProperties struct { android.SdkMemberPropertiesBase memberType *librarySdkMemberType library *Library jarToExport android.Path } variant := variants[0] func (p *librarySdkMemberProperties) PopulateFromVariant(variant android.SdkAware) { j := variant.(*Library) exportedJar := mt.jarToExportGetter(j) snapshotRelativeJavaLibPath := sdkSnapshotFilePathForJar(member) p.library = j p.jarToExport = p.memberType.jarToExportGetter(j) } func (p *librarySdkMemberProperties) AddToPropertySet(sdkModuleContext android.ModuleContext, builder android.SnapshotBuilder, propertySet android.BpPropertySet) { if p.jarToExport != nil { exportedJar := p.jarToExport snapshotRelativeJavaLibPath := sdkSnapshotFilePathForJar(p.library.Name()) builder.CopyToSnapshot(exportedJar, snapshotRelativeJavaLibPath) for _, dir := range j.AidlIncludeDirs() { for _, dir := range p.library.AidlIncludeDirs() { // TODO(jiyong): copy parcelable declarations only aidlFiles, _ := sdkModuleContext.GlobWithDeps(dir.String()+"/**/*.aidl", nil) for _, file := range aidlFiles { Loading @@ -1928,8 +1942,8 @@ func (mt *librarySdkMemberType) BuildSnapshot(sdkModuleContext android.ModuleCon } } module := builder.AddPrebuiltModule(member, "java_import") module.AddProperty("jars", []string{snapshotRelativeJavaLibPath}) propertySet.AddProperty("jars", []string{snapshotRelativeJavaLibPath}) } } var javaHeaderLibsSdkMemberType android.SdkMemberType = &librarySdkMemberType{ Loading Loading @@ -2094,31 +2108,44 @@ func (mt *testSdkMemberType) IsInstance(module android.Module) bool { return ok } func (mt *testSdkMemberType) BuildSnapshot(sdkModuleContext android.ModuleContext, builder android.SnapshotBuilder, member android.SdkMember) { variants := member.Variants() if len(variants) != 1 { sdkModuleContext.ModuleErrorf("sdk contains %d variants of member %q but only one is allowed", len(variants), member.Name()) for _, variant := range variants { sdkModuleContext.ModuleErrorf(" %q", variant) func (mt *testSdkMemberType) AddPrebuiltModule(sdkModuleContext android.ModuleContext, builder android.SnapshotBuilder, member android.SdkMember) android.BpModule { return builder.AddPrebuiltModule(member, "java_test_import") } func (mt *testSdkMemberType) CreateVariantPropertiesStruct() android.SdkMemberProperties { return &testSdkMemberProperties{} } type testSdkMemberProperties struct { android.SdkMemberPropertiesBase test *Test jarToExport android.Path } variant := variants[0] j := variant.(*Test) implementationJars := j.ImplementationJars() func (p *testSdkMemberProperties) PopulateFromVariant(variant android.SdkAware) { test := variant.(*Test) implementationJars := test.ImplementationJars() 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", test.Name())) } p.test = test p.jarToExport = implementationJars[0] } snapshotRelativeJavaLibPath := sdkSnapshotFilePathForJar(member) builder.CopyToSnapshot(implementationJars[0], snapshotRelativeJavaLibPath) func (p *testSdkMemberProperties) AddToPropertySet(sdkModuleContext android.ModuleContext, builder android.SnapshotBuilder, propertySet android.BpPropertySet) { if p.jarToExport != nil { snapshotRelativeJavaLibPath := sdkSnapshotFilePathForJar(p.test.Name()) builder.CopyToSnapshot(p.jarToExport, snapshotRelativeJavaLibPath) snapshotRelativeTestConfigPath := sdkSnapshotFilePathForMember(member, testConfigSuffix) builder.CopyToSnapshot(j.testConfig, snapshotRelativeTestConfigPath) snapshotRelativeTestConfigPath := sdkSnapshotFilePathForMember(p.test.Name(), testConfigSuffix) builder.CopyToSnapshot(p.test.testConfig, snapshotRelativeTestConfigPath) module := builder.AddPrebuiltModule(member, "java_test_import") module.AddProperty("jars", []string{snapshotRelativeJavaLibPath}) module.AddProperty("test_config", snapshotRelativeTestConfigPath) propertySet.AddProperty("jars", []string{snapshotRelativeJavaLibPath}) propertySet.AddProperty("test_config", snapshotRelativeTestConfigPath) } } // java_test builds a and links sources into a `.jar` file for the device, and possibly for the host as well, and Loading sdk/update.go +41 −25 Original line number Diff line number Diff line Loading @@ -676,21 +676,34 @@ func (s *sdk) createMemberSnapshot(sdkModuleContext android.ModuleContext, build osInfo := &osTypeSpecificInfo{} osInfo.Properties = memberType.CreateVariantPropertiesStruct() variants := member.Variants() commonArch := false for _, variant := range variants { var properties android.SdkMemberProperties // Get the info associated with the arch type inside the os info. archType := variant.Target().Arch.ArchType if archType.Name == "common" { // The arch type is common so populate the common properties directly. properties = osInfo.Properties commonArch = true } else { archInfo := &archTypeSpecificInfo{archType: archType} properties = memberType.CreateVariantPropertiesStruct() archInfo.Properties = properties osInfo.archTypes = append(osInfo.archTypes, archInfo) } properties.PopulateFromVariant(variant) } if commonArch { if len(variants) != 1 { panic("Expected to only have 1 variant when arch type is common but found " + string(len(variants))) } } else { var archProperties []android.SdkMemberProperties for _, archInfo := range osInfo.archTypes { archProperties = append(archProperties, archInfo.Properties) Loading @@ -712,15 +725,18 @@ func (s *sdk) createMemberSnapshot(sdkModuleContext android.ModuleContext, build } osInfo.Properties.Base().Compile_multilib = multilib } osInfo.Properties.AddToPropertySet(sdkModuleContext, builder, bpModule) if !commonArch { archPropertySet := bpModule.AddPropertySet("arch") for _, av := range osInfo.archTypes { archTypePropertySet := archPropertySet.AddPropertySet(av.archType.Name) av.Properties.AddToPropertySet(sdkModuleContext, builder, archTypePropertySet) } } memberType.FinalizeModule(sdkModuleContext, builder, member, bpModule) } Loading Loading
java/java.go +70 −43 Original line number Diff line number Diff line Loading @@ -1879,12 +1879,12 @@ const ( ) // path to the jar file of a java library. Relative to <sdk_root>/<api_dir> func sdkSnapshotFilePathForJar(member android.SdkMember) string { return sdkSnapshotFilePathForMember(member, jarFileSuffix) func sdkSnapshotFilePathForJar(name string) string { return sdkSnapshotFilePathForMember(name, jarFileSuffix) } func sdkSnapshotFilePathForMember(member android.SdkMember, suffix string) string { return filepath.Join(javaDir, member.Name()+suffix) func sdkSnapshotFilePathForMember(name string, suffix string) string { return filepath.Join(javaDir, name+suffix) } type librarySdkMemberType struct { Loading @@ -1904,23 +1904,37 @@ func (mt *librarySdkMemberType) IsInstance(module android.Module) bool { return ok } func (mt *librarySdkMemberType) BuildSnapshot(sdkModuleContext android.ModuleContext, builder android.SnapshotBuilder, member android.SdkMember) { func (mt *librarySdkMemberType) AddPrebuiltModule(sdkModuleContext android.ModuleContext, builder android.SnapshotBuilder, member android.SdkMember) android.BpModule { return builder.AddPrebuiltModule(member, "java_import") } variants := member.Variants() if len(variants) != 1 { sdkModuleContext.ModuleErrorf("sdk contains %d variants of member %q but only one is allowed", len(variants), member.Name()) for _, variant := range variants { sdkModuleContext.ModuleErrorf(" %q", variant) func (mt *librarySdkMemberType) CreateVariantPropertiesStruct() android.SdkMemberProperties { return &librarySdkMemberProperties{memberType: mt} } type librarySdkMemberProperties struct { android.SdkMemberPropertiesBase memberType *librarySdkMemberType library *Library jarToExport android.Path } variant := variants[0] func (p *librarySdkMemberProperties) PopulateFromVariant(variant android.SdkAware) { j := variant.(*Library) exportedJar := mt.jarToExportGetter(j) snapshotRelativeJavaLibPath := sdkSnapshotFilePathForJar(member) p.library = j p.jarToExport = p.memberType.jarToExportGetter(j) } func (p *librarySdkMemberProperties) AddToPropertySet(sdkModuleContext android.ModuleContext, builder android.SnapshotBuilder, propertySet android.BpPropertySet) { if p.jarToExport != nil { exportedJar := p.jarToExport snapshotRelativeJavaLibPath := sdkSnapshotFilePathForJar(p.library.Name()) builder.CopyToSnapshot(exportedJar, snapshotRelativeJavaLibPath) for _, dir := range j.AidlIncludeDirs() { for _, dir := range p.library.AidlIncludeDirs() { // TODO(jiyong): copy parcelable declarations only aidlFiles, _ := sdkModuleContext.GlobWithDeps(dir.String()+"/**/*.aidl", nil) for _, file := range aidlFiles { Loading @@ -1928,8 +1942,8 @@ func (mt *librarySdkMemberType) BuildSnapshot(sdkModuleContext android.ModuleCon } } module := builder.AddPrebuiltModule(member, "java_import") module.AddProperty("jars", []string{snapshotRelativeJavaLibPath}) propertySet.AddProperty("jars", []string{snapshotRelativeJavaLibPath}) } } var javaHeaderLibsSdkMemberType android.SdkMemberType = &librarySdkMemberType{ Loading Loading @@ -2094,31 +2108,44 @@ func (mt *testSdkMemberType) IsInstance(module android.Module) bool { return ok } func (mt *testSdkMemberType) BuildSnapshot(sdkModuleContext android.ModuleContext, builder android.SnapshotBuilder, member android.SdkMember) { variants := member.Variants() if len(variants) != 1 { sdkModuleContext.ModuleErrorf("sdk contains %d variants of member %q but only one is allowed", len(variants), member.Name()) for _, variant := range variants { sdkModuleContext.ModuleErrorf(" %q", variant) func (mt *testSdkMemberType) AddPrebuiltModule(sdkModuleContext android.ModuleContext, builder android.SnapshotBuilder, member android.SdkMember) android.BpModule { return builder.AddPrebuiltModule(member, "java_test_import") } func (mt *testSdkMemberType) CreateVariantPropertiesStruct() android.SdkMemberProperties { return &testSdkMemberProperties{} } type testSdkMemberProperties struct { android.SdkMemberPropertiesBase test *Test jarToExport android.Path } variant := variants[0] j := variant.(*Test) implementationJars := j.ImplementationJars() func (p *testSdkMemberProperties) PopulateFromVariant(variant android.SdkAware) { test := variant.(*Test) implementationJars := test.ImplementationJars() 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", test.Name())) } p.test = test p.jarToExport = implementationJars[0] } snapshotRelativeJavaLibPath := sdkSnapshotFilePathForJar(member) builder.CopyToSnapshot(implementationJars[0], snapshotRelativeJavaLibPath) func (p *testSdkMemberProperties) AddToPropertySet(sdkModuleContext android.ModuleContext, builder android.SnapshotBuilder, propertySet android.BpPropertySet) { if p.jarToExport != nil { snapshotRelativeJavaLibPath := sdkSnapshotFilePathForJar(p.test.Name()) builder.CopyToSnapshot(p.jarToExport, snapshotRelativeJavaLibPath) snapshotRelativeTestConfigPath := sdkSnapshotFilePathForMember(member, testConfigSuffix) builder.CopyToSnapshot(j.testConfig, snapshotRelativeTestConfigPath) snapshotRelativeTestConfigPath := sdkSnapshotFilePathForMember(p.test.Name(), testConfigSuffix) builder.CopyToSnapshot(p.test.testConfig, snapshotRelativeTestConfigPath) module := builder.AddPrebuiltModule(member, "java_test_import") module.AddProperty("jars", []string{snapshotRelativeJavaLibPath}) module.AddProperty("test_config", snapshotRelativeTestConfigPath) propertySet.AddProperty("jars", []string{snapshotRelativeJavaLibPath}) propertySet.AddProperty("test_config", snapshotRelativeTestConfigPath) } } // java_test builds a and links sources into a `.jar` file for the device, and possibly for the host as well, and Loading
sdk/update.go +41 −25 Original line number Diff line number Diff line Loading @@ -676,21 +676,34 @@ func (s *sdk) createMemberSnapshot(sdkModuleContext android.ModuleContext, build osInfo := &osTypeSpecificInfo{} osInfo.Properties = memberType.CreateVariantPropertiesStruct() variants := member.Variants() commonArch := false for _, variant := range variants { var properties android.SdkMemberProperties // Get the info associated with the arch type inside the os info. archType := variant.Target().Arch.ArchType if archType.Name == "common" { // The arch type is common so populate the common properties directly. properties = osInfo.Properties commonArch = true } else { archInfo := &archTypeSpecificInfo{archType: archType} properties = memberType.CreateVariantPropertiesStruct() archInfo.Properties = properties osInfo.archTypes = append(osInfo.archTypes, archInfo) } properties.PopulateFromVariant(variant) } if commonArch { if len(variants) != 1 { panic("Expected to only have 1 variant when arch type is common but found " + string(len(variants))) } } else { var archProperties []android.SdkMemberProperties for _, archInfo := range osInfo.archTypes { archProperties = append(archProperties, archInfo.Properties) Loading @@ -712,15 +725,18 @@ func (s *sdk) createMemberSnapshot(sdkModuleContext android.ModuleContext, build } osInfo.Properties.Base().Compile_multilib = multilib } osInfo.Properties.AddToPropertySet(sdkModuleContext, builder, bpModule) if !commonArch { archPropertySet := bpModule.AddPropertySet("arch") for _, av := range osInfo.archTypes { archTypePropertySet := archPropertySet.AddPropertySet(av.archType.Name) av.Properties.AddToPropertySet(sdkModuleContext, builder, archTypePropertySet) } } memberType.FinalizeModule(sdkModuleContext, builder, member, bpModule) } Loading