# $Id: Makefile.kmk 48282 2013-09-04 23:59:15Z vboxsync $ ## @file # Sub-Makefile for Python bindings # # # Copyright (C) 2009-2012 Oracle Corporation # # This file is part of VirtualBox Open Source Edition (OSE), as # available from http://www.virtualbox.org. This file is free software; # you can redistribute it and/or modify it under the terms of the GNU # General Public License (GPL) as published by the Free Software # Foundation, in version 2 as it comes in the "COPYING" file of the # VirtualBox OSE distribution. VirtualBox OSE is distributed in the # hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. # SUB_DEPTH = ../../../.. include $(KBUILD_PATH)/subheader.kmk ifdef VBOX_WITH_MULTIVERSION_PYTHON VBOX_MULTIPYTHON = 1 else VBOX_MULTIPYTHON = 0 endif # # List of supported Python versions, defining a number of # VBOX_PYTHON[25|26|27|DEF]_[INC|LIB] variables which get picked up below. # ifeq ($(KBUILD_TARGET),darwin) # Relatively predictable, don't script. ifeq ($(KBUILD_TARGET_ARCH),x86) VBOX_PYTHON25_INC = $(VBOX_PATH_MACOSX_SDK)/usr/include/python2.5 VBOX_PYTHON25_LIB = $(VBOX_PATH_MACOSX_SDK)/usr/lib/libpython2.5.dylib VBOX_PYTHON25_LIB_X86 = $(VBOX_PYTHON25_LIB) endif if !defined(VBOX_WITHOUT_VBOXPYTHON_FOR_OSX_10_6) \ && ( !defined(VBOX_OSE) \ || "$(wildcard $(VBOX_PATH_MACOSX_SDK_10_6)/usr/lib/libpython2.6.dylib)" != "") VBOX_PYTHON26_INC = $(VBOX_PATH_MACOSX_SDK_10_6)/usr/include/python2.6 VBOX_PYTHON26_LIB = $(VBOX_PATH_MACOSX_SDK_10_6)/usr/lib/libpython2.6.dylib VBOX_PYTHON26_LIB_X86 = $(VBOX_PYTHON26_LIB) endif if !defined(VBOX_WITHOUT_VBOXPYTHON_FOR_OSX_10_7) \ && ( defined(VBOX_NOT_OSE_LATER_SOMETIME) \ || "$(wildcard $(VBOX_PATH_MACOSX_SDK_10_7)/usr/lib/libpython2.7.dylib)" != "") VBOX_PYTHON27_INC = $(VBOX_PATH_MACOSX_SDK_10_7)/usr/include/python2.7 VBOX_PYTHON27_LIB = $(VBOX_PATH_MACOSX_SDK_10_7)/usr/lib/libpython2.7.dylib VBOX_PYTHON27_LIB_X86 = $(VBOX_PYTHON27_LIB) endif else # Use the script. $(eval $(subst |,$(NL),$(shell $(VBOX_BLD_PYTHON) \ $(PATH_SUB_CURRENT)/gen_python_deps.py \ $(KBUILD_TARGET) \ $(KBUILD_TARGET_ARCH) \ $(VBOX_MULTIPYTHON) ))) endif ifndef VBOX_ONLY_SDK # # Base Python Client Module - the C++/XPCOM bits (not actually built). # VBoxPythonBase_TEMPLATE = XPCOM VBoxPythonBase_CXXFLAGS = -Wno-write-strings VBoxPythonBase_DLLSUFF.darwin = .so VBoxPythonBase_DEFS = \ _IMPL_NS_COM \ _IMPL_NS_BASE \ EXPORT_XPTI_API \ EXPORT_XPT_API \ VBOX_PYXPCOM \ VBOX_WITH_XPCOM \ VBOX_PYXPCOM_VERSIONED #VBoxPythonBase_DEFS.debug = \ # VBOX_DEBUG_LIFETIMES VBoxPythonBase_INCS = \ src VBoxPythonBase_SOURCES = \ src/module/_xpcom.cpp \ src/dllmain.cpp \ src/ErrorUtils.cpp \ src/PyGBase.cpp \ src/PyGInputStream.cpp \ src/PyGModule.cpp \ src/PyGStub.cpp \ src/PyGWeakReference.cpp \ src/PyIClassInfo.cpp \ src/PyIComponentManager.cpp \ src/PyIComponentManagerObsolete.cpp \ src/PyIEnumerator.cpp \ src/PyIID.cpp \ src/PyIInputStream.cpp \ src/PyIInterfaceInfo.cpp \ src/PyIInterfaceInfoManager.cpp \ src/PyISimpleEnumerator.cpp \ src/PyISupports.cpp \ src/PyIVariant.cpp \ src/Pyxpt_info.cpp \ src/TypeObject.cpp \ src/VariantUtils.cpp VBoxPythonBase_LIBS = \ $(PATH_STAGE_LIB)/VBoxCOM$(VBOX_SUFF_LIB) \ $(PATH_STAGE_BIN)/VBoxXPCOM$(VBOX_SUFF_DLL) # 32-bit base. VBoxPythonBase_x86_TEMPLATE = XPCOM-x86 VBoxPythonBase_x86_EXTENDS = VBoxPythonBase VBoxPythonBase_x86_DEFS = MODULE_NAME_SUFFIX=_x86 $(VBoxPythonBase_DEFS) VBoxPythonBase_x86_LIBS = \ $(PATH_STAGE_LIB)/VBoxCOM-x86$(VBOX_SUFF_LIB) \ $(PATH_STAGE_BIN)/VBoxXPCOM-x86$(VBOX_SUFF_DLL) ifdef VBOX_PYTHON23_INC # # Python 2.3 version # DLLS += VBoxPython2_3 VBoxPython2_3_EXTENDS = VBoxPythonBase VBoxPython2_3_EXTENDS_BY = appending VBoxPython2_3_TEMPLATE = XPCOM$(if-expr "$(KBUILD_TARGET)" == "darwin",OSX104,) VBoxPython2_3_INCS = $(VBOX_PYTHON23_INC) VBoxPython2_3_LIBS = $(VBOX_PYTHON23_LIB) ifdef VBOX_WITH_32_ON_64_MAIN_API DLLS += VBoxPython2_3_x86 VBoxPython2_3_x86_EXTENDS = VBoxPythonBase_x86 VBoxPython2_3_x86_EXTENDS_BY = appending VBoxPython2_3_x86_TEMPLATE = XPCOM$(if-expr "$(KBUILD_TARGET)" == "darwin",OSX104,-x86) VBoxPython2_3_x86_INCS = $(VBOX_PYTHON23_INC) VBoxPython2_3_x86_LIBS = $(VBOX_PYTHON23_LIB_X86) endif endif ifdef VBOX_PYTHON24_INC # # Python 2.4 version # DLLS += VBoxPython2_4 VBoxPython2_4_EXTENDS = VBoxPythonBase VBoxPython2_4_EXTENDS_BY = appending VBoxPython2_4_INCS = $(VBOX_PYTHON24_INC) VBoxPython2_4_LIBS = $(VBOX_PYTHON24_LIB) ifdef VBOX_WITH_32_ON_64_MAIN_API DLLS += VBoxPython2_4_x86 VBoxPython2_4_x86_EXTENDS = VBoxPythonBase_x86 VBoxPython2_4_x86_EXTENDS_BY = appending VBoxPython2_4_x86_INCS = $(VBOX_PYTHON24_INC) VBoxPython2_4_x86_LIBS = $(VBOX_PYTHON24_LIB_X86) endif endif ifdef VBOX_PYTHON25_INC # # Python 2.5 version # DLLS += VBoxPython2_5 VBoxPython2_5_EXTENDS = VBoxPythonBase VBoxPython2_5_EXTENDS_BY = appending VBoxPython2_5_INCS = $(VBOX_PYTHON25_INC) VBoxPython2_5_LIBS = $(VBOX_PYTHON25_LIB) ifdef VBOX_WITH_32_ON_64_MAIN_API DLLS += VBoxPython2_5_x86 VBoxPython2_5_x86_EXTENDS = VBoxPythonBase_x86 VBoxPython2_5_x86_EXTENDS_BY = appending VBoxPython2_5_x86_INCS = $(VBOX_PYTHON25_INC) VBoxPython2_5_x86_LIBS = $(VBOX_PYTHON25_LIB_X86) endif endif ifdef VBOX_PYTHON26_INC # # Python 2.6 version # DLLS += VBoxPython2_6 VBoxPython2_6_EXTENDS = VBoxPythonBase VBoxPython2_6_EXTENDS_BY = appending VBoxPython2_6_TEMPLATE = XPCOM$(if-expr "$(KBUILD_TARGET)" == "darwin",OSX106,) VBoxPython2_6_INCS = $(VBOX_PYTHON26_INC) VBoxPython2_6_LIBS = $(VBOX_PYTHON26_LIB) ifdef VBOX_WITH_32_ON_64_MAIN_API DLLS += VBoxPython2_6_x86 VBoxPython2_6_x86_EXTENDS = VBoxPythonBase_x86 VBoxPython2_6_x86_EXTENDS_BY = appending VBoxPython2_6_x86_TEMPLATE = XPCOM$(if-expr "$(KBUILD_TARGET)" == "darwin",OSX106,-x86) VBoxPython2_6_x86_INCS = $(VBOX_PYTHON26_INC) VBoxPython2_6_x86_LIBS = $(VBOX_PYTHON26_LIB_X86) endif endif ifdef VBOX_PYTHON27_INC # # Python 2.7 version # DLLS += VBoxPython2_7 VBoxPython2_7_EXTENDS = VBoxPythonBase VBoxPython2_7_EXTENDS_BY = appending VBoxPython2_7_TEMPLATE = XPCOM$(if-expr "$(KBUILD_TARGET)" == "darwin",OSX107,) VBoxPython2_7_INCS = $(VBOX_PYTHON27_INC) VBoxPython2_7_LIBS = $(VBOX_PYTHON27_LIB_X86) ifdef VBOX_WITH_32_ON_64_MAIN_API DLLS += VBoxPython2_7_x86 VBoxPython2_7_x86_EXTENDS = VBoxPythonBase_x86 VBoxPython2_7_x86_EXTENDS_BY = appending VBoxPython2_7_x86_TEMPLATE = XPCOM$(if-expr "$(KBUILD_TARGET)" == "darwin",OSX107,-x86) VBoxPython2_7_x86_INCS = $(VBOX_PYTHON27_INC) VBoxPython2_7_x86_LIBS = $(VBOX_PYTHON27_LIB_X86) endif endif ifdef VBOX_PYTHONDEF_INC # # Python without versioning # DLLS += VBoxPython VBoxPython_EXTENDS = VBoxPythonBase VBoxPython_DEFS = $(filter-out VBOX_PYXPCOM_VERSIONED,$(VBoxPythonBase_DEFS)) VBoxPython_INCS = $(VBoxPythonBase_INCS) $(VBOX_PYTHONDEF_INC) if "$(KBUILD_TARGET)" == "linux" VBoxPython_LIBS = $(VBoxPythonBase_LIBS) else VBoxPython_LIBS = $(VBoxPythonBase_LIBS) $(VBOX_PYTHONDEF_LIB) endif ifdef VBOX_WITH_32_ON_64_MAIN_API VBoxPython_x86_EXTENDS = VBoxPythonBase_x86 VBoxPython_x86_DEFS = $(filter-out VBOX_PYXPCOM_VERSIONED,$(VBoxPythonBase_x86_DEFS)) VBoxPython_x86_INCS = $(VBoxPythonBase_x86_INCS) $(VBOX_PYTHONDEF_INC) if "$(KBUILD_TARGET)" == "linux" VBoxPython_x86_LIBS = $(VBoxPythonBase_x86_LIBS) else VBoxPython_x86_LIBS = $(VBoxPythonBase_x86_LIBS) $(VBOX_PYTHONDEF_LIB_X86) endif endif endif endif # VBOX_ONLY_SDK # # Install the python modules. # INSTALLS += VBoxPython-inst-py-xpcom VBoxPython-inst-py-xpcom_INST = $(INST_SDK)bindings/xpcom/python/xpcom/ VBoxPython-inst-py-xpcom_MODE = a+r,u+w VBoxPython-inst-py-xpcom_SOURCES = \ vboxxpcom.py \ components.py \ file.py \ __init__.py \ nsError.py \ primitives.py \ xpcom_consts.py \ xpt.py \ client/__init__.py=>client/__init__.py \ server/__init__.py=>server/__init__.py \ server/enumerator.py=>server/enumerator.py \ server/factory.py=>server/factory.py \ server/loader.py=>server/loader.py \ server/module.py=>server/module.py \ server/policy.py=>server/policy.py include $(FILE_KBUILD_SUB_FOOTER)