[cfe-commits] r62181 - in /cfe/trunk/tools/ccc/ccclib: Arguments.py Driver.py ToolChain.py Tools.py

Daniel Dunbar daniel at zuster.org
Tue Jan 13 13:07:43 PST 2009


Author: ddunbar
Date: Tue Jan 13 15:07:43 2009
New Revision: 62181

URL: http://llvm.org/viewvc/llvm-project?rev=62181&view=rev
Log:
ccc: Darwin: Implement some important general argument translations
for the Darwin tool chain.
 - Ideally we would localize these to tool specific argument
   processing but for now this matches gcc closely.

Modified:
    cfe/trunk/tools/ccc/ccclib/Arguments.py
    cfe/trunk/tools/ccc/ccclib/Driver.py
    cfe/trunk/tools/ccc/ccclib/ToolChain.py
    cfe/trunk/tools/ccc/ccclib/Tools.py

Modified: cfe/trunk/tools/ccc/ccclib/Arguments.py
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/ccc/ccclib/Arguments.py?rev=62181&r1=62180&r2=62181&view=diff

==============================================================================
--- cfe/trunk/tools/ccc/ccclib/Arguments.py (original)
+++ cfe/trunk/tools/ccc/ccclib/Arguments.py Tue Jan 13 15:07:43 2009
@@ -396,6 +396,10 @@
         return SeparateValueArg(self.makeIndex(option.name, string),
                                 option)
 
+    def makeJoinedArg(self, string, option):
+        return JoinedValueArg(self.makeIndex(option.name + string),
+                              option)
+
     # Support use as a simple arg list.
 
     def __iter__(self):
@@ -724,6 +728,10 @@
         self.f_exceptionsOption = self.addOption(FlagOption('-fexceptions', self.fGroup))
         self.f_objcOption = self.addOption(FlagOption('-fobjc', self.fGroup))
         self.f_openmpOption = self.addOption(FlagOption('-fopenmp', self.fGroup))
+        self.f_constantCfstringsOption = self.addOption(FlagOption('-fconstant-cfstrings', self.fGroup))
+        self.f_noConstantCfstringsOption = self.addOption(FlagOption('-fno-constant-cfstrings', self.fGroup))
+        self.f_pascalStringsOption = self.addOption(FlagOption('-fpascal-strings', self.fGroup))
+        self.f_noPascalStringsOption = self.addOption(FlagOption('-fno-pascal-strings', self.fGroup))
         self.f_gnuRuntimeOption = self.addOption(FlagOption('-fgnu-runtime', self.fGroup))
         self.f_mudflapOption = self.addOption(FlagOption('-fmudflap', self.fGroup))
         self.f_mudflapthOption = self.addOption(FlagOption('-fmudflapth', self.fGroup))
@@ -745,6 +753,12 @@
         self.m_iphoneosVersionMinOption = self.addOption(JoinedOption('-miphoneos-version-min=', self.mGroup))
         self.m_kernelOption = self.addOption(FlagOption('-mkernel', self.mGroup))
         self.m_macosxVersionMinOption = self.addOption(JoinedOption('-mmacosx-version-min=', self.mGroup))
+        self.m_constantCfstringsOption = self.addOption(FlagOption('-mconstant-cfstrings', self.mGroup))
+        self.m_noConstantCfstringsOption = self.addOption(FlagOption('-mno-constant-cfstrings', self.mGroup))
+        self.m_warnNonportableCfstringsOption = self.addOption(FlagOption('-mwarn-nonportable-cfstrings', self.mGroup))
+        self.m_noWarnNonportableCfstringsOption = self.addOption(FlagOption('-mno-warn-nonportable-cfstrings', self.mGroup))
+        self.m_pascalStringsOption = self.addOption(FlagOption('-mpascal-strings', self.mGroup))
+        self.m_noPascalStringsOption = self.addOption(FlagOption('-mno-pascal-strings', self.mGroup))
         self.m_tuneOption = self.addOption(JoinedOption('-mtune=', self.mGroup))
 
         # Ugh. Need to disambiguate our naming convetion. -m x goes to
@@ -761,7 +775,10 @@
         self.trigraphsOption = self.addOption(FlagOption('-trigraphs'))
         self.pedanticOption = self.addOption(FlagOption('-pedantic'))
         self.OOption = self.addOption(JoinedOption('-O'))
-        self.WOption = self.addOption(JoinedOption('-W'))
+        self.WGroup = OptionGroup('-W')
+        self.WnonportableCfstringsOption = self.addOption(JoinedOption('-Wnonportable-cfstrings', self.WGroup))
+        self.WnoNonportableCfstringsOption = self.addOption(JoinedOption('-Wno-nonportable-cfstrings', self.WGroup))
+        self.WOption = self.addOption(JoinedOption('-W', self.WGroup))
         # FIXME: Weird. This option isn't really separate, --param=a=b
         # works. There is something else going on which interprets the
         # '='.

Modified: cfe/trunk/tools/ccc/ccclib/Driver.py
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/ccc/ccclib/Driver.py?rev=62181&r1=62180&r2=62181&view=diff

