#!/usr/bin/env python import Logs, sys conf.CHECK_TYPE('u_char', 'uint8_t') conf.CHECK_TYPE('u_int32_t', 'uint32_t') conf.CHECK_HEADERS('err.h') conf.CHECK_HEADERS('ifaddrs.h') conf.CHECK_HEADERS('''crypt.h errno.h inttypes.h netdb.h signal.h sys/bswap.h sys/file.h sys/stropts.h sys/timeb.h sys/times.h sys/uio.h sys/un.h sys/utsname.h time.h timezone.h ttyname.h netinet/in.h netinet/in6.h netinet6/in6.h libintl.h''') conf.CHECK_HEADERS('curses.h term.h termcap.h', together=True) conf.CHECK_FUNCS('''atexit cgetent getprogname setprogname gethostname putenv rcmd readv sendmsg setitimer strlwr strncasecmp strptime strsep strsep_copy strtok_r strupr swab umask uname unsetenv closefrom err warn errx warnx flock writev''') conf.CHECK_FUNCS_IN('hstrerror', 'resolv socket nsl', checklibc=True) conf.CHECK_FUNCS_IN('''getnameinfo sendmsg socket getipnodebyname gethostent gethostent_r sethostent endhostent getipnodebyaddr freehostent gethostbyname gethostbyname_r gethostbyaddr''', 'socket nsl', checklibc=True) conf.CHECK_FUNCS_IN('dgettext gettext', 'intl', headers='libintl.h') conf.CHECK_FUNCS('iruserok') conf.CHECK_FUNCS('bswap16') conf.CHECK_FUNCS('bswap32') conf.CHECK_TYPE('struct winsize', define='HAVE_STRUCT_WINSIZE', headers='sys/termios.h sys/ioctl.h') conf.CHECK_STRUCTURE_MEMBER('struct winsize', 'ws_xpixel', define='HAVE_WS_XPIXEL', headers='sys/termios.h sys/ioctl.h') conf.CHECK_STRUCTURE_MEMBER('struct winsize', 'ws_ypixel', define='HAVE_WS_YPIXEL', headers='sys/termios.h sys/ioctl.h') conf.DEFINE('HAVE_KRB_STRUCT_WINSIZE', 1) conf.DEFINE('VOID_RETSIGTYPE', 1) conf.CHECK_VARIABLE('h_errno', headers='netdb.h') # strangely enough, we need it with another define too conf.CHECK_DECLS('h_errno', headers='netdb.h') conf.CHECK_FUNCS_IN('res_search res_nsearch res_ndestroy dns_search dn_expand', 'resolv', checklibc=True, headers='netinet/in.h arpa/nameser.h resolv.h dns.h') conf.CHECK_VARIABLE('_res', headers='netinet/in.h arpa/nameser.h resolv.h') conf.CHECK_DECLS('_res', headers='netinet/in.h arpa/nameser.h resolv.h') conf.CHECK_FUNCS_IN('openpty', 'util', checklibc=True, headers='pty.h util.h libutil.h') conf.DEFINE('HAVE_KRB5',1) conf.DEFINE('HAVE_GSSAPI',1) conf.CHECK_FUNCS('dirfd', headers='dirent.h') conf.CHECK_DECLS('dirfd', reverse=True, headers='dirent.h') conf.CHECK_STRUCTURE_MEMBER('DIR', 'dd_fd', define='HAVE_DIR_DD_FD', headers='dirent.h') conf.DEFINE('SAMBA4_INTERNAL_HEIMDAL', 1) if conf.CHECK_BUNDLED_SYSTEM('com_err', checkfunctions='com_right_r com_err', headers='com_err.h'): conf.define('USING_SYSTEM_COM_ERR', 1) def check_system_heimdal_lib(name, functions='', headers='', onlyif=None): # Only use system library if the user requested the bundled one not be used. if conf.LIB_MAY_BE_BUNDLED(name): return False setattr(conf.env, "CPPPATH_%s" % name.upper(), ["/usr/include/heimdal"]) setattr(conf.env, "LIBPATH_%s" % name.upper(), ["/usr/lib/heimdal"]) conf.CHECK_BUNDLED_SYSTEM(name, checkfunctions=functions, headers=headers, onlyif=onlyif) conf.define('USING_SYSTEM_%s' % name.upper(), 1) return True if check_system_heimdal_lib("roken", "rk_socket_set_reuseaddr", "roken.h"): conf.env.CPPPATH_ROKEN_HOSTCC = conf.env.CPPPATH_ROKEN conf.env.LIBPATH_ROKEN_HOSTCC = conf.env.LIBPATH_ROKEN conf.env.LIB_ROKEN_HOSTCC = "roken" conf.SET_TARGET_TYPE("ROKEN_HOSTCC", 'SYSLIB') check_system_heimdal_lib("wind", "wind_stringprep", "wind.h", onlyif="roken") check_system_heimdal_lib("hx509", "hx509_bitstring_print", "hx509.h", onlyif="roken wind") check_system_heimdal_lib("asn1", "initialize_asn1_error_table", "asn1_err.h", onlyif="roken com_err") # With the proper checks in place we should be able to build against the system libtommath. # conf.CHECK_BUNDLED_SYSTEM('tommath', checkfunctions='mp_init', headers='tommath.h') # conf.define('USING_SYSTEM_TOMMATH', 1) # disable trying to use an external compile_et until we have a configure # test that checks that the system one actually works. On some systems it # results in missing symbols (eg. OpenSUSE 10.2 'opi' in the build farm) #if conf.find_program('compile_et', var='COMPILE_ET'): # conf.define('USING_SYSTEM_COMPILE_ET', 1)