shims/super/cc: fix sysroot flag handling

The shim currently does not handle `--sysroot=` and `-isysroot=` flags
correctly. For example, the LLVM build passes `--sysroot=.`, and this is
incorrectly parsed by the shim.
This commit is contained in:
Carlo Cabrera 2021-06-08 00:58:23 +01:00
parent c7dff1bbfe
commit 863b412820
No known key found for this signature in database
GPG Key ID: C74D447FC549A1D0

View File

@ -212,13 +212,24 @@ class Cmd
args << "-Wl,-multiply_defined,suppress"
when "-undefineddynamic_lookup"
args << "-Wl,-undefined,dynamic_lookup"
when /^-isysroot/, /^--sysroot/
when /^-isysroot=/, /^--sysroot=/
if mac?
sdk = enum.next
sdk = arg.split("=")[1..-1].join("=")
# We set the sysroot for macOS SDKs
args << arg unless sdk.downcase.include? "osx"
else
args << arg
end
when /^-isysroot(.+)?/, /^--sysroot(.+)?/
# Support both "-isysrootfoo" and "-isysroot foo" (two arguments)
sdk = chuzzle(Regexp.last_match(1))
if mac?
sdk ||= enum.next
# We set the sysroot for macOS SDKs
args << "-isysroot#{sdk}" unless sdk.downcase.include? "osx"
else
args << arg << enum.next
args << arg
args << enum.next unless sdk
end
when "-dylib"
args << "-Wl,#{arg}"