Skip to content
Fetching contributors…
Cannot retrieve contributors at this time
625 lines (558 sloc) 17.7 KB
dnl Process this file with autoconf to produce a configure script.
AC_PREREQ([2.60])
AC_INIT([lftp],m4_esyscmd([build-aux/git-version-gen .tarball-version]),[lftp-bugs@lftp.yar.ru])
AC_CONFIG_AUX_DIR([build-aux])
AC_CONFIG_MACRO_DIR([m4])
AC_CONFIG_LIBOBJ_DIR([lib])
AC_CONFIG_SRCDIR([src/ftpclass.cc])
AM_CONFIG_HEADER([lib/config.h])
AM_INIT_AUTOMAKE
dnl This doesn't *require* GNU extensions; it merely enables them if
dnl they're there.
AC_USE_SYSTEM_EXTENSIONS
test -z "$CXX" && DEFAULT_CXX=yes
test -z "$CFLAGS" && DEFAULT_CFLAGS=yes
test -z "$CXXFLAGS" && DEFAULT_CXXFLAGS=yes
test -z "$LDFLAGS" && DEFAULT_LDFLAGS=yes
dnl Checks for programs.
AC_PROG_CC
gl_EARLY
AC_PROG_CXX
AC_PROG_YACC
if test x$ac_cv_lib_fl_yywrap = xno; then
AC_DEFINE(NEED_YYWRAP, 1, [need yywrap]) dnl ?
fi
dnl POSIXCHECK is worthwhile for maintainers, but adds several seconds
dnl (more than 10% execution time) to ./configure, with no benefit for
dnl most users. Using it to look for bugs requires:
dnl GNULIB_POSIXCHECK=1 autoreconf -f
dnl ./configure
dnl make
dnl make -C src clean
dnl make CFLAGS=-DGNULIB_POSIXCHECK=1
m4_syscmd([test "${GNULIB_POSIXCHECK+set}" = set])
m4_if(m4_sysval, [0], [], [dnl
gl_ASSERT_NO_GNULIB_POSIXCHECK])
AC_SYS_LARGEFILE
AC_ARG_WITH(debug,
AS_HELP_STRING([--with-debug], [enable debug info]),
[ with_debug=$withval; ],
[ with_debug=no; ])
AC_ARG_WITH(profiling,
AS_HELP_STRING([--with-profiling], [enable profiling]),
[ with_profiling=$withval; ],
[ with_profiling=no; ])
AC_ARG_ENABLE([packager-mode],
AS_HELP_STRING([--enable-packager-mode],
[Change configuration behavior
to ease packaging]),
[if test x"${enableval}" = xyes
then
DEFAULT_CXX=no
DEFAULT_CFLAGS=no
DEFAULT_CXXFLAGS=no
DEFAULT_LDFLAGS=no
fi])
if test x$with_debug = xno; then
if test x$DEFAULT_CFLAGS = xyes; then
CFLAGS="`echo $CFLAGS | sed 's/-g//'`"
if test -z "$CFLAGS"; then
CFLAGS=-O
fi
fi
if test x$DEFAULT_CXXFLAGS = xyes; then
CXXFLAGS="`echo $CXXFLAGS | sed 's/-g//'`"
if test -z "$CXXFLAGS"; then
CXXFLAGS=-O
fi
fi
# don't strip when profiling
if test x$DEFAULT_LDFLAGS = xyes -a x$with_profiling != xyes; then
case "`uname -s`" in
Darwin) ;;
*) LDFLAGS="$LDFLAGS -s";;
esac
fi
fi
if test x$with_debug = xyes; then
dnl m4 will mangle brackets
if test x$DEFAULT_CFLAGS = xyes; then
CFLAGS="`echo $CFLAGS | sed 's/-O@<:@0-9@:>@\?//'`"
fi
if test x$DEFAULT_CXXFLAGS = xyes; then
CXXFLAGS="`echo $CXXFLAGS | sed 's/-O@<:@0-9@:>@\?//'`"
fi
fi
if test x$with_profiling = xyes; then
CFLAGS="$CFLAGS -pg"
CXXFLAGS="$CXXFLAGS -pg"
# profiling requires debugging, too, but don't nuke -O
# if test x$with_debug != xyes; then
# CFLAGS="$CFLAGS -g"
# CXXFLAGS="$CXXFLAGS -g"
# fi
fi
if test x$GCC = xyes; then
CFLAGS="$CFLAGS -Wall"
fi
if test x$GXX = xyes; then
CXXFLAGS="$CXXFLAGS -Wall -Wwrite-strings -Woverloaded-virtual"
# save some bytes
LFTP_CHECK_CXX_FLAGS([-fno-exceptions -fno-rtti])
# check for -fno-implement-inline (doesn't work without -O in gcc 2.95.4; functions are never inlined)
if test x$with_debug = xno; then
LFTP_NOIMPLEMENTINLINE
fi
fi
dnl Make sure C++ build environment is sane.
LFTP_CXX_TEST
CXX_DYNAMIC_INITIALIZERS
LFTP_CXX_BOOL
LFTP_CXX__BOOL
LFTP_CXX_ANSI_SCOPE
LFTP_CXX_STDC_LIMIT_MACROS
AC_SEARCH_LIBS([strerror],[cposix])
case "`uname -sr`" in
# Linux-2.2.x and older don't support fcntl64.
Linux\ 2.[012].*) enable_largefile=no;;
esac
dnl ** LFTP needs iconv, call the test explicitly (even if --disable-nls)
AM_ICONV
ALL_LINGUAS="de es fr it ja ko pl pt_BR ru uk zh_CN zh_TW zh_HK cs"
AM_GNU_GETTEXT([external])
AM_GNU_GETTEXT_VERSION([0.15])
test "$MSGFMT" = "no" && MSGFMT ="$missing_dir/missing msgfmt"
test "$GMSGFMT" = "no" && GMSGFMT ="$missing_dir/missing msgfmt"
test "$XGETTEXT" = ":" && XGETTEXT="$missing_dir/missing xgettext"
if test x$gt_cv_func_gettext_libintl = xyes; then
case "$LIBS" in
*-lintl*) ;;
*) LIBS="$LIBS -lintl";;
esac
fi
AC_ARG_WITH(pager,
AS_HELP_STRING([--with-pager=/path], [use specified pager by default]),
[ with_pager=$withval; ],
[ with_pager="exec more"; ])
AC_DEFINE_UNQUOTED([DEFAULT_PAGER], "$with_pager", [Default pager command])
AC_ARG_WITH(socks,
AS_HELP_STRING([--with-socks@<:@=/path@:>@], [build with SOCKSv4 library]),
[ with_socks=$withval; ],
[ with_socks=no; ])
AC_ARG_WITH(socks5,
AS_HELP_STRING([--with-socks5@<:@=/path@:>@], [build with SOCKSv5 library]),
[ with_socks5=$withval;],
[ with_socks5=no; ])
AC_ARG_WITH(socksdante,
AS_HELP_STRING([--with-socksdante@<:@=/path@:>@], [build with SOCKS-Dante library]),
[ with_socksdante=$withval;],
[ with_socksdante=no; ])
case "$with_socks" in
yes|no|"") ;;
*) socks_loc=$with_socks
with_socks=yes;;
esac
case "$with_socks5" in
yes|no|"") ;;
*) socks_loc=$with_socks5
with_socks5=yes;;
esac
case "$with_socksdante" in
yes|no|"") ;;
*) socks_loc=$with_socksdante
with_socksdante=yes;;
esac
if test x$socks_loc != x; then
LDFLAGS="$LDFLAGS -L$socks_loc/lib"
CPPFLAGS="$CPPFLAGS -I$socks_loc/include"
fi
if test x$with_socks = xyes; then
AC_DEFINE(SOCKS4, 1, [define if you are building with SOCKS support])
AC_CHECK_LIB(socks, main, [SOCKSLIBS=-lsocks],
[AC_MSG_ERROR([cannot find -lsocks library])])
fi
if test x$with_socks5 = xyes; then
AC_DEFINE(SOCKS5, 1, [define if you are building with SOCKSv5 support])
AC_CHECK_LIB(socks5, main, [SOCKSLIBS=-lsocks5],
[AC_MSG_ERROR([cannot find -lsocks5 library])])
fi
if test x$with_socksdante = xyes; then
AC_DEFINE(SOCKS_DANTE, 1, [define if you are building with SOCKS-Dante support])
AC_CHECK_LIB(socks, main, [SOCKSLIBS=-lsocks],
[AC_MSG_ERROR([cannot find -lsocks library])])
fi
AC_SUBST(SOCKSLIBS)
if test -n "$SOCKSLIBS"; then
old_LIBS="$LIBS"
LIBS="$LIBS $SOCKSLIBS"
AC_CHECK_FUNCS([Rpoll])
if test "$ac_cv_func_Rpoll" != yes; then
gl_cv_func_poll=no
fi
LIBS="$old_LIBS"
fi
AC_ARG_WITH(modules,
AS_HELP_STRING([--with-modules], [build modular lftp (protocols become dll's)]),
[ with_modules=$withval; ],
[ with_modules=no; ])
AM_CONDITIONAL([WITH_MODULES], [test "$with_modules" = yes])
if test "$with_modules" = yes; then
enable_static=no
enable_shared=yes
AC_DEFINE(WITH_MODULES, 1, [build modular lftp])
else
enable_static=yes
enable_shared=no
fi
#test -z "$enable_static" && enable_static=no
LT_INIT([dlopen])
LIBTOOL="$LIBTOOL --silent"
gl_INIT
if test x$ac_cv_func_wcwidth != xyes || test x$REPLACE_WCWIDTH = x1; then
gl_LIBOBJ([wcwidth])
AC_DEFINE([REPLACE_WCWIDTH], 1, [Define when using wcwidth replacement])
fi
dnl Checks for libraries.
dnl LFTP_CHECK_LIBM
AC_SEARCH_LIBS([socket],[socket])
AC_SEARCH_LIBS([gethostbyname],[nsl])
AC_SEARCH_LIBS([dlopen],[dl],[AC_DEFINE(HAVE_DLOPEN, 1, [have dlopen])])
AC_SEARCH_LIBS([res_9_search],[resolv],[AC_DEFINE(HAVE_RES_9_SEARCH, 1, [have res_9_search])])
AC_SEARCH_LIBS([res_search],[resolv bind],[AC_DEFINE(HAVE_RES_SEARCH, 1, [have res_search])])
AC_CHECK_DECLS([res_search],,, [
#include <stdio.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <arpa/nameser.h>
#include <resolv.h>
])
AC_ARG_ENABLE([ipv6],
AS_HELP_STRING([--disable-ipv6],[disable IPv6 code]),
[
if test x$enableval = xno; then
AC_DEFINE([DISABLE_IPV6],[1],[Disable IPv6 code])
fi
]
)
AC_ARG_WITH(libresolv, AS_HELP_STRING([--without-libresolv], [don't use libresolv]),
[with_libresolv=$withval], [with_libresolv=yes])
if test x$with_libresolv = xyes; then
AC_SEARCH_LIBS(hstrerror, resolv)
fi
lftp_TERMINFO
lftp_LIB_READLINE([5.0])
if test "$HAVE_READLINE" != "yes"; then
AC_MSG_ERROR([cannot find readline library, install readline-devel package])
fi
AC_ARG_WITH(gnutls, AS_HELP_STRING([--without-gnutls], [don't use GNUTLS library]),
[with_gnutls=$withval], [with_gnutls=yes])
AC_ARG_WITH(openssl,
AS_HELP_STRING([--with-openssl@<:@=/path@:>@], [use OpenSSL @<:@at /path@:>@])
AS_HELP_STRING([--without-openssl], [don't use OpenSSL (default)]),
[with_openssl=$withval], [with_openssl=no])
case "$with_openssl" in
yes) with_gnutls=no;;
""|no) : ;;
*) openssl_loc=$with_openssl
with_openssl=yes
with_gnutls=no;;
esac
if test x$with_gnutls = xyes; then
PKG_PROG_PKG_CONFIG
PKG_CHECK_MODULES([LIBGNUTLS], [gnutls >= 1.0.0], [
AC_DEFINE([USE_GNUTLS], 1, [Define to 1 when using GNU TLS library])
gnutls_version_code=`$PKG_CONFIG --modversion gnutls | $AWK -F. '{ printf "0x%02X%02X%02X\n",$1,$2,$3 }'`
AC_DEFINE_UNQUOTED([LFTP_LIBGNUTLS_VERSION_CODE], $gnutls_version_code, [Define to libgnutls version, e.g. 0x010203 for 1.2.3])
])
fi
if test x$with_openssl = xyes -a x"$LIBGNUTLS_LIBS" = x; then
LFTP_OPENSSL_CHECK
fi
AX_CHECK_ZLIB([
AC_SUBST([ZLIB],[-lz])
AC_SUBST([ZLIB_LDFLAGS],["-L${ZLIB_HOME}/lib"])
AC_SUBST([ZLIB_CPPFLAGS],["-I${ZLIB_HOME}/include"])
],[
AC_MSG_ERROR([cannot find -lz library, install zlib-devel package])
])
AX_LIB_EXPAT
if test "x$HAVE_EXPAT" = xyes; then
AC_DEFINE(HAVE_LIBEXPAT, 1, [Define if you have expat library])
fi
# Check whether user wants DNSSEC local validation support
AC_ARG_WITH(dnssec-local-validation,
[ --with-dnssec-local-validation Enable local DNSSEC validation using libval (default=no)], want_dnssec=$withval, want_dnssec=no)
if test "x$want_dnssec" = "xyes"; then
AC_CHECK_HEADERS(validator/validator.h)
if test "$ac_cv_header_validator_validator_h" != yes; then
AC_MSG_ERROR([Can't find validator.h (from dnssec-tools)])
fi
AC_SEARCH_LIBS([SHA1_Init], [crypto ssl])
AC_CHECK_LIB(sres, query_send)
if test "$ac_cv_lib_sres_query_send" != yes; then
AC_MSG_ERROR([Can't find libsres (from dnssec-tools)])
fi
AC_CHECK_LIB(val, p_val_status,[LIBS="$LIBS -lval"])
if test "x$ac_cv_lib_val_p_val_status" = "xno"; then
AC_CHECK_LIB(pthread, pthread_rwlock_init)
AC_CHECK_LIB(val-threads, p_val_status,
[LIBS="$LIBS -lval-threads -lpthread" LIBVAL_SUFFIX="-threads"],
AC_MSG_ERROR([Can't find libval or libval-threads (from dnssec-tools)]))
fi
if test "x$ac_cv_lib_val_p_val_status" = "xyes" -o "x$ac_cv_lib_val_threads_p_val_status" = "xyes"; then
AC_DEFINE(DNSSEC_LOCAL_VALIDATION, 1,
[Define if you want local DNSSEC validation support])
fi
fi
LFTP_PTY_CHECK
LFTP_POSIX_FALLOCATE_CHECK
LFTP_POSIX_FADVISE_CHECK
LFTP_LIBIDN_CHECK
dnl Checks for header files.
AC_HEADER_DIRENT
AC_HEADER_STDC
AC_HEADER_SYS_WAIT
AC_HEADER_TIME
AC_CHECK_HEADERS(libintl.h fcntl.h sys/time.h errno.h stdlib.h varargs.h dirent.h\
termios.h termio.h sys/select.h sys/stropts.h string.h memory.h\
strings.h sys/ioctl.h dlfcn.h arpa/inet.h arpa/nameser.h netinet/in.h netinet/tcp.h\
netinet/in_systm.h netinet/ip.h termcap.h sys/statfs.h ifaddrs.h\
resolv.h langinfo.h endian.h locale.h expat.h linux/magic.h socks.h,,,[
#include <sys/types.h>
#ifdef HAVE_ARPA_NAMESER_H
# include <arpa/nameser.h>
#endif
#ifdef HAVE_NETINET_IN_H
# include <netinet/in.h>
#endif
#ifdef HAVE_NETINET_IN_SYSTM_H
# include <netinet/in_systm.h>
#endif
])
LFTP_NEED_TRIO
# See if we have h_errno (the test is here so we can use -lresolv if necessary).
AC_CACHE_CHECK([for h_errno], inetutils_cv_var_h_errno,
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <netdb.h>]], [[ #ifndef h_errno
extern int h_errno;
#endif
int iu_x = h_errno; ]])],[inetutils_cv_var_h_errno=yes],[inetutils_cv_var_h_errno=no]))
if test "$inetutils_cv_var_h_errno" = yes; then
AC_DEFINE([HAVE_H_ERRNO], 1, [system has h_errno])
AC_CHECK_DECLS([h_errno],,, [#include <netdb.h>])
fi
# See if the system has hstrerror, and replace it if not
AC_CHECK_FUNC(hstrerror, , [gl_LIBOBJ(hstrerror)])
if test "$ac_cv_func_hstrerror" = yes; then
AC_CHECK_DECLS([hstrerror],,, [#include <netdb.h>])
else
# No hstrerror, so see if the H_ERRLIST variable can be used by ours
AC_CHECK_FUNC([h_errlist],
AC_CHECK_DECLS([h_errlist],,, [#include <netdb.h>]))
fi
if test "$ac_cv_func_hstrerror" = yes -o "$ac_cv_func_h_errlist" = yes; then
# If there's a system hstrerror, or we can reasonably replace it, say so.
# We still provide some definition, regardless, but this allows people to use
# a reasonable alternative if the situation allows, rather than using a
# degenerate version that only says `Host lookup error N'.
AC_DEFINE(HAVE_HSTRERROR, 1, [System has usable hstrerror])
fi
dnl Checks for typedefs, structures, and compiler characteristics.
AC_TYPE_PID_T
AC_C_CONST
AC_C_INLINE
AC_TYPE_OFF_T
AC_TYPE_SIZE_T
if test x$ac_cv_header_endian_h = xno; then
AC_C_BIGENDIAN
fi
AC_CHECK_MEMBERS([struct sockaddr.sa_len],,,
[#include <sys/types.h>
#include <sys/socket.h>])
AC_CHECK_MEMBERS([struct sockaddr_in6.sin6_scope_id],,,
[#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>])
AC_STRUCT_TIMEZONE
AC_STRUCT_TM
dnl Checks for library functions.
AC_FUNC_UTIME_NULL
AC_FUNC_GETPGRP
AC_FUNC_VPRINTF
AC_HEADER_STAT
LFTP_FUNC_SSCANF_CONST
AC_CHECK_FUNCS([statfs\
killpg setpgid tcgetattr vsnprintf snprintf sscanf \
gethostbyname2 getipnodebyname getaddrinfo getnameinfo setsid random\
inet_aton setlocale dn_expand socketpair])
lftp_VA_COPY
LFTP_ENVIRON_CHECK
AC_CHECK_DECLS([vsnprintf,snprintf,unsetenv,random,inet_aton,strptime,strtok_r,dn_expand,memmem],,,[
#include <sys/types.h>
#include <sys/socket.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#if STDC_HEADERS || HAVE_STRING_H
# include <string.h>
# if !STDC_HEADERS && HAVE_MEMORY_H
# include <memory.h>
# endif
#else
# include <strings.h>
#endif
#ifdef HAVE_NETINET_IN_H
# include <netinet/in.h>
#endif
#ifdef HAVE_ARPA_INET_H
# include <arpa/inet.h>
#endif
#ifdef HAVE_RESOLV_H
# include <resolv.h>
#endif
])
if test "$prefix" = /usr -a "$sysconfdir" = '${prefix}/etc'; then
sysconfdir=/etc
fi
AH_TOP([
#ifndef CONFIG_H
#define CONFIG_H
])
AH_BOTTOM([
#if defined(__cplusplus) && defined(inline)
# undef /**/ inline
#endif
#if !defined(HAVE_SETPGID) && !defined(SETPGRP_VOID)
# define setpgid(pid, pgrp) setpgrp((pid),(pgrp))
#endif
#ifdef __cplusplus
# define CDECL extern "C"
# define CDECL_BEGIN CDECL {
# define CDECL_END }
template<typename T>
static inline T replace_value(T &var,T new_value)
{
T tmp=var;
var=new_value;
return tmp;
}
#else
# define CDECL
# define CDECL_BEGIN
# define CDECL_END
#endif
/* should be included before any real code. */
#include <alloca.h>
#include "gettext.h"
#define _(msgid) gettext (msgid)
#define N_(msgid) msgid
#ifndef PARAMS
# if defined __STDC__ || defined __cplusplus
# define PARAMS(x) x
# else
# define PARAMS(x) ()
# endif
#endif
#define INET6 (!defined(DISABLE_IPV6) \
&& defined(HAVE_IPV6) \
&& defined(HAVE_GETNAMEINFO) \
&& defined(HAVE_GETADDRINFO))
#define USE_EXPAT (defined(HAVE_EXPAT_H) && defined(HAVE_LIBEXPAT))
#if defined(SOCKS4) || defined(SOCKS5) || defined(SOCKS_DANTE)
# define SOCKS 1
#endif
#ifdef SOCKS
# if defined(HAVE_SOCKS_H)
CDECL_BEGIN
# include <socks.h>
CDECL_END
# undef /**/ getc /* fix a problem with redefined getc */
# else // !HAVE_SOCKS_H
# if defined(SOCKS4) || defined(SOCKS_DANTE)
# define connect Rconnect
# define getsockname Rgetsockname
# define bind Rbind
# define accept Raccept
# define listen Rlisten
# define select Rselect
# ifdef HAVE_RPOLL
# define poll Rpoll
# endif
CDECL int SOCKSinit(const char *);
# endif
# ifdef SOCKS_DANTE
# define rresvport Rrresvport
# define bindresvport Rbindresvport
# define gethostbyname Rgethostbyname
# define gethostbyname2 Rgethostbyname2
# define sendto Rsendto
# define recvfrom Rrecvfrom
# define recvfrom Rrecvfrom
# define write Rwrite
# define writev Rwritev
# define send Rsend
# define sendmsg Rsendmsg
# define read Rread
# define readv Rreadv
# define recv Rrecv
# define recvmsg Rrecvmsg
# endif
# endif // !HAVE_SOCKS_H
#endif // SOCKS
#if defined __MSDOS__ || defined __CYGWIN32__
# define NATIVE_CRLF 1
#endif
#define E_RETRY(e) ((e)==EAGAIN || (e)==EWOULDBLOCK || (e)==EINTR)
#define E_LOCK_IGNORE(e) ((e)==EINVAL || (e)==ENOLCK)
#ifndef HAVE_RANDOM
#define srandom(x) srand((x))
#define random() ((long)(rand()/(RAND_MAX+1.0)*2147483648.0))
#endif
/* Tell the compiler when a conditional or integer expression is
almost always true or almost always false. */
#ifndef HAVE_BUILTIN_EXPECT
# define __builtin_expect(expr, val) (expr)
#endif
#ifdef __GNUC__
# define PRINTF_LIKE(n,m) __attribute__((format(__printf__,n,m)))
#else
# define PRINTF_LIKE(n,m)
# define __attribute__(x)
#endif
/* Attribute `sentinel' was valid as of gcc 3.5. */
#if defined(__GNUC__) && \
(__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 5))
# define ATTRIBUTE_SENTINEL __attribute__ ((__sentinel__))
#else
# define ATTRIBUTE_SENTINEL
#endif
#ifdef TRIO_REPLACE_STDIO
/* replace all the functions */
# undef /**/ HAVE_PRINTF
# undef /**/ HAVE_VPRINTF
# undef /**/ HAVE_FPRINTF
# undef /**/ HAVE_VFPRINTF
# undef /**/ HAVE_SPRINTF
# undef /**/ HAVE_VSPRINTF
# undef /**/ HAVE_SNPRINTF
# undef /**/ HAVE_VSNPRINTF
# undef /**/ HAVE_SCANF
# undef /**/ HAVE_VSCANF
# undef /**/ HAVE_FSCANF
# undef /**/ HAVE_VFSCANF
# undef /**/ HAVE_SSCANF
# undef /**/ HAVE_VSSCANF
# include "trio.h"
#endif
#define USE_SSL (defined(USE_GNUTLS) || defined(USE_OPENSSL))
#endif /* CONFIG_H */
])
AC_CONFIG_FILES([Makefile])
AC_CONFIG_FILES([src/Makefile])
AC_CONFIG_FILES([lib/Makefile])
AC_CONFIG_FILES([doc/Makefile])
AC_CONFIG_FILES([po/Makefile.in])
AC_CONFIG_FILES([m4/Makefile])
AC_CONFIG_FILES([trio/Makefile])
AC_CONFIG_FILES([tests/Makefile])
AC_CONFIG_FILES([lftp.spec])
AC_OUTPUT
Something went wrong with that request. Please try again.