mirror of
https://github.com/rkd77/elinks.git
synced 2024-11-03 08:07:17 -05:00
1489 lines
46 KiB
Plaintext
1489 lines
46 KiB
Plaintext
dnl Process this file with autoconf to produce a configure script.
|
|
|
|
AC_PREREQ(2.13)
|
|
AC_INIT(src/main/main.c)
|
|
AC_CONFIG_AUX_DIR(config)
|
|
|
|
PACKAGE=elinks
|
|
VERSION=0.12.GIT
|
|
AC_SUBST(PACKAGE)
|
|
AC_SUBST(VERSION)
|
|
AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Package version])
|
|
AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Package version])
|
|
AC_CONFIG_HEADERS(config.h)
|
|
|
|
AC_CHECK_PROG(ACLOCAL,[aclocal],[aclocal],[config/missing aclocal])
|
|
AC_CHECK_PROG(AUTOCONF,[autoconf],[autoconf],[config/missing autoconf])
|
|
AC_CHECK_PROG(AUTOHEADER,[autoheader],[autoheader],[config/missing autoheader])
|
|
|
|
MAKE=
|
|
|
|
for make in gnumake gmake make false; do
|
|
if test "x$MAKE" = x; then
|
|
AC_PATH_PROGS(MAKE, "$make")
|
|
fi
|
|
done
|
|
|
|
builddir="`pwd`"
|
|
|
|
# Cleanup if we are configuring with a previous build in the tree
|
|
if test -e Makefile.config; then
|
|
AC_MSG_CHECKING([for previous build to clean])
|
|
"$MAKE" -C "$builddir/src" cleanall >/dev/null 2>/dev/null
|
|
AC_MSG_RESULT(done)
|
|
fi
|
|
|
|
dnl ===================================================================
|
|
dnl Load feature configuration file and start logging features.
|
|
dnl ===================================================================
|
|
|
|
features="features.conf"
|
|
AC_CHECK_FILE("$srcdir/$features", [ . $srcdir/$features ])
|
|
AC_CHECK_FILE("$builddir/$features", [ . $builddir/$features ])
|
|
echo "Feature summary:" > features.log
|
|
|
|
dnl ===================================================================
|
|
dnl Checks for programs.
|
|
dnl ===================================================================
|
|
|
|
AC_PROG_CC
|
|
AC_PROG_AWK
|
|
AC_PATH_PROGS(AWK, "$AWK")
|
|
AC_PROG_RANLIB
|
|
AC_PROG_INSTALL
|
|
|
|
AC_PATH_PROGS(CG_COMMIT_ID, "cg-commit-id")
|
|
AC_PATH_PROGS(SPARSE, "sparse")
|
|
|
|
CONFIG_ASCIIDOC="no"
|
|
CONFIG_POD2HTML="no"
|
|
CONFIG_XMLTO="no"
|
|
CONFIG_JW="no"
|
|
|
|
if test "x$CONFIG_DOC" != xno; then
|
|
AC_PATH_PROGS(ASCIIDOC, "asciidoc")
|
|
if test "x$ASCIIDOC" != "x"; then
|
|
EL_CONFIG(CONFIG_ASCIIDOC, [AsciiDoc])
|
|
EL_CONFIG(MANUAL_ASCIIDOC, [HTML (one file)])
|
|
EL_CONFIG(MAN_ASCIIDOC, [HTML])
|
|
|
|
echo > config.asciidoc-unsafe.txt
|
|
if "$ASCIIDOC" --unsafe config.asciidoc-unsafe.txt >/dev/null 2>/dev/null; then
|
|
ASCIIDOC_FLAGS=--unsafe
|
|
fi
|
|
rm config.asciidoc-unsafe.*
|
|
fi
|
|
|
|
AC_PATH_PROGS(XMLTO, "xmlto")
|
|
if test "x$XMLTO" != "x"; then
|
|
EL_CONFIG(CONFIG_XMLTO, [XmlTo])
|
|
EL_CONFIG(MANUAL_XMLTO, [HTML (multiple files)])
|
|
EL_CONFIG(MAN_XMLTO, [man (groff)])
|
|
fi
|
|
|
|
AC_PATH_PROGS(JW, "jw")
|
|
if test "x$JW" != "x"; then
|
|
EL_CONFIG(CONFIG_JW, [JadeWrapper])
|
|
EL_CONFIG(MANUAL_JW, [PDF])
|
|
fi
|
|
|
|
AC_PATH_PROGS(POD2HTML, "pod2html")
|
|
if test "x$POD2HTML" != "x"; then
|
|
EL_CONFIG(CONFIG_POD2HTML, [Pod2HTML])
|
|
fi
|
|
fi
|
|
|
|
AC_SUBST(ASCIIDOC_FLAGS)
|
|
AC_SUBST(CONFIG_ASCIIDOC)
|
|
AC_SUBST(CONFIG_POD2HTML)
|
|
AC_SUBST(CONFIG_XMLTO)
|
|
AC_SUBST(CONFIG_JW)
|
|
|
|
EL_CONFIG_DEPENDS(CONFIG_DOC, [CONFIG_ASCIIDOC CONFIG_XMLTO CONFIG_JW CONFIG_POD2HTML], [Documentation Tools])
|
|
EL_CONFIG_DEPENDS(CONFIG_MANUAL, [MANUAL_ASCIIDOC MANUAL_XMLTO MANUAL_JW], [Manual Formats])
|
|
EL_CONFIG_DEPENDS(CONFIG_MANPAGE, [MAN_ASCIIDOC MAN_XMLTO], [Man Page Formats])
|
|
|
|
dnl gcc specific options (to be continued at the bottom of configure)
|
|
if test "x$ac_cv_prog_gcc" = "xyes"; then
|
|
dnl We want to see all warnings and live with none.
|
|
dnl We can't set up -Werror here as there may be some warnings in test
|
|
dnl suite of configure, and we don't want to fail them.
|
|
CFLAGS="$CFLAGS -Wall"
|
|
fi
|
|
|
|
dnl ===================================================================
|
|
dnl Checks for special OSes.
|
|
dnl ===================================================================
|
|
|
|
dnl EL_CHECK_COMPILER_MACRO(define, name, flagname)
|
|
AC_DEFUN([EL_CHECK_COMPILER_MACROS],
|
|
[
|
|
AC_MSG_CHECKING([for $2])
|
|
|
|
for flag in $3; do
|
|
AC_TRY_COMPILE(, [#ifndef $flag
|
|
kill me!
|
|
#endif ], $1=yes, $1=no)
|
|
if test "[$]$1" = yes; then
|
|
EL_CONFIG([$1], [$2])
|
|
break
|
|
fi
|
|
done
|
|
|
|
AC_MSG_RESULT([$]$1)
|
|
])
|
|
|
|
EL_CHECK_COMPILER_MACROS(CONFIG_OS_BEOS, [BEOS], [__BEOS__])
|
|
AC_SUBST(CONFIG_OS_BEOS)
|
|
|
|
EL_CHECK_COMPILER_MACROS(CONFIG_OS_RISCOS, [RISCOS], [__riscos__])
|
|
AC_SUBST(CONFIG_OS_RISCOS)
|
|
|
|
EL_CHECK_COMPILER_MACROS(CONFIG_OS_WIN32, [WIN32], [_WIN32 __WIN32__])
|
|
AC_SUBST(CONFIG_OS_WIN32)
|
|
|
|
EL_CHECK_COMPILER_MACROS(CONFIG_OS_OS2, [EMX], [__EMX__])
|
|
AC_SUBST(CONFIG_OS_OS2)
|
|
test "$CONFIG_OS_OS2" = yes && LDFLAGS=`echo "$LDFLAGS" | sed "s/-Zexe//g"`
|
|
|
|
AC_MSG_CHECKING([for UNIX])
|
|
dnl FIXME: some depend kind of mechanism
|
|
if test "$CONFIG_OS_BEOS" = no && \
|
|
test "$CONFIG_OS_RISCOS" = no && \
|
|
test "$CONFIG_OS_WIN32" = no && \
|
|
test "$CONFIG_OS_OS2" = no; then
|
|
EL_CONFIG(CONFIG_OS_UNIX, [UNIX])
|
|
else
|
|
CONFIG_OS_UNIX=no
|
|
fi
|
|
AC_MSG_RESULT($CONFIG_OS_UNIX)
|
|
AC_SUBST(CONFIG_OS_UNIX)
|
|
|
|
dnl ===================================================================
|
|
dnl Checks for header files.
|
|
dnl ===================================================================
|
|
|
|
AC_HEADER_DIRENT
|
|
AC_HEADER_STDC
|
|
AC_HEADER_SYS_WAIT
|
|
AC_HEADER_TIME
|
|
|
|
AC_CHECK_HEADERS(wctype.h)
|
|
AC_CHECK_HEADERS(fcntl.h limits.h time.h unistd.h)
|
|
AC_CHECK_HEADERS(sigaction.h)
|
|
AC_CHECK_HEADERS(arpa/inet.h)
|
|
AC_CHECK_HEADERS(netinet/in_systm.h netinet/in_system.h netinet/ip.h)
|
|
AC_CHECK_HEADERS(net/if.h netdb.h netinet/in.h netinet/in6_var.h)
|
|
AC_CHECK_HEADERS(ifaddrs.h)
|
|
AC_CHECK_HEADERS(sys/cygwin.h io.h)
|
|
AC_CHECK_HEADERS(sys/fmutex.h)
|
|
AC_CHECK_HEADERS(sys/ioctl.h sys/sockio.h)
|
|
AC_CHECK_HEADERS(sys/resource.h)
|
|
AC_CHECK_HEADERS(sys/select.h)
|
|
AC_CHECK_HEADERS(sys/signal.h)
|
|
AC_CHECK_HEADERS(sys/socket.h)
|
|
AC_CHECK_HEADERS(sys/time.h)
|
|
AC_CHECK_HEADERS(sys/utsname.h)
|
|
AC_CHECK_HEADERS(stdint.h inttypes.h)
|
|
AC_CHECK_HEADERS(locale.h pwd.h)
|
|
AC_CHECK_HEADERS(termios.h)
|
|
|
|
|
|
AC_CHECK_HEADERS(sys/un.h,
|
|
[CONFIG_INTERLINK=yes
|
|
EL_CONFIG([CONFIG_INTERLINK], [interlinking])],
|
|
[CONFIG_INTERLINK=no])
|
|
AC_SUBST(CONFIG_INTERLINK)
|
|
|
|
dnl ===================================================================
|
|
dnl Checks for typedefs, structures, and compiler characteristics.
|
|
dnl ===================================================================
|
|
|
|
AC_STRUCT_TM
|
|
AC_C_CONST
|
|
AC_C_INLINE
|
|
EL_CHECK_CODE(typeof, HAVE_TYPEOF, [], [int a; typeof(a) b;])
|
|
|
|
AC_SYS_LARGEFILE
|
|
AC_TYPE_SIZE_T
|
|
AC_TYPE_OFF_T
|
|
EL_CHECK_TYPE(ssize_t, int)
|
|
EL_CHECK_SYS_TYPE(long long, HAVE_LONG_LONG, [])
|
|
EL_CHECK_SYS_TYPE(off_t, HAVE_OFF_T, [])
|
|
EL_CHECK_INT_TYPE(int32_t, HAVE_INT32_T)
|
|
EL_CHECK_INT_TYPE(uint32_t, HAVE_UINT32_T)
|
|
EL_CHECK_INT_TYPE(uint16_t, HAVE_UINT16_T)
|
|
|
|
AC_CHECK_SIZEOF(char, 1)
|
|
AC_CHECK_SIZEOF(short, 2)
|
|
AC_CHECK_SIZEOF(int, 4)
|
|
AC_CHECK_SIZEOF(long, 4)
|
|
test "x$HAVE_LONG_LONG" = xyes && AC_CHECK_SIZEOF(long long, 8)
|
|
test "x$HAVE_OFF_T" = xyes && AC_CHECK_SIZEOF(off_t, 4)
|
|
|
|
dnl Check for variadic macros
|
|
EL_CHECK_CODE([variadic macros], HAVE_VARIADIC_MACROS,
|
|
[#include <stdio.h>
|
|
#define a(b,c...) printf(b,##c)],
|
|
[a("foo");a("%s","bar");a("%s%s","baz","quux");])
|
|
|
|
dnl Check for -rdynamic
|
|
dnl
|
|
dnl gcc -rdynamic calls ld -export-dynamic, which adds all symbols of
|
|
dnl the executable to its dynamic symbol table. ELinks uses this for
|
|
dnl two purposes:
|
|
dnl
|
|
dnl 1. If ELinks detects a bug, it can try to display a backtrace by
|
|
dnl calling backtrace_symbols_fd() in the GNU libc. The glibc-2.3.6
|
|
dnl manual states users of GNU ld must pass -rdynamic to make the
|
|
dnl symbols available to the program.
|
|
dnl
|
|
dnl 2. It would eventually be nice to dynamically load shared
|
|
dnl libraries as plugins (bug 73). The plugins must be able to
|
|
dnl call ELinks functions. This can be implemented either by
|
|
dnl registering all callable functions in ELinks-specific data
|
|
dnl structures, or by letting the dynamic linker handle them.
|
|
dnl The latter way requires something equivalent to -rdynamic.
|
|
dnl
|
|
dnl Because backtraces are not needed for correct operation, and bug
|
|
dnl 73 is not yet being fixed, the configure script and makefiles
|
|
dnl should not complain to the user if they find that -rdynamic does
|
|
dnl not work. Besides, it was reported at elinks-users on 2006-09-12
|
|
dnl that gcc-3.4.2 with "ld: Software Generation Utilities - Solaris
|
|
dnl Link Editors: 5.8-1.284" on Sun Solaris 8 Sparc does not support
|
|
dnl -rdynamic but does something equivalent automatically. (This was
|
|
dnl tested with "nm -D elinks | grep redraw_from_window".)
|
|
dnl
|
|
dnl FIXME: This check doesn't work. Something to do with the compiler
|
|
dnl happily ignoring it and stderr not being checked for error messages.
|
|
AC_MSG_CHECKING([for -rdynamic])
|
|
LDFLAGS_X="$LDFLAGS"
|
|
LDFLAGS="$LDFLAGS -rdynamic"
|
|
AC_TRY_LINK([], [], have_rdynamic=yes, have_rdynamic=no)
|
|
test "$have_rdynamic" = no && LDFLAGS="$LDFLAGS_X"
|
|
AC_MSG_RESULT($have_rdynamic)
|
|
|
|
dnl ===================================================================
|
|
dnl Check for POSIX <regex.h>
|
|
dnl ===================================================================
|
|
|
|
EL_CHECK_SYS_TYPE(regex_t, HAVE_REGEX_H, [#include <regex.h>])
|
|
|
|
dnl ===================================================================
|
|
dnl Checks for library functions.
|
|
dnl ===================================================================
|
|
|
|
AC_PROG_GCC_TRADITIONAL
|
|
AC_FUNC_MEMCMP
|
|
AC_FUNC_MMAP
|
|
AC_FUNC_STRFTIME
|
|
AC_CHECK_FUNCS(atoll cfmakeraw gethostbyaddr herror strerror)
|
|
AC_CHECK_FUNCS(popen uname access chmod alarm timegm mremap)
|
|
AC_CHECK_FUNCS(strcasecmp strncasecmp strcasestr strstr strchr strrchr)
|
|
AC_CHECK_FUNCS(memmove bcopy stpcpy strdup index isdigit mempcpy memrchr)
|
|
AC_CHECK_FUNCS(snprintf vsnprintf asprintf vasprintf)
|
|
AC_CHECK_FUNCS(getifaddrs getpwnam inet_pton inet_ntop)
|
|
AC_CHECK_FUNCS(fflush fsync fseeko ftello sigaction)
|
|
AC_CHECK_FUNCS(gettimeofday clock_gettime)
|
|
|
|
AC_HAVE_FUNCS(cygwin_conv_to_full_win32_path)
|
|
|
|
AC_CHECK_FUNCS(setenv putenv, HAVE_SETENV_OR_PUTENV=yes)
|
|
AC_CHECK_FUNCS(getuid, HAVE_GETUID=yes)
|
|
AC_CHECK_FUNCS(geteuid, HAVE_GETEUID=yes)
|
|
|
|
dnl These aren't probably needed now, as they are commented in links.h.
|
|
dnl I've no idea about their historical background, but I keep them here
|
|
dnl just in the case they will help later. --pasky
|
|
AC_CHECK_FUNCS(getpid, HAVE_GETPID=yes)
|
|
AC_CHECK_FUNCS(setpgid getpgid setpgrp getpgrp)
|
|
AC_CHECK_FUNCS(raise, HAVE_RAISE=yes)
|
|
AC_CHECK_FUNCS(kill, HAVE_KILL=yes)
|
|
|
|
if test x"$HAVE_RAISE" = x; then
|
|
if test x"$HAVE_KILL" = x || test x"$HAVE_GETPID" = x; then
|
|
AC_ERROR([Unable to emulate raise()])
|
|
fi
|
|
fi
|
|
|
|
AC_CACHE_CHECK([for __va_copy],el_cv_HAVE_VA_COPY,[
|
|
AC_TRY_LINK([#include <stdarg.h>
|
|
va_list ap1,ap2;], [__va_copy(ap1,ap2);],
|
|
el_cv_HAVE_VA_COPY=yes,el_cv_HAVE_VA_COPY=no)])
|
|
if test x"$el_cv_HAVE_VA_COPY" = x"yes"; then
|
|
EL_DEFINE(HAVE_VA_COPY, __va_copy)
|
|
fi
|
|
|
|
AC_CACHE_CHECK([for sysconf(_SC_PAGE_SIZE)],el_cv_HAVE_SC_PAGE_SIZE,[
|
|
AC_TRY_LINK([#include <unistd.h>
|
|
], [int page_size = sysconf(_SC_PAGE_SIZE);],
|
|
el_cv_HAVE_SC_PAGE_SIZE=yes,el_cv_HAVE_SC_PAGE_SIZE=no)])
|
|
if test x"$el_cv_HAVE_SC_PAGE_SIZE" = x"yes"; then
|
|
EL_DEFINE(HAVE_SC_PAGE_SIZE, _SC_PAGE_SIZE)
|
|
fi
|
|
|
|
AC_CACHE_CHECK([for C99 vsnprintf],el_cv_HAVE_C99_VSNPRINTF,[
|
|
AC_TRY_RUN([
|
|
#include <stdio.h>
|
|
#include <stdarg.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
|
|
char buf[8];
|
|
|
|
int bar(char *buf, const char *format, va_list ap)
|
|
{
|
|
return vsnprintf(buf, 0, format, ap);
|
|
}
|
|
|
|
void foo(const char *format, ...) {
|
|
va_list ap;
|
|
int len;
|
|
|
|
va_start(ap, format);
|
|
len = bar(buf, format, ap);
|
|
va_end(ap);
|
|
if ((len != 6) && (len != 7)) exit(1); /* \n -> \r\n */
|
|
|
|
va_start(ap, format);
|
|
len = bar(buf, format, ap);
|
|
va_end(ap);
|
|
if ((len != 6) && (len != 7)) exit(1);
|
|
|
|
if (snprintf(buf, 3, "hello") != 5 || strcmp(buf, "he") != 0) exit(1);
|
|
|
|
exit(0);
|
|
}
|
|
main() { foo("hello\n"); }
|
|
],
|
|
el_cv_HAVE_C99_VSNPRINTF=yes,el_cv_HAVE_C99_VSNPRINTF=no,el_cv_HAVE_C99_VSNPRINTF=cross)])
|
|
if test x"$el_cv_HAVE_C99_VSNPRINTF" = x"yes"; then
|
|
EL_DEFINE(HAVE_C99_VSNPRINTF, [C99 compliant vsnprintf()])
|
|
fi
|
|
|
|
AC_CHECK_LIB(dl, dlopen) # OpenSSL and Lua frequently needs it
|
|
|
|
dnl ===================================================================
|
|
dnl Checks for libraries.
|
|
dnl ===================================================================
|
|
|
|
dnl Replace `main' with a function in -lsocket:
|
|
AC_CHECK_FUNC(socket, cf_result=yes, cf_result=no)
|
|
if test "$cf_result" = no; then
|
|
AC_CHECK_LIB(socket, socket)
|
|
fi
|
|
|
|
AC_CHECK_FUNC(setsockopt, cf_result=yes, cf_result=no)
|
|
if test "$cf_result" = no; then
|
|
AC_CHECK_LIB(socket, setsockopt)
|
|
fi
|
|
|
|
AC_CHECK_FUNC(gethostbyname, cf_result=yes, cf_result=no)
|
|
if test "$cf_result" = no; then
|
|
AC_CHECK_LIB(socket, gethostbyname, cf_result=yes, cf_result=no)
|
|
if test "$cf_result" = no; then
|
|
AC_CHECK_LIB(nsl, gethostbyname)
|
|
else
|
|
test -z "`echo $LIBS | grep -- -lsocket`" && LIBS="$LIBS -lsocket"
|
|
fi
|
|
fi
|
|
|
|
dnl ===================================================================
|
|
dnl Checks for packaging specific options.
|
|
dnl ===================================================================
|
|
|
|
AC_ARG_WITH(xterm, [ --with-xterm how to invoke the X terminal emulator],
|
|
[ if test "$withval" != no && test "$withval" != yes; then
|
|
AC_DEFINE_UNQUOTED(XTERM, "$withval", [How to invoke XTerm])
|
|
fi ])
|
|
|
|
dnl ===================================================================
|
|
dnl Checks for a libraries, optional even if installed.
|
|
dnl ===================================================================
|
|
|
|
dnl EL_CHECK_OPTIONAL_LIBRARY(define, name, header, lib, function)
|
|
AC_DEFUN([EL_CHECK_OPTIONAL_LIBRARY],
|
|
[
|
|
AC_MSG_CHECKING([for $2 support])
|
|
|
|
if test "[$]$1" != no; then
|
|
AC_MSG_RESULT(yes)
|
|
EL_SAVE_FLAGS
|
|
if test -n "$withval" && test -d "$withval"; then
|
|
# Be a little more careful when setting
|
|
# include and lib directories. This way
|
|
# $withval will work when includes are
|
|
# there but the library is in the common
|
|
# /usr/lib ... Does the right thing when
|
|
# looking for gc on Debian.
|
|
if test -d "$withval/include"; then
|
|
CFLAGS="$CFLAGS -I$withval/include"
|
|
CPPFLAGS="$CPPFLAGS -I$withval/include"
|
|
else
|
|
CFLAGS="$CFLAGS -I$withval"
|
|
CPPFLAGS="$CPPFLAGS -I$withval"
|
|
fi
|
|
if test -d "$withval/lib"; then
|
|
LDFLAGS="$LDFLAGS -L$withval/lib"
|
|
fi
|
|
fi
|
|
|
|
AC_CHECK_HEADERS([$3], [$1=yes], [$1=no; break;])
|
|
if test "[$]$1" = yes; then
|
|
AC_CHECK_LIB([$4], [$5], [$1=yes], [$1=no])
|
|
fi
|
|
|
|
if test "[$]$1" = yes; then
|
|
EL_CONFIG([$1], [$2])
|
|
LIBS="$LIBS -l$4"
|
|
else
|
|
if test -n "[$]WITHVAL_$1" &&
|
|
test "[$]WITHVAL_$1" != xno; then
|
|
AC_MSG_ERROR([$2 not found])
|
|
fi
|
|
EL_RESTORE_FLAGS
|
|
fi
|
|
else
|
|
AC_MSG_RESULT(disabled)
|
|
fi
|
|
])
|
|
|
|
dnl EL_CONFIG_OPTIONAL_LIBRARY(define, name, header, lib, function, confhelp)
|
|
AC_DEFUN([EL_CONFIG_OPTIONAL_LIBRARY],
|
|
[
|
|
$1=yes
|
|
WITHVAL_$1=
|
|
|
|
AC_ARG_WITH([$2], [$6], [WITHVAL_$1="[$]withval"])
|
|
if test "x[$]WITHVAL_$1" = xno; then $1=no; fi
|
|
|
|
EL_CHECK_OPTIONAL_LIBRARY([$1], [$2], [$3], [$4], [$5])
|
|
|
|
EL_LOG_CONFIG([$1], [$2], [])
|
|
])
|
|
|
|
EL_CONFIG_OPTIONAL_LIBRARY(CONFIG_GPM, gpm, gpm.h, gpm, Gpm_Open,
|
|
[ --without-gpm disable gpm (mouse) support])
|
|
|
|
EL_CONFIG_OPTIONAL_LIBRARY(CONFIG_GZIP, zlib, zlib.h, z, gzdopen,
|
|
[ --without-zlib disable zlib support])
|
|
|
|
EL_CONFIG_OPTIONAL_LIBRARY(CONFIG_BZIP2, bzlib, bzlib.h, bz2, BZ2_bzReadOpen,
|
|
[ --without-bzlib disable bzlib support])
|
|
|
|
EL_CONFIG_OPTIONAL_LIBRARY(CONFIG_IDN, idn, idna.h, idn, stringprep_check_version,
|
|
[ --without-idn disable international domain names support])
|
|
|
|
if test "x{with_gc}" != xno; then
|
|
EL_CONFIG_OPTIONAL_LIBRARY(CONFIG_GC, gc, gc.h, gc, GC_init,
|
|
[ --with-gc enable Boehm's garbage collector])
|
|
fi
|
|
|
|
EL_ARG_ENABLE(CONFIG_LZMA, lzma, [lzma],
|
|
[ --enable-lzma enable lzma encoding support])
|
|
|
|
dnl ===================================================================
|
|
dnl Check for GSSAPI, optional even if installed.
|
|
dnl ===================================================================
|
|
|
|
enable_gssapi="no";
|
|
|
|
AC_ARG_WITH(gssapi, [ --with-gssapi enable GSSAPI support],
|
|
[ if test "x$withval" != xno; then enable_gssapi=yes; fi ])
|
|
|
|
AC_MSG_CHECKING([for GSSAPI])
|
|
|
|
if test "$enable_gssapi" = "yes"; then
|
|
AC_MSG_RESULT(yes)
|
|
GSSAPI_CFLAGS=`krb5-config --cflags gssapi`
|
|
GSSAPI_LIBS=`krb5-config --libs gssapi`
|
|
CFLAGS="$GSSAPI_CFLAGS $CFLAGS"
|
|
LIBS="$GSSAPI_LIBS $LIBS"
|
|
EL_CONFIG(CONFIG_GSSAPI, [GssApi])
|
|
else
|
|
AC_MSG_RESULT(no)
|
|
fi
|
|
|
|
AC_SUBST(CONFIG_GSSAPI)
|
|
|
|
dnl ===================================================================
|
|
dnl Bookmark and XBEL support
|
|
dnl ===================================================================
|
|
|
|
EL_SAVE_FLAGS
|
|
|
|
EL_ARG_ENABLE(CONFIG_BOOKMARKS, bookmarks, [Bookmarks],
|
|
[ --disable-bookmarks disable bookmark support])
|
|
|
|
# Check whether --enable-xbel or --disable-xbel was given.
|
|
if test "x${enable_xbel}" != xno; then
|
|
AC_CHECK_HEADERS(expat.h, HAVE_LIBEXPAT=yes, HAVE_LIBEXPAT=no)
|
|
|
|
if test "$HAVE_LIBEXPAT" = yes; then
|
|
AC_CHECK_LIB(expat, XML_ParserCreate, HAVE_LIBEXPAT=yes, HAVE_LIBEXPAT=no)
|
|
if test "$HAVE_LIBEXPAT" = yes; then
|
|
LIBS="$LIBS -lexpat"
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
|
|
EL_ARG_DEPEND(CONFIG_XBEL_BOOKMARKS, xbel, [CONFIG_BOOKMARKS:yes HAVE_LIBEXPAT:yes],
|
|
[XBEL bookmarks],
|
|
[ --disable-xbel disable XBEL bookmark support (requires expat)])
|
|
|
|
if test "$CONFIG_XBEL_BOOKMARKS" != yes; then
|
|
EL_RESTORE_FLAGS
|
|
fi
|
|
|
|
dnl ===================================================================
|
|
dnl Checks for BSD sysmouse
|
|
dnl ===================================================================
|
|
|
|
HAVE_SYSMOUSE_HEADER="no"
|
|
|
|
# Either of these header files provides the (same) sysmouse interface
|
|
AC_CHECK_HEADERS(sys/consio.h machine/console.h, [HAVE_SYSMOUSE_HEADER="yes"])
|
|
|
|
dnl ===================================================================
|
|
dnl Checks for OS/2
|
|
dnl ===================================================================
|
|
|
|
if test "$CONFIG_OS_OS2" = yes; then
|
|
EL_CONFIG_OS_OS2
|
|
fi
|
|
|
|
dnl ===================================================================
|
|
dnl Checks for Win32
|
|
dnl ===================================================================
|
|
|
|
if test "$CONFIG_OS_WIN32" = yes; then
|
|
EL_CONFIG_OS_WIN32
|
|
fi
|
|
|
|
dnl ===================================================================
|
|
dnl Check for SEE (Simple Ecmascript Engine)
|
|
dnl ===================================================================
|
|
AC_ARG_WITH(see, [ --with-see enable Simple Ecmascript Engine (SEE) support],
|
|
[ if test "x$withval" != xno; then enable_see=yes; fi ])
|
|
|
|
# The following is probably bad, ugly and so on. Stolen from Guile's (1.4)
|
|
# SEE_FLAGS but I really don't want to require people to have Guile in order
|
|
# to compile CVS. Also, the macro seems to be really stupid regarding searching
|
|
# for Guile in $PATH etc. --pasky
|
|
|
|
AC_MSG_CHECKING([for SEE])
|
|
|
|
CONFIG_ECMASCRIPT_SEE=no
|
|
|
|
if test "$enable_see" = "yes"; then
|
|
AC_MSG_RESULT(yes);
|
|
## Based on the SEE_FLAGS macro.
|
|
|
|
if test -d "$withval"; then
|
|
SEE_PATH="$withval:$PATH"
|
|
else
|
|
SEE_PATH="$PATH"
|
|
fi
|
|
|
|
AC_PATH_PROG(SEE_CONFIG, libsee-config, no, $SEE_PATH)
|
|
|
|
## First, let's just see if we can find Guile at all.
|
|
if test "$SEE_CONFIG" != no; then
|
|
cf_result="yes";
|
|
|
|
SEE_LIBS="`$SEE_CONFIG --libs`"
|
|
SEE_CFLAGS="`$SEE_CONFIG --cppflags`"
|
|
LIBS="$SEE_LIBS $LIBS"
|
|
EL_CONFIG(CONFIG_ECMASCRIPT_SEE, [SEE])
|
|
AC_SUBST(SEE_CFLAGS)
|
|
else
|
|
if test -n "$withval" && test "x$withval" != xno; then
|
|
AC_MSG_ERROR([SEE not found])
|
|
else
|
|
AC_MSG_WARN([SEE support disabled])
|
|
fi
|
|
fi
|
|
else
|
|
AC_MSG_RESULT(no);
|
|
fi
|
|
|
|
|
|
dnl ===================================================================
|
|
dnl Check for SpiderMonkey, optional even if installed.
|
|
dnl ===================================================================
|
|
|
|
AC_ARG_WITH(spidermonkey, [ --without-spidermonkey disable SpiderMonkey Mozilla JavaScript engine support],
|
|
[if test "$withval" = no; then disable_spidermonkey=yes; fi])
|
|
AC_MSG_CHECKING([for SpiderMonkey])
|
|
|
|
EL_SAVE_FLAGS
|
|
cf_result=no
|
|
|
|
if test -z "$disable_spidermonkey"; then
|
|
if test ! -d "$withval"; then
|
|
withval="";
|
|
fi
|
|
for spidermonkeydir in "$withval" "" /usr /usr/local /opt/spidermonkey /opt/js; do
|
|
for spidermonkeyinclude in "/include" "/include/js" "/include/smjs" "/include/mozjs"; do
|
|
for spidermonkeylib in js smjs mozjs; do
|
|
if test "$cf_result" = no; then
|
|
SPIDERMONKEY_LIBS="-l$spidermonkeylib"
|
|
|
|
if test ! -z "$spidermonkeydir"; then
|
|
SPIDERMONKEY_LIBS="-L$spidermonkeydir/lib $SPIDERMONKEY_LIBS"
|
|
SPIDERMONKEY_CFLAGS="-I$spidermonkeydir$spidermonkeyinclude"
|
|
fi
|
|
|
|
LIBS="$SPIDERMONKEY_LIBS $LIBS_X"
|
|
CFLAGS="$CFLAGS_X $SPIDERMONKEY_CFLAGS"
|
|
CPPFLAGS="$CPPFLAGS_X $SPIDERMONKEY_CFLAGS"
|
|
|
|
AC_TRY_LINK([#define XP_UNIX
|
|
#include <jsapi.h>],
|
|
[JS_GetImplementationVersion()],
|
|
cf_result=yes, cf_result=no)
|
|
fi
|
|
done
|
|
done
|
|
done
|
|
fi
|
|
|
|
AC_MSG_RESULT($cf_result)
|
|
CONFIG_SPIDERMONKEY="$cf_result"
|
|
EL_RESTORE_FLAGS
|
|
|
|
if test "x$CONFIG_SPIDERMONKEY" = xyes &&
|
|
test "x$CONFIG_ECMASCRIPT_SEE" != xyes; then
|
|
EL_CONFIG(CONFIG_ECMASCRIPT_SMJS, [SpiderMonkey document scripting])
|
|
else
|
|
CONFIG_ECMASCRIPT_SMJS=no
|
|
fi
|
|
|
|
EL_CONFIG_DEPENDS(CONFIG_ECMASCRIPT, [CONFIG_ECMASCRIPT_SEE CONFIG_ECMASCRIPT_SMJS], [ECMAScript (JavaScript)])
|
|
AC_SUBST(CONFIG_ECMASCRIPT_SEE)
|
|
AC_SUBST(CONFIG_ECMASCRIPT_SMJS)
|
|
|
|
|
|
dnl ===================================================================
|
|
dnl Optional Spidermonkey-based ECMAScript browser scripting
|
|
dnl ===================================================================
|
|
|
|
AC_ARG_ENABLE(sm-scripting,
|
|
[ --disable-sm-scripting ECMAScript browser scripting (requires Spidermonkey)],
|
|
[if test "$enableval" != no; then enableval="yes"; fi
|
|
CONFIG_SCRIPTING_SPIDERMONKEY="$enableval";])
|
|
|
|
if test "x$CONFIG_SPIDERMONKEY" = xyes &&
|
|
test "x$CONFIG_SCRIPTING_SPIDERMONKEY" = xyes; then
|
|
EL_CONFIG(CONFIG_SCRIPTING_SPIDERMONKEY, [SpiderMonkey])
|
|
else
|
|
CONFIG_SCRIPTING_SPIDERMONKEY=no
|
|
fi
|
|
|
|
if test "x$CONFIG_ECMASCRIPT_SMJS" = xyes ||
|
|
test "x$CONFIG_SCRIPTING_SPIDERMONKEY" = xyes; then
|
|
LIBS="$LIBS $SPIDERMONKEY_LIBS"
|
|
AC_SUBST(SPIDERMONKEY_LIBS)
|
|
AC_SUBST(SPIDERMONKEY_CFLAGS)
|
|
AC_SUBST(CONFIG_SPIDERMONKEY)
|
|
fi
|
|
|
|
dnl ===================================================================
|
|
dnl Check for Guile, optional even if installed.
|
|
dnl ===================================================================
|
|
|
|
enable_guile="no";
|
|
|
|
AC_ARG_WITH(guile, [ --with-guile enable Guile support],
|
|
[ if test "x$withval" != xno; then enable_guile=yes; fi ])
|
|
|
|
# The following is probably bad, ugly and so on. Stolen from Guile's (1.4)
|
|
# GUILE_FLAGS but I really don't want to require people to have Guile in order
|
|
# to compile CVS. Also, the macro seems to be really stupid regarding searching
|
|
# for Guile in $PATH etc. --pasky
|
|
|
|
AC_MSG_CHECKING([for Guile])
|
|
|
|
if test "$enable_guile" = "yes"; then
|
|
AC_MSG_RESULT(yes);
|
|
## Based on the GUILE_FLAGS macro.
|
|
|
|
if test -d "$withval"; then
|
|
GUILE_PATH="$withval:$PATH"
|
|
else
|
|
GUILE_PATH="$PATH"
|
|
fi
|
|
|
|
AC_PATH_PROG(GUILE_CONFIG, guile-config, no, $GUILE_PATH)
|
|
|
|
## First, let's just see if we can find Guile at all.
|
|
if test "$GUILE_CONFIG" != no; then
|
|
cf_result="yes";
|
|
|
|
GUILE_LIBS="`guile-config link`"
|
|
GUILE_CFLAGS="`guile-config compile`"
|
|
LIBS="$GUILE_LIBS $LIBS"
|
|
EL_CONFIG(CONFIG_SCRIPTING_GUILE, [Guile])
|
|
AC_SUBST(GUILE_CFLAGS)
|
|
cat <<EOF
|
|
***********************************************************************
|
|
The Guile support is incomplete and not so well integrated to ELinks
|
|
yet. That means, e.g., that you have no Guile console and there might
|
|
not be all the necessary hooks. Also, the Guile interface is not too
|
|
well tested (success stories heartily welcomed!). See
|
|
src/scripting/guile/README for further details and hints.
|
|
***********************************************************************
|
|
EOF
|
|
else
|
|
if test -n "$withval" && test "x$withval" != xno; then
|
|
AC_MSG_ERROR([Guile not found])
|
|
else
|
|
AC_MSG_WARN([Guile support disabled])
|
|
fi
|
|
fi
|
|
else
|
|
AC_MSG_RESULT(no);
|
|
fi
|
|
|
|
dnl ===================================================================
|
|
dnl Check for Perl
|
|
dnl ===================================================================
|
|
enable_perl="no";
|
|
|
|
AC_ARG_WITH(perl, [ --with-perl enable Perl support],
|
|
[
|
|
if test "$withval" = yes; then
|
|
# FIXME: If withval is a valid directory append it to PATH
|
|
# so that you can specify one of several perl installations.
|
|
withval="";
|
|
enable_perl=yes;
|
|
fi
|
|
])
|
|
|
|
AC_MSG_CHECKING([for Perl])
|
|
|
|
cf_result=no
|
|
|
|
EL_SAVE_FLAGS
|
|
|
|
if test "$enable_perl" = "yes"; then
|
|
PERL_LIBS="`perl -MExtUtils::Embed -e ldopts`"
|
|
PERL_CFLAGS="`perl -MExtUtils::Embed -e ccopts`"
|
|
LIBS="$PERL_LIBS $LIBS"
|
|
CFLAGS="$PERL_CFLAGS $CFLAGS"
|
|
CPPFLAGS="$CPPFLAGS $PERL_CFLAGS"
|
|
AC_TRY_LINK([
|
|
#include <EXTERN.h>
|
|
#include <perl.h>
|
|
#include <perlapi.h>
|
|
],
|
|
[PerlInterpreter *my_perl = perl_alloc();],
|
|
cf_result=yes, cf_result=no)
|
|
fi
|
|
|
|
if test "$cf_result"; then AC_MSG_RESULT($cf_result); fi
|
|
|
|
AC_MSG_CHECKING([whether POPpx works without an n_a variable])
|
|
AC_TRY_COMPILE([
|
|
#include <EXTERN.h>
|
|
#include <perl.h>
|
|
extern PerlInterpreter *my_perl;
|
|
],
|
|
[dSP; (void) POPpx;],
|
|
[AC_MSG_RESULT([yes])
|
|
AC_DEFINE([CONFIG_PERL_POPPX_WITHOUT_N_A], [1],
|
|
[Define if using Perl 5.8.8 or later, where the "POPpx" macro
|
|
no longer needs an "n_a" variable like it did in 5.8.7])],
|
|
[AC_MSG_RESULT([no])])
|
|
|
|
if test "$cf_result" != "yes"; then
|
|
EL_RESTORE_FLAGS
|
|
else
|
|
EL_CONFIG(CONFIG_SCRIPTING_PERL, [Perl])
|
|
|
|
CFLAGS="$CFLAGS_X"
|
|
CPPFLAGS="$CPPFLAGS_X"
|
|
AC_SUBST(PERL_LIBS)
|
|
AC_SUBST(PERL_CFLAGS)
|
|
fi
|
|
|
|
dnl ===================================================================
|
|
dnl Check for Python
|
|
dnl ===================================================================
|
|
enable_python="no";
|
|
|
|
AC_ARG_WITH(python, [ --with-python=[DIR] enable Python support],
|
|
[ if test "x$withval" != xno; then enable_python=yes; fi ])
|
|
|
|
EL_SAVE_FLAGS
|
|
cf_result=no
|
|
|
|
AC_MSG_CHECKING([for Python])
|
|
|
|
if test "$enable_python" = "yes"; then
|
|
AC_MSG_RESULT(yes);
|
|
|
|
if test -d "$withval"; then
|
|
PYTHON_PATH="$withval:$PATH"
|
|
else
|
|
PYTHON_PATH="$PATH"
|
|
fi
|
|
|
|
AC_PATH_PROG(PYTHON, python, no, $PYTHON_PATH)
|
|
|
|
if test "$PYTHON" != no; then
|
|
cf_result="yes";
|
|
|
|
PYTHON_CFLAGS="`$PYTHON -c 'from distutils import sysconfig; print "-I%s -I%s" % (sysconfig.get_python_inc(), sysconfig.get_python_inc(plat_specific=True))'`"
|
|
PYTHON_LIBS="`$PYTHON -c 'from distutils import sysconfig; var = sysconfig.get_config_var; print "%s %s %s -L%s -lpython%s" % (var("LINKFORSHARED"), var("LIBS"), var("SYSLIBS"), var("LIBPL"), var("VERSION"))'`"
|
|
LIBS="$PYTHON_LIBS $LIBS"
|
|
CPPFLAGS="$CPPFLAGS $PYTHON_CFLAGS"
|
|
AC_TRY_LINK([#include <Python.h>],
|
|
[Py_Initialize();],
|
|
cf_result=yes, cf_result=no)
|
|
|
|
if test "$cf_result" != "yes"; then
|
|
EL_RESTORE_FLAGS
|
|
else
|
|
EL_CONFIG(CONFIG_SCRIPTING_PYTHON, [Python])
|
|
AC_SUBST(PYTHON_LIBS)
|
|
AC_SUBST(PYTHON_CFLAGS)
|
|
CPPFLAGS="$CPPFLAGS_X"
|
|
cat <<EOF
|
|
***********************************************************************
|
|
The Python support is incomplete and not so well integrated to ELinks
|
|
yet. That means, e.g., that you have no Python console and there might
|
|
not be all the necessary hooks. Also, the Python interface is not too
|
|
well tested (success stories heartily welcomed!).
|
|
***********************************************************************
|
|
EOF
|
|
fi
|
|
else
|
|
if test -n "$withval" && test "x$withval" != xno; then
|
|
AC_MSG_ERROR([Python not found])
|
|
else
|
|
AC_MSG_WARN([Python support disabled])
|
|
fi
|
|
fi
|
|
else
|
|
AC_MSG_RESULT(no);
|
|
fi
|
|
|
|
|
|
dnl ===================================================================
|
|
dnl Check for Lua, optional even if installed.
|
|
dnl ===================================================================
|
|
|
|
dnl Do this the long way, as FreeBSD reportedly needs -L<dir> for
|
|
dnl anything other than /usr/lib, and Lua is very often in /usr/local/lib.
|
|
|
|
AC_ARG_WITH(lua, [ --without-lua disable Lua support],
|
|
[if test "$withval" = no; then disable_lua=yes; fi])
|
|
AC_MSG_CHECKING([for Lua])
|
|
|
|
EL_SAVE_FLAGS
|
|
cf_result=no
|
|
|
|
if test -z "$disable_lua"; then
|
|
if test ! -d "$withval"; then
|
|
withval="";
|
|
fi
|
|
for luadir in "$withval" "" /usr /usr/local; do
|
|
for suffix in "" 50 51; do
|
|
if test "$cf_result" = no; then
|
|
LUA_LIBS="-llua$suffix -llualib$suffix -lm"
|
|
|
|
if test ! -z "$luadir"; then
|
|
LUA_LIBS="-L$luadir/lib $LUA_LIBS"
|
|
LUA_CFLAGS="-I$luadir/include -I$luadir/include/lua$suffix"
|
|
fi
|
|
|
|
LIBS="$LUA_LIBS $LIBS_X"
|
|
CFLAGS="$CFLAGS_X $LUA_CFLAGS"
|
|
CPPFLAGS="$CPPFLAGS_X $LUA_CFLAGS"
|
|
|
|
# Check that it is a compatible Lua version
|
|
AC_TRY_LINK([ #include <lua.h>
|
|
#include <lualib.h>],
|
|
[ lua_State *L = lua_open();
|
|
luaopen_base(L);
|
|
luaopen_table(L);
|
|
luaopen_io(L);
|
|
luaopen_string(L);
|
|
luaopen_math(L);
|
|
lua_pushboolean(L, 1);
|
|
lua_close(L);],
|
|
cf_result=yes, cf_result=no)
|
|
fi
|
|
done
|
|
done
|
|
fi
|
|
|
|
AC_MSG_RESULT($cf_result)
|
|
|
|
if test "$cf_result" != yes; then
|
|
EL_RESTORE_FLAGS
|
|
else
|
|
EL_CONFIG(CONFIG_SCRIPTING_LUA, [Lua])
|
|
AC_CHECK_HEADERS(lauxlib.h)
|
|
|
|
CFLAGS="$CFLAGS_X"
|
|
CPPFLAGS="$CPPFLAGS_X"
|
|
AC_SUBST(LUA_LIBS)
|
|
AC_SUBST(LUA_CFLAGS)
|
|
fi
|
|
|
|
|
|
dnl ===================================================================
|
|
dnl Check for Ruby, optional even if installed.
|
|
dnl ===================================================================
|
|
|
|
EL_CONFIG_SCRIPTING_RUBY
|
|
|
|
dnl ===================================================================
|
|
dnl Setup global scripting
|
|
dnl ===================================================================
|
|
|
|
EL_CONFIG_DEPENDS(CONFIG_SCRIPTING, [CONFIG_SCRIPTING_GUILE CONFIG_SCRIPTING_LUA CONFIG_SCRIPTING_PERL CONFIG_SCRIPTING_PYTHON CONFIG_SCRIPTING_RUBY CONFIG_SCRIPTING_SPIDERMONKEY], [Browser scripting])
|
|
AC_SUBST(CONFIG_SCRIPTING_GUILE)
|
|
AC_SUBST(CONFIG_SCRIPTING_LUA)
|
|
AC_SUBST(CONFIG_SCRIPTING_PERL)
|
|
AC_SUBST(CONFIG_SCRIPTING_PYTHON)
|
|
AC_SUBST(CONFIG_SCRIPTING_RUBY)
|
|
AC_SUBST(CONFIG_SCRIPTING_SPIDERMONKEY)
|
|
AC_SUBST(CONFIG_SCRIPTING)
|
|
|
|
|
|
dnl ===================================================================
|
|
dnl Check for SSL support.
|
|
dnl ===================================================================
|
|
|
|
dnl We by default use OpenSSL, and we always prefer it. However, when GNUTLS
|
|
dnl is enabled, we won't try to use OpenSSL anymore.
|
|
|
|
dnl For wiping SSL hooks..
|
|
#ifdef CONFIG_SSL
|
|
|
|
disable_openssl=""
|
|
disable_gnutls=""
|
|
enable_gnutls=""
|
|
|
|
AC_ARG_WITH(gnutls, [ --without-gnutls disable GNUTLS SSL support],
|
|
[if test "$with_gnutls" = no; then disable_gnutls=yes; fi])
|
|
AC_ARG_WITH(gnutls, [ --with-gnutls[=DIR] enable GNUTLS SSL support],
|
|
[if test "$with_gnutls" != no; then enable_gnutls=yes; fi])
|
|
gnutls_withval="$withval"
|
|
|
|
if test "$enable_gnutls" = yes; then
|
|
disable_openssl=yes;
|
|
fi
|
|
|
|
AC_ARG_WITH(openssl, [ --without-openssl disable OpenSSL support],
|
|
[if test "$with_openssl" = no; then disable_openssl=yes; fi])
|
|
AC_ARG_WITH(openssl, [ --with-openssl[=DIR] enable OpenSSL support (default)])
|
|
openssl_withval="$withval"
|
|
|
|
dnl ---- OpenSSL
|
|
|
|
AC_MSG_CHECKING([for OpenSSL])
|
|
|
|
EL_SAVE_FLAGS
|
|
cf_result="no"
|
|
|
|
if test "$disable_openssl" = yes; then
|
|
cf_result="not used"
|
|
else
|
|
for ssldir in "$openssl_withval" "" /usr /usr/local/openssl \
|
|
/usr/lib/openssl /usr/local/ssl \
|
|
/usr/local/www /usr/lib/ssl /usr/local \
|
|
/usr/pkg /opt /opt/openssl; do
|
|
if test "$cf_result" = no; then
|
|
if test -d "$ssldir"; then
|
|
OPENSSL_CFLAGS="-I$ssldir/include"
|
|
LIBS="-L$ssldir/lib -lssl -lcrypto $LIBS_X"
|
|
CFLAGS="$CFLAGS_X $OPENSSL_CFLAGS"
|
|
CPPFLAGS="$CPPFLAGS_X $OPENSSL_CFLAGS"
|
|
# # FIXME: This created serious portability problems. --pasky
|
|
# if test "$CC" == "gcc"; then
|
|
# # I'm not sure about compatibility here. --pasky
|
|
# LIBS="$LIBS -R$ssldir/lib"
|
|
# fi
|
|
else
|
|
LIBS="-lssl -lcrypto $LIBS_X"
|
|
fi
|
|
AC_TRY_LINK([#include <openssl/ssl.h>],
|
|
[OpenSSL_add_all_algorithms()],
|
|
cf_result=yes, cf_result=no)
|
|
if test "$cf_result" != yes; then
|
|
AC_TRY_LINK([#include <openssl/ssl.h>],
|
|
[SSLeay_add_ssl_algorithms()],
|
|
cf_result=yes, cf_result=no)
|
|
fi
|
|
fi
|
|
done
|
|
|
|
if test "$cf_result" != yes; then
|
|
if test -n "$openssl_withval" && test "x$openssl_withval" != xno; then
|
|
AC_MSG_ERROR([OpenSSL not found])
|
|
fi
|
|
EL_RESTORE_FLAGS
|
|
else
|
|
EL_CONFIG(CONFIG_OPENSSL, [OpenSSL])
|
|
|
|
CFLAGS="$CFLAGS_X"
|
|
AC_SUBST(OPENSSL_CFLAGS)
|
|
fi
|
|
fi
|
|
|
|
AC_MSG_RESULT($cf_result)
|
|
|
|
CONFIG_GNUTLS_OPENSSL_COMPAT=no
|
|
dnl ---- GNU TLS
|
|
dnl We can't have AC_MSG_CHECKING here, because AC_PATH_PROG prints its own and
|
|
dnl it looks ugly then.
|
|
|
|
if test "$cf_result" = yes; then
|
|
cf_result="not used"
|
|
|
|
else
|
|
EL_SAVE_FLAGS
|
|
cf_result="no"
|
|
|
|
if test -z "$disable_gnutls"; then
|
|
# Sure, we maybe _could_ use their macro, but how to ensure
|
|
# that the ./configure script won't fail if the macro won't be
|
|
# found..? :( --pasky
|
|
|
|
GNUTLS_PATH="$PATH:/usr/local/gnutls:/opt:/opt/gnutls"
|
|
|
|
if test -d "$gnutls_withval"; then
|
|
GNUTLS_PATH="$gnutls_withval:$GNUTLS_PATH"
|
|
fi
|
|
|
|
AC_PATH_PROG(LIBGNUTLS_CONFIG, libgnutls-config, no, $GNUTLS_PATH)
|
|
|
|
if test "$LIBGNUTLS_CONFIG" = "no" ; then
|
|
cf_result=no
|
|
else
|
|
GNUTLS_CFLAGS=`$LIBGNUTLS_CONFIG --cflags`
|
|
GNUTLS_LIBS=`$LIBGNUTLS_CONFIG --libs`
|
|
|
|
LIBS="$GNUTLS_LIBS $LIBS_X"
|
|
CFLAGS="$CFLAGS_X $GNUTLS_CFLAGS"
|
|
CPPFLAGS="$CPPFLAGS_X $GNUTLS_CFLAGS"
|
|
|
|
# Verify if it's really usable. gnutls_session was
|
|
# renamed to gnutls_session_t before GNU TLS 1.2.0
|
|
# (on 2004-06-13); ELinks now requires this.
|
|
AC_TRY_LINK([#include <gnutls/gnutls.h>],
|
|
[gnutls_session_t dummy;
|
|
gnutls_check_version(NULL)],
|
|
cf_result=yes, cf_result=no)
|
|
fi
|
|
|
|
if test "$cf_result" = yes; then
|
|
EL_CONFIG(CONFIG_GNUTLS, [GNUTLS])
|
|
|
|
CFLAGS="$CFLAGS_X"
|
|
AC_SUBST(GNUTLS_CFLAGS)
|
|
|
|
# Verify if the MD5 compatibility layer is usable.
|
|
CONFIG_GNUTLS_OPENSSL_COMPAT=yes
|
|
EL_CHECK_OPTIONAL_LIBRARY(CONFIG_GNUTLS_OPENSSL_COMPAT,
|
|
[GNU TLS OpenSSL compatibility],
|
|
gnutls/openssl.h, gnutls-openssl,
|
|
MD5_Init)
|
|
else
|
|
if test -n "$gnutls_withval" && test "x$gnutls_withval" != xno; then
|
|
AC_MSG_ERROR([GNUTLS (1.2 or later) not found. ELinks no longer supports GNUTLS 1.1.])
|
|
fi
|
|
EL_RESTORE_FLAGS
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
AC_MSG_CHECKING([for GNU TLS (1.2 or later)])
|
|
AC_MSG_RESULT($cf_result)
|
|
|
|
dnl Final SSL setup
|
|
|
|
EL_CONFIG_DEPENDS(CONFIG_SSL, [CONFIG_OPENSSL CONFIG_GNUTLS], [SSL])
|
|
AC_SUBST(CONFIG_GNUTLS_OPENSSL_COMPAT)
|
|
AC_SUBST(CONFIG_OPENSSL)
|
|
AC_SUBST(CONFIG_GNUTLS)
|
|
|
|
#endif
|
|
|
|
AC_MSG_CHECKING([whether to be or not to be])
|
|
AC_MSG_RESULT([needs to be determined experimentally])
|
|
|
|
dnl ===================================================================
|
|
dnl Check for IPv6 support and related functions.
|
|
dnl ===================================================================
|
|
|
|
EL_CHECK_NET_TYPE(struct sockaddr_storage, HAVE_SA_STORAGE, [])
|
|
EL_CHECK_NET_TYPE(struct sockaddr_in6, HAVE_SA_IN6, [#include <netinet/in.h>])
|
|
EL_CHECK_NET_TYPE(struct addrinfo, HAVE_ADDRINFO, [#include <netdb.h>])
|
|
|
|
AC_CHECK_FUNC(getaddrinfo, HAVE_GETADDRINFO=yes, HAVE_GETADDRINFO=no)
|
|
if test "$HAVE_GETADDRINFO" != yes; then
|
|
AC_CHECK_LIB(inet6, getaddrinfo, HAVE_GETADDRINFO=yes, HAVE_GETADDRINFO=no)
|
|
if test "$HAVE_GETADDRINFO" = yes; then
|
|
LIBS="$LIBS -linet6"
|
|
fi
|
|
fi
|
|
|
|
|
|
dnl ===================================================================
|
|
dnl Checking for X11 (window title restoring).
|
|
dnl ===================================================================
|
|
|
|
AC_PATH_X
|
|
if test x"$no_x" != xyes; then
|
|
if test -n "$x_includes"; then
|
|
X_CFLAGS="-I$x_includes"
|
|
fi
|
|
if test -n "$x_libraries"; then
|
|
LDFLAGS="$LDFLAGS -L$x_libraries"
|
|
fi
|
|
LIBS="-lX11 $LIBS"
|
|
EL_DEFINE(HAVE_X11, [X11 for restoring window titles])
|
|
AC_SUBST(X_CFLAGS)
|
|
fi
|
|
|
|
|
|
dnl ===================================================================
|
|
dnl Backtraces displaying support.
|
|
dnl ===================================================================
|
|
|
|
AC_CHECK_HEADERS(execinfo.h, HAVE_EXECINFO=yes, HAVE_EXECINFO=no)
|
|
# possible checks for other system-specific means go here
|
|
|
|
|
|
dnl ===================================================================
|
|
dnl Gettext grey zone. Beware.
|
|
dnl ===================================================================
|
|
|
|
ALL_LINGUAS="af be bg ca cs da de el es et fi fr gl hr hu id is it lt nl nb pl pt pt_BR ro ru sk sr sv tr uk"
|
|
|
|
AM_GNU_GETTEXT
|
|
|
|
dnl AC_MSG_CHECKING([how many characters your English alphabet has])
|
|
dnl # f33r d4 l33t... I hope it's portable. :)
|
|
dnl cf_result=$((48#z - 48#a + 1));
|
|
dnl AC_MSG_RESULT($cf_result)
|
|
|
|
|
|
dnl ===================================================================
|
|
dnl Compile-time features control
|
|
dnl ===================================================================
|
|
|
|
EL_ARG_ENABLE(CONFIG_COOKIES, cookies, [Cookies],
|
|
[ --disable-cookies disable cookie support])
|
|
|
|
EL_ARG_ENABLE(CONFIG_FORMHIST, formhist, [Form history],
|
|
[ --disable-formhist disable form history support])
|
|
|
|
EL_ARG_ENABLE(CONFIG_GLOBHIST, globhist, [Global history],
|
|
[ --disable-globhist disable global history support])
|
|
|
|
|
|
EL_ARG_ENABLE(CONFIG_MAILCAP, mailcap, [Mailcap],
|
|
[ --disable-mailcap disable mailcap support])
|
|
|
|
EL_ARG_ENABLE(CONFIG_MIMETYPES, mimetypes, [Mimetypes files],
|
|
[ --disable-mimetypes disable mimetypes files support])
|
|
|
|
|
|
EL_ARG_DEPEND(CONFIG_IPV6, ipv6,
|
|
[HAVE_SA_STORAGE:yes HAVE_SA_IN6:yes HAVE_ADDRINFO:yes HAVE_GETADDRINFO:yes],
|
|
[IPv6],
|
|
[ --disable-ipv6 disable IPv6 support])
|
|
|
|
EL_ARG_ENABLE(CONFIG_BITTORRENT, bittorrent, [BitTorrent protocol],
|
|
[ --enable-bittorrent enable BitTorrent protocol support])
|
|
|
|
EL_ARG_ENABLE(CONFIG_DATA, data, [Data protocol],
|
|
[ --disable-data disable data protocol support])
|
|
|
|
EL_ARG_ENABLE(CONFIG_URI_REWRITE, uri-rewrite, [URI rewriting],
|
|
[ --disable-uri-rewrite disable URI rewrite support])
|
|
|
|
EL_ARG_DEPEND(CONFIG_CGI, cgi, [HAVE_SETENV_OR_PUTENV:yes], [Local CGI],
|
|
[ --enable-cgi enable local CGI support])
|
|
|
|
EL_ARG_ENABLE(CONFIG_FINGER, finger, [Finger protocol],
|
|
[ --enable-finger enable finger protocol support])
|
|
|
|
dnl ===================================================================
|
|
dnl FSP protocol
|
|
dnl ===================================================================
|
|
EL_SAVE_FLAGS
|
|
|
|
if test "x${enable_fsp}" != xno; then
|
|
AC_CHECK_HEADERS(fsplib.h, HAVE_FSPLIB=yes, HAVE_FSPLIB=no)
|
|
|
|
if test "$HAVE_FSPLIB" = yes; then
|
|
AC_CHECK_LIB(fsplib, fsp_open_session, HAVE_FSPLIB=yes, HAVE_FSPLIB=no)
|
|
if test "$HAVE_FSPLIB" = yes; then
|
|
LIBS="$LIBS -lfsplib"
|
|
else
|
|
AC_CHECK_LIB(fsp, fsp_open_session, HAVE_FSPLIB=yes, HAVE_FSPLIB=no)
|
|
if test "$HAVE_FSPLIB" = yes; then
|
|
LIBS="$LIBS -lfsp"
|
|
fi
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
EL_ARG_DEPEND(CONFIG_FSP, fsp, [HAVE_FSPLIB:yes], [FSP protocol],
|
|
[ --enable-fsp enable FSP protocol support])
|
|
|
|
if test "x$CONFIG_FSP" = xno; then
|
|
EL_RESTORE_FLAGS
|
|
fi
|
|
|
|
EL_ARG_ENABLE(CONFIG_FTP, ftp, [FTP protocol],
|
|
[ --disable-ftp disable ftp protocol support])
|
|
|
|
EL_ARG_ENABLE(CONFIG_GOPHER, gopher, [Gopher protocol],
|
|
[ --enable-gopher enable gopher protocol support])
|
|
|
|
EL_ARG_ENABLE(CONFIG_NNTP, nntp, [NNTP protocol],
|
|
[ --enable-nntp enable nntp protocol support])
|
|
|
|
dnl ===================================================================
|
|
dnl SMB protocol support.
|
|
dnl ===================================================================
|
|
EL_SAVE_FLAGS
|
|
|
|
if test "x${enable_smb}" != xno; then
|
|
AC_CHECK_HEADERS(libsmbclient.h, HAVE_SMBCLIENT=yes, HAVE_SMBCLIENT=no)
|
|
|
|
if test "$HAVE_SMBCLIENT" = yes; then
|
|
AC_CHECK_LIB(smbclient, smbc_init, HAVE_SMBCLIENT=yes, HAVE_SMBCLIENT=no)
|
|
if test "$HAVE_SMBCLIENT" = yes; then
|
|
LIBS="$LIBS -lsmbclient"
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
EL_ARG_DEPEND(CONFIG_SMB, smb, [HAVE_SMBCLIENT:yes], [Samba protocol],
|
|
[ --enable-smb enable Samba protocol support])
|
|
|
|
if test "x$CONFIG_SMB" = xno; then
|
|
EL_RESTORE_FLAGS
|
|
fi
|
|
|
|
|
|
EL_ARG_ENABLE(CONFIG_MOUSE, mouse, [Mouse handling],
|
|
[ --disable-mouse disable mouse support])
|
|
|
|
# GPM mouse is Linux specific, so ...
|
|
CONFIG_SYSMOUSE=yes
|
|
EL_ARG_DEPEND(CONFIG_SYSMOUSE, sysmouse,
|
|
[CONFIG_MOUSE:yes CONFIG_GPM:no HAVE_SYSMOUSE_HEADER:yes],
|
|
[BSD sysmouse],
|
|
[ --disable-sysmouse disable BSD sysmouse support])
|
|
|
|
EL_ARG_ENABLE(CONFIG_88_COLORS, 88-colors, [88 colors],
|
|
[ --enable-88-colors enable 88 color support])
|
|
|
|
EL_ARG_ENABLE(CONFIG_256_COLORS, 256-colors, [256 colors],
|
|
[ --enable-256-colors enable 256 color support])
|
|
|
|
EL_ARG_ENABLE(CONFIG_TRUE_COLOR, true-color, [true color],
|
|
[ --enable-true-color enable true color support])
|
|
|
|
EL_ARG_ENABLE(CONFIG_EXMODE, exmode, [Exmode interface],
|
|
[ --enable-exmode enable exmode (CLI) interface])
|
|
|
|
EL_ARG_ENABLE(CONFIG_LEDS, leds, [LEDs],
|
|
[ --disable-leds disable LEDs support])
|
|
|
|
EL_ARG_ENABLE(CONFIG_MARKS, marks, [Marks],
|
|
[ --disable-marks disable document marks support])
|
|
|
|
|
|
EL_ARG_ENABLE(CONFIG_CSS, css, [Cascading Style Sheets],
|
|
[ --disable-css disable Cascading Style Sheet support])
|
|
|
|
EL_ARG_DEPEND(CONFIG_HTML_HIGHLIGHT, html-highlight, [CONFIG_CSS:yes], [HTML highlighting],
|
|
[ --enable-html-highlight HTML highlighting using DOM engine])
|
|
|
|
dnl Everything in the tree already uses CONFIG_DOM
|
|
dnl so resolve CONFIG_HTML_HIGHLIGHT to CONFIG_DOM
|
|
EL_CONFIG_DEPENDS(CONFIG_DOM, [CONFIG_HTML_HIGHLIGHT], [DOM engine])
|
|
|
|
EL_ARG_DEPEND(CONFIG_BACKTRACE, backtrace, [HAVE_EXECINFO:yes], [Backtrace],
|
|
[ --disable-backtrace disable backtrace support])
|
|
|
|
EL_ARG_DEPEND(CONFIG_NO_ROOT_EXEC, no-root, [HAVE_GETUID:yes HAVE_GETEUID:yes], [No root exec],
|
|
[ --enable-no-root enable prevention of usage by root])
|
|
|
|
|
|
EL_ARG_ENABLE(CONFIG_DEBUG, debug, [Debug mode],
|
|
[ --enable-debug enable leak debug and internal error checking])
|
|
|
|
EL_ARG_DEPEND(CONFIG_FASTMEM, fastmem, [CONFIG_DEBUG:no], [Fast mode],
|
|
[ --enable-fastmem enable direct use of system allocation functions, not usable with --enable-debug])
|
|
|
|
EL_ARG_ENABLE(CONFIG_OWN_LIBC, own-libc, [Own libc stubs],
|
|
[ --enable-own-libc force use of internal functions instead of those of system libc])
|
|
|
|
EL_ARG_ENABLE(CONFIG_SMALL, small, [Small binary],
|
|
[ --enable-small reduce binary size as far as possible (but see the bottom of doc/small.txt!)])
|
|
|
|
EL_ARG_ENABLE(CONFIG_UTF8, utf-8, [UTF-8],
|
|
[ --enable-utf-8 enable UTF-8 support])
|
|
|
|
|
|
AC_ARG_ENABLE(weehoofooboomookerchoo,
|
|
[
|
|
Also check out the features.conf file for more information about features!
|
|
],
|
|
[AC_MSG_ERROR(Are you strange, or what?)])
|
|
|
|
|
|
dnl == EMX hack
|
|
|
|
test "$CONFIG_OS_OS2" = yes && LDFLAGS="$LDFLAGS -Zexe"
|
|
test "$CONFIG_OS_OS2" = yes && LDFLAGS=`echo "$LDFLAGS" | sed "s/-Zbin-files//g"`
|
|
|
|
|
|
dnl ===================================================================
|
|
dnl Export directory paths
|
|
dnl ===================================================================
|
|
|
|
# Set up the ``entry points'' if they were not supplied by builder
|
|
test "x$prefix" = xNONE && prefix=$ac_default_prefix
|
|
test "x$exec_prefix" = xNONE && exec_prefix=${prefix}
|
|
|
|
# Create CONFDIR #define for config.h
|
|
|
|
# XXX: This may be dependent on a particular version of autoconf. Whatever,
|
|
# it's autoconf fault to force us to do such hacks ;p.
|
|
if test x"$sysconfdir" = x"\${prefix}/etc"; then
|
|
# sysconfdir is set to its default value... fine, let's append /elinks/
|
|
# XXX: We can't modify listing of the default in ./configure --help :-(
|
|
sysconfdir_n=`eval echo "$sysconfdir"`
|
|
sysconfdir=$sysconfdir_n
|
|
(echo "$sysconfdir" | grep elinks >/dev/null 2>/dev/null) || \
|
|
sysconfdir="$sysconfdir/elinks"
|
|
fi
|
|
|
|
CONFDIR=$sysconfdir
|
|
AC_DEFINE_UNQUOTED(CONFDIR, "$CONFDIR", [Directory containing default config])
|
|
AC_SUBST(CONFDIR)
|
|
|
|
# Create LOCALEDIR #define for config.h
|
|
LOCALEDIR=`eval echo "$datadir/locale"`
|
|
while echo "$LOCALEDIR" | grep "\\$"
|
|
do
|
|
LOCALEDIR=`eval echo "$LOCALEDIR"`
|
|
done > /dev/null 2> /dev/null
|
|
AC_DEFINE_UNQUOTED(LOCALEDIR, "$LOCALEDIR", [Directory containing locales])
|
|
AC_SUBST(LOCALEDIR)
|
|
|
|
# Create LIBDIR #define for config.h
|
|
LIBDIR=`eval echo "$libdir"`
|
|
AC_DEFINE_UNQUOTED(LIBDIR, "$LIBDIR", [Directory containing libraries])
|
|
AC_SUBST(LIBDIR)
|
|
|
|
EL_LOG_CONFIG(CONFDIR, [System configuration directory], [])
|
|
EL_LOG_CONFIG(LOCALEDIR, [Locale catalogs directory], [])
|
|
|
|
dnl ===================================================================
|
|
dnl A little fine tuning of gcc specific options (continued)
|
|
dnl ===================================================================
|
|
|
|
if test "x$ac_cv_prog_gcc" = "xyes"; then
|
|
if test "$CONFIG_DEBUG" = "yes"; then
|
|
dnl We want to see all warnings and live with none (in debug mode).
|
|
CFLAGS="$CFLAGS -Werror"
|
|
fi
|
|
|
|
case "`$CC -dumpversion`" in
|
|
3.0|3.1|3.2)
|
|
# These should be ok using -Werror
|
|
;;
|
|
3.*)
|
|
# If gcc is version 3.3 (or higher?) it emits lots of false positive
|
|
# "dereferencing type-punned pointer will break strict-aliasing rules"
|
|
# warnings. Disable them by not doing any strict-aliasing. The
|
|
# alternative is just too ugly. Thanks gcc guys!! ;)
|
|
CFLAGS="$CFLAGS -fno-strict-aliasing"
|
|
;;
|
|
4.*)
|
|
# Do not show warnings related to (char * | unsigned char *) type
|
|
# difference.
|
|
CFLAGS="$CFLAGS -fno-strict-aliasing -Wno-pointer-sign"
|
|
;;
|
|
*)
|
|
# These should be ok using -Werror
|
|
;;
|
|
esac
|
|
|
|
# GCC 4.2 snapshots warn that comparisons like &object != NULL
|
|
# always return true. Some macros in ELinks check whether pointer
|
|
# arguments are NULL, and giving them addresses of named objects
|
|
# triggers the warning. These warnings have not revealed any real
|
|
# bugs, so shut them up instead of complicating the code. GCC 4.1
|
|
# does not recognize -Wno-always-true and exits with code 1 if it is
|
|
# given.
|
|
AC_MSG_CHECKING([whether $CC accepts -Wno-always-true])
|
|
EL_SAVE_FLAGS
|
|
CFLAGS="$CFLAGS -Wno-always-true"
|
|
AC_TRY_COMPILE([], [],
|
|
[AC_MSG_RESULT([yes])],
|
|
[EL_RESTORE_FLAGS
|
|
AC_MSG_RESULT([no])])
|
|
fi
|
|
|
|
EL_LOG_CONFIG(CFLAGS, [Compiler flags (CFLAGS)], [])
|
|
EL_LOG_CONFIG(CPPFLAGS, [Preprocessor flags (CPPFLAGS)], [])
|
|
EL_LOG_CONFIG(LDFLAGS, [Linker flags (LDFLAGS)], [])
|
|
EL_LOG_CONFIG(LIBS, [Library flags (LIBS)], [])
|
|
|
|
dnl ===================================================================
|
|
dnl Colored make output
|
|
dnl ===================================================================
|
|
|
|
if test $(`which tput` colors) -ge 4; then
|
|
MAKE_COLOR=1
|
|
AC_SUBST(MAKE_COLOR)
|
|
fi
|
|
|
|
dnl ===================================================================
|
|
dnl Generated files
|
|
dnl ===================================================================
|
|
|
|
AC_OUTPUT([ \
|
|
Makefile.config \
|
|
contrib/elinks.spec \
|
|
contrib/lua/hooks.lua \
|
|
contrib/conv/w3m2links.awk \
|
|
doc/man/man1/elinks.1 \
|
|
src/intl/gettext/ref-add.sed \
|
|
src/intl/gettext/ref-del.sed
|
|
])
|
|
|
|
abs_srcdir="$(cd "$srcdir" && pwd)"
|
|
# builddir is always absolute!
|
|
if test "$abs_srcdir" != "$builddir"; then
|
|
# Bootstrap the Makefile creation
|
|
echo "include $abs_srcdir/Makefile" > "$builddir/Makefile"
|
|
"$MAKE" "SRC=$abs_srcdir" init
|
|
|
|
# Make cg-status ignore this build directory
|
|
echo "*" > "$builddir/.gitignore"
|
|
fi
|
|
|
|
dnl ===================================================================
|
|
dnl Configuration summary
|
|
dnl ===================================================================
|
|
|
|
AC_MSG_RESULT(The following feature summary has been saved to features.log)
|
|
cat features.log
|