Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e466cc7e authored by Jingwen Chen's avatar Jingwen Chen Committed by Gerrit Code Review
Browse files

Merge "Convert cpp_std to be an attribute instead of a copt."

parents 7e195664 5b11ab1a
Loading
Loading
Loading
Loading
+40 −2
Original line number Diff line number Diff line
@@ -1692,7 +1692,7 @@ cc_library {

}

func TestCcLibraryCppStdWithGnuExtensions_ConvertstoCopt(t *testing.T) {
func TestCcLibraryCppStdWithGnuExtensions_ConvertsToFeatureAttr(t *testing.T) {
	type testCase struct {
		cpp_std        string
		gnu_extensions string
@@ -1751,7 +1751,7 @@ func TestCcLibraryCppStdWithGnuExtensions_ConvertstoCopt(t *testing.T) {
		}
		bazelCppStdAttr := ""
		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{
@@ -1770,6 +1770,44 @@ cc_library {
`, cppStdAttr, gnuExtensionsAttr),
			expectedBazelTargets: []string{fmt.Sprintf(`cc_library(
    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)},
		})
	}
+12 −5
Original line number Diff line number Diff line
@@ -226,7 +226,10 @@ type compilerAttributes struct {
	srcs     bazel.LabelListAttribute

	rtti bazel.BoolAttribute

	// Not affected by arch variants
	stl    *string
	cppStd *string

	localIncludes    bazel.StringListAttribute
	absoluteIncludes bazel.StringListAttribute
@@ -242,6 +245,8 @@ func bp2BuildParseCompilerProps(ctx android.TopDownMutatorContext, module *Modul
	var rtti bazel.BoolAttribute
	var localIncludes bazel.StringListAttribute
	var absoluteIncludes bazel.StringListAttribute
	var stl *string = nil
	var cppStd *string = nil

	parseCommandLineFlags := func(soongFlags []string) []string {
		var result []string
@@ -283,7 +288,6 @@ func bp2BuildParseCompilerProps(ctx android.TopDownMutatorContext, module *Modul
					srcs.SetSelectValue(axis, config, srcsList)
				}

				var archVariantCopts []string
				if axis == bazel.NoConfigAxis {
					// If cpp_std is not specified, don't generate it in the
					// 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.
						cppStdVal := parseCppStd(baseCompilerProps.Cpp_std)
						_, cppStdVal = maybeReplaceGnuToC(baseCompilerProps.Gnu_extensions, "", cppStdVal)
						archVariantCopts = append(archVariantCopts, "-std="+cppStdVal)
						cppStd = &cppStdVal
					} 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)...)
				archVariantAsflags := parseCommandLineFlags(baseCompilerProps.Asflags)

@@ -345,7 +352,6 @@ func bp2BuildParseCompilerProps(ctx android.TopDownMutatorContext, module *Modul

	srcs, cSrcs, asSrcs := groupSrcsByExtension(ctx, srcs)

	var stl *string = nil
	stlPropsByArch := module.GetArchVariantProperties(ctx, &StlProperties{})
	for _, configToProps := range stlPropsByArch {
		for _, props := range configToProps {
@@ -373,6 +379,7 @@ func bp2BuildParseCompilerProps(ctx android.TopDownMutatorContext, module *Modul
		cppFlags:         cppFlags,
		rtti:             rtti,
		stl:              stl,
		cppStd:           cppStd,
		localIncludes:    localIncludes,
		absoluteIncludes: absoluteIncludes,
	}
+8 −1
Original line number Diff line number Diff line
@@ -248,7 +248,9 @@ type bazelCcLibraryAttributes struct {
	Linkopts               bazel.StringListAttribute
	Use_libcrt             bazel.BoolAttribute
	Rtti                   bazel.BoolAttribute

	Stl     *string
	Cpp_std *string

	// This is shared only.
	Version_script bazel.LabelAttribute
@@ -328,6 +330,7 @@ func CcLibraryBp2Build(ctx android.TopDownMutatorContext) {
		Use_libcrt:                  linkerAttrs.useLibcrt,
		Rtti:                        compilerAttrs.rtti,
		Stl:                         compilerAttrs.stl,
		Cpp_std:                     compilerAttrs.cppStd,

		Version_script: linkerAttrs.versionScript,

@@ -2403,6 +2406,7 @@ func ccSharedOrStaticBp2BuildMutatorInternal(ctx android.TopDownMutatorContext,
			Use_libcrt:             linkerAttrs.useLibcrt,
			Rtti:                   compilerAttrs.rtti,
			Stl:                    compilerAttrs.stl,
			Cpp_std:                compilerAttrs.cppStd,
			Export_includes:        exportedIncludes.Includes,
			Export_system_includes: exportedIncludes.SystemIncludes,
			Local_includes:         compilerAttrs.localIncludes,
@@ -2427,6 +2431,7 @@ func ccSharedOrStaticBp2BuildMutatorInternal(ctx android.TopDownMutatorContext,
			Use_libcrt: linkerAttrs.useLibcrt,
			Rtti:       compilerAttrs.rtti,
			Stl:        compilerAttrs.stl,
			Cpp_std:    compilerAttrs.cppStd,

			Export_includes:        exportedIncludes.Includes,
			Export_system_includes: exportedIncludes.SystemIncludes,
@@ -2462,6 +2467,7 @@ type bazelCcLibraryStaticAttributes struct {
	Use_libcrt bazel.BoolAttribute
	Rtti       bazel.BoolAttribute
	Stl        *string
	Cpp_std    *string

	Export_includes        bazel.StringListAttribute
	Export_system_includes bazel.StringListAttribute
@@ -2489,6 +2495,7 @@ type bazelCcLibrarySharedAttributes struct {
	Use_libcrt bazel.BoolAttribute
	Rtti       bazel.BoolAttribute
	Stl        *string
	Cpp_std    *string

	Export_includes        bazel.StringListAttribute
	Export_system_includes bazel.StringListAttribute