Move code from format_table() to new distribute_table_widths().
[elinks.git] / configure.in
blob328a8a343b364cd6076040d0c27ea1f8b01aa719
1 dnl Process this file with autoconf to produce a configure script.
3 AC_PREREQ(2.13)
4 AC_INIT(src/main/main.c)
5 AC_CONFIG_AUX_DIR(config)
7 PACKAGE=elinks
8 VERSION=0.11.GIT
9 AC_SUBST(PACKAGE)
10 AC_SUBST(VERSION)
11 AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Package version])
12 AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Package version])
13 AC_CONFIG_HEADERS(config.h)
15 AC_CHECK_PROG(ACLOCAL,[aclocal],[aclocal],[config/missing aclocal])
16 AC_CHECK_PROG(AUTOCONF,[autoconf],[autoconf],[config/missing autoconf])
17 AC_CHECK_PROG(AUTOHEADER,[autoheader],[autoheader],[config/missing autoheader])
19 AC_PROG_MAKE_SET
21 MAKE=
23 for make in gnumake gmake make false; do
24         if test "x$MAKE" = x; then
25                 AC_PATH_PROGS(MAKE, "$make")
26         fi
27 done
29 # Cleanup if we are configuring with a previous build in the tree
30 if test -e Makefile.config; then
31         "$MAKE" -C "$builddir" cleanall  >/dev/null 2>/dev/null
34 builddir="`pwd`"
36 dnl ===================================================================
37 dnl Load feature configuration file and start logging features.
38 dnl ===================================================================
40 features="features.conf"
41 AC_CHECK_FILE("$srcdir/$features", [ . $srcdir/$features ])
42 AC_CHECK_FILE("$builddir/$features", [ . $builddir/$features ])
43 echo "Feature summary:" > features.log
45 dnl ===================================================================
46 dnl Checks for programs.
47 dnl ===================================================================
49 AC_PROG_CC
50 AC_PROG_AWK
51 AC_PATH_PROGS(AWK, "$AWK")
52 AC_PROG_RANLIB
53 AC_PROG_INSTALL
55 AC_PATH_PROGS(CG_COMMIT_ID, "cg-commit-id")
57 AC_PATH_PROGS(SPARSE, "sparse")
58 AC_SUBST(SPARSE)
60 CONFIG_ASCIIDOC="no"
61 CONFIG_POD2HTML="no"
62 CONFIG_XMLTO="no"
63 CONFIG_JW="no"
65 if test "x$CONFIG_DOC" != xno; then
66         AC_PATH_PROGS(ASCIIDOC, "asciidoc")
67         if test "x$ASCIIDOC" != "x"; then
68                 EL_CONFIG(CONFIG_ASCIIDOC, [AsciiDoc])
69                 EL_CONFIG(MANUAL_ASCIIDOC, [HTML (one file)])
70                 EL_CONFIG(MAN_ASCIIDOC, [HTML])
71         fi
73         AC_PATH_PROGS(XMLTO, "xmlto")
74         if test "x$XMLTO" != "x"; then
75                 EL_CONFIG(CONFIG_XMLTO, [XmlTo])
76                 EL_CONFIG(MANUAL_XMLTO, [HTML (multiple files)])
77                 EL_CONFIG(MAN_XMLTO, [man (groff)])
78         fi
80         AC_PATH_PROGS(JW, "jw")
81         if test "x$JW" != "x"; then
82                 EL_CONFIG(CONFIG_JW, [JadeWrapper])
83                 EL_CONFIG(MANUAL_JW, [PDF])
84         fi
86         AC_PATH_PROGS(POD2HTML, "pod2html")
87         if test "x$POD2HTML" != "x"; then
88                 EL_CONFIG(CONFIG_POD2HTML, [Pod2HTML])
89         fi
92 AC_SUBST(CONFIG_ASCIIDOC)
93 AC_SUBST(CONFIG_POD2HTML)
94 AC_SUBST(CONFIG_XMLTO)
95 AC_SUBST(CONFIG_JW)
97 EL_CONFIG_DEPENDS(CONFIG_DOC, [CONFIG_ASCIIDOC CONFIG_XMLTO CONFIG_JW CONFIG_POD2HTML], [Documentation])
99 if test "$CONFIG_ASCIIDOC" = yes &&
100    test "$CONFIG_XMLTO" = yes &&
101    test "$CONFIG_JW" = yes; then
102         EL_CONFIG_DEPENDS(CONFIG_MANUAL, [MANUAL_ASCIIDOC MANUAL_XMLTO MANUAL_JW], [Manual Formats])
105 if test "$CONFIG_ASCIIDOC" = yes &&
106    test "$CONFIG_XMLTO" = yes; then
107         EL_CONFIG_DEPENDS(CONFIG_MANUAL, [MAN_ASCIIDOC MAN_XMLTO], [Man Page Formats])
110 AC_SUBST(CONFIG_ASCIIDOC)
111 AC_SUBST(CONFIG_POD2HTML)
112 AC_SUBST(CONFIG_XMLTO)
113 AC_SUBST(CONFIG_JW)
115 dnl gcc specific options (to be continued at the bottom of configure)
116 if test "x$ac_cv_prog_gcc" = "xyes"; then
117   dnl We want to see all warnings and live with none.
118   dnl We can't set up -Werror here as there may be some warnings in test
119   dnl suite of configure, and we don't want to fail them.
120   CFLAGS="$CFLAGS -Wall"
123 dnl ===================================================================
124 dnl Checks for special OSes.
125 dnl ===================================================================
127 dnl EL_CHECK_COMPILER_MACRO(define, name, flagname)
128 AC_DEFUN([EL_CHECK_COMPILER_MACROS],
130         AC_MSG_CHECKING([for $2])
132         for flag in $3; do
133                 AC_TRY_COMPILE(, [#ifndef $flag
134 kill me!
135 #endif ], $1=yes, $1=no)
136                 if test "[$]$1" = yes; then
137                         EL_CONFIG([$1], [$2])
138                         break
139                 fi
140         done
142         AC_MSG_RESULT([$]$1)
145 EL_CHECK_COMPILER_MACROS(CONFIG_BEOS, [BEOS], [__BEOS__])
146 AC_SUBST(CONFIG_BEOS)
148 EL_CHECK_COMPILER_MACROS(CONFIG_RISCOS, [RISCOS], [__riscos__])
149 AC_SUBST(CONFIG_RISCOS)
151 EL_CHECK_COMPILER_MACROS(CONFIG_WIN32, [WIN32], [_WIN32 __WIN32__])
152 AC_SUBST(CONFIG_WIN32)
154 EL_CHECK_COMPILER_MACROS(CONFIG_OS2, [EMX], [__EMX__])
155 AC_SUBST(CONFIG_OS2)
156 test "$CONFIG_OS2" = yes && LDFLAGS=`echo "$LDFLAGS" | sed "s/-Zexe//g"`
158 AC_MSG_CHECKING([for UNIX])
159 dnl FIXME: some depend kind of mechanism
160 if test "$CONFIG_BEOS" = no && \
161    test "$CONFIG_RISCOS" = no && \
162    test "$CONFIG_WIN32" = no && \
163    test "$CONFIG_OS2" = no; then
164         EL_CONFIG(CONFIG_UNIX, [UNIX])
165 else
166         CONFIG_UNIX=no
168 AC_MSG_RESULT($CONFIG_UNIX)
169 AC_SUBST(CONFIG_UNIX)
171 dnl ===================================================================
172 dnl Checks for header files.
173 dnl ===================================================================
175 AC_HEADER_DIRENT
176 AC_HEADER_STDC
177 AC_HEADER_SYS_WAIT
178 AC_HEADER_TIME
180 AC_CHECK_HEADERS(fcntl.h limits.h time.h unistd.h)
181 AC_CHECK_HEADERS(sigaction.h)
182 AC_CHECK_HEADERS(arpa/inet.h)
183 AC_CHECK_HEADERS(netinet/in_systm.h netinet/in_system.h netinet/ip.h)
184 AC_CHECK_HEADERS(net/if.h netdb.h netinet/in.h netinet/in6_var.h)
185 AC_CHECK_HEADERS(ifaddrs.h)
186 AC_CHECK_HEADERS(sys/cygwin.h io.h)
187 AC_CHECK_HEADERS(sys/fmutex.h)
188 AC_CHECK_HEADERS(sys/ioctl.h sys/sockio.h)
189 AC_CHECK_HEADERS(sys/resource.h)
190 AC_CHECK_HEADERS(sys/select.h)
191 AC_CHECK_HEADERS(sys/signal.h)
192 AC_CHECK_HEADERS(sys/socket.h)
193 AC_CHECK_HEADERS(sys/time.h)
194 AC_CHECK_HEADERS(sys/utsname.h)
195 AC_CHECK_HEADERS(stdint.h inttypes.h)
196 AC_CHECK_HEADERS(locale.h pwd.h)
197 AC_CHECK_HEADERS(termios.h)
200 AC_CHECK_HEADERS(sys/un.h,
201         [CONFIG_INTERLINK=yes
202          EL_CONFIG([CONFIG_INTERLINK], [interlinking])],
203         [CONFIG_INTERLINK=no])
204 AC_SUBST(CONFIG_INTERLINK)
206 dnl ===================================================================
207 dnl Checks for typedefs, structures, and compiler characteristics.
208 dnl ===================================================================
210 AC_STRUCT_TM
211 AC_C_CONST
212 AC_C_INLINE
213 EL_CHECK_CODE(typeof, HAVE_TYPEOF, [], [int a; typeof(a) b;])
215 AC_SYS_LARGEFILE
216 AC_TYPE_SIZE_T
217 AC_TYPE_OFF_T
218 EL_CHECK_TYPE(ssize_t, int)
219 EL_CHECK_SYS_TYPE(long long, HAVE_LONG_LONG, [])
220 EL_CHECK_INT_TYPE(int32_t, HAVE_INT32_T)
221 EL_CHECK_INT_TYPE(uint32_t, HAVE_UINT32_T)
222 EL_CHECK_INT_TYPE(uint16_t, HAVE_UINT16_T)
224 AC_CHECK_SIZEOF(char, 1)
225 AC_CHECK_SIZEOF(short, 2)
226 AC_CHECK_SIZEOF(int, 4)
227 AC_CHECK_SIZEOF(long, 4)
228 test "x$HAVE_LONG_LONG" = xyes && AC_CHECK_SIZEOF(long long, 8)
230 dnl Check for variadic macros
231 EL_CHECK_CODE([variadic macros], HAVE_VARIADIC_MACROS,
232                 [#include <stdio.h>
233                  #define a(b,c...) printf(b,##c)],
234                 [a("foo");a("%s","bar");a("%s%s","baz","quux");])
236 dnl Check for -rdynamic
237 dnl FIXME: This check doesn't work. Something to do with the compiler
238 dnl happily ignoring it and stderr not being checked for error messages.
239 AC_MSG_CHECKING([for -rdynamic])
240 LDFLAGS_X="$LDFLAGS"
241 LDFLAGS="$LDFLAGS -rdynamic"
242 AC_TRY_LINK([], [], have_rdynamic=yes, have_rdynamic=no)
243 test "$have_rdynamic" = no && LDFLAGS="$LDFLAGS_X"
244 AC_MSG_RESULT($have_rdynamic)
246 dnl ===================================================================
247 dnl Check for POSIX <regex.h>
248 dnl ===================================================================
250 EL_CHECK_SYS_TYPE(regex_t, HAVE_REGEX_H, [#include <regex.h>])
252 dnl ===================================================================
253 dnl Checks for library functions.
254 dnl ===================================================================
256 AC_PROG_GCC_TRADITIONAL
257 AC_FUNC_MEMCMP
258 AC_FUNC_MMAP
259 AC_FUNC_STRFTIME
260 AC_CHECK_FUNCS(cfmakeraw gethostbyaddr herror strerror)
261 AC_CHECK_FUNCS(popen uname access chmod alarm timegm mremap)
262 AC_CHECK_FUNCS(strcasecmp strncasecmp strcasestr strstr strchr strrchr)
263 AC_CHECK_FUNCS(memmove bcopy stpcpy strdup index isdigit mempcpy memrchr)
264 AC_CHECK_FUNCS(snprintf vsnprintf asprintf vasprintf)
265 AC_CHECK_FUNCS(getifaddrs getpwnam inet_pton inet_ntop)
266 AC_CHECK_FUNCS(fflush fsync fseeko ftello sigaction)
267 AC_CHECK_FUNCS(gettimeofday clock_gettime)
269 AC_HAVE_FUNCS(cygwin_conv_to_full_win32_path)
271 AC_CHECK_FUNCS(setenv putenv, HAVE_SETENV_OR_PUTENV=yes)
272 AC_CHECK_FUNCS(getuid, HAVE_GETUID=yes)
273 AC_CHECK_FUNCS(geteuid, HAVE_GETEUID=yes)
275 dnl These aren't probably needed now, as they are commented in links.h.
276 dnl I've no idea about their historical background, but I keep them here
277 dnl just in the case they will help later. --pasky
278 AC_CHECK_FUNCS(getpid, HAVE_GETPID=yes)
279 AC_CHECK_FUNCS(setpgid getpgid setpgrp getpgrp)
280 AC_CHECK_FUNCS(raise, HAVE_RAISE=yes)
281 AC_CHECK_FUNCS(kill, HAVE_KILL=yes)
283 if test x"$HAVE_RAISE" = x; then
284         if test x"$HAVE_KILL" = x || test x"$HAVE_GETPID" = x; then
285                 AC_ERROR([Unable to emulate raise()])
286         fi
289 AC_CACHE_CHECK([for __va_copy],el_cv_HAVE_VA_COPY,[
290 AC_TRY_LINK([#include <stdarg.h>
291 va_list ap1,ap2;], [__va_copy(ap1,ap2);],
292 el_cv_HAVE_VA_COPY=yes,el_cv_HAVE_VA_COPY=no)])
293 if test x"$el_cv_HAVE_VA_COPY" = x"yes"; then
294         EL_DEFINE(HAVE_VA_COPY, __va_copy)
297 AC_CACHE_CHECK([for sysconf(_SC_PAGE_SIZE)],el_cv_HAVE_SC_PAGE_SIZE,[
298 AC_TRY_LINK([#include <unistd.h>
299 ], [int page_size = sysconf(_SC_PAGE_SIZE);],
300 el_cv_HAVE_SC_PAGE_SIZE=yes,el_cv_HAVE_SC_PAGE_SIZE=no)])
301 if test x"$el_cv_HAVE_SC_PAGE_SIZE" = x"yes"; then
302         EL_DEFINE(HAVE_SC_PAGE_SIZE, _SC_PAGE_SIZE)
305 AC_CACHE_CHECK([for C99 vsnprintf],el_cv_HAVE_C99_VSNPRINTF,[
306 AC_TRY_RUN([
307 #include <stdio.h>
308 #include <stdarg.h>
309 #include <stdlib.h>
310 #include <string.h>
312 char buf[8];
314 int bar(char *buf, const char *format, va_list ap)
316        return vsnprintf(buf, 0, format, ap);
319 void foo(const char *format, ...) {
320        va_list ap;
321        int len;
323        va_start(ap, format);
324        len = bar(buf, format, ap);
325        va_end(ap);
326        if ((len != 6) && (len != 7)) exit(1); /* \n -> \r\n */
328        va_start(ap, format);
329        len = bar(buf, format, ap);
330        va_end(ap);
331        if ((len != 6) && (len != 7)) exit(1);
333        if (snprintf(buf, 3, "hello") != 5 || strcmp(buf, "he") != 0) exit(1);
335        exit(0);
337 main() { foo("hello\n"); }
339 el_cv_HAVE_C99_VSNPRINTF=yes,el_cv_HAVE_C99_VSNPRINTF=no,el_cv_HAVE_C99_VSNPRINTF=cross)])
340 if test x"$el_cv_HAVE_C99_VSNPRINTF" = x"yes"; then
341         EL_DEFINE(HAVE_C99_VSNPRINTF, [C99 compliant vsnprintf()])
344 AC_CHECK_LIB(dl, dlopen) # OpenSSL and Lua frequently needs it
346 dnl ===================================================================
347 dnl Checks for libraries.
348 dnl ===================================================================
350 dnl Replace `main' with a function in -lsocket:
351 AC_CHECK_FUNC(socket, cf_result=yes, cf_result=no)
352 if test "$cf_result" = no; then
353         AC_CHECK_LIB(socket, socket)
356 AC_CHECK_FUNC(setsockopt, cf_result=yes, cf_result=no)
357 if test "$cf_result" = no; then
358         AC_CHECK_LIB(socket, setsockopt)
361 AC_CHECK_FUNC(gethostbyname, cf_result=yes, cf_result=no)
362 if test "$cf_result" = no; then
363         AC_CHECK_LIB(socket, gethostbyname, cf_result=yes, cf_result=no)
364         if test "$cf_result" = no; then
365                 AC_CHECK_LIB(nsl, gethostbyname)
366         else
367                 test -z "`echo $LIBS | grep -- -lsocket`" && LIBS="$LIBS -lsocket"
368         fi
371 dnl ===================================================================
372 dnl Checks for packaging specific options.
373 dnl ===================================================================
375 AC_ARG_WITH(xterm, [  --with-xterm            how to invoke the X terminal emulator],
376             [ if test "$withval" != no && test "$withval" != yes; then
377                 AC_DEFINE_UNQUOTED(XTERM, "$withval", [How to invoke XTerm])
378               fi ])
380 dnl ===================================================================
381 dnl Checks for a libraries, optional even if installed.
382 dnl ===================================================================
384 dnl EL_CHECK_OPTIONAL_LIBRARY(define, name, header, lib, function)
385 AC_DEFUN([EL_CHECK_OPTIONAL_LIBRARY],
387         AC_MSG_CHECKING([for $2 support])
389         if test "[$]$1" != no; then
390                 AC_MSG_RESULT(yes)
391                 EL_SAVE_FLAGS
392                 if test -n "$withval" && test -d "$withval"; then
393                         CFLAGS="$CFLAGS -I$withval/include";
394                         CPPFLAGS="$CPPFLAGS -I$withval/include";
395                         LDFLAGS="$LDFLAGS -L$withval/lib";
396                 fi
398                 AC_CHECK_HEADERS([$3], [$1=yes], [$1=no; break;])
399                 if test "[$]$1" = yes; then
400                         AC_CHECK_LIB([$4], [$5], [$1=yes], [$1=no])
401                 fi
403                 if test "[$]$1" = yes; then
404                         EL_CONFIG([$1], [$2])
405                         LIBS="$LIBS -l$4"
406                 else
407                         if test -n "[$]WITHVAL_$1" &&
408                            test "[$]WITHVAL_$1" != xno; then
409                                 AC_MSG_ERROR([$2 not found])
410                         fi
411                         EL_RESTORE_FLAGS
412                 fi
413         else
414                 AC_MSG_RESULT(disabled)
415         fi
418 dnl EL_CONFIG_OPTIONAL_LIBRARY(define, name, header, lib, function, confhelp)
419 AC_DEFUN([EL_CONFIG_OPTIONAL_LIBRARY],
421         $1=yes
422         WITHVAL_$1=
424         AC_ARG_WITH([$2], [$6], [WITHVAL_$1="[$]withval"])
425         if test "x[$]WITHVAL_$1" = xno; then $1=no; fi
427         EL_CHECK_OPTIONAL_LIBRARY([$1], [$2], [$3], [$4], [$5])
429         EL_LOG_CONFIG([$1], [$2], [])
432 EL_CONFIG_OPTIONAL_LIBRARY(CONFIG_GPM, gpm, gpm.h, gpm, Gpm_Open,
433         [  --without-gpm           disable gpm (mouse) support])
435 EL_CONFIG_OPTIONAL_LIBRARY(CONFIG_GZIP, zlib, zlib.h, z, gzdopen,
436         [  --without-zlib          disable zlib support])
438 EL_CONFIG_OPTIONAL_LIBRARY(CONFIG_BZIP2, bzlib, bzlib.h, bz2, BZ2_bzReadOpen,
439         [  --without-bzlib         disable bzlib support])
441 EL_CONFIG_OPTIONAL_LIBRARY(CONFIG_IDN, idn, idna.h, idn, stringprep_check_version,
442         [  --without-idn           disable international domain names support])
444 dnl ===================================================================
445 dnl Bookmark and XBEL support
446 dnl ===================================================================
448 EL_SAVE_FLAGS
450 EL_ARG_ENABLE(CONFIG_BOOKMARKS, bookmarks, [Bookmarks],
451               [  --disable-bookmarks     disable bookmark support])
453 # Check whether --enable-xbel or --disable-xbel was given.
454 if test "x${enable_xbel}" != xno; then
455         AC_CHECK_HEADERS(expat.h, HAVE_LIBEXPAT=yes, HAVE_LIBEXPAT=no)
457         if test "$HAVE_LIBEXPAT" = yes; then
458                 AC_CHECK_LIB(expat, XML_ParserCreate, HAVE_LIBEXPAT=yes, HAVE_LIBEXPAT=no)
459                 if test "$HAVE_LIBEXPAT" = yes; then
460                         LIBS="$LIBS -lexpat"
461                 fi
462         fi
466 EL_ARG_DEPEND(CONFIG_XBEL_BOOKMARKS, xbel, [CONFIG_BOOKMARKS:yes HAVE_LIBEXPAT:yes],
467               [XBEL bookmarks],
468               [  --disable-xbel          disable XBEL bookmark support (requires expat)])
470 if test "$CONFIG_XBEL_BOOKMARKS" != yes; then
471         EL_RESTORE_FLAGS
474 dnl ===================================================================
475 dnl Checks for BSD sysmouse
476 dnl ===================================================================
478 HAVE_SYSMOUSE_HEADER="no"
480 # Either of these header files provides the (same) sysmouse interface
481 AC_CHECK_HEADERS(sys/consio.h machine/console.h, [HAVE_SYSMOUSE_HEADER="yes"])
483 dnl ===================================================================
484 dnl Checks for OS/2
485 dnl ===================================================================
487 if test "$CONFIG_OS2" = yes; then
488         EL_CONFIG_OS2
491 dnl ===================================================================
492 dnl Checks for Win32
493 dnl ===================================================================
495 if test "$CONFIG_WIN32" = yes; then
496         EL_CONFIG_WIN32
499 dnl ===================================================================
500 dnl Check for Guile, optional even if installed.
501 dnl ===================================================================
503 enable_guile="no";
505 AC_ARG_WITH(guile, [  --with-guile            enable Guile support],
506             [ if test "x$withval" != xno; then enable_guile=yes; fi ])
508 # The following is probably bad, ugly and so on. Stolen from Guile's (1.4)
509 # GUILE_FLAGS but I really don't want to require people to have Guile in order
510 # to compile CVS. Also, the macro seems to be really stupid regarding searching
511 # for Guile in $PATH etc. --pasky
513 AC_MSG_CHECKING([for Guile])
515 if test "$enable_guile" = "yes"; then
516         AC_MSG_RESULT(yes);
517         ## Based on the GUILE_FLAGS macro.
519         if test -d "$withval"; then
520                 GUILE_PATH="$withval:$PATH"
521         else
522                 GUILE_PATH="$PATH"
523         fi
525         AC_PATH_PROG(GUILE_CONFIG, guile-config, no, $GUILE_PATH)
527         ## First, let's just see if we can find Guile at all.
528         if test "$GUILE_CONFIG" != no; then
529                 cf_result="yes";
531                 GUILE_LIBS="`guile-config link`"
532                 GUILE_CFLAGS="`guile-config compile`"
533                 LIBS="$GUILE_LIBS $LIBS"
534                 CPPFLAGS="$CPPFLAGS $GUILE_CFLAGS"
535                 EL_CONFIG(CONFIG_GUILE, [Guile])
536                 AC_SUBST(GUILE_CFLAGS)
537                 cat <<EOF
538 ***********************************************************************
539 The Guile support is incomplete and not so well integrated to ELinks
540 yet. That means, ie., that you have no Guile console and there might
541 not be all the necessary hooks. Also, the Guile interface is not too
542 well tested (success stories heartily welcomed!).  See
543 src/scripting/guile/README for further details and hints.
544 ***********************************************************************
546         else
547                 if test -n "$withval" && test "x$withval" != xno; then
548                         AC_MSG_ERROR([Guile not found])
549                 else
550                         AC_MSG_WARN([Guile support disabled])
551                 fi
552         fi
553 else
554         AC_MSG_RESULT(no);
557 dnl ===================================================================
558 dnl Check for Perl
559 dnl ===================================================================
560 enable_perl="no";
562 AC_ARG_WITH(perl, [  --with-perl             enable Perl support],
563             [
564 if test "$withval" = yes; then
565         # FIXME: If withval is a valid directory append it to PATH
566         # so that you can specify one of several perl installations.
567         withval="";
568         enable_perl=yes;
570             ])
572 AC_MSG_CHECKING([for Perl])
574 cf_result=no
576 EL_SAVE_FLAGS
578 if test "$enable_perl" = "yes"; then
579         PERL_LIBS="`perl -MExtUtils::Embed -e ldopts`"
580         PERL_CFLAGS="`perl -MExtUtils::Embed -e ccopts`"
581         LIBS="$PERL_LIBS $LIBS"
582         CFLAGS="$PERL_CFLAGS $CFLAGS"
583         CPPFLAGS="$CPPFLAGS $PERL_CFLAGS"
584         AC_TRY_LINK([
585 #include <EXTERN.h>
586 #include <perl.h>
587 #include <perlapi.h>
589                     [PerlInterpreter *my_perl = perl_alloc();],
590                     cf_result=yes, cf_result=no)
593 if test "$cf_result" != "yes"; then
594         EL_RESTORE_FLAGS
595 else
596         EL_CONFIG(CONFIG_PERL, [Perl])
598         CFLAGS="$CFLAGS_X"
599         AC_SUBST(PERL_LIBS)
600         AC_SUBST(PERL_CFLAGS)
603 if test "$cf_result"; then AC_MSG_RESULT($cf_result); fi
604 dnl ===================================================================
605 dnl Check for Python
606 dnl ===================================================================
607 enable_python="no";
609 AC_ARG_WITH(python, [  --with-python           enable Python support],
610             [
611 if test "$withval" = yes; then
612         # FIXME: If withval is a valid directory append it to PATH
613         # so that you can specify one of several Python installations.
614         withval="";
615         enable_python=yes;
616         cat <<EOF
617 ***********************************************************************
618 The Python support is incomplete and not so well integrated to ELinks
619 yet. That means, ie., that you have no Python console and there might
620 not be all the necessary hooks. Also, the Python interface is not too
621 well tested (success stories heartily welcomed!).
622 ***********************************************************************
625             ])
627 AC_MSG_CHECKING([for Python])
629 cf_result=no
631 EL_SAVE_FLAGS
633 if test "$enable_python" = "yes"; then
634         PYTHON_LIBS="-lpython"
635         PYTHON_CFLAGS="-I`python -c 'from distutils import sysconfig; print sysconfig.get_python_inc()' 2> /dev/null`"
636         LIBS="$PYTHON_LIBS $LIBS"
637         CFLAGS="$PYTHON_CFLAGS $CFLAGS"
638         CPPFLAGS="$CPPFLAGS $PYTHON_CFLAGS"
639         AC_TRY_LINK([
640 #include <Python.h>
642                     [Py_Initialize();],
643                     cf_result=yes, cf_result=no)
646 if test "$cf_result" != "yes"; then
647         EL_RESTORE_FLAGS
648 else
649         EL_CONFIG(CONFIG_PYTHON, [Python])
651         CFLAGS="$CFLAGS_X"
652         AC_SUBST(PYTHON_LIBS)
653         AC_SUBST(PYTHON_CFLAGS)
656 if test "$cf_result"; then AC_MSG_RESULT($cf_result); fi
659 dnl ===================================================================
660 dnl Check for Lua, optional even if installed.
661 dnl ===================================================================
663 dnl Do this the long way, as FreeBSD reportedly needs -L<dir> for
664 dnl anything other than /usr/lib, and Lua is very often in /usr/local/lib.
666 AC_ARG_WITH(lua, [  --without-lua           disable Lua support],
667             [if test "$withval" = no; then disable_lua=yes; fi])
668 AC_MSG_CHECKING([for Lua])
670 EL_SAVE_FLAGS
671 cf_result=no
673 if test -z "$disable_lua"; then
674         if test ! -d "$withval"; then
675                 withval="";
676         fi
677         for luadir in "$withval" "" /usr /usr/local; do
678                 for suffix in "" 50 51; do
679                         if test "$cf_result" = no; then
680                                 LUA_LIBS="-llua$suffix -llualib$suffix -lm"
682                                 if test ! -z "$luadir"; then
683                                         LUA_LIBS="-L$luadir/lib $LUA_LIBS"
684                                         LUA_CFLAGS="-I$luadir/include -I$luadir/include/lua$suffix"
685                                 fi
687                                 LIBS="$LUA_LIBS $LIBS_X"
688                                 CFLAGS="$CFLAGS_X $LUA_CFLAGS"
689                                 CPPFLAGS="$CPPFLAGS_X $LUA_CFLAGS"
691                                 # Check that it is a compatible Lua version
692                                 AC_TRY_LINK([   #include <lua.h>
693                                                 #include <lualib.h>],
694                                             [   lua_State *L = lua_open();
695                                                 lua_baselibopen(L);
696                                                 lua_mathlibopen(L);
697                                                 lua_strlibopen(L);
698                                                 lua_tablibopen(L);
699                                                 lua_pushboolean(L, 1);
700                                                 lua_close(L);],
701                                             cf_result=yes, cf_result=no)
702                         fi
703                 done
704         done
707 AC_MSG_RESULT($cf_result)
709 if test "$cf_result" != yes; then
710         EL_RESTORE_FLAGS
711 else
712         EL_CONFIG(CONFIG_LUA, [Lua])
713         AC_CHECK_HEADERS(lauxlib.h)
715         CFLAGS="$CFLAGS_X"
716         AC_SUBST(LUA_LIBS)
717         AC_SUBST(LUA_CFLAGS)
721 dnl ===================================================================
722 dnl Check for Ruby, optional even if installed.
723 dnl ===================================================================
725 EL_CONFIG_RUBY
727 dnl ===================================================================
728 dnl Check for SEE, optional even if installed.
729 dnl ===================================================================
731 EL_CONFIG_SEE
733 dnl ===================================================================
734 dnl Setup global scripting
735 dnl ===================================================================
737 EL_CONFIG_DEPENDS(CONFIG_SCRIPTING, [CONFIG_GUILE CONFIG_LUA CONFIG_PERL CONFIG_PYTHON CONFIG_RUBY CONFIG_SEE], [Scripting])
738 AC_SUBST(CONFIG_GUILE)
739 AC_SUBST(CONFIG_LUA)
740 AC_SUBST(CONFIG_PERL)
741 AC_SUBST(CONFIG_PYTHON)
742 AC_SUBST(CONFIG_RUBY)
743 AC_SUBST(CONFIG_SEE)
744 AC_SUBST(CONFIG_SCRIPTING)
747 dnl ===================================================================
748 dnl Check for SpiderMonkey, optional even if installed.
749 dnl ===================================================================
751 AC_ARG_WITH(spidermonkey, [  --without-spidermonkey  disable SpiderMonkey Mozilla JavaScript engine support],
752             [if test "$withval" = no; then disable_spidermonkey=yes; fi])
753 AC_MSG_CHECKING([for SpiderMonkey])
755 EL_SAVE_FLAGS
756 cf_result=no
758 if test -z "$disable_spidermonkey"; then
759         if test ! -d "$withval"; then
760                 withval="";
761         fi
762         for spidermonkeydir in "$withval" "" /usr /usr/local /opt/spidermonkey /opt/js; do
763                 for spidermonkeyinclude in "/include" "/include/js" "/include/smjs"; do
764                         for spidermonkeylib in js smjs; do
765                                 if test "$cf_result" = no; then
766                                         SPIDERMONKEY_LIBS="-l$spidermonkeylib"
768                                         if test ! -z "$spidermonkeydir"; then
769                                                 SPIDERMONKEY_LIBS="-L$spidermonkeydir/lib $SPIDERMONKEY_LIBS"
770                                                 SPIDERMONKEY_CFLAGS="-I$spidermonkeydir$spidermonkeyinclude"
771                                         fi
773                                         LIBS="$SPIDERMONKEY_LIBS $LIBS_X"
774                                         CFLAGS="$CFLAGS_X $SPIDERMONKEY_CFLAGS"
775                                         CPPFLAGS="$CPPFLAGS_X $SPIDERMONKEY_CFLAGS"
777                                         AC_TRY_LINK([#define XP_UNIX
778                                                      #include <jsapi.h>],
779                                                      [JS_GetImplementationVersion()],
780                                                      cf_result=yes, cf_result=no)
781                                 fi
782                         done
783                 done
784         done
787 AC_MSG_RESULT($cf_result)
789 if test "$cf_result" != yes; then
790         EL_RESTORE_FLAGS
791 else
792         EL_CONFIG(CONFIG_SPIDERMONKEY, [SpiderMonkey])
794         CFLAGS="$CFLAGS_X"
795         AC_SUBST(SPIDERMONKEY_LIBS)
796         AC_SUBST(SPIDERMONKEY_CFLAGS)
799 AC_SUBST(CONFIG_SPIDERMONKEY)
801 EL_CONFIG_DEPENDS(CONFIG_ECMASCRIPT, [CONFIG_SPIDERMONKEY], [ECMAScript (JavaScript)])
804 dnl ===================================================================
805 dnl Check for SSL support.
806 dnl ===================================================================
808 dnl We by default use OpenSSL, and we always prefer it. However, when GNUTLS
809 dnl is enabled, we won't try to use OpenSSL anymore.
811 dnl For wiping SSL hooks..
812 #ifdef CONFIG_SSL
814 disable_openssl=""
815 disable_gnutls=""
816 enable_gnutls=""
818 AC_ARG_WITH(gnutls, [  --without-gnutls        disable GNUTLS SSL support],
819             [if test "$with_gnutls" = no;  then disable_gnutls=yes; fi])
820 AC_ARG_WITH(gnutls, [  --with-gnutls[=DIR]     enable GNUTLS SSL support],
821             [if test "$with_gnutls" != no;  then enable_gnutls=yes; fi])
822 gnutls_withval="$withval"
824 if test "$enable_gnutls" = yes; then
825         disable_openssl=yes;
828 AC_ARG_WITH(openssl, [  --without-openssl       disable OpenSSL support],
829             [if test "$with_openssl" = no;  then disable_openssl=yes; fi])
830 AC_ARG_WITH(openssl, [  --with-openssl[=DIR]    enable OpenSSL support (default)])
831 openssl_withval="$withval"
833 dnl ---- OpenSSL
835 AC_MSG_CHECKING([for OpenSSL])
837 EL_SAVE_FLAGS
838 cf_result="no"
840 if test "$disable_openssl" = yes; then
841         cf_result="not used"
842 else
843         for ssldir in "$openssl_withval" "" /usr /usr/local/openssl \
844                          /usr/lib/openssl /usr/local/ssl \
845                          /usr/local/www /usr/lib/ssl /usr/local \
846                          /usr/pkg /opt /opt/openssl; do
847                 if test "$cf_result" = no; then
848                         if test -d "$ssldir"; then
849                                 OPENSSL_CFLAGS="-I$ssldir/include"
850                                 LIBS="-L$ssldir/lib -lssl -lcrypto $LIBS_X"
851                                 CFLAGS="$CFLAGS_X $OPENSSL_CFLAGS"
852                                 CPPFLAGS="$CPPFLAGS_X $OPENSSL_CFLAGS"
853 #                               # FIXME: This created serious portability problems. --pasky
854 #                               if test "$CC" == "gcc"; then
855 #                                       # I'm not sure about compatibility here. --pasky
856 #                                       LIBS="$LIBS -R$ssldir/lib"
857 #                               fi
858                         else
859                                 LIBS="-lssl -lcrypto $LIBS_X"
860                         fi
861                         AC_TRY_LINK([#include <openssl/ssl.h>],
862                                     [OpenSSL_add_all_algorithms()],
863                                     cf_result=yes, cf_result=no)
864                         if test "$cf_result" != yes; then
865                                 AC_TRY_LINK([#include <openssl/ssl.h>],
866                                             [SSLeay_add_ssl_algorithms()],
867                                             cf_result=yes, cf_result=no)
868                         fi
869                 fi
870         done
872         if test "$cf_result" != yes; then
873                 if test -n "$openssl_withval" && test "x$openssl_withval" != xno; then
874                         AC_MSG_ERROR([OpenSSL not found])
875                 fi
876                 EL_RESTORE_FLAGS
877         else
878                 EL_CONFIG(CONFIG_OPENSSL, [OpenSSL])
880                 CFLAGS="$CFLAGS_X"
881                 AC_SUBST(OPENSSL_CFLAGS)
882         fi
885 AC_MSG_RESULT($cf_result)
887 dnl ---- GNU TLS
888 dnl We can't have AC_MSG_CHECKING here, because AC_PATH_PROG prints its own and
889 dnl it looks ugly then.
891 if test "$cf_result" = yes; then
892         cf_result="not used"
894 else
895         EL_SAVE_FLAGS
896         cf_result="no"
898         if test -z "$disable_gnutls"; then
899                 # Sure, we maybe _could_ use their macro, but how to ensure
900                 # that the ./configure script won't fail if the macro won't be
901                 # found..? :( --pasky
903                 GNUTLS_PATH="$PATH:/usr/local/gnutls:/opt:/opt/gnutls"
905                 if test -d "$gnutls_withval"; then
906                         GNUTLS_PATH="$gnutls_withval:$GNUTLS_PATH"
907                 fi
909                 AC_PATH_PROG(LIBGNUTLS_CONFIG, libgnutls-config, no, $GNUTLS_PATH)
911                 if test "$LIBGNUTLS_CONFIG" = "no" ; then
912                         cf_result=no
913                 else
914                         GNUTLS_CFLAGS=`$LIBGNUTLS_CONFIG --cflags`
915                         GNUTLS_LIBS=`$LIBGNUTLS_CONFIG --libs`
917                         LIBS="$GNUTLS_LIBS $LIBS_X"
918                         CFLAGS="$CFLAGS_X $GNUTLS_CFLAGS"
919                         CPPFLAGS="$CPPFLAGS_X $GNUTLS_CFLAGS"
921                         # Verify if it's really usable
922                         AC_TRY_LINK([#include <gnutls/gnutls.h>],
923                                     [gnutls_check_version(NULL)],
924                                     cf_result=yes, cf_result=no)
925                 fi
927                 if test "$cf_result" = yes; then
928                         EL_CONFIG(CONFIG_GNUTLS, [GNUTLS])
930                         CFLAGS="$CFLAGS_X"
931                         AC_SUBST(GNUTLS_CFLAGS)
933                         # Verify if the MD5 compatibility layer is usable.
934                         CONFIG_GNUTLS_OPENSSL_COMPAT=yes
935                         EL_CHECK_OPTIONAL_LIBRARY(CONFIG_GNUTLS_OPENSSL_COMPAT,
936                                                   [GNU TLS OpenSSL compatibility],
937                                                   gnutls/openssl.h, gnutls-openssl,
938                                                   MD5_Init)
939                 else
940                         if test -n "$gnutls_withval" && test "x$gnutls_withval" != xno; then
941                                 AC_MSG_ERROR([GNUTLS not found])
942                         fi
943                         EL_RESTORE_FLAGS
944                 fi
945         fi
948 AC_MSG_CHECKING([for GNU TLS])
949 AC_MSG_RESULT($cf_result)
951 dnl Final SSL setup
953 EL_CONFIG_DEPENDS(CONFIG_SSL, [CONFIG_OPENSSL CONFIG_GNUTLS], [SSL])
954 AC_SUBST(CONFIG_OPENSSL)
955 AC_SUBST(CONFIG_GNUTLS)
957 #endif
959 AC_MSG_CHECKING([whether to be or not to be])
960 AC_MSG_RESULT([needs to be determined experimentally])
962 dnl ===================================================================
963 dnl Check for IPv6 support and related functions.
964 dnl ===================================================================
966 EL_CHECK_NET_TYPE(struct sockaddr_storage, HAVE_SA_STORAGE, [])
967 EL_CHECK_NET_TYPE(struct sockaddr_in6, HAVE_SA_IN6, [#include <netinet/in.h>])
968 EL_CHECK_NET_TYPE(struct addrinfo, HAVE_ADDRINFO, [#include <netdb.h>])
970 AC_CHECK_FUNC(getaddrinfo, HAVE_GETADDRINFO=yes, HAVE_GETADDRINFO=no)
971 if test "$HAVE_GETADDRINFO" != yes; then
972         AC_CHECK_LIB(inet6, getaddrinfo, HAVE_GETADDRINFO=yes, HAVE_GETADDRINFO=no)
973         if test "$HAVE_GETADDRINFO" = yes; then
974                 LIBS="$LIBS -linet6"
975         fi
979 dnl ===================================================================
980 dnl Checking for X11 (window title restoring).
981 dnl ===================================================================
983 AC_PATH_X
984 if test x"$no_x" != xyes; then
985         if test -n "$x_includes"; then
986                 X_CFLAGS="-I$x_includes"
987                 CPPFLAGS="$CPPFLAGS -I$x_includes"
988         fi
989         if test -n "$x_libraries"; then
990                 LDFLAGS="$LDFLAGS -L$x_libraries"
991         fi
992         LIBS="-lX11 $LIBS"
993         EL_DEFINE(HAVE_X11, [X11 for restoring window titles])
994         AC_SUBST(X_CFLAGS)
998 dnl ===================================================================
999 dnl Backtraces displaying support.
1000 dnl ===================================================================
1002 AC_CHECK_HEADERS(execinfo.h, HAVE_EXECINFO=yes, HAVE_EXECINFO=no)
1003 # possible checks for other system-specific means go here
1006 dnl ===================================================================
1007 dnl SMB protocol support.
1008 dnl ===================================================================
1010 AC_CHECK_PROG(HAVE_SMBCLIENT, smbclient, yes, no)
1013 dnl ===================================================================
1014 dnl Gettext grey zone. Beware.
1015 dnl ===================================================================
1017 ALL_LINGUAS="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"
1019 AM_GNU_GETTEXT
1021 dnl AC_MSG_CHECKING([how many characters your English alphabet has])
1022 dnl # f33r d4 l33t... I hope it's portable. :)
1023 dnl cf_result=$((48#z - 48#a + 1));
1024 dnl AC_MSG_RESULT($cf_result)
1027 dnl ===================================================================
1028 dnl Compile-time features control
1029 dnl ===================================================================
1031 EL_ARG_ENABLE(CONFIG_COOKIES, cookies, [Cookies],
1032               [  --disable-cookies       disable cookie support])
1034 EL_ARG_ENABLE(CONFIG_FORMHIST, formhist, [Form history],
1035               [  --disable-formhist      disable form history support])
1037 EL_ARG_ENABLE(CONFIG_GLOBHIST, globhist, [Global history],
1038               [  --disable-globhist      disable global history support])
1041 EL_ARG_ENABLE(CONFIG_MAILCAP, mailcap, [Mailcap],
1042               [  --disable-mailcap       disable mailcap support])
1044 EL_ARG_ENABLE(CONFIG_MIMETYPES, mimetypes, [Mimetypes files],
1045               [  --disable-mimetypes     disable mimetypes files support])
1048 EL_ARG_DEPEND(CONFIG_IPV6, ipv6,
1049               [HAVE_SA_STORAGE:yes HAVE_SA_IN6:yes HAVE_ADDRINFO:yes HAVE_GETADDRINFO:yes],
1050               [IPv6],
1051               [  --disable-ipv6          disable IPv6 support])
1053 EL_ARG_ENABLE(CONFIG_BITTORRENT, bittorrent, [BitTorrent protocol],
1054               [  --enable-bittorrent     enable BitTorrent protocol support])
1056 EL_ARG_ENABLE(CONFIG_DATA, data, [Data protocol],
1057               [  --disable-data          disable data protocol support])
1059 EL_ARG_ENABLE(CONFIG_URI_REWRITE, uri-rewrite, [URI rewriting],
1060               [  --disable-uri-rewrite   disable URI rewrite support])
1062 EL_ARG_DEPEND(CONFIG_CGI, cgi, [HAVE_SETENV_OR_PUTENV:yes], [Local CGI],
1063               [  --enable-cgi            enable local CGI support])
1065 EL_ARG_ENABLE(CONFIG_FINGER, finger, [Finger protocol],
1066               [  --enable-finger         enable finger protocol support])
1068 EL_ARG_ENABLE(CONFIG_FTP, ftp, [FTP protocol],
1069               [  --disable-ftp           disable ftp protocol support])
1071 EL_ARG_ENABLE(CONFIG_GOPHER, gopher, [Gopher protocol],
1072               [  --enable-gopher         enable gopher protocol support])
1074 EL_ARG_ENABLE(CONFIG_NNTP, nntp, [NNTP protocol],
1075               [  --enable-nntp           enable nntp protocol support])
1077 EL_ARG_DEPEND(CONFIG_SMB, smb, [HAVE_SMBCLIENT:yes], [SMB protocol],
1078               [  --disable-smb           disable SMB protocol support (requires smbclient)])
1081 EL_ARG_ENABLE(CONFIG_MOUSE, mouse, [Mouse handling],
1082               [  --disable-mouse         disable mouse support])
1084 # GPM mouse is Linux specific, so ...
1085 CONFIG_SYSMOUSE=yes
1086 EL_ARG_DEPEND(CONFIG_SYSMOUSE, sysmouse,
1087               [CONFIG_MOUSE:yes CONFIG_GPM:no HAVE_SYSMOUSE_HEADER:yes],
1088               [BSD sysmouse],
1089               [  --disable-sysmouse      disable BSD sysmouse support])
1091 EL_ARG_ENABLE(CONFIG_88_COLORS, 88-colors, [88 colors],
1092               [  --enable-88-colors      enable 88 color support])
1094 EL_ARG_ENABLE(CONFIG_256_COLORS, 256-colors, [256 colors],
1095               [  --enable-256-colors     enable 256 color support])
1098 EL_ARG_ENABLE(CONFIG_EXMODE, exmode, [Exmode interface],
1099               [  --enable-exmode         enable exmode (CLI) interface])
1101 EL_ARG_ENABLE(CONFIG_LEDS, leds, [LEDs],
1102               [  --disable-leds          disable LEDs support])
1104 EL_ARG_ENABLE(CONFIG_MARKS, marks, [Marks],
1105               [  --disable-marks         disable document marks support])
1108 EL_ARG_ENABLE(CONFIG_CSS, css, [Cascading Style Sheets],
1109               [  --disable-css           disable Cascading Style Sheet support])
1111 EL_ARG_DEPEND(CONFIG_HTML_HIGHLIGHT, html-highlight, [CONFIG_CSS:yes], [HTML highlighting],
1112               [  --enable-html-highlight HTML highlighting using DOM engine])
1114 dnl Everything in the tree already uses CONFIG_DOM
1115 dnl so resolve CONFIG_HTML_HIGHLIGHT to CONFIG_DOM
1116 EL_CONFIG_DEPENDS(CONFIG_DOM, [CONFIG_HTML_HIGHLIGHT], [DOM engine])
1118 EL_ARG_DEPEND(CONFIG_BACKTRACE, backtrace, [HAVE_EXECINFO:yes], [Backtrace],
1119               [  --disable-backtrace     disable backtrace support])
1121 EL_ARG_DEPEND(CONFIG_NO_ROOT_EXEC, no-root, [HAVE_GETUID:yes HAVE_GETEUID:yes], [No root exec],
1122               [  --enable-no-root        enable prevention of usage by root])
1125 EL_ARG_ENABLE(CONFIG_DEBUG, debug, [Debug mode],
1126               [  --enable-debug          enable leak debug and internal error checking])
1128 EL_ARG_DEPEND(CONFIG_FASTMEM, fastmem, [CONFIG_DEBUG:no], [Fast mode],
1129               [  --enable-fastmem        enable direct use of system allocation functions, not usable with --enable-debug])
1131 EL_ARG_ENABLE(CONFIG_OWN_LIBC, own-libc, [Own libc stubs],
1132               [  --enable-own-libc       force use of internal functions instead of those of system libc])
1134 EL_ARG_ENABLE(CONFIG_SMALL, small, [Small binary],
1135               [  --enable-small          reduce binary size as far as possible (but see the bottom of doc/small.txt!)])
1137 if test "$CONFIG_OPENSSL" != yes &&
1138    test "$CONFIG_GNUTLS_OPENSSL_COMPAT" != yes ||
1139    test "$CONFIG_OWN_LIBC" = yes;
1140 then
1141         AC_MSG_CHECKING(for built-in MD5 support)
1142         AC_MSG_RESULT(yes)
1143         EL_CONFIG(CONFIG_MD5, [Built-in MD5])
1146 AC_SUBST(CONFIG_MD5)
1148 if test "$CONFIG_BITTORRENT" = yes; then
1149         if test "$CONFIG_OPENSSL" != yes ||
1150            test "$CONFIG_OWN_LIBC" = yes;
1151         then
1152                 AC_MSG_CHECKING(for built-in SHA1 support)
1153                 AC_MSG_RESULT(yes)
1154                 EL_CONFIG(CONFIG_SHA1, [Built-in SHA1])
1155         fi
1158 AC_SUBST(CONFIG_SHA1)
1160 if test "$CONFIG_CSS" = yes || test "$CONFIG_DOM" = yes;
1161 then
1162         EL_CONFIG(CONFIG_SCANNER, [Built-in scanner])
1164 AC_SUBST(CONFIG_SCANNER)
1166 AC_ARG_ENABLE(weehoofooboomookerchoo,
1167               [
1168     Also check out the features.conf file for more information about features!
1169               ],
1170               [AC_MSG_ERROR(Are you strange, or what?)])
1173 dnl == EMX hack
1175 test "$CONFIG_OS2" = yes && LDFLAGS="$LDFLAGS -Zexe"
1176 test "$CONFIG_OS2" = yes && LDFLAGS=`echo "$LDFLAGS" | sed "s/-Zbin-files//g"`
1179 dnl ===================================================================
1180 dnl Export directory paths
1181 dnl ===================================================================
1183 # Set up the ``entry points'' if they were not supplied by builder
1184 test "x$prefix" = xNONE && prefix=$ac_default_prefix
1185 test "x$exec_prefix" = xNONE && exec_prefix=${prefix}
1187 # Create CONFDIR #define for config.h
1189 # XXX: This may be dependent on a particular version of autoconf. Whatever,
1190 # it's autoconf fault to force us to do such hacks ;p.
1191 if test x"$sysconfdir" = x"\${prefix}/etc"; then
1192   # sysconfdir is set to its default value... fine, let's append /elinks/
1193   # XXX: We can't modify listing of the default in ./configure --help :-(
1194   sysconfdir_n=`eval echo "$sysconfdir"`
1195   sysconfdir=$sysconfdir_n
1196   (echo "$sysconfdir" | grep elinks >/dev/null 2>/dev/null) || \
1197         sysconfdir="$sysconfdir/elinks"
1200 CONFDIR=$sysconfdir
1201 AC_DEFINE_UNQUOTED(CONFDIR, "$CONFDIR", [Directory containing default config])
1202 AC_SUBST(CONFDIR)
1204 # Create LOCALEDIR #define for config.h
1205 LOCALEDIR=`eval echo "$datadir/locale"`
1206 AC_DEFINE_UNQUOTED(LOCALEDIR, "$LOCALEDIR", [Directory containing locales])
1207 AC_SUBST(LOCALEDIR)
1209 # Create LIBDIR #define for config.h
1210 LIBDIR=`eval echo "$libdir"`
1211 AC_DEFINE_UNQUOTED(LIBDIR, "$LIBDIR", [Directory containing libraries])
1212 AC_SUBST(LIBDIR)
1214 EL_LOG_CONFIG(CONFDIR, [System configuration directory], [])
1215 EL_LOG_CONFIG(LOCALEDIR, [Locale catalogs directory], [])
1217 dnl ===================================================================
1218 dnl A little fine tuning of gcc specific options (continued)
1219 dnl ===================================================================
1221 if test "x$ac_cv_prog_gcc" = "xyes"; then
1222   if test "$CONFIG_DEBUG" = "yes"; then
1223     dnl We want to see all warnings and live with none (in debug mode).
1224     CFLAGS="$CFLAGS -Werror"
1225   fi
1227   case "`gcc -dumpversion`" in
1228     3.0|3.1|3.2)
1229       # These should be ok using -Werror
1230       ;;
1231     3.*)
1232       # If gcc is version 3.3 (or higher?) it emits lots of false positive
1233       # "dereferencing type-punned pointer will break strict-aliasing rules"
1234       # warnings. Disable them by not doing any strict-aliasing. The
1235       # alternative is just too ugly. Thanks gcc guys!! ;)
1236       CFLAGS="$CFLAGS -fno-strict-aliasing"
1237       ;;
1238     4.*)
1239       # Do not show warnings related to (char * | unsigned char *) type
1240       # difference.
1241       CFLAGS="$CFLAGS -fno-strict-aliasing -Wno-pointer-sign"
1242       ;;
1243     *)
1244       # These should be ok using -Werror
1245       ;;
1246   esac
1249 # CFLAGS doesn't contain all compile flags. Some will be added only when
1250 # needed in the respective source directory. To get all compile flags
1251 # easily just add CPPFLAGS.
1252 ALL_CFLAGS="$CFLAGS $CPPFLAGS"
1254 EL_LOG_CONFIG(ALL_CFLAGS, [Compiler options (CFLAGS)], [])
1255 EL_LOG_CONFIG(LIBS, [Linker options (LIBS)], [])
1257 dnl ===================================================================
1258 dnl Generated files
1259 dnl ===================================================================
1261 AC_OUTPUT([ \
1262  Makefile.config \
1263  contrib/elinks.spec \
1264  contrib/lua/hooks.lua \
1265  contrib/conv/w3m2links.awk \
1266  doc/man/man1/elinks.1 \
1267  src/intl/gettext/ref-add.sed \
1268  src/intl/gettext/ref-del.sed
1271 abs_srcdir="$(cd "$srcdir" && pwd)"
1272 # builddir is always absolute!
1273 if test "$abs_srcdir" != "$builddir"; then
1274         echo "include $abs_srcdir/Makefile" > "$builddir/Makefile"
1275         "$MAKE" "SRC=$abs_srcdir" init
1279 dnl ===================================================================
1280 dnl Configuration summary
1281 dnl ===================================================================
1283 AC_MSG_RESULT(The following feature summary has been saved to features.log)
1284 cat features.log