xref: /aosp_15_r20/external/toolchain-utils/compiler_wrapper/gcc_flags.go (revision 760c253c1ed00ce9abd48f8546f08516e57485fe)
1*760c253cSXin Li// Copyright 2019 The ChromiumOS Authors
2*760c253cSXin Li// Use of this source code is governed by a BSD-style license that can be
3*760c253cSXin Li// found in the LICENSE file.
4*760c253cSXin Li
5*760c253cSXin Lipackage main
6*760c253cSXin Li
7*760c253cSXin Lifunc processGccFlags(builder *commandBuilder) {
8*760c253cSXin Li	if !builder.cfg.isHostWrapper {
9*760c253cSXin Li		// Flags not supported by GCC.
10*760c253cSXin Li		unsupported := map[string]bool{"-Xcompiler": true}
11*760c253cSXin Li
12*760c253cSXin Li		// Conversion for flags supported by clang but not gcc.
13*760c253cSXin Li		clangToGcc := map[string]string{
14*760c253cSXin Li			"-march=alderlake": "-march=skylake",
15*760c253cSXin Li		}
16*760c253cSXin Li
17*760c253cSXin Li		builder.transformArgs(func(arg builderArg) string {
18*760c253cSXin Li			if unsupported[arg.value] {
19*760c253cSXin Li				return ""
20*760c253cSXin Li			}
21*760c253cSXin Li			if mapped, ok := clangToGcc[arg.value]; ok {
22*760c253cSXin Li				return mapped
23*760c253cSXin Li			}
24*760c253cSXin Li			return arg.value
25*760c253cSXin Li		})
26*760c253cSXin Li	}
27*760c253cSXin Li
28*760c253cSXin Li	builder.path += ".real"
29*760c253cSXin Li}
30