]> granicus.if.org Git - clang/commitdiff
ccc: (Darwin) Pass -ObjC to linker if -ObjC, -ObjC++ or -fobjc is
authorDaniel Dunbar <daniel@zuster.org>
Mon, 12 Jan 2009 02:24:21 +0000 (02:24 +0000)
committerDaniel Dunbar <daniel@zuster.org>
Mon, 12 Jan 2009 02:24:21 +0000 (02:24 +0000)
present.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62070 91177308-0d34-0410-b5e6-96231b3b80d8

tools/ccc/ccclib/Arguments.py
tools/ccc/ccclib/Tools.py

index 5c5320ffe47ff28b7bdd8d4d802ddd659345eceb..564114f405f96f31adf303c2d8af7c13eda69265 100644 (file)
@@ -370,10 +370,8 @@ class OptionParser:
         self.oOption = self.addOption(JoinedOrSeparateOption('-o'))
         self.xOption = self.addOption(JoinedOrSeparateOption('-x'))
 
-        # FIXME: What do these actually do? The documentation is less than
-        # clear.
-        self.addOption(FlagOption('-ObjC'))
-        self.addOption(FlagOption('-ObjC++'))
+        self.ObjCOption = self.addOption(FlagOption('-ObjC'))
+        self.ObjCXXOption = self.addOption(FlagOption('-ObjC++'))
 
         # FIXME: Weird, gcc claims this here in help but I'm not sure why;
         # perhaps interaction with preprocessor? Investigate.
@@ -559,6 +557,7 @@ class OptionParser:
         self.addOption(JoinedOption('-g'))
 
         self.f_exceptionsOption = self.addOption(FlagOption('-fexceptions'))
+        self.f_objcOption = self.addOption(FlagOption('-fobjc'))
         self.f_openmpOption = self.addOption(FlagOption('-fopenmp'))
         self.f_gnuRuntimeOption = self.addOption(FlagOption('-fgnu-runtime'))
         self.f_nestedFunctionsOption = self.addOption(FlagOption('-fnested-functions'))
index 5ac948cca70078db17484b8247fbc00f534c052a..17a9ce822a9030538fc7af19980ca98a41ba655f 100644 (file)
@@ -359,7 +359,8 @@ class Darwin10_X86_LinkTool(Tool):
         assert outputType is Types.ImageType
 
         # The logic here is derived from gcc's behavior; most of which
-        # comes from specs (link_command). Consult gcc for more information.
+        # comes from specs (starting with link_command). Consult gcc
+        # for more information.
 
         # FIXME: gcc's spec controls when this is done; certain things
         # like -filelist or -Wl, still trigger a link stage. I don't
@@ -371,9 +372,13 @@ class Darwin10_X86_LinkTool(Tool):
         # Not sure why this particular decomposition exists in gcc.
         self.addLinkArgs(cmd_args, arch, arglist)
         
-        # FIXME: Need to insert "additional linker options accumulated
-        # from compilation". What does this mean precisely? And where
-        # do -Wl, options and -Xlinker options come in?
+        # This toolchain never accumlates options in specs, the only
+        # place this gets used is to add -ObjC.
+        if (arglist.getLastArg(arglist.parser.ObjCOption) or
+            arglist.getLastArg(arglist.parser.f_objcOption)):
+            cmd_args.append('-ObjC')
+        if arglist.getLastArg(arglist.parser.ObjCXXOption):
+            cmd_args.append('-ObjC')        
 
         # FIXME: gcc has %{x} in here. How could this ever happen?
         # Cruft?