ccc: Support arguments which behave like linker inputs.
- Support comma joined options which magically turn into multiple
value arguments (e.g., -Wl,)
- Split out separate Arg::render routine for when an argument is
being rendered as an input (as opposed to in its original form).
- Add option flag for options which should be rendered without the
option when they are used as an input (e.g., -Xlinker or -o).
- Support -weak-l..., -weak_framework, and -weak_library.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62075 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/tools/ccc/ccclib/Tools.py b/tools/ccc/ccclib/Tools.py
index 17a9ce8..1003441 100644
--- a/tools/ccc/ccclib/Tools.py
+++ b/tools/ccc/ccclib/Tools.py
@@ -52,7 +52,13 @@
if isinstance(input.source, Jobs.PipedJob):
cmd_args.append('-')
else:
- cmd_args.append(arglist.getValue(input.source))
+ assert isinstance(input.source, Arguments.Arg)
+ # If this is a linker input then assume we can forward
+ # just by rendering.
+ if input.source.opt.isLinkerInput:
+ cmd_args.extend(arglist.render(input.source))
+ else:
+ cmd_args.extend(arglist.renderAsInput(input.source))
jobs.addJob(Jobs.Command('gcc', cmd_args))
@@ -113,7 +119,7 @@
if isinstance(input.source, Jobs.PipedJob):
cmd_args.append('-')
else:
- cmd_args.append(arglist.getValue(input.source))
+ cmd_args.extend(arglist.renderAsInput(input.source))
jobs.addJob(Jobs.Command('as', cmd_args))
class GCC_AssembleTool(GCC_Common_Tool):
@@ -471,7 +477,7 @@
"-L/usr/lib/gcc/i686-apple-darwin10/4.2.1/../../.."])
for input in inputs:
- cmd_args.append(arglist.getValue(input.source))
+ cmd_args.extend(arglist.renderAsInput(input.source))
if (arglist.getLastArg(arglist.parser.f_profileArcsOption) or
arglist.getLastArg(arglist.parser.f_profileGenerateOption) or
@@ -548,5 +554,5 @@
cmd_args = ['-create']
cmd_args.extend(arglist.render(output))
for input in inputs:
- cmd_args.append(arglist.getValue(input.source))
+ cmd_args.extend(arglist.renderAsInput(input.source))
jobs.addJob(Jobs.Command('lipo', cmd_args))