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/Commands/CommandObjectPlatform.cpp b/source/Commands/CommandObjectPlatform.cpp
index 12515ce..a72b0db4 100644
--- a/source/Commands/CommandObjectPlatform.cpp
+++ b/source/Commands/CommandObjectPlatform.cpp
@@ -19,8 +19,10 @@
 #include "lldb/Interpreter/Args.h"
 #include "lldb/Interpreter/CommandInterpreter.h"
 #include "lldb/Interpreter/CommandReturnObject.h"
+#include "lldb/Interpreter/Options.h"
 #include "lldb/Target/ExecutionContext.h"
 #include "lldb/Target/Platform.h"
+#include "lldb/Target/Process.h"
 
 using namespace lldb;
 using namespace lldb_private;
@@ -36,7 +38,8 @@
                        "platform create",
                        "Create a platform instance by name and select it as the current platform.",
                        "platform create <platform-name>",
-                       0)
+                       0),
+        m_options (interpreter)
     {
     }
 
@@ -86,7 +89,8 @@
     {
     public:
 
-        CommandOptions () :
+        CommandOptions (CommandInterpreter &interpreter) :
+            Options (interpreter),
             os_version_major (UINT32_MAX),
             os_version_minor (UINT32_MAX),
             os_version_update (UINT32_MAX)
@@ -418,11 +422,12 @@
 {
 public:
     CommandObjectPlatformProcessList (CommandInterpreter &interpreter) :
-    CommandObject (interpreter, 
-                   "platform process list",
-                   "List processes on a remote platform by name, pid, or many other matching attributes.",
-                   "platform process list",
-                   0)
+        CommandObject (interpreter, 
+                       "platform process list",
+                       "List processes on a remote platform by name, pid, or many other matching attributes.",
+                       "platform process list",
+                       0),
+        m_options (interpreter)
     {
     }
     
@@ -529,7 +534,8 @@
     {
     public:
         
-        CommandOptions () :
+        CommandOptions (CommandInterpreter &interpreter) :
+            Options (interpreter),
             match_info ()
         {
         }
@@ -585,7 +591,7 @@
                     break;
 
                 case 'a':
-                    match_info.GetProcessInfo().GetArchitecture().SetTriple (option_arg);
+                    match_info.GetProcessInfo().GetArchitecture().SetTriple (option_arg, m_interpreter.GetDebugger().GetPlatformList().GetSelectedPlatform().get());
                     break;
 
                 case 'n':