1 dnl Process this file with autoconf to produce a configure script.
4 AC_INIT(src/main/main.c)
5 AC_CONFIG_AUX_DIR(config)
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])
23 for make in gnumake gmake make false; do
24 if test "x$MAKE" = x; then
25 AC_PATH_PROGS(MAKE, "$make")
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
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 ===================================================================
51 AC_PATH_PROGS(AWK, "$AWK")
55 AC_PATH_PROGS(CG_COMMIT_ID, "cg-commit-id")
57 AC_PATH_PROGS(SPARSE, "sparse")
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])
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)])
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])
86 AC_PATH_PROGS(POD2HTML, "pod2html")
87 if test "x$POD2HTML" != "x"; then
88 EL_CONFIG(CONFIG_POD2HTML, [Pod2HTML])
92 AC_SUBST(CONFIG_ASCIIDOC)
93 AC_SUBST(CONFIG_POD2HTML)
94 AC_SUBST(CONFIG_XMLTO)
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)
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])
133 AC_TRY_COMPILE(, [#ifndef $flag
135 #endif ], $1=yes, $1=no)
136 if test "[$]$1" = yes; then
137 EL_CONFIG([$1], [$2])
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__])
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])
168 AC_MSG_RESULT($CONFIG_UNIX)
169 AC_SUBST(CONFIG_UNIX)
171 dnl ===================================================================
172 dnl Checks for header files.
173 dnl ===================================================================
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 ===================================================================
213 EL_CHECK_CODE(typeof, HAVE_TYPEOF, [], [int a; typeof(a) b;])
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,
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])
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
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()])
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,[
314 int bar(char *buf, const char *format, va_list ap)
316 return vsnprintf(buf, 0, format, ap);
319 void foo(const char *format, ...) {
323 va_start(ap, format);
324 len = bar(buf, format, ap);
326 if ((len != 6) && (len != 7)) exit(1); /* \n -> \r\n */
328 va_start(ap, format);
329 len = bar(buf, format, ap);
331 if ((len != 6) && (len != 7)) exit(1);
333 if (snprintf(buf, 3, "hello") != 5 || strcmp(buf, "he") != 0) exit(1);
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)
367 test -z "`echo $LIBS | grep -- -lsocket`" && LIBS="$LIBS -lsocket"
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])
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
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";
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])
403 if test "[$]$1" = yes; then
404 EL_CONFIG([$1], [$2])
407 if test -n "[$]WITHVAL_$1" &&
408 test "[$]WITHVAL_$1" != xno; then
409 AC_MSG_ERROR([$2 not found])
414 AC_MSG_RESULT(disabled)
418 dnl EL_CONFIG_OPTIONAL_LIBRARY(define, name, header, lib, function, confhelp)
419 AC_DEFUN([EL_CONFIG_OPTIONAL_LIBRARY],
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 ===================================================================
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
466 EL_ARG_DEPEND(CONFIG_XBEL_BOOKMARKS, xbel, [CONFIG_BOOKMARKS:yes HAVE_LIBEXPAT:yes],
468 [ --disable-xbel disable XBEL bookmark support (requires expat)])
470 if test "$CONFIG_XBEL_BOOKMARKS" != yes; then
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 ===================================================================
485 dnl ===================================================================
487 if test "$CONFIG_OS2" = yes; then
491 dnl ===================================================================
493 dnl ===================================================================
495 if test "$CONFIG_WIN32" = yes; then
499 dnl ===================================================================
500 dnl Check for SpiderMonkey, optional even if installed.
501 dnl ===================================================================
503 AC_ARG_WITH(spidermonkey, [ --without-spidermonkey disable SpiderMonkey Mozilla JavaScript engine support],
504 [if test "$withval" = no; then disable_spidermonkey=yes; fi])
505 AC_MSG_CHECKING([for SpiderMonkey])
510 if test -z "$disable_spidermonkey"; then
511 if test ! -d "$withval"; then
514 for spidermonkeydir in "$withval" "" /usr /usr/local /opt/spidermonkey /opt/js; do
515 for spidermonkeyinclude in "/include" "/include/js" "/include/smjs"; do
516 for spidermonkeylib in js smjs; do
517 if test "$cf_result" = no; then
518 SPIDERMONKEY_LIBS="-l$spidermonkeylib"
520 if test ! -z "$spidermonkeydir"; then
521 SPIDERMONKEY_LIBS="-L$spidermonkeydir/lib $SPIDERMONKEY_LIBS"
522 SPIDERMONKEY_CFLAGS="-I$spidermonkeydir$spidermonkeyinclude"
525 LIBS="$SPIDERMONKEY_LIBS $LIBS_X"
526 CFLAGS="$CFLAGS_X $SPIDERMONKEY_CFLAGS"
527 CPPFLAGS="$CPPFLAGS_X $SPIDERMONKEY_CFLAGS"
529 AC_TRY_LINK([#define XP_UNIX
531 [JS_GetImplementationVersion()],
532 cf_result=yes, cf_result=no)
539 AC_MSG_RESULT($cf_result)
541 if test "$cf_result" != yes; then
544 EL_CONFIG(CONFIG_SPIDERMONKEY, [SpiderMonkey])
547 AC_SUBST(SPIDERMONKEY_LIBS)
548 AC_SUBST(SPIDERMONKEY_CFLAGS)
551 AC_SUBST(CONFIG_SPIDERMONKEY)
553 EL_CONFIG_DEPENDS(CONFIG_ECMASCRIPT, [CONFIG_SPIDERMONKEY], [ECMAScript (JavaScript)])
556 dnl ===================================================================
557 dnl Check for Guile, optional even if installed.
558 dnl ===================================================================
562 AC_ARG_WITH(guile, [ --with-guile enable Guile support],
563 [ if test "x$withval" != xno; then enable_guile=yes; fi ])
565 # The following is probably bad, ugly and so on. Stolen from Guile's (1.4)
566 # GUILE_FLAGS but I really don't want to require people to have Guile in order
567 # to compile CVS. Also, the macro seems to be really stupid regarding searching
568 # for Guile in $PATH etc. --pasky
570 AC_MSG_CHECKING([for Guile])
572 if test "$enable_guile" = "yes"; then
574 ## Based on the GUILE_FLAGS macro.
576 if test -d "$withval"; then
577 GUILE_PATH="$withval:$PATH"
582 AC_PATH_PROG(GUILE_CONFIG, guile-config, no, $GUILE_PATH)
584 ## First, let's just see if we can find Guile at all.
585 if test "$GUILE_CONFIG" != no; then
588 GUILE_LIBS="`guile-config link`"
589 GUILE_CFLAGS="`guile-config compile`"
590 LIBS="$GUILE_LIBS $LIBS"
591 CPPFLAGS="$CPPFLAGS $GUILE_CFLAGS"
592 EL_CONFIG(CONFIG_GUILE, [Guile])
593 AC_SUBST(GUILE_CFLAGS)
595 ***********************************************************************
596 The Guile support is incomplete and not so well integrated to ELinks
597 yet. That means, ie., that you have no Guile console and there might
598 not be all the necessary hooks. Also, the Guile interface is not too
599 well tested (success stories heartily welcomed!). See
600 src/scripting/guile/README for further details and hints.
601 ***********************************************************************
604 if test -n "$withval" && test "x$withval" != xno; then
605 AC_MSG_ERROR([Guile not found])
607 AC_MSG_WARN([Guile support disabled])
614 dnl ===================================================================
616 dnl ===================================================================
619 AC_ARG_WITH(perl, [ --with-perl enable Perl support],
621 if test "$withval" = yes; then
622 # FIXME: If withval is a valid directory append it to PATH
623 # so that you can specify one of several perl installations.
629 AC_MSG_CHECKING([for Perl])
635 if test "$enable_perl" = "yes"; then
636 PERL_LIBS="`perl -MExtUtils::Embed -e ldopts`"
637 PERL_CFLAGS="`perl -MExtUtils::Embed -e ccopts`"
638 LIBS="$PERL_LIBS $LIBS"
639 CFLAGS="$PERL_CFLAGS $CFLAGS"
640 CPPFLAGS="$CPPFLAGS $PERL_CFLAGS"
646 [PerlInterpreter *my_perl = perl_alloc();],
647 cf_result=yes, cf_result=no)
650 if test "$cf_result" != "yes"; then
653 EL_CONFIG(CONFIG_PERL, [Perl])
657 AC_SUBST(PERL_CFLAGS)
660 if test "$cf_result"; then AC_MSG_RESULT($cf_result); fi
661 dnl ===================================================================
663 dnl ===================================================================
666 AC_ARG_WITH(python, [ --with-python enable Python support],
668 if test "$withval" = yes; then
669 # FIXME: If withval is a valid directory append it to PATH
670 # so that you can specify one of several Python installations.
674 ***********************************************************************
675 The Python support is incomplete and not so well integrated to ELinks
676 yet. That means, ie., that you have no Python console and there might
677 not be all the necessary hooks. Also, the Python interface is not too
678 well tested (success stories heartily welcomed!).
679 ***********************************************************************
684 AC_MSG_CHECKING([for Python])
690 if test "$enable_python" = "yes"; then
691 PYTHON_LIBS="-lpython"
692 PYTHON_CFLAGS="-I`python -c 'from distutils import sysconfig; print sysconfig.get_python_inc()' 2> /dev/null`"
693 LIBS="$PYTHON_LIBS $LIBS"
694 CFLAGS="$PYTHON_CFLAGS $CFLAGS"
695 CPPFLAGS="$CPPFLAGS $PYTHON_CFLAGS"
700 cf_result=yes, cf_result=no)
703 if test "$cf_result" != "yes"; then
706 EL_CONFIG(CONFIG_PYTHON, [Python])
709 AC_SUBST(PYTHON_LIBS)
710 AC_SUBST(PYTHON_CFLAGS)
713 if test "$cf_result"; then AC_MSG_RESULT($cf_result); fi
716 dnl ===================================================================
717 dnl Check for Lua, optional even if installed.
718 dnl ===================================================================
720 dnl Do this the long way, as FreeBSD reportedly needs -L<dir> for
721 dnl anything other than /usr/lib, and Lua is very often in /usr/local/lib.
723 AC_ARG_WITH(lua, [ --without-lua disable Lua support],
724 [if test "$withval" = no; then disable_lua=yes; fi])
725 AC_MSG_CHECKING([for Lua])
730 if test -z "$disable_lua"; then
731 if test ! -d "$withval"; then
734 for luadir in "$withval" "" /usr /usr/local; do
735 for suffix in "" 50 51; do
736 if test "$cf_result" = no; then
737 LUA_LIBS="-llua$suffix -llualib$suffix -lm"
739 if test ! -z "$luadir"; then
740 LUA_LIBS="-L$luadir/lib $LUA_LIBS"
741 LUA_CFLAGS="-I$luadir/include -I$luadir/include/lua$suffix"
744 LIBS="$LUA_LIBS $LIBS_X"
745 CFLAGS="$CFLAGS_X $LUA_CFLAGS"
746 CPPFLAGS="$CPPFLAGS_X $LUA_CFLAGS"
748 # Check that it is a compatible Lua version
749 AC_TRY_LINK([ #include <lua.h>
750 #include <lualib.h>],
751 [ lua_State *L = lua_open();
756 lua_pushboolean(L, 1);
758 cf_result=yes, cf_result=no)
764 AC_MSG_RESULT($cf_result)
766 if test "$cf_result" != yes; then
769 EL_CONFIG(CONFIG_LUA, [Lua])
770 AC_CHECK_HEADERS(lauxlib.h)
778 dnl ===================================================================
779 dnl Check for Ruby, optional even if installed.
780 dnl ===================================================================
784 dnl ===================================================================
785 dnl Optional Spidermonkey-based ECMAScript browser scripting
786 dnl ===================================================================
788 AC_ARG_ENABLE(sm-scripting,
789 [ --disable-sm-scripting ECMAScript browser scripting (requires Spidermonkey)],
790 [if test "$enableval" != no; then enableval="yes"; fi
791 CONFIG_SM_SCRIPTING="$enableval";])
793 if test "x$CONFIG_SPIDERMONKEY" = xyes &&
794 test "x$CONFIG_SM_SCRIPTING" = xyes; then
795 EL_CONFIG(CONFIG_SM_SCRIPTING, [SpiderMonkey])
797 CONFIG_SM_SCRIPTING=no
800 dnl ===================================================================
801 dnl Setup global scripting
802 dnl ===================================================================
804 EL_CONFIG_DEPENDS(CONFIG_SCRIPTING, [CONFIG_GUILE CONFIG_LUA CONFIG_PERL CONFIG_PYTHON CONFIG_RUBY CONFIG_SM_SCRIPTING], [Browser scripting])
805 AC_SUBST(CONFIG_GUILE)
807 AC_SUBST(CONFIG_PERL)
808 AC_SUBST(CONFIG_PYTHON)
809 AC_SUBST(CONFIG_RUBY)
810 AC_SUBST(CONFIG_SM_SCRIPTING)
811 AC_SUBST(CONFIG_SCRIPTING)
814 dnl ===================================================================
815 dnl Check for SSL support.
816 dnl ===================================================================
818 dnl We by default use OpenSSL, and we always prefer it. However, when GNUTLS
819 dnl is enabled, we won't try to use OpenSSL anymore.
821 dnl For wiping SSL hooks..
828 AC_ARG_WITH(gnutls, [ --without-gnutls disable GNUTLS SSL support],
829 [if test "$with_gnutls" = no; then disable_gnutls=yes; fi])
830 AC_ARG_WITH(gnutls, [ --with-gnutls[=DIR] enable GNUTLS SSL support],
831 [if test "$with_gnutls" != no; then enable_gnutls=yes; fi])
832 gnutls_withval="$withval"
834 if test "$enable_gnutls" = yes; then
838 AC_ARG_WITH(openssl, [ --without-openssl disable OpenSSL support],
839 [if test "$with_openssl" = no; then disable_openssl=yes; fi])
840 AC_ARG_WITH(openssl, [ --with-openssl[=DIR] enable OpenSSL support (default)])
841 openssl_withval="$withval"
845 AC_MSG_CHECKING([for OpenSSL])
850 if test "$disable_openssl" = yes; then
853 for ssldir in "$openssl_withval" "" /usr /usr/local/openssl \
854 /usr/lib/openssl /usr/local/ssl \
855 /usr/local/www /usr/lib/ssl /usr/local \
856 /usr/pkg /opt /opt/openssl; do
857 if test "$cf_result" = no; then
858 if test -d "$ssldir"; then
859 OPENSSL_CFLAGS="-I$ssldir/include"
860 LIBS="-L$ssldir/lib -lssl -lcrypto $LIBS_X"
861 CFLAGS="$CFLAGS_X $OPENSSL_CFLAGS"
862 CPPFLAGS="$CPPFLAGS_X $OPENSSL_CFLAGS"
863 # # FIXME: This created serious portability problems. --pasky
864 # if test "$CC" == "gcc"; then
865 # # I'm not sure about compatibility here. --pasky
866 # LIBS="$LIBS -R$ssldir/lib"
869 LIBS="-lssl -lcrypto $LIBS_X"
871 AC_TRY_LINK([#include <openssl/ssl.h>],
872 [OpenSSL_add_all_algorithms()],
873 cf_result=yes, cf_result=no)
874 if test "$cf_result" != yes; then
875 AC_TRY_LINK([#include <openssl/ssl.h>],
876 [SSLeay_add_ssl_algorithms()],
877 cf_result=yes, cf_result=no)
882 if test "$cf_result" != yes; then
883 if test -n "$openssl_withval" && test "x$openssl_withval" != xno; then
884 AC_MSG_ERROR([OpenSSL not found])
888 EL_CONFIG(CONFIG_OPENSSL, [OpenSSL])
891 AC_SUBST(OPENSSL_CFLAGS)
895 AC_MSG_RESULT($cf_result)
898 dnl We can't have AC_MSG_CHECKING here, because AC_PATH_PROG prints its own and
899 dnl it looks ugly then.
901 if test "$cf_result" = yes; then
908 if test -z "$disable_gnutls"; then
909 # Sure, we maybe _could_ use their macro, but how to ensure
910 # that the ./configure script won't fail if the macro won't be
911 # found..? :( --pasky
913 GNUTLS_PATH="$PATH:/usr/local/gnutls:/opt:/opt/gnutls"
915 if test -d "$gnutls_withval"; then
916 GNUTLS_PATH="$gnutls_withval:$GNUTLS_PATH"
919 AC_PATH_PROG(LIBGNUTLS_CONFIG, libgnutls-config, no, $GNUTLS_PATH)
921 if test "$LIBGNUTLS_CONFIG" = "no" ; then
924 GNUTLS_CFLAGS=`$LIBGNUTLS_CONFIG --cflags`
925 GNUTLS_LIBS=`$LIBGNUTLS_CONFIG --libs`
927 LIBS="$GNUTLS_LIBS $LIBS_X"
928 CFLAGS="$CFLAGS_X $GNUTLS_CFLAGS"
929 CPPFLAGS="$CPPFLAGS_X $GNUTLS_CFLAGS"
931 # Verify if it's really usable. gnutls_session was
932 # renamed to gnutls_session_t before GNU TLS 1.2.0
933 # (on 2004-06-13); ELinks now requires this.
934 AC_TRY_LINK([#include <gnutls/gnutls.h>],
935 [gnutls_session_t dummy;
936 gnutls_check_version(NULL)],
937 cf_result=yes, cf_result=no)
940 if test "$cf_result" = yes; then
941 EL_CONFIG(CONFIG_GNUTLS, [GNUTLS])
944 AC_SUBST(GNUTLS_CFLAGS)
946 # Verify if the MD5 compatibility layer is usable.
947 CONFIG_GNUTLS_OPENSSL_COMPAT=yes
948 EL_CHECK_OPTIONAL_LIBRARY(CONFIG_GNUTLS_OPENSSL_COMPAT,
949 [GNU TLS OpenSSL compatibility],
950 gnutls/openssl.h, gnutls-openssl,
953 if test -n "$gnutls_withval" && test "x$gnutls_withval" != xno; then
954 AC_MSG_ERROR([GNUTLS (1.2 or later) not found. ELinks no longer supports GNUTLS 1.1.])
961 AC_MSG_CHECKING([for GNU TLS (1.2 or later)])
962 AC_MSG_RESULT($cf_result)
966 EL_CONFIG_DEPENDS(CONFIG_SSL, [CONFIG_OPENSSL CONFIG_GNUTLS], [SSL])
967 AC_SUBST(CONFIG_OPENSSL)
968 AC_SUBST(CONFIG_GNUTLS)
972 AC_MSG_CHECKING([whether to be or not to be])
973 AC_MSG_RESULT([needs to be determined experimentally])
975 dnl ===================================================================
976 dnl Check for IPv6 support and related functions.
977 dnl ===================================================================
979 EL_CHECK_NET_TYPE(struct sockaddr_storage, HAVE_SA_STORAGE, [])
980 EL_CHECK_NET_TYPE(struct sockaddr_in6, HAVE_SA_IN6, [#include <netinet/in.h>])
981 EL_CHECK_NET_TYPE(struct addrinfo, HAVE_ADDRINFO, [#include <netdb.h>])
983 AC_CHECK_FUNC(getaddrinfo, HAVE_GETADDRINFO=yes, HAVE_GETADDRINFO=no)
984 if test "$HAVE_GETADDRINFO" != yes; then
985 AC_CHECK_LIB(inet6, getaddrinfo, HAVE_GETADDRINFO=yes, HAVE_GETADDRINFO=no)
986 if test "$HAVE_GETADDRINFO" = yes; then
992 dnl ===================================================================
993 dnl Checking for X11 (window title restoring).
994 dnl ===================================================================
997 if test x"$no_x" != xyes; then
998 if test -n "$x_includes"; then
999 X_CFLAGS="-I$x_includes"
1000 CPPFLAGS="$CPPFLAGS -I$x_includes"
1002 if test -n "$x_libraries"; then
1003 LDFLAGS="$LDFLAGS -L$x_libraries"
1006 EL_DEFINE(HAVE_X11, [X11 for restoring window titles])
1011 dnl ===================================================================
1012 dnl Backtraces displaying support.
1013 dnl ===================================================================
1015 AC_CHECK_HEADERS(execinfo.h, HAVE_EXECINFO=yes, HAVE_EXECINFO=no)
1016 # possible checks for other system-specific means go here
1019 dnl ===================================================================
1020 dnl SMB protocol support.
1021 dnl ===================================================================
1023 AC_CHECK_PROG(HAVE_SMBCLIENT, smbclient, yes, no)
1026 dnl ===================================================================
1027 dnl Gettext grey zone. Beware.
1028 dnl ===================================================================
1030 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"
1034 dnl AC_MSG_CHECKING([how many characters your English alphabet has])
1035 dnl # f33r d4 l33t... I hope it's portable. :)
1036 dnl cf_result=$((48#z - 48#a + 1));
1037 dnl AC_MSG_RESULT($cf_result)
1040 dnl ===================================================================
1041 dnl Compile-time features control
1042 dnl ===================================================================
1044 EL_ARG_ENABLE(CONFIG_COOKIES, cookies, [Cookies],
1045 [ --disable-cookies disable cookie support])
1047 EL_ARG_ENABLE(CONFIG_FORMHIST, formhist, [Form history],
1048 [ --disable-formhist disable form history support])
1050 EL_ARG_ENABLE(CONFIG_GLOBHIST, globhist, [Global history],
1051 [ --disable-globhist disable global history support])
1054 EL_ARG_ENABLE(CONFIG_MAILCAP, mailcap, [Mailcap],
1055 [ --disable-mailcap disable mailcap support])
1057 EL_ARG_ENABLE(CONFIG_MIMETYPES, mimetypes, [Mimetypes files],
1058 [ --disable-mimetypes disable mimetypes files support])
1061 EL_ARG_DEPEND(CONFIG_IPV6, ipv6,
1062 [HAVE_SA_STORAGE:yes HAVE_SA_IN6:yes HAVE_ADDRINFO:yes HAVE_GETADDRINFO:yes],
1064 [ --disable-ipv6 disable IPv6 support])
1066 EL_ARG_ENABLE(CONFIG_BITTORRENT, bittorrent, [BitTorrent protocol],
1067 [ --enable-bittorrent enable BitTorrent protocol support])
1069 EL_ARG_ENABLE(CONFIG_DATA, data, [Data protocol],
1070 [ --disable-data disable data protocol support])
1072 EL_ARG_ENABLE(CONFIG_URI_REWRITE, uri-rewrite, [URI rewriting],
1073 [ --disable-uri-rewrite disable URI rewrite support])
1075 EL_ARG_DEPEND(CONFIG_CGI, cgi, [HAVE_SETENV_OR_PUTENV:yes], [Local CGI],
1076 [ --enable-cgi enable local CGI support])
1078 EL_ARG_ENABLE(CONFIG_FINGER, finger, [Finger protocol],
1079 [ --enable-finger enable finger protocol support])
1081 EL_ARG_ENABLE(CONFIG_FTP, ftp, [FTP protocol],
1082 [ --disable-ftp disable ftp protocol support])
1084 EL_ARG_ENABLE(CONFIG_GOPHER, gopher, [Gopher protocol],
1085 [ --enable-gopher enable gopher protocol support])
1087 EL_ARG_ENABLE(CONFIG_NNTP, nntp, [NNTP protocol],
1088 [ --enable-nntp enable nntp protocol support])
1090 EL_ARG_DEPEND(CONFIG_SMB, smb, [HAVE_SMBCLIENT:yes], [SMB protocol],
1091 [ --disable-smb disable SMB protocol support (requires smbclient)])
1094 EL_ARG_ENABLE(CONFIG_MOUSE, mouse, [Mouse handling],
1095 [ --disable-mouse disable mouse support])
1097 # GPM mouse is Linux specific, so ...
1099 EL_ARG_DEPEND(CONFIG_SYSMOUSE, sysmouse,
1100 [CONFIG_MOUSE:yes CONFIG_GPM:no HAVE_SYSMOUSE_HEADER:yes],
1102 [ --disable-sysmouse disable BSD sysmouse support])
1104 EL_ARG_ENABLE(CONFIG_88_COLORS, 88-colors, [88 colors],
1105 [ --enable-88-colors enable 88 color support])
1107 EL_ARG_ENABLE(CONFIG_256_COLORS, 256-colors, [256 colors],
1108 [ --enable-256-colors enable 256 color support])
1111 EL_ARG_ENABLE(CONFIG_EXMODE, exmode, [Exmode interface],
1112 [ --enable-exmode enable exmode (CLI) interface])
1114 EL_ARG_ENABLE(CONFIG_LEDS, leds, [LEDs],
1115 [ --disable-leds disable LEDs support])
1117 EL_ARG_ENABLE(CONFIG_MARKS, marks, [Marks],
1118 [ --disable-marks disable document marks support])
1121 EL_ARG_ENABLE(CONFIG_CSS, css, [Cascading Style Sheets],
1122 [ --disable-css disable Cascading Style Sheet support])
1124 EL_ARG_DEPEND(CONFIG_HTML_HIGHLIGHT, html-highlight, [CONFIG_CSS:yes], [HTML highlighting],
1125 [ --enable-html-highlight HTML highlighting using DOM engine])
1127 dnl Everything in the tree already uses CONFIG_DOM
1128 dnl so resolve CONFIG_HTML_HIGHLIGHT to CONFIG_DOM
1129 EL_CONFIG_DEPENDS(CONFIG_DOM, [CONFIG_HTML_HIGHLIGHT], [DOM engine])
1131 EL_ARG_DEPEND(CONFIG_BACKTRACE, backtrace, [HAVE_EXECINFO:yes], [Backtrace],
1132 [ --disable-backtrace disable backtrace support])
1134 EL_ARG_DEPEND(CONFIG_NO_ROOT_EXEC, no-root, [HAVE_GETUID:yes HAVE_GETEUID:yes], [No root exec],
1135 [ --enable-no-root enable prevention of usage by root])
1138 EL_ARG_ENABLE(CONFIG_DEBUG, debug, [Debug mode],
1139 [ --enable-debug enable leak debug and internal error checking])
1141 EL_ARG_DEPEND(CONFIG_FASTMEM, fastmem, [CONFIG_DEBUG:no], [Fast mode],
1142 [ --enable-fastmem enable direct use of system allocation functions, not usable with --enable-debug])
1144 EL_ARG_ENABLE(CONFIG_OWN_LIBC, own-libc, [Own libc stubs],
1145 [ --enable-own-libc force use of internal functions instead of those of system libc])
1147 EL_ARG_ENABLE(CONFIG_SMALL, small, [Small binary],
1148 [ --enable-small reduce binary size as far as possible (but see the bottom of doc/small.txt!)])
1150 if test "$CONFIG_OPENSSL" != yes &&
1151 test "$CONFIG_GNUTLS_OPENSSL_COMPAT" != yes ||
1152 test "$CONFIG_OWN_LIBC" = yes;
1154 AC_MSG_CHECKING(for built-in MD5 support)
1156 EL_CONFIG(CONFIG_MD5, [Built-in MD5])
1159 AC_SUBST(CONFIG_MD5)
1161 if test "$CONFIG_BITTORRENT" = yes; then
1162 if test "$CONFIG_OPENSSL" != yes ||
1163 test "$CONFIG_OWN_LIBC" = yes;
1165 AC_MSG_CHECKING(for built-in SHA1 support)
1167 EL_CONFIG(CONFIG_SHA1, [Built-in SHA1])
1171 AC_SUBST(CONFIG_SHA1)
1173 if test "$CONFIG_CSS" = yes || test "$CONFIG_DOM" = yes;
1175 EL_CONFIG(CONFIG_SCANNER, [Built-in scanner])
1177 AC_SUBST(CONFIG_SCANNER)
1179 AC_ARG_ENABLE(weehoofooboomookerchoo,
1181 Also check out the features.conf file for more information about features!
1183 [AC_MSG_ERROR(Are you strange, or what?)])
1188 test "$CONFIG_OS2" = yes && LDFLAGS="$LDFLAGS -Zexe"
1189 test "$CONFIG_OS2" = yes && LDFLAGS=`echo "$LDFLAGS" | sed "s/-Zbin-files//g"`
1192 dnl ===================================================================
1193 dnl Export directory paths
1194 dnl ===================================================================
1196 # Set up the ``entry points'' if they were not supplied by builder
1197 test "x$prefix" = xNONE && prefix=$ac_default_prefix
1198 test "x$exec_prefix" = xNONE && exec_prefix=${prefix}
1200 # Create CONFDIR #define for config.h
1202 # XXX: This may be dependent on a particular version of autoconf. Whatever,
1203 # it's autoconf fault to force us to do such hacks ;p.
1204 if test x"$sysconfdir" = x"\${prefix}/etc"; then
1205 # sysconfdir is set to its default value... fine, let's append /elinks/
1206 # XXX: We can't modify listing of the default in ./configure --help :-(
1207 sysconfdir_n=`eval echo "$sysconfdir"`
1208 sysconfdir=$sysconfdir_n
1209 (echo "$sysconfdir" | grep elinks >/dev/null 2>/dev/null) || \
1210 sysconfdir="$sysconfdir/elinks"
1214 AC_DEFINE_UNQUOTED(CONFDIR, "$CONFDIR", [Directory containing default config])
1217 # Create LOCALEDIR #define for config.h
1218 LOCALEDIR=`eval echo "$datadir/locale"`
1219 AC_DEFINE_UNQUOTED(LOCALEDIR, "$LOCALEDIR", [Directory containing locales])
1222 # Create LIBDIR #define for config.h
1223 LIBDIR=`eval echo "$libdir"`
1224 AC_DEFINE_UNQUOTED(LIBDIR, "$LIBDIR", [Directory containing libraries])
1227 EL_LOG_CONFIG(CONFDIR, [System configuration directory], [])
1228 EL_LOG_CONFIG(LOCALEDIR, [Locale catalogs directory], [])
1230 dnl ===================================================================
1231 dnl A little fine tuning of gcc specific options (continued)
1232 dnl ===================================================================
1234 if test "x$ac_cv_prog_gcc" = "xyes"; then
1235 if test "$CONFIG_DEBUG" = "yes"; then
1236 dnl We want to see all warnings and live with none (in debug mode).
1237 CFLAGS="$CFLAGS -Werror"
1240 case "`$CC -dumpversion`" in
1242 # These should be ok using -Werror
1245 # If gcc is version 3.3 (or higher?) it emits lots of false positive
1246 # "dereferencing type-punned pointer will break strict-aliasing rules"
1247 # warnings. Disable them by not doing any strict-aliasing. The
1248 # alternative is just too ugly. Thanks gcc guys!! ;)
1249 CFLAGS="$CFLAGS -fno-strict-aliasing"
1252 # Do not show warnings related to (char * | unsigned char *) type
1254 CFLAGS="$CFLAGS -fno-strict-aliasing -Wno-pointer-sign"
1257 # These should be ok using -Werror
1262 # CFLAGS doesn't contain all compile flags. Some will be added only when
1263 # needed in the respective source directory. To get all compile flags
1264 # easily just add CPPFLAGS.
1265 ALL_CFLAGS="$CFLAGS $CPPFLAGS"
1267 EL_LOG_CONFIG(ALL_CFLAGS, [Compiler options (CFLAGS)], [])
1268 EL_LOG_CONFIG(LIBS, [Linker options (LIBS)], [])
1270 dnl ===================================================================
1271 dnl Colored make output
1272 dnl ===================================================================
1274 if test $(`which tput` colors) -ge 4; then
1276 AC_SUBST(MAKE_COLOR)
1279 dnl ===================================================================
1281 dnl ===================================================================
1285 contrib/elinks.spec \
1286 contrib/lua/hooks.lua \
1287 contrib/conv/w3m2links.awk \
1288 doc/man/man1/elinks.1 \
1289 src/intl/gettext/ref-add.sed \
1290 src/intl/gettext/ref-del.sed
1293 abs_srcdir="$(cd "$srcdir" && pwd)"
1294 # builddir is always absolute!
1295 if test "$abs_srcdir" != "$builddir"; then
1296 echo "include $abs_srcdir/Makefile" > "$builddir/Makefile"
1297 "$MAKE" "SRC=$abs_srcdir" init
1301 dnl ===================================================================
1302 dnl Configuration summary
1303 dnl ===================================================================
1305 AC_MSG_RESULT(The following feature summary has been saved to features.log)