1 # waf build tool for building IDL files with pidl
4 from samba_utils
import *
5 from samba_autoconf
import *
7 from Configure
import conf
10 def SAMBA_CHECK_PYTHON(conf
, mandatory
=True, version
=(2,4,2)):
11 # enable tool to build python extensions
12 conf
.find_program('python', var
='PYTHON', mandatory
=mandatory
)
13 conf
.check_tool('python')
14 path_python
= conf
.find_program('python')
15 conf
.env
.PYTHON_SPECIFIED
= (conf
.env
.PYTHON
!= path_python
)
16 conf
.check_python_version(version
)
19 def SAMBA_CHECK_PYTHON_HEADERS(conf
, mandatory
=True):
20 if conf
.env
["python_headers_checked"] == []:
21 conf
.check_python_headers(mandatory
)
22 conf
.env
["python_headers_checked"] = "yes"
24 conf
.msg("python headers", "using cache")
26 if conf
.env
['PYTHON_VERSION'] > '3':
27 abi_pattern
= os
.path
.splitext(conf
.env
['pyext_PATTERN'])[0]
28 conf
.env
['PYTHON_SO_ABI_FLAG'] = abi_pattern
% ''
30 conf
.env
['PYTHON_SO_ABI_FLAG'] = ''
33 def SAMBA_PYTHON(bld
, name
,
40 init_function_sentinel
=None,
45 '''build a python extension for Samba'''
47 # when we support static python modules we'll need to gather
48 # the list from all the SAMBA_PYTHON() targets
49 if init_function_sentinel
is not None:
50 cflags
+= '-DSTATIC_LIBPYTHON_MODULES=%s' % init_function_sentinel
52 source
= bld
.EXPAND_VARIABLES(source
, vars=vars)
54 if realname
is not None:
55 link_name
= 'python_modules/%s' % realname
59 bld
.SAMBA_LIBRARY(name
,
62 public_deps
=public_deps
,
65 local_include
=local_include
,
71 install_path
='${PYTHONARCHDIR}',
72 allow_undefined_symbols
=True,
77 Build
.BuildContext
.SAMBA_PYTHON
= SAMBA_PYTHON
80 def pyembed_libname(bld
, name
, extrapython
=False):
81 return name
+ bld
.env
['PYTHON_SO_ABI_FLAG']
83 Build
.BuildContext
.pyembed_libname
= pyembed_libname