#!/usr/bin/env python Import('hostenv defines') if hostenv['configure']: conf = Configure(hostenv) for f in ['memset','syslog','setnetgrent','getnetgrent','endnetgrent', \ 'mktemp', 'memcpy']: if not conf.CheckFunc(f,'c'): print "Required function `%s' not found" % f exit(1) for f in ['strtoull','__strtoull','strtouq','strtoll','__strtoll','strtoq', 'seteuid','setresuid','setegid','setresgid','dlsym','dlopen', 'dlerror','dlclose','waitpid','getcwd','strdup','strndup', 'strnlen','strerror','bzero','chroot','strlcpy','strlcat', 'memmove','vsnprintf','asprintf','snprintf','vasprintf', 'innetgr','mktime','rename','ftruncate','chsize','setlinebuf', 'setenv','vsyslog','pread','pwrite']: if conf.CheckFunc(f,'c'): defines['HAVE_' + f.upper()] = 1 # Check for errno declaration if conf.TryCompile(""" #include int main() { int i = (int)errno; return 0; }""", '.c'): defines['HAVE_ERRNO_DECL'] = 1 for h in ['dlfcn.h']: if conf.CheckCHeader('dlfcn.h'): defines['HAVE_' + h.upper().replace('.','_').replace('/','_')] = 1 if not conf.CheckType('socklen_t'): defines['socklen_t'] = 'int' needed_types = { 'uint_t': 'unsigned int', 'int8_t': 'signed char', 'uint8_t': 'unsigned char', 'u_int8_t': 'unsigned char', 'int16_t': 'short', 'uint16_t': 'unsigned short', 'u_int16_t': 'unsigned short', 'int32_t': 'long', 'uint32_t': 'unsigned long', 'u_int32_t': 'unsigned long', 'int64_t': 'long long', 'uint64_t': 'unsigned long long', } type_headers = """ #include #include """ for t in needed_types: if not conf.CheckType(t,type_headers): defines[t] = needed_types[t] conf.Finish() hostenv.StaticLibrary('repdir', ['repdir/repdir.c']) hostenv.StaticLibrary('replace', ['replace.c', 'snprintf.c','dlfcn.c'])