superenv: Allow ENV.m32 (for 32bit builds)

Superenv normally filters out "-m32" flag, preventing 32bit builds.
Some software, however, still only work in 32bit mode.

If ENV.m32 is called, superenv does not filter out the "-m32" flag.
Also note, superenv, does not explicitly add the -m32 flag and
expects the build system of the software to know when and where to
provide this flag.

Closes Homebrew/homebrew#16350.

Signed-off-by: Adam Vandenberg <flangy@gmail.com>
This commit is contained in:
Samuel John 2012-12-01 19:42:22 +01:00 committed by Adam Vandenberg
parent 2c6a7bdca8
commit 293be41d5c
2 changed files with 10 additions and 2 deletions

View File

@ -101,8 +101,11 @@ class Cmd
case arg = whittler.next case arg = whittler.next
when '-arch', /^-Xarch_/ when '-arch', /^-Xarch_/
whittler.next whittler.next
when '-m32'
# If ENV.m32 was set, we allow the "-m32" flag, but we don't add anything
args << '-m32' if cccfg? '3'
when /^-g\d?/, /^-gstabs\d+/, '-gstabs+', /^-ggdb\d?/, '-gdwarf-2', when /^-g\d?/, /^-gstabs\d+/, '-gstabs+', /^-ggdb\d?/, '-gdwarf-2',
/^-march=.+/, /^-mtune=.+/, '-m64', '-m32', /^-march=.+/, /^-mtune=.+/, '-m64',
/^-O[0-9zs]?$/, '-fast', /^-O[0-9zs]?$/, '-fast',
'-pedantic', '-pedantic-errors' '-pedantic', '-pedantic-errors'
when '-fopenmp', '-lgomp' when '-fopenmp', '-lgomp'

View File

@ -68,6 +68,11 @@ class << ENV
append 'HOMEBREW_CCCFG', "u", '' append 'HOMEBREW_CCCFG', "u", ''
end end
# m32 on superenv does not add any flags. It prevents "-m32" from being erased.
def m32
append 'HOMEBREW_CCCFG', "3", ''
end
private private
def determine_cc def determine_cc
@ -205,7 +210,7 @@ class << ENV
### NO LONGER NECESSARY OR NO LONGER SUPPORTED ### NO LONGER NECESSARY OR NO LONGER SUPPORTED
def noop(*args); end def noop(*args); end
%w[m64 m32 gcc_4_0_1 fast O4 O3 O2 Os Og O1 libxml2 minimal_optimization %w[m64 gcc_4_0_1 fast O4 O3 O2 Os Og O1 libxml2 minimal_optimization
no_optimization enable_warnings x11 no_optimization enable_warnings x11
set_cpu_flags set_cpu_flags
macosxsdk remove_macosxsdk].each{|s| alias_method s, :noop } macosxsdk remove_macosxsdk].each{|s| alias_method s, :noop }