ccc: Darwin/x86: Add direct cpp support.
 - Add Darwin_X86_CC1Tool which is shared by Darwin/x86/Compile and
   Darwin/x86/Preprocess tools.

 - Minor bug fixes (CmpDriver exit code, -x cpp-output handling, some
   linker argument translation).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62551 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/tools/ccc/ccclib/Arguments.py b/tools/ccc/ccclib/Arguments.py
index ebdd3fd..ba48417 100644
--- a/tools/ccc/ccclib/Arguments.py
+++ b/tools/ccc/ccclib/Arguments.py
@@ -549,7 +549,8 @@
         self.MTOption = self.addOption(JoinedOrSeparateOption('-MT'))
         self.MQOption = self.addOption(JoinedOrSeparateOption('-MQ'))
         self.MachOption = self.addOption(FlagOption('-Mach'))
-        self.undefOption = self.addOption(FlagOption('-undef'))
+        self.uGroup = OptionGroup('-u')
+        self.undefOption = self.addOption(FlagOption('-undef', self.uGroup))
 
         self.wOption = self.addOption(FlagOption('-w'))
         self.bundle_loaderOption = self.addOption(SeparateOption('-bundle_loader'))
@@ -575,8 +576,8 @@
         self.segprotOption = self.addOption(JoinedOrSeparateOption('-segprot'))
         self.sub_libraryOption = self.addOption(JoinedOrSeparateOption('-sub_library'))
         self.sub_umbrellaOption = self.addOption(JoinedOrSeparateOption('-sub_umbrella'))
-        self.umbrellaOption = self.addOption(SeparateOption('-umbrella'))
-        self.undefinedOption = self.addOption(JoinedOrSeparateOption('-undefined'))
+        self.umbrellaOption = self.addOption(SeparateOption('-umbrella', self.uGroup))
+        self.undefinedOption = self.addOption(JoinedOrSeparateOption('-undefined', self.uGroup))
         self.headerpad_max_install_namesOption = self.addOption(JoinedOption('-headerpad_max_install_names'))
         self.twolevel_namespaceOption = self.addOption(FlagOption('-twolevel_namespace'))
         self.twolevel_namespace_hintsOption = self.addOption(FlagOption('-twolevel_namespace_hints'))
@@ -647,7 +648,7 @@
         # FIXME: This probably isn't necessary.
         self.segs_read_Option = self.addOption(JoinedOption('-segs_read_'))
         self.single_moduleOption = self.addOption(FlagOption('-single_module'))
-        self.unexported_symbols_listOption = self.addOption(SeparateOption('-unexported_symbols_list'))
+        self.unexported_symbols_listOption = self.addOption(SeparateOption('-unexported_symbols_list', self.uGroup))
         self.weak_reference_mismatchesOption = self.addOption(SeparateOption('-weak_reference_mismatches'))
 
         self.addOption(SeparateOption('-filelist', isLinkerInput=True))
@@ -685,7 +686,7 @@
         self.ZOption = self.addOption(JoinedOrSeparateOption('-Z'))
 
         self.addOption(JoinedOrSeparateOption('-l', isLinkerInput=True))
-        self.uOption = self.addOption(JoinedOrSeparateOption('-u'))
+        self.uOption = self.addOption(JoinedOrSeparateOption('-u', self.uGroup))
         self.tOption = self.addOption(JoinedOrSeparateOption('-t'))
         self.yOption = self.addOption(JoinedOption('-y'))
 
@@ -751,6 +752,7 @@
         self.f_noEliminateUnusedDebugSymbolsOption = self.addOption(FlagOption('-fno-eliminate-unused-debug-symbols', self.fGroup))
         self.f_noPascalStringsOption = self.addOption(FlagOption('-fno-pascal-strings', self.fGroup))
         self.f_noShowColumnOption = self.addOption(FlagOption('-fno-show-column', self.fGroup))
+        self.f_noWorkingDirectoryOption = self.addOption(FlagOption('-fno-working-directory', self.fGroup))
         self.f_objcGcOnlyOption = self.addOption(FlagOption('-fobjc-gc-only', self.fGroup))
         self.f_objcGcOption = self.addOption(FlagOption('-fobjc-gc', self.fGroup))
         self.f_objcOption = self.addOption(FlagOption('-fobjc', self.fGroup))