Merge changes from topics "xsd_config_bp2build_cc_rdeps", "xsd_config_bp2build_java_rdeps"
* changes: bp2build for cc libraries that use xsd_config as gen srcs bp2build for java libraries using xsd_config srcs
This commit is contained in:
@@ -4014,3 +4014,53 @@ func (s *soongConfigTraceSingleton) GenerateBuildActions(ctx SingletonContext) {
|
|||||||
WriteFileRule(ctx, outFile, string(j))
|
WriteFileRule(ctx, outFile, string(j))
|
||||||
ctx.Phony("soong_config_trace", outFile)
|
ctx.Phony("soong_config_trace", outFile)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Interface implemented by xsd_config which has 1:many mappings in bp2build workspace
|
||||||
|
// This interface exists because we want to
|
||||||
|
// 1. Determine the name of the additional targets generated by the primary soong module
|
||||||
|
// 2. Enable distinguishing an xsd_config module from other Soong modules using type assertion
|
||||||
|
type XsdConfigBp2buildTargets interface {
|
||||||
|
CppBp2buildTargetName() string
|
||||||
|
JavaBp2buildTargetName() string
|
||||||
|
}
|
||||||
|
|
||||||
|
// PartitionXsdSrcs partitions srcs into xsd_config modules and others
|
||||||
|
// Since xsd_config are soong modules, we cannot use file extension for partitioning
|
||||||
|
func PartitionXsdSrcs(ctx BazelConversionPathContext, srcs []string) ([]string, []string) {
|
||||||
|
//isXsd returns true if src is a soong module of type xsd_config
|
||||||
|
isXsd := func(src string) bool {
|
||||||
|
mod, exists := ctx.ModuleFromName(src)
|
||||||
|
if !exists {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
_, _isXsd := mod.(XsdConfigBp2buildTargets)
|
||||||
|
return _isXsd
|
||||||
|
}
|
||||||
|
nonXsd := []string{}
|
||||||
|
xsd := []string{}
|
||||||
|
|
||||||
|
for _, src := range srcs {
|
||||||
|
if isXsd(src) {
|
||||||
|
xsd = append(xsd, src)
|
||||||
|
} else {
|
||||||
|
nonXsd = append(nonXsd, src)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return nonXsd, xsd
|
||||||
|
}
|
||||||
|
|
||||||
|
// Replaces //a/b/my_xsd_config with //a/b/my_xsd_config-{cpp|java}
|
||||||
|
// The new target name is provided by the `targetName` callback function
|
||||||
|
func XsdConfigBp2buildTarget(ctx BazelConversionPathContext, mod blueprint.Module, targetName func(xsd XsdConfigBp2buildTargets) string) string {
|
||||||
|
xsd, isXsd := mod.(XsdConfigBp2buildTargets)
|
||||||
|
if !isXsd {
|
||||||
|
ctx.ModuleErrorf("xsdConfigJavaTarget called on %v, which is not an xsd_config", mod)
|
||||||
|
}
|
||||||
|
ret := BazelModuleLabel(ctx, mod)
|
||||||
|
// Remove the base module name
|
||||||
|
ret = strings.TrimSuffix(ret, mod.Name())
|
||||||
|
// Append the language specific target name
|
||||||
|
ret += targetName(xsd)
|
||||||
|
return ret
|
||||||
|
}
|
||||||
|
@@ -591,7 +591,8 @@ func parseSrcs(ctx android.BazelConversionPathContext, props *BaseCompilerProper
|
|||||||
anySrcs := false
|
anySrcs := false
|
||||||
// Add srcs-like dependencies such as generated files.
|
// Add srcs-like dependencies such as generated files.
|
||||||
// First create a LabelList containing these dependencies, then merge the values with srcs.
|
// First create a LabelList containing these dependencies, then merge the values with srcs.
|
||||||
generatedSrcsLabelList := android.BazelLabelForModuleDepsExcludes(ctx, props.Generated_sources, props.Exclude_generated_sources)
|
genSrcs, _ := android.PartitionXsdSrcs(ctx, props.Generated_sources)
|
||||||
|
generatedSrcsLabelList := android.BazelLabelForModuleDepsExcludes(ctx, genSrcs, props.Exclude_generated_sources)
|
||||||
if len(props.Generated_sources) > 0 || len(props.Exclude_generated_sources) > 0 {
|
if len(props.Generated_sources) > 0 || len(props.Exclude_generated_sources) > 0 {
|
||||||
anySrcs = true
|
anySrcs = true
|
||||||
}
|
}
|
||||||
@@ -716,6 +717,14 @@ func bp2BuildYasm(ctx android.Bp2buildMutatorContext, m *Module, ca compilerAttr
|
|||||||
return ret
|
return ret
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Replaces //a/b/my_xsd_config with //a/b/my_xsd_config-cpp
|
||||||
|
func xsdConfigCppTarget(ctx android.BazelConversionPathContext, mod blueprint.Module) string {
|
||||||
|
callback := func(xsd android.XsdConfigBp2buildTargets) string {
|
||||||
|
return xsd.CppBp2buildTargetName()
|
||||||
|
}
|
||||||
|
return android.XsdConfigBp2buildTarget(ctx, mod, callback)
|
||||||
|
}
|
||||||
|
|
||||||
// bp2BuildParseBaseProps returns all compiler, linker, library attributes of a cc module..
|
// bp2BuildParseBaseProps returns all compiler, linker, library attributes of a cc module..
|
||||||
func bp2BuildParseBaseProps(ctx android.Bp2buildMutatorContext, module *Module) baseAttributes {
|
func bp2BuildParseBaseProps(ctx android.Bp2buildMutatorContext, module *Module) baseAttributes {
|
||||||
archVariantCompilerProps := module.GetArchVariantProperties(ctx, &BaseCompilerProperties{})
|
archVariantCompilerProps := module.GetArchVariantProperties(ctx, &BaseCompilerProperties{})
|
||||||
@@ -754,7 +763,14 @@ func bp2BuildParseBaseProps(ctx android.Bp2buildMutatorContext, module *Module)
|
|||||||
for cfg := range configs {
|
for cfg := range configs {
|
||||||
var allHdrs []string
|
var allHdrs []string
|
||||||
if baseCompilerProps, ok := archVariantCompilerProps[axis][cfg].(*BaseCompilerProperties); ok {
|
if baseCompilerProps, ok := archVariantCompilerProps[axis][cfg].(*BaseCompilerProperties); ok {
|
||||||
allHdrs = baseCompilerProps.Generated_headers
|
ah, allHdrsXsd := android.PartitionXsdSrcs(ctx, baseCompilerProps.Generated_headers)
|
||||||
|
allHdrs = ah
|
||||||
|
// in the synthetic bp2build workspace, xsd sources are compiled to a static library
|
||||||
|
xsdCppConfigLibraryLabels := android.BazelLabelForModuleDepsWithFn(ctx, allHdrsXsd, xsdConfigCppTarget)
|
||||||
|
iwad := linkerAttrs.implementationWholeArchiveDeps.SelectValue(axis, cfg)
|
||||||
|
(&iwad).Append(xsdCppConfigLibraryLabels)
|
||||||
|
linkerAttrs.implementationWholeArchiveDeps.SetSelectValue(axis, cfg, bazel.FirstUniqueBazelLabelList(iwad))
|
||||||
|
|
||||||
if baseCompilerProps.Lex != nil {
|
if baseCompilerProps.Lex != nil {
|
||||||
compilerAttrs.lexopts.SetSelectValue(axis, cfg, baseCompilerProps.Lex.Flags)
|
compilerAttrs.lexopts.SetSelectValue(axis, cfg, baseCompilerProps.Lex.Flags)
|
||||||
}
|
}
|
||||||
|
17
java/java.go
17
java/java.go
@@ -2813,6 +2813,14 @@ type bp2BuildJavaInfo struct {
|
|||||||
hasKotlin bool
|
hasKotlin bool
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Replaces //a/b/my_xsd_config with //a/b/my_xsd_config-java
|
||||||
|
func xsdConfigJavaTarget(ctx android.BazelConversionPathContext, mod blueprint.Module) string {
|
||||||
|
callback := func(xsd android.XsdConfigBp2buildTargets) string {
|
||||||
|
return xsd.JavaBp2buildTargetName()
|
||||||
|
}
|
||||||
|
return android.XsdConfigBp2buildTarget(ctx, mod, callback)
|
||||||
|
}
|
||||||
|
|
||||||
// convertLibraryAttrsBp2Build returns a javaCommonAttributes struct with
|
// convertLibraryAttrsBp2Build returns a javaCommonAttributes struct with
|
||||||
// converted attributes shared across java_* modules and a bp2BuildJavaInfo struct
|
// converted attributes shared across java_* modules and a bp2BuildJavaInfo struct
|
||||||
// which has other non-attribute information needed for bp2build conversion
|
// which has other non-attribute information needed for bp2build conversion
|
||||||
@@ -2827,8 +2835,15 @@ func (m *Library) convertLibraryAttrsBp2Build(ctx android.TopDownMutatorContext)
|
|||||||
for axis, configToProps := range archVariantProps {
|
for axis, configToProps := range archVariantProps {
|
||||||
for config, _props := range configToProps {
|
for config, _props := range configToProps {
|
||||||
if archProps, ok := _props.(*CommonProperties); ok {
|
if archProps, ok := _props.(*CommonProperties); ok {
|
||||||
archSrcs := android.BazelLabelForModuleSrcExcludes(ctx, archProps.Srcs, archProps.Exclude_srcs)
|
srcsNonXsd, srcsXsd := android.PartitionXsdSrcs(ctx, archProps.Srcs)
|
||||||
|
excludeSrcsNonXsd, _ := android.PartitionXsdSrcs(ctx, archProps.Exclude_srcs)
|
||||||
|
archSrcs := android.BazelLabelForModuleSrcExcludes(ctx, srcsNonXsd, excludeSrcsNonXsd)
|
||||||
srcs.SetSelectValue(axis, config, archSrcs)
|
srcs.SetSelectValue(axis, config, archSrcs)
|
||||||
|
|
||||||
|
// Add to static deps
|
||||||
|
xsdJavaConfigLibraryLabels := android.BazelLabelForModuleDepsWithFn(ctx, srcsXsd, xsdConfigJavaTarget)
|
||||||
|
staticDeps.Append(xsdJavaConfigLibraryLabels)
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user