diff options
Diffstat (limited to 'src/libs/xpcom18a4/python/Makefile.kmk')
-rw-r--r-- | src/libs/xpcom18a4/python/Makefile.kmk | 789 |
1 files changed, 789 insertions, 0 deletions
diff --git a/src/libs/xpcom18a4/python/Makefile.kmk b/src/libs/xpcom18a4/python/Makefile.kmk new file mode 100644 index 00000000..b8dcd44a --- /dev/null +++ b/src/libs/xpcom18a4/python/Makefile.kmk @@ -0,0 +1,789 @@ +# $Id: Makefile.kmk $ +## @file +# Sub-Makefile for Python bindings +# + +# +# Copyright (C) 2009-2022 Oracle and/or its affiliates. +# +# This file is part of VirtualBox base platform packages, as +# available from https://www.virtualbox.org. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation, in version 3 of the +# License. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, see <https://www.gnu.org/licenses>. +# +# SPDX-License-Identifier: GPL-3.0-only +# + +SUB_DEPTH = ../../../.. +include $(KBUILD_PATH)/subheader.kmk + +# +# List of supported Python versions, defining a number of +# VBOX_PYTHON[26|27|31|32|32M|33|33M|34|34M|35|35M|36|36M|37|37M|38|38M|39|39M|310|310M|DEF]_[INC|LIB] variables +# which get picked up below. +# +ifeq ($(KBUILD_TARGET),darwin) # Relatively predictable, don't script. + ifn1of ($(VBOX_DEF_MACOSX_VERSION_MIN), 10.10 10.9 10.8 10.7 10.6 10.5 10.4) ## @todo @bugref{9790}: if $(VBOX_DEF_MACOSX_VERSION_MIN) vge 10.11 + VBOX_PYTHON_SUFFTBD := .tbd + else + VBOX_PYTHON_SUFFTBD := + endif + ifndef VBOX_WITHOUT_VBOXPYTHON_FOR_OSX_10_6 + if1of ($(VBOX_DEF_MACOSX_VERSION_MIN), 10.5 10.4) + 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 + else if "$(VBOX_DEF_MACOSX_VERSION_MIN)" == "10.9" && "$(VBOX_XCODE_VERSION)" == "6.2" # 'effing 10.9 SDK in Xcode 6.2 is missing python. Stupid, stupid Apple!! + VBOX_PYTHON26_INC = $(VBOX_PATH_MACOSX_SDK)/../MacOSX10.10.sdk/System/Library/Frameworks/Python.framework/Versions/2.6/Headers + VBOX_PYTHON26_LIB = $(VBOX_PATH_MACOSX_SDK)/../MacOSX10.10.sdk/System/Library/Frameworks/Python.framework/Versions/2.6/Python + else if "$(VBOX_DEF_MACOSX_VERSION_MIN)" vlt "10.13" + VBOX_PYTHON26_INC = $(VBOX_PATH_MACOSX_SDK)/System/Library/Frameworks/Python.framework/Versions/2.6/Headers + VBOX_PYTHON26_LIB = $(VBOX_PATH_MACOSX_SDK)/System/Library/Frameworks/Python.framework/Versions/2.6/Python$(VBOX_PYTHON_SUFFTBD) + endif + if !defined(VBOX_OSE) || "$(wildcard $(VBOX_PYTHON26_LIB))" != "" + VBOX_PYTHON26_LIB_X86 = $(VBOX_PYTHON26_LIB) + else + VBOX_PYTHON26_INC = + VBOX_PYTHON26_LIB = + endif + endif + ifndef VBOX_WITHOUT_VBOXPYTHON_FOR_OSX_10_7 + if1of ($(VBOX_DEF_MACOSX_VERSION_MIN), 10.6 10.5 10.4) + 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 + else if "$(VBOX_DEF_MACOSX_VERSION_MIN)" == "10.9" && "$(VBOX_XCODE_VERSION)" == "6.2" # 'effing 10.9 SDK in Xcode 6.2 is missing python. Stupid, stupid Apple!! + VBOX_PYTHON27_INC = $(VBOX_PATH_MACOSX_SDK)/../MacOSX10.10.sdk/System/Library/Frameworks/Python.framework/Versions/2.7/Headers + VBOX_PYTHON27_LIB = $(VBOX_PATH_MACOSX_SDK)/../MacOSX10.10.sdk/System/Library/Frameworks/Python.framework/Versions/2.7/Python + else + VBOX_PYTHON27_INC = $(VBOX_PATH_MACOSX_SDK)/System/Library/Frameworks/Python.framework/Versions/2.7/Headers + VBOX_PYTHON27_LIB = $(VBOX_PATH_MACOSX_SDK)/System/Library/Frameworks/Python.framework/Versions/2.7/Python$(VBOX_PYTHON_SUFFTBD) + endif + if !defined(VBOX_OSE) || "$(wildcard $(VBOX_PYTHON27_LIB))" != "" + VBOX_PYTHON27_LIB_X86 = $(VBOX_PYTHON27_LIB) + else + VBOX_PYTHON27_INC = + VBOX_PYTHON27_LIB = + endif + endif + # No Python 3.x yet as part of OSX versions including El Capitan, 10.11. + +else + # Use the script. + $(eval $(subst |,$(NL),$(shell $(VBOX_BLD_PYTHON) \ + $(PATH_SUB_CURRENT)/gen_python_deps.py \ + $(KBUILD_TARGET) \ + $(KBUILD_TARGET_ARCH) \ + $(if-expr defined(VBOX_WITH_MULTIVERSION_PYTHON),1,0)))) +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_CXXFLAGS.solaris = $(VBOX_GCC_Wno-unknown-pragmas) # /usr/include/python[23].[75]*/ceval.h:67: warning: ignoring #pragma no_inline(PyEval_EvalFrameEx) +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) + +# pymalloc abi variant. +VBoxPythonBase_m_EXTENDS = VBoxPythonBase +VBoxPythonBase_m_DEFS = MODULE_NAME_SUFFIX=m $(VBoxPythonBase_DEFS) + +# 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) + +# 32-bit pymalloc abi variant. +VBoxPythonBase_x86_m_EXTENDS = VBoxPythonBase_x86 +VBoxPythonBase_x86_m_DEFS = MODULE_NAME_SUFFIX=_x86m $(VBoxPythonBase_DEFS) + + +ifdef VBOX_PYTHON26_INC +# +# Python 2.6 version +# +DLLS += VBoxPython2_6 +VBoxPython2_6_EXTENDS = VBoxPythonBase +VBoxPython2_6_EXTENDS_BY = appending + ifdef KMK_WITH_VERSION_COMPARE +VBoxPython2_6_TEMPLATE = XPCOM$(if-expr "$(KBUILD_TARGET)" == "darwin" && "$(VBOX_DEF_MACOSX_VERSION_MIN)" vle "10.6",OSX106,) + else +VBoxPython2_6_TEMPLATE = XPCOM$(if-expr "$(KBUILD_TARGET)" == "darwin" && "$(VBOX_DEF_MACOSX_VERSION_MIN)" <= "10.6",OSX106,) + endif +VBoxPython2_6_INCS = $(VBOX_PYTHON26_INC) +VBoxPython2_6_LIBS = $(VBOX_PYTHON26_LIB) + + ifdef VBOX_WITH_32_ON_64_MAIN_API + ifdef VBOX_PYTHON26_LIB_X86 +DLLS += VBoxPython2_6_x86 +VBoxPython2_6_x86_EXTENDS = VBoxPythonBase_x86 +VBoxPython2_6_x86_EXTENDS_BY = appending + ifdef KMK_WITH_VERSION_COMPARE +VBoxPython2_6_x86_TEMPLATE = XPCOM$(if-expr "$(KBUILD_TARGET)" == "darwin" && "$(VBOX_DEF_MACOSX_VERSION_MIN)" vle "10.6",OSX106,-x86) + else +VBoxPython2_6_x86_TEMPLATE = XPCOM$(if-expr "$(KBUILD_TARGET)" == "darwin" && "$(VBOX_DEF_MACOSX_VERSION_MIN)" <= "10.6",OSX106,-x86) + endif +VBoxPython2_6_x86_INCS = $(VBOX_PYTHON26_INC) +VBoxPython2_6_x86_LIBS = $(VBOX_PYTHON26_LIB_X86) + endif + endif +endif + +ifdef VBOX_PYTHON27_INC +# +# Python 2.7 version +# +DLLS += VBoxPython2_7 +VBoxPython2_7_EXTENDS = VBoxPythonBase +VBoxPython2_7_EXTENDS_BY = appending + ifdef KMK_WITH_VERSION_COMPARE +VBoxPython2_7_TEMPLATE = XPCOM$(if-expr "$(KBUILD_TARGET)" == "darwin" && "$(VBOX_DEF_MACOSX_VERSION_MIN)" vle "10.7",OSX107,) + else +VBoxPython2_7_TEMPLATE = XPCOM$(if-expr "$(KBUILD_TARGET)" == "darwin" && "$(VBOX_DEF_MACOSX_VERSION_MIN)" <= "10.7" && "$(length-var VBOX_DEF_MACOSX_VERSION_MIN)" == "4",OSX107,) + endif +VBoxPython2_7_INCS = $(VBOX_PYTHON27_INC) +VBoxPython2_7_LIBS = $(VBOX_PYTHON27_LIB) + + ifdef VBOX_WITH_32_ON_64_MAIN_API + ifdef VBOX_PYTHON27_LIB_X86 +DLLS += VBoxPython2_7_x86 +VBoxPython2_7_x86_EXTENDS = VBoxPythonBase_x86 +VBoxPython2_7_x86_EXTENDS_BY = appending + ifdef KMK_WITH_VERSION_COMPARE +VBoxPython2_7_x86_TEMPLATE = XPCOM$(if-expr "$(KBUILD_TARGET)" == "darwin" && "$(VBOX_DEF_MACOSX_VERSION_MIN)" vle "10.7",OSX107,-x86) + else +VBoxPython2_7_x86_TEMPLATE = XPCOM$(if-expr "$(KBUILD_TARGET)" == "darwin" && "$(VBOX_DEF_MACOSX_VERSION_MIN)" <= "10.7" && "$(length-var VBOX_DEF_MACOSX_VERSION_MIN)" == "4",OSX107,-x86) + endif +VBoxPython2_7_x86_INCS = $(VBOX_PYTHON27_INC) +VBoxPython2_7_x86_LIBS = $(VBOX_PYTHON27_LIB_X86) + endif + endif +endif + +# +# Unversioned Python 2.x. +# + if defined(VBOX_PYTHON27_INC) || defined(VBOX_PYTHON26_INC) +DLLS += VBoxPython2 +VBoxPython2_EXTENDS = VBoxPythonBase +VBoxPython2_EXTENDS_BY = appending +VBoxPython2_DEFS = VBOX_PYXPCOM_MAJOR_VERSIONED + ifdef KMK_WITH_VERSION_COMPARE +VBoxPython2_TEMPLATE = XPCOM$(if-expr "$(KBUILD_TARGET)" == "darwin" && "$(VBOX_DEF_MACOSX_VERSION_MIN)" vle "10.7",OSX107,) + else +VBoxPython2_TEMPLATE = XPCOM$(if-expr "$(KBUILD_TARGET)" == "darwin" && "$(VBOX_DEF_MACOSX_VERSION_MIN)" <= "10.7" && "$(length-var VBOX_DEF_MACOSX_VERSION_MIN)" == "4",OSX107,) + endif + if defined(VBOX_PYTHON26_INC) +VBoxPython2_INCS = $(VBOX_PYTHON26_INC) + ifn1of ($(KBUILD_TARGET), linux) +VBoxPython2_LIBS = $(VBOX_PYTHON26_LIB) + endif + else +VBoxPython2_INCS = $(VBOX_PYTHON27_INC) + ifn1of ($(KBUILD_TARGET), linux) +VBoxPython2_LIBS = $(VBOX_PYTHON27_LIB) + endif + endif + endif + + if defined(VBOX_WITH_32_ON_64_MAIN_API) && (defined(VBOX_PYTHON27_LIB_X86) || defined(VBOX_PYTHON26_INC_X86)) +DLLS += VBoxPython2_x86 +VBoxPython2_x86_EXTENDS = VBoxPythonBase_x86 +VBoxPython2_x86_EXTENDS_BY = appending +VBoxPython2_x86_DEFS = VBOX_PYXPCOM_MAJOR_VERSIONED $(VBoxPythonBase_x86_DEFS) + ifdef KMK_WITH_VERSION_COMPARE +VBoxPython2_x86_TEMPLATE = XPCOM$(if-expr "$(KBUILD_TARGET)" == "darwin" && "$(VBOX_DEF_MACOSX_VERSION_MIN)" vle "10.7",OSX107,-x86) + else +VBoxPython2_x86_TEMPLATE = XPCOM$(if-expr "$(KBUILD_TARGET)" == "darwin" && "$(VBOX_DEF_MACOSX_VERSION_MIN)" <= "10.7" && "$(length-var VBOX_DEF_MACOSX_VERSION_MIN)" == "4",OSX107,-x86) + endif + if defined(VBOX_PYTHON26LIB_X86) +VBoxPython2_x86_INCS = $(VBOX_PYTHON26_INC) + ifn1of ($(KBUILD_TARGET), linux) +VBoxPython2_x86_LIBS = $(VBOX_PYTHON26_LIB_X86) + endif + else +VBoxPython2_x86_INCS = $(VBOX_PYTHON27_INC) + ifn1of ($(KBUILD_TARGET), linux) +VBoxPython2_x86_LIBS = $(VBOX_PYTHON27_LIB_X86) + endif + endif + endif + + +ifdef VBOX_PYTHON31_INC +# +# Python 3.1 version +# +DLLS += VBoxPython3_1 +VBoxPython3_1_EXTENDS = VBoxPythonBase +VBoxPython3_1_EXTENDS_BY = appending +VBoxPython3_1_TEMPLATE = XPCOM +VBoxPython3_1_INCS = $(VBOX_PYTHON31_INC) +VBoxPython3_1_LIBS = $(VBOX_PYTHON31_LIB) + + ifdef VBOX_WITH_32_ON_64_MAIN_API + ifdef VBOX_PYTHON31_LIB_X86 +DLLS += VBoxPython3_1_x86 +VBoxPython3_1_x86_EXTENDS = VBoxPythonBase_x86 +VBoxPython3_1_x86_EXTENDS_BY = appending +VBoxPython3_1_x86_TEMPLATE = XPCOM +VBoxPython3_1_x86_INCS = $(VBOX_PYTHON31_INC) +VBoxPython3_1_x86_LIBS = $(VBOX_PYTHON31_LIB_X86) + endif + endif +endif + +ifdef VBOX_PYTHON32_INC +# +# Python 3.2 version +# +DLLS += VBoxPython3_2 +VBoxPython3_2_EXTENDS = VBoxPythonBase +VBoxPython3_2_EXTENDS_BY = appending +VBoxPython3_2_TEMPLATE = XPCOM +VBoxPython3_2_INCS = $(VBOX_PYTHON32_INC) +VBoxPython3_2_LIBS = $(VBOX_PYTHON32_LIB) + + ifdef VBOX_WITH_32_ON_64_MAIN_API + ifdef VBOX_PYTHON32_LIB_X86 +DLLS += VBoxPython3_2_x86 +VBoxPython3_2_x86_EXTENDS = VBoxPythonBase_x86 +VBoxPython3_2_x86_EXTENDS_BY = appending +VBoxPython3_2_x86_TEMPLATE = XPCOM +VBoxPython3_2_x86_INCS = $(VBOX_PYTHON32_INC) +VBoxPython3_2_x86_LIBS = $(VBOX_PYTHON32_LIB_X86) + endif + endif +endif + +ifdef VBOX_PYTHON32M_INC +# +# Python 3.2 version with pymalloc +# +DLLS += VBoxPython3_2m +VBoxPython3_2m_EXTENDS = VBoxPythonBase_m +VBoxPython3_2m_EXTENDS_BY = appending +VBoxPython3_2m_TEMPLATE = XPCOM +VBoxPython3_2m_INCS = $(VBOX_PYTHON32M_INC) +VBoxPython3_2m_LIBS = $(VBOX_PYTHON32M_LIB) +VBoxPython3_2m_DEFS = MODULE_NAME_SUFFIX + + ifdef VBOX_WITH_32_ON_64_MAIN_API + ifdef VBOX_PYTHON32M_LIB_X86 +DLLS += VBoxPython3_2m_x86 +VBoxPython3_2m_x86_EXTENDS = VBoxPythonBase_x86_m +VBoxPython3_2m_x86_EXTENDS_BY = appending +VBoxPython3_2m_x86_TEMPLATE = XPCOM +VBoxPython3_2m_x86_INCS = $(VBOX_PYTHON32M_INC) +VBoxPython3_2m_x86_LIBS = $(VBOX_PYTHON32M_LIB_X86) + endif + endif +endif + + ifndef VBOX_WITH_ONLY_PYTHON_LIMITED_API + +ifdef VBOX_PYTHON33_INC +# +# Python 3.3 version +# +DLLS += VBoxPython3_3 +VBoxPython3_3_EXTENDS = VBoxPythonBase +VBoxPython3_3_EXTENDS_BY = appending +VBoxPython3_3_TEMPLATE = XPCOM +VBoxPython3_3_INCS = $(VBOX_PYTHON33_INC) +VBoxPython3_3_LIBS = $(VBOX_PYTHON33_LIB) + + ifdef VBOX_WITH_32_ON_64_MAIN_API + ifdef VBOX_PYTHON33_LIB_X86 +DLLS += VBoxPython3_3_x86 +VBoxPython3_3_x86_EXTENDS = VBoxPythonBase_x86 +VBoxPython3_3_x86_EXTENDS_BY = appending +VBoxPython3_3_x86_TEMPLATE = XPCOM +VBoxPython3_3_x86_INCS = $(VBOX_PYTHON33_INC) +VBoxPython3_3_x86_LIBS = $(VBOX_PYTHON33_LIB_X86) + endif + endif +endif + +ifdef VBOX_PYTHON33M_INC +# +# Python 3.3 version with pymalloc +# +DLLS += VBoxPython3_3m +VBoxPython3_3m_EXTENDS = VBoxPythonBase_m +VBoxPython3_3m_EXTENDS_BY = appending +VBoxPython3_3m_TEMPLATE = XPCOM +VBoxPython3_3m_INCS = $(VBOX_PYTHON33M_INC) +VBoxPython3_3m_LIBS = $(VBOX_PYTHON33M_LIB) + + ifdef VBOX_WITH_32_ON_64_MAIN_API + ifdef VBOX_PYTHON33M_LIB_X86 +DLLS += VBoxPython3_3m_x86 +VBoxPython3_3m_x86_EXTENDS = VBoxPythonBase_x86_m +VBoxPython3_3m_x86_EXTENDS_BY = appending +VBoxPython3_3m_x86_TEMPLATE = XPCOM +VBoxPython3_3m_x86_INCS = $(VBOX_PYTHON33M_INC) +VBoxPython3_3m_x86_LIBS = $(VBOX_PYTHON33M_LIB_X86) + endif + endif +endif + +ifdef VBOX_PYTHON34_INC +# +# Python 3.4 version +# +DLLS += VBoxPython3_4 +VBoxPython3_4_EXTENDS = VBoxPythonBase +VBoxPython3_4_EXTENDS_BY = appending +VBoxPython3_4_TEMPLATE = XPCOM +VBoxPython3_4_INCS = $(VBOX_PYTHON34_INC) +VBoxPython3_4_LIBS = $(VBOX_PYTHON34_LIB) + + ifdef VBOX_WITH_32_ON_64_MAIN_API + ifdef VBOX_PYTHON34_LIB_X86 +DLLS += VBoxPython3_4_x86 +VBoxPython3_4_x86_EXTENDS = VBoxPythonBase_x86 +VBoxPython3_4_x86_EXTENDS_BY = appending +VBoxPython3_4_x86_TEMPLATE = XPCOM +VBoxPython3_4_x86_INCS = $(VBOX_PYTHON34_INC) +VBoxPython3_4_x86_LIBS = $(VBOX_PYTHON34_LIB_X86) + endif + endif +endif + +ifdef VBOX_PYTHON34M_INC +# +# Python 3.4 version with pymalloc +# +DLLS += VBoxPython3_4m +VBoxPython3_4m_EXTENDS = VBoxPythonBase_m +VBoxPython3_4m_EXTENDS_BY = appending +VBoxPython3_4m_TEMPLATE = XPCOM +VBoxPython3_4m_INCS = $(VBOX_PYTHON34M_INC) +VBoxPython3_4m_LIBS = $(VBOX_PYTHON34M_LIB) + + ifdef VBOX_WITH_32_ON_64_MAIN_API + ifdef VBOX_PYTHON34M_LIB_X86 +DLLS += VBoxPython3_4m_x86 +VBoxPython3_4m_x86_EXTENDS = VBoxPythonBase_x86_m +VBoxPython3_4m_x86_EXTENDS_BY = appending +VBoxPython3_4m_x86_TEMPLATE = XPCOM +VBoxPython3_4m_x86_INCS = $(VBOX_PYTHON34M_INC) +VBoxPython3_4m_x86_LIBS = $(VBOX_PYTHON34M_LIB_X86) + endif + endif +endif + +ifdef VBOX_PYTHON35_INC +# +# Python 3.5 version +# +DLLS += VBoxPython3_5 +VBoxPython3_5_EXTENDS = VBoxPythonBase +VBoxPython3_5_EXTENDS_BY = appending +VBoxPython3_5_TEMPLATE = XPCOM +VBoxPython3_5_INCS = $(VBOX_PYTHON35_INC) +VBoxPython3_5_LIBS = $(VBOX_PYTHON35_LIB) + + ifdef VBOX_WITH_32_ON_64_MAIN_API + ifdef VBOX_PYTHON35_LIB_X86 +DLLS += VBoxPython3_5_x86 +VBoxPython3_5_x86_EXTENDS = VBoxPythonBase_x86 +VBoxPython3_5_x86_EXTENDS_BY = appending +VBoxPython3_5_x86_TEMPLATE = XPCOM +VBoxPython3_5_x86_INCS = $(VBOX_PYTHON35_INC) +VBoxPython3_5_x86_LIBS = $(VBOX_PYTHON35_LIB_X86) + endif + endif +endif + +ifdef VBOX_PYTHON35M_INC +# +# Python 3.5 version with pymalloc +# +DLLS += VBoxPython3_5m +VBoxPython3_5m_EXTENDS = VBoxPythonBase_m +VBoxPython3_5m_EXTENDS_BY = appending +VBoxPython3_5m_TEMPLATE = XPCOM +VBoxPython3_5m_INCS = $(VBOX_PYTHON35M_INC) +VBoxPython3_5m_LIBS = $(VBOX_PYTHON35M_LIB) + + ifdef VBOX_WITH_32_ON_64_MAIN_API + ifdef VBOX_PYTHON35M_LIB_X86 +DLLS += VBoxPython3_5m_x86 +VBoxPython3_5m_x86_EXTENDS = VBoxPythonBase_x86_m +VBoxPython3_5m_x86_EXTENDS_BY = appending +VBoxPython3_5m_x86_TEMPLATE = XPCOM +VBoxPython3_5m_x86_INCS = $(VBOX_PYTHON35M_INC) +VBoxPython3_5m_x86_LIBS = $(VBOX_PYTHON35M_LIB_X86) + endif + endif +endif + +ifdef VBOX_PYTHON36_INC +# +# Python 3.6 version +# +DLLS += VBoxPython3_6 +VBoxPython3_6_EXTENDS = VBoxPythonBase +VBoxPython3_6_EXTENDS_BY = appending +VBoxPython3_6_TEMPLATE = XPCOM +VBoxPython3_6_INCS = $(VBOX_PYTHON36_INC) +VBoxPython3_6_LIBS = $(VBOX_PYTHON36_LIB) + + ifdef VBOX_WITH_32_ON_64_MAIN_API + ifdef VBOX_PYTHON36_LIB_X86 +DLLS += VBoxPython3_6_x86 +VBoxPython3_6_x86_EXTENDS = VBoxPythonBase_x86 +VBoxPython3_6_x86_EXTENDS_BY = appending +VBoxPython3_6_x86_TEMPLATE = XPCOM +VBoxPython3_6_x86_INCS = $(VBOX_PYTHON36_INC) +VBoxPython3_6_x86_LIBS = $(VBOX_PYTHON36_LIB_X86) + endif + endif +endif + +ifdef VBOX_PYTHON36M_INC +# +# Python 3.6 version with pymalloc +# +DLLS += VBoxPython3_6m +VBoxPython3_6m_EXTENDS = VBoxPythonBase_m +VBoxPython3_6m_EXTENDS_BY = appending +VBoxPython3_6m_TEMPLATE = XPCOM +VBoxPython3_6m_INCS = $(VBOX_PYTHON36M_INC) +VBoxPython3_6m_LIBS = $(VBOX_PYTHON36M_LIB) + + ifdef VBOX_WITH_32_ON_64_MAIN_API + ifdef VBOX_PYTHON36M_LIB_X86 +DLLS += VBoxPython3_6m_x86 +VBoxPython3_6m_x86_EXTENDS = VBoxPythonBase_x86_m +VBoxPython3_6m_x86_EXTENDS_BY = appending +VBoxPython3_6m_x86_TEMPLATE = XPCOM +VBoxPython3_6m_x86_INCS = $(VBOX_PYTHON36M_INC) +VBoxPython3_6m_x86_LIBS = $(VBOX_PYTHON36M_LIB_X86) + endif + endif +endif + +ifdef VBOX_PYTHON37_INC +# +# Python 3.7 version +# +DLLS += VBoxPython3_7 +VBoxPython3_7_EXTENDS = VBoxPythonBase +VBoxPython3_7_EXTENDS_BY = appending +VBoxPython3_7_TEMPLATE = XPCOM +VBoxPython3_7_INCS = $(VBOX_PYTHON37_INC) +VBoxPython3_7_LIBS = $(VBOX_PYTHON37_LIB) + + ifdef VBOX_WITH_32_ON_64_MAIN_API + ifdef VBOX_PYTHON37_LIB_X86 +DLLS += VBoxPython3_7_x86 +VBoxPython3_7_x86_EXTENDS = VBoxPythonBase_x86 +VBoxPython3_7_x86_EXTENDS_BY = appending +VBoxPython3_7_x86_TEMPLATE = XPCOM +VBoxPython3_7_x86_INCS = $(VBOX_PYTHON37_INC) +VBoxPython3_7_x86_LIBS = $(VBOX_PYTHON37_LIB_X86) + endif + endif +endif + +ifdef VBOX_PYTHON37M_INC +# +# Python 3.7 version with pymalloc +# +DLLS += VBoxPython3_7m +VBoxPython3_7m_EXTENDS = VBoxPythonBase_m +VBoxPython3_7m_EXTENDS_BY = appending +VBoxPython3_7m_TEMPLATE = XPCOM +VBoxPython3_7m_INCS = $(VBOX_PYTHON37M_INC) +VBoxPython3_7m_LIBS = $(VBOX_PYTHON37M_LIB) + + ifdef VBOX_WITH_32_ON_64_MAIN_API + ifdef VBOX_PYTHON37M_LIB_X86 +DLLS += VBoxPython3_7m_x86 +VBoxPython3_7m_x86_EXTENDS = VBoxPythonBase_x86_m +VBoxPython3_7m_x86_EXTENDS_BY = appending +VBoxPython3_7m_x86_TEMPLATE_ = XPCOM +VBoxPython3_7m_x86_INCS = $(VBOX_PYTHON37M_INC) +VBoxPython3_7m_x86_LIBS = $(VBOX_PYTHON37M_LIB_X86) + endif + endif +endif + +ifdef VBOX_PYTHON38_INC +# +# Python 3.8 version +# +DLLS += VBoxPython3_8 +VBoxPython3_8_EXTENDS = VBoxPythonBase +VBoxPython3_8_EXTENDS_BY = appending +VBoxPython3_8_TEMPLATE = XPCOM +VBoxPython3_8_INCS = $(VBOX_PYTHON38_INC) +VBoxPython3_8_LIBS = $(VBOX_PYTHON38_LIB) + + ifdef VBOX_WITH_32_ON_64_MAIN_API + ifdef VBOX_PYTHON38_LIB_X86 +DLLS += VBoxPython3_8_x86 +VBoxPython3_8_x86_EXTENDS = VBoxPythonBase_x86 +VBoxPython3_8_x86_EXTENDS_BY = appending +VBoxPython3_8_x86_TEMPLATE = XPCOM +VBoxPython3_8_x86_INCS = $(VBOX_PYTHON38_INC) +VBoxPython3_8_x86_LIBS = $(VBOX_PYTHON38_LIB_X86) + endif + endif +endif + +ifdef VBOX_PYTHON38M_INC +# +# Python 3.8 version with pymalloc +# +DLLS += VBoxPython3_8m +VBoxPython3_8m_EXTENDS = VBoxPythonBase_m +VBoxPython3_8m_EXTENDS_BY = appending +VBoxPython3_8m_TEMPLATE = XPCOM +VBoxPython3_8m_INCS = $(VBOX_PYTHON38M_INC) +VBoxPython3_8m_LIBS = $(VBOX_PYTHON38M_LIB) + + ifdef VBOX_WITH_32_ON_64_MAIN_API + ifdef VBOX_PYTHON38M_LIB_X86 +DLLS += VBoxPython3_8m_x86 +VBoxPython3_8m_x86_EXTENDS = VBoxPythonBase_x86_m +VBoxPython3_8m_x86_EXTENDS_BY = appending +VBoxPython3_8m_x86_TEMPLATE_ = XPCOM +VBoxPython3_8m_x86_INCS = $(VBOX_PYTHON38M_INC) +VBoxPython3_8m_x86_LIBS = $(VBOX_PYTHON38M_LIB_X86) + endif + endif +endif + +ifdef VBOX_PYTHON39_INC +# +# Python 3.9 version +# +DLLS += VBoxPython3_9 +VBoxPython3_9_EXTENDS = VBoxPythonBase +VBoxPython3_9_EXTENDS_BY = appending +VBoxPython3_9_TEMPLATE = XPCOM +VBoxPython3_9_INCS = $(VBOX_PYTHON39_INC) +VBoxPython3_9_LIBS = $(VBOX_PYTHON39_LIB) + + ifdef VBOX_WITH_32_ON_64_MAIN_API + ifdef VBOX_PYTHON39_LIB_X86 +DLLS += VBoxPython3_9_x86 +VBoxPython3_9_x86_EXTENDS = VBoxPythonBase_x86 +VBoxPython3_9_x86_EXTENDS_BY = appending +VBoxPython3_9_x86_TEMPLATE = XPCOM +VBoxPython3_9_x86_INCS = $(VBOX_PYTHON39_INC) +VBoxPython3_9_x86_LIBS = $(VBOX_PYTHON39_LIB_X86) + endif + endif +endif + +ifdef VBOX_PYTHON39M_INC +# +# Python 3.9 version with pymalloc +# +DLLS += VBoxPython3_9m +VBoxPython3_9m_EXTENDS = VBoxPythonBase_m +VBoxPython3_9m_EXTENDS_BY = appending +VBoxPython3_9m_TEMPLATE = XPCOM +VBoxPython3_9m_INCS = $(VBOX_PYTHON39M_INC) +VBoxPython3_9m_LIBS = $(VBOX_PYTHON39M_LIB) + + ifdef VBOX_WITH_32_ON_64_MAIN_API + ifdef VBOX_PYTHON39M_LIB_X86 +DLLS += VBoxPython3_9m_x86 +VBoxPython3_9m_x86_EXTENDS = VBoxPythonBase_x86_m +VBoxPython3_9m_x86_EXTENDS_BY = appending +VBoxPython3_9m_x86_TEMPLATE_ = XPCOM +VBoxPython3_9m_x86_INCS = $(VBOX_PYTHON39M_INC) +VBoxPython3_9m_x86_LIBS = $(VBOX_PYTHON39M_LIB_X86) + endif + endif +endif + +ifdef VBOX_PYTHON310_INC +# +# Python 3.10 version +# +DLLS += VBoxPython3_10 +VBoxPython3_10_EXTENDS = VBoxPythonBase +VBoxPython3_10_EXTENDS_BY = appending +VBoxPython3_10_TEMPLATE = XPCOM +VBoxPython3_10_INCS = $(VBOX_PYTHON310_INC) +VBoxPython3_10_LIBS = $(VBOX_PYTHON310_LIB) + + ifdef VBOX_WITH_32_ON_64_MAIN_API + ifdef VBOX_PYTHON310_LIB_X86 +DLLS += VBoxPython3_10_x86 +VBoxPython3_10_x86_EXTENDS = VBoxPythonBase_x86 +VBoxPython3_10_x86_EXTENDS_BY = appending +VBoxPython3_10_x86_TEMPLATE = XPCOM +VBoxPython3_10_x86_INCS = $(VBOX_PYTHON310_INC) +VBoxPython3_10_x86_LIBS = $(VBOX_PYTHON310_LIB_X86) + endif + endif +endif + +ifdef VBOX_PYTHON310M_INC +# +# Python 3.10 version with pymalloc +# +DLLS += VBoxPython3_10m +VBoxPython3_10m_EXTENDS = VBoxPythonBase_m +VBoxPython3_10m_EXTENDS_BY = appending +VBoxPython3_10m_TEMPLATE = XPCOM +VBoxPython3_10m_INCS = $(VBOX_PYTHON310M_INC) +VBoxPython3_10m_LIBS = $(VBOX_PYTHON310M_LIB) + + ifdef VBOX_WITH_32_ON_64_MAIN_API + ifdef VBOX_PYTHON310M_LIB_X86 +DLLS += VBoxPython3_10m_x86 +VBoxPython3_10m_x86_EXTENDS = VBoxPythonBase_x86_m +VBoxPython3_10m_x86_EXTENDS_BY = appending +VBoxPython3_10m_x86_TEMPLATE_ = XPCOM +VBoxPython3_10m_x86_INCS = $(VBOX_PYTHON310M_INC) +VBoxPython3_10m_x86_LIBS = $(VBOX_PYTHON310M_LIB_X86) + endif + 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 + ifdef VBOX_PYTHONDEF_LIB_X86 +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 + + endif # !VBOX_WITH_ONLY_PYTHON_LIMITED_API + + ifndef VBOX_WITHOUT_PYTHON_LIMITED_API +# +# If there is python 3.3 or later present, we can build a generic +# 3.x extension. Since 3.3 and 3.4 are rather old, we will pick +# those headers last. +# +# Note! No library dependencies are needed here (at least that's +# how the xxlimited.so demo extension is done on linux and darwin). +# Note! The 'm' ABI suffix was discontinued in 3.8. +# TODO: ASSUMING that we don't need a different headers for pymalloc +# ('m' builds < 3.8) and CRT malloc. +# +VBOX_PYTHON_LIMITED_API_VER := $(firstword $(foreach ver, 35 36 38 39 310 34 33 \ +,$(if-expr defined(VBOX_PYTHON$(ver)_INC),$(ver),)$(if-expr defined(VBOX_PYTHON$(ver)M_INC),$(ver)M,))) + ifneq ($(VBOX_PYTHON_LIMITED_API_VER),) +DLLS += VBoxPython3 +VBoxPython3_EXTENDS = VBoxPythonBase +VBoxPython3_DEFS = $(filter-out VBOX_PYXPCOM_VERSIONED,$(VBoxPythonBase_DEFS)) Py_LIMITED_API=0x03030000 +VBoxPython3_INCS = $(VBoxPythonBase_INCS) $(VBOX_PYTHON$(VBOX_PYTHON_LIMITED_API_VER)_INC) + +DLLS += VBoxPython3m +VBoxPython3m_EXTENDS = VBoxPythonBase_m +VBoxPython3m_DEFS = $(filter-out VBOX_PYXPCOM_VERSIONED,$(VBoxPythonBase_m_DEFS)) Py_LIMITED_API=0x03030000 +VBoxPython3m_INCS = $(VBoxPythonBase_m_INCS) $(VBOX_PYTHON$(VBOX_PYTHON_LIMITED_API_VER)_INC) + endif + endif # VBOX_WITH_PYTHON_LIMITED_API + +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) |