[cfe-commits] r62825 - in /cfe/trunk/tools/ccc: ccclib/Arguments.py test/ccc/aliases.c
Daniel Dunbar
daniel at zuster.org
Thu Jan 22 16:54:03 PST 2009
Author: ddunbar
Date: Thu Jan 22 18:54:03 2009
New Revision: 62825
URL: http://llvm.org/viewvc/llvm-project?rev=62825&view=rev
Log:
ccc: Add support for several more aliases (--ansi, --assemble,
--assert, --classpath).
- Requires providing some option parameters to over-ride rendering in
order to match gcc. There may be a cleaner way to do this (probably
by introducing a new option type for long JoinedOrSeparate forms).
Added:
cfe/trunk/tools/ccc/test/ccc/aliases.c
Modified:
cfe/trunk/tools/ccc/ccclib/Arguments.py
Modified: cfe/trunk/tools/ccc/ccclib/Arguments.py
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/ccc/ccclib/Arguments.py?rev=62825&r1=62824&r2=62825&view=diff
==============================================================================
--- cfe/trunk/tools/ccc/ccclib/Arguments.py (original)
+++ cfe/trunk/tools/ccc/ccclib/Arguments.py Thu Jan 22 18:54:03 2009
@@ -15,7 +15,9 @@
"""Option - Root option class."""
def __init__(self, name, group=None, alias=None,
- isLinkerInput=False, noOptAsInput=False):
+ isLinkerInput=False, noOptAsInput=False,
+ forceSeparateRender=False,
+ forceJoinedRender=False):
assert group is None or isinstance(group, OptionGroup)
# Multi-level aliases are not supported, and alias options
# cannot have groups. This just simplifies option tracking, it
@@ -28,6 +30,8 @@
self.alias = alias
self.isLinkerInput = isLinkerInput
self.noOptAsInput = noOptAsInput
+ self.forceSeparateRender = forceSeparateRender
+ self.forceJoinedRender = forceJoinedRender
def getUnaliasedOption(self):
if self.alias:
@@ -233,6 +237,9 @@
return args.getInputString(self.index)[len(self.opt.name):]
def render(self, args):
+ if self.opt.forceSeparateRender:
+ return [self.opt.getRenderName(),
+ self.getValue(args)]
return [self.opt.getRenderName() + self.getValue(args)]
def renderAsInput(self, args):
@@ -248,6 +255,8 @@
return args.getInputString(self.index, offset=1)
def render(self, args):
+ if self.opt.forceJoinedRender:
+ return [self.opt.getRenderName() + self.getValue(args)]
return [self.opt.getRenderName(), self.getValue(args)]
def renderAsInput(self, args):
@@ -520,7 +529,10 @@
# Pipeline control
self.hashHashHashOption = self.addOption(FlagOption('-###'))
self.EOption = self.addOption(FlagOption('-E'))
+
self.SOption = self.addOption(FlagOption('-S'))
+ self.addOption(FlagOption('--assemble', alias=self.SOption))
+
self.cOption = self.addOption(FlagOption('-c'))
self.combineOption = self.addOption(FlagOption('-combine'))
self.noIntegratedCPPOption = self.addOption(FlagOption('-no-integrated-cpp'))
@@ -568,6 +580,8 @@
####
# Bring on the random garbage.
+ self.sOption = self.addOption(FlagOption('-s'))
+
self.MGroup = OptionGroup('-M')
self.MOption = self.addOption(FlagOption('-M', self.MGroup))
self.MDOption = self.addOption(FlagOption('-MD', self.MGroup))
@@ -707,6 +721,10 @@
# stuff to cc1, but the way the ld spec is constructed it
# wants to see -A options but only as a separate arg.
self.AOption = self.addOption(JoinedOrSeparateOption('-A'))
+ self.addOption(JoinedOption('--assert=', alias=self.AOption,
+ forceSeparateRender=True))
+ self.addOption(SeparateOption('--assert', alias=self.AOption))
+
self.DOption = self.addOption(JoinedOrSeparateOption('-D'))
self.FOption = self.addOption(JoinedOrSeparateOption('-F'))
self.IOption = self.addOption(JoinedOrSeparateOption('-I'))
@@ -737,7 +755,7 @@
# FIXME: Naming convention.
self.dGroup = OptionGroup('-d')
self.dAOption = self.addOption(FlagOption('-dA', self.dGroup))
- self.addOption(FlagOption('-d', self.dGroup))
+ self.dOption = self.addOption(FlagOption('-d', self.dGroup))
# Use a group for this in anticipation of adding more -d
# options explicitly. Note that we don't put many -d things in
@@ -766,6 +784,12 @@
self.fastcpOption = self.addOption(FlagOption('-fastcp', self.fGroup))
self.f_appleKextOption = self.addOption(FlagOption('-fapple-kext', self.fGroup))
+
+ self.f_classpathOption = self.addOption(JoinedOption('-fclasspath=', self.fGroup))
+ self.addOption(JoinedOption('--classpath=', alias=self.f_classpathOption))
+ self.addOption(SeparateOption('--classpath', alias=self.f_classpathOption,
+ forceJoinedRender=True))
+
self.f_constantCfstringsOption = self.addOption(FlagOption('-fconstant-cfstrings', self.fGroup))
self.f_createProfileOption = self.addOption(FlagOption('-fcreate-profile', self.fGroup))
self.f_debugPassArgumentsOption = self.addOption(FlagOption('-fdebug-pass-arguments', self.fGroup))
@@ -835,6 +859,8 @@
# FIXME: Why does Darwin send -a* to cc1?
self.aGroup = OptionGroup('-a')
self.ansiOption = self.addOption(FlagOption('-ansi', self.aGroup))
+ self.addOption(FlagOption('--ansi', alias=self.ansiOption))
+
self.aOption = self.addOption(JoinedOption('-a', self.aGroup))
self.pedanticGroup = OptionGroup('-pedantic')
Added: cfe/trunk/tools/ccc/test/ccc/aliases.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/ccc/test/ccc/aliases.c?rev=62825&view=auto
==============================================================================
--- cfe/trunk/tools/ccc/test/ccc/aliases.c (added)
+++ cfe/trunk/tools/ccc/test/ccc/aliases.c Thu Jan 22 18:54:03 2009
@@ -0,0 +1,13 @@
+// RUN: xcc -### -S --all-warnings %s &> %t &&
+// RUN: grep -- '"-Wall"' %t &&
+
+// RUN: xcc -### -S --ansi %s &> %t &&
+// RUN: grep -- '"-ansi"' %t &&
+
+// RUN: xcc -### -S --assert foo --assert=foo %s &> %t &&
+// RUN: grep -- '"-A" "foo" "-A" "foo"' %t &&
+
+// RUN: xcc -### -S --classpath foo --classpath=foo %s &> %t &&
+// RUN: grep -- '"-fclasspath=foo" "-fclasspath=foo"' %t &&
+
+// RUN: true
More information about the cfe-commits
mailing list