VirtualBox

source: vbox/trunk/src/libs/xpcom18a4/python/Makefile.kmk@ 59769

Last change on this file since 59769 was 59769, checked in by vboxsync, 9 years ago

PyXPCOM: port to make it compatible with Python 3 (minimum supported version is 2.6 like for all other Python files now)
Frontends/VBoxShell, Installer/common/vboxapisetup.py, Main/glue/vboxapi.py, Main/webservice/websrv-python.xsl: make it compatible with Python 3

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 9.3 KB
Line 
1# $Id: Makefile.kmk 59769 2016-02-22 12:14:21Z vboxsync $
2## @file
3# Sub-Makefile for Python bindings
4#
5
6#
7# Copyright (C) 2009-2016 Oracle Corporation
8#
9# This file is part of VirtualBox Open Source Edition (OSE), as
10# available from http://www.virtualbox.org. This file is free software;
11# you can redistribute it and/or modify it under the terms of the GNU
12# General Public License (GPL) as published by the Free Software
13# Foundation, in version 2 as it comes in the "COPYING" file of the
14# VirtualBox OSE distribution. VirtualBox OSE is distributed in the
15# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
16#
17
18SUB_DEPTH = ../../../..
19include $(KBUILD_PATH)/subheader.kmk
20
21ifdef VBOX_WITH_MULTIVERSION_PYTHON
22 VBOX_MULTIPYTHON = 1
23else
24 VBOX_MULTIPYTHON = 0
25endif
26
27#
28# List of supported Python versions, defining a number of
29# VBOX_PYTHON[26|27|31|32|33|34|35|DEF]_[INC|LIB] variables
30# which get picked up below.
31#
32ifeq ($(KBUILD_TARGET),darwin) # Relatively predictable, don't script.
33 if !defined(VBOX_WITHOUT_VBOXPYTHON_FOR_OSX_10_6) \
34 && ( !defined(VBOX_OSE) \
35 || "$(wildcard $(VBOX_PATH_MACOSX_SDK_10_6)/usr/lib/libpython2.6.dylib)" != "")
36 VBOX_PYTHON26_INC = $(VBOX_PATH_MACOSX_SDK_10_6)/usr/include/python2.6
37 VBOX_PYTHON26_LIB = $(VBOX_PATH_MACOSX_SDK_10_6)/usr/lib/libpython2.6.dylib
38 VBOX_PYTHON26_LIB_X86 = $(VBOX_PYTHON26_LIB)
39 endif
40 if !defined(VBOX_WITHOUT_VBOXPYTHON_FOR_OSX_10_7) \
41 && ( defined(VBOX_NOT_OSE_LATER_SOMETIME) \
42 || "$(wildcard $(VBOX_PATH_MACOSX_SDK_10_7)/usr/lib/libpython2.7.dylib)" != "")
43 VBOX_PYTHON27_INC = $(VBOX_PATH_MACOSX_SDK_10_7)/usr/include/python2.7
44 VBOX_PYTHON27_LIB = $(VBOX_PATH_MACOSX_SDK_10_7)/usr/lib/libpython2.7.dylib
45 VBOX_PYTHON27_LIB_X86 = $(VBOX_PYTHON27_LIB)
46 endif
47 # No Python 3.x yet as part of OSX versions including El Capitan, 10.11.
48
49else
50 # Use the script.
51 $(eval $(subst |,$(NL),$(shell $(VBOX_BLD_PYTHON) \
52 $(PATH_SUB_CURRENT)/gen_python_deps.py \
53 $(KBUILD_TARGET) \
54 $(KBUILD_TARGET_ARCH) \
55 $(VBOX_MULTIPYTHON) )))
56endif
57
58ifndef VBOX_ONLY_SDK
59
60#
61# Base Python Client Module - the C++/XPCOM bits (not actually built).
62#
63VBoxPythonBase_TEMPLATE = XPCOM
64VBoxPythonBase_CXXFLAGS = -Wno-write-strings
65VBoxPythonBase_DLLSUFF.darwin = .so
66VBoxPythonBase_DEFS = \
67 _IMPL_NS_COM \
68 _IMPL_NS_BASE \
69 EXPORT_XPTI_API \
70 EXPORT_XPT_API \
71 VBOX_PYXPCOM \
72 VBOX_WITH_XPCOM \
73 VBOX_PYXPCOM_VERSIONED
74#VBoxPythonBase_DEFS.debug = \
75# VBOX_DEBUG_LIFETIMES
76VBoxPythonBase_INCS = \
77 src
78VBoxPythonBase_SOURCES = \
79 src/module/_xpcom.cpp \
80 src/dllmain.cpp \
81 src/ErrorUtils.cpp \
82 src/PyGBase.cpp \
83 src/PyGInputStream.cpp \
84 src/PyGModule.cpp \
85 src/PyGStub.cpp \
86 src/PyGWeakReference.cpp \
87 src/PyIClassInfo.cpp \
88 src/PyIComponentManager.cpp \
89 src/PyIComponentManagerObsolete.cpp \
90 src/PyIEnumerator.cpp \
91 src/PyIID.cpp \
92 src/PyIInputStream.cpp \
93 src/PyIInterfaceInfo.cpp \
94 src/PyIInterfaceInfoManager.cpp \
95 src/PyISimpleEnumerator.cpp \
96 src/PyISupports.cpp \
97 src/PyIVariant.cpp \
98 src/Pyxpt_info.cpp \
99 src/TypeObject.cpp \
100 src/VariantUtils.cpp
101VBoxPythonBase_LIBS = \
102 $(PATH_STAGE_LIB)/VBoxCOM$(VBOX_SUFF_LIB) \
103 $(PATH_STAGE_BIN)/VBoxXPCOM$(VBOX_SUFF_DLL)
104
105# 32-bit base.
106VBoxPythonBase_x86_TEMPLATE = XPCOM-x86
107VBoxPythonBase_x86_EXTENDS = VBoxPythonBase
108VBoxPythonBase_x86_DEFS = MODULE_NAME_SUFFIX=_x86 $(VBoxPythonBase_DEFS)
109VBoxPythonBase_x86_LIBS = \
110 $(PATH_STAGE_LIB)/VBoxCOM-x86$(VBOX_SUFF_LIB) \
111 $(PATH_STAGE_BIN)/VBoxXPCOM-x86$(VBOX_SUFF_DLL)
112
113
114ifdef VBOX_PYTHON26_INC
115#
116# Python 2.6 version
117#
118DLLS += VBoxPython2_6
119VBoxPython2_6_EXTENDS = VBoxPythonBase
120VBoxPython2_6_EXTENDS_BY = appending
121VBoxPython2_6_TEMPLATE = XPCOM$(if-expr "$(KBUILD_TARGET)" == "darwin" && "$(VBOX_DEF_MACOSX_VERSION_MIN)" <= "10.6",OSX106,)
122VBoxPython2_6_INCS = $(VBOX_PYTHON26_INC)
123VBoxPython2_6_LIBS = $(VBOX_PYTHON26_LIB)
124
125 ifdef VBOX_WITH_32_ON_64_MAIN_API
126DLLS += VBoxPython2_6_x86
127VBoxPython2_6_x86_EXTENDS = VBoxPythonBase_x86
128VBoxPython2_6_x86_EXTENDS_BY = appending
129VBoxPython2_6_x86_TEMPLATE = XPCOM$(if-expr "$(KBUILD_TARGET)" == "darwin" && "$(VBOX_DEF_MACOSX_VERSION_MIN)" <= "10.6",OSX106,-x86)
130VBoxPython2_6_x86_INCS = $(VBOX_PYTHON26_INC)
131VBoxPython2_6_x86_LIBS = $(VBOX_PYTHON26_LIB_X86)
132 endif
133endif
134
135ifdef VBOX_PYTHON27_INC
136#
137# Python 2.7 version
138#
139DLLS += VBoxPython2_7
140VBoxPython2_7_EXTENDS = VBoxPythonBase
141VBoxPython2_7_EXTENDS_BY = appending
142VBoxPython2_7_TEMPLATE = XPCOM$(if-expr "$(KBUILD_TARGET)" == "darwin" && "$(VBOX_DEF_MACOSX_VERSION_MIN)" <= "10.7",OSX107,)
143VBoxPython2_7_INCS = $(VBOX_PYTHON27_INC)
144VBoxPython2_7_LIBS = $(VBOX_PYTHON27_LIB)
145
146 ifdef VBOX_WITH_32_ON_64_MAIN_API
147DLLS += VBoxPython2_7_x86
148VBoxPython2_7_x86_EXTENDS = VBoxPythonBase_x86
149VBoxPython2_7_x86_EXTENDS_BY = appending
150VBoxPython2_7_x86_TEMPLATE = XPCOM$(if-expr "$(KBUILD_TARGET)" == "darwin" && "$(VBOX_DEF_MACOSX_VERSION_MIN)" <= "10.7",OSX107,-x86)
151VBoxPython2_7_x86_INCS = $(VBOX_PYTHON27_INC)
152VBoxPython2_7_x86_LIBS = $(VBOX_PYTHON27_LIB_X86)
153 endif
154endif
155
156ifdef VBOX_PYTHON31_INC
157#
158# Python 3.1 version
159#
160DLLS += VBoxPython3_1
161VBoxPython3_1_EXTENDS = VBoxPythonBase
162VBoxPython3_1_EXTENDS_BY = appending
163VBoxPython3_1_TEMPLATE = XPCOM
164VBoxPython3_1_INCS = $(VBOX_PYTHON31_INC)
165VBoxPython3_1_LIBS = $(VBOX_PYTHON31_LIB)
166
167 ifdef VBOX_WITH_32_ON_64_MAIN_API
168DLLS += VBoxPython3_1_x86
169VBoxPython3_1_x86_EXTENDS = VBoxPythonBase_x86
170VBoxPython3_1_x86_EXTENDS_BY = appending
171VBoxPython3_1_x86_TEMPLATE = XPCOM
172VBoxPython3_1_x86_INCS = $(VBOX_PYTHON31_INC)
173VBoxPython3_1_x86_LIBS = $(VBOX_PYTHON31_LIB_X86)
174 endif
175endif
176
177ifdef VBOX_PYTHON32_INC
178#
179# Python 3.2 version
180#
181DLLS += VBoxPython3_2
182VBoxPython3_2_EXTENDS = VBoxPythonBase
183VBoxPython3_2_EXTENDS_BY = appending
184VBoxPython3_2_TEMPLATE = XPCOM
185VBoxPython3_2_INCS = $(VBOX_PYTHON32_INC)
186VBoxPython3_2_LIBS = $(VBOX_PYTHON32_LIB)
187
188 ifdef VBOX_WITH_32_ON_64_MAIN_API
189DLLS += VBoxPython3_2_x86
190VBoxPython3_2_x86_EXTENDS = VBoxPythonBase_x86
191VBoxPython3_2_x86_EXTENDS_BY = appending
192VBoxPython3_2_x86_TEMPLATE = XPCOM
193VBoxPython3_2_x86_INCS = $(VBOX_PYTHON32_INC)
194VBoxPython3_2_x86_LIBS = $(VBOX_PYTHON32_LIB_X86)
195 endif
196endif
197
198ifdef VBOX_PYTHON33_INC
199#
200# Python 3.3 version
201#
202DLLS += VBoxPython3_3
203VBoxPython3_3_EXTENDS = VBoxPythonBase
204VBoxPython3_3_EXTENDS_BY = appending
205VBoxPython3_3_TEMPLATE = XPCOM
206VBoxPython3_3_INCS = $(VBOX_PYTHON33_INC)
207VBoxPython3_3_LIBS = $(VBOX_PYTHON33_LIB)
208
209 ifdef VBOX_WITH_32_ON_64_MAIN_API
210DLLS += VBoxPython3_3_x86
211VBoxPython3_3_x86_EXTENDS = VBoxPythonBase_x86
212VBoxPython3_3_x86_EXTENDS_BY = appending
213VBoxPython3_3_x86_TEMPLATE = XPCOM
214VBoxPython3_3_x86_INCS = $(VBOX_PYTHON33_INC)
215VBoxPython3_3_x86_LIBS = $(VBOX_PYTHON33_LIB_X86)
216 endif
217endif
218
219ifdef VBOX_PYTHON34_INC
220#
221# Python 3.4 version
222#
223DLLS += VBoxPython3_4
224VBoxPython3_4_EXTENDS = VBoxPythonBase
225VBoxPython3_4_EXTENDS_BY = appending
226VBoxPython3_4_TEMPLATE = XPCOM
227VBoxPython3_4_INCS = $(VBOX_PYTHON34_INC)
228VBoxPython3_4_LIBS = $(VBOX_PYTHON34_LIB)
229
230 ifdef VBOX_WITH_32_ON_64_MAIN_API
231DLLS += VBoxPython3_4_x86
232VBoxPython3_4_x86_EXTENDS = VBoxPythonBase_x86
233VBoxPython3_4_x86_EXTENDS_BY = appending
234VBoxPython3_4_x86_TEMPLATE = XPCOM
235VBoxPython3_4_x86_INCS = $(VBOX_PYTHON34_INC)
236VBoxPython3_4_x86_LIBS = $(VBOX_PYTHON34_LIB_X86)
237 endif
238endif
239
240ifdef VBOX_PYTHON35_INC
241#
242# Python 3.5 version
243#
244DLLS += VBoxPython3_5
245VBoxPython3_5_EXTENDS = VBoxPythonBase
246VBoxPython3_5_EXTENDS_BY = appending
247VBoxPython3_5_TEMPLATE = XPCOM
248VBoxPython3_5_INCS = $(VBOX_PYTHON35_INC)
249VBoxPython3_5_LIBS = $(VBOX_PYTHON35_LIB)
250
251 ifdef VBOX_WITH_32_ON_64_MAIN_API
252DLLS += VBoxPython3_5_x86
253VBoxPython3_5_x86_EXTENDS = VBoxPythonBase_x86
254VBoxPython3_5_x86_EXTENDS_BY = appending
255VBoxPython3_5_x86_TEMPLATE = XPCOM
256VBoxPython3_5_x86_INCS = $(VBOX_PYTHON35_INC)
257VBoxPython3_5_x86_LIBS = $(VBOX_PYTHON35_LIB_X86)
258 endif
259endif
260
261ifdef VBOX_PYTHONDEF_INC
262#
263# Python without versioning
264#
265DLLS += VBoxPython
266VBoxPython_EXTENDS = VBoxPythonBase
267VBoxPython_DEFS = $(filter-out VBOX_PYXPCOM_VERSIONED,$(VBoxPythonBase_DEFS))
268VBoxPython_INCS = $(VBoxPythonBase_INCS) $(VBOX_PYTHONDEF_INC)
269if "$(KBUILD_TARGET)" == "linux"
270 VBoxPython_LIBS = $(VBoxPythonBase_LIBS)
271else
272 VBoxPython_LIBS = $(VBoxPythonBase_LIBS) $(VBOX_PYTHONDEF_LIB)
273endif
274
275 ifdef VBOX_WITH_32_ON_64_MAIN_API
276VBoxPython_x86_EXTENDS = VBoxPythonBase_x86
277VBoxPython_x86_DEFS = $(filter-out VBOX_PYXPCOM_VERSIONED,$(VBoxPythonBase_x86_DEFS))
278VBoxPython_x86_INCS = $(VBoxPythonBase_x86_INCS) $(VBOX_PYTHONDEF_INC)
279if "$(KBUILD_TARGET)" == "linux"
280 VBoxPython_x86_LIBS = $(VBoxPythonBase_x86_LIBS)
281else
282 VBoxPython_x86_LIBS = $(VBoxPythonBase_x86_LIBS) $(VBOX_PYTHONDEF_LIB_X86)
283endif
284 endif
285endif
286
287endif # VBOX_ONLY_SDK
288
289#
290# Install the python modules.
291#
292INSTALLS += VBoxPython-inst-py-xpcom
293VBoxPython-inst-py-xpcom_INST = $(INST_SDK)bindings/xpcom/python/xpcom/
294VBoxPython-inst-py-xpcom_MODE = a+r,u+w
295VBoxPython-inst-py-xpcom_SOURCES = \
296 vboxxpcom.py \
297 components.py \
298 file.py \
299 __init__.py \
300 nsError.py \
301 primitives.py \
302 xpcom_consts.py \
303 xpt.py \
304 client/__init__.py=>client/__init__.py \
305 server/__init__.py=>server/__init__.py \
306 server/enumerator.py=>server/enumerator.py \
307 server/factory.py=>server/factory.py \
308 server/loader.py=>server/loader.py \
309 server/module.py=>server/module.py \
310 server/policy.py=>server/policy.py
311
312
313include $(FILE_KBUILD_SUB_FOOTER)
314
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette