Add Python 3.11 support to virtualbox 6.1 --- a/src/libs/xpcom18a4/python/Makefile.kmk +++ b/src/libs/xpcom18a4/python/Makefile.kmk @@ -26,7 +26,7 @@ # # 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 +# VBOX_PYTHON[26|27|31|32|32M|33|33M|34|34M|35|35M|36|36M|37|37M|38|38M|39|39M|310|310M|311|311M|DEF]_[INC|LIB] variables # which get picked up below. # ifeq ($(KBUILD_TARGET),darwin) # Relatively predictable, don't script. @@ -624,6 +624,52 @@ endif endif endif + +ifdef VBOX_PYTHON311_INC +# +# Python 3.11 version +# +DLLS += VBoxPython3_11 +VBoxPython3_11_EXTENDS = VBoxPythonBase +VBoxPython3_11_EXTENDS_BY = appending +VBoxPython3_11_TEMPLATE = XPCOM +VBoxPython3_11_INCS = $(VBOX_PYTHON311_INC) +VBoxPython3_11_LIBS = $(VBOX_PYTHON311_LIB) + + ifdef VBOX_WITH_32_ON_64_MAIN_API + ifdef VBOX_PYTHON311_LIB_X86 +DLLS += VBoxPython3_11_x86 +VBoxPython3_11_x86_EXTENDS = VBoxPythonBase_x86 +VBoxPython3_11_x86_EXTENDS_BY = appending +VBoxPython3_11_x86_TEMPLATE = XPCOM +VBoxPython3_11_x86_INCS = $(VBOX_PYTHON311_INC) +VBoxPython3_11_x86_LIBS = $(VBOX_PYTHON311_LIB_X86) + endif + endif +endif + +ifdef VBOX_PYTHON311M_INC +# +# Python 3.11 version with pymalloc +# +DLLS += VBoxPython3_11m +VBoxPython3_11m_EXTENDS = VBoxPythonBase_m +VBoxPython3_11m_EXTENDS_BY = appending +VBoxPython3_11m_TEMPLATE = XPCOM +VBoxPython3_11m_INCS = $(VBOX_PYTHON311M_INC) +VBoxPython3_11m_LIBS = $(VBOX_PYTHON311M_LIB) + + ifdef VBOX_WITH_32_ON_64_MAIN_API + ifdef VBOX_PYTHON311M_LIB_X86 +DLLS += VBoxPython3_11m_x86 +VBoxPython3_11m_x86_EXTENDS = VBoxPythonBase_x86_m +VBoxPython3_11m_x86_EXTENDS_BY = appending +VBoxPython3_11m_x86_TEMPLATE_ = XPCOM +VBoxPython3_11m_x86_INCS = $(VBOX_PYTHON311M_INC) +VBoxPython3_11m_x86_LIBS = $(VBOX_PYTHON311M_LIB_X86) + endif + endif +endif ifdef VBOX_PYTHONDEF_INC # --- a/src/libs/xpcom18a4/python/src/module/_xpcom.cpp +++ b/src/libs/xpcom18a4/python/src/module/_xpcom.cpp @@ -84,7 +84,11 @@ # define MANGLE_MODULE_INIT(a_Name) RT_CONCAT(a_Name, MODULE_NAME_SUFFIX) # endif # ifdef VBOX_PYXPCOM_VERSIONED -# if PY_VERSION_HEX >= 0x030a0000 && PY_VERSION_HEX < 0x030b0000 +# if PY_VERSION_HEX >= 0x030b0000 && PY_VERSION_HEX < 0x030c0000 +# define MODULE_NAME MANGLE_MODULE_NAME("VBoxPython3_11") +# define initVBoxPython MANGLE_MODULE_INIT(PyInit_VBoxPython3_11) + +# elif PY_VERSION_HEX >= 0x030a0000 && PY_VERSION_HEX < 0x030b0000 # define MODULE_NAME MANGLE_MODULE_NAME("VBoxPython3_10") # define initVBoxPython MANGLE_MODULE_INIT(PyInit_VBoxPython3_10)