Index: test/Makefile
===================================================================
--- test/Makefile	(revision 157381)
+++ test/Makefile	(working copy)
@@ -31,7 +31,8 @@
 check-local::
 	rm -rf ../test-rdir
 	env PATH="$(ToolDir):$(PATH)" \
-	    PYTHONPATH=$(ToolDir) \
+	    PYTHONPATH=$(LibDir)/python \
 	    LLDB_EXEC=$(ToolDir)/lldb \
+		LLDB_BUILD_TYPE=Makefile \
 	    $(SHLIBPATH_VAR)=$(LibDir):$($(SHLIBPATH_VAR)) \
 	     python $(PROJ_SRC_DIR)/dotest.py -i -v -r ../test-rdir
Index: source/Interpreter/Makefile
===================================================================
--- source/Interpreter/Makefile	(revision 157381)
+++ source/Interpreter/Makefile	(working copy)
@@ -16,16 +16,96 @@
 include $(LLDB_LEVEL)/Makefile
 -include $(PROJ_OBJ_DIR)/LLDBWrapPython.cpp.d
 
-PYTHON_DIR := $(ToolDir)
+PYTHON_DIR := $(LibDir)/python/lldb
 ifeq ($(HOST_OS),Darwin)
-PYTHON_DEST_DIR := $(DESTDIR)/$(call realpath,/Library/Python/$(shell python -c 'import sys; print sys.version[:3]')/site-packages)
+PYTHON_DEST_DIR := $(DESTDIR)/$(call realpath,/Library/Python/$(shell python -c 'import sys; print sys.version[:3]')/site-packages)/lldb
 else
-PYTHON_DEST_DIR := $(DESTDIR)/$(call realpath,$(shell python -c 'import sys; print sys.exec_prefix')/lib/python$(shell python -c 'import sys; print sys.version[:3]')/site-packages)
+PYTHON_DEST_DIR := $(DESTDIR)/$(call realpath,$(shell python -c 'import sys; print sys.exec_prefix')/lib/python$(shell python -c 'import sys; print sys.version[:3]')/site-packages)/lldb
 endif
 LLDB_SWIG_INCLUDE_DIRS:= -I"$(PROJ_SRC_DIR)/$(LLDB_LEVEL)/include" -I./.
 LIBLLDB := $(LibDir)/liblldb$(SHLIBEXT)
 INST_LIBLLDB := $(PROJ_libdir)/liblldb$(SHLIBEXT)
 
