summaryrefslogtreecommitdiffstats
path: root/nsswitch/wscript_build
diff options
context:
space:
mode:
Diffstat (limited to 'nsswitch/wscript_build')
-rw-r--r--nsswitch/wscript_build179
1 files changed, 179 insertions, 0 deletions
diff --git a/nsswitch/wscript_build b/nsswitch/wscript_build
new file mode 100644
index 0000000..4c5f708
--- /dev/null
+++ b/nsswitch/wscript_build
@@ -0,0 +1,179 @@
+#!/usr/bin/env python
+from waflib import Utils
+import sys
+host_os = sys.platform
+
+bld.SAMBA_BINARY('nsstest',
+ source='nsstest.c',
+ deps='replace dl',
+ for_selftest=True
+ )
+
+if bld.CONFIG_SET('HAVE_PTHREAD'):
+ bld.SAMBA_BINARY('stress-nss-libwbclient',
+ source='stress-nss-libwbclient.c',
+ deps='wbclient pthread',
+ for_selftest=True
+ )
+ bld.SAMBA_BINARY('b15464-testcase',
+ source='b15464-testcase.c',
+ deps='replace pthread dl',
+ for_selftest=True
+ )
+
+# The nss_wrapper code relies strictly on the linux implementation and
+# name, so compile but do not install a copy under this name.
+bld.SAMBA_PLUGIN('nss_wrapper_winbind',
+ cflags='-D_PUBLIC_ON_LINUX_=_PUBLIC_',
+ source='winbind_nss_linux.c',
+ deps='wbclient',
+ realname='libnss_wrapper_winbind.so.2',
+ install=False,
+ vnum='2')
+
+# FIXME: original was *linux* | gnu* | k*bsd*-gnu | kopensolaris*-gnu)
+# the search for .rfind('gnu') covers gnu* and *-gnu is that too broad?
+
+if (Utils.unversioned_sys_platform() == 'linux' or (host_os.rfind('gnu') > -1)):
+ bld.SAMBA_PLUGIN('nss_winbind',
+ cflags='-D_PUBLIC_ON_LINUX_=_PUBLIC_',
+ source='winbind_nss_linux.c',
+ deps='wbclient',
+ realname='libnss_winbind.so.2',
+ soname='libnss_winbind.so.2',
+ vnum='2')
+
+ bld.SAMBA3_PLUGIN('nss_wins',
+ cflags='-D_PUBLIC_ON_LINUX_=_PUBLIC_',
+ source='wins.c',
+ deps='wbclient replace',
+ realname='libnss_wins.so.2',
+ soname='libnss_wins.so.2',
+ vnum='2')
+elif (host_os.rfind('freebsd') > -1):
+ # FreeBSD winbind client is implemented as a wrapper around
+ # the Linux version.
+ bld.SAMBA_PLUGIN('nss_winbind',
+ source='winbind_nss_linux.c winbind_nss_freebsd.c',
+ deps='wbclient',
+ realname='nss_winbind.so.1',
+ vnum='1')
+
+ bld.SAMBA3_PLUGIN('nss_wins',
+ source='wins.c wins_freebsd.c',
+ deps='''wbclient''',
+ realname='nss_wins.so.1',
+ vnum='1')
+
+elif (host_os.rfind('netbsd') > -1):
+ # NetBSD winbind client is implemented as a wrapper
+ # around the Linux version. It needs getpwent_r() to
+ # indicate libc's use of the correct nsdispatch API.
+
+ if bld.CONFIG_SET("HAVE_GETPWENT_R"):
+ bld.SAMBA_PLUGIN('nss_winbind',
+ source='winbind_nss_linux.c winbind_nss_netbsd.c',
+ deps='wbclient',
+ realname='libnss_winbind.so')
+elif Utils.unversioned_sys_platform() == 'sunos':
+ bld.SAMBA_PLUGIN('nss_winbind',
+ source='winbind_nss_solaris.c winbind_nss_linux.c',
+ deps='wbclient',
+ realname='nss_winbind.so.1',
+ vnum='1')
+elif (host_os.rfind('hpux') > -1):
+ bld.SAMBA_PLUGIN('nss_winbind',
+ source='winbind_nss_linux.c',
+ deps='wbclient',
+ realname='libnss_winbind.so')
+elif (host_os.rfind('aix') > -1):
+ bld.SAMBA_PLUGIN('nss_winbind',
+ source='winbind_nss_aix.c',
+ deps='wbclient',
+ realname='WINBIND')
+
+if bld.CONFIG_SET('WITH_PAM_MODULES') and bld.CONFIG_SET('HAVE_PAM_START'):
+ bld.SAMBA_PLUGIN('pamwinbind',
+ source='pam_winbind.c',
+ deps='talloc wbclient tiniparser pam samba_intl',
+ cflags='-DLOCALEDIR=\"%s/locale\"' % bld.env.DATADIR,
+ realname='pam_winbind.so',
+ install_path='${PAMMODULESDIR}'
+ )
+
+if bld.CONFIG_GET("USING_SYSTEM_KRB5"):
+ # If we build locator plugins for a
+ # system library we should use builtin
+ # linking of our own subsystems,
+ # while we may link to the system
+ # krb5 libraries.
+ winbind_krb5_require_builtin_deps = True
+else:
+ # If we build locator plugins for our own heimdal
+ # version we don't want to do builtin linking.
+ # As we're already using private libraries
+ # it's not a problem...
+ winbind_krb5_require_builtin_deps = False
+
+if bld.CONFIG_SET('HAVE_KRB5_LOCATE_PLUGIN_H'):
+ bld.SAMBA_PLUGIN('winbind_krb5_locator',
+ source='krb5_plugin/winbind_krb5_locator.c',
+ deps='wbclient krb5 com_err',
+ require_builtin_deps=winbind_krb5_require_builtin_deps,
+ realname='winbind_krb5_locator.so',
+ install_path='${MODULESDIR}/krb5')
+
+if bld.CONFIG_SET('HAVE_KRB5_LOCATE_PLUGIN_H'):
+ # libkrb5.so scans it's plugin directories for files
+ # and calls dlopen()/dlsym() on them. The actual path
+ # depends on MIT vs. Heimdal.
+ #
+ # The async_dns_krb5_locator don't use winbind,
+ # instead it uses almost all of samba directly,
+ # which means everything will be injected
+ # into all processes using the libkrb5.so.
+ #
+ # See https://bugzilla.samba.org/show_bug.cgi?id=14780
+ # why this is a bad idea.
+ #
+ # We install this plugin (and also the other krb5 plugins)
+ # under Samba's MODULESDIR, it's not available to
+ # libkrb5.so by default.
+ #
+ # Packagers should leave it that way and allow admins
+ # to create symlinks for the plugins they actually want
+ # to be used.
+ bld.SAMBA_PLUGIN('async_dns_krb5_locator',
+ source='krb5_plugin/async_dns_krb5_locator.c',
+ deps='''
+ talloc
+ addns
+ samba_intl
+ libsmb
+ smbconf
+ KRBCLIENT
+ smbd_base
+ krb5
+ com_err
+ ''',
+ require_builtin_deps=False,
+ realname='async_dns_krb5_locator.so',
+ install_path='${MODULESDIR}/krb5')
+
+if bld.CONFIG_SET('HAVE_KRB5_LOCALAUTH_PLUGIN_H'):
+ bld.SAMBA_PLUGIN('winbind_krb5_localauth',
+ source='krb5_plugin/winbind_krb5_localauth.c',
+ deps='wbclient krb5 com_err',
+ require_builtin_deps=winbind_krb5_require_builtin_deps,
+ realname='winbind_krb5_localauth.so',
+ install_path='${MODULESDIR}/krb5')
+
+bld.SAMBA_SUBSYSTEM('WB_REQTRANS',
+ source='wb_reqtrans.c',
+ deps='talloc tevent LIBASYNC_REQ'
+ )
+
+bld.SAMBA_BINARY('wbinfo',
+ source='wbinfo.c',
+ deps='samba-util LIBCLI_AUTH popt cmdline wbclient LIBAFS_SETTOKEN'
+ )