aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew/extend/ENV.rb
diff options
context:
space:
mode:
authorJack Nagel2013-08-19 12:32:59 -0500
committerJack Nagel2013-08-19 12:32:59 -0500
commitc4f7f6f155f24acb9f34962f3642a2b03f7de5a8 (patch)
tree493e54490d79a37e74227eb1f3f172fd4dfd92a1 /Library/Homebrew/extend/ENV.rb
parentc183f14b2ed9bc15265d02941b09b378b83955ea (diff)
downloadhomebrew-c4f7f6f155f24acb9f34962f3642a2b03f7de5a8.tar.bz2
Move common ENV methods to a shared module
Diffstat (limited to 'Library/Homebrew/extend/ENV.rb')
-rw-r--r--Library/Homebrew/extend/ENV.rb121
1 files changed, 3 insertions, 118 deletions
diff --git a/Library/Homebrew/extend/ENV.rb b/Library/Homebrew/extend/ENV.rb
index 91c379c90..f311d14ee 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