+# Subpackages of the main LLDB package
+LLDB_SUBPACKAGES := FORMATTERS FORMATTERS_CPP FORMATTERS_OBJC RUNTIME RUNTIME_OBJC UTILS
+# lldb.formatters
+LLDB_PACKAGE_FORMATTERS := formatters
+LLDB_PACKAGE_FORMATTERS_FILES := $(addprefix \
+  $(PROJ_SRC_DIR)/$(LLDB_LEVEL)/examples/summaries/cocoa/, \
+  cache.py metrics.py attrib_fromdict.py Logger.py)
+# lldb.formatters.cpp
+LLDB_PACKAGE_FORMATTERS_CPP := formatters/cpp
+LLDB_PACKAGE_FORMATTERS_CPP_FILES := $(addprefix \
+  $(PROJ_SRC_DIR)/$(LLDB_LEVEL)/examples/synthetic/,gnu_libstdcpp.py libcxx.py)
+# lldb.formatters.objc
+LLDB_PACKAGE_FORMATTERS_OBJC := formatters/objc
+LLDB_PACKAGE_FORMATTERS_OBJC_FILES := \
+  $(PROJ_SRC_DIR)/$(LLDB_LEVEL)/examples/summaries/cocoa/Selector.py \
+  $(PROJ_SRC_DIR)/$(LLDB_LEVEL)/examples/summaries/objc.py \
+  $(addprefix $(PROJ_SRC_DIR)/$(LLDB_LEVEL)/examples/summaries/cocoa/, \
+    Class.py CFArray.py CFBag.py CFBinaryHeap.py CFBitVector.py \
+    CFDictionary.py CFString.py NSBundle.py NSData.py NSDate.py \
+    NSException.py NSIndexSet.py NSMachPort.py NSNotification.py \
+    NSNumber.py NSSet.py NSURL.py \
+  )
+# lldb.runtime
+LLDB_PACKAGE_RUNTIME := runtime
+LLDB_PACKAGE_RUNTIME_FILES :=
+# lldb.runtime.objc
+LLDB_PACKAGE_RUNTIME_OBJC := runtime/objc
+LLDB_PACKAGE_RUNTIME_OBJC_FILES := \
+  $(PROJ_SRC_DIR)/$(LLDB_LEVEL)/examples/summaries/cocoa/objc_runtime.py
+# lldb.utils
+LLDB_PACKAGE_UTILS := utils
+LLDB_PACKAGE_UTILS_FILES := \
+  $(PROJ_SRC_DIR)/$(LLDB_LEVEL)/examples/python/symbolication.py
+
+ifeq ($(HOST_OS),Darwin)
+# Additional packages for Darwin/Mac OS X
+LLDB_SUBPACKAGES += MACOSX
+# lldb.macosx
+LLDB_PACKAGE_MACOSX := macosx
+LLDB_PACKAGE_MACOSX_FILES := $(addprefix \
+  $(PROJ_SRC_DIR)/$(LLDB_LEVEL)/examples/, python/crashlog.py darwin/heap_find/heap.py \
+)
+endif
+
+LLDB_ALL_SUBPACKAGE_FILES := $(foreach subpackage,$(LLDB_SUBPACKAGES),$(LLDB_PACKAGE_$(subpackage)_FILES))
+LLDB_ALL_INSTALLED_SUBPACKAGE_FILES := $(foreach subpackage,$(LLDB_SUBPACKAGES),$(addprefix $(LLDB_PACKAGE_$(subpackage))/,$(notdir $(LLDB_PACKAGE_$(subpackage)_FILES))))
+
+comma := ,
+LLDB_COPY_PACKAGE = $(Verb) \
+$(foreach subpackage,$(LLDB_SUBPACKAGES), \
+  init_file="$(PYTHON_DIR)/$(LLDB_PACKAGE_$(subpackage))/__init__.py"; \
+  $(MKDIR) "$(PYTHON_DIR)/$(LLDB_PACKAGE_$(subpackage))"; \
+  $(foreach file,$(LLDB_PACKAGE_$(subpackage)_FILES), \
+    $(CP) "$(file)" "$(PYTHON_DIR)/$(LLDB_PACKAGE_$(subpackage))"; \
+  ) \
+  echo "__all__ = [$(patsubst %,\"%\"$(comma),\
+    $(basename $(notdir $(LLDB_PACKAGE_$(subpackage)_FILES))))]" >$$init_file; \
+  echo "for x in __all__:" >>$$init_file; \
+  echo "    __import__('lldb.$(subst /,.,$(LLDB_PACKAGE_$(subpackage))).'+x)" >>$$init_file; \
+)
+
+LLDB_INSTALL_SUBPACKAGES = $(Verb) \
+$(foreach subpackage,$(LLDB_SUBPACKAGES), \
+  $(MKDIR) $(PYTHON_DEST_DIR)/$(LLDB_PACKAGE_$(subpackage)); \
+  $(DataInstall) $(PYTHON_DIR)/$(LLDB_PACKAGE_$(subpackage))/__init__.py \
+                 $(PYTHON_DEST_DIR)/$(LLDB_PACKAGE_$(subpackage))/__init__.py; \
+) \
+$(foreach file,$(LLDB_ALL_INSTALLED_SUBPACKAGE_FILES), \
+  $(DataInstall) $(PYTHON_DIR)/$(file) $(PYTHON_DEST_DIR)/$(file); \
+)
+
+ifeq ($(HOST_OS),Darwin)
+# Install the heap_find sources, too.
+LLDB_INSTALL_SUBPACKAGES += $(MKDIR) $(PYTHON_DEST_DIR)/macosx/heap/; \
+$(DataInstall) $(PROJ_SRC_DIR)/$(LLDB_LEVEL)/examples/darwin/heap_find/heap/heap_find.cpp \
+               $(PYTHON_DEST_DIR)/macosx/heap/heap_find.cpp; \
+$(DataInstall) $(PROJ_SRC_DIR)/$(LLDB_LEVEL)/examples/darwin/heap_find/heap/Makefile \
+			   $(PYTHON_DEST_DIR)/macosx/heap/Makefile;
+endif
+
 # We need Swig to process stdint.h, but by default it will not inspect system
 # include directories.  The following should cover the standard locations on
 # most platforms.
@@ -39,6 +119,8 @@
 LLDB_SWIG_INCLUDE_DIRS += -I"/usr/include/gcc/darwin/4.2"
 endif
 
