a28a7b7c3cf2b84b2d4bea0c0fc18cf594bc9e1c
[oweals/gnunet.git] / configure.ac
1 # This file is part of GNUnet.
2 # (C) 2001--2010 Christian Grothoff (and other contributing authors)
3 #
4 # GNUnet is free software; you can redistribute it and/or modify
5 # it under the terms of the GNU General Public License as published
6 # by the Free Software Foundation; either version 2, or (at your
7 # option) any later version.
8 #
9 # GNUnet is distributed in the hope that it will be useful, but
10 # WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12 # General Public License for more details.
13 #
14 # You should have received a copy of the GNU General Public License
15 # along with GNUnet; see the file COPYING.  If not, write to the
16 # Free Software Foundation, Inc., 59 Temple Place - Suite 330,
17 # Boston, MA 02111-1307, USA.
18 #
19 #
20 # Process this file with autoconf to produce a configure script.
21 #
22 #
23 AC_PREREQ(2.61)
24 AC_INIT([gnunet], [0.9.0pre1],[bug-gnunet@gnu.org])
25 AM_INIT_AUTOMAKE([gnunet], [0.9.0pre1])
26 AC_CONFIG_HEADERS([gnunet_config.h])
27
28 AH_TOP([#define _GNU_SOURCE  1])
29
30 # Checks for programs.
31 AC_CANONICAL_HOST
32 AC_PROG_AWK
33 AC_PROG_CC
34 AC_PROG_CPP
35 AC_PROG_CXX
36 AC_PROG_OBJC
37 AC_PROG_INSTALL
38 AC_PROG_LN_S
39 AC_PROG_MAKE_SET
40 AM_PROG_CC_C_O
41 AC_CANONICAL_HOST
42 LT_INIT([disable-static dlopen win32-dll])
43 LTDL_INIT
44 AC_SUBST(LTDLINCL)
45 AC_SUBST(LIBLTDL)
46 AC_SUBST(MKDIR_P)
47
48 # large file support
49 AC_SYS_LARGEFILE
50 AC_FUNC_FSEEKO
51
52
53 if test "$enable_shared" = "no"
54 then
55  AC_MSG_ERROR([GNUnet only works with shared libraries. Sorry.])
56 fi
57
58 CFLAGS="-Wall $CFLAGS"
59 # use '-fno-strict-aliasing', but only if the compiler can take it
60 if gcc -fno-strict-aliasing -S -o /dev/null -xc /dev/null >/dev/null 2>&1;
61 then
62  CFLAGS="-fno-strict-aliasing $CFLAGS"
63 fi
64
65 # Use Linux interface name unless the OS has a different preference
66 DEFAULT_INTERFACE="\"eth0\""
67
68 # Check system type
69 case "$host_os" in
70 *darwin* | *rhapsody* | *macosx*)
71      AC_DEFINE_UNQUOTED(DARWIN,1,[This is an Apple Darwin system])
72      CPPFLAGS="-D_APPLE_C_SOURCE $CPPFLAGS"
73      CFLAGS="-no-cpp-precomp -fno-common $CFLAGS"
74      AC_MSG_WARN([The VPN application cannot be compiled on your OS])
75      build_target="darwin"
76      DEFAULT_INTERFACE="\"en0\""
77      LIBPREFIX=
78      DLLDIR=lib
79      ;;
80 linux*)
81      AC_DEFINE_UNQUOTED(LINUX,1,[This is a Linux system])
82      build_target="linux"
83      LIBPREFIX=
84      DLLDIR=lib
85      AC_PATH_XTRA
86      ;;
87 freebsd*)
88      AC_DEFINE_UNQUOTED(SOMEBSD,1,[This is a BSD system])
89      AC_DEFINE_UNQUOTED(FREEBSD,1,[This is a FreeBSD system])
90      CFLAGS="-D_THREAD_SAFE $CFLAGS"
91      build_target="freebsd"
92      LIBPREFIX=
93      DLLDIR=lib
94      ;;
95 openbsd*)
96      AC_DEFINE_UNQUOTED(SOMEBSD,1,[This is a BSD system])
97      AC_DEFINE_UNQUOTED(OPENBSD,1,[This is an OpenBSD system])
98      LIBS=`echo $LIBS | sed -e "s/-ldl//"`
99      build_target="openbsd"
100      LIBPREFIX=
101      DLLDIR=lib
102      ;;
103 netbsd*)
104      AC_DEFINE_UNQUOTED(SOMEBSD,1,[This is a BSD system])
105      AC_DEFINE_UNQUOTED(NETBSD,1,[This is a NetBSD system])
106      LIBPREFIX=
107      DLLDIR=lib
108      ;;
109 *solaris*)
110      AC_DEFINE_UNQUOTED(SOLARIS,1,[This is a Solaris system])
111      AC_DEFINE_UNQUOTED(_REENTRANT,1,[Need with solaris or errno doesnt work])
112      AC_CHECK_LIB(resolv, res_init)
113      AC_CHECK_LIB(rt, nanosleep)
114      build_target="solaris"
115      LIBPREFIX=
116      DLLDIR=lib
117      ;;
118 *arm-linux*)
119      AC_DEFINE_UNQUOTED(LINUX,1,[This is a Linux system])
120      CFLAGS="-D_REENTRANT -fPIC -pipe $CFLAGS"
121      build_target="linux"
122      LIBPREFIX=
123      DLLDIR=lib
124      ;;
125 *cygwin*)
126      AC_DEFINE_UNQUOTED(CYGWIN,1,[This is a Cygwin system])
127      AC_DEFINE_UNQUOTED(WINDOWS,1,[This is a Windows system])
128      AC_CHECK_LIB(intl, gettext)
129      LDFLAGS="$LDFLAGS -no-undefined"
130      CFLAGS="-mms-bitfields $CFLAGS"
131      build_target="cygwin"
132      LIBPREFIX=lib
133      DLLDIR=bin
134      AC_PROG_CXX
135      ;;
136 *mingw*)
137      AC_DEFINE_UNQUOTED(MINGW,1,[This is a MinGW system])
138      AC_DEFINE_UNQUOTED(WINDOWS,1,[This is a Windows system])
139      AC_DEFINE_UNQUOTED(_WIN32,1,[This is a Windows system])
140      AC_CHECK_LIB(intl, gettext)
141      LDFLAGS="$LDFLAGS -no-undefined -Wl,--export-all-symbols"
142      LIBS="$LIBS -lws2_32 -lplibc"
143      CFLAGS="-mms-bitfields $CFLAGS"
144      build_target="mingw"
145      AC_PROG_CXX
146      LIBPREFIX=lib
147      DLLDIR=bin
148      ;;
149 *)
150      AC_MSG_RESULT(Unrecognised OS $host_os)
151      AC_DEFINE_UNQUOTED(OTHEROS,1,[Some strange OS])
152 ;;
153 esac
154 AC_DEFINE_UNQUOTED([GNUNET_DEFAULT_INTERFACE], $DEFAULT_INTERFACE, [This should be the default choice for the name of the first network interface])
155 AC_SUBST(DEFAULT_INTERFACE)
156
157 AC_MSG_CHECKING([for build target])
158 AM_CONDITIONAL(DARWIN,  test "$build_target" = "darwin")
159 AM_CONDITIONAL(CYGWIN,  test "$build_target" = "cygwin")
160 AM_CONDITIONAL(MINGW,   test "$build_target" = "mingw")
161 AM_CONDITIONAL(SOLARIS, test "$build_target" = "solaris")
162 AM_CONDITIONAL(XFREEBSD, test "$build_target" = "freebsd")
163 AM_CONDITIONAL(OPENBSD, test "$build_target" = "openbsd")
164 AM_CONDITIONAL(LINUX, test "$build_target" = "linux")
165 AC_MSG_RESULT([$build_target])
166 AC_SUBST(build_target)
167 AM_CONDITIONAL([am__fastdepOBJC], false)
168 AC_UNALIGNED_64_ACCESS
169
170 # some other checks for standard libs
171 AC_SEARCH_LIBS([gethostbyname], [nsl ws2_32])
172 AC_CHECK_LIB(socket, socket)
173 AC_CHECK_LIB(m, log)
174 AC_CHECK_LIB(c, getloadavg, AC_DEFINE(HAVE_GETLOADAVG,1,[getloadavg supported]))
175
176 # 'save' libs; only those libs found so far will be
177 # linked against _everywhere_.  For the others, we
178 # will be more selective!
179 SAVE_LIBS=$LIBS
180
181 # libgcrypt
182 gcrypt=0
183 AM_PATH_LIBGCRYPT(1.2.0, gcrypt=1)
184
185 if test $gcrypt = 0
186 then
187   AC_MSG_ERROR([GNUnet needs libgcrypt])
188 fi
189
190
191 # libcurl
192 LIBCURL_CHECK_CONFIG(,7.15.4,,AC_MSG_ERROR([GNUnet requires libcurl >= 7.15.4]))
193 # restore LIBS
194 LIBS=$SAVE_LIBS
195
196 # restore LIBS
197 LIBS=$SAVE_LIBS
198
199 # test for kvm and kstat (for CPU stats under BSD/Solaris)
200 AC_CHECK_LIB([kvm],[kvm_open])
201 AC_CHECK_LIB([kstat],[kstat_open])
202
203 # test for libextractor
204 extractor=0
205 AC_MSG_CHECKING(for libextractor)
206 AC_ARG_WITH(extractor,
207    [  --with-extractor=PFX    base of libextractor installation],
208    [AC_MSG_RESULT([$with_extractor])
209     case $with_extractor in
210       no)
211         ;;
212       yes)
213         AC_CHECK_HEADERS(extractor.h,
214           AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
215             extractor=1))
216         ;;
217       *)
218         LDFLAGS="-L$with_extractor/lib $LDFLAGS"
219         CPPFLAGS="-I$with_extractor/include $CPPFLAGS"
220         AC_CHECK_HEADERS(extractor.h,
221           AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
222             EXT_LIB_PATH="-L$with_extractor/lib $EXT_LIB_PATH"
223             extractor=1))
224         ;;
225     esac
226    ],
227    [AC_MSG_RESULT([--with-extractor not specified])
228     AC_CHECK_HEADERS(extractor.h,
229      AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
230       extractor=1))])
231 if test "$extractor" != 1
232 then
233  AC_MSG_ERROR([GNUnet requires libextractor])
234 fi
235 # restore LIBS
236 LIBS=$SAVE_LIBS
237
238
239 # Checks for standard header files.
240 AC_HEADER_DIRENT
241 AC_HEADER_STDC
242
243 # Check for headers that are ALWAYS required
244 AC_CHECK_HEADERS([fcntl.h math.h errno.h ctype.h limits.h stdio.h stdlib.h string.h unistd.h stdarg.h signal.h locale.h sys/stat.h sys/types.h],,AC_MSG_ERROR([Compiling GNUnet requires standard UNIX headers files]))
245
246 # Checks for headers that are only required on some systems or opional (and where we do NOT abort if they are not there)
247 AC_CHECK_HEADERS([langinfo.h sys/param.h sys/mount.h sys/statvfs.h sys/select.h sockLib.h sys/mman.h sys/msg.h sys/vfs.h arpa/inet.h fcntl.h libintl.h netdb.h netinet/in.h sys/ioctl.h sys/socket.h sys/time.h unistd.h kstat.h sys/sysinfo.h kvm.h sys/file.h sys/resource.h ifaddrs.h mach/mach.h stddef.h sys/timeb.h terminos.h argz.h])
248
249 # test for libgmp
250 gmp=0
251 AC_MSG_CHECKING(for libgmp)
252 AC_ARG_WITH(gmp,
253    [  --with-gmp=PFX          base of libgmp installation],
254    [AC_MSG_RESULT([$with_gmp])
255     case $with_gmp in
256       no)
257         ;;
258       yes)
259         AC_CHECK_HEADERS(gmp.h,
260           AC_CHECK_LIB([gmp], [__gmpz_add],
261             gmp=1))
262         ;;
263       *)
264         LDFLAGS="-L$with_gmp/lib $LDFLAGS"
265         CPPFLAGS="-I$with_gmp/include $CPPFLAGS"
266         AC_CHECK_HEADERS(gmp.h,
267           AC_CHECK_LIB([gmp], [__gmpz_add],
268             EXT_LIB_PATH="-L$with_gmp/lib $EXT_LIB_PATH"
269             gmp=1))
270         ;;
271     esac
272    ],
273    [AC_MSG_RESULT([--with-gmp not specified])
274     AC_CHECK_HEADERS(gmp.h,
275      AC_CHECK_LIB([gmp], [__gmpz_add],
276       gmp=1))])
277 if test "$gmp" != 1
278 then
279  AC_MSG_ERROR([GNUnet requires libgmp])
280 fi
281
282 SAVE_LDFLAGS=$LDFLAGS
283 SAVE_CPPFLAGS=$CPPFLAGS
284
285 # test for sqlite
286 sqlite=false
287 AC_MSG_CHECKING(for SQLite)
288 AC_ARG_WITH(sqlite,
289   [  --with-sqlite=PFX       base of SQLite installation],
290   [AC_MSG_RESULT("$with_sqlite")
291    case $with_sqlite in
292    no)
293      ;;
294    yes)
295     AC_CHECK_HEADERS(sqlite3.h,
296      sqlite=true)
297      ;;
298    *)
299     LDFLAGS="-L$with_sqlite/lib $LDFLAGS"
300     CPPFLAGS="-I$with_sqlite/include $CPPFLAGS"
301     AC_CHECK_HEADERS(sqlite3.h,
302      EXT_LIB_PATH="-L$with_sqlite/lib $EXT_LIB_PATH"
303      SQLITE_LDFLAGS="-L$with_sqlite/lib"
304      SQLITE_CPPFLAGS="-I$with_sqlite/include"
305      sqlite=true)
306     LDFLAGS=$SAVE_LDFLAGS
307     CPPFLAGS=$SAVE_CPPFLAGS
308     ;;
309    esac
310   ],
311   [AC_MSG_RESULT([--with-sqlite not specified])
312     AC_CHECK_HEADERS(sqlite3.h, sqlite=true)])
313 AM_CONDITIONAL(HAVE_SQLITE, test x$sqlite = xtrue)
314 AC_SUBST(SQLITE_CPPFLAGS)
315 AC_SUBST(SQLITE_LDFLAGS)
316
317 # test for postgres
318 postgres=false
319 AC_MSG_CHECKING(for postgres)
320 AC_ARG_WITH(postgres,
321   [  --with-postgres=PFX       base of postgres installation],
322   [AC_MSG_RESULT("$with_postgres")
323    case $with_postgres in
324    no)
325      ;;
326    yes)
327     AC_CHECK_HEADERS(postgresql/libpq-fe.h,
328      postgres=true)
329      ;;
330    *)
331     LDFLAGS="-L$with_postgres/lib $LDFLAGS"
332     CPPFLAGS="-I$with_postgres/include $CPPFLAGS"
333     AC_CHECK_HEADERS(postgresql/libpq-fe.h,
334      EXT_LIB_PATH="-L$with_postgres/lib $EXT_LIB_PATH"
335      SQLITE_LDFLAGS="-L$with_postgres/lib"
336      SQLITE_CPPFLAGS="-I$with_postgres/include"
337      postgres=true)
338     LDFLAGS=$SAVE_LDFLAGS
339     CPPFLAGS=$SAVE_CPPFLAGS
340     ;;
341    esac
342   ],
343   [AC_MSG_RESULT([--with-postgres not specified])
344     AC_CHECK_HEADERS(postgresql/libpq-fe.h, postgres=true)])
345 AM_CONDITIONAL(HAVE_POSTGRES, test x$postgres = xtrue)
346 AC_SUBST(POSTGRES_CPPFLAGS)
347 AC_SUBST(POSTGRES_LDFLAGS)
348
349
350 # test for libz (maybe required for linking mysql)
351 zlib=1
352 AC_CHECK_LIB(z, compress,,zlib=0)
353 AM_CONDITIONAL(HAVE_ZLIB, test x$zlib = x1)
354 if test "$zlib" != 1
355 then
356  AC_MSG_ERROR([GNUnet requires zlib])
357 fi
358
359 # mysql & windows
360 AC_CHECK_TYPES([sigset_t, off_t], [], [], [#include <sys/types.h>])
361 AC_CHECK_TYPES([size_t], [], [], [#include <stdio.h>])
362
363 if test "$build_target" = "mingw"
364 then
365   CYGWIN_MYSQL_MAGIC="#include <mysql/my_global.h>"
366 fi
367
368 # test for mysql
369 mysql=false
370 mysqlfail=false
371 SAVE_LDFLAGS=$LDFLAGS
372 SAVE_CPPFLAGS=$CPPFLAGS
373 AC_MSG_CHECKING(for mysql)
374 AC_ARG_WITH(mysql,
375   [  --with-mysql=PFX        base of MySQL installation],
376   [AC_MSG_RESULT("$with_mysql")
377    if test "$with_mysql" != "no"
378    then
379     if test "$with_mysql" != "yes"
380     then
381       LDFLAGS="-L$with_mysql/lib -L$with_mysql/lib/mysql $LDFLAGS $ZLIBS"
382       CPPFLAGS="-I$with_mysql/include $CPPFLAGS"
383     fi
384     AC_CHECK_HEADERS(mysql/mysql.h,
385      AC_CHECK_LIB(mysqlclient, mysql_init,
386       MYSQL_LDFLAGS="-L$with_mysql/lib -L$with_mysql/lib/mysql"
387       MYSQL_CPPFLAGS="-I$with_mysql/include"
388
389       mysql=true), [], [$CYGWIN_MYSQL_MAGIC])
390    fi
391   ],
392   [AC_MSG_RESULT([--with-mysql not specified])
393    LDFLAGS="-L/usr/lib/mysql $LDFLAGS $ZLIBS"
394    AC_CHECK_LIB(mysqlclient, mysql_init,
395     [AC_CHECK_HEADERS(mysql/mysql.h,
396       MYSQL_LDFLAGS="-L/usr/lib/mysql"
397       mysql=true
398
399      , [], [$CYGWIN_MYSQL_MAGIC])])
400   ])
401
402 AC_SUBST(MYSQL_LDFLAGS)
403 AC_SUBST(MYSQL_CPPFLAGS)
404
405 # additional version check for mysql
406 AC_ARG_ENABLE(mysql-version-check, [  --disable-mysql-version-check  do not check MySQL version],, enable_mysql_version_check=yes)
407 if test "$mysql" = "true" -a "x$enable_mysql_version_check" = "xyes"
408 then
409   AC_MSG_CHECKING(mysql version)
410   AC_RUN_IFELSE([AC_LANG_PROGRAM(
411     [[$CYGWIN_MYSQL_MAGIC
412       #include <mysql/mysql.h>]],
413     [[if (MYSQL_VERSION_ID < 40100)
414         return(-1);
415       else
416         return(0);
417     ]])
418     ],mysql=true,mysql=false)
419   if test "$mysql" = "false"
420   then
421     mysqlfail=true
422     AC_MSG_RESULT([fail, >= 4.1 required])
423   else
424     AC_MSG_RESULT(ok)
425   fi
426 fi
427 AM_CONDITIONAL(HAVE_MYSQL, test x$mysql = xtrue)
428 AM_CONDITIONAL(HAVE_MYSQLE, test "0" = "1")
429 # restore LIBS
430 LIBS=$SAVE_LIBS
431 LDFLAGS=$SAVE_LDFLAGS
432 CPPFLAGS=$SAVE_CPPFLAGS
433
434 if test "$sqlite" = 0 -a "$mysql" = 0
435 then
436  AC_MSG_ERROR([GNUnet requires SQLite or MySQL])
437 fi
438
439 # libmicrohttpd
440 lmhd=0
441 AC_MSG_CHECKING([for libmicrohttpd])
442 AC_ARG_WITH(microhttpd,
443    [  --with-microhttpd=PFX   base of libmicrohttpd installation],
444    [AC_MSG_RESULT([$with_microhttpd])
445     case $with_microhttpd in
446       no)
447         ;;
448       yes)
449         AC_CHECK_HEADERS([microhttpd.h],
450           AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
451             AC_CHECK_LIB([microhttpd], [MHD_start_daemon],
452               lmhd=1),
453             [],[#include "src/include/platform.h"
454                 #include <microhttpd.h>]),,
455             [#include "src/include/platform.h"])
456         ;;
457       *)
458         LDFLAGS="-L$with_microhttpd/lib $LDFLAGS"
459         CPPFLAGS="-I$with_microhttpd/include $CPPFLAGS"
460         AC_CHECK_HEADERS(microhttpd.h,
461           AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
462             AC_CHECK_LIB([microhttpd], [MHD_start_daemon],
463               EXT_LIB_PATH="-L$with_microhttpd/lib $EXT_LIB_PATH"
464               lmhd=1),
465             [],[#include "src/include/platform.h"
466                 #include <microhttpd.h>]),,
467             [#include "src/include/platform.h"])
468         ;;
469     esac
470    ],
471    [AC_MSG_RESULT([--with-microhttpd not specified])
472     AC_CHECK_HEADERS([microhttpd.h],
473       AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
474         AC_CHECK_LIB([microhttpd], [MHD_start_daemon],
475           lmhd=1),
476         [],[#include "src/include/platform.h"
477             #include <microhttpd.h>]),,
478        [#include "src/include/platform.h"])])
479 AM_CONDITIONAL(HAVE_MHD, test x$lmhd = x1)
480 AC_DEFINE_UNQUOTED([HAVE_MHD], $lmhd, [We have libmicrohttpd])
481
482
483 # openssl
484 openssl=0
485 AC_MSG_CHECKING([for openssl])
486 AC_ARG_WITH(openssl,
487    [  --with-openssl=PFX   base of openssl installation],
488    [AC_MSG_RESULT([$with_openssl])
489     case $with_openssl in
490       no)
491         ;;
492       yes)
493         AC_CHECK_HEADERS([openssl/ssl.h],
494             AC_CHECK_LIB([ssl], [SSL_new],
495              openssl=1))
496         ;;
497       *)
498         LDFLAGS="-L$with_openssl/lib $LDFLAGS"
499         CPPFLAGS="-I$with_openssl/include $CPPFLAGS"
500         AC_CHECK_HEADERS([openssl/ssl.h],
501             AC_CHECK_LIB([ssl], [SSL_new],
502               EXT_LIB_PATH="-L$with_openssl/lib $EXT_LIB_PATH"
503               openssl=1))
504         ;;
505     esac
506    ],
507    [AC_MSG_RESULT([--with-openssl not specified])
508     AC_CHECK_HEADERS([openssl/ssl.h],
509         AC_CHECK_LIB([ssl], [SSL_new],
510           openssl=1))])
511 AM_CONDITIONAL(HAVE_OPENSSL, test x$openssl = x1)
512 AC_DEFINE_UNQUOTED([HAVE_OPENSSL], $openssl, [We have openssl])
513
514
515
516
517
518
519 # restore LIBS
520 LIBS=$SAVE_LIBS
521
522 # check for python & pexpect (used for some testcases only)
523 AM_PATH_PYTHON([2.5],, [:])
524 AM_CONDITIONAL([HAVE_PYTHON], [test "$PYTHON" != :])
525
526 if test "$PYTHON" != :
527 then
528   AC_MSG_CHECKING([for pexpect])
529   $PYTHON -c "import pexpect" > /dev/null 2> /dev/null
530   PYEX=$?
531   AM_CONDITIONAL(HAVE_PYTHON_PEXPECT, test $PYEX -eq 0)
532   if test $PYEX -eq 0
533   then
534     AC_MSG_RESULT([yes])
535   else
536     AC_MSG_RESULT([not found])
537   fi
538 else
539   AM_CONDITIONAL(HAVE_PYTHON_PEXPECT, 0)
540 fi
541
542 # libesmtp
543 esmtp=0
544 AC_MSG_CHECKING([for libesmtp])
545 AC_ARG_WITH(esmtp,
546    [  --with-esmtp=PFX        base of libesmtp installation],
547    [AC_MSG_RESULT([$with_esmtp])
548     case $with_esmtp in
549       no)
550         ;;
551       yes)
552         AC_CHECK_HEADERS(libesmtp.h,
553           AC_CHECK_LIB([esmtp], [smtp_start_session],
554             esmtp=1))
555         ;;
556       *)
557         LDFLAGS="-L$with_esmtp/lib $LDFLAGS"
558         CPPFLAGS="-I$with_esmtp/include $CPPFLAGS"
559         AC_CHECK_HEADERS(libesmtp.h,
560           AC_CHECK_LIB([esmtp], [smtp_start_session],
561             EXT_LIB_PATH="-L$with_esmtp/lib $EXT_LIB_PATH"
562               esmtp=1))
563         ;;
564     esac
565    ],
566    [AC_MSG_RESULT([--with-esmtp not specified])
567     AC_CHECK_HEADERS(libesmtp.h,
568       AC_CHECK_LIB([esmtp], [smtp_start_session],
569           esmtp=1))])
570 AM_CONDITIONAL(HAVE_ESMTP, test x$esmtp = x1)
571 AC_DEFINE_UNQUOTED([HAVE_ESMTP], $esmtp, [We have libesmtp])
572 # restore LIBS
573 LIBS=$SAVE_LIBS
574
575 # check for gettext
576 AM_GNU_GETTEXT([external])
577 AM_GNU_GETTEXT_VERSION([0.16.1])
578
579 # check for iconv
580 AM_ICONV
581
582 # Checks for standard typedefs, structures, and compiler characteristics.
583 AC_TYPE_PID_T
584 AC_TYPE_SIZE_T
585 AC_TYPE_MODE_T
586 AC_HEADER_TIME
587 AC_HEADER_STAT
588 AC_HEADER_STDBOOL
589 AC_STRUCT_TM
590
591 AC_CHECK_MEMBER([struct sockaddr_in.sin_len],
592    [ AC_DEFINE(HAVE_SOCKADDR_IN_SIN_LEN, 1, [Do we have sockaddr_in.sin_len?])
593    ],
594    [],
595    [
596       #include <sys/types.h>
597       #include <sys/socket.h>
598       #include <netinet/in.h>
599    ])
600
601
602
603 # Checks for library functions.
604 AC_FUNC_CLOSEDIR_VOID
605 AC_FUNC_FORK
606 AC_FUNC_VFORK
607 AC_PROG_GCC_TRADITIONAL
608 AC_FUNC_MEMCMP
609 AC_FUNC_SELECT_ARGTYPES
610 AC_FUNC_CHOWN
611
612 AC_TYPE_SIGNAL
613 AC_FUNC_STAT
614 AC_FUNC_STRFTIME
615 AC_FUNC_VPRINTF
616 AC_HEADER_SYS_WAIT
617 AC_TYPE_OFF_T
618 AC_TYPE_UID_T
619 AC_CHECK_FUNCS([floor gethostname memmove rmdir strncasecmp strrchr strtol atoll dup2 fdatasync ftruncate gettimeofday memset mkdir mkfifo select socket strcasecmp strchr strdup strerror strstr clock_gettime getrusage rand uname setlocale getcwd mktime gmtime_r gmtime strlcpy strlcat ftruncate stat64 sbrk mmap mremap setrlimit sysconf gethostbyaddr initgroups getifaddrs freeifaddrs getnameinfo getaddrinfo inet_ntoa localtime_r nl_langinfo putenv realpath strndup gethostbyname2 gethostbyname])
620
621 # restore LIBS
622 LIBS=$SAVE_LIBS
623
624 gn_user_home_dir="~/.gnunet"
625 AC_ARG_WITH(user-home-dir,
626         AC_HELP_STRING(
627                 [--with-user-home-dir=DIR],
628                 [default user home directory (~/.gnunet)]),
629         [gn_user_home_dir=$withval])
630 AC_SUBST(GN_USER_HOME_DIR, $gn_user_home_dir)
631 gn_daemon_home_dir="/var/lib/gnunet"
632 AC_ARG_WITH(daemon-home-dir,
633         AC_HELP_STRING(
634                 [--with-daemon-home-dir=DIR],
635                 [default daemon home directory (/var/lib/gnunet)]),
636         [gn_daemon_home_dir=$withval])
637 AC_SUBST(GN_DAEMON_HOME_DIR, $gn_daemon_home_dir)
638 gn_daemon_config_dir="/etc"
639 AC_ARG_WITH(daemon-config-dir,
640         AC_HELP_STRING(
641                 [--with-daemon-config-dir=DIR],
642                 [default daemon config directory (/etc)]),
643         [gn_daemon_config_dir=$withval])
644 AC_SUBST(GN_DAEMON_CONFIG_DIR, $gn_daemon_config_dir)
645
646 GN_INTLINCL=""
647 GN_LIBINTL="$LTLIBINTL"
648 AC_ARG_ENABLE(framework, [  --enable-framework      enable Mac OS X framework build helpers],enable_framework_build=$enableval)
649 AM_CONDITIONAL(WANT_FRAMEWORK, test x$enable_framework_build = xyes)
650 if test x$enable_framework_build = xyes
651 then
652   AC_DEFINE([FRAMEWORK_BUILD], 1, [Build a Mac OS X Framework])
653   GN_INTLINCL='-I$(top_srcdir)/src/intlemu'
654   GN_LIBINTL='$(top_builddir)/src/intlemu/libintlemu.la -framework CoreFoundation'
655   AC_LIB_APPENDTOVAR([CPPFLAGS], [$GN_INTLINCL]) 
656 fi
657
658 GN_LIB_LDFLAGS="-export-dynamic -no-undefined"
659 GN_PLUGIN_LDFLAGS="-export-dynamic -avoid-version -module -no-undefined"
660
661 AC_SUBST(GN_LIB_LDFLAGS)
662 AC_SUBST(GN_PLUGIN_LDFLAGS)
663 AC_SUBST(GN_INTLINCL)
664 AC_SUBST(GN_LIBINTL)
665
666 AC_SUBST(CPPFLAGS)
667 AC_SUBST(LIBS)
668 AC_SUBST(LDFLAGS)
669 AC_SUBST(EXT_LIB_PATH)
670 AC_SUBST(EXT_LIBS)
671
672 AC_SUBST(LIBPREFIX)
673 AC_SUBST(DLLDIR)
674 AC_SUBST(EXT_LIB_PATH)
675
676
677 # gcov compilation
678 use_gcov=no
679 AC_ARG_ENABLE([coverage], AS_HELP_STRING([--enable-coverage],
680                                         [Compile the library with code coverage support (default is NO)]),
681                                         [use_gcov=yes], [use_gcov=no])
682 AM_CONDITIONAL([USE_COVERAGE], [test "x$use_gcov" = "xyes"])
683
684 AC_CONFIG_FILES([ 
685 Makefile
686 contrib/Makefile
687 m4/Makefile
688 po/Makefile.in 
689 src/Makefile
690 src/arm/Makefile
691 src/block/Makefile
692 src/core/Makefile
693 src/datacache/Makefile
694 src/datastore/Makefile
695 src/dht/Makefile
696 src/dv/Makefile
697 src/fragmentation/Makefile
698 src/fs/Makefile
699 src/hello/Makefile
700 src/include/Makefile
701 src/include/gnunet_directories.h
702 src/hostlist/Makefile
703 src/monkey/Makefile
704 src/nat/Makefile
705 src/nat/libnatpmp/Makefile
706 src/nat/miniupnp/Makefile
707 src/peerinfo/Makefile
708 src/peerinfo-tool/Makefile
709 src/statistics/Makefile
710 src/template/Makefile
711 src/testing/Makefile
712 src/topology/Makefile
713 src/transport/Makefile
714 src/util/Makefile
715 src/vpn/Makefile
716 ])
717 AC_OUTPUT
718
719 # Finally: summary!
720
721 # warn user if mysql found but not used due to version
722 if test "$mysqlfail" = "true"
723 then
724   AC_MSG_NOTICE([NOTICE: MySQL found, but too old. MySQL support will not be compiled.])
725 fi
726
727 # sqlite
728 if test "x$sqlite" = "x0"
729 then
730   AC_MSG_NOTICE([NOTICE: sqlite not found.  sqLite support will not be compiled.])
731 fi
732
733 if test "x$lmhd" != "x1"
734 then
735  AC_MSG_NOTICE([NOTICE: libmicrohttpd not found, http transport will not be installed.])
736 fi
737
738 if test "x$esmtp" != "x1"
739 then
740  AC_MSG_NOTICE([NOTICE: libesmtp not found, monkey will not be installed.])
741 fi
742
743 if test "x$ssl" != "x1"
744 then
745  AC_MSG_NOTICE([NOTICE: OpenSSL not found, monkey will not be installed.])
746 fi
747
748 AC_MSG_NOTICE([NOTICE: Database support is set to MySQL: $mysql, SQLite: $sqlite, Postgres: $postgres])
749
750 if test "$enable_framework_build" = "yes"
751 then
752   AC_MSG_NOTICE([NOTICE: Mac OS X framework build enabled.])
753 fi
754
755 AC_MSG_NOTICE([********************************************
756 You can build GNUnet with
757         make install
758 now. After that, install gnunet-gtk or gnunet-qt and run 
759         gnunet-setup -d wizard-gtk
760 (on graphical systems with GTK) or
761         gnunet-setup -d wizard-qt
762 (on graphical systems with QT) or
763         gnunet-setup -d wizard-curses
764 (on text-based systems with curses) in order to make important configuration
765 settings. If neither works for you, you can find a template configuration
766 file in the contrib/ subdirectory. Copy it to /etc/gnunetd.conf and modify it
767 using your favourite text editor.
768 ********************************************])