#!/usr/bin/env python Import('hostenv defines') if hostenv['configure']: conf = hostenv.Configure() for h in ['sys/socket.h','sys/sockio.h','sys/un.h']: if conf.CheckCHeader(h): defines['HAVE_' + h.upper().replace('/','_').replace('.','_')] = 1 #HAVE_SOCK_SIN_LEN conf.TryCompile(""" #include #include #include int main(void) { struct sockaddr_in sock; sock.sin_len = sizeof(sock); return 0; }""", '.c') #HAVE_UNIXSOCKET conf.TryCompile(""" #include #include #include #include #include ], int main(void) { struct sockaddr_un sunaddr; sunaddr.sun_family = AF_UNIX; return 0; }""", '.c') # HAVE_IPV6 conf.CheckFunc('gethostbyname2') # The following test taken from the cvs sources # If we can't find connect, try looking in -lsocket, -lnsl, and -linet. # The Irix 5 libc.so has connect and gethostbyname, but Irix 5 also has # libsocket.so which has a bad implementation of gethostbyname (it # only looks in /etc/hosts), so we only look for -lsocket if we need # it. connect_libs = [] if not conf.CheckFunc('connect'): for l in ['nsl_s','nsl','socket','inet']: if conf.CheckLib(l, 'connect'): connect_libs.append(l) break # HAVE_WORKING_AF_LOCAL # FIXME: Try compiling build/tests/unixsock.c conf.Finish() hostenv.Library('socket_ipv4.c') hostenv.Library('socket_ipv6.c') hostenv.Library('socket_unix.c') hostenv.Library('socket', ['socket.c','access.c','connect.c'])