|
|
@@ -1879,76 +1879,78 @@ func TestCcLibraryCppStdWithGnuExtensions_ConvertsToFeatureAttr(t *testing.T) {
|
|
|
|
// not set, only emit if gnu_extensions is disabled. the default (gnu+17
|
|
|
|
// not set, only emit if gnu_extensions is disabled. the default (gnu+17
|
|
|
|
// is set in the toolchain.)
|
|
|
|
// is set in the toolchain.)
|
|
|
|
{cpp_std: "", gnu_extensions: "", bazel_cpp_std: ""},
|
|
|
|
{cpp_std: "", gnu_extensions: "", bazel_cpp_std: ""},
|
|
|
|
{cpp_std: "", gnu_extensions: "false", bazel_cpp_std: "c++17", bazel_c_std: "c99"},
|
|
|
|
{cpp_std: "", gnu_extensions: "false", bazel_cpp_std: "cpp_std_default_no_gnu", bazel_c_std: "c_std_default_no_gnu"},
|
|
|
|
{cpp_std: "", gnu_extensions: "true", bazel_cpp_std: ""},
|
|
|
|
{cpp_std: "", gnu_extensions: "true", bazel_cpp_std: ""},
|
|
|
|
// experimental defaults to gnu++2a
|
|
|
|
// experimental defaults to gnu++2a
|
|
|
|
{cpp_std: "experimental", gnu_extensions: "", bazel_cpp_std: "gnu++2a"},
|
|
|
|
{cpp_std: "experimental", gnu_extensions: "", bazel_cpp_std: "cpp_std_experimental"},
|
|
|
|
{cpp_std: "experimental", gnu_extensions: "false", bazel_cpp_std: "c++2a", bazel_c_std: "c99"},
|
|
|
|
{cpp_std: "experimental", gnu_extensions: "false", bazel_cpp_std: "cpp_std_experimental_no_gnu", bazel_c_std: "c_std_default_no_gnu"},
|
|
|
|
{cpp_std: "experimental", gnu_extensions: "true", bazel_cpp_std: "gnu++2a"},
|
|
|
|
{cpp_std: "experimental", gnu_extensions: "true", bazel_cpp_std: "cpp_std_experimental"},
|
|
|
|
// Explicitly setting a c++ std does not use replace gnu++ std even if
|
|
|
|
// Explicitly setting a c++ std does not use replace gnu++ std even if
|
|
|
|
// gnu_extensions is true.
|
|
|
|
// gnu_extensions is true.
|
|
|
|
// "c++11",
|
|
|
|
// "c++11",
|
|
|
|
{cpp_std: "c++11", gnu_extensions: "", bazel_cpp_std: "c++11"},
|
|
|
|
{cpp_std: "c++11", gnu_extensions: "", bazel_cpp_std: "c++11"},
|
|
|
|
{cpp_std: "c++11", gnu_extensions: "false", bazel_cpp_std: "c++11", bazel_c_std: "c99"},
|
|
|
|
{cpp_std: "c++11", gnu_extensions: "false", bazel_cpp_std: "c++11", bazel_c_std: "c_std_default_no_gnu"},
|
|
|
|
{cpp_std: "c++11", gnu_extensions: "true", bazel_cpp_std: "c++11"},
|
|
|
|
{cpp_std: "c++11", gnu_extensions: "true", bazel_cpp_std: "c++11"},
|
|
|
|
// "c++17",
|
|
|
|
// "c++17",
|
|
|
|
{cpp_std: "c++17", gnu_extensions: "", bazel_cpp_std: "c++17"},
|
|
|
|
{cpp_std: "c++17", gnu_extensions: "", bazel_cpp_std: "c++17"},
|
|
|
|
{cpp_std: "c++17", gnu_extensions: "false", bazel_cpp_std: "c++17", bazel_c_std: "c99"},
|
|
|
|
{cpp_std: "c++17", gnu_extensions: "false", bazel_cpp_std: "c++17", bazel_c_std: "c_std_default_no_gnu"},
|
|
|
|
{cpp_std: "c++17", gnu_extensions: "true", bazel_cpp_std: "c++17"},
|
|
|
|
{cpp_std: "c++17", gnu_extensions: "true", bazel_cpp_std: "c++17"},
|
|
|
|
// "c++2a",
|
|
|
|
// "c++2a",
|
|
|
|
{cpp_std: "c++2a", gnu_extensions: "", bazel_cpp_std: "c++2a"},
|
|
|
|
{cpp_std: "c++2a", gnu_extensions: "", bazel_cpp_std: "c++2a"},
|
|
|
|
{cpp_std: "c++2a", gnu_extensions: "false", bazel_cpp_std: "c++2a", bazel_c_std: "c99"},
|
|
|
|
{cpp_std: "c++2a", gnu_extensions: "false", bazel_cpp_std: "c++2a", bazel_c_std: "c_std_default_no_gnu"},
|
|
|
|
{cpp_std: "c++2a", gnu_extensions: "true", bazel_cpp_std: "c++2a"},
|
|
|
|
{cpp_std: "c++2a", gnu_extensions: "true", bazel_cpp_std: "c++2a"},
|
|
|
|
// "c++98",
|
|
|
|
// "c++98",
|
|
|
|
{cpp_std: "c++98", gnu_extensions: "", bazel_cpp_std: "c++98"},
|
|
|
|
{cpp_std: "c++98", gnu_extensions: "", bazel_cpp_std: "c++98"},
|
|
|
|
{cpp_std: "c++98", gnu_extensions: "false", bazel_cpp_std: "c++98", bazel_c_std: "c99"},
|
|
|
|
{cpp_std: "c++98", gnu_extensions: "false", bazel_cpp_std: "c++98", bazel_c_std: "c_std_default_no_gnu"},
|
|
|
|
{cpp_std: "c++98", gnu_extensions: "true", bazel_cpp_std: "c++98"},
|
|
|
|
{cpp_std: "c++98", gnu_extensions: "true", bazel_cpp_std: "c++98"},
|
|
|
|
// gnu++ is replaced with c++ if gnu_extensions is explicitly false.
|
|
|
|
// gnu++ is replaced with c++ if gnu_extensions is explicitly false.
|
|
|
|
// "gnu++11",
|
|
|
|
// "gnu++11",
|
|
|
|
{cpp_std: "gnu++11", gnu_extensions: "", bazel_cpp_std: "gnu++11"},
|
|
|
|
{cpp_std: "gnu++11", gnu_extensions: "", bazel_cpp_std: "gnu++11"},
|
|
|
|
{cpp_std: "gnu++11", gnu_extensions: "false", bazel_cpp_std: "c++11", bazel_c_std: "c99"},
|
|
|
|
{cpp_std: "gnu++11", gnu_extensions: "false", bazel_cpp_std: "c++11", bazel_c_std: "c_std_default_no_gnu"},
|
|
|
|
{cpp_std: "gnu++11", gnu_extensions: "true", bazel_cpp_std: "gnu++11"},
|
|
|
|
{cpp_std: "gnu++11", gnu_extensions: "true", bazel_cpp_std: "gnu++11"},
|
|
|
|
// "gnu++17",
|
|
|
|
// "gnu++17",
|
|
|
|
{cpp_std: "gnu++17", gnu_extensions: "", bazel_cpp_std: "gnu++17"},
|
|
|
|
{cpp_std: "gnu++17", gnu_extensions: "", bazel_cpp_std: "gnu++17"},
|
|
|
|
{cpp_std: "gnu++17", gnu_extensions: "false", bazel_cpp_std: "c++17", bazel_c_std: "c99"},
|
|
|
|
{cpp_std: "gnu++17", gnu_extensions: "false", bazel_cpp_std: "c++17", bazel_c_std: "c_std_default_no_gnu"},
|
|
|
|
{cpp_std: "gnu++17", gnu_extensions: "true", bazel_cpp_std: "gnu++17"},
|
|
|
|
{cpp_std: "gnu++17", gnu_extensions: "true", bazel_cpp_std: "gnu++17"},
|
|
|
|
|
|
|
|
|
|
|
|
// some c_std test cases
|
|
|
|
// some c_std test cases
|
|
|
|
{c_std: "experimental", gnu_extensions: "", bazel_c_std: "gnu17"},
|
|
|
|
{c_std: "experimental", gnu_extensions: "", bazel_c_std: "c_std_experimental"},
|
|
|
|
{c_std: "experimental", gnu_extensions: "false", bazel_cpp_std: "c++17", bazel_c_std: "c17"},
|
|
|
|
{c_std: "experimental", gnu_extensions: "false", bazel_cpp_std: "cpp_std_default_no_gnu", bazel_c_std: "c_std_experimental_no_gnu"},
|
|
|
|
{c_std: "experimental", gnu_extensions: "true", bazel_c_std: "gnu17"},
|
|
|
|
{c_std: "experimental", gnu_extensions: "true", bazel_c_std: "c_std_experimental"},
|
|
|
|
{c_std: "gnu11", cpp_std: "gnu++17", gnu_extensions: "", bazel_cpp_std: "gnu++17", bazel_c_std: "gnu11"},
|
|
|
|
{c_std: "gnu11", cpp_std: "gnu++17", gnu_extensions: "", bazel_cpp_std: "gnu++17", bazel_c_std: "gnu11"},
|
|
|
|
{c_std: "gnu11", cpp_std: "gnu++17", gnu_extensions: "false", bazel_cpp_std: "c++17", bazel_c_std: "c11"},
|
|
|
|
{c_std: "gnu11", cpp_std: "gnu++17", gnu_extensions: "false", bazel_cpp_std: "c++17", bazel_c_std: "c11"},
|
|
|
|
{c_std: "gnu11", cpp_std: "gnu++17", gnu_extensions: "true", bazel_cpp_std: "gnu++17", bazel_c_std: "gnu11"},
|
|
|
|
{c_std: "gnu11", cpp_std: "gnu++17", gnu_extensions: "true", bazel_cpp_std: "gnu++17", bazel_c_std: "gnu11"},
|
|
|
|
}
|
|
|
|
}
|
|
|
|
for i, tc := range testCases {
|
|
|
|
for i, tc := range testCases {
|
|
|
|
name_prefix := fmt.Sprintf("a_%v", i)
|
|
|
|
name := fmt.Sprintf("cpp std: %q, c std: %q, gnu_extensions: %q", tc.cpp_std, tc.c_std, tc.gnu_extensions)
|
|
|
|
cppStdProp := ""
|
|
|
|
t.Run(name, func(t *testing.T) {
|
|
|
|
if tc.cpp_std != "" {
|
|
|
|
name_prefix := fmt.Sprintf("a_%v", i)
|
|
|
|
cppStdProp = fmt.Sprintf(" cpp_std: \"%s\",", tc.cpp_std)
|
|
|
|
cppStdProp := ""
|
|
|
|
}
|
|
|
|
if tc.cpp_std != "" {
|
|
|
|
cStdProp := ""
|
|
|
|
cppStdProp = fmt.Sprintf(" cpp_std: \"%s\",", tc.cpp_std)
|
|
|
|
if tc.c_std != "" {
|
|
|
|
}
|
|
|
|
cStdProp = fmt.Sprintf(" c_std: \"%s\",", tc.c_std)
|
|
|
|
cStdProp := ""
|
|
|
|
}
|
|
|
|
if tc.c_std != "" {
|
|
|
|
gnuExtensionsProp := ""
|
|
|
|
cStdProp = fmt.Sprintf(" c_std: \"%s\",", tc.c_std)
|
|
|
|
if tc.gnu_extensions != "" {
|
|
|
|
}
|
|
|
|
gnuExtensionsProp = fmt.Sprintf(" gnu_extensions: %s,", tc.gnu_extensions)
|
|
|
|
gnuExtensionsProp := ""
|
|
|
|
}
|
|
|
|
if tc.gnu_extensions != "" {
|
|
|
|
attrs := attrNameToString{}
|
|
|
|
gnuExtensionsProp = fmt.Sprintf(" gnu_extensions: %s,", tc.gnu_extensions)
|
|
|
|
if tc.bazel_cpp_std != "" {
|
|
|
|
}
|
|
|
|
attrs["cpp_std"] = fmt.Sprintf(`"%s"`, tc.bazel_cpp_std)
|
|
|
|
attrs := attrNameToString{}
|
|
|
|
}
|
|
|
|
if tc.bazel_cpp_std != "" {
|
|
|
|
if tc.bazel_c_std != "" {
|
|
|
|
attrs["cpp_std"] = fmt.Sprintf(`"%s"`, tc.bazel_cpp_std)
|
|
|
|
attrs["c_std"] = fmt.Sprintf(`"%s"`, tc.bazel_c_std)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if tc.bazel_c_std != "" {
|
|
|
|
|
|
|
|
attrs["c_std"] = fmt.Sprintf(`"%s"`, tc.bazel_c_std)
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
runCcLibraryTestCase(t, bp2buildTestCase{
|
|
|
|
runCcLibraryTestCase(t, bp2buildTestCase{
|
|
|
|
description: fmt.Sprintf(
|
|
|
|
description: fmt.Sprintf(
|
|
|
|
"cc_library with cpp_std: %s and gnu_extensions: %s", tc.cpp_std, tc.gnu_extensions),
|
|
|
|
"cc_library with cpp_std: %s and gnu_extensions: %s", tc.cpp_std, tc.gnu_extensions),
|
|
|
|
moduleTypeUnderTest: "cc_library",
|
|
|
|
moduleTypeUnderTest: "cc_library",
|
|
|
|
moduleTypeUnderTestFactory: cc.LibraryFactory,
|
|
|
|
moduleTypeUnderTestFactory: cc.LibraryFactory,
|
|
|
|
blueprint: soongCcLibraryPreamble + fmt.Sprintf(`
|
|
|
|
blueprint: soongCcLibraryPreamble + fmt.Sprintf(`
|
|
|
|
cc_library {
|
|
|
|
cc_library {
|
|
|
|
name: "%s_full",
|
|
|
|
name: "%s_full",
|
|
|
|
%s // cpp_std: *string
|
|
|
|
%s // cpp_std: *string
|
|
|
@@ -1957,15 +1959,15 @@ cc_library {
|
|
|
|
include_build_directory: false,
|
|
|
|
include_build_directory: false,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
`, name_prefix, cppStdProp, cStdProp, gnuExtensionsProp),
|
|
|
|
`, name_prefix, cppStdProp, cStdProp, gnuExtensionsProp),
|
|
|
|
expectedBazelTargets: makeCcLibraryTargets(name_prefix+"_full", attrs),
|
|
|
|
expectedBazelTargets: makeCcLibraryTargets(name_prefix+"_full", attrs),
|
|
|
|
})
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
runCcLibraryStaticTestCase(t, bp2buildTestCase{
|
|
|
|
runCcLibraryStaticTestCase(t, bp2buildTestCase{
|
|
|
|
description: fmt.Sprintf(
|
|
|
|
description: fmt.Sprintf(
|
|
|
|
"cc_library_static with cpp_std: %s and gnu_extensions: %s", tc.cpp_std, tc.gnu_extensions),
|
|
|
|
"cc_library_static with cpp_std: %s and gnu_extensions: %s", tc.cpp_std, tc.gnu_extensions),
|
|
|
|
moduleTypeUnderTest: "cc_library_static",
|
|
|
|
moduleTypeUnderTest: "cc_library_static",
|
|
|
|
moduleTypeUnderTestFactory: cc.LibraryStaticFactory,
|
|
|
|
moduleTypeUnderTestFactory: cc.LibraryStaticFactory,
|
|
|
|
blueprint: soongCcLibraryPreamble + fmt.Sprintf(`
|
|
|
|
blueprint: soongCcLibraryPreamble + fmt.Sprintf(`
|
|
|
|
cc_library_static {
|
|
|
|
cc_library_static {
|
|
|
|
name: "%s_static",
|
|
|
|
name: "%s_static",
|
|
|
|
%s // cpp_std: *string
|
|
|
|
%s // cpp_std: *string
|
|
|
@@ -1974,17 +1976,17 @@ cc_library_static {
|
|
|
|
include_build_directory: false,
|
|
|
|
include_build_directory: false,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
`, name_prefix, cppStdProp, cStdProp, gnuExtensionsProp),
|
|
|
|
`, name_prefix, cppStdProp, cStdProp, gnuExtensionsProp),
|
|
|
|
expectedBazelTargets: []string{
|
|
|
|
expectedBazelTargets: []string{
|
|
|
|
makeBazelTarget("cc_library_static", name_prefix+"_static", attrs),
|
|
|
|
makeBazelTarget("cc_library_static", name_prefix+"_static", attrs),
|
|
|
|
},
|
|
|
|
},
|
|
|
|
})
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
runCcLibrarySharedTestCase(t, bp2buildTestCase{
|
|
|
|
runCcLibrarySharedTestCase(t, bp2buildTestCase{
|
|
|
|
description: fmt.Sprintf(
|
|
|
|
description: fmt.Sprintf(
|
|
|
|
"cc_library_shared with cpp_std: %s and gnu_extensions: %s", tc.cpp_std, tc.gnu_extensions),
|
|
|
|
"cc_library_shared with cpp_std: %s and gnu_extensions: %s", tc.cpp_std, tc.gnu_extensions),
|
|
|
|
moduleTypeUnderTest: "cc_library_shared",
|
|
|
|
moduleTypeUnderTest: "cc_library_shared",
|
|
|
|
moduleTypeUnderTestFactory: cc.LibrarySharedFactory,
|
|
|
|
moduleTypeUnderTestFactory: cc.LibrarySharedFactory,
|
|
|
|
blueprint: soongCcLibraryPreamble + fmt.Sprintf(`
|
|
|
|
blueprint: soongCcLibraryPreamble + fmt.Sprintf(`
|
|
|
|
cc_library_shared {
|
|
|
|
cc_library_shared {
|
|
|
|
name: "%s_shared",
|
|
|
|
name: "%s_shared",
|
|
|
|
%s // cpp_std: *string
|
|
|
|
%s // cpp_std: *string
|
|
|
@@ -1993,9 +1995,10 @@ cc_library_shared {
|
|
|
|
include_build_directory: false,
|
|
|
|
include_build_directory: false,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
`, name_prefix, cppStdProp, cStdProp, gnuExtensionsProp),
|
|
|
|
`, name_prefix, cppStdProp, cStdProp, gnuExtensionsProp),
|
|
|
|
expectedBazelTargets: []string{
|
|
|
|
expectedBazelTargets: []string{
|
|
|
|
makeBazelTarget("cc_library_shared", name_prefix+"_shared", attrs),
|
|
|
|
makeBazelTarget("cc_library_shared", name_prefix+"_shared", attrs),
|
|
|
|
},
|
|
|
|
},
|
|
|
|
|
|
|
|
})
|
|
|
|
})
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|