Changeset 988 for vendor/current/lib/replace/wscript
- Timestamp:
- Nov 24, 2016, 1:14:11 PM (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
vendor/current/lib/replace/wscript
r740 r988 6 6 blddir = 'bin' 7 7 8 import sys, os , Utils8 import sys, os 9 9 10 10 # find the buildtools directory 11 11 srcdir = '.' 12 12 while not os.path.exists(srcdir+'/buildtools') and len(srcdir.split('/')) < 5: 13 srcdir = '../' + srcdir13 srcdir = srcdir + '/..' 14 14 sys.path.insert(0, srcdir + '/buildtools/wafsamba') 15 15 16 16 import wafsamba, samba_dist 17 import Options, os, preproc18 19 samba_dist.DIST_DIRS('lib/replace buildtools:buildtools ')17 import Options, Utils 18 19 samba_dist.DIST_DIRS('lib/replace buildtools:buildtools third_party/waf:third_party/waf') 20 20 21 21 def set_options(opt): … … 24 24 opt.RECURSE('buildtools/wafsamba') 25 25 26 @ wafsamba.runonce26 @Utils.run_once 27 27 def configure(conf): 28 28 conf.RECURSE('buildtools/wafsamba') … … 30 30 conf.env.standalone_replace = conf.IN_LAUNCH_DIR() 31 31 32 conf.DEFINE('HAVE_LIBREPLACE', 1) 32 33 conf.DEFINE('LIBREPLACE_NETWORK_CHECKS', 1) 33 34 # on Tru64 certain features are only available with _OSF_SOURCE set to 135 # and _XOPEN_SOURCE set to 60036 if conf.env['SYSTEM_UNAME_SYSNAME'] == 'OSF1':37 conf.DEFINE('_OSF_SOURCE', 1, add_to_cflags=True)38 conf.DEFINE('_XOPEN_SOURCE', 600, add_to_cflags=True)39 34 40 35 conf.CHECK_HEADERS('linux/types.h crypt.h locale.h acl/libacl.h compat.h') … … 43 38 conf.CHECK_HEADERS('libaio.h locale.h ndir.h pwd.h') 44 39 conf.CHECK_HEADERS('shadow.h sys/acl.h') 45 conf.CHECK_HEADERS('sys/attributes.h sys/capability.h sys/dir.h sys/epoll.h') 40 conf.CHECK_HEADERS('sys/attributes.h attr/attributes.h sys/capability.h sys/dir.h sys/epoll.h') 41 conf.CHECK_HEADERS('port.h') 46 42 conf.CHECK_HEADERS('sys/fcntl.h sys/filio.h sys/filsys.h sys/fs/s5param.h sys/fs/vx/quota.h') 47 43 conf.CHECK_HEADERS('sys/id.h sys/ioctl.h sys/ipc.h sys/mman.h sys/mode.h sys/ndir.h sys/priv.h') 48 44 conf.CHECK_HEADERS('sys/resource.h sys/security.h sys/shm.h sys/statfs.h sys/statvfs.h sys/termio.h') 49 45 conf.CHECK_HEADERS('sys/vfs.h sys/xattr.h termio.h termios.h sys/file.h') 50 conf.CHECK_HEADERS('sys/wait.h sys/stat.h malloc.h grp.h') 46 conf.CHECK_HEADERS('sys/ucontext.h sys/wait.h sys/stat.h') 47 48 if not conf.CHECK_DECLS('malloc', headers='stdlib.h'): 49 conf.CHECK_HEADERS('malloc.h') 50 51 conf.CHECK_HEADERS('grp.h') 51 52 conf.CHECK_HEADERS('sys/select.h setjmp.h utime.h sys/syslog.h syslog.h') 52 53 conf.CHECK_HEADERS('stdarg.h vararg.h sys/mount.h mntent.h') … … 57 58 conf.CHECK_HEADERS('sys/uio.h ifaddrs.h direct.h dirent.h') 58 59 conf.CHECK_HEADERS('windows.h winsock2.h ws2tcpip.h') 59 conf.CHECK_HEADERS('libintl.h errno.h') 60 conf.CHECK_HEADERS('gcrypt.h getopt.h iconv.h') 61 conf.CHECK_HEADERS('sys/inotify.h memory.h nss.h sasl/sasl.h') 62 conf.CHECK_HEADERS('security/pam_appl.h sys/inotify.h zlib.h asm/unistd.h') 60 conf.CHECK_HEADERS('errno.h') 61 conf.CHECK_HEADERS('getopt.h iconv.h') 62 conf.CHECK_HEADERS('memory.h nss.h sasl/sasl.h') 63 64 conf.CHECK_FUNCS_IN('inotify_init', 'inotify', checklibc=True, 65 headers='sys/inotify.h') 66 67 conf.CHECK_HEADERS('security/pam_appl.h zlib.h asm/unistd.h') 63 68 conf.CHECK_HEADERS('aio.h sys/unistd.h rpc/rpc.h rpc/nettype.h alloca.h float.h') 64 69 65 conf.CHECK_HEADERS('rpcsvc/nis.h rpcsvc/ypclnt.h sys/ prctl.h sys/sysctl.h')70 conf.CHECK_HEADERS('rpcsvc/nis.h rpcsvc/ypclnt.h sys/sysctl.h') 66 71 conf.CHECK_HEADERS('sys/fileio.h sys/filesys.h sys/dustat.h sys/sysmacros.h') 67 conf.CHECK_HEADERS('xfs/libxfs.h netgroup.h rpcsvc/yp_prot.h') 72 conf.CHECK_HEADERS('xfs/libxfs.h netgroup.h') 73 74 conf.CHECK_CODE('', headers='rpc/rpc.h rpcsvc/yp_prot.h', define='HAVE_RPCSVC_YP_PROT_H') 75 68 76 conf.CHECK_HEADERS('valgrind.h valgrind/valgrind.h valgrind/memcheck.h') 69 77 conf.CHECK_HEADERS('nss_common.h nsswitch.h ns_api.h') … … 71 79 conf.CHECK_HEADERS('utmp.h utmpx.h lastlog.h') 72 80 conf.CHECK_HEADERS('syscall.h sys/syscall.h inttypes.h') 81 conf.CHECK_HEADERS('sys/atomic.h') 82 conf.CHECK_HEADERS('libgen.h') 83 84 # Check for process set name support 85 conf.CHECK_CODE(''' 86 #include <sys/prctl.h> 87 int main(void) { 88 prctl(0); 89 return 0; 90 } 91 ''', 92 'HAVE_PRCTL', 93 headers='sys/prctl.h', 94 msg='Checking for prctl syscall') 95 96 conf.CHECK_CODE(''' 97 #include <unistd.h> 98 #ifdef HAVE_FCNTL_H 99 #include <fcntl.h> 100 #endif 101 int main(void) { int fd = open("/dev/null", O_DIRECT); } 102 ''', 103 define='HAVE_OPEN_O_DIRECT', 104 addmain=False, 105 msg='Checking for O_DIRECT flag to open(2)') 73 106 74 107 conf.CHECK_TYPES('"long long" intptr_t uintptr_t ptrdiff_t comparison_fn_t') … … 91 124 conf.CHECK_TYPE('volatile int', define='HAVE_VOLATILE') 92 125 conf.CHECK_TYPE('uint_t', 'unsigned int') 126 conf.CHECK_TYPE('blksize_t', 'long', headers='sys/types.h sys/stat.h unistd.h') 127 conf.CHECK_TYPE('blkcnt_t', 'long', headers='sys/types.h sys/stat.h unistd.h') 93 128 94 129 conf.CHECK_SIZEOF('bool char int "long long" long short size_t ssize_t') … … 107 142 108 143 conf.CHECK_TYPE_IN('sig_atomic_t', 'signal.h', define='HAVE_SIG_ATOMIC_T_TYPE') 144 conf.CHECK_FUNCS('sigsetmask siggetmask sigprocmask sigblock sigaction sigset') 109 145 110 146 conf.CHECK_FUNCS_IN('''inet_ntoa inet_aton inet_ntop inet_pton connect gethostbyname … … 156 192 headers='sys/socket.h netdb.h netinet/in.h') 157 193 194 if conf.CONFIG_SET('HAVE_SYS_UCONTEXT_H') and conf.CONFIG_SET('HAVE_SIGNAL_H'): 195 conf.CHECK_CODE(''' 196 ucontext_t uc; 197 sigaddset(&uc.uc_sigmask, SIGUSR1); 198 ''', 199 'HAVE_UCONTEXT_T', 200 msg="Checking whether we have ucontext_t", 201 headers='signal.h sys/ucontext.h') 202 203 # Check for atomic builtins. */ 204 conf.CHECK_CODE(''' 205 int main(void) { 206 int i; 207 (void)__sync_fetch_and_add(&i, 1); 208 return 0; 209 } 210 ''', 211 'HAVE___SYNC_FETCH_AND_ADD', 212 msg='Checking for __sync_fetch_and_add compiler builtin') 213 214 conf.CHECK_CODE(''' 215 #include <stdint.h> 216 #include <sys/atomic.h> 217 int main(void) { 218 int32_t i; 219 atomic_add_32(&i, 1); 220 return 0; 221 } 222 ''', 223 'HAVE_ATOMIC_ADD_32', 224 headers='stdint.h sys/atomic.h', 225 msg='Checking for atomic_add_32 compiler builtin') 226 158 227 # these may be builtins, so we need the link=False strategy 159 228 conf.CHECK_FUNCS('strdup memmem printf memset memcpy memmove strcpy strncpy bzero', link=False) 160 229 230 # See https://bugzilla.samba.org/show_bug.cgi?id=1097 231 # 232 # Ported in from autoconf where it was added with this commit: 233 # commit 804cfb20a067b4b687089dc72a8271b3abf20f31 234 # Author: Simo Sorce <idra@samba.org> 235 # Date: Wed Aug 25 14:24:16 2004 +0000 236 # r2070: Let's try to overload srnlen and strndup for AIX where they are natly broken. 237 238 host_os = sys.platform 239 if host_os.rfind('aix') > -1: 240 conf.DEFINE('BROKEN_STRNLEN', 1) 241 conf.DEFINE('BROKEN_STRNDUP', 1) 242 161 243 conf.CHECK_FUNCS('shl_load shl_unload shl_findsym') 162 244 conf.CHECK_FUNCS('pipe strftime srandom random srand rand usleep setbuffer') 163 conf.CHECK_FUNCS('lstat getpgrp utime utimes set euid setresuid setegid')164 conf.CHECK_FUNCS('setre sgid chroot strerror vsyslog setlinebuf mktime')165 conf.CHECK_FUNCS('ftruncate chsize rename waitpid wait4 strlcpy strlcat')166 conf.CHECK_FUNCS('initgroups pread pwrite strndup strcasestr ')245 conf.CHECK_FUNCS('lstat getpgrp utime utimes setuid seteuid setreuid setresuid setgid setegid') 246 conf.CHECK_FUNCS('setregid setresgid chroot strerror vsyslog setlinebuf mktime') 247 conf.CHECK_FUNCS('ftruncate chsize rename waitpid wait4') 248 conf.CHECK_FUNCS('initgroups pread pwrite strndup strcasestr strsep') 167 249 conf.CHECK_FUNCS('strtok_r mkdtemp dup2 dprintf vdprintf isatty chown lchown') 168 250 conf.CHECK_FUNCS('link readlink symlink realpath snprintf vsnprintf') 169 251 conf.CHECK_FUNCS('asprintf vasprintf setenv unsetenv strnlen strtoull __strtoull') 170 conf.CHECK_FUNCS('strtouq strtoll __strtoll strtoq') 252 conf.CHECK_FUNCS('strtouq strtoll __strtoll strtoq memalign posix_memalign') 253 254 if conf.CONFIG_SET('HAVE_MEMALIGN'): 255 conf.CHECK_DECLS('memalign', headers='malloc.h') 256 257 conf.CHECK_FUNCS('prctl dirname basename') 258 259 # libbsd on some platforms provides strlcpy and strlcat 260 if not conf.CHECK_FUNCS('strlcpy strlcat'): 261 conf.CHECK_FUNCS_IN('strlcpy strlcat', 'bsd', headers='bsd/string.h', 262 checklibc=True) 263 if not conf.CHECK_FUNCS('getpeereid'): 264 conf.CHECK_FUNCS_IN('getpeereid', 'bsd', headers='sys/types.h bsd/unistd.h') 265 if not conf.CHECK_FUNCS_IN('setproctitle', 'setproctitle', headers='setproctitle.h'): 266 conf.CHECK_FUNCS_IN('setproctitle', 'bsd', headers='sys/types.h bsd/unistd.h') 267 268 conf.CHECK_CODE(''' 269 struct ucred cred; 270 socklen_t cred_len; 271 int ret = getsockopt(0, SOL_SOCKET, SO_PEERCRED, &cred, &cred_len);''', 272 'HAVE_PEERCRED', 273 msg="Checking whether we can use SO_PEERCRED to get socket credentials", 274 headers='sys/types.h sys/socket.h') 275 171 276 #Some OS (ie. freebsd) return EINVAL if the convertion could not be done, it's not what we expect 172 277 #Let's detect those cases … … 183 288 headers = 'errno.h', 184 289 execute = True, 185 define_ret = True,186 290 define = 'HAVE_BSD_STRTOLL', 187 291 ) … … 189 293 conf.CHECK_FUNCS('getdirentries getdents syslog') 190 294 conf.CHECK_FUNCS('gai_strerror get_current_dir_name') 191 conf.CHECK_FUNCS('timegm getifaddrs freeifaddrs mmap setgroups s etsid')295 conf.CHECK_FUNCS('timegm getifaddrs freeifaddrs mmap setgroups syscall setsid') 192 296 conf.CHECK_FUNCS('getgrent_r getgrgid_r getgrnam_r getgrouplist getpagesize') 193 297 conf.CHECK_FUNCS('getpwent_r getpwnam_r getpwuid_r epoll_create') 298 conf.CHECK_FUNCS('port_create') 299 300 conf.SET_TARGET_TYPE('attr', 'EMPTY') 301 302 xattr_headers='sys/attributes.h attr/xattr.h sys/xattr.h' 303 304 conf.CHECK_FUNCS_IN(''' 305 fgetxattr flistea flistxattr 306 fremovexattr fsetxattr getxattr 307 listxattr removexattr setxattr 308 ''', 'attr', checklibc=True, headers=xattr_headers) 309 310 # We need to check for linux xattrs first, as we do not wish to link to -lattr 311 # (the XFS compat API) on Linux systems with the native xattr API 312 if not conf.CONFIG_SET('HAVE_GETXATTR'): 313 conf.CHECK_FUNCS_IN(''' 314 attr_get attr_getf attr_list attr_listf attropen attr_remove 315 attr_removef attr_set attr_setf extattr_delete_fd extattr_delete_file 316 extattr_get_fd extattr_get_file extattr_list_fd extattr_list_file 317 extattr_set_fd extattr_set_file fgetea 318 fremoveea fsetea getea listea 319 removeea setea 320 ''', 'attr', checklibc=True, headers=xattr_headers) 321 322 if (conf.CONFIG_SET('HAVE_ATTR_LISTF') or 323 conf.CONFIG_SET('HAVE_EXTATTR_LIST_FD') or 324 conf.CONFIG_SET('HAVE_FLISTEA') or 325 conf.CONFIG_SET('HAVE_FLISTXATTR')): 326 conf.DEFINE('HAVE_XATTR_SUPPORT', 1) 327 328 # Darwin has extra options to xattr-family functions 329 conf.CHECK_CODE('getxattr(NULL, NULL, NULL, 0, 0, 0)', 330 headers=xattr_headers, local_include=False, 331 define='XATTR_ADDITIONAL_OPTIONS', 332 msg="Checking whether xattr interface takes additional options") 194 333 195 334 conf.CHECK_FUNCS_IN('dlopen dlsym dlerror dlclose', 'dl', … … 206 345 for c in ['CLOCK_MONOTONIC', 'CLOCK_PROCESS_CPUTIME_ID', 'CLOCK_REALTIME']: 207 346 conf.CHECK_CODE(''' 208 209 210 211 212 213 214 215 216 217 218 219 220 347 #if TIME_WITH_SYS_TIME 348 # include <sys/time.h> 349 # include <time.h> 350 #else 351 # if HAVE_SYS_TIME_H 352 # include <sys/time.h> 353 # else 354 # include <time.h> 355 # endif 356 #endif 357 clockid_t clk = %s''' % c, 358 'HAVE_%s' % c, 359 msg='Checking whether the clock_gettime clock ID %s is available' % c) 221 360 222 361 conf.CHECK_TYPE('struct timespec', headers='sys/time.h time.h') … … 229 368 230 369 231 if not conf.CHECK_FUNCS_IN('gettext', 'intl', checklibc=True, headers='libintl.h'): 232 # Some hosts need lib iconv for linking with lib intl 233 # So we try with flags just in case it helps. 234 oldflags = conf.env['LDFLAGS_INTL'] 235 conf.env['LDFLAGS_INTL'] = "-liconv" 236 if not conf.CHECK_LIB('intl'): 237 conf.env['LDFLAGS_INTL'] = oldflags 370 # try to find libintl (if --without-gettext is not given) 371 conf.env.intl_libs='' 372 if not Options.options.disable_gettext: 373 conf.CHECK_HEADERS('libintl.h') 374 conf.CHECK_LIB('intl') 375 conf.CHECK_DECLS('dgettext gettext bindtextdomain textdomain bind_textdomain_codeset', headers="libintl.h") 376 # *textdomain functions are not strictly necessary 377 conf.CHECK_FUNCS_IN('bindtextdomain textdomain bind_textdomain_codeset', 378 '', checklibc=True, headers='libintl.h') 379 # gettext and dgettext must exist 380 # on some systems (the ones with glibc, those are in libc) 381 if conf.CHECK_FUNCS_IN('dgettext gettext', '', checklibc=True, headers='libintl.h'): 382 # save for dependency definitions 383 conf.env.intl_libs='' 384 # others (e.g. FreeBSD) have seperate libintl 385 elif conf.CHECK_FUNCS_IN('dgettext gettext', 'intl', checklibc=False, headers='libintl.h'): 386 # save for dependency definitions 387 conf.env.intl_libs='intl' 388 # recheck with libintl 389 conf.CHECK_FUNCS_IN('bindtextdomain textdomain bind_textdomain_codeset', 390 'intl', checklibc=False, headers='libintl.h') 238 391 else: 239 conf.CHECK_FUNCS_IN('gettext', 'intl', checklibc=True, headers='libintl.h') 240 241 conf.CHECK_FUNCS_IN('dgettext gettext', 'intl', headers='libintl.h') 392 # Some hosts need lib iconv for linking with lib intl 393 # So we try with flags just in case it helps. 394 oldflags = list(conf.env['EXTRA_LDFLAGS']); 395 conf.env['EXTRA_LDFLAGS'].extend(["-liconv"]) 396 conf.CHECK_FUNCS_IN('dgettext gettext bindtextdomain textdomain bind_textdomain_codeset', 397 'intl', checklibc=False, headers='libintl.h') 398 conf.env['EXTRA_LDFLAGS'] = oldflags 399 if conf.env['HAVE_GETTEXT'] and conf.env['HAVE_DGETTEXT']: 400 # save for dependency definitions 401 conf.env.intl_libs='iconv intl' 402 403 # did we find both prototypes and a library to link against? 404 # if not, unset the detected values (see Bug #9911) 405 if not (conf.env['HAVE_GETTEXT'] and conf.env['HAVE_DECL_GETTEXT']): 406 conf.undefine('HAVE_GETTEXT') 407 conf.undefine('HAVE_DECL_GETTEXT') 408 if not (conf.env['HAVE_DGETTEXT'] and conf.env['HAVE_DECL_DGETTEXT']): 409 conf.undefine('HAVE_DGETTEXT') 410 conf.undefine('HAVE_DECL_DGETTEXT') 411 242 412 conf.CHECK_FUNCS_IN('pthread_create', 'pthread', checklibc=True, headers='pthread.h') 413 414 PTHREAD_CFLAGS='error' 415 PTHREAD_LDFLAGS='error' 416 417 if PTHREAD_LDFLAGS == 'error': 418 if conf.CHECK_FUNCS_IN('pthread_attr_init', 'pthread'): 419 PTHREAD_CFLAGS='-D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS' 420 PTHREAD_LDFLAGS='-lpthread' 421 if PTHREAD_LDFLAGS == 'error': 422 if conf.CHECK_FUNCS_IN('pthread_attr_init', 'pthreads'): 423 PTHREAD_CFLAGS='-D_THREAD_SAFE' 424 PTHREAD_LDFLAGS='-lpthreads' 425 if PTHREAD_LDFLAGS == 'error': 426 if conf.CHECK_FUNCS_IN('pthread_attr_init', 'c_r'): 427 PTHREAD_CFLAGS='-D_THREAD_SAFE -pthread' 428 PTHREAD_LDFLAGS='-pthread' 429 if PTHREAD_LDFLAGS == 'error': 430 if conf.CHECK_FUNCS('pthread_attr_init'): 431 PTHREAD_CFLAGS='-D_REENTRANT' 432 PTHREAD_LDFLAGS='-lpthread' 433 # especially for HP-UX, where the CHECK_FUNC macro fails to test for 434 # pthread_attr_init. On pthread_mutex_lock it works there... 435 if PTHREAD_LDFLAGS == 'error': 436 if conf.CHECK_FUNCS_IN('pthread_mutex_lock', 'pthread'): 437 PTHREAD_CFLAGS='-D_REENTRANT' 438 PTHREAD_LDFLAGS='-lpthread' 439 440 if PTHREAD_CFLAGS != 'error' and PTHREAD_LDFLAGS != 'error': 441 if conf.CONFIG_SET('replace_add_global_pthread'): 442 conf.ADD_CFLAGS(PTHREAD_CFLAGS) 443 conf.ADD_LDFLAGS(PTHREAD_LDFLAGS) 444 conf.CHECK_HEADERS('pthread.h') 445 conf.DEFINE('HAVE_PTHREAD', '1') 446 447 if conf.CONFIG_SET('HAVE_PTHREAD'): 448 449 conf.CHECK_FUNCS_IN('pthread_mutexattr_setrobust', 'pthread', 450 checklibc=True, headers='pthread.h') 451 if not conf.CONFIG_SET('HAVE_PTHREAD_MUTEXATTR_SETROBUST'): 452 conf.CHECK_FUNCS_IN('pthread_mutexattr_setrobust_np', 'pthread', 453 checklibc=True, headers='pthread.h') 454 455 conf.CHECK_DECLS('PTHREAD_MUTEX_ROBUST', headers='pthread.h') 456 if not conf.CONFIG_SET('HAVE_DECL_PTHREAD_MUTEX_ROBUST'): 457 conf.CHECK_DECLS('PTHREAD_MUTEX_ROBUST_NP', headers='pthread.h') 458 459 conf.CHECK_FUNCS_IN('pthread_mutex_consistent', 'pthread', 460 checklibc=True, headers='pthread.h') 461 if not conf.CONFIG_SET('HAVE_PTHREAD_MUTEX_CONSISTENT'): 462 conf.CHECK_FUNCS_IN('pthread_mutex_consistent_np', 'pthread', 463 checklibc=True, headers='pthread.h') 464 465 if ((conf.CONFIG_SET('HAVE_PTHREAD_MUTEXATTR_SETROBUST') or 466 conf.CONFIG_SET('HAVE_PTHREAD_MUTEXATTR_SETROBUST_NP')) and 467 (conf.CONFIG_SET('HAVE_DECL_PTHREAD_MUTEX_ROBUST') or 468 conf.CONFIG_SET('HAVE_DECL_PTHREAD_MUTEX_ROBUST_NP')) and 469 (conf.CONFIG_SET('HAVE_PTHREAD_MUTEX_CONSISTENT') or 470 conf.CONFIG_SET('HAVE_PTHREAD_MUTEX_CONSISTENT_NP'))): 471 conf.DEFINE('HAVE_ROBUST_MUTEXES', 1) 243 472 244 473 conf.CHECK_FUNCS_IN('crypt', 'crypt', checklibc=True) … … 250 479 251 480 conf.CHECK_DECLS('errno', headers='errno.h', reverse=True) 481 conf.CHECK_DECLS('EWOULDBLOCK', headers='errno.h') 252 482 conf.CHECK_DECLS('environ getgrent_r getpwent_r', reverse=True, headers='pwd.h grp.h') 253 483 conf.CHECK_DECLS('pread pwrite setenv setresgid setresuid', reverse=True) … … 256 486 conf.DEFINE('HAVE_EPOLL', 1) 257 487 488 if conf.CONFIG_SET('HAVE_PORT_CREATE') and conf.CONFIG_SET('HAVE_PORT_H'): 489 conf.DEFINE('HAVE_SOLARIS_PORTS', 1) 490 258 491 conf.CHECK_HEADERS('poll.h') 259 492 conf.CHECK_FUNCS('poll') 260 493 261 if not conf.CHECK_CODE('''#define LIBREPLACE_CONFIGURE_TEST_STRPTIME 262 #include "test/strptime.c"''', 263 define='HAVE_STRPTIME', 264 addmain=False, 265 msg='Checking for working strptime'): 266 conf.DEFINE('REPLACE_STRPTIME', 1) 267 else: 268 conf.CHECK_CODE(''' 269 const char *s = "20070414101546Z"; 270 char *ret; 271 struct tm t; 272 memset(&t, 0, sizeof(t)); 273 ret = strptime(s, "%Y%m%d%H%M%S", &t); 274 if (ret == NULL || t.tm_wday != 6) { 275 return 0; 276 } else { 277 return 1; 278 } 279 ''', 280 msg="Checking correct behavior of strptime", 281 headers = 'time.h', 282 execute = True, 283 define_ret = True, 284 define = 'REPLACE_STRPTIME', 285 ) 286 287 conf.CHECK_CODE('gettimeofday(NULL, NULL)', 'HAVE_GETTIMEOFDAY_TZ', execute=False) 494 conf.CHECK_FUNCS('strptime') 495 conf.CHECK_DECLS('strptime', headers='time.h') 496 conf.CHECK_CODE('''#define LIBREPLACE_CONFIGURE_TEST_STRPTIME 497 #include "test/strptime.c"''', 498 define='HAVE_WORKING_STRPTIME', 499 execute=True, 500 addmain=False, 501 msg='Checking for working strptime') 502 503 conf.CHECK_C_PROTOTYPE('gettimeofday', 504 'int gettimeofday(struct timeval *tv, struct timezone *tz)', 505 define='HAVE_GETTIMEOFDAY_TZ', headers='sys/time.h') 506 507 conf.CHECK_C_PROTOTYPE('gettimeofday', 508 'int gettimeofday(struct timeval *tv, void *tz)', 509 define='HAVE_GETTIMEOFDAY_TZ_VOID', 510 headers='sys/time.h') 288 511 289 512 conf.CHECK_CODE('#include "test/snprintf.c"', 290 513 define="HAVE_C99_VSNPRINTF", 291 execute= 1,514 execute=True, 292 515 addmain=False, 293 516 msg="Checking for C99 vsnprintf") 517 518 conf.CHECK_CODE('#include "test/shared_mmap.c"', 519 addmain=False, add_headers=False, execute=True, 520 define='HAVE_SHARED_MMAP', 521 msg="Checking for HAVE_SHARED_MMAP") 522 523 conf.CHECK_CODE('#include "test/shared_mremap.c"', 524 addmain=False, add_headers=False, execute=True, 525 define='HAVE_MREMAP', 526 msg="Checking for HAVE_MREMAP") 527 528 # OpenBSD (and I've heard HPUX) doesn't sync between mmap and write. 529 # FIXME: Anything other than a 0 or 1 exit code should abort configure! 530 conf.CHECK_CODE('#include "test/incoherent_mmap.c"', 531 addmain=False, add_headers=False, execute=True, 532 define='HAVE_INCOHERENT_MMAP', 533 msg="Checking for HAVE_INCOHERENT_MMAP") 294 534 295 535 conf.SAMBA_BUILD_ENV() … … 342 582 struct stat st; 343 583 char tpl[20]="/tmp/test.XXXXXX"; 584 char tpl2[20]="/tmp/test.XXXXXX"; 344 585 int fd = mkstemp(tpl); 345 if (fd == -1) exit(1); 586 int fd2 = mkstemp(tpl2); 587 if (fd == -1) { 588 if (fd2 != -1) { 589 unlink(tpl2); 590 } 591 exit(1); 592 } 593 if (fd2 == -1) exit(1); 346 594 unlink(tpl); 595 unlink(tpl2); 347 596 if (fstat(fd, &st) != 0) exit(1); 348 597 if ((st.st_mode & 0777) != 0600) exit(1); 598 if (strcmp(tpl, "/tmp/test.XXXXXX") == 0) { 599 exit(1); 600 } 601 if (strcmp(tpl, tpl2) == 0) { 602 exit(1); 603 } 349 604 exit(0); 350 605 ''', … … 352 607 execute=True, 353 608 mandatory=True) # lets see if we get a mandatory failure for this one 354 355 if conf.CHECK_CFLAGS('-fvisibility=hidden'):356 conf.env.VISIBILITY_CFLAGS = '-fvisibility=hidden'357 conf.CHECK_CODE('''void vis_foo1(void) {}358 __attribute__((visibility("default"))) void vis_foo2(void) {}''',359 cflags=conf.env.VISIBILITY_CFLAGS,360 define='HAVE_VISIBILITY_ATTR')361 609 362 610 # look for a method of finding the list of network interfaces … … 366 614 #define NO_CONFIG_H 1 367 615 #define AUTOCONF_TEST 1 368 #define SOCKET_WRAPPER_NOT_REPLACE369 616 #include "replace.c" 370 617 #include "inet_ntop.c" … … 380 627 break 381 628 382 if conf.CHECK_FUNCS('getpass getpassphrase'):383 # if we have both, then we prefer getpassphrase384 conf.DEFINE('REPLACE_GETPASS_BY_GETPASSPHRASE', 1)385 conf.DEFINE('REPLACE_GETPASS', 1)386 else:387 conf.CHECK_CODE('''#include "getpass.c"388 int main(void) { return 0; }''',389 addmain=False,390 define='REPLACE_GETPASS',391 cflags='-DNO_CONFIG_H')392 393 629 conf.RECURSE('system') 394 630 conf.SAMBA_CONFIG_H() 395 631 396 632 633 REPLACEMENT_FUNCTIONS = { 634 'replace.c': ['ftruncate', 'strlcpy', 'strlcat', 'mktime', 'initgroups', 635 'memmove', 'strdup', 'setlinebuf', 'vsyslog', 'strnlen', 636 'strndup', 'waitpid', 'seteuid', 'setegid', 'chroot', 637 'mkstemp', 'mkdtemp', 'pread', 'pwrite', 'strcasestr', 638 'strsep', 'strtok_r', 'strtoll', 'strtoull', 'setenv', 'unsetenv', 639 'utime', 'utimes', 'dup2', 'chown', 'link', 'readlink', 640 'symlink', 'lchown', 'realpath', 'memmem', 'vdprintf', 641 'dprintf', 'get_current_dir_name', 642 'strerror_r', 'clock_gettime'], 643 'timegm.c': ['timegm'], 644 # Note: C99_VSNPRINTF is not a function, but a special condition 645 # for replacement 646 'snprintf.c': ['C99_VSNPRINTF', 'snprintf', 'vsnprintf', 'asprintf', 'vasprintf'], 647 # Note: WORKING_STRPTIME is not a function, but a special condition 648 # for replacement 649 'strptime.c': ['WORKING_STRPTIME', 'strptime'], 650 } 651 652 397 653 def build(bld): 398 654 bld.RECURSE('buildtools/wafsamba') 399 655 400 REPLACE_HOSTCC_SOURCE = 'replace.c snprintf.c' 401 402 if bld.CONFIG_SET('REPLACE_STRPTIME'): REPLACE_HOSTCC_SOURCE += ' strptime.c' 403 if not bld.CONFIG_SET('HAVE_TIMEGM'): REPLACE_HOSTCC_SOURCE += ' timegm.c' 656 REPLACE_HOSTCC_SOURCE = '' 657 658 for filename, functions in REPLACEMENT_FUNCTIONS.iteritems(): 659 for function in functions: 660 if not bld.CONFIG_SET('HAVE_%s' % function.upper()): 661 REPLACE_HOSTCC_SOURCE += ' %s' % filename 662 break 663 664 extra_libs = '' 665 if bld.CONFIG_SET('HAVE_LIBBSD'): extra_libs += ' bsd' 404 666 405 667 bld.SAMBA_SUBSYSTEM('LIBREPLACE_HOSTCC', … … 407 669 use_hostcc=True, 408 670 use_global_deps=False, 409 cflags='-DSOCKET_WRAPPER_DISABLE=1 -DNSS_WRAPPER_DISABLE=1 -D_SAMBA_HOSTCC_', 410 group='compiler_libraries' 671 cflags='-D_SAMBA_HOSTCC_', 672 group='compiler_libraries', 673 deps = extra_libs 411 674 ) 412 675 413 676 REPLACE_SOURCE = REPLACE_HOSTCC_SOURCE 414 415 if bld.CONFIG_SET('REPLACE_GETPASS'): REPLACE_SOURCE += ' getpass.c' 677 REPLACE_SOURCE += ' cwrap.c' 678 416 679 if not bld.CONFIG_SET('HAVE_CRYPT'): REPLACE_SOURCE += ' crypt.c' 417 680 if not bld.CONFIG_SET('HAVE_DLOPEN'): REPLACE_SOURCE += ' dlfcn.c' … … 426 689 if not bld.CONFIG_SET('HAVE_INET_NTOP'): REPLACE_SOURCE += ' inet_ntop.c' 427 690 if not bld.CONFIG_SET('HAVE_INET_PTON'): REPLACE_SOURCE += ' inet_pton.c' 691 if not bld.CONFIG_SET('HAVE_GETXATTR') or bld.CONFIG_SET('XATTR_ADDITIONAL_OPTIONS'): 692 REPLACE_SOURCE += ' xattr.c' 428 693 429 694 bld.SAMBA_LIBRARY('replace', … … 436 701 # hide_symbols=bld.BUILTIN_LIBRARY('replace'), 437 702 private_library=True, 438 deps='crypt dl nsl socket rt ')703 deps='crypt dl nsl socket rt attr' + extra_libs) 439 704 440 705 bld.SAMBA_SUBSYSTEM('replace-test', … … 461 726 enabled = not bld.CONFIG_SET('HAVE_STDBOOL_H')) 462 727 728 bld.SAMBA_SUBSYSTEM('samba_intl', source='', use_global_deps=False,deps=bld.env.intl_libs) 729 463 730 def dist(): 464 731 '''makes a tarball for distribution'''
Note:
See TracChangeset
for help on using the changeset viewer.