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/API/SBDebugger.cpp b/source/API/SBDebugger.cpp
index 5c86d99..c54ff21 100644
--- a/source/API/SBDebugger.cpp
+++ b/source/API/SBDebugger.cpp
@@ -358,7 +358,7 @@
 {
     if (arch_name)
     {
-        ArchSpec arch (arch_name);
+        ArchSpec arch (arch_name, NULL);
         if (arch.IsValid())
         {
             lldb_private::Target::SetDefaultArchitecture (arch);
@@ -425,7 +425,7 @@
     {
         ArchSpec arch;
         FileSpec file_spec (filename, true);
-        arch.SetTriple (target_triple);
+        arch.SetTriple (target_triple, m_opaque_sp->GetPlatformList().GetSelectedPlatform().get());
         TargetSP target_sp;
         Error error (m_opaque_sp->GetTargetList().CreateTarget (*m_opaque_sp, file_spec, arch, true, target_sp));
         target.reset (target_sp);
@@ -455,7 +455,7 @@
         Error error;
 
         if (arch_cstr)
-            arch.SetTriple (arch_cstr);
+            arch.SetTriple (arch_cstr, m_opaque_sp->GetPlatformList().GetSelectedPlatform().get());
 
         error = m_opaque_sp->GetTargetList().CreateTarget (*m_opaque_sp, file, arch, true, target_sp);
 
@@ -534,7 +534,7 @@
     if (m_opaque_sp && filename && filename[0])
     {
         // No need to lock, the target list is thread safe
-        ArchSpec arch (arch_name);
+        ArchSpec arch (arch_name, m_opaque_sp->GetPlatformList().GetSelectedPlatform().get());
         TargetSP target_sp (m_opaque_sp->GetTargetList().FindTargetWithExecutableAndArchitecture (FileSpec(filename, false), arch_name ? &arch : NULL));
         sb_target.reset(target_sp);
     }
diff --git a/source/API/SBInstruction.cpp b/source/API/SBInstruction.cpp
index ce90bbb..e46e869 100644
--- a/source/API/SBInstruction.cpp
+++ b/source/API/SBInstruction.cpp
@@ -140,7 +140,7 @@
 {
     if (m_opaque_sp && triple)
     {
-        lldb_private::ArchSpec arch (triple);
+        lldb_private::ArchSpec arch (triple, NULL);
         
         return m_opaque_sp->Emulate (arch, 
                                      NULL,