diff --git a/Library/ENV/4.3/cc b/Library/ENV/4.3/cc index acc0227c21..ffd15f2e3c 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 diff --git a/Library/ENV/4.3/make b/Library/ENV/4.3/make new file mode 100755 index 0000000000..7e5196e6ae --- /dev/null +++ b/Library/ENV/4.3/make @@ -0,0 +1,3 @@ +#!/bin/sh +export HOMEBREW_CCCFG="O$HOMEBREW_CCCFG" +exec xcrun make "$@" diff --git a/Library/Homebrew/formula.rb b/Library/Homebrew/formula.rb index 08e01a7d78..78209feb75 100644 --- a/Library/Homebrew/formula.rb +++ b/Library/Homebrew/formula.rb @@ -470,8 +470,6 @@ protected removed_ENV_variables = case if args.empty? then cmd.split(' ').first else cmd end when "xcodebuild" ENV.remove_cc_etc - when /^make\b/ - ENV.append 'HOMEBREW_CCCFG', "O", '' end if ARGV.verbose? @@ -502,8 +500,6 @@ protected rescue raise BuildError.new(self, cmd, args, $?) - ensure - ENV['HOMEBREW_CCCFG'] = ENV['HOMEBREW_CCCFG'].delete('O') if ENV['HOMEBREW_CCCFG'] end public diff --git a/Library/Homebrew/superenv.rb b/Library/Homebrew/superenv.rb index 46e6bafa0f..f059283ce2 100644 --- a/Library/Homebrew/superenv.rb +++ b/Library/Homebrew/superenv.rb @@ -28,7 +28,7 @@ class << ENV alias_method :x11?, :x11 def reset - %w{CC CXX LD CPP OBJC MAKE + %w{CC CXX CPP OBJC MAKE CFLAGS CXXFLAGS OBJCFLAGS OBJCXXFLAGS LDFLAGS CPPFLAGS MACOS_DEPLOYMENT_TARGET SDKROOT CMAKE_PREFIX_PATH CMAKE_INCLUDE_PATH CMAKE_FRAMEWORK_PATH}. @@ -40,11 +40,7 @@ class << ENV def setup_build_environment reset - ENV['CC'] = 'cc' - ENV['CXX'] = 'c++' - ENV['LD'] = 'ld' - ENV['CPP'] = 'cpp' - ENV['MAKE'] = 'make' + ENV['LD'] = 'cc' ENV['MAKEFLAGS'] ||= "-j#{determine_make_jobs}" ENV['PATH'] = determine_path ENV['PKG_CONFIG_PATH'] = determine_pkg_config_path @@ -184,16 +180,13 @@ class << ENV end alias_method :j1, :deparallelize def gcc - ENV['CC'] = "gcc" - ENV['CXX'] = "g++" + ENV['HOMEBREW_CC'] = "gcc" end def llvm - ENV['CC'] = "llvm-gcc" - ENV['CXX'] = "llvm-g++" + ENV['HOMEBREW_CC'] = "llvm-gcc" end def clang - ENV['CC'] = "clang" - ENV['CXX'] = "clang++" + ENV['HOMEBREW_CC'] = "clang" end def make_jobs ENV['MAKEFLAGS'] =~ /-\w*j(\d)+/