includes='',
public_headers=None,
public_headers_install=True,
+ private_headers=None,
header_path=None,
pc_files=None,
vnum=None,
soname=None,
cflags='',
+ cflags_end=None,
ldflags='',
external_library=False,
realname=None,
'''define a Samba library'''
if pyembed and bld.env['IS_EXTRA_PYTHON']:
- public_headers = pc_files = None
+ public_headers = None
+
+ if private_library and public_headers:
+ raise Utils.WafError("private library '%s' must not have public header files" %
+ libname)
if LIB_MUST_BE_PRIVATE(bld, libname):
- private_library=True
+ private_library = True
if not enabled:
SET_TARGET_TYPE(bld, libname, 'DISABLED')
includes = includes,
public_headers = public_headers,
public_headers_install = public_headers_install,
+ private_headers= private_headers,
header_path = header_path,
cflags = cflags,
+ cflags_end = cflags_end,
group = subsystem_group,
autoproto = autoproto,
autoproto_extra_source=autoproto_extra_source,
if vnum is None and soname is None:
raise Utils.WafError("public library '%s' must have a vnum" %
libname)
- if pc_files is None and not bld.env['IS_EXTRA_PYTHON']:
+ if pc_files is None:
raise Utils.WafError("public library '%s' must have pkg-config file" %
libname)
if public_headers is None and not bld.env['IS_EXTRA_PYTHON']:
t.link_name = link_name
if pc_files is not None and not private_library:
- bld.PKG_CONFIG_FILES(pc_files, vnum=vnum)
+ if pyembed and bld.env['IS_EXTRA_PYTHON']:
+ bld.PKG_CONFIG_FILES(pc_files, vnum=vnum, extra_name=bld.env['PYTHON_SO_ABI_FLAG'])
+ else:
+ bld.PKG_CONFIG_FILES(pc_files, vnum=vnum)
if (manpages is not None and 'XSLTPROC_MANPAGES' in bld.env and
bld.env['XSLTPROC_MANPAGES']):
deps='',
includes='',
public_headers=None,
+ private_headers=None,
header_path=None,
modules=None,
ldflags=None,
cflags='',
+ cflags_end=None,
autoproto=None,
use_hostcc=False,
use_global_deps=True,
deps = deps,
includes = includes,
cflags = pie_cflags,
+ cflags_end = cflags_end,
group = subsystem_group,
autoproto = autoproto,
subsystem_name = subsystem_name,
autoproto=None,
autoproto_extra_source='',
cflags='',
+ cflags_end=None,
internal_module=True,
local_include=True,
global_include=True,
pyembed=False,
manpages=None,
allow_undefined_symbols=False,
- allow_warnings=False
+ allow_warnings=False,
+ install=True
):
'''define a Samba module.'''
autoproto=autoproto,
autoproto_extra_source=autoproto_extra_source,
cflags=cflags,
+ cflags_end=cflags_end,
local_include=local_include,
global_include=global_include,
allow_warnings=allow_warnings,
deps=deps,
includes=includes,
cflags=cflags,
+ cflags_end=cflags_end,
realname = realname,
autoproto = autoproto,
local_include=local_include,
pyembed=pyembed,
manpages=manpages,
allow_undefined_symbols=allow_undefined_symbols,
- allow_warnings=allow_warnings
+ allow_warnings=allow_warnings,
+ install=install
)
includes='',
public_headers=None,
public_headers_install=True,
+ private_headers=None,
header_path=None,
cflags='',
cflags_end=None,
group='generators', enabled=True,
public_headers=None,
public_headers_install=True,
+ private_headers=None,
header_path=None,
vars=None,
dep_vars=[],
python_fixup=python_fixup, base_name=trim_path)
Build.BuildContext.INSTALL_WILDCARD = INSTALL_WILDCARD
+def INSTALL_DIR(bld, path, chmod=0o755, env=None):
+ """Install a directory if it doesn't exist, always set permissions."""
+
+ if not path:
+ return []
-def INSTALL_DIRS(bld, destdir, dirs):
+ destpath = bld.get_install_path(path, env)
+
+ if bld.is_install > 0:
+ if not os.path.isdir(destpath):
+ try:
+ os.makedirs(destpath)
+ os.chmod(destpath, chmod)
+ except OSError as e:
+ if not os.path.isdir(destpath):
+ raise Utils.WafError("Cannot create the folder '%s' (error: %s)" % (path, e))
+Build.BuildContext.INSTALL_DIR = INSTALL_DIR
+
+def INSTALL_DIRS(bld, destdir, dirs, chmod=0o755, env=None):
'''install a set of directories'''
destdir = bld.EXPAND_VARIABLES(destdir)
dirs = bld.EXPAND_VARIABLES(dirs)
for d in TO_LIST(dirs):
- bld.install_dir(os.path.join(destdir, d))
+ INSTALL_DIR(bld, os.path.join(destdir, d), chmod, env)
Build.BuildContext.INSTALL_DIRS = INSTALL_DIRS