+#! /usr/bin/env python
+
srcdir = '../..'
blddir = 'bin'
-import Options, os, wafsamba
+import sys
+sys.path.insert(0, srcdir+"/buildtools/wafsamba")
+import wafsamba
+import Options, os
def set_options(opt):
opt.tool_options('compiler_cc')
+ # TODO: we are not yet obeying these default paths at install time
opt.add_option('--libdir',
- help=("object code libraries [PREFIX/lib]"),
- action="store", dest='LIBDIR', default=None)
+ help=("object code libraries [PREFIX/lib"),
+ action="store", dest='LIBDIR', default='${PREFIX}/lib')
opt.add_option('--bindir',
help=("user executables [PREFIX/bin]"),
- action="store", dest='BINDIR', default=None)
+ action="store", dest='BINDIR', default='${PREFIX}/bin')
opt.add_option('--sbindir',
help=("system admin executables [PREFIX/sbin]"),
- action="store", dest='SBINDIR', default=None)
+ action="store", dest='SBINDIR', default='${PREFIX}/sbin')
opt.add_option('--enable-rpath',
help=("Enable use of rpath for installed binaries"),
action="store_true", dest='enable_rpath', default=False)
@wafsamba.runonce
def configure(conf):
conf.env.hlist = []
+ conf.env.srcdir = conf.srcdir
# load our local waf extensions
- conf.check_tool('wafsamba', tooldir=conf.curdir)
-
- conf.CONFIG_PATH('LIBDIR', '/lib')
- conf.CONFIG_PATH('BINDIR', '/bin')
- conf.CONFIG_PATH('SBINDIR', '/sbin')
+ conf.check_tool('wafsamba', tooldir=conf.srcdir + "/buildtools/wafsamba")
conf.check_tool('compiler_cc')
- conf.env['RPATH_ON_INSTALL'] = Options.options.enable_rpath
+ # make the install paths available in environment
+ conf.env.LIBDIR = Options.options.LIBDIR
+ conf.env.BINDIR = Options.options.BINDIR
+ conf.env.SBINDIR = Options.options.SBINDIR
+
+ conf.env.RPATH_ON_INSTALL = Options.options.enable_rpath
- conf.DEFUN('_GNU_SOURCE', 1)
- conf.DEFUN('_XOPEN_SOURCE_EXTENDED', 1)
- conf.DEFUN('LIBREPLACE_NETWORK_CHECKS', 1)
+ # check for pkgconfig
+ conf.check_cfg(atleast_pkgconfig_version='0.0.0')
+
+ conf.DEFINE('_GNU_SOURCE', 1)
+ conf.DEFINE('_XOPEN_SOURCE_EXTENDED', 1)
+ conf.DEFINE('LIBREPLACE_NETWORK_CHECKS', 1)
conf.CHECK_HEADERS('unistd.h sys/types.h stdlib.h stdio.h stddef.h')
conf.CHECK_HEADERS('ctype.h locale.h acl/libacl.h compat.h')
conf.CHECK_HEADERS('netinet/ip.h netinet/tcp.h netinet/in_ip.h sys/sockio.h sys/un.h')
conf.CHECK_HEADERS('sys/uio.h ifaddrs.h direct.h dirent.h')
conf.CHECK_HEADERS('windows.h winsock2.h ws2tcpip.h')
- conf.CHECK_HEADERS('resolv.h')
+ conf.CHECK_HEADERS('resolv.h libintl.h errno.h')
+ conf.CHECK_HEADERS('execinfo.h gcrypt.h getopt.h iconv.h')
+ conf.CHECK_HEADERS('sys/inotify.h memory.h nss.h popt.h sasl/sasl.h')
+ conf.CHECK_HEADERS('security/pam_appl.h sys/inotify.h zlib.h asm/unistd.h')
if 'HAVE_STDDEF_H' in conf.env and 'HAVE_STDLIB_H' in conf.env:
- conf.DEFUN('STDC_HEADERS', 1)
+ conf.DEFINE('STDC_HEADERS', 1)
if 'HAVE_SYS_TIME_H' in conf.env and 'HAVE_TIME_H' in conf.env:
- conf.DEFUN('TIME_WITH_SYS_TIME', 1)
+ conf.DEFINE('TIME_WITH_SYS_TIME', 1)
conf.define('SHLIBEXT', "so", quote=True)
conf.CHECK_FUNCS('asprintf vasprintf setenv unsetenv strnlen strtoull __strtoull')
conf.CHECK_FUNCS('strtouq strtoll __strtoll strtoq memmem printf memset memcpy')
conf.CHECK_FUNCS('connect gethostbyname if_nametoindex socketpair')
- conf.CHECK_FUNCS('inet_ntoa inet_ntop dirfd getdirentries getdents syslog')
- conf.CHECK_FUNCS('timegm getifaddrs freeifaddrs inet_aton inet_atop crypt')
+ conf.CHECK_FUNCS('inet_ntoa inet_aton inet_ntop inet_pton')
+ conf.CHECK_FUNCS('dirfd getdirentries getdents syslog')
+ conf.CHECK_FUNCS('timegm getifaddrs freeifaddrs crypt')
conf.CHECK_FUNCS_IN('dlopen dlsym dlerror dlclose', 'dl')
conf.CHECK_FUNCS_IN('poptGetContext', 'popt')
conf.CHECK_FUNCS_IN('res_search', 'resolv')
+ conf.CHECK_FUNCS_IN('gettext', 'intl')
+
+ conf.CHECK_VARIABLE('rl_event_hook', define='HAVE_DECL_RL_EVENT_HOOK', always=True)
conf.check_cc(fragment='''
#include <stdarg.h>
def build(bld):
bld.set_rpath()
+ # libreplace needs to put the library in the right build groups
+ # as libreplace is a base library for everything, even for our
+ # compilers, we need libreplace to build very early
+ bld.SETUP_BUILD_GROUPS()
+
REPLACE_SOURCE = 'replace.c snprintf.c'
bld.SAMBA_LIBRARY('replace',
- REPLACE_SOURCE)
+ source=REPLACE_SOURCE,
+ group='base_libraries')
TEST_SOURCES = '''test/testsuite.c test/main.c test/strptime.c
test/os2_delete.c test/getifaddrs.c'''
bld.SAMBA_BINARY('replace_testsuite',
TEST_SOURCES,
- 'replace')
+ deps='replace')
NET_SOURCES = []
- if not 'HAVE_INET_NTOA' in bld.env: NET_SOURCES.append('inet_ntoa.c')
- if not 'HAVE_INET_ATON' in bld.env: NET_SOURCES.append('inet_aton.c')
- if not 'HAVE_INET_ATOP' in bld.env: NET_SOURCES.append('inet_atop.c')
- if not 'HAVE_SOCKETPAIR' in bld.env: NET_SOURCES.append('socketpair.c')
+ 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)