diff options
Diffstat (limited to 'Library/Homebrew/extend')
| -rw-r--r-- | Library/Homebrew/extend/ENV.rb | 121 |
1 files changed, 55 insertions, 66 deletions
diff --git a/Library/Homebrew/extend/ENV.rb b/Library/Homebrew/extend/ENV.rb index 90ff517b1..69947879e 100644 --- a/Library/Homebrew/extend/ENV.rb +++ b/Library/Homebrew/extend/ENV.rb @@ -178,6 +178,8 @@ module HomebrewEnvExtension end def fortran + fc_flag_vars = %w{FCFLAGS FFLAGS} + if self['FC'] ohai "Building with an alternative Fortran compiler. This is unsupported." self['F77'] = self['FC'] unless self['F77'] @@ -333,28 +335,6 @@ Please take one of the following actions: remove_from_cflags '-Qunused-arguments' end - # Snow Leopard defines an NCURSES value the opposite of most distros - # See: http://bugs.python.org/issue6848 - def ncurses_define - append 'CPPFLAGS', "-DNCURSES_OPAQUE=0" - end - - # Shortcuts for reading common flags - def cc; self['CC'] or "gcc"; end - def cxx; self['CXX'] or "g++"; end - def cflags; self['CFLAGS']; end - def cxxflags;self['CXXFLAGS']; end - def cppflags;self['CPPFLAGS']; end - def ldflags; self['LDFLAGS']; end - - # Shortcuts for lists of common flags - def cc_flag_vars - %w{CFLAGS CXXFLAGS OBJCFLAGS OBJCXXFLAGS} - end - def fc_flag_vars - %w{FCFLAGS FFLAGS} - end - def m64 append_to_cflags '-m64' append 'LDFLAGS', '-arch x86_64' @@ -376,49 +356,6 @@ Please take one of the following actions: end end - def prepend key, value, separator = ' ' - # Value should be a string, but if it is a pathname then coerce it. - value = value.to_s - - [*key].each do |key| - unless self[key].to_s.empty? - self[key] = value + separator + self[key] - else - self[key] = value - end - end - end - - def append key, value, separator = ' ' - # Value should be a string, but if it is a pathname then coerce it. - value = value.to_s - - [*key].each do |key| - unless self[key].to_s.empty? - self[key] = self[key] + separator + value - else - self[key] = value - end - end - end - - def append_to_cflags f - append cc_flag_vars, f - end - - def remove key, value - [*key].each do |key| - next if self[key].nil? - self[key] = self[key].sub value, '' # can't use sub! on ENV - self[key] = self[key].gsub /\s+/, ' ' # compact whitespace - self[key] = nil if self[key].empty? # keep things clean - end - end - - def remove_from_cflags f - remove cc_flag_vars, f - end - def replace_in_cflags before, after cc_flag_vars.each do |key| self[key] = self[key].sub before, after if self[key] @@ -491,13 +428,65 @@ Please take one of the following actions: Hardware.processor_count end end +end +class << ENV def remove_cc_etc keys = %w{CC CXX LD CPP CFLAGS CXXFLAGS OBJCFLAGS OBJCXXFLAGS LDFLAGS CPPFLAGS} removed = Hash[*keys.map{ |key| [key, self[key]] }.flatten] keys.each do |key| - self[key] = nil + delete(key) end removed end + def cc_flag_vars + %w{CFLAGS CXXFLAGS OBJCFLAGS OBJCXXFLAGS} + end + def append_to_cflags newflags + append(cc_flag_vars, newflags) + end + def remove_from_cflags f + remove cc_flag_vars, f + end + def append key, value, separator = ' ' + value = value.to_s + [*key].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 key, value, separator = ' ' + [*key].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 key, value + [*key].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 + + # Snow Leopard defines an NCURSES value the opposite of most distros + # See: http://bugs.python.org/issue6848 + def ncurses_define + append 'CPPFLAGS', "-DNCURSES_OPAQUE=0" + end end |
