dnl $Id: configure.in,v 1.4 2005/01/04 23:44:24 lukem Exp $ dnl dnl configure.in -- dnl process this file with autoconf to produce a configure script. dnl AC_REVISION($Revision: 1.4 $)dnl AC_INIT(tnftp.h) dnl Arguments for which features are included dnl AC_ARG_PROGRAM AC_ARG_ENABLE(editcomplete, [\ --enable-editcomplete Turn on command line editing and completion. --disable-editcomplete Turn off command line editing and completion [default: enabled].], opt_editcomplete=$enableval, opt_editcomplete=yes) AC_ARG_ENABLE(ipv6, [\ --enable-ipv6 Enable IPv6 support (if your OS supports it). --disable-ipv6 Disable IPv6 support (even if your OS supports it) [default: enabled].], opt_ipv6=$enableval, opt_ipv6=yes) dnl Checks for programs. dnl AC_PROG_MAKE_SET AC_PROG_CC AC_PROG_AWK AC_PROG_INSTALL AC_PROG_RANLIB AC_CHECK_PROGS(AR, ar) AC_AIX dnl Checks for libraries. dnl AC_CHECK_LIB(util, fparseln) if test $opt_editcomplete = yes; then AC_CHECK_LIB(tinfo, tgetent, , AC_CHECK_LIB(termcap, tgetent, , AC_CHECK_LIB(curses, tgetent, , AC_CHECK_LIB(ncurses, tgetent)))) AC_SEARCH_LIBS(el_init, edit, have_libedit=yes, have_libedit=no) 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 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 regex.h paths.h \ sys/syslimits.h termcap.h util.h libutil.h vis.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 ] , [ 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 #include ], [ in_port_t X ], [AC_DEFINE(HAVE_IN_PORT_T, 1)]) AC_MSG_TRY_COMPILE(for sa_family_t, ftp_cv_HAVE_SA_FAMILY_T, [ #include #include ], [ sa_family_t X ], [AC_DEFINE(HAVE_SA_FAMILY_T, 1)]) AC_MSG_TRY_COMPILE(for sockaddr_in.sin_len, ftp_cv_HAVE_SOCKADDR_SA_LEN, [ #include #include #include ], [ 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 #include ], [ 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 #include ], [ int X = AF_INET6 ], [AC_DEFINE(HAVE_AF_INET6, 1)]) AC_MSG_TRY_COMPILE(for struct sockaddr_in6, ftp_cv_HAVE_SOCKADDR_IN6, [ #include #include ], [ struct sockaddr_in6 X; int Y = X.sin6_scope_id ], [AC_DEFINE(HAVE_SOCKADDR_IN6, 1)]) if test $ac_cv_header_arpa_nameser_h = yes; then AC_MSG_TRY_COMPILE(for IN6ADDRSZ in arpa/nameser.h, ftp_cv_HAVE_IN6ADDRSZ, [ #include #include ], [ int X = IN6ADDRSZ ], [AC_DEFINE(HAVE_IN6ADDRSZ, 1)]) fi fi AC_MSG_TRY_COMPILE(for struct addrinfo, ftp_cv_HAVE_ADDRINFO, [ #include #include #include ], [ 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 #else # define dirent direct # if HAVE_SYS_NDIR_H # include # endif # if HAVE_SYS_DIR_H # include # endif # if HAVE_NDIR_H # include # endif #endif ], [ struct dirent dp; int X = dp.d_namlen; ], [AC_DEFINE(HAVE_D_NAMLEN, 1)]) AC_MSG_TRY_COMPILE(for h_errno declaration, ftp_cv_HAVE_H_ERRNO_D, [ #include ], [ int X = h_errno ], [AC_DEFINE(HAVE_H_ERRNO_D, 1)]) AC_MSG_TRY_COMPILE(for fclose() declaration, ftp_cv_HAVE_FCLOSE_D, [ #include ], [ int (*X)() = fclose ], [AC_DEFINE(HAVE_FCLOSE_D, 1)]) AC_MSG_TRY_COMPILE(for getpass() declaration, ftp_cv_HAVE_GETPASS_D, [ #include #include ], [ char *(*X)() = getpass ], [ AC_DEFINE(HAVE_GETPASS_D, 1)]) AC_MSG_TRY_COMPILE(for optarg declaration, ftp_cv_HAVE_OPTARG_D, [ #include #include ], [ char *X = optarg ], [AC_DEFINE(HAVE_OPTARG_D, 1)]) AC_MSG_TRY_COMPILE(for optind declaration, ftp_cv_HAVE_OPTIND_D, [ #include #include ], [ int X = optind ], [AC_DEFINE(HAVE_OPTIND_D, 1)]) AC_MSG_TRY_COMPILE(for pclose() declaration, ftp_cv_HAVE_PCLOSE_D, [ #include ], [ int (*X)() = pclose ], [AC_DEFINE(HAVE_PCLOSE_D, 1)]) dnl Checks for library functions. dnl AC_REPLACE_FUNCS(err fgetln fseeko getaddrinfo getnameinfo inet_ntop inet_pton \ mkstemp setprogname sl_init snprintf strdup strerror strlcat \ strlcpy strptime strsep strunvis strvis timegm usleep utimes) AC_CHECK_FUNCS(gethostbyname2 getpassphrase getpgrp memmove select) if test $ac_cv_func_getpgrp = yes; then AC_FUNC_GETPGRP fi if test $ac_cv_lib_util_fparseln != yes; then AC_REPLACE_FUNCS(fparseln) fi LIBOBJS="$LIBOBJS glob.o" if test $ac_cv_func_strptime = yes; then AC_MSG_TRY_COMPILE(for strptime() declaration, ftp_cv_HAVE_STRPTIME_D, [ #include ], [ char *X = strptime("", "", NULL) ], [AC_DEFINE(HAVE_STRPTIME_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 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 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 # handle Darwin 7 having a poll() compatibility function. be # conservative, if we don't find one of poll.h or sys/poll.h, don't # attempt to use poll(). AC_CHECK_HEADERS([poll.h sys/poll.h]) if test $ac_cv_header_poll_h = yes || test $ac_cv_header_sys_poll_h = yes; then AC_CHECK_FUNC(poll, AC_MSG_TRY_COMPILE([if poll() is implemented natively], ftp_cv_POLL_NATIVE, [ #if HAVE_POLL_H #include #endif #if HAVE_SYS_POLL_H #include #endif ], [ #ifdef _POLL_EMUL_H_ #error "poll() is emulated" #endif ], [AC_DEFINE(HAVE_POLL, 1)], [:]) ) fi if test $opt_editcomplete = yes; then if test $have_libedit = yes; then AC_MSG_TRY_COMPILE(for EL_RPROMPT in libedit, ftp_cv_have_libedit, [ #include ], [ int X = EL_RPROMPT ], [:], have_libedit=no ) fi AC_MSG_CHECKING(for working libedit) if test $have_libedit = no; then AC_MSG_RESULT(no - using my own) INCLUDES="-I\${srcdir}/../libedit $INCLUDES" LDFLAGS="-L../libedit $LDFLAGS" LIBS="-ledit $LIBS" LIBEDIT=libedit.a LIBDEPENDS="$LIBDEPENDS ../libedit/libedit.a" else AC_MSG_RESULT(yes) fi else CFLAGS="-DNO_EDITCOMPLETE $CFLAGS" 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 ], [ int f = sl_add((StringList *)0, "foo") ], [:] , [LIBOBJS="$LIBOBJS sl_init.o"]) 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 #include #include ], [ 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_header_vis_h = yes; then AC_MSG_TRY_COMPILE(for VIS_WHITE in vis.h, ftp_cv_have_vis_white, [ #include #include ], [ int X = VIS_WHITE ], [:], ac_cv_header_vis_h=no ) fi if test -n "$LIBOBJS"; then INCLUDES="$INCLUDES -I\${srcdir}/../libnetbsd" LDFLAGS="$LDFLAGS -L../libnetbsd" LIBS="$LIBS -lnetbsd" LIBNETBSD=libnetbsd.a LIBDEPENDS="$LIBDEPENDS ../libnetbsd/libnetbsd.a" fi dnl Create the Makefiles dnl AC_SUBST(INCLUDES) AC_SUBST(LIBEDIT) AC_SUBST(LIBNETBSD) AC_SUBST(LIBDEPENDS) AC_OUTPUT(Makefile libedit/Makefile libedit/makelist libnetbsd/Makefile \ src/Makefile)