Extract body of refurbished_args loop
This commit is contained in:
parent
8c426e8207
commit
fb296f8224
@ -118,55 +118,65 @@ class Cmd
|
|||||||
end
|
end
|
||||||
|
|
||||||
def refurbished_args
|
def refurbished_args
|
||||||
lset = Set.new(libpath + syslibpath)
|
@lset = Set.new(libpath + syslibpath)
|
||||||
iset = Set.new(cpath.flatten)
|
@iset = Set.new(cpath.flatten)
|
||||||
|
|
||||||
args = []
|
args = []
|
||||||
whittler = @args.each
|
enum = @args.each
|
||||||
|
|
||||||
loop do
|
loop do
|
||||||
case arg = whittler.next
|
args += refurbish_arg(enum.next, enum)
|
||||||
when '-arch', /^-Xarch_/
|
|
||||||
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',
|
|
||||||
/^-march=.+/, /^-mtune=.+/, /^-mcpu=.+/, '-m64',
|
|
||||||
/^-O[0-9zs]?$/, '-fast', '-no-cpp-precomp',
|
|
||||||
'-pedantic', '-pedantic-errors'
|
|
||||||
when '-fopenmp', '-lgomp', '-mno-fused-madd', '-fforce-addr', '-fno-defer-pop',
|
|
||||||
'-mno-dynamic-no-pic', '-fearly-inlining', '-finline-functions-called-once',
|
|
||||||
/^-finline-limit/, /^-f(?:no-)?check-new/, '-fno-delete-null-pointer-checks',
|
|
||||||
'-fcaller-saves', '-fthread-jumps', '-fno-reorder-blocks', '-fcse-skip-blocks',
|
|
||||||
'-frerun-cse-after-loop', '-frerun-loop-opt', '-fcse-follow-jumps'
|
|
||||||
# clang doesn't support these flags
|
|
||||||
args << arg if not tool =~ /^clang/
|
|
||||||
when /^-W.*/
|
|
||||||
args << arg if arg =~ /^-W[alp],/ or arg =~ /^-Wno-/
|
|
||||||
when '-macosx_version_min', '-dylib_install_name'
|
|
||||||
args << "-Wl,#{arg},#{whittler.next}"
|
|
||||||
when '-multiply_definedsuppress'
|
|
||||||
args << "-Wl,-multiply_defined,suppress"
|
|
||||||
when '-undefineddynamic_lookup'
|
|
||||||
args << "-Wl,-undefined,dynamic_lookup"
|
|
||||||
when /^-isysroot/
|
|
||||||
# We set the sysroot
|
|
||||||
whittler.next
|
|
||||||
when '-dylib'
|
|
||||||
args << "-Wl,#{arg}"
|
|
||||||
when /^-I(.+)?/
|
|
||||||
# Support both "-Ifoo" (one argument) and "-I foo" (two arguments)
|
|
||||||
val = chuzzle($1) || whittler.next
|
|
||||||
path = canonical_path(val)
|
|
||||||
args << "-I#{val}" if keep?(path) and iset.add?(path)
|
|
||||||
when /^-L(.+)?/
|
|
||||||
val = chuzzle($1) || whittler.next
|
|
||||||
path = canonical_path(val)
|
|
||||||
args << "-L#{val}" if keep?(path) and lset.add?(path)
|
|
||||||
else
|
|
||||||
args << arg
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
args
|
||||||
|
end
|
||||||
|
|
||||||
|
def refurbish_arg(arg, enum)
|
||||||
|
args = []
|
||||||
|
|
||||||
|
case arg
|
||||||
|
when '-arch', /^-Xarch_/
|
||||||
|
enum.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',
|
||||||
|
/^-march=.+/, /^-mtune=.+/, /^-mcpu=.+/, '-m64',
|
||||||
|
/^-O[0-9zs]?$/, '-fast', '-no-cpp-precomp',
|
||||||
|
'-pedantic', '-pedantic-errors'
|
||||||
|
when '-fopenmp', '-lgomp', '-mno-fused-madd', '-fforce-addr', '-fno-defer-pop',
|
||||||
|
'-mno-dynamic-no-pic', '-fearly-inlining', '-finline-functions-called-once',
|
||||||
|
/^-finline-limit/, /^-f(?:no-)?check-new/, '-fno-delete-null-pointer-checks',
|
||||||
|
'-fcaller-saves', '-fthread-jumps', '-fno-reorder-blocks', '-fcse-skip-blocks',
|
||||||
|
'-frerun-cse-after-loop', '-frerun-loop-opt', '-fcse-follow-jumps'
|
||||||
|
# clang doesn't support these flags
|
||||||
|
args << arg if not tool =~ /^clang/
|
||||||
|
when /^-W.*/
|
||||||
|
args << arg if arg =~ /^-W[alp],/ or arg =~ /^-Wno-/
|
||||||
|
when '-macosx_version_min', '-dylib_install_name'
|
||||||
|
args << "-Wl,#{arg},#{enum.next}"
|
||||||
|
when '-multiply_definedsuppress'
|
||||||
|
args << "-Wl,-multiply_defined,suppress"
|
||||||
|
when '-undefineddynamic_lookup'
|
||||||
|
args << "-Wl,-undefined,dynamic_lookup"
|
||||||
|
when /^-isysroot/
|
||||||
|
# We set the sysroot
|
||||||
|
enum.next
|
||||||
|
when '-dylib'
|
||||||
|
args << "-Wl,#{arg}"
|
||||||
|
when /^-I(.+)?/
|
||||||
|
# Support both "-Ifoo" (one argument) and "-I foo" (two arguments)
|
||||||
|
val = chuzzle($1) || enum.next
|
||||||
|
path = canonical_path(val)
|
||||||
|
args << "-I#{val}" if keep?(path) && @iset.add?(path)
|
||||||
|
when /^-L(.+)?/
|
||||||
|
val = chuzzle($1) || enum.next
|
||||||
|
path = canonical_path(val)
|
||||||
|
args << "-L#{val}" if keep?(path) && @lset.add?(path)
|
||||||
|
else
|
||||||
|
args << arg
|
||||||
|
end
|
||||||
|
|
||||||
args
|
args
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user