ctdb-build: Add missing ctdb-tcp dependency
[Samba.git] / third_party / pam_wrapper / wscript
blob4ee5765269e49869ccd7e7dd95a74b2bf5d58226
1 #!/usr/bin/env python
3 import os
5 VERSION="1.1.7"
7 def find_library(library_names, lookup_paths):
8 for directory in lookup_paths:
9 for filename in library_names:
10 so_path = os.path.join(directory, filename)
11 if os.path.exists(so_path):
12 return so_path
13 return ''
15 def configure(conf):
16 if conf.CHECK_PAM_WRAPPER():
17 conf.DEFINE('USING_SYSTEM_PAM_WRAPPER', 1)
18 libpam_wrapper_so_path = 'libpam_wrapper.so'
20 pam_set_items_so_path = find_library(['pam_set_items.so'],
21 ['/usr/lib64/pam_wrapper', '/usr/lib/pam_wrapper'])
22 pam_matrix_so_path = find_library(['pam_matrix.so'],
23 ['/usr/lib64/pam_wrapper', '/usr/lib/pam_wrapper'])
24 else:
25 conf.CHECK_HEADERS('gnu/lib-names.h')
27 if conf.CONFIG_SET("HAVE___THREAD"):
28 conf.DEFINE("HAVE_GCC_THREAD_LOCAL_STORAGE", 1)
30 # check HAVE_FUNCTION_ATTRIBUTE_FORMAT
31 conf.CHECK_CODE('''
32 void log_fn(const char *format, ...) __attribute__ ((format (printf, 1, 2)));
34 int main(void) {
35 return 0;
37 ''',
38 'HAVE_FUNCTION_ATTRIBUTE_FORMAT',
39 addmain=False,
40 strict=True,
41 msg='Checking for printf format validation support')
43 conf.CHECK_HEADERS('security/pam_appl.h')
44 conf.CHECK_HEADERS('security/pam_modules.h')
45 conf.CHECK_HEADERS('security/pam_ext.h')
47 conf.CHECK_FUNCS_IN('pam_vsyslog',
48 'pam',
49 checklibc=False,
50 headers='security/pam_ext.h')
52 conf.CHECK_FUNCS_IN('pam_syslog',
53 'pam',
54 checklibc=False,
55 headers='security/pam_ext.h')
57 conf.CHECK_FUNCS_IN('pam_start_confdir',
58 'pam',
59 checklibc=False,
60 headers='security/pam_appl.h')
62 conf.CHECK_C_PROTOTYPE('pam_vprompt',
63 'int pam_vprompt(const pam_handle_t *_pamh, int _style, char **_resp, const char *_fmt, va_list _ap)',
64 define='HAVE_PAM_VPROMPT_CONST', headers='stdio.h sys/types.h security/pam_appl.h security/pam_modules.h')
66 conf.CHECK_C_PROTOTYPE('pam_prompt',
67 'int pam_prompt(const pam_handle_t *_pamh, int _style, char **_resp, const char *_fmt, ...)',
68 define='HAVE_PAM_PROMPT_CONST', headers='stdio.h sys/types.h security/pam_appl.h security/pam_modules.h')
70 conf.CHECK_C_PROTOTYPE(
71 'pam_strerror',
72 'const char *pam_strerror(const pam_handle_t *pamh, int errnum)',
73 define='HAVE_PAM_STRERROR_CONST',
74 headers='''stdio.h sys/types.h security/pam_appl.h
75 security/pam_modules.h''')
77 # Find the absolute path to libpam.so.0
78 libpam_path = find_library(['libpam.so.0', 'libpam.so'], conf.env.STANDARD_LIBPATH)
79 conf.DEFINE('PAM_LIBRARY', ('"%s"' % libpam_path ))
81 # Create full path to pam_wrapper
82 blddir = os.path.realpath(conf.bldnode.abspath())
83 libpam_wrapper_so_path = blddir + '/default/third_party/pam_wrapper/libpam-wrapper.so'
84 pam_set_items_so_path = blddir + '/default/third_party/pam_wrapper/libpam-set-items.so'
85 pam_matrix_so_path = blddir + '/default/third_party/pam_wrapper/libpam-matrix.so'
87 conf.DEFINE('LIBPAM_WRAPPER_SO_PATH', libpam_wrapper_so_path)
88 conf.DEFINE('PAM_SET_ITEMS_SO_PATH', pam_set_items_so_path)
89 conf.DEFINE('PAM_MATRIX_SO_PATH', pam_matrix_so_path)
90 conf.DEFINE('PAM_WRAPPER', 1)
92 def build(bld):
93 if not bld.CONFIG_SET("USING_SYSTEM_PAM_WRAPPER"):
94 # We need to do it this way or the library wont work.
95 # We need force_unversioned=True as symbol versioning
96 # breaks preloading!
97 bld.SAMBA_LIBRARY('pam_wrapper',
98 source='pam_wrapper.c',
99 deps='dl pthread',
100 install=False,
101 force_unversioned=True,
102 realname='libpam-wrapper.so')
104 bld.SAMBA_SUBSYSTEM('libpamtest',
105 source='libpamtest.c',
106 deps='dl pam')
108 bld.SAMBA_LIBRARY('pam_set_items',
109 source='modules/pam_set_items.c',
110 deps='pam',
111 install=False,
112 force_unversioned=True,
113 realname='pam_set_items.so')
114 bld.SAMBA_LIBRARY('pam_matrix',
115 source='modules/pam_matrix.c',
116 deps='pam',
117 install=False,
118 force_unversioned=True,
119 realname='pam_matrix.so')
121 pypamtest_cflags = ''
122 if bld.CONFIG_SET('HAVE_WNO_ERROR_DECLARATION_AFTER_STATEMENT'):
123 pypamtest_cflags = '-Wno-error=declaration-after-statement'
125 # Can be used to write pam tests in python
126 bld.SAMBA_PYTHON('pypamtest',
127 source='python/pypamtest.c',
128 cflags_end=pypamtest_cflags,
129 deps='libpamtest',
130 install=False)