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

Commit 62b75f4e authored by Alix Espino's avatar Alix Espino Committed by Gerrit Code Review
Browse files

Merge "Revert^2 "deletion of clang_cflags & clang_asflags from Soong""

parents f5410382 ef47e54b
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -1619,6 +1619,14 @@ func (c *deviceConfig) ShippingApiLevel() ApiLevel {
	return uncheckedFinalApiLevel(apiLevel)
}

func (c *deviceConfig) BuildBrokenClangAsFlags() bool {
	return c.config.productVariables.BuildBrokenClangAsFlags
}

func (c *deviceConfig) BuildBrokenClangCFlags() bool {
	return c.config.productVariables.BuildBrokenClangCFlags
}

func (c *deviceConfig) BuildBrokenClangProperty() bool {
	return c.config.productVariables.BuildBrokenClangProperty
}
+2 −0
Original line number Diff line number Diff line
@@ -430,6 +430,8 @@ type productVariables struct {

	ShippingApiLevel *string `json:",omitempty"`

	BuildBrokenClangAsFlags            bool     `json:",omitempty"`
	BuildBrokenClangCFlags             bool     `json:",omitempty"`
	BuildBrokenClangProperty           bool     `json:",omitempty"`
	BuildBrokenDepfile                 *bool    `json:",omitempty"`
	BuildBrokenEnforceSyspropOwner     bool     `json:",omitempty"`
+90 −0
Original line number Diff line number Diff line
@@ -4386,3 +4386,93 @@ func TestCcBuildBrokenClangProperty(t *testing.T) {
		})
	}
}

func TestCcBuildBrokenClangAsFlags(t *testing.T) {
	tests := []struct {
		name                    string
		clangAsFlags            []string
		BuildBrokenClangAsFlags bool
		err                     string
	}{
		{
			name:         "error when clang_asflags is set",
			clangAsFlags: []string{"-a", "-b"},
			err:          "clang_asflags: property is deprecated",
		},
		{
			name:                    "no error when BuildBrokenClangAsFlags is explicitly set to true",
			clangAsFlags:            []string{"-a", "-b"},
			BuildBrokenClangAsFlags: true,
		},
	}

	for _, test := range tests {
		t.Run(test.name, func(t *testing.T) {
			bp := fmt.Sprintf(`
			cc_library {
			   name: "foo",
			   clang_asflags: %s,
			}`, `["`+strings.Join(test.clangAsFlags, `","`)+`"]`)

			if test.err == "" {
				android.GroupFixturePreparers(
					prepareForCcTest,
					android.FixtureModifyProductVariables(func(variables android.FixtureProductVariables) {
						if test.BuildBrokenClangAsFlags {
							variables.BuildBrokenClangAsFlags = test.BuildBrokenClangAsFlags
						}
					}),
				).RunTestWithBp(t, bp)
			} else {
				prepareForCcTest.
					ExtendWithErrorHandler(android.FixtureExpectsOneErrorPattern(test.err)).
					RunTestWithBp(t, bp)
			}
		})
	}
}

func TestCcBuildBrokenClangCFlags(t *testing.T) {
	tests := []struct {
		name                   string
		clangCFlags            []string
		BuildBrokenClangCFlags bool
		err                    string
	}{
		{
			name:        "error when clang_cflags is set",
			clangCFlags: []string{"-a", "-b"},
			err:         "clang_cflags: property is deprecated",
		},
		{
			name:                   "no error when BuildBrokenClangCFlags is explicitly set to true",
			clangCFlags:            []string{"-a", "-b"},
			BuildBrokenClangCFlags: true,
		},
	}

	for _, test := range tests {
		t.Run(test.name, func(t *testing.T) {
			bp := fmt.Sprintf(`
			cc_library {
			   name: "foo",
			   clang_cflags: %s,
			}`, `["`+strings.Join(test.clangCFlags, `","`)+`"]`)

			if test.err == "" {
				android.GroupFixturePreparers(
					prepareForCcTest,
					android.FixtureModifyProductVariables(func(variables android.FixtureProductVariables) {
						if test.BuildBrokenClangCFlags {
							variables.BuildBrokenClangCFlags = test.BuildBrokenClangCFlags
						}
					}),
				).RunTestWithBp(t, bp)
			} else {
				prepareForCcTest.
					ExtendWithErrorHandler(android.FixtureExpectsOneErrorPattern(test.err)).
					RunTestWithBp(t, bp)
			}
		})
	}
}
+16 −4
Original line number Diff line number Diff line
@@ -441,12 +441,24 @@ func (compiler *baseCompiler) compilerFlags(ctx ModuleContext, flags Flags, deps
	// TODO: debug
	flags.Local.CFlags = append(flags.Local.CFlags, esc(compiler.Properties.Release.Cflags)...)

	if !ctx.DeviceConfig().BuildBrokenClangCFlags() && len(compiler.Properties.Clang_cflags) != 0 {
		ctx.PropertyErrorf("clang_cflags", "property is deprecated, see Changes.md file")
	} else {
		CheckBadCompilerFlags(ctx, "clang_cflags", compiler.Properties.Clang_cflags)
	}
	if !ctx.DeviceConfig().BuildBrokenClangAsFlags() && len(compiler.Properties.Clang_asflags) != 0 {
		ctx.PropertyErrorf("clang_asflags", "property is deprecated, see Changes.md file")
	} else {
		CheckBadCompilerFlags(ctx, "clang_asflags", compiler.Properties.Clang_asflags)
	}

	flags.Local.CFlags = config.ClangFilterUnknownCflags(flags.Local.CFlags)
	if !ctx.DeviceConfig().BuildBrokenClangCFlags() {
		flags.Local.CFlags = append(flags.Local.CFlags, esc(compiler.Properties.Clang_cflags)...)
	}
	if !ctx.DeviceConfig().BuildBrokenClangAsFlags() {
		flags.Local.AsFlags = append(flags.Local.AsFlags, esc(compiler.Properties.Clang_asflags)...)
	}
	flags.Local.CppFlags = config.ClangFilterUnknownCflags(flags.Local.CppFlags)
	flags.Local.ConlyFlags = config.ClangFilterUnknownCflags(flags.Local.ConlyFlags)
	flags.Local.LdFlags = config.ClangFilterUnknownCflags(flags.Local.LdFlags)