diff options
Diffstat (limited to 'Library/ENV/4.3/cc')
| -rwxr-xr-x | Library/ENV/4.3/cc | 50 |
1 files changed, 29 insertions, 21 deletions
diff --git a/Library/ENV/4.3/cc b/Library/ENV/4.3/cc index acc0227c2..ffd15f2e3 100755 --- a/Library/ENV/4.3/cc +++ b/Library/ENV/4.3/cc @@ -44,29 +44,29 @@ class Cmd end end def tool - case @cmd - when /gcc/ then 'gcc' - when /g\+\+/ then 'g++' - when 'clang', 'clang++' - @cmd - when 'ld', 'cpp', 'cc' - ENV['HOMEBREW_CC'].chuzzle or 'clang' - when 'c++' - case ENV['HOMEBREW_CC'] - when /gcc/ then 'g++' - else 'clang++' + @tool ||= if @cmd.include? '++' + if ENV['HOMEBREW_CC'].chuzzle =~ /gcc/ + 'g++' + else + 'clang++' end + elsif @cmd == 'ld' + 'ld' else - abort "Unknown command: #{@cmd}" + ENV['HOMEBREW_CC'].chuzzle or 'clang' end end def args - args = if cccfg? 'O' + args = if cccfg? 'O' and tool != 'ld' refurbished_args else @args.dup end - args.unshift("--sysroot=#$sdkroot") if nclt? + if @cmd != 'ld' + args.unshift("--sysroot=#$sdkroot") + else + args.unshift($sdkroot).unshift("-syslibroot") + end if nclt? case mode when :cpp %w{-E} + cppflags + args @@ -110,13 +110,7 @@ class Cmd args << arg end end - - rms = @args - args - %w{CPPFLAGS LDFLAGS CXXFLAGS CFLAGS}.each do |flag| - unison = ENV[flag].split(' ') & rms - puts "Warning! #{unison*' '} removed from #{flag.upcase} by superenv" unless unison.empty? - end - + make_fuss(args) args end def cflags @@ -141,6 +135,20 @@ class Cmd # they override the system options. sys.to_flags('-isystem') + opt.to_flags('-I') end + def make_fuss args + dels = @args - args + if ENV['VERBOSE'] + adds = args - @args + puts "brew: Superenv removed: #{dels*' '}" unless dels.empty? + puts "brew: Superenv added: #{adds*' '}" unless adds.empty? + else + %w{CPPFLAGS LDFLAGS CXXFLAGS CFLAGS}.each do |flag| + next unless ENV[flag] + flags = dels.select{|del| ENV[flag].include? del }.join(' ') + puts "brew: superenv removed `#{flags}' from #{flag}" unless flags.empty? + end + end + end end ####################################################################### sanity |
