Merge "Convert cpp_std to be an attribute instead of a copt."
This commit is contained in:
@@ -1692,7 +1692,7 @@ cc_library {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestCcLibraryCppStdWithGnuExtensions_ConvertstoCopt(t *testing.T) {
|
func TestCcLibraryCppStdWithGnuExtensions_ConvertsToFeatureAttr(t *testing.T) {
|
||||||
type testCase struct {
|
type testCase struct {
|
||||||
cpp_std string
|
cpp_std string
|
||||||
gnu_extensions string
|
gnu_extensions string
|
||||||
@@ -1751,7 +1751,7 @@ func TestCcLibraryCppStdWithGnuExtensions_ConvertstoCopt(t *testing.T) {
|
|||||||
}
|
}
|
||||||
bazelCppStdAttr := ""
|
bazelCppStdAttr := ""
|
||||||
if tc.bazel_cpp_std != "" {
|
if tc.bazel_cpp_std != "" {
|
||||||
bazelCppStdAttr = fmt.Sprintf("\n copts = [\"-std=%s\"],", tc.bazel_cpp_std)
|
bazelCppStdAttr = fmt.Sprintf("\n cpp_std = \"%s\",", tc.bazel_cpp_std)
|
||||||
}
|
}
|
||||||
|
|
||||||
runCcLibraryTestCase(t, bp2buildTestCase{
|
runCcLibraryTestCase(t, bp2buildTestCase{
|
||||||
@@ -1770,6 +1770,44 @@ cc_library {
|
|||||||
`, cppStdAttr, gnuExtensionsAttr),
|
`, cppStdAttr, gnuExtensionsAttr),
|
||||||
expectedBazelTargets: []string{fmt.Sprintf(`cc_library(
|
expectedBazelTargets: []string{fmt.Sprintf(`cc_library(
|
||||||
name = "a",%s
|
name = "a",%s
|
||||||
|
)`, bazelCppStdAttr)},
|
||||||
|
})
|
||||||
|
|
||||||
|
runCcLibraryStaticTestCase(t, bp2buildTestCase{
|
||||||
|
description: fmt.Sprintf(
|
||||||
|
"cc_library_static with cpp_std: %s and gnu_extensions: %s", tc.cpp_std, tc.gnu_extensions),
|
||||||
|
moduleTypeUnderTest: "cc_library_static",
|
||||||
|
moduleTypeUnderTestFactory: cc.LibraryStaticFactory,
|
||||||
|
moduleTypeUnderTestBp2BuildMutator: cc.CcLibraryStaticBp2Build,
|
||||||
|
blueprint: soongCcLibraryPreamble + fmt.Sprintf(`
|
||||||
|
cc_library_static {
|
||||||
|
name: "a",
|
||||||
|
%s // cpp_std: *string
|
||||||
|
%s // gnu_extensions: *bool
|
||||||
|
include_build_directory: false,
|
||||||
|
}
|
||||||
|
`, cppStdAttr, gnuExtensionsAttr),
|
||||||
|
expectedBazelTargets: []string{fmt.Sprintf(`cc_library_static(
|
||||||
|
name = "a",%s
|
||||||
|
)`, bazelCppStdAttr)},
|
||||||
|
})
|
||||||
|
|
||||||
|
runCcLibrarySharedTestCase(t, bp2buildTestCase{
|
||||||
|
description: fmt.Sprintf(
|
||||||
|
"cc_library_shared with cpp_std: %s and gnu_extensions: %s", tc.cpp_std, tc.gnu_extensions),
|
||||||
|
moduleTypeUnderTest: "cc_library_shared",
|
||||||
|
moduleTypeUnderTestFactory: cc.LibrarySharedFactory,
|
||||||
|
moduleTypeUnderTestBp2BuildMutator: cc.CcLibrarySharedBp2Build,
|
||||||
|
blueprint: soongCcLibraryPreamble + fmt.Sprintf(`
|
||||||
|
cc_library_shared {
|
||||||
|
name: "a",
|
||||||
|
%s // cpp_std: *string
|
||||||
|
%s // gnu_extensions: *bool
|
||||||
|
include_build_directory: false,
|
||||||
|
}
|
||||||
|
`, cppStdAttr, gnuExtensionsAttr),
|
||||||
|
expectedBazelTargets: []string{fmt.Sprintf(`cc_library_shared(
|
||||||
|
name = "a",%s
|
||||||
)`, bazelCppStdAttr)},
|
)`, bazelCppStdAttr)},
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@@ -226,7 +226,10 @@ type compilerAttributes struct {
|
|||||||
srcs bazel.LabelListAttribute
|
srcs bazel.LabelListAttribute
|
||||||
|
|
||||||
rtti bazel.BoolAttribute
|
rtti bazel.BoolAttribute
|
||||||
stl *string
|
|
||||||
|
// Not affected by arch variants
|
||||||
|
stl *string
|
||||||
|
cppStd *string
|
||||||
|
|
||||||
localIncludes bazel.StringListAttribute
|
localIncludes bazel.StringListAttribute
|
||||||
absoluteIncludes bazel.StringListAttribute
|
absoluteIncludes bazel.StringListAttribute
|
||||||
@@ -242,6 +245,8 @@ func bp2BuildParseCompilerProps(ctx android.TopDownMutatorContext, module *Modul
|
|||||||
var rtti bazel.BoolAttribute
|
var rtti bazel.BoolAttribute
|
||||||
var localIncludes bazel.StringListAttribute
|
var localIncludes bazel.StringListAttribute
|
||||||
var absoluteIncludes bazel.StringListAttribute
|
var absoluteIncludes bazel.StringListAttribute
|
||||||
|
var stl *string = nil
|
||||||
|
var cppStd *string = nil
|
||||||
|
|
||||||
parseCommandLineFlags := func(soongFlags []string) []string {
|
parseCommandLineFlags := func(soongFlags []string) []string {
|
||||||
var result []string
|
var result []string
|
||||||
@@ -283,7 +288,6 @@ func bp2BuildParseCompilerProps(ctx android.TopDownMutatorContext, module *Modul
|
|||||||
srcs.SetSelectValue(axis, config, srcsList)
|
srcs.SetSelectValue(axis, config, srcsList)
|
||||||
}
|
}
|
||||||
|
|
||||||
var archVariantCopts []string
|
|
||||||
if axis == bazel.NoConfigAxis {
|
if axis == bazel.NoConfigAxis {
|
||||||
// If cpp_std is not specified, don't generate it in the
|
// If cpp_std is not specified, don't generate it in the
|
||||||
// BUILD file. For readability purposes, cpp_std and gnu_extensions are
|
// BUILD file. For readability purposes, cpp_std and gnu_extensions are
|
||||||
@@ -295,11 +299,14 @@ func bp2BuildParseCompilerProps(ctx android.TopDownMutatorContext, module *Modul
|
|||||||
// These transformations are shared with compiler.go.
|
// These transformations are shared with compiler.go.
|
||||||
cppStdVal := parseCppStd(baseCompilerProps.Cpp_std)
|
cppStdVal := parseCppStd(baseCompilerProps.Cpp_std)
|
||||||
_, cppStdVal = maybeReplaceGnuToC(baseCompilerProps.Gnu_extensions, "", cppStdVal)
|
_, cppStdVal = maybeReplaceGnuToC(baseCompilerProps.Gnu_extensions, "", cppStdVal)
|
||||||
archVariantCopts = append(archVariantCopts, "-std="+cppStdVal)
|
cppStd = &cppStdVal
|
||||||
} else if baseCompilerProps.Gnu_extensions != nil && !*baseCompilerProps.Gnu_extensions {
|
} else if baseCompilerProps.Gnu_extensions != nil && !*baseCompilerProps.Gnu_extensions {
|
||||||
archVariantCopts = append(archVariantCopts, "-std=c++17")
|
cppStdVal := "c++17"
|
||||||
|
cppStd = &cppStdVal
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var archVariantCopts []string
|
||||||
archVariantCopts = append(archVariantCopts, parseCommandLineFlags(baseCompilerProps.Cflags)...)
|
archVariantCopts = append(archVariantCopts, parseCommandLineFlags(baseCompilerProps.Cflags)...)
|
||||||
archVariantAsflags := parseCommandLineFlags(baseCompilerProps.Asflags)
|
archVariantAsflags := parseCommandLineFlags(baseCompilerProps.Asflags)
|
||||||
|
|
||||||
@@ -345,7 +352,6 @@ func bp2BuildParseCompilerProps(ctx android.TopDownMutatorContext, module *Modul
|
|||||||
|
|
||||||
srcs, cSrcs, asSrcs := groupSrcsByExtension(ctx, srcs)
|
srcs, cSrcs, asSrcs := groupSrcsByExtension(ctx, srcs)
|
||||||
|
|
||||||
var stl *string = nil
|
|
||||||
stlPropsByArch := module.GetArchVariantProperties(ctx, &StlProperties{})
|
stlPropsByArch := module.GetArchVariantProperties(ctx, &StlProperties{})
|
||||||
for _, configToProps := range stlPropsByArch {
|
for _, configToProps := range stlPropsByArch {
|
||||||
for _, props := range configToProps {
|
for _, props := range configToProps {
|
||||||
@@ -373,6 +379,7 @@ func bp2BuildParseCompilerProps(ctx android.TopDownMutatorContext, module *Modul
|
|||||||
cppFlags: cppFlags,
|
cppFlags: cppFlags,
|
||||||
rtti: rtti,
|
rtti: rtti,
|
||||||
stl: stl,
|
stl: stl,
|
||||||
|
cppStd: cppStd,
|
||||||
localIncludes: localIncludes,
|
localIncludes: localIncludes,
|
||||||
absoluteIncludes: absoluteIncludes,
|
absoluteIncludes: absoluteIncludes,
|
||||||
}
|
}
|
||||||
|
@@ -248,7 +248,9 @@ type bazelCcLibraryAttributes struct {
|
|||||||
Linkopts bazel.StringListAttribute
|
Linkopts bazel.StringListAttribute
|
||||||
Use_libcrt bazel.BoolAttribute
|
Use_libcrt bazel.BoolAttribute
|
||||||
Rtti bazel.BoolAttribute
|
Rtti bazel.BoolAttribute
|
||||||
Stl *string
|
|
||||||
|
Stl *string
|
||||||
|
Cpp_std *string
|
||||||
|
|
||||||
// This is shared only.
|
// This is shared only.
|
||||||
Version_script bazel.LabelAttribute
|
Version_script bazel.LabelAttribute
|
||||||
@@ -328,6 +330,7 @@ func CcLibraryBp2Build(ctx android.TopDownMutatorContext) {
|
|||||||
Use_libcrt: linkerAttrs.useLibcrt,
|
Use_libcrt: linkerAttrs.useLibcrt,
|
||||||
Rtti: compilerAttrs.rtti,
|
Rtti: compilerAttrs.rtti,
|
||||||
Stl: compilerAttrs.stl,
|
Stl: compilerAttrs.stl,
|
||||||
|
Cpp_std: compilerAttrs.cppStd,
|
||||||
|
|
||||||
Version_script: linkerAttrs.versionScript,
|
Version_script: linkerAttrs.versionScript,
|
||||||
|
|
||||||
@@ -2403,6 +2406,7 @@ func ccSharedOrStaticBp2BuildMutatorInternal(ctx android.TopDownMutatorContext,
|
|||||||
Use_libcrt: linkerAttrs.useLibcrt,
|
Use_libcrt: linkerAttrs.useLibcrt,
|
||||||
Rtti: compilerAttrs.rtti,
|
Rtti: compilerAttrs.rtti,
|
||||||
Stl: compilerAttrs.stl,
|
Stl: compilerAttrs.stl,
|
||||||
|
Cpp_std: compilerAttrs.cppStd,
|
||||||
Export_includes: exportedIncludes.Includes,
|
Export_includes: exportedIncludes.Includes,
|
||||||
Export_system_includes: exportedIncludes.SystemIncludes,
|
Export_system_includes: exportedIncludes.SystemIncludes,
|
||||||
Local_includes: compilerAttrs.localIncludes,
|
Local_includes: compilerAttrs.localIncludes,
|
||||||
@@ -2427,6 +2431,7 @@ func ccSharedOrStaticBp2BuildMutatorInternal(ctx android.TopDownMutatorContext,
|
|||||||
Use_libcrt: linkerAttrs.useLibcrt,
|
Use_libcrt: linkerAttrs.useLibcrt,
|
||||||
Rtti: compilerAttrs.rtti,
|
Rtti: compilerAttrs.rtti,
|
||||||
Stl: compilerAttrs.stl,
|
Stl: compilerAttrs.stl,
|
||||||
|
Cpp_std: compilerAttrs.cppStd,
|
||||||
|
|
||||||
Export_includes: exportedIncludes.Includes,
|
Export_includes: exportedIncludes.Includes,
|
||||||
Export_system_includes: exportedIncludes.SystemIncludes,
|
Export_system_includes: exportedIncludes.SystemIncludes,
|
||||||
@@ -2462,6 +2467,7 @@ type bazelCcLibraryStaticAttributes struct {
|
|||||||
Use_libcrt bazel.BoolAttribute
|
Use_libcrt bazel.BoolAttribute
|
||||||
Rtti bazel.BoolAttribute
|
Rtti bazel.BoolAttribute
|
||||||
Stl *string
|
Stl *string
|
||||||
|
Cpp_std *string
|
||||||
|
|
||||||
Export_includes bazel.StringListAttribute
|
Export_includes bazel.StringListAttribute
|
||||||
Export_system_includes bazel.StringListAttribute
|
Export_system_includes bazel.StringListAttribute
|
||||||
@@ -2489,6 +2495,7 @@ type bazelCcLibrarySharedAttributes struct {
|
|||||||
Use_libcrt bazel.BoolAttribute
|
Use_libcrt bazel.BoolAttribute
|
||||||
Rtti bazel.BoolAttribute
|
Rtti bazel.BoolAttribute
|
||||||
Stl *string
|
Stl *string
|
||||||
|
Cpp_std *string
|
||||||
|
|
||||||
Export_includes bazel.StringListAttribute
|
Export_includes bazel.StringListAttribute
|
||||||
Export_system_includes bazel.StringListAttribute
|
Export_system_includes bazel.StringListAttribute
|
||||||
|
Reference in New Issue
Block a user