diff --git a/Library/Homebrew/extend/ENV.rb b/Library/Homebrew/extend/ENV.rb index 91c379c908..f311d14ee9 100644 --- a/Library/Homebrew/extend/ENV.rb +++ b/Library/Homebrew/extend/ENV.rb @@ -1,4 +1,5 @@ require 'hardware' +require 'extend/ENV/shared' require 'extend/ENV/super' def superenv? @@ -21,9 +22,9 @@ end ENV.extend(EnvActivation) module HomebrewEnvExtension + include SharedEnvExtension + SAFE_CFLAGS_FLAGS = "-w -pipe" - CC_FLAG_VARS = %w{CFLAGS CXXFLAGS OBJCFLAGS OBJCXXFLAGS} - FC_FLAG_VARS = %w{FCFLAGS FFLAGS} DEFAULT_FLAGS = '-march=core2 -msse4' def self.extended(base) @@ -403,119 +404,3 @@ module HomebrewEnvExtension append "LDFLAGS", "-B#{ld64.bin.to_s+"/"}" end end - -class << ENV - def remove_cc_etc - keys = %w{CC CXX OBJC OBJCXX LD CPP CFLAGS CXXFLAGS OBJCFLAGS OBJCXXFLAGS LDFLAGS CPPFLAGS} - removed = Hash[*keys.map{ |key| [key, self[key]] }.flatten] - keys.each do |key| - delete(key) - end - removed - end - def append_to_cflags newflags - append(HomebrewEnvExtension::CC_FLAG_VARS, newflags) - end - def remove_from_cflags val - remove HomebrewEnvExtension::CC_FLAG_VARS, val - end - def append keys, value, separator = ' ' - value = value.to_s - Array(keys).each do |key| - unless self[key].to_s.empty? - self[key] = self[key] + separator + value.to_s - else - self[key] = value.to_s - end - end - end - def prepend keys, value, separator = ' ' - Array(keys).each do |key| - unless self[key].to_s.empty? - self[key] = value.to_s + separator + self[key] - else - self[key] = value.to_s - end - end - end - def prepend_path key, path - prepend key, path, ':' if File.directory? path - end - def remove keys, value - Array(keys).each do |key| - next unless self[key] - self[key] = self[key].sub(value, '') - delete(key) if self[key].to_s.empty? - end if value - end - - def cc; self['CC'] or "cc"; end - def cxx; self['CXX'] or "c++"; end - def cflags; self['CFLAGS']; end - def cxxflags; self['CXXFLAGS']; end - def cppflags; self['CPPFLAGS']; end - def ldflags; self['LDFLAGS']; end - def fc; self['FC']; end - def fflags; self['FFLAGS']; end - def fcflags; self['FCFLAGS']; end - - # Snow Leopard defines an NCURSES value the opposite of most distros - # See: http://bugs.python.org/issue6848 - # Currently only used by aalib in core - def ncurses_define - append 'CPPFLAGS', "-DNCURSES_OPAQUE=0" - end - - def userpaths! - paths = ORIGINAL_PATHS.map { |p| p.realpath.to_s rescue nil } - %w{/usr/X11/bin /opt/X11/bin} - self['PATH'] = paths.unshift(*self['PATH'].split(":")).uniq.join(":") - # XXX hot fix to prefer brewed stuff (e.g. python) over /usr/bin. - prepend 'PATH', HOMEBREW_PREFIX/'bin', ':' - end - - def with_build_environment - old_env = to_hash - setup_build_environment - yield - ensure - replace(old_env) - end - - def fortran - # superenv removes these PATHs, but this option needs them - # TODO fix better, probably by making a super-fc - self['PATH'] += ":#{HOMEBREW_PREFIX}/bin:/usr/local/bin" - - if self['FC'] - ohai "Building with an alternative Fortran compiler" - puts "This is unsupported." - self['F77'] ||= self['FC'] - - if ARGV.include? '--default-fortran-flags' - flags_to_set = [] - flags_to_set << 'FCFLAGS' unless self['FCFLAGS'] - flags_to_set << 'FFLAGS' unless self['FFLAGS'] - flags_to_set.each {|key| self[key] = cflags} - set_cpu_flags(flags_to_set) - elsif not self['FCFLAGS'] or self['FFLAGS'] - opoo <<-EOS.undent - No Fortran optimization information was provided. You may want to consider - setting FCFLAGS and FFLAGS or pass the `--default-fortran-flags` option to - `brew install` if your compiler is compatible with GCC. - - If you like the default optimization level of your compiler, ignore this - warning. - EOS - end - - elsif which 'gfortran' - ohai "Using Homebrew-provided fortran compiler." - puts "This may be changed by setting the FC environment variable." - self['FC'] = which 'gfortran' - self['F77'] = self['FC'] - - HomebrewEnvExtension::FC_FLAG_VARS.each {|key| self[key] = cflags} - set_cpu_flags(HomebrewEnvExtension::FC_FLAG_VARS) - end - end -end diff --git a/Library/Homebrew/extend/ENV/super.rb b/Library/Homebrew/extend/ENV/super.rb index b3a14fdd3e..5bfa34437c 100644 --- a/Library/Homebrew/extend/ENV/super.rb +++ b/Library/Homebrew/extend/ENV/super.rb @@ -1,4 +1,5 @@ require 'macos' +require 'extend/ENV/shared' ### Why `superenv`? # 1) Only specify the environment we need (NO LDFLAGS for cmake) @@ -11,6 +12,8 @@ require 'macos' # 8) Build-system agnostic configuration of the tool-chain module Superenv + include SharedEnvExtension + attr_accessor :keg_only_deps, :deps, :x11 alias_method :x11?, :x11