Support abi check in bazel.

Bug: 253498204
Test: Manual and unit test.
Change-Id: Id23c4f772f67c4ba05704eaad77322133474b42b
This commit is contained in:
Yu Liu
2022-11-12 10:47:07 -08:00
parent 47d7ccfffd
commit 56ccb1aecd
4 changed files with 134 additions and 6 deletions

View File

@@ -411,13 +411,15 @@ func libraryBp2Build(ctx android.TopDownMutatorContext, m *Module) {
Additional_linker_inputs: linkerAttrs.additionalLinkerInputs,
Strip: stripAttrsFromLinkerAttrs(&linkerAttrs),
Features: baseAttributes.features,
Strip: stripAttrsFromLinkerAttrs(&linkerAttrs),
Features: baseAttributes.features,
bazelCcHeaderAbiCheckerAttributes: bp2buildParseAbiCheckerProps(ctx, m),
}
if compilerAttrs.stubsSymbolFile != nil && len(compilerAttrs.stubsVersions.Value) > 0 {
hasStubs := true
sharedTargetAttrs.Has_stubs.SetValue(&hasStubs)
sharedTargetAttrs.Stubs_symbol_file = compilerAttrs.stubsSymbolFile
}
sharedTargetAttrs.Suffix = compilerAttrs.suffix
@@ -1735,7 +1737,6 @@ func (library *libraryDecorator) linkShared(ctx ModuleContext,
objs.coverageFiles = append(objs.coverageFiles, deps.StaticLibObjs.coverageFiles...)
objs.coverageFiles = append(objs.coverageFiles, deps.WholeStaticLibObjs.coverageFiles...)
objs.sAbiDumpFiles = append(objs.sAbiDumpFiles, deps.StaticLibObjs.sAbiDumpFiles...)
objs.sAbiDumpFiles = append(objs.sAbiDumpFiles, deps.WholeStaticLibObjs.sAbiDumpFiles...)
@@ -2757,6 +2758,29 @@ func maybeInjectBoringSSLHash(ctx android.ModuleContext, outputFile android.Modu
return outputFile
}
func bp2buildParseAbiCheckerProps(ctx android.TopDownMutatorContext, module *Module) bazelCcHeaderAbiCheckerAttributes {
lib, ok := module.linker.(*libraryDecorator)
if !ok {
return bazelCcHeaderAbiCheckerAttributes{}
}
abiChecker := lib.Properties.Header_abi_checker
abiCheckerAttrs := bazelCcHeaderAbiCheckerAttributes{
Abi_checker_enabled: abiChecker.Enabled,
Abi_checker_exclude_symbol_versions: abiChecker.Exclude_symbol_versions,
Abi_checker_exclude_symbol_tags: abiChecker.Exclude_symbol_tags,
Abi_checker_check_all_apis: abiChecker.Check_all_apis,
Abi_checker_diff_flags: abiChecker.Diff_flags,
}
if abiChecker.Symbol_file != nil {
symbolFile := android.BazelLabelForModuleSrcSingle(ctx, *abiChecker.Symbol_file)
abiCheckerAttrs.Abi_checker_symbol_file = &symbolFile
}
return abiCheckerAttrs
}
func sharedOrStaticLibraryBp2Build(ctx android.TopDownMutatorContext, module *Module, isStatic bool) {
baseAttributes := bp2BuildParseBaseProps(ctx, module)
compilerAttrs := baseAttributes.compilerAttributes
@@ -2863,10 +2887,13 @@ func sharedOrStaticLibraryBp2Build(ctx android.TopDownMutatorContext, module *Mo
Features: baseAttributes.features,
Suffix: compilerAttrs.suffix,
bazelCcHeaderAbiCheckerAttributes: bp2buildParseAbiCheckerProps(ctx, module),
}
if compilerAttrs.stubsSymbolFile != nil && len(compilerAttrs.stubsVersions.Value) > 0 {
hasStubs := true
sharedLibAttrs.Has_stubs.SetValue(&hasStubs)
sharedLibAttrs.Stubs_symbol_file = compilerAttrs.stubsSymbolFile
}
attrs = sharedLibAttrs
}
@@ -2943,11 +2970,14 @@ type bazelCcLibrarySharedAttributes struct {
Features bazel.StringListAttribute
Has_stubs bazel.BoolAttribute
Has_stubs bazel.BoolAttribute
Stubs_symbol_file *string
Inject_bssl_hash bazel.BoolAttribute
Suffix bazel.StringAttribute
bazelCcHeaderAbiCheckerAttributes
}
type bazelCcStubSuiteAttributes struct {
@@ -2958,3 +2988,12 @@ type bazelCcStubSuiteAttributes struct {
Soname *string
Deps bazel.LabelListAttribute
}
type bazelCcHeaderAbiCheckerAttributes struct {
Abi_checker_enabled *bool
Abi_checker_symbol_file *bazel.Label
Abi_checker_exclude_symbol_versions []string
Abi_checker_exclude_symbol_tags []string
Abi_checker_check_all_apis *bool
Abi_checker_diff_flags []string
}