Drop relic from index.txt
[elinks.git] / configure.in
blob73183a2bac4f5b49e516d932e10fd669bde0413f
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.12.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_OS_BEOS, [BEOS], [__BEOS__])
146 AC_SUBST(CONFIG_OS_BEOS)
148 EL_CHECK_COMPILER_MACROS(CONFIG_OS_RISCOS, [RISCOS], [__riscos__])
149 AC_SUBST(CONFIG_OS_RISCOS)
151 EL_CHECK_COMPILER_MACROS(CONFIG_OS_WIN32, [WIN32], [_WIN32 __WIN32__])
152 AC_SUBST(CONFIG_OS_WIN32)
154 EL_CHECK_COMPILER_MACROS(CONFIG_OS_OS2, [EMX], [__EMX__])
155 AC_SUBST(CONFIG_OS_OS2)
156 test "$CONFIG_OS_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_OS_BEOS" = no && \
161    test "$CONFIG_OS_RISCOS" = no && \
162    test "$CONFIG_OS_WIN32" = no && \
163    test "$CONFIG_OS_OS2" = no; then
164         EL_CONFIG(CONFIG_OS_UNIX, [UNIX])
165 else
166         CONFIG_OS_UNIX=no
168 AC_MSG_RESULT($CONFIG_OS_UNIX)
169 AC_SUBST(CONFIG_OS_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_OS_OS2" = yes; then
488         EL_CONFIG_OS_OS2
491 dnl ===================================================================
492 dnl Checks for Win32
493 dnl ===================================================================
495 if test "$CONFIG_OS_WIN32" = yes; then
496         EL_CONFIG_OS_WIN32
499 dnl ===================================================================
500 dnl Check for SEE (Simple Ecmascript Engine)
501 dnl ===================================================================
502 AC_ARG_WITH(see, [  --with-see              enable Simple Ecmascript Engine (SEE) support],
503             [ if test "x$withval" != xno; then enable_see=yes; fi ])
505 # The following is probably bad, ugly and so on. Stolen from Guile's (1.4)
506 # SEE_FLAGS but I really don't want to require people to have Guile in order
507 # to compile CVS. Also, the macro seems to be really stupid regarding searching
508 # for Guile in $PATH etc. --pasky
510 AC_MSG_CHECKING([for SEE])
512 if test "$enable_see" = "yes"; then
513         AC_MSG_RESULT(yes);
514         ## Based on the SEE_FLAGS macro.
516         if test -d "$withval"; then
517                 SEE_PATH="$withval:$PATH"
518         else
519                 SEE_PATH="$PATH"
520         fi
522         AC_PATH_PROG(SEE_CONFIG, libsee-config, no, $SEE_PATH)
524         ## First, let's just see if we can find Guile at all.
525         if test "$SEE_CONFIG" != no; then
526                 cf_result="yes";
528                 SEE_LIBS="`$SEE_CONFIG --libs`"
529                 SEE_CFLAGS="`$SEE_CONFIG --cppflags`"
530                 LIBS="$SEE_LIBS $LIBS"
531                 CPPFLAGS="$CPPFLAGS $SEE_CFLAGS"
532                 EL_CONFIG(CONFIG_SEE, [SEE])
533                 AC_SUBST(SEE_CFLAGS)
534                 AC_SUBST(CONFIG_SEE)
535         else
536                 if test -n "$withval" && test "x$withval" != xno; then
537                         AC_MSG_ERROR([SEE not found])
538                 else
539                         AC_MSG_WARN([SEE support disabled])
540                 fi
541         fi
542 else
543         AC_MSG_RESULT(no);
547 dnl ===================================================================
548 dnl Check for SpiderMonkey, optional even if installed.
549 dnl ===================================================================
551 AC_ARG_WITH(spidermonkey, [  --without-spidermonkey  disable SpiderMonkey Mozilla JavaScript engine support],
552             [if test "$withval" = no; then disable_spidermonkey=yes; fi])
553 AC_MSG_CHECKING([for SpiderMonkey])
555 EL_SAVE_FLAGS
556 cf_result=no
558 if test -z "$disable_spidermonkey"; then
559         if test ! -d "$withval"; then
560                 withval="";
561         fi
562         for spidermonkeydir in "$withval" "" /usr /usr/local /opt/spidermonkey /opt/js; do
563                 for spidermonkeyinclude in "/include" "/include/js" "/include/smjs"; do
564                         for spidermonkeylib in js smjs; do
565                                 if test "$cf_result" = no; then
566                                         SPIDERMONKEY_LIBS="-l$spidermonkeylib"
568                                         if test ! -z "$spidermonkeydir"; then
569                                                 SPIDERMONKEY_LIBS="-L$spidermonkeydir/lib $SPIDERMONKEY_LIBS"
570                                                 SPIDERMONKEY_CFLAGS="-I$spidermonkeydir$spidermonkeyinclude"
571                                         fi
573                                         LIBS="$SPIDERMONKEY_LIBS $LIBS_X"
574                                         CFLAGS="$CFLAGS_X $SPIDERMONKEY_CFLAGS"
575                                         CPPFLAGS="$CPPFLAGS_X $SPIDERMONKEY_CFLAGS"
577                                         AC_TRY_LINK([#define XP_UNIX
578                                                      #include <jsapi.h>],
579                                                      [JS_GetImplementationVersion()],
580                                                      cf_result=yes, cf_result=no)
581                                 fi
582                         done
583                 done
584         done
587 AC_MSG_RESULT($cf_result)
589 if test "$cf_result" != yes; then
590         EL_RESTORE_FLAGS
591 else
592         EL_CONFIG(CONFIG_SPIDERMONKEY, [SpiderMonkey])
594         CFLAGS="$CFLAGS_X"
595         AC_SUBST(SPIDERMONKEY_LIBS)
596         AC_SUBST(SPIDERMONKEY_CFLAGS)
599 if test "$CONFIG_SEE" != yes; then
600         EL_CONFIG(CONFIG_ECMASCRIPT_SMJS, [SpiderMonkey document scripting])
603 AC_SUBST(CONFIG_SPIDERMONKEY)
604 AC_SUBST(CONFIG_ECMASCRIPT_SMJS)
606 EL_CONFIG_DEPENDS(CONFIG_ECMASCRIPT, [CONFIG_SEE CONFIG_ECMASCRIPT_SMJS], [ECMAScript (JavaScript)])
609 dnl ===================================================================
610 dnl Optional Spidermonkey-based ECMAScript browser scripting
611 dnl ===================================================================
613 AC_ARG_ENABLE(sm-scripting,
614               [  --disable-sm-scripting  ECMAScript browser scripting (requires Spidermonkey)],
615               [if test "$enableval" != no; then enableval="yes"; fi
616                CONFIG_SCRIPTING_SPIDERMONKEY="$enableval";])
618 if test "x$CONFIG_SPIDERMONKEY" = xyes &&
619    test "x$CONFIG_SCRIPTING_SPIDERMONKEY" = xyes; then
620         EL_CONFIG(CONFIG_SCRIPTING_SPIDERMONKEY, [SpiderMonkey])
621 else
622         CONFIG_SCRIPTING_SPIDERMONKEY=no
626 dnl ===================================================================
627 dnl Check for Guile, optional even if installed.
628 dnl ===================================================================
630 enable_guile="no";
632 AC_ARG_WITH(guile, [  --with-guile            enable Guile support],
633             [ if test "x$withval" != xno; then enable_guile=yes; fi ])
635 # The following is probably bad, ugly and so on. Stolen from Guile's (1.4)
636 # GUILE_FLAGS but I really don't want to require people to have Guile in order
637 # to compile CVS. Also, the macro seems to be really stupid regarding searching
638 # for Guile in $PATH etc. --pasky
640 AC_MSG_CHECKING([for Guile])
642 if test "$enable_guile" = "yes"; then
643         AC_MSG_RESULT(yes);
644         ## Based on the GUILE_FLAGS macro.
646         if test -d "$withval"; then
647                 GUILE_PATH="$withval:$PATH"
648         else
649                 GUILE_PATH="$PATH"
650         fi
652         AC_PATH_PROG(GUILE_CONFIG, guile-config, no, $GUILE_PATH)
654         ## First, let's just see if we can find Guile at all.
655         if test "$GUILE_CONFIG" != no; then
656                 cf_result="yes";
658                 GUILE_LIBS="`guile-config link`"
659                 GUILE_CFLAGS="`guile-config compile`"
660                 LIBS="$GUILE_LIBS $LIBS"
661                 CPPFLAGS="$CPPFLAGS $GUILE_CFLAGS"
662                 EL_CONFIG(CONFIG_SCRIPTING_GUILE, [Guile])
663                 AC_SUBST(GUILE_CFLAGS)
664                 cat <<EOF
665 ***********************************************************************
666 The Guile support is incomplete and not so well integrated to ELinks
667 yet. That means, ie., that you have no Guile console and there might
668 not be all the necessary hooks. Also, the Guile interface is not too
669 well tested (success stories heartily welcomed!).  See
670 src/scripting/guile/README for further details and hints.
671 ***********************************************************************
673         else
674                 if test -n "$withval" && test "x$withval" != xno; then
675                         AC_MSG_ERROR([Guile not found])
676                 else
677                         AC_MSG_WARN([Guile support disabled])
678                 fi
679         fi
680 else
681         AC_MSG_RESULT(no);
684 dnl ===================================================================
685 dnl Check for Perl
686 dnl ===================================================================
687 enable_perl="no";
689 AC_ARG_WITH(perl, [  --with-perl             enable Perl support],
690             [
691 if test "$withval" = yes; then
692         # FIXME: If withval is a valid directory append it to PATH
693         # so that you can specify one of several perl installations.
694         withval="";
695         enable_perl=yes;
697             ])
699 AC_MSG_CHECKING([for Perl])
701 cf_result=no
703 EL_SAVE_FLAGS
705 if test "$enable_perl" = "yes"; then
706         PERL_LIBS="`perl -MExtUtils::Embed -e ldopts`"
707         PERL_CFLAGS="`perl -MExtUtils::Embed -e ccopts`"
708         LIBS="$PERL_LIBS $LIBS"
709         CFLAGS="$PERL_CFLAGS $CFLAGS"
710         CPPFLAGS="$CPPFLAGS $PERL_CFLAGS"
711         AC_TRY_LINK([
712 #include <EXTERN.h>
713 #include <perl.h>
714 #include <perlapi.h>
716                     [PerlInterpreter *my_perl = perl_alloc();],
717                     cf_result=yes, cf_result=no)
720 if test "$cf_result" != "yes"; then
721         EL_RESTORE_FLAGS
722 else
723         EL_CONFIG(CONFIG_SCRIPTING_PERL, [Perl])
725         CFLAGS="$CFLAGS_X"
726         AC_SUBST(PERL_LIBS)
727         AC_SUBST(PERL_CFLAGS)
730 if test "$cf_result"; then AC_MSG_RESULT($cf_result); fi
731 dnl ===================================================================
732 dnl Check for Python
733 dnl ===================================================================
734 enable_python="no";
736 AC_ARG_WITH(python, [  --with-python           enable Python support],
737             [
738 if test "$withval" = yes; then
739         # FIXME: If withval is a valid directory append it to PATH
740         # so that you can specify one of several Python installations.
741         withval="";
742         enable_python=yes;
743         cat <<EOF
744 ***********************************************************************
745 The Python support is incomplete and not so well integrated to ELinks
746 yet. That means, ie., that you have no Python console and there might
747 not be all the necessary hooks. Also, the Python interface is not too
748 well tested (success stories heartily welcomed!).
749 ***********************************************************************
752             ])
754 AC_MSG_CHECKING([for Python])
756 cf_result=no
758 EL_SAVE_FLAGS
760 if test "$enable_python" = "yes"; then
761         PYTHON_LIBS="-lpython"
762         PYTHON_CFLAGS="-I`python -c 'from distutils import sysconfig; print sysconfig.get_python_inc()' 2> /dev/null`"
763         LIBS="$PYTHON_LIBS $LIBS"
764         CFLAGS="$PYTHON_CFLAGS $CFLAGS"
765         CPPFLAGS="$CPPFLAGS $PYTHON_CFLAGS"
766         AC_TRY_LINK([
767 #include <Python.h>
769                     [Py_Initialize();],
770                     cf_result=yes, cf_result=no)
773 if test "$cf_result" != "yes"; then
774         EL_RESTORE_FLAGS
775 else
776         EL_CONFIG(CONFIG_SCRIPTING_PYTHON, [Python])
778         CFLAGS="$CFLAGS_X"
779         AC_SUBST(PYTHON_LIBS)
780         AC_SUBST(PYTHON_CFLAGS)
783 if test "$cf_result"; then AC_MSG_RESULT($cf_result); fi
786 dnl ===================================================================
787 dnl Check for Lua, optional even if installed.
788 dnl ===================================================================
790 dnl Do this the long way, as FreeBSD reportedly needs -L<dir> for
791 dnl anything other than /usr/lib, and Lua is very often in /usr/local/lib.
793 AC_ARG_WITH(lua, [  --without-lua           disable Lua support],
794             [if test "$withval" = no; then disable_lua=yes; fi])
795 AC_MSG_CHECKING([for Lua])
797 EL_SAVE_FLAGS
798 cf_result=no
800 if test -z "$disable_lua"; then
801         if test ! -d "$withval"; then
802                 withval="";
803         fi
804         for luadir in "$withval" "" /usr /usr/local; do
805                 for suffix in "" 50 51; do
806                         if test "$cf_result" = no; then
807                                 LUA_LIBS="-llua$suffix -llualib$suffix -lm"
809                                 if test ! -z "$luadir"; then
810                                         LUA_LIBS="-L$luadir/lib $LUA_LIBS"
811                                         LUA_CFLAGS="-I$luadir/include -I$luadir/include/lua$suffix"
812                                 fi
814                                 LIBS="$LUA_LIBS $LIBS_X"
815                                 CFLAGS="$CFLAGS_X $LUA_CFLAGS"
816                                 CPPFLAGS="$CPPFLAGS_X $LUA_CFLAGS"
818                                 # Check that it is a compatible Lua version
819                                 AC_TRY_LINK([   #include <lua.h>
820                                                 #include <lualib.h>],
821                                             [   lua_State *L = lua_open();
822                                                 lua_baselibopen(L);
823                                                 lua_mathlibopen(L);
824                                                 lua_strlibopen(L);
825                                                 lua_tablibopen(L);
826                                                 lua_pushboolean(L, 1);
827                                                 lua_close(L);],
828                                             cf_result=yes, cf_result=no)
829                         fi
830                 done
831         done
834 AC_MSG_RESULT($cf_result)
836 if test "$cf_result" != yes; then
837         EL_RESTORE_FLAGS
838 else
839         EL_CONFIG(CONFIG_SCRIPTING_LUA, [Lua])
840         AC_CHECK_HEADERS(lauxlib.h)
842         CFLAGS="$CFLAGS_X"
843         AC_SUBST(LUA_LIBS)
844         AC_SUBST(LUA_CFLAGS)
848 dnl ===================================================================
849 dnl Check for Ruby, optional even if installed.
850 dnl ===================================================================
852 EL_CONFIG_SCRIPTING_RUBY
854 dnl ===================================================================
855 dnl Setup global scripting
856 dnl ===================================================================
858 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])
859 AC_SUBST(CONFIG_SCRIPTING_GUILE)
860 AC_SUBST(CONFIG_SCRIPTING_LUA)
861 AC_SUBST(CONFIG_SCRIPTING_PERL)
862 AC_SUBST(CONFIG_SCRIPTING_PYTHON)
863 AC_SUBST(CONFIG_SCRIPTING_RUBY)
864 AC_SUBST(CONFIG_SCRIPTING_SPIDERMONKEY)
865 AC_SUBST(CONFIG_SCRIPTING)
868 dnl ===================================================================
869 dnl Check for SSL support.
870 dnl ===================================================================
872 dnl We by default use OpenSSL, and we always prefer it. However, when GNUTLS
873 dnl is enabled, we won't try to use OpenSSL anymore.
875 dnl For wiping SSL hooks..
876 #ifdef CONFIG_SSL
878 disable_openssl=""
879 disable_gnutls=""
880 enable_gnutls=""
882 AC_ARG_WITH(gnutls, [  --without-gnutls        disable GNUTLS SSL support],
883             [if test "$with_gnutls" = no;  then disable_gnutls=yes; fi])
884 AC_ARG_WITH(gnutls, [  --with-gnutls[=DIR]     enable GNUTLS SSL support],
885             [if test "$with_gnutls" != no;  then enable_gnutls=yes; fi])
886 gnutls_withval="$withval"
888 if test "$enable_gnutls" = yes; then
889         disable_openssl=yes;
892 AC_ARG_WITH(openssl, [  --without-openssl       disable OpenSSL support],
893             [if test "$with_openssl" = no;  then disable_openssl=yes; fi])
894 AC_ARG_WITH(openssl, [  --with-openssl[=DIR]    enable OpenSSL support (default)])
895 openssl_withval="$withval"
897 dnl ---- OpenSSL
899 AC_MSG_CHECKING([for OpenSSL])
901 EL_SAVE_FLAGS
902 cf_result="no"
904 if test "$disable_openssl" = yes; then
905         cf_result="not used"
906 else
907         for ssldir in "$openssl_withval" "" /usr /usr/local/openssl \
908                          /usr/lib/openssl /usr/local/ssl \
909                          /usr/local/www /usr/lib/ssl /usr/local \
910                          /usr/pkg /opt /opt/openssl; do
911                 if test "$cf_result" = no; then
912                         if test -d "$ssldir"; then
913                                 OPENSSL_CFLAGS="-I$ssldir/include"
914                                 LIBS="-L$ssldir/lib -lssl -lcrypto $LIBS_X"
915                                 CFLAGS="$CFLAGS_X $OPENSSL_CFLAGS"
916                                 CPPFLAGS="$CPPFLAGS_X $OPENSSL_CFLAGS"
917 #                               # FIXME: This created serious portability problems. --pasky
918 #                               if test "$CC" == "gcc"; then
919 #                                       # I'm not sure about compatibility here. --pasky
920 #                                       LIBS="$LIBS -R$ssldir/lib"
921 #                               fi
922                         else
923                                 LIBS="-lssl -lcrypto $LIBS_X"
924                         fi
925                         AC_TRY_LINK([#include <openssl/ssl.h>],
926                                     [OpenSSL_add_all_algorithms()],
927                                     cf_result=yes, cf_result=no)
928                         if test "$cf_result" != yes; then
929                                 AC_TRY_LINK([#include <openssl/ssl.h>],
930                                             [SSLeay_add_ssl_algorithms()],
931                                             cf_result=yes, cf_result=no)
932                         fi
933                 fi
934         done
936         if test "$cf_result" != yes; then
937                 if test -n "$openssl_withval" && test "x$openssl_withval" != xno; then
938                         AC_MSG_ERROR([OpenSSL not found])
939                 fi
940                 EL_RESTORE_FLAGS
941         else
942                 EL_CONFIG(CONFIG_OPENSSL, [OpenSSL])
944                 CFLAGS="$CFLAGS_X"
945                 AC_SUBST(OPENSSL_CFLAGS)
946         fi
949 AC_MSG_RESULT($cf_result)
951 dnl ---- GNU TLS
952 dnl We can't have AC_MSG_CHECKING here, because AC_PATH_PROG prints its own and
953 dnl it looks ugly then.
955 if test "$cf_result" = yes; then
956         cf_result="not used"
958 else
959         EL_SAVE_FLAGS
960         cf_result="no"
962         if test -z "$disable_gnutls"; then
963                 # Sure, we maybe _could_ use their macro, but how to ensure
964                 # that the ./configure script won't fail if the macro won't be
965                 # found..? :( --pasky
967                 GNUTLS_PATH="$PATH:/usr/local/gnutls:/opt:/opt/gnutls"
969                 if test -d "$gnutls_withval"; then
970                         GNUTLS_PATH="$gnutls_withval:$GNUTLS_PATH"
971                 fi
973                 AC_PATH_PROG(LIBGNUTLS_CONFIG, libgnutls-config, no, $GNUTLS_PATH)
975                 if test "$LIBGNUTLS_CONFIG" = "no" ; then
976                         cf_result=no
977                 else
978                         GNUTLS_CFLAGS=`$LIBGNUTLS_CONFIG --cflags`
979                         GNUTLS_LIBS=`$LIBGNUTLS_CONFIG --libs`
981                         LIBS="$GNUTLS_LIBS $LIBS_X"
982                         CFLAGS="$CFLAGS_X $GNUTLS_CFLAGS"
983                         CPPFLAGS="$CPPFLAGS_X $GNUTLS_CFLAGS"
985                         # Verify if it's really usable.  gnutls_session was
986                         # renamed to gnutls_session_t before GNU TLS 1.2.0
987                         # (on 2004-06-13); ELinks now requires this.
988                         AC_TRY_LINK([#include <gnutls/gnutls.h>],
989                                     [gnutls_session_t dummy;
990                                      gnutls_check_version(NULL)],
991                                     cf_result=yes, cf_result=no)
992                 fi
994                 if test "$cf_result" = yes; then
995                         EL_CONFIG(CONFIG_GNUTLS, [GNUTLS])
997                         CFLAGS="$CFLAGS_X"
998                         AC_SUBST(GNUTLS_CFLAGS)
1000                         # Verify if the MD5 compatibility layer is usable.
1001                         CONFIG_GNUTLS_OPENSSL_COMPAT=yes
1002                         EL_CHECK_OPTIONAL_LIBRARY(CONFIG_GNUTLS_OPENSSL_COMPAT,
1003                                                   [GNU TLS OpenSSL compatibility],
1004                                                   gnutls/openssl.h, gnutls-openssl,
1005                                                   MD5_Init)
1006                 else
1007                         if test -n "$gnutls_withval" && test "x$gnutls_withval" != xno; then
1008                                 AC_MSG_ERROR([GNUTLS (1.2 or later) not found.  ELinks no longer supports GNUTLS 1.1.])
1009                         fi
1010                         EL_RESTORE_FLAGS
1011                 fi
1012         fi
1015 AC_MSG_CHECKING([for GNU TLS (1.2 or later)])
1016 AC_MSG_RESULT($cf_result)
1018 dnl Final SSL setup
1020 EL_CONFIG_DEPENDS(CONFIG_SSL, [CONFIG_OPENSSL CONFIG_GNUTLS], [SSL])
1021 AC_SUBST(CONFIG_OPENSSL)
1022 AC_SUBST(CONFIG_GNUTLS)
1024 #endif
1026 AC_MSG_CHECKING([whether to be or not to be])
1027 AC_MSG_RESULT([needs to be determined experimentally])
1029 dnl ===================================================================
1030 dnl Check for IPv6 support and related functions.
1031 dnl ===================================================================
1033 EL_CHECK_NET_TYPE(struct sockaddr_storage, HAVE_SA_STORAGE, [])
1034 EL_CHECK_NET_TYPE(struct sockaddr_in6, HAVE_SA_IN6, [#include <netinet/in.h>])
1035 EL_CHECK_NET_TYPE(struct addrinfo, HAVE_ADDRINFO, [#include <netdb.h>])
1037 AC_CHECK_FUNC(getaddrinfo, HAVE_GETADDRINFO=yes, HAVE_GETADDRINFO=no)
1038 if test "$HAVE_GETADDRINFO" != yes; then
1039         AC_CHECK_LIB(inet6, getaddrinfo, HAVE_GETADDRINFO=yes, HAVE_GETADDRINFO=no)
1040         if test "$HAVE_GETADDRINFO" = yes; then
1041                 LIBS="$LIBS -linet6"
1042         fi
1046 dnl ===================================================================
1047 dnl Checking for X11 (window title restoring).
1048 dnl ===================================================================
1050 AC_PATH_X
1051 if test x"$no_x" != xyes; then
1052         if test -n "$x_includes"; then
1053                 X_CFLAGS="-I$x_includes"
1054                 CPPFLAGS="$CPPFLAGS -I$x_includes"
1055         fi
1056         if test -n "$x_libraries"; then
1057                 LDFLAGS="$LDFLAGS -L$x_libraries"
1058         fi
1059         LIBS="-lX11 $LIBS"
1060         EL_DEFINE(HAVE_X11, [X11 for restoring window titles])
1061         AC_SUBST(X_CFLAGS)
1065 dnl ===================================================================
1066 dnl Backtraces displaying support.
1067 dnl ===================================================================
1069 AC_CHECK_HEADERS(execinfo.h, HAVE_EXECINFO=yes, HAVE_EXECINFO=no)
1070 # possible checks for other system-specific means go here
1073 dnl ===================================================================
1074 dnl SMB protocol support.
1075 dnl ===================================================================
1077 AC_CHECK_PROG(HAVE_SMBCLIENT, smbclient, yes, no)
1080 dnl ===================================================================
1081 dnl Gettext grey zone. Beware.
1082 dnl ===================================================================
1084 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"
1086 AM_GNU_GETTEXT
1088 dnl AC_MSG_CHECKING([how many characters your English alphabet has])
1089 dnl # f33r d4 l33t... I hope it's portable. :)
1090 dnl cf_result=$((48#z - 48#a + 1));
1091 dnl AC_MSG_RESULT($cf_result)
1094 dnl ===================================================================
1095 dnl Compile-time features control
1096 dnl ===================================================================
1098 EL_ARG_ENABLE(CONFIG_COOKIES, cookies, [Cookies],
1099               [  --disable-cookies       disable cookie support])
1101 EL_ARG_ENABLE(CONFIG_FORMHIST, formhist, [Form history],
1102               [  --disable-formhist      disable form history support])
1104 EL_ARG_ENABLE(CONFIG_GLOBHIST, globhist, [Global history],
1105               [  --disable-globhist      disable global history support])
1108 EL_ARG_ENABLE(CONFIG_MAILCAP, mailcap, [Mailcap],
1109               [  --disable-mailcap       disable mailcap support])
1111 EL_ARG_ENABLE(CONFIG_MIMETYPES, mimetypes, [Mimetypes files],
1112               [  --disable-mimetypes     disable mimetypes files support])
1115 EL_ARG_DEPEND(CONFIG_IPV6, ipv6,
1116               [HAVE_SA_STORAGE:yes HAVE_SA_IN6:yes HAVE_ADDRINFO:yes HAVE_GETADDRINFO:yes],
1117               [IPv6],
1118               [  --disable-ipv6          disable IPv6 support])
1120 EL_ARG_ENABLE(CONFIG_BITTORRENT, bittorrent, [BitTorrent protocol],
1121               [  --enable-bittorrent     enable BitTorrent protocol support])
1123 EL_ARG_ENABLE(CONFIG_DATA, data, [Data protocol],
1124               [  --disable-data          disable data protocol support])
1126 EL_ARG_ENABLE(CONFIG_URI_REWRITE, uri-rewrite, [URI rewriting],
1127               [  --disable-uri-rewrite   disable URI rewrite support])
1129 EL_ARG_DEPEND(CONFIG_CGI, cgi, [HAVE_SETENV_OR_PUTENV:yes], [Local CGI],
1130               [  --enable-cgi            enable local CGI support])
1132 EL_ARG_ENABLE(CONFIG_FINGER, finger, [Finger protocol],
1133               [  --enable-finger         enable finger protocol support])
1135 EL_ARG_ENABLE(CONFIG_FTP, ftp, [FTP protocol],
1136               [  --disable-ftp           disable ftp protocol support])
1138 EL_ARG_ENABLE(CONFIG_GOPHER, gopher, [Gopher protocol],
1139               [  --enable-gopher         enable gopher protocol support])
1141 EL_ARG_ENABLE(CONFIG_NNTP, nntp, [NNTP protocol],
1142               [  --enable-nntp           enable nntp protocol support])
1144 EL_ARG_DEPEND(CONFIG_SMB, smb, [HAVE_SMBCLIENT:yes], [SMB protocol],
1145               [  --disable-smb           disable SMB protocol support (requires smbclient)])
1148 EL_ARG_ENABLE(CONFIG_MOUSE, mouse, [Mouse handling],
1149               [  --disable-mouse         disable mouse support])
1151 # GPM mouse is Linux specific, so ...
1152 CONFIG_SYSMOUSE=yes
1153 EL_ARG_DEPEND(CONFIG_SYSMOUSE, sysmouse,
1154               [CONFIG_MOUSE:yes CONFIG_GPM:no HAVE_SYSMOUSE_HEADER:yes],
1155               [BSD sysmouse],
1156               [  --disable-sysmouse      disable BSD sysmouse support])
1158 EL_ARG_ENABLE(CONFIG_88_COLORS, 88-colors, [88 colors],
1159               [  --enable-88-colors      enable 88 color support])
1161 EL_ARG_ENABLE(CONFIG_256_COLORS, 256-colors, [256 colors],
1162               [  --enable-256-colors     enable 256 color support])
1165 EL_ARG_ENABLE(CONFIG_EXMODE, exmode, [Exmode interface],
1166               [  --enable-exmode         enable exmode (CLI) interface])
1168 EL_ARG_ENABLE(CONFIG_LEDS, leds, [LEDs],
1169               [  --disable-leds          disable LEDs support])
1171 EL_ARG_ENABLE(CONFIG_MARKS, marks, [Marks],
1172               [  --disable-marks         disable document marks support])
1175 EL_ARG_ENABLE(CONFIG_CSS, css, [Cascading Style Sheets],
1176               [  --disable-css           disable Cascading Style Sheet support])
1178 EL_ARG_DEPEND(CONFIG_HTML_HIGHLIGHT, html-highlight, [CONFIG_CSS:yes], [HTML highlighting],
1179               [  --enable-html-highlight HTML highlighting using DOM engine])
1181 dnl Everything in the tree already uses CONFIG_DOM
1182 dnl so resolve CONFIG_HTML_HIGHLIGHT to CONFIG_DOM
1183 EL_CONFIG_DEPENDS(CONFIG_DOM, [CONFIG_HTML_HIGHLIGHT], [DOM engine])
1185 EL_ARG_DEPEND(CONFIG_BACKTRACE, backtrace, [HAVE_EXECINFO:yes], [Backtrace],
1186               [  --disable-backtrace     disable backtrace support])
1188 EL_ARG_DEPEND(CONFIG_NO_ROOT_EXEC, no-root, [HAVE_GETUID:yes HAVE_GETEUID:yes], [No root exec],
1189               [  --enable-no-root        enable prevention of usage by root])
1192 EL_ARG_ENABLE(CONFIG_DEBUG, debug, [Debug mode],
1193               [  --enable-debug          enable leak debug and internal error checking])
1195 EL_ARG_DEPEND(CONFIG_FASTMEM, fastmem, [CONFIG_DEBUG:no], [Fast mode],
1196               [  --enable-fastmem        enable direct use of system allocation functions, not usable with --enable-debug])
1198 EL_ARG_ENABLE(CONFIG_OWN_LIBC, own-libc, [Own libc stubs],
1199               [  --enable-own-libc       force use of internal functions instead of those of system libc])
1201 EL_ARG_ENABLE(CONFIG_SMALL, small, [Small binary],
1202               [  --enable-small          reduce binary size as far as possible (but see the bottom of doc/small.txt!)])
1204 if test "$CONFIG_OPENSSL" != yes &&
1205    test "$CONFIG_GNUTLS_OPENSSL_COMPAT" != yes ||
1206    test "$CONFIG_OWN_LIBC" = yes;
1207 then
1208         AC_MSG_CHECKING(for built-in MD5 support)
1209         AC_MSG_RESULT(yes)
1210         EL_CONFIG(CONFIG_MD5, [Built-in MD5])
1213 AC_SUBST(CONFIG_MD5)
1215 if test "$CONFIG_BITTORRENT" = yes; then
1216         if test "$CONFIG_OPENSSL" != yes ||
1217            test "$CONFIG_OWN_LIBC" = yes;
1218         then
1219                 AC_MSG_CHECKING(for built-in SHA1 support)
1220                 AC_MSG_RESULT(yes)
1221                 EL_CONFIG(CONFIG_SHA1, [Built-in SHA1])
1222         fi
1225 AC_SUBST(CONFIG_SHA1)
1227 if test "$CONFIG_CSS" = yes || test "$CONFIG_DOM" = yes;
1228 then
1229         EL_CONFIG(CONFIG_SCANNER, [Built-in scanner])
1231 AC_SUBST(CONFIG_SCANNER)
1233 AC_ARG_ENABLE(weehoofooboomookerchoo,
1234               [
1235     Also check out the features.conf file for more information about features!
1236               ],
1237               [AC_MSG_ERROR(Are you strange, or what?)])
1240 dnl == EMX hack
1242 test "$CONFIG_OS_OS2" = yes && LDFLAGS="$LDFLAGS -Zexe"
1243 test "$CONFIG_OS_OS2" = yes && LDFLAGS=`echo "$LDFLAGS" | sed "s/-Zbin-files//g"`
1246 dnl ===================================================================
1247 dnl Export directory paths
1248 dnl ===================================================================
1250 # Set up the ``entry points'' if they were not supplied by builder
1251 test "x$prefix" = xNONE && prefix=$ac_default_prefix
1252 test "x$exec_prefix" = xNONE && exec_prefix=${prefix}
1254 # Create CONFDIR #define for config.h
1256 # XXX: This may be dependent on a particular version of autoconf. Whatever,
1257 # it's autoconf fault to force us to do such hacks ;p.
1258 if test x"$sysconfdir" = x"\${prefix}/etc"; then
1259   # sysconfdir is set to its default value... fine, let's append /elinks/
1260   # XXX: We can't modify listing of the default in ./configure --help :-(
1261   sysconfdir_n=`eval echo "$sysconfdir"`
1262   sysconfdir=$sysconfdir_n
1263   (echo "$sysconfdir" | grep elinks >/dev/null 2>/dev/null) || \
1264         sysconfdir="$sysconfdir/elinks"
1267 CONFDIR=$sysconfdir
1268 AC_DEFINE_UNQUOTED(CONFDIR, "$CONFDIR", [Directory containing default config])
1269 AC_SUBST(CONFDIR)
1271 # Create LOCALEDIR #define for config.h
1272 LOCALEDIR=`eval echo "$datadir/locale"`
1273 AC_DEFINE_UNQUOTED(LOCALEDIR, "$LOCALEDIR", [Directory containing locales])
1274 AC_SUBST(LOCALEDIR)
1276 # Create LIBDIR #define for config.h
1277 LIBDIR=`eval echo "$libdir"`
1278 AC_DEFINE_UNQUOTED(LIBDIR, "$LIBDIR", [Directory containing libraries])
1279 AC_SUBST(LIBDIR)
1281 EL_LOG_CONFIG(CONFDIR, [System configuration directory], [])
1282 EL_LOG_CONFIG(LOCALEDIR, [Locale catalogs directory], [])
1284 dnl ===================================================================
1285 dnl A little fine tuning of gcc specific options (continued)
1286 dnl ===================================================================
1288 if test "x$ac_cv_prog_gcc" = "xyes"; then
1289   if test "$CONFIG_DEBUG" = "yes"; then
1290     dnl We want to see all warnings and live with none (in debug mode).
1291     CFLAGS="$CFLAGS -Werror"
1292   fi
1294   case "`$CC -dumpversion`" in
1295     3.0|3.1|3.2)
1296       # These should be ok using -Werror
1297       ;;
1298     3.*)
1299       # If gcc is version 3.3 (or higher?) it emits lots of false positive
1300       # "dereferencing type-punned pointer will break strict-aliasing rules"
1301       # warnings. Disable them by not doing any strict-aliasing. The
1302       # alternative is just too ugly. Thanks gcc guys!! ;)
1303       CFLAGS="$CFLAGS -fno-strict-aliasing"
1304       ;;
1305     4.*)
1306       # Do not show warnings related to (char * | unsigned char *) type
1307       # difference.
1308       CFLAGS="$CFLAGS -fno-strict-aliasing -Wno-pointer-sign"
1309       ;;
1310     *)
1311       # These should be ok using -Werror
1312       ;;
1313   esac
1316 # CFLAGS doesn't contain all compile flags. Some will be added only when
1317 # needed in the respective source directory. To get all compile flags
1318 # easily just add CPPFLAGS.
1319 ALL_CFLAGS="$CFLAGS $CPPFLAGS"
1321 EL_LOG_CONFIG(ALL_CFLAGS, [Compiler options (CFLAGS)], [])
1322 EL_LOG_CONFIG(LIBS, [Linker options (LIBS)], [])
1324 dnl ===================================================================
1325 dnl Colored make output
1326 dnl ===================================================================
1328 if test $(`which tput` colors) -ge 4; then
1329         MAKE_COLOR=1
1330         AC_SUBST(MAKE_COLOR)
1333 dnl ===================================================================
1334 dnl Generated files
1335 dnl ===================================================================
1337 AC_OUTPUT([ \
1338  Makefile.config \
1339  contrib/elinks.spec \
1340  contrib/lua/hooks.lua \
1341  contrib/conv/w3m2links.awk \
1342  doc/man/man1/elinks.1 \
1343  src/intl/gettext/ref-add.sed \
1344  src/intl/gettext/ref-del.sed
1347 abs_srcdir="$(cd "$srcdir" && pwd)"
1348 # builddir is always absolute!
1349 if test "$abs_srcdir" != "$builddir"; then
1350         echo "include $abs_srcdir/Makefile" > "$builddir/Makefile"
1351         "$MAKE" "SRC=$abs_srcdir" init
1355 dnl ===================================================================
1356 dnl Configuration summary
1357 dnl ===================================================================
1359 AC_MSG_RESULT(The following feature summary has been saved to features.log)
1360 cat features.log