Support bssl hash injection for libcrypto.
Bug: 215541108 Test: Build libcrypto with Bazel and verify the hash injected, add unit test Change-Id: I0375307aab0b1e60a8be298d680e1e0af1ebb454 Change-Id: I9133ce398e2024fe7834a292bf2f5ba3222d630b
This commit is contained in:
parent
47cb940902
commit
75be7b94d6
2 changed files with 44 additions and 0 deletions
|
@ -1287,6 +1287,7 @@ func makeCcLibraryTargets(name string, attrs attrNameToString) []string {
|
|||
"strip": true,
|
||||
"stubs_symbol_file": true,
|
||||
"stubs_versions": true,
|
||||
"inject_bssl_hash": true,
|
||||
}
|
||||
sharedAttrs := attrNameToString{}
|
||||
staticAttrs := attrNameToString{}
|
||||
|
@ -1822,6 +1823,33 @@ cc_library {
|
|||
)
|
||||
}
|
||||
|
||||
func TestLibcryptoHashInjection(t *testing.T) {
|
||||
runCcLibraryTestCase(t, bp2buildTestCase{
|
||||
description: "cc_library - libcrypto hash injection",
|
||||
moduleTypeUnderTest: "cc_library",
|
||||
moduleTypeUnderTestFactory: cc.LibraryFactory,
|
||||
filesystem: map[string]string{},
|
||||
blueprint: soongCcLibraryPreamble + `
|
||||
cc_library {
|
||||
name: "libcrypto",
|
||||
target: {
|
||||
android: {
|
||||
inject_bssl_hash: true,
|
||||
},
|
||||
},
|
||||
include_build_directory: false,
|
||||
}
|
||||
`,
|
||||
expectedBazelTargets: makeCcLibraryTargets("libcrypto", attrNameToString{
|
||||
"inject_bssl_hash": `select({
|
||||
"//build/bazel/platforms/os:android": True,
|
||||
"//conditions:default": None,
|
||||
})`,
|
||||
}),
|
||||
},
|
||||
)
|
||||
}
|
||||
|
||||
func TestCcLibraryCppStdWithGnuExtensions_ConvertsToFeatureAttr(t *testing.T) {
|
||||
type testCase struct {
|
||||
cpp_std string
|
||||
|
|
|
@ -386,6 +386,21 @@ func libraryBp2Build(ctx android.TopDownMutatorContext, m *Module) {
|
|||
Stubs_versions: compilerAttrs.stubsVersions,
|
||||
}
|
||||
|
||||
for axis, configToProps := range m.GetArchVariantProperties(ctx, &LibraryProperties{}) {
|
||||
for config, props := range configToProps {
|
||||
if props, ok := props.(*LibraryProperties); ok {
|
||||
if props.Inject_bssl_hash != nil {
|
||||
// This is an edge case applies only to libcrypto
|
||||
if m.Name() == "libcrypto" {
|
||||
sharedTargetAttrs.Inject_bssl_hash.SetSelectValue(axis, config, props.Inject_bssl_hash)
|
||||
} else {
|
||||
ctx.PropertyErrorf("inject_bssl_hash", "only applies to libcrypto")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
staticProps := bazel.BazelTargetModuleProperties{
|
||||
Rule_class: "cc_library_static",
|
||||
Bzl_load_location: "//build/bazel/rules:cc_library_static.bzl",
|
||||
|
@ -2600,4 +2615,5 @@ type bazelCcLibrarySharedAttributes struct {
|
|||
|
||||
Stubs_symbol_file *string
|
||||
Stubs_versions bazel.StringListAttribute
|
||||
Inject_bssl_hash bazel.BoolAttribute
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue