Puts build-tool args first

build-tool provided args must be considered first by cc, etc. Generally this already occurred for -I flags, because most of our -I flags were -isystem. However it didn't occur for keg-only flags and -L paths.

This was an error.

I amended the refurbishment code to ensure any paths we want to control the order of are thoroughly scrubbed out of the build-tool provided args. This ensures reliability for our builds.

However this path-scrubbing should always occur, even during configure (I am fairly sure of this). So more work is required.

Fixes Homebrew/homebrew#14781.
This commit is contained in:
Max Howell 2012-09-14 11:55:21 -04:00
parent da1905f216
commit 4bf72a3e62

View File

@ -64,24 +64,24 @@ class Cmd
refurbished_args
end
if tool != 'ld'
args.unshift("--sysroot=#$sdkroot")
args << "--sysroot=#$sdkroot"
else
args.unshift($sdkroot).unshift("-syslibroot")
args << "-syslibroot" << $sdkroot
end if nclt?
case mode
when :cpp
%w{-E} + cppflags + args
%w{-E} + args + cppflags
when :ld
ldflags + args
when :cc
cflags + cppflags + args
cflags + args + cppflags
when :ccld
cflags + cppflags + ldflags + args
cflags + args + cppflags + ldflags
end.compact
end
def refurbished_args
lset = Set.new(syslibpath)
iset = Set.new(syscpath)
lset = Set.new(libpath + syslibpath)
iset = Set.new(cpath.flatten)
args = []
whittler = @args.each