#!/usr/bin/env python
-srcdir = '../..'
+APPNAME = 'libreplace'
+VERSION = '1.2.1'
+
blddir = 'bin'
-import sys
-sys.path.insert(0, srcdir+"/buildtools/wafsamba")
-import wafsamba
+import sys, os, Utils
+
+# find the buildtools directory
+srcdir = '.'
+while not os.path.exists(srcdir+'/buildtools') and len(srcdir.split('/')) < 5:
+ srcdir = '../' + srcdir
+sys.path.insert(0, srcdir + '/buildtools/wafsamba')
+
+import wafsamba, samba_dist
import Options, os, preproc
+samba_dist.DIST_DIRS('lib/replace buildtools:buildtools')
+
def set_options(opt):
- opt.recurse('../../buildtools/wafsamba')
+ opt.BUILTIN_DEFAULT('NONE')
+ opt.BUNDLED_EXTENSION_DEFAULT('')
+ opt.RECURSE('buildtools/wafsamba')
@wafsamba.runonce
def configure(conf):
- conf.sub_config('../../buildtools/wafsamba')
+ conf.RECURSE('buildtools/wafsamba')
conf.DEFINE('LIBREPLACE_NETWORK_CHECKS', 1)
conf.CHECK_HEADERS('windows.h winsock2.h ws2tcpip.h')
conf.CHECK_HEADERS('libintl.h errno.h')
conf.CHECK_HEADERS('gcrypt.h getopt.h iconv.h')
- conf.CHECK_HEADERS('sys/inotify.h memory.h nss.h popt.h sasl/sasl.h')
+ conf.CHECK_HEADERS('sys/inotify.h memory.h nss.h sasl/sasl.h')
conf.CHECK_HEADERS('security/pam_appl.h sys/inotify.h zlib.h asm/unistd.h')
conf.CHECK_HEADERS('aio.h sys/unistd.h rpc/rpc.h rpc/nettype.h alloca.h float.h')
conf.CHECK_FUNCS('asprintf vasprintf setenv unsetenv strnlen strtoull __strtoull')
conf.CHECK_FUNCS('strtouq strtoll __strtoll strtoq')
conf.CHECK_FUNCS('if_nametoindex strerror_r')
- conf.CHECK_FUNCS('dirfd getdirentries getdents syslog')
+ conf.CHECK_FUNCS('getdirentries getdents syslog')
conf.CHECK_FUNCS('gai_strerror get_current_dir_name')
conf.CHECK_FUNCS('timegm getifaddrs freeifaddrs mmap setgroups setsid')
conf.CHECK_FUNCS('getgrent_r getgrgid_r getgrnam_r getgrouplist getpagesize')
conf.CHECK_FUNCS_IN('dlopen dlsym dlerror dlclose', 'dl',
checklibc=True, headers='dlfcn.h dl.h')
- conf.CHECK_FUNCS_IN('poptGetContext', 'popt')
+
+ conf.CHECK_C_PROTOTYPE('dlopen', 'void *dlopen(const char* filename, unsigned int flags)',
+ define='DLOPEN_TAKES_UNSIGNED_FLAGS', headers='dlfcn.h dl.h')
conf.CHECK_FUNCS_IN('fdatasync', 'rt', checklibc=True)
conf.CHECK_DECLS('snprintf vsnprintf asprintf vasprintf')
- conf.CHECK_DECLS('dirfd', reverse=True, headers='dirent.h')
conf.CHECK_DECLS('errno', headers='errno.h', reverse=True)
conf.CHECK_DECLS('environ getgrent_r getpwent_r', reverse=True, headers='pwd.h grp.h')
conf.CHECK_DECLS('pread pwrite setenv setresgid setresuid', reverse=True)
# if we have both, then we prefer getpassphrase
conf.DEFINE('REPLACE_GETPASS_BY_GETPASSPHRASE', 1)
conf.DEFINE('REPLACE_GETPASS', 1)
-
- conf.CHECK_CODE('''#include "getpass.c"
+ else:
+ conf.CHECK_CODE('''#include "getpass.c"
int main(void) { return 0; }''',
addmain=False,
define='REPLACE_GETPASS',
cflags='-DNO_CONFIG_H')
- conf.sub_config('system')
+ conf.RECURSE('system')
conf.SAMBA_CONFIG_H()
def build(bld):
- bld.BUILD_SUBDIR('../../buildtools/wafsamba')
+ bld.RECURSE('buildtools/wafsamba')
- REPLACE_SOURCE = 'replace.c snprintf.c'
+ REPLACE_HOSTCC_SOURCE = 'replace.c snprintf.c'
+
+ if bld.CONFIG_SET('REPLACE_STRPTIME'): REPLACE_HOSTCC_SOURCE += ' strptime.c'
+ if not bld.CONFIG_SET('HAVE_TIMEGM'): REPLACE_HOSTCC_SOURCE += ' timegm.c'
+
+ bld.SAMBA_SUBSYSTEM('LIBREPLACE_H',
+ REPLACE_HOSTCC_SOURCE,
+
+ cflags='-DSOCKET_WRAPPER_DISABLE=1 -DNSS_WRAPPER_DISABLE=1 -D_SAMBA_HOSTCC_',
+ group='compiler_libraries'
+ )
+
+ REPLACE_SOURCE = REPLACE_HOSTCC_SOURCE
+
+ if bld.CONFIG_SET('REPLACE_GETPASS'): REPLACE_SOURCE += ' getpass.c'
- if bld.CONFIG_SET('REPLACE_STRPTIME'): REPLACE_SOURCE += ' strptime.c'
- if not bld.CONFIG_SET('HAVE_TIMEGM'): REPLACE_SOURCE += ' timegm.c'
- if not bld.CONFIG_SET('HAVE_GETIFADDRS'): REPLACE_SOURCE += ' getifaddrs.c'
if not bld.CONFIG_SET('HAVE_DLOPEN'): REPLACE_SOURCE += ' dlfcn.c'
+
if not bld.CONFIG_SET('HAVE_SOCKETPAIR'): REPLACE_SOURCE += ' socketpair.c'
if not bld.CONFIG_SET('HAVE_CONNECT'): REPLACE_SOURCE += ' socket.c'
+ if not bld.CONFIG_SET('HAVE_GETIFADDRS'): REPLACE_SOURCE += ' getifaddrs.c'
+ if not bld.CONFIG_SET('HAVE_GETADDRINFO'): REPLACE_SOURCE += ' getaddrinfo.c'
+ if not bld.CONFIG_SET('HAVE_INET_NTOA'): REPLACE_SOURCE += ' inet_ntoa.c'
+ if not bld.CONFIG_SET('HAVE_INET_ATON'): REPLACE_SOURCE += ' inet_aton.c'
+ if not bld.CONFIG_SET('HAVE_INET_NTOP'): REPLACE_SOURCE += ' inet_ntop.c'
+ if not bld.CONFIG_SET('HAVE_INET_PTON'): REPLACE_SOURCE += ' inet_pton.c'
bld.SAMBA_LIBRARY('replace',
source=REPLACE_SOURCE,
group='base_libraries',
- deps='LIBREPLACE_GETPASS nsl socket')
+ deps='nsl socket')
TEST_SOURCES = '''test/testsuite.c test/main.c test/strptime.c
test/os2_delete.c test/getifaddrs.c'''
deps='replace',
install=False)
- NET_SOURCES = []
- if bld.CONFIG_SET('HAVE_INET_NTOA'): NET_SOURCES.append('inet_ntoa.c')
- if bld.CONFIG_SET('HAVE_INET_ATON'): NET_SOURCES.append('inet_aton.c')
- if bld.CONFIG_SET('HAVE_INET_NTOP'): NET_SOURCES.append('inet_ntop.c')
- if bld.CONFIG_SET('HAVE_INET_PTON'): NET_SOURCES.append('inet_pton.c')
- if bld.CONFIG_SET('HAVE_SOCKETPAIR'): NET_SOURCES.append('socketpair.c')
-
- bld.SAMBA_SUBSYSTEM('LIBREPLACE_NETWORK', NET_SOURCES, deps='replace')
-
-
CRYPT_SOURCES = []
if not 'HAVE_CRYPT' in bld.env: CRYPT_SOURCES.append('crypt.c')
- bld.SAMBA_SUBSYSTEM('LIBREPLACE_EXT', CRYPT_SOURCES)
-
- bld.SAMBA_SUBSYSTEM('LIBREPLACE_GETPASS', 'getpass.c',
- enabled=bld.CONFIG_SET('REPLACE_GETPASS'))
+ bld.SAMBA_SUBSYSTEM('LIBREPLACE_EXT',
+ CRYPT_SOURCES,
+ group='base_libraries')
# build replacements for stdint.h and stdbool.h if needed
bld.SAMBA_GENERATOR('replace_stdint_h',
source='hdr_replace.h',
target='stdbool.h',
enabled = not bld.CONFIG_SET('HAVE_STDBOOL_H'))
+
+def dist():
+ '''makes a tarball for distribution'''
+ samba_dist.dist()