+ifndef DISABLE_AUTO_DEPENDENCIES
+
 SWIG_DEPEND_OPTIONS = -MMD -MF "$(PROJ_OBJ_DIR)/$*.cpp.d.tmp"
 CPP_DEPEND_MOVEFILE = then $(MV) -f "$(PROJ_OBJ_DIR)/$*.cpp.d.tmp" "$(PROJ_OBJ_DIR)/$*.cpp.d"; \
                       else $(RM) -f "$(PROJ_OBJ_DIR)/$*.cpp.d.tmp"; exit 1; fi
@@ -46,6 +128,7 @@
 LLDBWrapPython.cpp: $(PROJ_SRC_DIR)/$(LLDB_LEVEL)/scripts/Python/modify-python-lldb.py \
                     $(PROJ_SRC_DIR)/$(LLDB_LEVEL)/scripts/Python/edit-swig-python-wrapper-file.py
 	$(Echo) Generating LLDBWrapPython.cpp
+	$(Verb) $(MKDIR) $(PYTHON_DIR)
 	$(Verb) if swig -c++ -shadow -python $(LLDB_SWIG_INCLUDE_DIRS) \
           -D__STDC_LIMIT_MACROS -outdir "$(PYTHON_DIR)"   \
           $(SWIG_DEPEND_OPTIONS) \
@@ -56,20 +139,49 @@
 	$(Verb) python "$(PROJ_SRC_DIR)/$(LLDB_LEVEL)/scripts/Python/edit-swig-python-wrapper-file.py" \
 		  "$(PROJ_OBJ_DIR)"
 	$(Verb) if test -f "$(PROJ_OBJ_DIR)/LLDBWrapPython.cpp.edited"; then \
-		  mv "$(PROJ_OBJ_DIR)/LLDBWrapPython.cpp.edited" \
-			 "$(PROJ_OBJ_DIR)/LLDBWrapPython.cpp"; fi
-	$(Verb) cp "$(PROJ_SRC_DIR)/embedded_interpreter.py" "$(PYTHON_DIR)"
+		  $(MV) "$(PROJ_OBJ_DIR)/LLDBWrapPython.cpp.edited" \
+				"$(PROJ_OBJ_DIR)/LLDBWrapPython.cpp"; fi
+	$(Verb) $(MV) "$(PYTHON_DIR)/lldb.py" "$(PYTHON_DIR)/__init__.py"
+	$(Verb) $(CP) "$(PROJ_SRC_DIR)/embedded_interpreter.py" "$(PYTHON_DIR)"
 	$(Verb) $(RM) -f $(PYTHON_DIR)/_lldb.so
 	$(Verb) $(AliasTool) $(LIBLLDB) $(PYTHON_DIR)/_lldb.so
+	$(LLDB_COPY_PACKAGE)
 
-install-local:: $(PYTHON_DIR)/lldb.py $(PYTHON_DIR)/embedded_interpreter.py
+else
+
+LLDBWrapPython.cpp: $(PROJ_SRC_DIR)/$(LLDB_LEVEL)/scripts/Python/modify-python-lldb.py \
+                    $(PROJ_SRC_DIR)/$(LLDB_LEVEL)/scripts/Python/edit-swig-python-wrapper-file.py
+	$(Echo) Generating LLDBWrapPython.cpp
+	$(Verb) $(MKDIR) $(PYTHON_DIR)
+	$(Verb) swig -c++ -shadow -python $(LLDB_SWIG_INCLUDE_DIRS) \
+          -D__STDC_LIMIT_MACROS -outdir "$(PYTHON_DIR)"   \
+          -o LLDBWrapPython.cpp "$(PROJ_SRC_DIR)/$(LLDB_LEVEL)/scripts/lldb.swig"
+	$(Verb) python "$(PROJ_SRC_DIR)/$(LLDB_LEVEL)/scripts/Python/modify-python-lldb.py" \
+		  "$(PYTHON_DIR)"
+	$(Verb) python "$(PROJ_SRC_DIR)/$(LLDB_LEVEL)/scripts/Python/edit-swig-python-wrapper-file.py" \
+		  "$(PROJ_OBJ_DIR)"
+	$(Verb) if test -f "$(PROJ_OBJ_DIR)/LLDBWrapPython.cpp.edited"; then \
+		  $(MV) "$(PROJ_OBJ_DIR)/LLDBWrapPython.cpp.edited" \
+				"$(PROJ_OBJ_DIR)/LLDBWrapPython.cpp"; fi
+	$(Verb) $(MV) "$(PYTHON_DIR)/lldb.py" "$(PYTHON_DIR)/__init__.py"
+	$(Verb) $(CP) "$(PROJ_SRC_DIR)/embedded_interpreter.py" "$(PYTHON_DIR)"
+	$(Verb) $(RM) -f $(PYTHON_DIR)/_lldb.so
+	$(Verb) $(AliasTool) $(LIBLLDB) $(PYTHON_DIR)/_lldb.so
+	$(LLDB_COPY_PACKAGE)
+
+endif
+
+install-local:: $(PYTHON_DIR)/__init__.py $(PYTHON_DIR)/embedded_interpreter.py \
+                $(addprefix $(PYTHON_DIR)/,$(LLDB_ALL_INSTALLED_SUBPACKAGE_FILES))
 	$(Echo) Installing $(BuildMode) LLDB python modules
-	$(Verb) $(MKDIR) $(PYTHON_DEST_DIR)/lib-dynload
-	$(Verb) $(DataInstall) $(PYTHON_DIR)/lldb.py $(PYTHON_DEST_DIR)/lldb.py
+	$(Verb) $(MKDIR) $(PYTHON_DEST_DIR)
+	$(Verb) $(DataInstall) $(PYTHON_DIR)/__init__.py $(PYTHON_DEST_DIR)/__init__.py
 	$(Verb) $(DataInstall) $(PYTHON_DIR)/embedded_interpreter.py $(PYTHON_DEST_DIR)/embedded_interpreter.py
-	$(Verb) $(RM) -f $(PYTHON_DEST_DIR)/lib-dynload/_lldb.so
-	$(Verb) $(AliasTool) $(INST_LIBLLDB) $(PYTHON_DEST_DIR)/lib-dynload/_lldb.so
+	$(Verb) $(RM) -f $(PYTHON_DEST_DIR)/_lldb.so
+	$(Verb) $(AliasTool) $(INST_LIBLLDB) $(PYTHON_DEST_DIR)/_lldb.so
+	$(LLDB_INSTALL_SUBPACKAGES)
 
 clean-local::
 	$(Verb) $(RM) -f LLDBWrapPython.cpp $(PYTHON_DIR)/_lldb.so \
-	          $(PYTHON_DIR)/embedded_interpreter.py $(PYTHON_DIR)/lldb.py
+	          $(PYTHON_DIR)/embedded_interpreter.py $(PYTHON_DIR)/__init__.py \
+			  $(addprefix $(PYTHON_DIR)/,$(LLDB_ALL_INSTALLED_SUBPACKAGE_FILES))
Index: source/Makefile
===================================================================
--- source/Makefile	(revision 157381)
+++ source/Makefile	(working copy)
@@ -13,6 +13,7 @@
 BUILD_ARCHIVE = 1
 
 BUILT_SOURCES = LLDB_vers.c
+SOURCES := lldb-log.cpp lldb.cpp
 
 include $(LLDB_LEVEL)/Makefile
 
Index: tools/lldb-platform/Makefile
===================================================================
--- tools/lldb-platform/Makefile	(revision 157381)
+++ tools/lldb-platform/Makefile	(working copy)
@@ -10,14 +10,14 @@
 
 TOOLNAME = lldb-platform
 
-LD.Flags += -llldb -llldbUtility
+LLVMLibsOptions += -llldb -llldbUtility
 
 include $(LLDB_LEVEL)/Makefile
 
 ifeq ($(HOST_OS),Darwin)
-	LD.Flags += -Wl,-rpath,@loader_path/../lib/
+	LLVMLibsOptions += -Wl,-rpath,@loader_path/../lib/
 endif
 
 ifeq ($(HOST_OS), $(filter $(HOST_OS), Linux FreeBSD))
-	LD.Flags += -Wl,-rpath,$(LibDir)
+	LLVMLibsOptions += -Wl,-rpath,$(LibDir)
 endif
Index: tools/driver/Makefile
===================================================================
--- tools/driver/Makefile	(revision 157381)
+++ tools/driver/Makefile	(working copy)
@@ -10,21 +10,21 @@
 
 TOOLNAME = lldb
 
-LD.Flags += -ledit -llldb -llldbUtility
+LLVMLibsOptions += -ledit -llldb -llldbUtility
 
 include $(LLDB_LEVEL)/Makefile
 
 ifeq ($(HOST_OS),Darwin)
-	LD.Flags += -Wl,-rpath,@loader_path/../lib/
-	LD.Flags += -Wl,-sectcreate -Wl,__TEXT -Wl,__info_plist -Wl,"$(PROJ_SRC_DIR)/lldb-Info.plist"
+	LLVMLibsOptions += -Wl,-rpath,@loader_path/../lib/
+	LLVMLibsOptions += -Wl,-sectcreate -Wl,__TEXT -Wl,__info_plist -Wl,"$(PROJ_SRC_DIR)/lldb-Info.plist"
 endif
 
 ifeq ($(HOST_OS),Linux)
