acsfs.m4

来自「基于DHT的对等协议」· M4 代码 · 共 2,148 行 · 第 1/4 页

M4
2,148
字号
fi)if test $sfs_cv_accrights = yes; then	AC_DEFINE(HAVE_ACCRIGHTS, 1,	Define if msghdr has msg_accrights field for passing file descriptors.)fiif test $sfs_cv_cmsghdr = yes; then	AC_DEFINE(HAVE_CMSGHDR, 1,	Define if system has cmsghdr structure for passing file descriptors.)fi])dnldnl Check for sa_len in struct sockaddrsdnlAC_DEFUN([SFS_CHECK_SA_LEN],[AC_CACHE_CHECK(for sa_len in struct sockaddr, sfs_cv_sa_len,AC_TRY_COMPILE([#include <sys/types.h>#include <sys/socket.h>],[struct sockaddr sa;sa.sa_len = 0;], sfs_cv_sa_len=yes, sfs_cv_sa_len=no))if test $sfs_cv_sa_len = yes; then	AC_DEFINE(HAVE_SA_LEN, 1,	Define if struct sockaddr has sa_len field.)fi])dnldnl Check for sockaddr_storagednlAC_DEFUN([SFS_CHECK_SOCKADDR_STORAGE],[SFS_CHECK_TYPE(struct sockaddr_storage)AC_CACHE_CHECK(for __ss_len in sockaddr_storage, sfs_cv_ss_len_underscores,AC_TRY_COMPILE([#include <sys/types.h>#include <sys/socket.h>],[struct sockaddr_storage ss;ss.__ss_len = 0;], sfs_cv_ss_len_underscores=yes, sfs_cv_ss_len_underscores=no))if test $sfs_cv_ss_len_underscores = yes; then	AC_DEFINE(HAVE_SS_LEN_UNDERSCORES, 1,	Define if struct sockaddr_storage has __ss_len field, not ss_len)fi])dnldnl Check something about the nfs_args fielddnlAC_DEFUN([SFS_TRY_NFSARG_FIELD],[AC_TRY_COMPILE([#include "${srcdir}/nfsconf.h"],[struct nfs_args na;$1;], $2, $3)])dnldnl Check a particular field in nfs_argsdnlAC_DEFUN([SFS_CHECK_NFSMNT_FIELD],[AC_CACHE_CHECK(for $1 in nfs_args structure, sfs_cv_nfsmnt_$1,SFS_TRY_NFSARG_FIELD(na.$1, sfs_cv_nfsmnt_$1=yes, sfs_cv_nfsmnt_$1=no))if test $sfs_cv_nfsmnt_$1 = yes; then  AC_DEFINE(HAVE_NFSMNT_[]translit($1, [a-z], [A-Z]), 1,	    Define if the nfs_args structure has a $1 field.)fi])dnldnl Check if nfs_args hostname field is an arraydnlAC_DEFUN([SFS_CHECK_NFSARG_HOSTNAME_ARRAY],[AC_CACHE_CHECK(if nfs_args hostname field is an array, sfs_cv_nfs_hostarray,	SFS_TRY_NFSARG_FIELD(na.hostname = 0,		sfs_cv_nfs_hostarray=no, sfs_cv_nfs_hostarray=yes))if test $sfs_cv_nfs_hostarray = yes; then  AC_DEFINE(HAVE_NFSARG_HOSTNAME_ARRAY, 1,	[The hostname field of nfs_arg is an array])fi])dnldnl Check if addr field is a pointer or notdnlAC_DEFUN([SFS_CHECK_NFSARG_ADDR_PTR],[AC_CHECK_HEADERS(tiuser.h)AC_CACHE_CHECK(if nfs_args addr field is a pointer, sfs_cv_nfsmnt_addr_ptr,	SFS_TRY_NFSARG_FIELD(na.addr = (void *) 0, sfs_cv_nfsmnt_addr_ptr=yes,				sfs_cv_nfsmnt_addr_ptr=no))if test $sfs_cv_nfsmnt_addr_ptr = yes; then  AC_DEFINE(HAVE_NFSARG_ADDR_PTR, 1,	[The addr field of nfs_arg is a pointer])  AC_CACHE_CHECK(if nfs_args addr is a netbuf *, sfs_cv_nfsmnt_addr_netbuf,	SFS_TRY_NFSARG_FIELD(struct netbuf nb; *na.addr = nb,	  sfs_cv_nfsmnt_addr_netbuf=yes, sfs_cv_nfsmnt_addr_netbuf=no))  if test $sfs_cv_nfsmnt_addr_netbuf = yes; then    AC_DEFINE(HAVE_NFSARG_ADDR_NETBUF, 1,	[If the nfs_arg addr field is a netbuf pointer])  fifi])dnldnl Check for SVR4-like nfs_fh3 structurednlAC_DEFUN([SFS_CHECK_FH3_SVR4],[if test "$sfs_cv_nfsmnt_fhsize" != yes; then  AC_CACHE_CHECK(for SVR4-like struct nfs_fh3, sfs_cv_fh3_svr4,  AC_TRY_COMPILE([#include "${srcdir}/nfsconf.h"],                 [ struct nfs_fh3 fh;                   switch (0) case 0: case sizeof (fh.fh3_u.data) == 64:; ],                 sfs_cv_fh3_svr4=yes, sfs_cv_fh3_svr4=no))  if test $sfs_cv_fh3_svr4 = yes; then    AC_DEFINE(HAVE_SVR4_FH3, 1,	[The the fh field of the nfs_arg structure points to an SVR4 nfs_fh3])  fifi])dnldnl Check for 2 argument unmountdnlAC_DEFUN([SFS_CHECK_UNMOUNT_FLAGS],[AC_CACHE_CHECK(for a 2 argument unmount, sfs_cv_umount_flags,AC_TRY_COMPILE([#include <sys/param.h>#include <sys/mount.h>],[#ifdef HAVE_UNMOUNTunmount#else /* !HAVE_UNMOUNT */umount#endif /* !HAVE_UNMOUNT */	(0);], sfs_cv_umount_flags=no, sfs_cv_umount_flags=yes))if test $sfs_cv_umount_flags = yes; then	AC_DEFINE(UNMOUNT_FLAGS, 1,		  Define if the unmount system call has 2 arguments.)else	AC_CHECK_FUNCS(umount2)fi])dnldnl Check if we can find the nfs_args structurednlAC_DEFUN([SFS_CHECK_NFSMNT],[AC_CHECK_FUNCS(vfsmount unmount)AC_CHECK_HEADERS(nfs/nfsproto.h, [], [],[#include <sys/types.h>#include <sys/param.h>#include <sys/mount.h>])need_nfs_nfs_h=noAC_EGREP_HEADER(nfs_args, sys/mount.h,,	AC_EGREP_HEADER(nfs_args, nfs/mount.h,		AC_DEFINE(NEED_NFS_MOUNT_H, 1,			[The nfs_args structure is in <nfs/mount.h>]))	AC_EGREP_HEADER(nfs_args, nfs/nfsmount.h,		AC_DEFINE(NEED_NFS_NFSMOUNT_H, 1,			[The nfs_args structure is in <nfs/nfsmount.h]))	AC_EGREP_HEADER(nfs_args, nfsclient/nfs.h,		AC_DEFINE(NEED_NFSCLIENT_NFS_H, 1,			[The nfs_args structure is in <nfsclient/nfs.h>]))       AC_EGREP_HEADER(nfs_args, nfsclient/nfsargs.h,               AC_DEFINE(NEED_NFSCLIENT_NFSARGS_H, 1,                       [The nfs_args structure is in <nfsclient/nfsargs.h>]))	AC_EGREP_HEADER(nfs_args, nfs/nfs.h,		AC_DEFINE(NEED_NFS_NFS_H, 1,			[The nfs_args structure is in <nfs/nfs.h>])		need_nfs_nfs_h=yes))AC_CACHE_CHECK(for nfs_args mount structure, sfs_cv_nfsmnt_ok,	SFS_TRY_NFSARG_FIELD(, sfs_cv_nfsmnt_ok=yes, sfs_cv_nfsmnt_ok=no))if test $sfs_cv_nfsmnt_ok = no; then	AC_MSG_ERROR([Could not find NFS mount argument structure!])fiif test "$need_nfs_nfs_h" = no; then	AC_EGREP_HEADER(nfs_fh3, nfs/nfs.h,		AC_DEFINE(NEED_NFS_NFS_H, 1,			[The nfs_args structure is in <nfs/nfs.h>])			need_nfs_nfs_h=yes)fiAC_CHECK_HEADERS(linux/nfs2.h)SFS_CHECK_NFSMNT_FIELD(addrlen)SFS_CHECK_NFSMNT_FIELD(sotype)SFS_CHECK_NFSMNT_FIELD(proto)SFS_CHECK_NFSMNT_FIELD(fhsize)SFS_CHECK_NFSMNT_FIELD(fd)dnl Check whether we have Linux 2.2 NFS V3 mount structureSFS_CHECK_NFSMNT_FIELD(old_root)dnl Check whether file handle is named "root" or "fh"SFS_CHECK_NFSMNT_FIELD(root)SFS_CHECK_NFSMNT_FIELD(fh)dnl ksh apparently cannot handle this as a compound test.if test "$sfs_cv_nfsmnt_root" = "no"; then  if test "$sfs_cv_nfsmnt_fh" = "no"; then    AC_MSG_ERROR([Could not find the nfs_args file handle field!])  fifiAC_CHECK_HEADERS(sys/mntent.h)SFS_CHECK_FH3_SVR4if test "$sfs_cv_nfsmnt_fh" = yes; then  if test "$sfs_cv_fh3_svr4" = yes -o "$sfs_cv_nfsmnt_fhsize" = yes; then    AC_DEFINE(HAVE_NFS_V3, 1, [If the system supports NFS 3])  fielif test "$sfs_cv_nfsmnt_old_root" = yes; then  AC_DEFINE(HAVE_NFS_V3, 1, [If the system supports NFS 3])fiSFS_CHECK_NFSARG_HOSTNAME_ARRAYSFS_CHECK_NFSARG_ADDR_PTRSFS_CHECK_UNMOUNT_FLAGS])dnldnl Use -ldb only if we need it.dnlAC_DEFUN([SFS_FIND_DB],[AC_CHECK_FUNC(dbopen)if test $ac_cv_func_dbopen = no; then	AC_CHECK_LIB(db, dbopen)	if test $ac_cv_lib_db_dbopen = no; then	  AC_MSG_ERROR([Could not find library for dbopen!])	fifi])dnldnl Check something about the stat structurednlAC_DEFUN([SFS_TRY_STAT_FIELD],[AC_TRY_COMPILE([#include <sys/stat.h>],[struct stat s;$1;], $2, $3)])dnldnl Check for a particular field in statdnlAC_DEFUN([SFS_CHECK_STAT_FIELD],[AC_CACHE_CHECK(for $1 in stat structure, sfs_cv_stat_$1,SFS_TRY_STAT_FIELD(s.$1, sfs_cv_stat_$1=yes, sfs_cv_stat_$1=no))if test $sfs_cv_stat_$1 = yes; then  AC_DEFINE(SFS_HAVE_STAT_[]translit($1, [a-z], [A-Z]), 1,	    Define if the stat structure has a $1 field.)fi])dnldnl  Check whether we can get away with large socket buffers.dnlAC_DEFUN([SFS_CHECK_SOCK_BUF],[AC_CACHE_CHECK(whether socket buffers > 64k are allowed,  		sfs_cv_large_sock_buf, AC_TRY_RUN([#include <sys/types.h>#include <sys/socket.h>intmain() {  int bigbuf = 0x11000;  int s = socket(AF_INET, SOCK_STREAM, 0);  if (setsockopt(s, SOL_SOCKET, SO_RCVBUF, (char *)&bigbuf, sizeof(bigbuf))<0)    exit(1);  exit(0);}], sfs_cv_large_sock_buf=yes,    sfs_cv_large_sock_buf=no,    sfs_cv_large_sock_buf=no))if test $sfs_cv_large_sock_buf = yes; then	AC_DEFINE(SFS_ALLOW_LARGE_BUFFER, 1,		  Define if SO_SNDBUF/SO_RCVBUF can exceed 64K.)fi])dnldnl  Test to see if we can bind a port with SO_REUSEADDR whendnl  there is a connected TCP socket using the same port number,dnl  but the connected socket does not have SO_REUSEADDR set.dnlAC_DEFUN([SFS_CHECK_BSD_REUSEADDR],[AC_CACHE_CHECK(for BSD SO_REUSEADDR semantics, sfs_cv_bsd_reuseaddr,[AC_RUN_IFELSE([changequote changequote([[,]])[[#include <stdio.h>#include <errno.h>#include <string.h>#include <unistd.h>#include <stdlib.h>#include <fcntl.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include "confdefs.h"#ifndef HAVE_SOCKLEN_T# define socklen_t int#endif /* !HAVE_SOCKLEN_T */#ifndef bzero# define bzero(a,b)   memset((a), 0, (b))#endif /* !bzero */intinetsocket (unsigned long addr, int port, int *portp){  int s;  struct sockaddr_in sin;  int n = 1;  bzero (&sin, sizeof (sin));  sin.sin_family = AF_INET;  sin.sin_port = htons (port);  sin.sin_addr.s_addr = htonl (addr);  s = socket (AF_INET, SOCK_STREAM, 0);  if (s < 0) {    perror ("socket");    exit (2);  }  if (port && setsockopt (s,SOL_SOCKET, SO_REUSEADDR, &n, sizeof n) < 0) {    perror ("SO_REUSEADDR");    exit (2);  }  if (bind (s, (struct sockaddr *) &sin, sizeof (sin)) < 0)    return -1;  if (portp) {    socklen_t sinlen = sizeof (sin);    getsockname (s, (struct sockaddr *) &sin, &sinlen);    *portp = ntohs (sin.sin_port);  }  return s;}intconnectlocal (int s, int dport){  struct sockaddr_in sin;  bzero (&sin, sizeof (sin));  sin.sin_family = AF_INET;  sin.sin_port = htons (dport);  sin.sin_addr.s_addr = htonl (INADDR_LOOPBACK);  return connect (s, (struct sockaddr *) &sin, sizeof (sin));}voidmake_async (int s){  int n;  if ((n = fcntl (s, F_GETFL)) < 0      || fcntl (s, F_SETFL, n | O_NONBLOCK) < 0) {    perror ("fcntl");    exit (2);  }}intmain (int argc, char **argv){  int s1, s1p;  int c1, c1p;  int c2;  s1 = inetsocket (INADDR_LOOPBACK, 0, &s1p);  listen (s1, 5);  c1 = inetsocket (INADDR_LOOPBACK, 0, &c1p);  make_async (c1);  if (connectlocal (c1, s1p) < 0) {    if (errno == EINPROGRESS) {      struct sockaddr_in sin;      socklen_t sinlen = sizeof (sin);      sin.sin_family = AF_INET;      accept (s1, (struct sockaddr *) &sin, &sinlen);    }    else {      perror ("connect");      exit (2);    }  }  c2 = inetsocket (INADDR_ANY, c1p, NULL);  exit (c2 < 0);}]]changequote([,])],	sfs_cv_bsd_reuseaddr=yes, sfs_cv_bsd_reuseaddr=no,	sfs_cv_bsd_reuseaddr=no)])if test "$sfs_cv_bsd_reuseaddr" = yes; then    AC_DEFINE(HAVE_BSD_REUSEADDR, 1,      Define if SO_REUSEADDR allows same user to bind non-SO_REUSEADDR port)fi])dnldnl Find pthreadsdnlAC_DEFUN([SFS_FIND_PTHREADS],[AC_ARG_WITH(pthreads,--with-pthreads=DIR       Specify location of pthreads)ac_save_CFLAGS=$CFLAGSac_save_LIBS=$LIBSdirs="$with_pthreads ${prefix} ${prefix}/pthreads"dirs="$dirs /usr/local /usr/local/pthreads"AC_CACHE_CHECK(for pthread.h, sfs_cv_pthread_h,[for dir in " " $dirs; do    iflags="-I${dir}/include"    CFLAGS="${ac_save_CFLAGS} $iflags"    AC_TRY_COMPILE([#include <pthread.h>], 0,	sfs_cv_pthread_h="${iflags}"; break)done])if test -z "${sfs_cv_pthread_h+set}"; then    AC_MSG_ERROR("Can\'t find pthread.h anywhere")fiAC_CACHE_CHECK(for libpthread, sfs_cv_libpthread,[for dir in "" " " $dirs; do    case $dir in	"") lflags=" " ;;	" ") lflags="-lpthread" ;;	*) lflags="-L${dir}/lib -lpthread" ;;    esac    LIBS="$ac_save_LIBS $lflags"    AC_TRY_LINK([#include <pthread.h>],	pthread_create (0, 0, 0, 0);,	sfs_cv_libpthread=$lflags; break)done])if test -z ${sfs_cv_libpthread+set}; then    AC_MSG_ERROR("Can\'t find libpthread anywhere")fiCFLAGS=$ac_save_CFLAGSCPPFLAGS="$CPPFLAGS $sfs_cv_pthread_h"LIBS="$ac_save_LIBS $sfs_cv_libpthread"])dnldnl Find GMPdnlAC_DEFUN([SFS_GMP],[AC_ARG_WITH(gmp,--with-gmp[[[=/usr/local]]]   specify path for gmp)AC_SUBST(GMP_DIR)AC_SUBST(LIBGMP)AC_MSG_CHECKING([for GMP library])if test "$with_gmp" != "no"; then	ac_save_CPPFLAGS=$CPPFLAGS	ac_save_LIBS=$LIBS	cdirs="${with_gmp}/include ${prefix}/include"	dirs="$cdirs /usr/local/include /usr/include"	AC_CACHE_CHECK(for gmp.h, sfs_cv_gmp_h,	[for dir in " " $dirs; do		case $dir in			" ") iflags=" " ;;			*) iflags="-I${dir}" ;;		esac		CPPFLAGS="${ac_save_CPPFLAGS} $iflags"		AC_TRY_COMPILE([#include "gmp.h"], 0,		 sfs_cv_gmp_h="${iflags}"; break)	done	if test "$sfs_cv_gmp_h" = " "; then		sfs_cv_gmp_h="yes"	fi	])	if test "$sfs_cv_gmp_h" = "yes"; then		sfs_cv_gmp_h=" "	fi	if test "${sfs_cv_gmp_h+set}"; then		cdirs="${with_gmp}/lib ${prefix}/lib"		dirs="$cdirs /usr/local/lib /usr/lib"		AC_CACHE_CHECK(for libgmp, sfs_cv_libgmp,		[for dir in "" " " $dirs; do			case $dir in				"") lflags=" "; Lflags="" ;;				" ") lflags="-lgmp"; Lflags="" ;;				*) Lflags="-L$dir"; lflags="-lgmp" ;;			esac			LIBS="$ac_save_LIBS $Lflags $lflags"			AC_TRY_LINK([#include "gmp.h"],				MP_INT i; mpz_init (&i);,				sfs_cv_libgmp=$lflags;  \				LDFLAGS="$LDFLAGS $Lflags" ; \				LIBGMP="$lflags" ; break)		done		if test -z ${sfs_cv_libgmp+set}; then			AC_MSG_ERROR([Could not find gmp library])			sfs_cv_libgmp="no"		fi		])		LIBS="$ac_save_LIBS"	else			AC_MSG_ERROR([Could not find gmp.h header])	fifiac_save_CFLAGS="$CFLAGS"AC_CACHE_CHECK(for overloaded C++ operators in gmp.h, sfs_cv_gmp_cxx_ops,	AC_EGREP_CPP(operator<<,[#define __cplusplus 1#include <gmp.h>],	sfs_cv_gmp_cxx_ops=yes, sfs_cv_gmp_cxx_ops=no)    )test "$sfs_cv_gmp_cxx_ops" = "yes" && AC_DEFINE([HAVE_GMP_CXX_OPS], 1,	[Define if gmp.h overloads C++ operators])AC_CACHE_CHECK(for mpz_xor, sfs_cv_have_mpz_xor,unset sfs_cv_have_mpz_xorAC_EGREP_HEADER(mpz_xor, [gmp.h], sfs_cv_have_mpz_xor=yes))test "$sfs_cv_have_mpz_xor" && AC_DEFINE([HAVE_MPZ_XOR], 1,	[Define if you have mpz_xor in your GMP library.])AC_CACHE_CHECK(size of GMP mp_limb_t, sfs_cv_mp_limb_t_size,sfs_cv_mp_limb_t_size=nofor size in 2 4 8; do    AC_TRY_COMPILE([#include <gmp.h>],    [switch (0) case 0: case (sizeof (mp_limb_t) == $size):;],    sfs_cv_mp_limb_t_size=$size; break)done)CFLAGS="$ac_save_CFLAGS"test "$sfs_cv_mp_limb_t_size" = no \    && AC_MSG_ERROR(Could not determine size of mp_limb_t.)AC_DEFINE_UNQUOTED(GMP_LIMB_SIZE, $sfs_cv_mp_limb_t_size,		   Define to be the size of GMP's mp_limb_t type.)])dnl dnldnl dnl Find BekeleyDB 3dnl dnldnl ac_defun(SFS_DB3,dnl [AC_ARG_WITH(db3,dnl --with-db3[[=/usr/local]]   specify path for BerkeleyDB-3)dnl AC_SUBST(DB3_DIR)dnl AC_CONFIG_SUBDIRS($DB3_DIR)dnl AC_SUBST(DB3_LIB)dnl unset DB3_LIBdnl dnl DB3_DIR=`cd $srcdir && echo db-3.*/dist/`dnl if test -d "$srcdir/$DB3_DIR"; thendnl     DB3_DIR=`echo $DB3_DIR | sed -e 's!/$!!'`dnl elsednl     unset DB3_DIRdnl fidnl dnl if test ! "${with_db3+set}"; thendnl     if test "$DB3_DIR"; thendnl 	with_db3=yesdnl     elsednl 	with_db3=nodnl     fidnl fidnl dnl if test "$with_db3" != no; thendnl     AC_MSG_CHECKING([for DB3 library])dnl     if test "$DB3_DIR" -a "$with_db3" = yes; thendnl 	CPPFLAGS="$CPPFLAGS "'-I$(top_builddir)/'"$DB3_DIR"dnl 	DB3_LIB='-L$(top_builddir)/'"$DB3_DIR -ldb"dnl 	AC_MSG_RESULT([using distribution in $DB3_DIR subdirectory])

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?