summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFilipe Cabecinhas <me@filcab.net>2012-05-29 14:08:19 +0000
committerFilipe Cabecinhas <me@filcab.net>2012-05-29 14:08:19 +0000
commit3de2a75997adde9c6444e8314e1f3d2a5c7c8b6a (patch)
tree093c7674897c51a74cfeda29985c8a90c5f7985f
parent54d730430c97c1b0ab09021cff935f939904995a (diff)
downloadbcm5719-llvm-3de2a75997adde9c6444e8314e1f3d2a5c7c8b6a.tar.gz
bcm5719-llvm-3de2a75997adde9c6444e8314e1f3d2a5c7c8b6a.zip
Commit Charles Davis' patch with some additional modifications.
llvm-svn: 157621
-rw-r--r--lldb/source/Interpreter/Makefile136
1 files changed, 124 insertions, 12 deletions
diff --git a/lldb/source/Interpreter/Makefile b/lldb/source/Interpreter/Makefile
index 58dff5228a8..206eb069204 100644
--- a/lldb/source/Interpreter/Makefile
+++ b/lldb/source/Interpreter/Makefile
@@ -16,16 +16,96 @@ BUILT_SOURCES := LLDBWrapPython.cpp
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 @@ ifeq ($(HOST_OS),Darwin)
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 @@ CPP_DEPEND_MOVEFILE = then $(MV) -f "$(PROJ_OBJ_DIR)/$*.cpp.d.tmp" "$(PROJ_OBJ_D
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 @@ LLDBWrapPython.cpp: $(PROJ_SRC_DIR)/$(LLDB_LEVEL)/scripts/Python/modify-python-l
$(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)
+
+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)/lldb.py $(PYTHON_DIR)/embedded_interpreter.py
+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))
OpenPOWER on IntegriCloud