VirtualBox

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

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

PyXPCOM: make it aware of the apiflags part of the library name (and use it ourselves), because it gets used since Python 3.2, and most libraries these days have the "m" flag, indicating that pymalloc is enabled

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 13.6 KB
Line 
1# $Id: Makefile.kmk 63775 2016-09-09 09:54:19Z 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|32M|33|33M|34|34M|35|35M|DEF]_[INC|LIB] variables
30# which get picked up below.
31#
32ifeq ($(KBUILD_TARGET),darwin) # Relatively predictable, don't script.
33 ifndef VBOX_WITHOUT_VBOXPYTHON_FOR_OSX_10_6
34 if1of ($(VBOX_DEF_MACOSX_VERSION_MIN), 10.5 10.4)
35 VBOX_PYTHON26_INC = $(VBOX_PATH_MACOSX_SDK_10_6)/usr/include/python2.6
36 VBOX_PYTHON26_LIB = $(VBOX_PATH_MACOSX_SDK_10_6)/usr/lib/libpython2.6.dylib
37 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!!
38 VBOX_PYTHON26_INC = $(VBOX_PATH_MACOSX_SDK)/../MacOSX10.10.sdk/System/Library/Frameworks/Python.framework/Versions/2.6/Headers
39 VBOX_PYTHON26_LIB = $(VBOX_PATH_MACOSX_SDK)/../MacOSX10.10.sdk/System/Library/Frameworks/Python.framework/Versions/2.6/Python
40 else
41 VBOX_PYTHON26_INC = $(VBOX_PATH_MACOSX_SDK)/System/Library/Frameworks/Python.framework/Versions/2.6/Headers
42 VBOX_PYTHON26_LIB = $(VBOX_PATH_MACOSX_SDK)/System/Library/Frameworks/Python.framework/Versions/2.6/Python
43 endif
44 if !defined(VBOX_OSE) || "$(wildcard $(VBOX_PYTHON26_LIB))" != ""
45 VBOX_PYTHON26_LIB_X86 = $(VBOX_PYTHON26_LIB)
46 else
47 VBOX_PYTHON26_INC =
48 VBOX_PYTHON26_LIB =
49 endif
50 endif
51 ifndef VBOX_WITHOUT_VBOXPYTHON_FOR_OSX_10_7
52 if1of ($(VBOX_DEF_MACOSX_VERSION_MIN), 10.6 10.5 10.4)
53 VBOX_PYTHON27_INC = $(VBOX_PATH_MACOSX_SDK_10_7)/usr/include/python2.7
54 VBOX_PYTHON27_LIB = $(VBOX_PATH_MACOSX_SDK_10_7)/usr/lib/libpython2.7.dylib
55 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!!
56 VBOX_PYTHON27_INC = $(VBOX_PATH_MACOSX_SDK)/../MacOSX10.10.sdk/System/Library/Frameworks/Python.framework/Versions/2.7/Headers
57 VBOX_PYTHON27_LIB = $(VBOX_PATH_MACOSX_SDK)/../MacOSX10.10.sdk/System/Library/Frameworks/Python.framework/Versions/2.7/Python
58 else
59 VBOX_PYTHON27_INC = $(VBOX_PATH_MACOSX_SDK)/System/Library/Frameworks/Python.framework/Versions/2.7/Headers
60 VBOX_PYTHON27_LIB = $(VBOX_PATH_MACOSX_SDK)/System/Library/Frameworks/Python.framework/Versions/2.7/Python
61 endif
62 if !defined(VBOX_OSE) || "$(wildcard $(VBOX_PYTHON27_LIB))" != ""
63 VBOX_PYTHON27_LIB_X86 = $(VBOX_PYTHON27_LIB)
64 else
65 VBOX_PYTHON27_INC =
66 VBOX_PYTHON27_LIB =
67 endif
68 endif
69 # No Python 3.x yet as part of OSX versions including El Capitan, 10.11.
70
71else
72 # Use the script.
73 $(eval $(subst |,$(NL),$(shell $(VBOX_BLD_PYTHON) \
74 $(PATH_SUB_CURRENT)/gen_python_deps.py \
75 $(KBUILD_TARGET) \
76 $(KBUILD_TARGET_ARCH) \
77 $(VBOX_MULTIPYTHON) )))
78endif
79
80ifndef VBOX_ONLY_SDK
81
82#
83# Base Python Client Module - the C++/XPCOM bits (not actually built).
84#
85VBoxPythonBase_TEMPLATE = XPCOM
86VBoxPythonBase_CXXFLAGS = -Wno-write-strings
87VBoxPythonBase_DLLSUFF.darwin = .so
88VBoxPythonBase_DEFS = \
89 _IMPL_NS_COM \
90 _IMPL_NS_BASE \
91 EXPORT_XPTI_API \
92 EXPORT_XPT_API \
93 VBOX_PYXPCOM \
94 VBOX_WITH_XPCOM \
95 VBOX_PYXPCOM_VERSIONED
96#VBoxPythonBase_DEFS.debug = \
97# VBOX_DEBUG_LIFETIMES
98VBoxPythonBase_INCS = \
99 src
100VBoxPythonBase_SOURCES = \
101 src/module/_xpcom.cpp \
102 src/dllmain.cpp \
103 src/ErrorUtils.cpp \
104 src/PyGBase.cpp \
105 src/PyGInputStream.cpp \
106 src/PyGModule.cpp \
107 src/PyGStub.cpp \
108 src/PyGWeakReference.cpp \
109 src/PyIClassInfo.cpp \
110 src/PyIComponentManager.cpp \
111 src/PyIComponentManagerObsolete.cpp \
112 src/PyIEnumerator.cpp \
113 src/PyIID.cpp \
114 src/PyIInputStream.cpp \
115 src/PyIInterfaceInfo.cpp \
116 src/PyIInterfaceInfoManager.cpp \
117 src/PyISimpleEnumerator.cpp \
118 src/PyISupports.cpp \
119 src/PyIVariant.cpp \
120 src/Pyxpt_info.cpp \
121 src/TypeObject.cpp \
122 src/VariantUtils.cpp
123VBoxPythonBase_LIBS = \
124 $(PATH_STAGE_LIB)/VBoxCOM$(VBOX_SUFF_LIB) \
125 $(PATH_STAGE_BIN)/VBoxXPCOM$(VBOX_SUFF_DLL)
126
127# 32-bit base.
128VBoxPythonBase_x86_TEMPLATE = XPCOM-x86
129VBoxPythonBase_x86_EXTENDS = VBoxPythonBase
130VBoxPythonBase_x86_DEFS = MODULE_NAME_SUFFIX=_x86 $(VBoxPythonBase_DEFS)
131VBoxPythonBase_x86_LIBS = \
132 $(PATH_STAGE_LIB)/VBoxCOM-x86$(VBOX_SUFF_LIB) \
133 $(PATH_STAGE_BIN)/VBoxXPCOM-x86$(VBOX_SUFF_DLL)
134
135
136ifdef VBOX_PYTHON26_INC
137#
138# Python 2.6 version
139#
140DLLS += VBoxPython2_6
141VBoxPython2_6_EXTENDS = VBoxPythonBase
142VBoxPython2_6_EXTENDS_BY = appending
143VBoxPython2_6_TEMPLATE = XPCOM$(if-expr "$(KBUILD_TARGET)" == "darwin" && "$(VBOX_DEF_MACOSX_VERSION_MIN)" <= "10.6",OSX106,)
144VBoxPython2_6_INCS = $(VBOX_PYTHON26_INC)
145VBoxPython2_6_LIBS = $(VBOX_PYTHON26_LIB)
146
147 ifdef VBOX_WITH_32_ON_64_MAIN_API
148 ifdef VBOX_PYTHON26_LIB_X86
149DLLS += VBoxPython2_6_x86
150VBoxPython2_6_x86_EXTENDS = VBoxPythonBase_x86
151VBoxPython2_6_x86_EXTENDS_BY = appending
152VBoxPython2_6_x86_TEMPLATE = XPCOM$(if-expr "$(KBUILD_TARGET)" == "darwin" && "$(VBOX_DEF_MACOSX_VERSION_MIN)" <= "10.6",OSX106,-x86)
153VBoxPython2_6_x86_INCS = $(VBOX_PYTHON26_INC)
154VBoxPython2_6_x86_LIBS = $(VBOX_PYTHON26_LIB_X86)
155 endif
156 endif
157endif
158
159ifdef VBOX_PYTHON27_INC
160#
161# Python 2.7 version
162#
163DLLS += VBoxPython2_7
164VBoxPython2_7_EXTENDS = VBoxPythonBase
165VBoxPython2_7_EXTENDS_BY = appending
166VBoxPython2_7_TEMPLATE = XPCOM$(if-expr "$(KBUILD_TARGET)" == "darwin" && "$(VBOX_DEF_MACOSX_VERSION_MIN)" <= "10.7",OSX107,)
167VBoxPython2_7_INCS = $(VBOX_PYTHON27_INC)
168VBoxPython2_7_LIBS = $(VBOX_PYTHON27_LIB)
169
170 ifdef VBOX_WITH_32_ON_64_MAIN_API
171 ifdef VBOX_PYTHON27_LIB_X86
172DLLS += VBoxPython2_7_x86
173VBoxPython2_7_x86_EXTENDS = VBoxPythonBase_x86
174VBoxPython2_7_x86_EXTENDS_BY = appending
175VBoxPython2_7_x86_TEMPLATE = XPCOM$(if-expr "$(KBUILD_TARGET)" == "darwin" && "$(VBOX_DEF_MACOSX_VERSION_MIN)" <= "10.7",OSX107,-x86)
176VBoxPython2_7_x86_INCS = $(VBOX_PYTHON27_INC)
177VBoxPython2_7_x86_LIBS = $(VBOX_PYTHON27_LIB_X86)
178 endif
179 endif
180endif
181
182ifdef VBOX_PYTHON31_INC
183#
184# Python 3.1 version
185#
186DLLS += VBoxPython3_1
187VBoxPython3_1_EXTENDS = VBoxPythonBase
188VBoxPython3_1_EXTENDS_BY = appending
189VBoxPython3_1_TEMPLATE = XPCOM
190VBoxPython3_1_INCS = $(VBOX_PYTHON31_INC)
191VBoxPython3_1_LIBS = $(VBOX_PYTHON31_LIB)
192
193 ifdef VBOX_WITH_32_ON_64_MAIN_API
194 ifdef VBOX_PYTHON31_LIB_X86
195DLLS += VBoxPython3_1_x86
196VBoxPython3_1_x86_EXTENDS = VBoxPythonBase_x86
197VBoxPython3_1_x86_EXTENDS_BY = appending
198VBoxPython3_1_x86_TEMPLATE = XPCOM
199VBoxPython3_1_x86_INCS = $(VBOX_PYTHON31_INC)
200VBoxPython3_1_x86_LIBS = $(VBOX_PYTHON31_LIB_X86)
201 endif
202 endif
203endif
204
205ifdef VBOX_PYTHON32_INC
206#
207# Python 3.2 version
208#
209DLLS += VBoxPython3_2
210VBoxPython3_2_EXTENDS = VBoxPythonBase
211VBoxPython3_2_EXTENDS_BY = appending
212VBoxPython3_2_TEMPLATE = XPCOM
213VBoxPython3_2_INCS = $(VBOX_PYTHON32_INC)
214VBoxPython3_2_LIBS = $(VBOX_PYTHON32_LIB)
215
216 ifdef VBOX_WITH_32_ON_64_MAIN_API
217 ifdef VBOX_PYTHON32_LIB_X86
218DLLS += VBoxPython3_2_x86
219VBoxPython3_2_x86_EXTENDS = VBoxPythonBase_x86
220VBoxPython3_2_x86_EXTENDS_BY = appending
221VBoxPython3_2_x86_TEMPLATE = XPCOM
222VBoxPython3_2_x86_INCS = $(VBOX_PYTHON32_INC)
223VBoxPython3_2_x86_LIBS = $(VBOX_PYTHON32_LIB_X86)
224 endif
225 endif
226endif
227
228ifdef VBOX_PYTHON32M_INC
229#
230# Python 3.2 version with pymalloc
231#
232DLLS += VBoxPython3_2m
233VBoxPython3_2m_EXTENDS = VBoxPythonBase
234VBoxPython3_2m_EXTENDS_BY = appending
235VBoxPython3_2m_TEMPLATE = XPCOM
236VBoxPython3_2m_INCS = $(VBOX_PYTHON32M_INC)
237VBoxPython3_2m_LIBS = $(VBOX_PYTHON32M_LIB)
238
239 ifdef VBOX_WITH_32_ON_64_MAIN_API
240 ifdef VBOX_PYTHON32M_LIB_X86
241DLLS += VBoxPython3_2m_x86
242VBoxPython3_2m_x86_EXTENDS = VBoxPythonBase_x86
243VBoxPython3_2m_x86_EXTENDS_BY = appending
244VBoxPython3_2m_x86_TEMPLATE = XPCOM
245VBoxPython3_2m_x86_INCS = $(VBOX_PYTHON32M_INC)
246VBoxPython3_2m_x86_LIBS = $(VBOX_PYTHON32M_LIB_X86)
247 endif
248 endif
249endif
250
251ifdef VBOX_PYTHON33_INC
252#
253# Python 3.3 version
254#
255DLLS += VBoxPython3_3
256VBoxPython3_3_EXTENDS = VBoxPythonBase
257VBoxPython3_3_EXTENDS_BY = appending
258VBoxPython3_3_TEMPLATE = XPCOM
259VBoxPython3_3_INCS = $(VBOX_PYTHON33_INC)
260VBoxPython3_3_LIBS = $(VBOX_PYTHON33_LIB)
261
262 ifdef VBOX_WITH_32_ON_64_MAIN_API
263 ifdef VBOX_PYTHON33_LIB_X86
264DLLS += VBoxPython3_3_x86
265VBoxPython3_3_x86_EXTENDS = VBoxPythonBase_x86
266VBoxPython3_3_x86_EXTENDS_BY = appending
267VBoxPython3_3_x86_TEMPLATE = XPCOM
268VBoxPython3_3_x86_INCS = $(VBOX_PYTHON33_INC)
269VBoxPython3_3_x86_LIBS = $(VBOX_PYTHON33_LIB_X86)
270 endif
271 endif
272endif
273
274ifdef VBOX_PYTHON33M_INC
275#
276# Python 3.3 version with pymalloc
277#
278DLLS += VBoxPython3_3m
279VBoxPython3_3m_EXTENDS = VBoxPythonBase
280VBoxPython3_3m_EXTENDS_BY = appending
281VBoxPython3_3m_TEMPLATE = XPCOM
282VBoxPython3_3m_INCS = $(VBOX_PYTHON33M_INC)
283VBoxPython3_3m_LIBS = $(VBOX_PYTHON33M_LIB)
284
285 ifdef VBOX_WITH_32_ON_64_MAIN_API
286 ifdef VBOX_PYTHON33M_LIB_X86
287DLLS += VBoxPython3_3m_x86
288VBoxPython3_3m_x86_EXTENDS = VBoxPythonBase_x86
289VBoxPython3_3m_x86_EXTENDS_BY = appending
290VBoxPython3_3m_x86_TEMPLATE = XPCOM
291VBoxPython3_3m_x86_INCS = $(VBOX_PYTHON33M_INC)
292VBoxPython3_3m_x86_LIBS = $(VBOX_PYTHON33M_LIB_X86)
293 endif
294 endif
295endif
296
297ifdef VBOX_PYTHON34_INC
298#
299# Python 3.4 version
300#
301DLLS += VBoxPython3_4
302VBoxPython3_4_EXTENDS = VBoxPythonBase
303VBoxPython3_4_EXTENDS_BY = appending
304VBoxPython3_4_TEMPLATE = XPCOM
305VBoxPython3_4_INCS = $(VBOX_PYTHON34_INC)
306VBoxPython3_4_LIBS = $(VBOX_PYTHON34_LIB)
307
308 ifdef VBOX_WITH_32_ON_64_MAIN_API
309 ifdef VBOX_PYTHON34_LIB_X86
310DLLS += VBoxPython3_4_x86
311VBoxPython3_4_x86_EXTENDS = VBoxPythonBase_x86
312VBoxPython3_4_x86_EXTENDS_BY = appending
313VBoxPython3_4_x86_TEMPLATE = XPCOM
314VBoxPython3_4_x86_INCS = $(VBOX_PYTHON34_INC)
315VBoxPython3_4_x86_LIBS = $(VBOX_PYTHON34_LIB_X86)
316 endif
317 endif
318endif
319
320ifdef VBOX_PYTHON34M_INC
321#
322# Python 3.4 version with pymalloc
323#
324DLLS += VBoxPython3_4m
325VBoxPython3_4m_EXTENDS = VBoxPythonBase
326VBoxPython3_4m_EXTENDS_BY = appending
327VBoxPython3_4m_TEMPLATE = XPCOM
328VBoxPython3_4m_INCS = $(VBOX_PYTHON34M_INC)
329VBoxPython3_4m_LIBS = $(VBOX_PYTHON34M_LIB)
330
331 ifdef VBOX_WITH_32_ON_64_MAIN_API
332 ifdef VBOX_PYTHON34M_LIB_X86
333DLLS += VBoxPython3_4m_x86
334VBoxPython3_4m_x86_EXTENDS = VBoxPythonBase_x86
335VBoxPython3_4m_x86_EXTENDS_BY = appending
336VBoxPython3_4m_x86_TEMPLATE = XPCOM
337VBoxPython3_4m_x86_INCS = $(VBOX_PYTHON34M_INC)
338VBoxPython3_4m_x86_LIBS = $(VBOX_PYTHON34M_LIB_X86)
339 endif
340 endif
341endif
342
343ifdef VBOX_PYTHON35_INC
344#
345# Python 3.5 version
346#
347DLLS += VBoxPython3_5
348VBoxPython3_5_EXTENDS = VBoxPythonBase
349VBoxPython3_5_EXTENDS_BY = appending
350VBoxPython3_5_TEMPLATE = XPCOM
351VBoxPython3_5_INCS = $(VBOX_PYTHON35_INC)
352VBoxPython3_5_LIBS = $(VBOX_PYTHON35_LIB)
353
354 ifdef VBOX_WITH_32_ON_64_MAIN_API
355 ifdef VBOX_PYTHON35_LIB_X86
356DLLS += VBoxPython3_5_x86
357VBoxPython3_5_x86_EXTENDS = VBoxPythonBase_x86
358VBoxPython3_5_x86_EXTENDS_BY = appending
359VBoxPython3_5_x86_TEMPLATE = XPCOM
360VBoxPython3_5_x86_INCS = $(VBOX_PYTHON35_INC)
361VBoxPython3_5_x86_LIBS = $(VBOX_PYTHON35_LIB_X86)
362 endif
363 endif
364endif
365
366ifdef VBOX_PYTHON35M_INC
367#
368# Python 3.5 version with pymalloc
369#
370DLLS += VBoxPython3_5m
371VBoxPython3_5m_EXTENDS = VBoxPythonBase
372VBoxPython3_5m_EXTENDS_BY = appending
373VBoxPython3_5m_TEMPLATE = XPCOM
374VBoxPython3_5m_INCS = $(VBOX_PYTHON35M_INC)
375VBoxPython3_5m_LIBS = $(VBOX_PYTHON35M_LIB)
376
377 ifdef VBOX_WITH_32_ON_64_MAIN_API
378 ifdef VBOX_PYTHON35M_LIB_X86
379DLLS += VBoxPython3_5m_x86
380VBoxPython3_5m_x86_EXTENDS = VBoxPythonBase_x86
381VBoxPython3_5m_x86_EXTENDS_BY = appending
382VBoxPython3_5m_x86_TEMPLATE = XPCOM
383VBoxPython3_5m_x86_INCS = $(VBOX_PYTHON35M_INC)
384VBoxPython3_5m_x86_LIBS = $(VBOX_PYTHON35M_LIB_X86)
385 endif
386 endif
387endif
388
389ifdef VBOX_PYTHONDEF_INC
390#
391# Python without versioning
392#
393DLLS += VBoxPython
394VBoxPython_EXTENDS = VBoxPythonBase
395VBoxPython_DEFS = $(filter-out VBOX_PYXPCOM_VERSIONED,$(VBoxPythonBase_DEFS))
396VBoxPython_INCS = $(VBoxPythonBase_INCS) $(VBOX_PYTHONDEF_INC)
397if "$(KBUILD_TARGET)" == "linux"
398 VBoxPython_LIBS = $(VBoxPythonBase_LIBS)
399else
400 VBoxPython_LIBS = $(VBoxPythonBase_LIBS) $(VBOX_PYTHONDEF_LIB)
401endif
402
403 ifdef VBOX_WITH_32_ON_64_MAIN_API
404 ifdef VBOX_PYTHONDEF_LIB_X86
405VBoxPython_x86_EXTENDS = VBoxPythonBase_x86
406VBoxPython_x86_DEFS = $(filter-out VBOX_PYXPCOM_VERSIONED,$(VBoxPythonBase_x86_DEFS))
407VBoxPython_x86_INCS = $(VBoxPythonBase_x86_INCS) $(VBOX_PYTHONDEF_INC)
408if "$(KBUILD_TARGET)" == "linux"
409 VBoxPython_x86_LIBS = $(VBoxPythonBase_x86_LIBS)
410else
411 VBoxPython_x86_LIBS = $(VBoxPythonBase_x86_LIBS) $(VBOX_PYTHONDEF_LIB_X86)
412endif
413 endif
414 endif
415endif
416
417endif # VBOX_ONLY_SDK
418
419#
420# Install the python modules.
421#
422INSTALLS += VBoxPython-inst-py-xpcom
423VBoxPython-inst-py-xpcom_INST = $(INST_SDK)bindings/xpcom/python/xpcom/
424VBoxPython-inst-py-xpcom_MODE = a+r,u+w
425VBoxPython-inst-py-xpcom_SOURCES = \
426 vboxxpcom.py \
427 components.py \
428 file.py \
429 __init__.py \
430 nsError.py \
431 primitives.py \
432 xpcom_consts.py \
433 xpt.py \
434 client/__init__.py=>client/__init__.py \
435 server/__init__.py=>server/__init__.py \
436 server/enumerator.py=>server/enumerator.py \
437 server/factory.py=>server/factory.py \
438 server/loader.py=>server/loader.py \
439 server/module.py=>server/module.py \
440 server/policy.py=>server/policy.py
441
442
443include $(FILE_KBUILD_SUB_FOOTER)
444
Note: See TracBrowser for help on using the repository browser.

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