==============================================================================
--- cfe/trunk/tools/ccc/ccclib/Driver.py (original)
+++ cfe/trunk/tools/ccc/ccclib/Driver.py Tue Jan 13 15:07:43 2009
@@ -335,7 +335,7 @@
                     # revert to unknown. I think this is more likely a
                     # bug / unintended behavior in gcc. Not very
                     # important though.
-                    inputType = ObjectType
+                    inputType = Types.ObjectType
 
         # We claim things here so that options for which we silently allow
         # override only ever claim the used option.

Modified: cfe/trunk/tools/ccc/ccclib/ToolChain.py
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/ccc/ccclib/ToolChain.py?rev=62181&r1=62180&r2=62181&view=diff

==============================================================================
--- cfe/trunk/tools/ccc/ccclib/ToolChain.py (original)
+++ cfe/trunk/tools/ccc/ccclib/ToolChain.py Tue Jan 13 15:07:43 2009
@@ -74,6 +74,46 @@
         assert isinstance(action, Phases.JobAction)
         return self.toolMap[action.phase.__class__]
 
+    def translateArgs(self, args, arch):
+        args = super(Darwin_X86_ToolChain, self).translateArgs(args, arch)
+        
+        # If arch hasn't been bound we don't need to do anything yet.
+        if not arch:
+            return args
+
+        al = Arguments.DerivedArgList(args)
+        if not args.getLastArg(args.parser.m_macosxVersionMinOption):
+            al.append(al.makeJoinedArg(self.getMacosxVersionMin(),
+                                       args.parser.m_macosxVersionMinOption))
+        for arg in args:
+            if arg.opt is args.parser.f_constantCfstringsOption:
+                al.append(al.makeFlagArg(args.parser.m_constantCfstringsOption))
+            elif arg.opt is args.parser.f_noConstantCfstringsOption:
+                al.append(al.makeFlagArg(args.parser.m_noConstantCfstringsOption))
+            elif arg.opt is args.parser.WnonportableCfstringsOption:
+                al.append(al.makeFlagArg(args.parser.m_warnNonportableCfstringsOption))
+            elif arg.opt is args.parser.WnoNonportableCfstringsOption:
+                al.append(al.makeFlagArg(args.parser.m_noWarnNonportableCfstringsOption))
+            elif arg.opt is args.parser.f_pascalStringsOption:
+                al.append(al.makeFlagArg(args.parser.m_pascalStringsOption))
+            elif arg.opt is args.parser.f_noPascalStringsOption:
+                al.append(al.makeFlagArg(args.parser.m_noPascalStringsOption))
+            else:
+                al.append(arg)
+
+        # FIXME: Actually, gcc always adds this, but it is filtered
+        # for duplicates somewhere. This also changes the order of
+        # things, so look it up.
+        if arch and args.getValue(arch) == 'x86_64':
+            if not args.getLastArg(args.parser.m_64Option):
+                al.append(al.makeFlagArg(args.parser.m_64Option))
+
+        if not args.getLastArg(args.parser.m_tuneOption):
+            al.append(al.makeJoinedArg('core2',
+                                       args.parser.m_tuneOption))
+
+        return al
+
 class Generic_GCC_ToolChain(ToolChain):
     """Generic_GCC_ToolChain - A tool chain using the 'gcc' command to
     perform all subcommands; this relies on gcc translating the

Modified: cfe/trunk/tools/ccc/ccclib/Tools.py
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/ccc/ccclib/Tools.py?rev=62181&r1=62180&r2=62181&view=diff

==============================================================================
--- cfe/trunk/tools/ccc/ccclib/Tools.py (original)
+++ cfe/trunk/tools/ccc/ccclib/Tools.py Tue Jan 13 15:07:43 2009
@@ -390,20 +390,6 @@
         cmd_args.append(self.getBaseInputName(inputs, arglist))
 
         arglist.addAllArgs(cmd_args, arglist.parser.dGroup)
-        
-        # FIXME: Figure out where these are coming from and
-        # dehardcode.
-        if not arglist.getLastArg(arglist.parser.m_macosxVersionMinOption):
-            cmd_args.append('-mmacosx-version-min=' + 
-                            self.toolChain.getMacosxVersionMin())
-        if (not arglist.getLastArg(arglist.parser.m_32Option) and
-            not arglist.getLastArg(arglist.parser.m_64Option)):
-            if arglist.getValue(arch) == 'x86_64':
-                cmd_args.append('-m64')
-            else:
-                cmd_args.append('-m32')
-        if not arglist.getLastArg(arglist.parser.m_tuneOption):
-            cmd_args.append('-mtune=core2')
 
         arglist.addAllArgs(cmd_args, arglist.parser.mGroup)
         arglist.addAllArgs(cmd_args, arglist.parser.aGroup)
@@ -428,7 +414,7 @@
             
         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.addAllArgs2(cmd_args, arglist.parser.WGroup, 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):





More information about the cfe-commits mailing list