diff options
Diffstat (limited to 'nsswitch/wscript_build')
-rw-r--r-- | nsswitch/wscript_build | 179 |
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' + ) |