Handle product config specific header_libs prop in cc bp2build
Product variable header_libs is able to be converted. Since static_libs and header_libs both use implementationDeps, also added logic to make sure they both contribute to bazel target. Bug: 228314770 Test: m bp2build Test: TestCcLibraryProductVariablesHeaderLibs in cc_library_conversion_test Change-Id: I370fc75b666b3908b6ac5ed42bca5560f957fc42
This commit is contained in:
@@ -850,11 +850,17 @@ func (la *linkerAttributes) convertProductVariables(ctx android.BazelConversionP
|
||||
depResolutionFunc func(ctx android.BazelConversionPathContext, modules, excludes []string) bazel.LabelList
|
||||
}
|
||||
|
||||
// an intermediate attribute that holds Header_libs info, and will be appended to
|
||||
// implementationDeps at the end, to solve the confliction that both header_libs
|
||||
// and static_libs use implementationDeps.
|
||||
var headerDeps bazel.LabelListAttribute
|
||||
|
||||
productVarToDepFields := map[string]productVarDep{
|
||||
// product variables do not support exclude_shared_libs
|
||||
"Shared_libs": {attribute: &la.implementationDynamicDeps, depResolutionFunc: bazelLabelForSharedDepsExcludes},
|
||||
"Static_libs": {"Exclude_static_libs", &la.implementationDeps, bazelLabelForStaticDepsExcludes},
|
||||
"Whole_static_libs": {"Exclude_static_libs", &la.wholeArchiveDeps, bazelLabelForWholeDepsExcludes},
|
||||
"Header_libs": {attribute: &headerDeps, depResolutionFunc: bazelLabelForHeaderDepsExcludes},
|
||||
}
|
||||
|
||||
for name, dep := range productVarToDepFields {
|
||||
@@ -896,6 +902,7 @@ func (la *linkerAttributes) convertProductVariables(ctx android.BazelConversionP
|
||||
)
|
||||
}
|
||||
}
|
||||
la.implementationDeps.Append(headerDeps)
|
||||
}
|
||||
|
||||
func (la *linkerAttributes) finalize(ctx android.BazelConversionPathContext) {
|
||||
@@ -1024,6 +1031,12 @@ func bazelLabelForHeaderDeps(ctx android.BazelConversionPathContext, modules []s
|
||||
return bazelLabelForSharedDeps(ctx, modules)
|
||||
}
|
||||
|
||||
func bazelLabelForHeaderDepsExcludes(ctx android.BazelConversionPathContext, modules, excludes []string) bazel.LabelList {
|
||||
// This is only used when product_variable header_libs is processed, to follow
|
||||
// the pattern of depResolutionFunc
|
||||
return android.BazelLabelForModuleDepsExcludesWithFn(ctx, modules, excludes, bazelLabelForSharedModule)
|
||||
}
|
||||
|
||||
func bazelLabelForSharedDepsExcludes(ctx android.BazelConversionPathContext, modules, excludes []string) bazel.LabelList {
|
||||
return android.BazelLabelForModuleDepsExcludesWithFn(ctx, modules, excludes, bazelLabelForSharedModule)
|
||||
}
|
||||
|
Reference in New Issue
Block a user