-	LD.Flags += -Wl,-rpath,$(LibDir)
+	LLVMLibsOptions += -Wl,-rpath,$(LibDir)
 endif
 
 ifeq ($(HOST_OS),FreeBSD)
 	CPP.Flags += -I/usr/include/edit #-v
-	LD.Flags += -Wl,-rpath,$(LibDir)
+	LLVMLibsOptions += -Wl,-rpath,$(LibDir)
 endif
 
Index: lib/Makefile
===================================================================
--- lib/Makefile	(revision 157381)
+++ lib/Makefile	(working copy)
@@ -12,14 +12,14 @@
 
 LIBRARYNAME = lldb
 
-#EXPORTED_SYMBOL_FILE = $(PROJ_SRC_DIR)/../resources/lldb-framework-exports
+#EXPORTED_SYMBOL_FILE = $(PROJ_SRC_DIR)/$(LLDB_LEVEL)/resources/lldb-framework-exports
 NO_BUILD_ARCHIVE = 1
 LINK_LIBS_IN_SHARED = 1
 SHARED_LIBRARY = 1
 
 PYTHON_BUILD_FLAGS = $(shell python-config --ldflags)
 
-# Include all archives in liblldb.a files
+# Include all archives in liblldb.so file
 USEDLIBS = lldbAPI.a \
 	lldbBreakpoint.a \
 	lldbCommands.a \
@@ -33,6 +33,7 @@
 	lldbPluginABISysV_x86_64.a \
 	lldbPluginDisassemblerLLVM.a \
 	lldbPluginDynamicLoaderStatic.a \
+	lldbPluginDynamicLoaderPOSIX.a \
 	lldbPluginEmulateInstructionARM.a \
 	lldbPluginLanguageRuntimeCPlusPlusItaniumABI.a \
 	lldbPluginLanguageRuntimeObjCAppleObjCRuntime.a \
@@ -87,13 +88,11 @@
 ifeq ($(HOST_OS),Linux)
   USEDLIBS += lldbPluginProcessPOSIX.a \
               lldbPluginProcessLinux.a \
-              lldbPluginDynamicLoaderPOSIX.a \
               lldbHostLinux.a
 endif
 
 ifeq ($(HOST_OS),FreeBSD)
   USEDLIBS += lldbHostFreeBSD.a \
-              lldbPluginDynamicLoaderPOSIX.a \
               lldbPluginProcessPOSIX.a \
               lldbPluginProcessFreeBSD.a
 endif
@@ -113,7 +112,9 @@
 	LLVMLibsOptions += -framework Foundation -framework CoreFoundation
 	LLVMLibsOptions += -framework CoreServices -framework Carbon -framework Security
 	LLVMLibsOptions += -framework DebugSymbols $(PYTHON_BUILD_FLAGS) -lobjc
-	LLVMLibsOptions += -Wl,-exported_symbols_list -Wl,"$(PROJ_SRC_DIR)/$(LLDB_LEVEL)/resources/lldb-framework-exports" 
+	ifneq ($(EXPORTED_SYMBOL_FILE),)
+		LLVMLibsOptions += -Wl,-exported_symbols_list -Wl,"$(EXPORTED_SYMBOL_FILE)"
+	endif
     # Mac OS X 10.4 and earlier tools do not allow a second -install_name on command line
     DARWIN_VERS := $(shell echo $(TARGET_TRIPLE) | sed 's/.*darwin\([0-9]*\).*/\1/')
     ifneq ($(DARWIN_VERS),8)
@@ -129,7 +130,7 @@
     # Don't allow unresolved symbols.
     LLVMLibsOptions += -Wl,--no-undefined
     # Link in python
-    LD.Flags += $(PYTHON_BUILD_FLAGS) -lrt
+    LLVMLibsOptions += $(PYTHON_BUILD_FLAGS) -lrt
 endif
 
 ifeq ($(HOST_OS),FreeBSD)
@@ -139,5 +140,5 @@
     # Allow unresolved symbols.
     LLVMLibsOptions += -Wl,--allow-shlib-undefined
     # Link in python
-    LD.Flags += $(PYTHON_BUILD_FLAGS) -lrt -L/usr/local/lib -lexecinfo
+    LLVMLibsOptions += $(PYTHON_BUILD_FLAGS) -lrt -L/usr/local/lib -lexecinfo
 endif
