2002-11-12 06:42:39 +00:00
|
|
|
dnl $Id: configure.in,v 1.18 2002/05/23 02:42:55 lukem Exp $
|
2001-07-19 16:25:08 +00:00
|
|
|
dnl
|
|
|
|
dnl configure.in --
|
|
|
|
dnl process this file with autoconf to produce a configure script.
|
|
|
|
dnl
|
|
|
|
|
2002-11-12 06:42:39 +00:00
|
|
|
AC_REVISION($Revision: 1.18 $)dnl
|
2001-07-19 16:25:08 +00:00
|
|
|
|
|
|
|
AC_INIT(lukemftpd.h)
|
|
|
|
|
|
|
|
|
|
|
|
dnl Arguments for which features are included
|
|
|
|
dnl
|
|
|
|
AC_ARG_ENABLE(ipv6, [\
|
|
|
|
--enable-ipv6 Enable IPv6 support (if your OS supports it).
|
2002-03-14 19:25:32 +00:00
|
|
|
--disable-ipv6 Disable IPv6 support (even if your OS supports it).
|
|
|
|
[default: enabled]],
|
2001-07-19 16:25:08 +00:00
|
|
|
opt_ipv6=$enableval,
|
|
|
|
opt_ipv6=yes)
|
|
|
|
AC_ARG_ENABLE(builtinls, [\
|
|
|
|
--enable-builtinls Enable built-in /bin/ls. [default: enabled]
|
|
|
|
--disable-builtinls Disable built-in /bin/ls.],
|
|
|
|
opt_builtinls=$enableval,
|
|
|
|
opt_builtinls=yes)
|
|
|
|
|
|
|
|
|
|
|
|
dnl Checks for programs.
|
|
|
|
dnl
|
|
|
|
AC_PROG_MAKE_SET
|
|
|
|
AC_PROG_CC
|
|
|
|
AC_PROG_AWK
|
|
|
|
AC_PROG_INSTALL
|
|
|
|
AC_PROG_RANLIB
|
|
|
|
AC_PROG_YACC
|
|
|
|
AC_CHECK_PROGS(AR, ar)
|
|
|
|
|
|
|
|
|
|
|
|
dnl Checks for libraries.
|
|
|
|
dnl
|
|
|
|
AC_CHECK_LIB(crypt, crypt)
|
|
|
|
AC_CHECK_LIB(util, fparseln)
|
|
|
|
if test $ac_cv_lib_util_fparseln != yes; then
|
|
|
|
AC_CHECK_LIB(util, setproctitle)
|
|
|
|
fi
|
|
|
|
AC_LIBRARY_NET
|
|
|
|
AC_LIBRARY_SOCKS
|
|
|
|
if test -n "$socks"; then
|
|
|
|
if test $opt_ipv6 = yes; then
|
|
|
|
echo "IPv6 is incompatible with socks, disabling IPv6 support"
|
|
|
|
opt_ipv6=no
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
AC_ARG_WITH(skey,
|
|
|
|
[ --with-skey Compile with S/Key authentication support.],
|
|
|
|
[ if test $withval = yes; then
|
|
|
|
AC_CHECK_LIB(skey, skey_haskey)
|
|
|
|
fi ] )
|
|
|
|
AC_MSG_CHECKING(whether to support S/Key)
|
|
|
|
if test x"$ac_cv_lib_skey_skey_haskey" = "xyes"; then
|
|
|
|
AC_MSG_RESULT(yes)
|
|
|
|
AC_DEFINE(SKEY, 1)
|
|
|
|
else
|
|
|
|
AC_MSG_RESULT(no)
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
dnl Checks for header files.
|
|
|
|
dnl
|
|
|
|
AC_CONFIG_HEADER(config.h)
|
|
|
|
AC_HEADER_DIRENT
|
|
|
|
AC_HEADER_STDC
|
|
|
|
AC_CHECK_HEADERS(arpa/nameser.h err.h fts.h libutil.h paths.h \
|
|
|
|
sys/sysmacros.h util.h)
|
|
|
|
|
|
|
|
|
|
|
|
dnl Checks for typedefs, structures, and compiler characteristics.
|
|
|
|
dnl
|
|
|
|
AC_HEADER_TIME
|
|
|
|
AC_TYPE_OFF_T
|
|
|
|
AC_CHECK_SIZEOF(off_t, 0)
|
|
|
|
AC_MSG_TRY_LINK(for long long, ftp_cv_HAVE_LONG_LONG, [
|
|
|
|
#include <sys/types.h>] , [
|
|
|
|
long long X = 2, Y = 1, Z;
|
|
|
|
Z = X / Y; ], [
|
|
|
|
AC_DEFINE(HAVE_LONG_LONG, 1)
|
|
|
|
have_long_long=yes], [have_long_long=no])
|
|
|
|
|
|
|
|
AC_MSG_TRY_COMPILE(for in_port_t, ftp_cv_HAVE_IN_PORT_T, [
|
|
|
|
#include <sys/types.h>
|
|
|
|
#include <netinet/in.h> ], [ in_port_t X ], [AC_DEFINE(HAVE_IN_PORT_T, 1)])
|
|
|
|
|
|
|
|
AC_MSG_TRY_COMPILE(for sockaddr_in.sin_len, ftp_cv_HAVE_SOCKADDR_SA_LEN, [
|
|
|
|
#include <sys/types.h>
|
|
|
|
#include <sys/socket.h>
|
|
|
|
#include <netinet/in.h> ], [
|
|
|
|
struct sockaddr_in sin;
|
|
|
|
int X = sin.sin_len ], [AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1)])
|
|
|
|
|
|
|
|
AC_MSG_TRY_COMPILE(for socklen_t, ftp_cv_HAVE_SOCKLEN_T, [
|
|
|
|
#include <sys/types.h>
|
|
|
|
#include <sys/socket.h> ], [ socklen_t X ], [AC_DEFINE(HAVE_SOCKLEN_T, 1)])
|
|
|
|
|
|
|
|
if test $opt_ipv6 = yes; then
|
|
|
|
|
|
|
|
AC_MSG_TRY_COMPILE(for AF_INET6, ftp_cv_HAVE_AF_INET6, [
|
|
|
|
#include <sys/types.h>
|
|
|
|
#include <sys/socket.h> ],
|
|
|
|
[ int X = AF_INET6 ], [AC_DEFINE(HAVE_AF_INET6, 1)])
|
|
|
|
|
|
|
|
AC_MSG_TRY_COMPILE(for struct sockaddr_in6, ftp_cv_HAVE_SOCKADDR_IN6, [
|
|
|
|
#include <sys/types.h>
|
|
|
|
#include <netinet/in.h> ],
|
|
|
|
[ struct sockaddr_in6 X ], [AC_DEFINE(HAVE_SOCKADDR_IN6, 1)])
|
|
|
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
AC_MSG_TRY_COMPILE(for struct addrinfo, ftp_cv_HAVE_ADDRINFO, [
|
|
|
|
#include <sys/types.h>
|
|
|
|
#include <sys/socket.h>
|
|
|
|
#include <netdb.h> ],
|
|
|
|
[ struct addrinfo X ], [AC_DEFINE(HAVE_ADDRINFO, 1)])
|
|
|
|
|
|
|
|
AC_MSG_TRY_COMPILE(for d_namlen in struct dirent, ftp_cv_HAVE_D_NAMLEN, [
|
|
|
|
#if HAVE_DIRENT_H
|
|
|
|
# include <dirent.h>
|
|
|
|
#else
|
|
|
|
# define dirent direct
|
|
|
|
# if HAVE_SYS_NDIR_H
|
|
|
|
# include <sys/ndir.h>
|
|
|
|
# endif
|
|
|
|
# if HAVE_SYS_DIR_H
|
|
|
|
# include <sys/dir.h>
|
|
|
|
# endif
|
|
|
|
# if HAVE_NDIR_H
|
|
|
|
# include <ndir.h>
|
|
|
|
# endif
|
|
|
|
#endif ], [
|
|
|
|
struct dirent dp;
|
|
|
|
int X = dp.d_namlen; ], [AC_DEFINE(HAVE_D_NAMLEN, 1)])
|
|
|
|
|
|
|
|
AC_MSG_TRY_COMPILE(for struct passwd.pw_expire, ftp_cv_HAVE_PW_EXPIRE, [
|
|
|
|
#include <sys/types.h>
|
|
|
|
#include <pwd.h> ],
|
|
|
|
[ struct passwd pw;
|
|
|
|
time_t X = pw.pw_expire ], [AC_DEFINE(HAVE_PW_EXPIRE, 1)])
|
|
|
|
|
|
|
|
AC_C_CONST
|
|
|
|
|
|
|
|
|
|
|
|
dnl Checks for library functions.
|
|
|
|
dnl
|
|
|
|
AC_REPLACE_FUNCS(err fgetln getaddrinfo getgrouplist getnameinfo \
|
|
|
|
getusershell inet_net_pton inet_ntop inet_pton mkstemp \
|
|
|
|
sl_init snprintf strdup strerror strlcat strlcpy strsep \
|
|
|
|
usleep vsyslog)
|
|
|
|
AC_CHECK_FUNCS(flock lockf getspnam setlogin setproctitle vfork)
|
|
|
|
if test $ac_cv_lib_util_fparseln != yes; then
|
|
|
|
AC_REPLACE_FUNCS(fparseln)
|
|
|
|
fi
|
|
|
|
|
|
|
|
LIBOBJS="$LIBOBJS glob.o"
|
|
|
|
|
|
|
|
AC_MSG_TRY_COMPILE(for crypt() declaration, ftp_cv_HAVE_CRYPT_D, [
|
|
|
|
#include <unistd.h> ], [ char *(*X)() = crypt ], [AC_DEFINE(HAVE_CRYPT_D, 1)])
|
|
|
|
|
|
|
|
AC_MSG_TRY_COMPILE(for fclose() declaration, ftp_cv_HAVE_FCLOSE_D, [
|
|
|
|
#include <stdio.h> ], [ int (*X)() = fclose ], [AC_DEFINE(HAVE_FCLOSE_D, 1)])
|
|
|
|
|
2002-11-12 06:42:39 +00:00
|
|
|
AC_MSG_TRY_COMPILE(for FNM_CASEFOLD, ftp_cv_HAVE_FNM_CASEFOLD, [
|
|
|
|
#include <fnmatch.h> ], [ int X = FNM_CASEFOLD ],
|
|
|
|
[AC_DEFINE(HAVE_FNM_CASEFOLD, 1)],
|
|
|
|
[LIBOBJS="$LIBOBJS fnmatch.o"])
|
|
|
|
|
2001-07-19 16:25:08 +00:00
|
|
|
AC_MSG_TRY_COMPILE(for optarg declaration, ftp_cv_HAVE_OPTARG_D, [
|
|
|
|
#include <stdlib.h>
|
|
|
|
#include <unistd.h> ], [ char *X = optarg ], [AC_DEFINE(HAVE_OPTARG_D, 1)])
|
|
|
|
|
|
|
|
AC_MSG_TRY_COMPILE(for optind declaration, ftp_cv_HAVE_OPTIND_D, [
|
|
|
|
#include <stdlib.h>
|
|
|
|
#include <unistd.h> ], [ int X = optind ], [AC_DEFINE(HAVE_OPTIND_D, 1)])
|
|
|
|
|
|
|
|
AC_MSG_TRY_LINK(for optreset, ftp_cv_HAVE_OPTRESET, [
|
|
|
|
#include <stdlib.h>
|
|
|
|
#include <unistd.h> ], [ int X = optreset ], [AC_DEFINE(HAVE_OPTRESET, 1)])
|
|
|
|
|
|
|
|
AC_MSG_TRY_COMPILE(for pclose() declaration, ftp_cv_HAVE_PCLOSE_D, [
|
|
|
|
#include <stdio.h> ], [ int (*X)() = pclose ], [AC_DEFINE(HAVE_PCLOSE_D, 1)])
|
|
|
|
|
|
|
|
if test $ac_cv_func_getusershell = yes; then
|
|
|
|
AC_MSG_TRY_COMPILE(for getusershell() declaration,
|
|
|
|
ftp_cv_HAVE_GETUSERSHELL_D, [
|
|
|
|
#include <unistd.h> ], [ char *(*X)() = getusershell ],
|
|
|
|
[AC_DEFINE(HAVE_GETUSERSHELL_D, 1)])
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
if test $have_long_long = yes -a $ac_cv_sizeof_off_t -ge 8; then
|
|
|
|
|
|
|
|
dnl We assume that if sprintf() supports %lld or %qd,
|
|
|
|
dnl then all of *printf() does. If not, disable long long
|
|
|
|
dnl support because we don't know how to display it.
|
|
|
|
|
|
|
|
AC_MSG_CHECKING(*printf() support for %lld)
|
|
|
|
can_printf_longlong=no
|
|
|
|
AC_TRY_RUN([
|
|
|
|
#include <stdio.h>
|
|
|
|
int main() {
|
|
|
|
char buf[100];
|
|
|
|
sprintf(buf, "%lld", 4294967300LL);
|
|
|
|
return (strcmp(buf, "4294967300"));
|
|
|
|
}
|
|
|
|
], [
|
|
|
|
AC_MSG_RESULT(yes)
|
|
|
|
can_printf_longlong=yes
|
|
|
|
], [
|
|
|
|
AC_MSG_RESULT(no)
|
|
|
|
], [ : ])
|
|
|
|
|
|
|
|
if test $can_printf_longlong != yes; then
|
|
|
|
AC_MSG_CHECKING(*printf() support for %qd)
|
|
|
|
AC_TRY_RUN([
|
|
|
|
#include <stdio.h>
|
|
|
|
int main() {
|
|
|
|
char buf[100];
|
|
|
|
sprintf(buf, "%qd", 4294967300LL);
|
|
|
|
return (strcmp(buf, "4294967300"));
|
|
|
|
}
|
|
|
|
], [
|
|
|
|
AC_MSG_RESULT(yes)
|
|
|
|
can_printf_longlong=yes
|
|
|
|
AC_DEFINE(HAVE_PRINTF_QD, 1)
|
|
|
|
], [
|
|
|
|
AC_MSG_RESULT(no)
|
|
|
|
], [ : ])
|
|
|
|
fi
|
|
|
|
|
|
|
|
if test $can_printf_longlong = yes; then
|
|
|
|
AC_DEFINE(HAVE_QUAD_SUPPORT, 1)
|
|
|
|
AC_REPLACE_FUNCS(strtoll)
|
|
|
|
fi
|
|
|
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
have_rfc2553_netdb=no
|
|
|
|
if test $ac_cv_func_getaddrinfo = yes -a ! -n "$socks"; then
|
|
|
|
AC_MSG_TRY_COMPILE(for AI_NUMERICHOST,
|
|
|
|
ftp_cv_have_ai_numerichost, [
|
|
|
|
#include <sys/types.h>
|
|
|
|
#include <sys/socket.h>
|
|
|
|
#include <netdb.h> ],
|
|
|
|
[ int X = AI_NUMERICHOST ], [ have_rfc2553_netdb=yes ])
|
|
|
|
fi
|
|
|
|
AC_MSG_CHECKING(for working getaddrinfo())
|
|
|
|
if test $have_rfc2553_netdb = yes; then
|
|
|
|
AC_DEFINE(HAVE_RFC2553_NETDB, 1)
|
|
|
|
AC_MSG_RESULT(yes)
|
|
|
|
else
|
|
|
|
if test $ac_cv_func_getaddrinfo = yes; then
|
|
|
|
LIBOBJS="$LIBOBJS getaddrinfo.o"
|
|
|
|
AC_MSG_RESULT(no - using local version)
|
|
|
|
else
|
|
|
|
AC_MSG_RESULT(using local version)
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
if test $ac_cv_func_sl_init = yes; then
|
|
|
|
AC_MSG_TRY_COMPILE(if sl_add() returns int, ftp_cv_INT_SL_ADD, [
|
|
|
|
#include <stringlist.h> ], [ int f = sl_add((StringList *)0, "foo") ],
|
|
|
|
[:] , [LIBOBJS="$LIBOBJS sl_init.o"])
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
dnl Tests for stuff for inbuilt ls
|
|
|
|
dnl
|
|
|
|
|
|
|
|
if test $opt_builtinls = yes; then
|
|
|
|
AC_REPLACE_FUNCS(fts_open strmode user_from_uid)
|
|
|
|
LSOBJS="cmp.o ls.o print.o util.o"
|
|
|
|
else
|
|
|
|
AC_DEFINE(NO_INTERNAL_LS,1)
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
dnl Build libukem if necessary
|
|
|
|
dnl
|
|
|
|
|
|
|
|
if test -n "$LIBOBJS"; then
|
|
|
|
INCLUDES="$INCLUDES -I\${srcdir}/../libukem"
|
|
|
|
LDFLAGS="$LDFLAGS -L../libukem"
|
|
|
|
LIBS="$LIBS -lukem"
|
|
|
|
LIBUKEM=libukem.a
|
|
|
|
LIBDEPENDS="$LIBDEPENDS ../libukem/libukem.a"
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
dnl Create the Makefiles
|
|
|
|
dnl
|
|
|
|
|
|
|
|
AC_SUBST(INCLUDES)
|
|
|
|
AC_SUBST(LIBUKEM)
|
|
|
|
AC_SUBST(LIBDEPENDS)
|
|
|
|
AC_SUBST(LSOBJS)
|
|
|
|
|
|
|
|
AC_OUTPUT(Makefile libukem/Makefile src/Makefile)
|