conf.CHECK_HEADERS('shadow.h sys/acl.h')
conf.CHECK_HEADERS('sys/attributes.h attr/attributes.h sys/capability.h sys/dir.h sys/epoll.h')
conf.CHECK_HEADERS('port.h')
- conf.CHECK_HEADERS('sys/fcntl.h sys/filio.h sys/filsys.h sys/fs/s5param.h sys/fs/vx/quota.h')
+ conf.CHECK_HEADERS('sys/fcntl.h sys/filio.h sys/filsys.h sys/fs/s5param.h')
conf.CHECK_HEADERS('sys/id.h sys/ioctl.h sys/ipc.h sys/mman.h sys/mode.h sys/ndir.h sys/priv.h')
conf.CHECK_HEADERS('sys/resource.h sys/security.h sys/shm.h sys/statfs.h sys/statvfs.h sys/termio.h')
conf.CHECK_HEADERS('sys/vfs.h sys/xattr.h termio.h termios.h sys/file.h')
'socket nsl', checklibc=True,
headers='sys/socket.h netinet/in.h arpa/inet.h netdb.h')
+ conf.CHECK_FUNCS('memset_s memset_explicit')
+
+ conf.CHECK_CODE('''
+ #include <string.h>
+
+ int main(void)
+ {
+ char buf[] = "This is some content";
+ memset(buf, '\0', sizeof(buf)); __asm__ volatile("" : : "g"(&buf) : "memory");
+ return 0;
+ }
+ ''',
+ define='HAVE_GCC_VOLATILE_MEMORY_PROTECTION',
+ addmain=False,
+ msg='Checking for volatile memory protection',
+ local_include=False)
+
# Some old Linux systems have broken header files and
# miss the IPV6_V6ONLY define in netinet/in.h,
# but have it in linux/in6.h.
'HAVE_FALLTHROUGH_ATTRIBUTE',
addmain=False,
strict=True,
+ cflags=['-Werror=missing-declarations'],
msg='Checking for fallthrough attribute')
# these may be builtins, so we need the link=False strategy
conf.CHECK_FUNCS('getgrent_r getgrgid_r getgrnam_r getgrouplist getpagesize')
conf.CHECK_FUNCS('getpwent_r getpwnam_r getpwuid_r epoll_create')
conf.CHECK_FUNCS('port_create')
+ conf.CHECK_FUNCS('getprogname')
conf.SET_TARGET_TYPE('attr', 'EMPTY')
conf.CHECK_VARIABLE('rl_event_hook', define='HAVE_DECL_RL_EVENT_HOOK', always=True,
headers='readline.h readline/readline.h readline/history.h')
+ conf.CHECK_VARIABLE('program_invocation_short_name', headers='errno.h')
conf.CHECK_DECLS('snprintf vsnprintf asprintf vasprintf')
conf.CHECK_DECLS('errno', headers='errno.h', reverse=True)
conf.CHECK_DECLS('EWOULDBLOCK', headers='errno.h')
- conf.CHECK_DECLS('environ getgrent_r getpwent_r', reverse=True, headers='pwd.h grp.h')
+ conf.CHECK_DECLS('environ', reverse=True, headers='unistd.h')
+ conf.CHECK_DECLS('getgrent_r getpwent_r', reverse=True, headers='pwd.h grp.h')
conf.CHECK_DECLS('pread pwrite setenv setresgid setresuid', reverse=True)
if conf.CONFIG_SET('HAVE_EPOLL_CREATE') and conf.CONFIG_SET('HAVE_SYS_EPOLL_H'):
conf.CHECK_FUNCS('strptime')
conf.CHECK_DECLS('strptime', headers='time.h')
conf.CHECK_CODE('''#define LIBREPLACE_CONFIGURE_TEST_STRPTIME
- #include "test/strptime.c"''',
+ #include "tests/strptime.c"''',
define='HAVE_WORKING_STRPTIME',
execute=True,
addmain=False,
define='HAVE_GETTIMEOFDAY_TZ_VOID',
headers='sys/time.h')
- conf.CHECK_CODE('#include "test/snprintf.c"',
+ conf.CHECK_CODE('#include "tests/snprintf.c"',
define="HAVE_C99_VSNPRINTF",
execute=True,
addmain=False,
msg="Checking for C99 vsnprintf")
- conf.CHECK_CODE('#include "test/shared_mmap.c"',
+ conf.CHECK_CODE('#include "tests/shared_mmap.c"',
addmain=False, add_headers=False, execute=True,
define='HAVE_SHARED_MMAP',
msg="Checking for HAVE_SHARED_MMAP")
- conf.CHECK_CODE('#include "test/shared_mremap.c"',
+ conf.CHECK_CODE('#include "tests/shared_mremap.c"',
addmain=False, add_headers=False, execute=True,
define='HAVE_MREMAP',
msg="Checking for HAVE_MREMAP")
# OpenBSD (and I've heard HPUX) doesn't sync between mmap and write.
# FIXME: Anything other than a 0 or 1 exit code should abort configure!
- conf.CHECK_CODE('#include "test/incoherent_mmap.c"',
+ conf.CHECK_CODE('#include "tests/incoherent_mmap.c"',
addmain=False, add_headers=False, execute=True,
define='HAVE_INCOHERENT_MMAP',
msg="Checking for HAVE_INCOHERENT_MMAP")
#include "snprintf.c"
#include "getifaddrs.c"
#define getifaddrs_test main
- #include "test/getifaddrs.c"
+ #include "tests/getifaddrs.c"
''' % method,
method,
lib='nsl socket' + bsd_for_strlcpy,
'utime', 'utimes', 'dup2', 'chown', 'link', 'readlink',
'symlink', 'lchown', 'realpath', 'memmem', 'vdprintf',
'dprintf', 'get_current_dir_name',
- 'strerror_r', 'clock_gettime'],
+ 'strerror_r', 'clock_gettime', 'memset_s'],
'timegm.c': ['timegm'],
# Note: C99_VSNPRINTF is not a function, but a special condition
# for replacement
REPLACE_HOSTCC_SOURCE = ''
- for filename, functions in REPLACEMENT_FUNCTIONS.iteritems():
- for function in functions:
+ for filename in REPLACEMENT_FUNCTIONS.keys():
+ for function in REPLACEMENT_FUNCTIONS[filename]:
if not bld.CONFIG_SET('HAVE_%s' % function.upper()):
REPLACE_HOSTCC_SOURCE += ' %s' % filename
break
private_library=True,
deps='crypt dl nsl socket rt attr' + extra_libs)
- replace_test_cflags="-Wno-format-zero-length"
+ replace_test_cflags = ''
if bld.CONFIG_SET('HAVE_WNO_FORMAT_TRUNCATION'):
replace_test_cflags += " -Wno-format-truncation"
bld.SAMBA_SUBSYSTEM('replace-test',
- source='''test/testsuite.c test/strptime.c
- test/os2_delete.c test/getifaddrs.c''',
+ source='''tests/testsuite.c tests/strptime.c
+ tests/os2_delete.c tests/getifaddrs.c''',
deps='replace',
cflags=replace_test_cflags)
- if bld.env.standalone_replace:
- bld.SAMBA_BINARY('replace_testsuite',
- source='test/main.c',
- deps='replace replace-test',
- install=False)
+ bld.SAMBA_BINARY('replace_testsuite',
+ source='tests/main.c',
+ deps='replace replace-test',
+ install=False)
# build replacements for stdint.h and stdbool.h if needed
bld.SAMBA_GENERATOR('replace_stdint_h',
bld.SAMBA_SUBSYSTEM('samba_intl', source='', use_global_deps=False,deps=bld.env.intl_libs)
+def testonly(ctx):
+ '''run talloc testsuite'''
+ import samba_utils
+
+ samba_utils.ADD_LD_LIBRARY_PATH('bin/shared')
+ samba_utils.ADD_LD_LIBRARY_PATH('bin/shared/private')
+
+ cmd = os.path.join(Context.g_module.out, 'replace_testsuite')
+ ret = samba_utils.RUN_COMMAND(cmd)
+ print("testsuite returned %d" % ret)
+ sys.exit(ret)
+
+# WAF doesn't build the unit tests for this, maybe because they don't link with talloc?
+# This forces it
+def test(ctx):
+ Options.commands.append('build')
+ Options.commands.append('testonly')
+
def dist():
'''makes a tarball for distribution'''
samba_dist.dist()