1# functions to support third party libraries
2
3import os
4from waflib import Utils, Build, Context
5from waflib.Configure import conf
6
7@conf
8def CHECK_FOR_THIRD_PARTY(conf):
9    return os.path.exists(os.path.join(Context.g_module.top, 'third_party'))
10
11Build.BuildContext.CHECK_FOR_THIRD_PARTY = CHECK_FOR_THIRD_PARTY
12
13@conf
14def CHECK_ZLIB(conf):
15    version_check='''
16    #if (ZLIB_VERNUM >= 0x1230)
17    #else
18    #error "ZLIB_VERNUM < 0x1230"
19    #endif
20    z_stream *z;
21    inflateInit2(z, -15);
22    '''
23    return conf.CHECK_BUNDLED_SYSTEM('z', minversion='1.2.3', pkg='zlib',
24                                     checkfunctions='zlibVersion',
25                                     headers='zlib.h',
26                                     checkcode=version_check,
27                                     implied_deps='replace')
28
29Build.BuildContext.CHECK_ZLIB = CHECK_ZLIB
30
31@conf
32def CHECK_POPT(conf):
33    return conf.CHECK_BUNDLED_SYSTEM('popt', checkfunctions='poptGetContext', headers='popt.h')
34
35Build.BuildContext.CHECK_POPT = CHECK_POPT
36
37@conf
38def CHECK_CMOCKA(conf):
39    return conf.CHECK_BUNDLED_SYSTEM_PKG('cmocka', minversion='1.1.3')
40
41Build.BuildContext.CHECK_CMOCKA = CHECK_CMOCKA
42
43@conf
44def CHECK_SOCKET_WRAPPER(conf):
45    return conf.CHECK_BUNDLED_SYSTEM_PKG('socket_wrapper', minversion='1.2.1')
46Build.BuildContext.CHECK_SOCKET_WRAPPER = CHECK_SOCKET_WRAPPER
47
48@conf
49def CHECK_NSS_WRAPPER(conf):
50    return conf.CHECK_BUNDLED_SYSTEM_PKG('nss_wrapper', minversion='1.1.5')
51Build.BuildContext.CHECK_NSS_WRAPPER = CHECK_NSS_WRAPPER
52
53@conf
54def CHECK_RESOLV_WRAPPER(conf):
55    return conf.CHECK_BUNDLED_SYSTEM_PKG('resolv_wrapper', minversion='1.1.4')
56Build.BuildContext.CHECK_RESOLV_WRAPPER = CHECK_RESOLV_WRAPPER
57
58@conf
59def CHECK_UID_WRAPPER(conf):
60    return conf.CHECK_BUNDLED_SYSTEM_PKG('uid_wrapper', minversion='1.2.4')
61Build.BuildContext.CHECK_UID_WRAPPER = CHECK_UID_WRAPPER
62
63@conf
64def CHECK_PAM_WRAPPER(conf):
65    return conf.CHECK_BUNDLED_SYSTEM_PKG('pam_wrapper', minversion='1.0.7')
66Build.BuildContext.CHECK_PAM_WRAPPER = CHECK_PAM_WRAPPER
67