[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