ccc: (Darwin) More argument translation for Darwin/Compile tool.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62089 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/tools/ccc/ccclib/Tools.py b/tools/ccc/ccclib/Tools.py
index 6edb2a3..e4f71b3 100644
--- a/tools/ccc/ccclib/Tools.py
+++ b/tools/ccc/ccclib/Tools.py
@@ -298,23 +298,92 @@
# FIXME: There is a spec command to remove
# -fpredictive-compilation args here. Investigate.
- # FIXME: cc1_options
-
- if arch:
- cmd_args.extend(arglist.render(arch))
- if isinstance(output, Jobs.PipedJob):
- cmd_args.extend(['-o', '-'])
- elif output is None:
- cmd_args.append('-fsyntax-only')
- else:
- cmd_args.extend(arglist.render(output))
-
+ # FIXME: This is from previously & not part of the spec,
+ # integrate properly.
for input in inputs:
if isinstance(input.source, Jobs.PipedJob):
cmd_args.append('-')
else:
cmd_args.extend(arglist.renderAsInput(input.source))
+ # Derived from cc1_options spec.
+ if (arglist.getLastArg(arglist.parser.fastOption) or
+ arglist.getLastArg(arglist.parser.fastfOption) or
+ arglist.getLastArg(arglist.parser.fastcpOption)):
+ cmd_args.append('-O3')
+
+ if (arglist.getLastArg(arglist.parser.pgOption) and
+ arglist.getLastArg(arglist.parser.f_omitFramePointerOption)):
+ raise ValueError,"-pg and -fomit-frame-pointer are incompatible"
+
+ # FIXME: cc1 spec
+
+ if not arglist.getLastArg(arglist.parser.QOption):
+ cmd_args.append('-quiet')
+
+ cmd_args.append('-dumpbase')
+ # FIXME: Get correct basename.
+ cmd_args.append('FIXME')
+
+ # FIXME: d*
+ # FIXME: m*
+ # FIXME: a*
+
+ # FIXME: This is wrong, what is supposed to happen is we
+ # should be using the immediate output if we have a "named
+ # output" from the user, and otherwise derive one from the
+ # input name.
+ outputOpt = arglist.getLastArg(arglist.parser.oOption)
+ if outputOpt:
+ cmd_args.append('-auxbase-strip')
+ cmd_args.append(arglist.getValue(outputOpt))
+ else:
+ cmd_args.append('-auxbase')
+ # FIXME: Add proper basename.
+ cmd_args.append('FIXME')
+
+ # FIXME: g*
+
+ arglist.addAllArgs(cmd_args, arglist.parser.OOption)
+ # FIXME: -Wall is getting some special treatment. Investigate.
+ arglist.addAllArgs2(cmd_args, arglist.parser.WOption, arglist.parser.pedanticOption)
+ arglist.addLastArg(cmd_args, arglist.parser.wOption)
+ arglist.addAllArgs3(cmd_args, arglist.parser.stdOption, arglist.parser.ansiOption, arglist.parser.trigraphsOption)
+ if arglist.getLastArg(arglist.parser.vOption):
+ cmd_args.append('-version')
+ if arglist.getLastArg(arglist.parser.pgOption):
+ cmd_args.append('-p')
+ arglist.addLastArg(cmd_args, arglist.parser.pOption)
+
+ # FIXME: f*
+
+ arglist.addLastArg(cmd_args, arglist.parser.undefOption)
+ if arglist.getLastArg(arglist.parser.QnOption):
+ cmd_args.append('-fno-ident')
+
+ # FIXME: This isn't correct.
+ #arglist.addLastArg(cmd_args, arglist.parser._helpOption)
+ #arglist.addLastArg(cmd_args, arglist.parser._targetHelpOption)
+
+ if isinstance(output, Jobs.PipedJob):
+ cmd_args.extend(['-o', '-'])
+ elif output is None:
+ cmd_args.extend(['-o', '/dev/null'])
+ else:
+ cmd_args.extend(arglist.render(output))
+
+ # FIXME: Still don't get what is happening here. Investigate.
+ arglist.addAllArgs(cmd_args, arglist.parser._paramOption)
+
+ if (arglist.getLastArg(arglist.parser.f_mudflapOption) or
+ arglist.getLastArg(arglist.parser.f_mudflapthOption)):
+ cmd_args.append('-fno-builtin')
+ cmd_args.append('-fno-merge-constants')
+
+ if arglist.getLastArg(arglist.parser.coverageOption):
+ cmd_args.append('-fprofile-arcs')
+ cmd_args.append('-ftest-coverage')
+
jobs.addJob(Jobs.Command(self.toolChain.getProgramPath(cc1Name),
cmd_args))