diff options
| author | Charlie Sharpsteen | 2012-03-07 17:56:56 -0800 |
|---|---|---|
| committer | Charlie Sharpsteen | 2012-03-09 12:14:04 -0800 |
| commit | 1805e87529614ebc56c16210a5b3ce544a1c7329 (patch) | |
| tree | 9e7be7317e129af94f2631c421b834994e1c21c6 /Library | |
| parent | 880f566867ea63d419fc783ade89fc7fd0d91087 (diff) | |
| download | brew-1805e87529614ebc56c16210a5b3ce544a1c7329.tar.bz2 | |
ENV.rb: Modifier methods accept lists of flags
`ENV` methods that modify environment variables, `prepend`, `append` and
`remove`, can now accept lists of flags as well as a single flag.
The list of flags affected by `append_to_cflags` and `remove_from_cflags` are
now definied in a shortcut method `cc_flag_vars`.
Signed-off-by: Charlie Sharpsteen <source@sharpsteen.net>
Diffstat (limited to 'Library')
| -rw-r--r-- | Library/Homebrew/extend/ENV.rb | 49 |
1 files changed, 28 insertions, 21 deletions
diff --git a/Library/Homebrew/extend/ENV.rb b/Library/Homebrew/extend/ENV.rb index 6d11053fd..c00ee917f 100644 --- a/Library/Homebrew/extend/ENV.rb +++ b/Library/Homebrew/extend/ENV.rb @@ -274,6 +274,11 @@ Please take one of the following actions: 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 m64 append_to_cflags '-m64' append 'LDFLAGS', '-arch x86_64' @@ -298,52 +303,54 @@ Please take one of the following actions: def prepend key, value, separator = ' ' # Value should be a string, but if it is a pathname then coerce it. value = value.to_s - unless self[key].to_s.empty? - self[key] = value + separator + self[key] - else - self[key] = value + + [*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 - unless self[key].to_s.empty? - self[key] = self[key] + separator + value - else - self[key] = value + + [*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 'CFLAGS', f - append 'CXXFLAGS', f - append 'OBJCFLAGS', f - append 'OBJCXXFLAGS', f + append cc_flag_vars, f end def remove key, value - return if self[key].nil? - self[key] = self[key].sub value, '' # can't use sub! on ENV - self[key] = nil if self[key].empty? # keep things clean + [*key].each do |key| + next if self[key].nil? + self[key] = self[key].sub value, '' # can't use sub! on ENV + self[key] = nil if self[key].empty? # keep things clean + end end def remove_from_cflags f - remove 'CFLAGS', f - remove 'CXXFLAGS', f - remove 'OBJCFLAGS', f - remove 'OBJCXXFLAGS', f + remove cc_flag_vars, f end def replace_in_cflags before, after - %w{CFLAGS CXXFLAGS OBJCFLAGS OBJCXXFLAGS}.each do |key| + cc_flag_vars.each do |key| self[key] = self[key].sub before, after if self[key] end end # Convenience method to set all C compiler flags in one shot. def set_cflags f - %w{CFLAGS CXXFLAGS OBJCFLAGS OBJCXXFLAGS}.each do |key| + cc_flag_vars.each do |key| self[key] = f end end |
