diff options
| author | Filipe Cabecinhas <me@filcab.net> | 2012-05-29 14:08:19 +0000 | 
|---|---|---|
| committer | Filipe Cabecinhas <me@filcab.net> | 2012-05-29 14:08:19 +0000 | 
| commit | 3de2a75997adde9c6444e8314e1f3d2a5c7c8b6a (patch) | |
| tree | 093c7674897c51a74cfeda29985c8a90c5f7985f | |
| parent | 54d730430c97c1b0ab09021cff935f939904995a (diff) | |
| download | bcm5719-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/Makefile | 136 | 
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))  | 

