diff options
Diffstat (limited to 'java/java.go')
| -rw-r--r-- | java/java.go | 43 | 
1 files changed, 33 insertions, 10 deletions
| diff --git a/java/java.go b/java/java.go index d85f3e16e..659f98a7c 100644 --- a/java/java.go +++ b/java/java.go @@ -230,6 +230,12 @@ type JavaInfo struct {  	// against this module.  If empty, ImplementationJars should be used instead.  	HeaderJars android.Paths +	// set of header jars for all transitive libs deps +	TransitiveLibsHeaderJars *android.DepSet + +	// set of header jars for all transitive static libs deps +	TransitiveStaticLibsHeaderJars *android.DepSet +  	// ImplementationAndResourceJars is a list of jars that contain the implementations of classes  	// in the module as well as any resources included in the module.  	ImplementationAndResourcesJars android.Paths @@ -380,6 +386,7 @@ var (  	instrumentationForTag   = dependencyTag{name: "instrumentation_for"}  	extraLintCheckTag       = dependencyTag{name: "extra-lint-check", toolchain: true}  	jniLibTag               = dependencyTag{name: "jnilib", runtimeLinked: true} +	r8LibraryJarTag         = dependencyTag{name: "r8-libraryjar", runtimeLinked: true}  	syspropPublicStubDepTag = dependencyTag{name: "sysprop public stub"}  	jniInstallTag           = installDependencyTag{name: "jni install"}  	binaryInstallTag        = installDependencyTag{name: "binary install"} @@ -1587,7 +1594,11 @@ type JavaApiImportInfo struct {  var JavaApiImportProvider = blueprint.NewProvider(JavaApiImportInfo{})  func (ap *JavaApiContribution) GenerateAndroidBuildActions(ctx android.ModuleContext) { -	apiFile := android.PathForModuleSrc(ctx, String(ap.properties.Api_file)) +	var apiFile android.Path = nil +	if apiFileString := ap.properties.Api_file; apiFileString != nil { +		apiFile = android.PathForModuleSrc(ctx, String(apiFileString)) +	} +  	ctx.SetProvider(JavaApiImportProvider, JavaApiImportInfo{  		ApiFile: apiFile,  	}) @@ -1718,7 +1729,11 @@ func (al *ApiLibrary) GenerateAndroidBuildActions(ctx android.ModuleContext) {  		switch tag {  		case javaApiContributionTag:  			provider := ctx.OtherModuleProvider(dep, JavaApiImportProvider).(JavaApiImportInfo) -			srcFiles = append(srcFiles, android.PathForSource(ctx, provider.ApiFile.String())) +			providerApiFile := provider.ApiFile +			if providerApiFile == nil { +				ctx.ModuleErrorf("Error: %s has an empty api file.", dep.Name()) +			} +			srcFiles = append(srcFiles, android.PathForSource(ctx, providerApiFile.String()))  		case libTag:  			provider := ctx.OtherModuleProvider(dep, JavaInfoProvider).(JavaInfo)  			classPaths = append(classPaths, provider.HeaderJars...) @@ -1944,9 +1959,9 @@ func (j *Import) GenerateAndroidBuildActions(ctx android.ModuleContext) {  	var flags javaBuilderFlags +	j.collectTransitiveHeaderJars(ctx)  	ctx.VisitDirectDeps(func(module android.Module) {  		tag := ctx.OtherModuleDependencyTag(module) -  		if ctx.OtherModuleHasProvider(module, JavaInfoProvider) {  			dep := ctx.OtherModuleProvider(module, JavaInfoProvider).(JavaInfo)  			switch tag { @@ -2036,6 +2051,8 @@ func (j *Import) GenerateAndroidBuildActions(ctx android.ModuleContext) {  	ctx.SetProvider(JavaInfoProvider, JavaInfo{  		HeaderJars:                     android.PathsIfNonNil(j.combinedClasspathFile), +		TransitiveLibsHeaderJars:       j.transitiveLibsHeaderJars, +		TransitiveStaticLibsHeaderJars: j.transitiveStaticLibsHeaderJars,  		ImplementationAndResourcesJars: android.PathsIfNonNil(j.combinedClasspathFile),  		ImplementationJars:             android.PathsIfNonNil(j.combinedClasspathFile),  		AidlIncludeDirs:                j.exportAidlIncludeDirs, @@ -2586,7 +2603,7 @@ type bp2BuildJavaInfo struct {  // to be returned to the calling function.  func (m *Library) convertLibraryAttrsBp2Build(ctx android.TopDownMutatorContext) (*javaCommonAttributes, *bp2BuildJavaInfo) {  	var srcs bazel.LabelListAttribute -	var deps bazel.LabelList +	var deps bazel.LabelListAttribute  	var staticDeps bazel.LabelList  	archVariantProps := m.GetArchVariantProperties(ctx, &CommonProperties{}) @@ -2692,11 +2709,17 @@ func (m *Library) convertLibraryAttrsBp2Build(ctx android.TopDownMutatorContext)  		Javacopts: bazel.MakeStringListAttribute(javacopts),  	} -	if m.properties.Libs != nil { -		for _, d := range m.properties.Libs { -			neverlinkLabel := android.BazelLabelForModuleDepSingle(ctx, d) -			neverlinkLabel.Label = neverlinkLabel.Label + "-neverlink" -			deps.Add(&neverlinkLabel) +	for axis, configToProps := range archVariantProps { +		for config, _props := range configToProps { +			if archProps, ok := _props.(*CommonProperties); ok { +				var libLabels []bazel.Label +				for _, d := range archProps.Libs { +					neverlinkLabel := android.BazelLabelForModuleDepSingle(ctx, d) +					neverlinkLabel.Label = neverlinkLabel.Label + "-neverlink" +					libLabels = append(libLabels, neverlinkLabel) +				} +				deps.SetSelectValue(axis, config, bazel.MakeLabelList(libLabels)) +			}  		}  	} @@ -2714,7 +2737,7 @@ func (m *Library) convertLibraryAttrsBp2Build(ctx android.TopDownMutatorContext)  	staticDeps.Add(protoDepLabel)  	depLabels := &javaDependencyLabels{} -	depLabels.Deps = bazel.MakeLabelListAttribute(deps) +	depLabels.Deps = deps  	depLabels.StaticDeps = bazel.MakeLabelListAttribute(staticDeps)  	bp2BuildInfo := &bp2BuildJavaInfo{ |