diff options
Diffstat (limited to 'compiler_wrapper/sysroot_flag.go')
-rw-r--r-- | compiler_wrapper/sysroot_flag.go | 24 |
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=") |