From 4bf72a3e622f458c421999595ff9c92050b63814 Mon Sep 17 00:00:00 2001 From: Max Howell Date: Fri, 14 Sep 2012 11:55:21 -0400 Subject: [PATCH] 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. --- Library/ENV/4.3/cc | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Library/ENV/4.3/cc b/Library/ENV/4.3/cc index 5b7753de89..37ebc0400d 100755 --- a/Library/ENV/4.3/cc +++ b/Library/ENV/4.3/cc @@ -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