Merge "Remove alternative stl names in bp2build"
This commit is contained in:
@@ -18,6 +18,7 @@ import (
|
|||||||
"android/soong/android"
|
"android/soong/android"
|
||||||
"android/soong/cc"
|
"android/soong/cc"
|
||||||
"android/soong/genrule"
|
"android/soong/genrule"
|
||||||
|
"fmt"
|
||||||
|
|
||||||
"testing"
|
"testing"
|
||||||
)
|
)
|
||||||
@@ -204,8 +205,8 @@ cc_library_static {
|
|||||||
":whole_static_lib_1",
|
":whole_static_lib_1",
|
||||||
":whole_static_lib_2",
|
":whole_static_lib_2",
|
||||||
]`,
|
]`,
|
||||||
"sdk_version": `"current"`,
|
"sdk_version": `"current"`,
|
||||||
"min_sdk_version": `"29"`,
|
"min_sdk_version": `"29"`,
|
||||||
}),
|
}),
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
@@ -1489,3 +1490,72 @@ func TestCcLibraryStaticStdInFlags(t *testing.T) {
|
|||||||
},
|
},
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestCcLibraryStaticStl(t *testing.T) {
|
||||||
|
testCases := []struct {
|
||||||
|
desc string
|
||||||
|
prop string
|
||||||
|
attr attrNameToString
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
desc: "c++_shared deduped to libc++",
|
||||||
|
prop: `stl: "c++_shared",`,
|
||||||
|
attr: attrNameToString{
|
||||||
|
"stl": `"libc++"`,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
desc: "libc++ to libc++",
|
||||||
|
prop: `stl: "libc++",`,
|
||||||
|
attr: attrNameToString{
|
||||||
|
"stl": `"libc++"`,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
desc: "c++_static to libc++_static",
|
||||||
|
prop: `stl: "c++_static",`,
|
||||||
|
attr: attrNameToString{
|
||||||
|
"stl": `"libc++_static"`,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
desc: "libc++_static to libc++_static",
|
||||||
|
prop: `stl: "libc++_static",`,
|
||||||
|
attr: attrNameToString{
|
||||||
|
"stl": `"libc++_static"`,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
desc: "system to system",
|
||||||
|
prop: `stl: "system",`,
|
||||||
|
attr: attrNameToString{
|
||||||
|
"stl": `"system"`,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
desc: "none to none",
|
||||||
|
prop: `stl: "none",`,
|
||||||
|
attr: attrNameToString{
|
||||||
|
"stl": `"none"`,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
desc: "empty to empty",
|
||||||
|
attr: attrNameToString{},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
for _, tc := range testCases {
|
||||||
|
t.Run(tc.desc, func(*testing.T) {
|
||||||
|
runCcLibraryStaticTestCase(t, bp2buildTestCase{
|
||||||
|
blueprint: fmt.Sprintf(`cc_library_static {
|
||||||
|
name: "foo",
|
||||||
|
include_build_directory: false,
|
||||||
|
%s
|
||||||
|
}`, tc.prop),
|
||||||
|
expectedBazelTargets: []string{
|
||||||
|
makeBazelTarget("cc_library_static", "foo", tc.attr),
|
||||||
|
},
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@@ -376,7 +376,8 @@ func (ca *compilerAttributes) convertStlProps(ctx android.ArchVariantContext, mo
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
if ca.stl == nil {
|
if ca.stl == nil {
|
||||||
ca.stl = stlProps.Stl
|
stl := deduplicateStlInput(*stlProps.Stl)
|
||||||
|
ca.stl = &stl
|
||||||
} else if ca.stl != stlProps.Stl {
|
} else if ca.stl != stlProps.Stl {
|
||||||
ctx.ModuleErrorf("Unsupported conversion: module with different stl for different variants: %s and %s", *ca.stl, stlProps.Stl)
|
ctx.ModuleErrorf("Unsupported conversion: module with different stl for different variants: %s and %s", *ca.stl, stlProps.Stl)
|
||||||
}
|
}
|
||||||
|
26
cc/stl.go
26
cc/stl.go
@@ -25,6 +25,16 @@ func getNdkStlFamily(m LinkableInterface) string {
|
|||||||
return family
|
return family
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func deduplicateStlInput(stl string) string {
|
||||||
|
switch stl {
|
||||||
|
case "c++_shared":
|
||||||
|
return "libc++"
|
||||||
|
case "c++_static":
|
||||||
|
return "libc++_static"
|
||||||
|
}
|
||||||
|
return stl
|
||||||
|
}
|
||||||
|
|
||||||
func getNdkStlFamilyAndLinkType(m LinkableInterface) (string, string) {
|
func getNdkStlFamilyAndLinkType(m LinkableInterface) (string, string) {
|
||||||
stl := m.SelectedStl()
|
stl := m.SelectedStl()
|
||||||
switch stl {
|
switch stl {
|
||||||
@@ -66,18 +76,18 @@ func (stl *stl) begin(ctx BaseModuleContext) {
|
|||||||
} else if ctx.header() {
|
} else if ctx.header() {
|
||||||
s = "none"
|
s = "none"
|
||||||
}
|
}
|
||||||
|
if s == "none" {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
s = deduplicateStlInput(s)
|
||||||
if ctx.useSdk() && ctx.Device() {
|
if ctx.useSdk() && ctx.Device() {
|
||||||
switch s {
|
switch s {
|
||||||
case "", "system":
|
case "", "system":
|
||||||
return "ndk_system"
|
return "ndk_system"
|
||||||
case "c++_shared", "c++_static":
|
|
||||||
return "ndk_lib" + s
|
|
||||||
case "libc++":
|
case "libc++":
|
||||||
return "ndk_libc++_shared"
|
return "ndk_libc++_shared"
|
||||||
case "libc++_static":
|
case "libc++_static":
|
||||||
return "ndk_libc++_static"
|
return "ndk_libc++_static"
|
||||||
case "none":
|
|
||||||
return ""
|
|
||||||
default:
|
default:
|
||||||
ctx.ModuleErrorf("stl: %q is not a supported STL with sdk_version set", s)
|
ctx.ModuleErrorf("stl: %q is not a supported STL with sdk_version set", s)
|
||||||
return ""
|
return ""
|
||||||
@@ -87,8 +97,6 @@ func (stl *stl) begin(ctx BaseModuleContext) {
|
|||||||
case "libc++", "libc++_static", "":
|
case "libc++", "libc++_static", "":
|
||||||
// Only use static libc++ for Windows.
|
// Only use static libc++ for Windows.
|
||||||
return "libc++_static"
|
return "libc++_static"
|
||||||
case "none":
|
|
||||||
return ""
|
|
||||||
default:
|
default:
|
||||||
ctx.ModuleErrorf("stl: %q is not a supported STL for windows", s)
|
ctx.ModuleErrorf("stl: %q is not a supported STL for windows", s)
|
||||||
return ""
|
return ""
|
||||||
@@ -97,12 +105,6 @@ func (stl *stl) begin(ctx BaseModuleContext) {
|
|||||||
switch s {
|
switch s {
|
||||||
case "libc++", "libc++_static":
|
case "libc++", "libc++_static":
|
||||||
return s
|
return s
|
||||||
case "c++_shared":
|
|
||||||
return "libc++"
|
|
||||||
case "c++_static":
|
|
||||||
return "libc++_static"
|
|
||||||
case "none":
|
|
||||||
return ""
|
|
||||||
case "", "system":
|
case "", "system":
|
||||||
if ctx.static() {
|
if ctx.static() {
|
||||||
return "libc++_static"
|
return "libc++_static"
|
||||||
|
Reference in New Issue
Block a user