summaryrefslogtreecommitdiffstats
path: root/nsswitch/wscript_build
blob: 4c5f708328b67fcde9e2dec1089d59881a8e18b7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
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'
	)