mirror of
https://github.com/rkd77/elinks.git
synced 2024-11-04 08:17:17 -05:00
1587 lines
52 KiB
Plaintext
1587 lines
52 KiB
Plaintext
dnl Process this file with autoconf to produce a configure script.
|
|
|
|
dnl There are two types of comments in this file.
|
|
dnl Comments that refer to Autoconf macros begin with "dnl", and m4
|
|
dnl discards them. Other comments begin with "#", and they get copied
|
|
dnl to the configure script, hopefully making it easier to read.
|
|
|
|
dnl Autoconf 2.13 generates an incomplete config.h.in; see ELinks bug 936.
|
|
dnl Autoconf 2.59 is installed in the computer that generates our nightly
|
|
dnl snapshots, so we need to be compatible with that.
|
|
AC_PREREQ(2.59)
|
|
AC_INIT
|
|
AC_CONFIG_SRCDIR([src/main/main.c])
|
|
AC_CONFIG_AUX_DIR(config)
|
|
|
|
PACKAGE=elinks
|
|
VERSION=0.12pre2.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
|
|
|
|
# ===================================================================
|
|
# Load feature configuration file and start logging features.
|
|
# ===================================================================
|
|
|
|
features="features.conf"
|
|
AC_CHECK_FILE("$srcdir/$features", [ . $srcdir/$features ])
|
|
AC_CHECK_FILE("$builddir/$features", [ . $builddir/$features ])
|
|
echo "Feature summary:" > features.log
|
|
|
|
# ===================================================================
|
|
# Checks for programs.
|
|
# ===================================================================
|
|
|
|
AC_PROG_CC
|
|
AC_PROG_AWK
|
|
AC_PATH_PROGS(AWK, "$AWK")
|
|
AC_PROG_RANLIB
|
|
AC_PROG_INSTALL
|
|
|
|
AC_PATH_PROGS(GIT, "git")
|
|
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
|
|
|
|
AC_PATH_PROGS(DOXYGEN, "doxygen")
|
|
if test "x$DOXYGEN" != "x"; then
|
|
EL_CONFIG(CONFIG_DOXYGEN, [Doxygen])
|
|
api_srcdir="$(cd "$srcdir" && pwd)/src"
|
|
AC_SUBST(api_srcdir)
|
|
fi
|
|
fi
|
|
|
|
AC_SUBST(ASCIIDOC_FLAGS)
|
|
AC_SUBST(CONFIG_ASCIIDOC)
|
|
AC_SUBST(CONFIG_DOXYGEN)
|
|
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])
|
|
EL_CONFIG_DEPENDS(CONFIG_APIDOCS, [CONFIG_DOXYGEN], [API Documentation])
|
|
|
|
# gcc specific options (to be continued at the bottom of configure)
|
|
if test "x$ac_cv_c_compiler_gnu" = "xyes"; then
|
|
# We want to see all warnings and live with none.
|
|
# We can't set up -Werror here as there may be some warnings in test
|
|
# suite of configure, and we don't want to fail them.
|
|
CFLAGS="$CFLAGS -Wall"
|
|
fi
|
|
|
|
# ===================================================================
|
|
# Checks for special OSes.
|
|
# ===================================================================
|
|
|
|
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_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[#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)
|
|
|
|
# ===================================================================
|
|
# Checks for header files.
|
|
# ===================================================================
|
|
|
|
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(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([net/if.h], [], [],
|
|
[[#ifdef HAVE_SYS_SOCKET_H
|
|
# include <sys/socket.h> /* <net/if.h> on Mac OS X 10.5.4 needs this */
|
|
#endif
|
|
]])
|
|
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)
|
|
|
|
# ===================================================================
|
|
# Checks for typedefs, structures, and compiler characteristics.
|
|
# ===================================================================
|
|
|
|
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)
|
|
|
|
# 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");])
|
|
|
|
# ===================================================================
|
|
# Check for POSIX <regex.h>
|
|
# ===================================================================
|
|
|
|
EL_CHECK_SYS_TYPE(regex_t, HAVE_REGEX_H, [#include <regex.h>])
|
|
|
|
# ===================================================================
|
|
# Checks for library functions.
|
|
# ===================================================================
|
|
|
|
AC_PROG_GCC_TRADITIONAL
|
|
AC_FUNC_MEMCMP
|
|
AC_FUNC_MMAP
|
|
AC_FUNC_STRFTIME
|
|
AC_CHECK_FUNCS(atoll 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_CHECK_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)
|
|
|
|
# These aren't probably needed now, as they are commented in links.h.
|
|
# I've no idea about their historical background, but I keep them here
|
|
# 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_MSG_ERROR([Unable to emulate raise()])
|
|
fi
|
|
fi
|
|
|
|
AC_CACHE_CHECK([for __va_copy],el_cv_HAVE_VA_COPY,[
|
|
AC_LINK_IFELSE([AC_LANG_PROGRAM([[#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_LINK_IFELSE([AC_LANG_PROGRAM([[#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_RUN_IFELSE([AC_LANG_SOURCE([[
|
|
#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
|
|
|
|
# OpenSSL and Lua frequently need dlopen
|
|
AC_CHECK_LIB(dl, dlopen)
|
|
|
|
# ===================================================================
|
|
# Checks for libraries.
|
|
# ===================================================================
|
|
|
|
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
|
|
|
|
# ===================================================================
|
|
# Checks for packaging specific options.
|
|
# ===================================================================
|
|
|
|
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 ])
|
|
|
|
# ===================================================================
|
|
# Checks for a libraries, optional even if installed.
|
|
# ===================================================================
|
|
|
|
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])
|
|
|
|
# ELinks calls deflateInit2 with windowBits = MAX_WBITS | 32, to
|
|
# enable automatic decoding of both zlib and gzip headers. This
|
|
# feature was added in zlib 1.2.0.2; earlier versions return an error.
|
|
# The gzclearerr function was also added in zlib 1.2.0.2, so check for
|
|
# that, even though ELinks does not actually call gzclearerr.
|
|
EL_CONFIG_OPTIONAL_LIBRARY(CONFIG_GZIP, zlib, zlib.h, z, gzclearerr,
|
|
[ --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_CONFIG_OPTIONAL_LIBRARY(CONFIG_LZMA, lzma, lzma.h, lzma, lzma_code,
|
|
[ --without-lzma disable lzma encoding support])
|
|
|
|
# ===================================================================
|
|
# Check for GSSAPI, optional even if installed.
|
|
# ===================================================================
|
|
|
|
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)
|
|
|
|
# ===================================================================
|
|
# Bookmark and XBEL support
|
|
# ===================================================================
|
|
|
|
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
|
|
|
|
# ===================================================================
|
|
# Checks for BSD sysmouse
|
|
# ===================================================================
|
|
|
|
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"])
|
|
|
|
# ===================================================================
|
|
# Checks for OS/2
|
|
# ===================================================================
|
|
|
|
if test "$CONFIG_OS_OS2" = yes; then
|
|
EL_CONFIG_OS_OS2
|
|
fi
|
|
|
|
# ===================================================================
|
|
# Checks for Win32
|
|
# ===================================================================
|
|
|
|
if test "$CONFIG_OS_WIN32" = yes; then
|
|
EL_CONFIG_OS_WIN32
|
|
fi
|
|
|
|
# ===================================================================
|
|
# Check for SEE (Simple Ecmascript Engine)
|
|
# ===================================================================
|
|
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
|
|
|
|
CONFIG_ECMASCRIPT_SEE=no
|
|
|
|
if test "$enable_see" = "yes"; then
|
|
if test -d "$withval"; then
|
|
SEE_PATH="$withval:$PATH"
|
|
else
|
|
SEE_PATH="$PATH"
|
|
fi
|
|
|
|
AC_PATH_PROG(SEE_CONFIG, libsee-config, no, $SEE_PATH)
|
|
AC_MSG_CHECKING([for SEE (2.0.1131 or later)])
|
|
if test "$SEE_CONFIG" != no; then
|
|
EL_SAVE_FLAGS
|
|
SEE_LIBS="`$SEE_CONFIG --libs`"
|
|
SEE_CFLAGS="`$SEE_CONFIG --cppflags`"
|
|
CPPFLAGS="$SEE_CFLAGS $CPPFLAGS"
|
|
LIBS="$SEE_LIBS $LIBS_X"
|
|
AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <see/see.h>]], [[#if SEE_VERSION_API_MAJOR < 2
|
|
#error SEE too old
|
|
#endif
|
|
]])],[cf_result=yes],[cf_result=no])
|
|
EL_RESTORE_FLAGS
|
|
if test "$cf_result" = yes; then
|
|
LIBS="$SEE_LIBS $LIBS"
|
|
EL_CONFIG(CONFIG_ECMASCRIPT_SEE, [SEE])
|
|
AC_SUBST(SEE_CFLAGS)
|
|
fi
|
|
AC_MSG_RESULT($cf_result)
|
|
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
|
|
fi
|
|
|
|
# ===================================================================
|
|
# Check for SpiderMonkey, optional even if installed.
|
|
# ===================================================================
|
|
|
|
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 (1.5 RC3a or later)])
|
|
|
|
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 &&
|
|
test -f "$spidermonkeydir$spidermonkeyinclude/jsapi.h"; then
|
|
SPIDERMONKEY_LIBS="-L$spidermonkeydir/lib -l$spidermonkeylib"
|
|
SPIDERMONKEY_CFLAGS="-I$spidermonkeydir$spidermonkeyinclude"
|
|
|
|
LIBS="$SPIDERMONKEY_LIBS $LIBS_X"
|
|
CFLAGS="$CFLAGS_X $SPIDERMONKEY_CFLAGS"
|
|
CPPFLAGS="$CPPFLAGS_X $SPIDERMONKEY_CFLAGS"
|
|
|
|
AC_LINK_IFELSE([AC_LANG_PROGRAM([[#define XP_UNIX
|
|
#include <jsapi.h>]], [[JS_GetReservedSlot(NULL, NULL, 0, NULL)]])],[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)
|
|
|
|
|
|
# ===================================================================
|
|
# Optional Spidermonkey-based ECMAScript browser scripting
|
|
# ===================================================================
|
|
|
|
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
|
|
|
|
# ===================================================================
|
|
# Check for Guile, optional even if installed.
|
|
# ===================================================================
|
|
|
|
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
|
|
|
|
# ===================================================================
|
|
# Check for Perl
|
|
# ===================================================================
|
|
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_LINK_IFELSE([AC_LANG_PROGRAM([[
|
|
#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_COMPILE_IFELSE([AC_LANG_PROGRAM([[
|
|
#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
|
|
|
|
# ===================================================================
|
|
# Check for Python
|
|
# ===================================================================
|
|
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_LINK_IFELSE([AC_LANG_PROGRAM([[#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
|
|
|
|
|
|
# ===================================================================
|
|
# Check for Lua, optional even if installed.
|
|
# ===================================================================
|
|
|
|
# Do this the long way, as FreeBSD reportedly needs -L<dir> for
|
|
# 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; do
|
|
if test "$cf_result" = no && ( test -f "$luadir/include/lua.h" || \
|
|
test -f "$luadir/include/lua$suffix/lua.h" ) ; then
|
|
LUA_LIBS="-L$luadir/lib -llua$suffix -llualib$suffix -lm"
|
|
LUA_CFLAGS="-I$luadir/include -I$luadir/include/lua$suffix"
|
|
|
|
LIBS="$LUA_LIBS $LIBS_X"
|
|
CFLAGS="$CFLAGS_X $LUA_CFLAGS"
|
|
CPPFLAGS="$CPPFLAGS_X $LUA_CFLAGS"
|
|
|
|
# Check that it is a compatible Lua version
|
|
AC_LINK_IFELSE([AC_LANG_PROGRAM([[ #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
|
|
|
|
|
|
# ===================================================================
|
|
# Check for Ruby, optional even if installed.
|
|
# ===================================================================
|
|
|
|
EL_CONFIG_SCRIPTING_RUBY
|
|
|
|
# ===================================================================
|
|
# Setup global scripting
|
|
# ===================================================================
|
|
|
|
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)
|
|
|
|
|
|
# ===================================================================
|
|
# Check for SSL support.
|
|
# ===================================================================
|
|
|
|
# We by default use OpenSSL, and we always prefer it. However, when GNUTLS
|
|
# is enabled, we won't try to use OpenSSL anymore.
|
|
|
|
# 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"
|
|
|
|
# ---- 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_LINK_IFELSE([AC_LANG_PROGRAM([[#include <openssl/ssl.h>]], [[OpenSSL_add_all_algorithms()]])],[cf_result=yes],[cf_result=no])
|
|
if test "$cf_result" != yes; then
|
|
AC_LINK_IFELSE([AC_LANG_PROGRAM([[#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
|
|
# ---- 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_LINK_IFELSE([AC_LANG_PROGRAM([[#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)
|
|
|
|
# GnuTLS 2.2.0 changed libgnutls-openssl from GPLv2+
|
|
# to GPLv3+. Don't link that with the GPLv2 ELinks.
|
|
# ELinks will use its internal MD5 code instead.
|
|
CONFIG_GNUTLS_OPENSSL_COMPAT=no
|
|
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)
|
|
|
|
# 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])
|
|
|
|
# ===================================================================
|
|
# Check for IPv6 support and related functions.
|
|
# ===================================================================
|
|
|
|
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
|
|
|
|
|
|
# ===================================================================
|
|
# Checking for X11 (window title restoring).
|
|
# ===================================================================
|
|
|
|
AC_PATH_X
|
|
if test x"$no_x" != xyes; then
|
|
EL_SAVE_FLAGS
|
|
if test -n "$x_includes"; then
|
|
X_CFLAGS="-I$x_includes"
|
|
CPPFLAGS="$CPPLAGS $X_CFLAGS"
|
|
CFLAGS="$CFLAGS $X_CFLAGS"
|
|
fi
|
|
if test -n "$x_libraries"; then
|
|
LDFLAGS="$LDFLAGS -L$x_libraries"
|
|
fi
|
|
LIBS="-lX11 $LIBS"
|
|
AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <X11/Xlib.h>]], [[XrmInitialize()]])],[cf_result=yes],[cf_result=no])
|
|
EL_RESTORE_FLAGS
|
|
if test "$cf_result" = yes; then
|
|
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
|
|
fi
|
|
|
|
|
|
# ===================================================================
|
|
# Backtraces displaying support.
|
|
# ===================================================================
|
|
|
|
AC_CHECK_HEADERS(execinfo.h, HAVE_EXECINFO=yes, HAVE_EXECINFO=no)
|
|
# possible checks for other system-specific means go here
|
|
|
|
|
|
# ===================================================================
|
|
# Gettext grey zone. Beware.
|
|
# ===================================================================
|
|
|
|
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)
|
|
|
|
|
|
# ===================================================================
|
|
# Compile-time features control
|
|
# ===================================================================
|
|
|
|
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])
|
|
|
|
# ===================================================================
|
|
# FSP protocol
|
|
# ===================================================================
|
|
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])
|
|
|
|
# ===================================================================
|
|
# SMB protocol support.
|
|
# ===================================================================
|
|
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])
|
|
|
|
# Everything in the tree already uses CONFIG_DOM
|
|
# 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],
|
|
[ --disable-utf-8 disable 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?)])
|
|
|
|
|
|
# ===================================================================
|
|
# Further LDFLAGS tweaks
|
|
# ===================================================================
|
|
|
|
# == EMX hack
|
|
|
|
test "$CONFIG_OS_OS2" = yes && LDFLAGS="$LDFLAGS -Zexe"
|
|
test "$CONFIG_OS_OS2" = yes && LDFLAGS=`echo "$LDFLAGS" | sed "s/-Zbin-files//g"`
|
|
|
|
|
|
# Check for -rdynamic
|
|
#
|
|
# gcc -rdynamic calls ld -export-dynamic, which adds all symbols of
|
|
# the executable to its dynamic symbol table. ELinks uses this for
|
|
# two purposes:
|
|
#
|
|
# 1. If ELinks detects a bug, it can try to display a backtrace by
|
|
# calling backtrace_symbols_fd() in the GNU libc. The glibc-2.3.6
|
|
# manual states users of GNU ld must pass -rdynamic to make the
|
|
# symbols available to the program.
|
|
#
|
|
# 2. It would eventually be nice to dynamically load shared
|
|
# libraries as plugins (bug 73). The plugins must be able to
|
|
# call ELinks functions. This can be implemented either by
|
|
# registering all callable functions in ELinks-specific data
|
|
# structures, or by letting the dynamic linker handle them.
|
|
# The latter way requires something equivalent to -rdynamic.
|
|
#
|
|
# Because backtraces are not needed for correct operation, and bug
|
|
# 73 is not yet being fixed, the configure script and makefiles
|
|
# should not complain to the user if they find that -rdynamic does
|
|
# not work. Besides, it was reported at elinks-users on 2006-09-12
|
|
# that gcc-3.4.2 with "ld: Software Generation Utilities - Solaris
|
|
# Link Editors: 5.8-1.284" on Sun Solaris 8 Sparc does not support
|
|
# -rdynamic but does something equivalent automatically. (This was
|
|
# tested with "nm -D elinks | grep redraw_from_window".)
|
|
#
|
|
# With Sun Studio 11 on Solaris 9, we get "cc: Warning: illegal option
|
|
# -dynamic"; then, cc proceeds anyway, but the option can prevent the
|
|
# linker from finding the libraries listed in -l operands. So this
|
|
# -rdynamic check needs to happen after the libraries have already
|
|
# been added to $LDFLAGS.
|
|
AC_MSG_CHECKING([for -rdynamic])
|
|
LDFLAGS_X="$LDFLAGS"
|
|
LDFLAGS="-rdynamic $LDFLAGS"
|
|
AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[]])],[have_rdynamic=yes],[have_rdynamic=no])
|
|
test "$have_rdynamic" = no && LDFLAGS="$LDFLAGS_X"
|
|
AC_MSG_RESULT($have_rdynamic)
|
|
|
|
# ===================================================================
|
|
# Export directory paths
|
|
# ===================================================================
|
|
|
|
# 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], [])
|
|
|
|
|
|
AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <stddef.h>
|
|
]], [[#if !defined(__TINYC__) || !defined(alloca)
|
|
#error not tcc
|
|
#endif ]])],[cf_result=yes],[cf_result=no])
|
|
|
|
if test "$cf_result" = "yes"; then
|
|
AC_DEFINE([HAVE_ALLOCA])
|
|
AC_DEFINE([_ALLOCA_H], [1], [Define as 1 if you are using Tiny C Compiler
|
|
with the GNU C Library, and <alloca.h> of glibc would otherwise
|
|
override the alloca macro defined in <stddef.h> of TCC.
|
|
If <alloca.h> of glibc sees the _ALLOCA_H macro, it assumes
|
|
it has already been included, and does not redefine alloca.
|
|
This might not work in future glibc versions though, because
|
|
the names of the #include guard macros are not documented.
|
|
The incompatibility has been reported to the tinycc-devel
|
|
mailing list on 2008-07-14. If a future version of TCC provides
|
|
an <alloca.h> of its own, this hack won't be needed.])
|
|
fi
|
|
# ===================================================================
|
|
# A little fine tuning of gcc specific options (continued)
|
|
# ===================================================================
|
|
|
|
if test "x$ac_cv_c_compiler_gnu" = "xyes"; then
|
|
if test "$CONFIG_DEBUG" = "yes"; then
|
|
# 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.1 warns if we use the address of an object in Boolean context:
|
|
# warning: the address of `builtin_modules' will always evaluate as `true'
|
|
# This hits the object_lock and foreach_module macros in particular.
|
|
# It would be okay to put something in the macros to avoid the warning,
|
|
# but currently this seems to require defining parallel macros that skip
|
|
# the NULL check, and that's too ugly. So we instead disable the warning.
|
|
# GCC 4.2.1 needs -Wno-address, but GCC 4.2 snapshots need -Wno-always-true.
|
|
# GCC 4.1.3 recognizes neither and exits with code 1 if they are given.
|
|
for warning_flag in -Wno-address -Wno-always-true; do
|
|
AC_MSG_CHECKING([whether $CC accepts $warning_flag])
|
|
EL_SAVE_FLAGS
|
|
CFLAGS="$CFLAGS $warning_flag"
|
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
|
|
[AC_MSG_RESULT([yes])
|
|
break],
|
|
[AC_MSG_RESULT([no])])
|
|
EL_RESTORE_FLAGS
|
|
done
|
|
|
|
# Bug 1012: Some parts of ELinks do arithmetic with signed integers
|
|
# in such a way that an overflow is possible. GCC 4.2.1 warns
|
|
# "warning: assuming signed overflow does not occur when assuming
|
|
# that (X + c) > X is always true", which may be an incorrect
|
|
# optimization (although allowed by the standard), and breaks the
|
|
# build with -Werror.
|
|
#
|
|
# All of the following tests included -S -Wall -Wextra:
|
|
#
|
|
# GCC: (GNU) 4.0.4 20060507 (prerelease) (Debian 4.0.3-3)
|
|
# * gcc-4.0 -O0: OK, compares the values
|
|
# * gcc-4.0 -O2: assumes no overflow, does not warn
|
|
# * gcc-4.0 -O0 -fno-strict-overflow: unrecognized command line option
|
|
# * gcc-4.0 -O0 -fwrapv: OK, compares the values
|
|
# * gcc-4.0 -O2 -fwrapv: OK, compares the values
|
|
# * gcc-4.0 -O0 -ftrapv: OK, calls __addvsi3
|
|
# * gcc-4.0 -O2 -ftrapv: assumes no overflow, does not warn
|
|
# * gcc-4.0 -O0 -fwrapv -ftrapv: OK, calls __addvsi3
|
|
# * gcc-4.0 -O2 -fwrapv -ftrapv: compares the values
|
|
#
|
|
# GCC: (GNU) 4.1.3 20070812 (prerelease) (Debian 4.1.2-15)
|
|
# * gcc-4.1 -O0: assumes no overflow, does not warn
|
|
# * gcc-4.1 -O2: assumes no overflow, does not warn
|
|
# * gcc-4.1 -O0 -fno-strict-overflow: unrecognized command line option
|
|
# * gcc-4.1 -O0 -fwrapv: OK, compares the values
|
|
# * gcc-4.1 -O2 -fwrapv: OK, compares the values
|
|
# * gcc-4.1 -O0 -ftrapv: OK, calls __addvsi3
|
|
# * gcc-4.1 -O2 -ftrapv: compares the values
|
|
# * gcc-4.1 -O0 -fwrapv -ftrapv: OK, calls __addvsi3
|
|
# * gcc-4.1 -O2 -fwrapv -ftrapv: compares the values
|
|
#
|
|
# GCC: (GNU) 4.2.1 (Debian 4.2.1-5)
|
|
# * gcc-4.2 -O0: OK, compares the values
|
|
# * gcc-4.2 -O2: assumes no overflow, warns about it
|
|
# * gcc-4.2 -O0 -fno-strict-overflow: OK, compares the values
|
|
# * gcc-4.2 -O2 -fno-strict-overflow: OK, compares the values
|
|
# * gcc-4.2 -O0 -fwrapv: OK, compares the values
|
|
# * gcc-4.2 -O2 -fwrapv: OK, compares the values
|
|
# * gcc-4.2 -O0 -ftrapv: OK, calls __addvsi3
|
|
# * gcc-4.2 -O2 -ftrapv: compares the values
|
|
# * gcc-4.2 -O0 -fwrapv -ftrapv: OK, calls __addvsi3
|
|
# * gcc-4.2 -O2 -fwrapv -ftrapv: compares the values
|
|
#
|
|
# Apparently, -ftrapv does not work reliably at all.
|
|
for overflow_flag in -fno-strict-overflow -fwrapv; do
|
|
AC_MSG_CHECKING([whether $CC accepts $overflow_flag])
|
|
EL_SAVE_FLAGS
|
|
CFLAGS="$CFLAGS $overflow_flag"
|
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
|
|
[AC_MSG_RESULT([yes])
|
|
break],
|
|
[AC_MSG_RESULT([no])])
|
|
EL_RESTORE_FLAGS
|
|
done
|
|
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)], [])
|
|
|
|
# ===================================================================
|
|
# Colored make output
|
|
# ===================================================================
|
|
|
|
if test $(`which tput` colors) -ge 4; then
|
|
MAKE_COLOR=1
|
|
AC_SUBST(MAKE_COLOR)
|
|
fi
|
|
|
|
# ===================================================================
|
|
# Generated files
|
|
# ===================================================================
|
|
|
|
AC_CONFIG_FILES([ \
|
|
Makefile.config \
|
|
contrib/elinks.spec \
|
|
contrib/lua/hooks.lua \
|
|
contrib/conv/w3m2links.awk \
|
|
doc/Doxyfile \
|
|
doc/man/man1/elinks.1 \
|
|
src/intl/gettext/ref-add.sed \
|
|
src/intl/gettext/ref-del.sed
|
|
])
|
|
AC_OUTPUT
|
|
|
|
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
|
|
|
|
# ===================================================================
|
|
# Configuration summary
|
|
# ===================================================================
|
|
|
|
AC_MSG_RESULT(The following feature summary has been saved to features.log)
|
|
cat features.log
|