Modified the ArchSpec to take an optional "Platform *" when setting the triple.
This allows you to have a platform selected, then specify a triple using
"i386" and have the remaining triple items (vendor, os, and environment) set
automatically.

Many interpreter commands take the "--arch" option to specify an architecture
triple, so now the command options needed to be able to get to the current
platform, so the Options class now take a reference to the interpreter on
construction.

Modified the build LLVM building in the Xcode project to use the new
Xcode project level user definitions:

LLVM_BUILD_DIR - a path to the llvm build directory
LLVM_SOURCE_DIR - a path to the llvm sources for the llvm that will be used to build lldb
LLVM_CONFIGURATION - the configuration that lldb is built for (Release, 
Release+Asserts, Debug, Debug+Asserts).

I also changed the LLVM build to not check if "lldb/llvm" is a symlink and
then assume it is a real llvm build directory versus the unzipped llvm.zip
package, so now you can actually have a "lldb/llvm" directory in your lldb
sources.




git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@129112 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/source/Interpreter/CommandObject.cpp b/source/Interpreter/CommandObject.cpp
index e4f4689..f93ed6e 100644
--- a/source/Interpreter/CommandObject.cpp
+++ b/source/Interpreter/CommandObject.cpp
@@ -198,7 +198,7 @@
             else
             {
                 // No error string, output the usage information into result
-                options->GenerateOptionUsage (m_interpreter, result.GetErrorStream(), this);
+                options->GenerateOptionUsage (result.GetErrorStream(), this);
             }
             // Set the return status to failed (this was an error).
             result.SetStatus (eReturnStatusFailed);
@@ -356,8 +356,7 @@
             input.DeleteArgumentAtIndex(input.GetArgumentCount() - 1);
 
             bool handled_by_options;
-            handled_by_options = cur_options->HandleOptionCompletion (m_interpreter, 
-                                                                      input,
+            handled_by_options = cur_options->HandleOptionCompletion (input,
                                                                       opt_element_vector,
                                                                       cursor_index,
                                                                       cursor_char_position,
@@ -407,7 +406,7 @@
         && GetOptions() != NULL)
     {
         StreamString usage_help;
-        GetOptions()->GenerateOptionUsage (m_interpreter, usage_help, this);
+        GetOptions()->GenerateOptionUsage (usage_help, this);
         if (usage_help.GetSize() > 0)
         {
             const char *usage_text = usage_help.GetData();
diff --git a/source/Interpreter/Options.cpp b/source/Interpreter/Options.cpp
index 3bc553d..3c14cc0 100644
--- a/source/Interpreter/Options.cpp
+++ b/source/Interpreter/Options.cpp
@@ -29,7 +29,8 @@
 //-------------------------------------------------------------------------
 // Options
 //-------------------------------------------------------------------------
-Options::Options () :
+Options::Options (CommandInterpreter &interpreter) :
+    m_interpreter (interpreter),
     m_getopt_table ()
 {
     BuildValidOptionSets();
@@ -362,12 +363,11 @@
 void
 Options::GenerateOptionUsage
 (
-    CommandInterpreter &interpreter,
     Stream &strm,
     CommandObject *cmd
 )
 {
-    const uint32_t screen_width = interpreter.GetDebugger().GetTerminalWidth();
+    const uint32_t screen_width = m_interpreter.GetDebugger().GetTerminalWidth();
 
     const OptionDefinition *full_options_table = GetDefinitions();
     const uint32_t save_indent_level = strm.GetIndentLevel();
@@ -656,7 +656,6 @@
 bool
 Options::HandleOptionCompletion
 (
-    CommandInterpreter &interpreter,
     Args &input,
     OptionElementVector &opt_element_vector,
     int cursor_index,
@@ -778,8 +777,7 @@
 
             if (opt_defs_index != -1)
             {
-                HandleOptionArgumentCompletion (interpreter, 
-                                                input,
+                HandleOptionArgumentCompletion (input,
                                                 cursor_index,
                                                 strlen (input.GetArgumentAtIndex(cursor_index)),
                                                 opt_element_vector,
@@ -809,7 +807,6 @@
 bool
 Options::HandleOptionArgumentCompletion
 (
-    CommandInterpreter &interpreter,
     Args &input,
     int cursor_index,
     int char_pos,
@@ -868,7 +865,7 @@
                 if (module_name)
                 {
                     FileSpec module_spec(module_name, false);
-                    lldb::TargetSP target_sp = interpreter.GetDebugger().GetSelectedTarget();
+                    lldb::TargetSP target_sp = m_interpreter.GetDebugger().GetSelectedTarget();
                     // Search filters require a target...
                     if (target_sp != NULL)
                         filter_ap.reset (new SearchFilterByModule (target_sp, module_spec));
@@ -878,7 +875,7 @@
         }
     }
 
-    return CommandCompletions::InvokeCommonCompletionCallbacks (interpreter,
+    return CommandCompletions::InvokeCommonCompletionCallbacks (m_interpreter,
                                                                 completion_mask,
                                                                 input.GetArgumentAtIndex (opt_arg_pos),
                                                                 match_start_point,