VirtualBox

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

Last change on this file since 64055 was 64055, checked in by vboxsync, 8 years ago

more -Wl,--no-undefined

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 13.7 KB
Line 
1# $Id: Makefile.kmk 64055 2016-09-27 16:07:39Z 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)
399 VBoxPython_LDFLAGS.linux = -Wl,--unresolved-symbols=ignore-in-object-files
400else
401 VBoxPython_LIBS = $(VBoxPythonBase_LIBS) $(VBOX_PYTHONDEF_LIB)
402endif
403
404 ifdef VBOX_WITH_32_ON_64_MAIN_API
405 ifdef VBOX_PYTHONDEF_LIB_X86
406VBoxPython_x86_EXTENDS = VBoxPythonBase_x86
407VBoxPython_x86_DEFS = $(filter-out VBOX_PYXPCOM_VERSIONED,$(VBoxPythonBase_x86_DEFS))
408VBoxPython_x86_INCS = $(VBoxPythonBase_x86_INCS) $(VBOX_PYTHONDEF_INC)
409if "$(KBUILD_TARGET)" == "linux"
410 VBoxPython_x86_LIBS = $(VBoxPythonBase_x86_LIBS)
411else
412 VBoxPython_x86_LIBS = $(VBoxPythonBase_x86_LIBS) $(VBOX_PYTHONDEF_LIB_X86)
413endif
414 endif
415 endif
416endif
417
418endif # VBOX_ONLY_SDK
419
420#
421# Install the python modules.
422#
423INSTALLS += VBoxPython-inst-py-xpcom
424VBoxPython-inst-py-xpcom_INST = $(INST_SDK)bindings/xpcom/python/xpcom/
425VBoxPython-inst-py-xpcom_MODE = a+r,u+w
426VBoxPython-inst-py-xpcom_SOURCES = \
427 vboxxpcom.py \
428 components.py \
429 file.py \
430 __init__.py \
431 nsError.py \
432 primitives.py \
433 xpcom_consts.py \
434 xpt.py \
435 client/__init__.py=>client/__init__.py \
436 server/__init__.py=>server/__init__.py \
437 server/enumerator.py=>server/enumerator.py \
438 server/factory.py=>server/factory.py \
439 server/loader.py=>server/loader.py \
440 server/module.py=>server/module.py \
441 server/policy.py=>server/policy.py
442
443
444include $(FILE_KBUILD_SUB_FOOTER)
445
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