aboutsummaryrefslogtreecommitdiff
path: root/compiler_wrapper/sysroot_flag.go
diff options
context:
space:
mode:
Diffstat (limited to 'compiler_wrapper/sysroot_flag.go')
-rw-r--r--compiler_wrapper/sysroot_flag.go24
1 files changed, 21 insertions, 3 deletions
diff --git a/compiler_wrapper/sysroot_flag.go b/compiler_wrapper/sysroot_flag.go
index 597153a9..0256abcd 100644
--- a/compiler_wrapper/sysroot_flag.go
+++ b/compiler_wrapper/sysroot_flag.go
@@ -9,19 +9,37 @@ import (
"strings"
)
+const skipSysrootAutodetectionFlag = "--cros-skip-wrapper-sysroot-autodetection"
+
func processSysrootFlag(builder *commandBuilder) {
+ hadSkipSysrootMagicFlag := false
fromUser := false
userSysroot := ""
- for _, arg := range builder.args {
- if arg.fromUser && strings.HasPrefix(arg.value, "--sysroot=") {
+ builder.transformArgs(func(arg builderArg) string {
+ switch {
+ // In rare cases (e.g., glibc), we want all sysroot autodetection logic to be
+ // disabled. This flag can be passed to disable that.
+ case arg.value == skipSysrootAutodetectionFlag:
+ hadSkipSysrootMagicFlag = true
+ return ""
+
+ case arg.fromUser && strings.HasPrefix(arg.value, "--sysroot="):
fromUser = true
sysrootArg := strings.Split(arg.value, "=")
if len(sysrootArg) == 2 {
userSysroot = sysrootArg[1]
}
- break
+ return arg.value
+
+ default:
+ return arg.value
}
+ })
+
+ if hadSkipSysrootMagicFlag {
+ return
}
+
sysroot, syrootPresent := builder.env.getenv("SYSROOT")
if syrootPresent {
builder.updateEnv("SYSROOT=")