minors
[oweals/gnunet.git] / configure.ac
1 # This file is part of GNUnet.
2 # (C) 2001--2012 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 # Checks for programs.
25 AC_INIT([gnunet], [0.9.3],[bug-gnunet@gnu.org])
26
27 AC_CANONICAL_TARGET
28 AC_CANONICAL_HOST
29 AC_CANONICAL_SYSTEM
30
31 AM_INIT_AUTOMAKE([gnunet], [0.9.3])
32 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
33 AC_CONFIG_HEADERS([gnunet_config.h])
34 AH_TOP([#define _GNU_SOURCE  1])
35
36 AC_PROG_AWK
37 AC_PROG_CC
38 AC_PROG_CPP
39 AC_PROG_CXX
40 AC_PROG_OBJC
41 AC_PROG_INSTALL
42 AC_PROG_LN_S
43 AC_PROG_MAKE_SET
44 AM_PROG_CC_C_O
45 LT_INIT([disable-static dlopen win32-dll])
46 LTDL_INIT
47 AC_SUBST(LTDLINCL)
48 AC_SUBST(LIBLTDL)
49 AC_SUBST(MKDIR_P)
50
51 # large file support
52 AC_SYS_LARGEFILE
53 AC_FUNC_FSEEKO
54
55
56 if test "$enable_shared" = "no"
57 then
58  AC_MSG_ERROR([GNUnet only works with shared libraries. Sorry.])
59 fi
60
61 CFLAGS="-Wall $CFLAGS"
62 # use '-fno-strict-aliasing', but only if the compiler can take it
63 if gcc -fno-strict-aliasing -S -o /dev/null -xc /dev/null >/dev/null 2>&1;
64 then
65  CFLAGS="-fno-strict-aliasing $CFLAGS"
66 fi
67
68 # Use Linux interface name unless the OS has a different preference
69 DEFAULT_INTERFACE="\"eth0\""
70
71 funcstocheck="getnameinfo gethostname gethostbyname gethostbyaddr getaddrinfo"
72
73 # Srcdir in a form that native compiler understands (i.e. DOS path on W32)
74 native_srcdir=$srcdir
75
76 # Check system type
77 case "$host_os" in
78 *darwin* | *rhapsody* | *macosx*)
79      AC_DEFINE_UNQUOTED(DARWIN,1,[This is an Apple Darwin system])
80      CPPFLAGS="-D_APPLE_C_SOURCE $CPPFLAGS"
81      CFLAGS="-no-cpp-precomp -fno-common $CFLAGS"
82      AC_MSG_WARN([The VPN application cannot be compiled on your OS])
83      build_target="darwin"
84      DEFAULT_INTERFACE="\"en0\""
85      LIBPREFIX=
86      DLLDIR=lib
87      UNIXONLY="#"
88      ;;
89 linux*)
90      AC_DEFINE_UNQUOTED(LINUX,1,[This is a Linux kernel])
91      build_target="linux"
92      LIBPREFIX=
93      DLLDIR=lib
94      UNIXONLY="#"
95      AC_PATH_XTRA
96      ;;
97 *freebsd*)
98      AC_DEFINE_UNQUOTED(SOMEBSD,1,[This is a BSD system])
99      AC_DEFINE_UNQUOTED(FREEBSD,1,[This is a FreeBSD system])
100      CFLAGS="-D_THREAD_SAFE $CFLAGS"
101      build_target="freebsd"
102      LIBPREFIX=
103      DLLDIR=lib
104      UNIXONLY="#"
105      ;;
106 *openbsd*)
107      AC_DEFINE_UNQUOTED(SOMEBSD,1,[This is a BSD system])
108      AC_DEFINE_UNQUOTED(OPENBSD,1,[This is an OpenBSD system])
109      LIBS=`echo $LIBS | sed -e "s/-ldl//"`
110      build_target="openbsd"
111      LIBPREFIX=
112      DLLDIR=lib
113      UNIXONLY="#"
114      ;;
115 *netbsd*)
116      AC_DEFINE_UNQUOTED(SOMEBSD,1,[This is a BSD system])
117      AC_DEFINE_UNQUOTED(NETBSD,1,[This is a NetBSD system])
118      LIBPREFIX=
119      DLLDIR=lib
120      UNIXONLY="#"
121      ;;
122 *solaris*)
123      AC_DEFINE_UNQUOTED(SOLARIS,1,[This is a Solaris system])
124      AC_DEFINE_UNQUOTED(_REENTRANT,1,[Need with solaris or errno doesnt work])
125      AC_CHECK_LIB(resolv, res_init)
126      AC_CHECK_LIB(rt, nanosleep)
127      build_target="solaris"
128      LIBPREFIX=
129      DLLDIR=lib
130      UNIXONLY="#"
131      ;;
132 *arm-linux*)
133      AC_DEFINE_UNQUOTED(LINUX,1,[This is a Linux kernel])
134      CFLAGS="-D_REENTRANT -fPIC -pipe $CFLAGS"
135      build_target="linux"
136      LIBPREFIX=
137      DLLDIR=lib
138      UNIXONLY="#"
139      ;;
140 *cygwin*)
141      AC_DEFINE_UNQUOTED(CYGWIN,1,[This is a Cygwin system])
142      AC_DEFINE_UNQUOTED(WINDOWS,1,[This is a Windows system])
143      AC_CHECK_LIB(intl, gettext)
144      LDFLAGS="$LDFLAGS -no-undefined"
145      CFLAGS="-mms-bitfields $CFLAGS"
146      build_target="cygwin"
147      LIBPREFIX=lib
148      DLLDIR=bin
149      AC_PROG_CXX
150      UNIXONLY=""
151      ;;
152 *mingw*)
153      AC_DEFINE_UNQUOTED(MINGW,1,[This is a MinGW system])
154      AC_DEFINE_UNQUOTED(WINDOWS,1,[This is a Windows system])
155      AC_DEFINE_UNQUOTED(_WIN32,1,[This is a Windows system])
156      AC_CHECK_LIB(intl, gettext)
157      LDFLAGS="$LDFLAGS -Wl,-no-undefined -Wl,--export-all-symbols"
158      LIBS="$LIBS -lws2_32 -lplibc -lgnurx -lole32"
159      CFLAGS="-mms-bitfields $CFLAGS"
160      CPPFLAGS="-D_WIN32_WINNT=0x0501 -DHAVE_STAT64=1 $CPPFLAGS"
161      build_target="mingw"
162      AC_PROG_CXX
163      LIBPREFIX=lib
164      DLLDIR=bin
165      UNIXONLY=""
166      funcstocheck=""
167      native_srcdir=$(cd $srcdir; pwd -W)
168      ;;
169 gnu*)
170      AC_DEFINE_UNQUOTED(GNU,1,[This is a GNU system])
171      build_target="gnu"
172      UNIXONLY="#"
173      ;;
174 *)
175      AC_MSG_RESULT(Unrecognised OS $host_os)
176      AC_DEFINE_UNQUOTED(OTHEROS,1,[Some strange OS])
177      UNIXONLY=""
178 ;;
179 esac
180 AC_DEFINE_UNQUOTED([GNUNET_DEFAULT_INTERFACE], $DEFAULT_INTERFACE, [This should be the default choice for the name of the first network interface])
181 AC_SUBST(DEFAULT_INTERFACE)
182
183 # Disable TCP-based IPC on systems that support UNIX domain
184 # sockets in default configuratin:
185 AC_SUBST(UNIXONLY)
186
187
188 AC_MSG_CHECKING([for build target])
189 AM_CONDITIONAL(DARWIN,  test "$build_target" = "darwin")
190 AM_CONDITIONAL(CYGWIN,  test "$build_target" = "cygwin")
191 AM_CONDITIONAL(MINGW,   test "$build_target" = "mingw")
192 AM_CONDITIONAL(SOLARIS, test "$build_target" = "solaris")
193 AM_CONDITIONAL(XFREEBSD, test "$build_target" = "freebsd")
194 AM_CONDITIONAL(OPENBSD, test "$build_target" = "openbsd")
195 AM_CONDITIONAL(LINUX, test "$build_target" = "linux")
196 AM_CONDITIONAL(GNU, test "$build_target" = "gnu")
197
198 AC_MSG_RESULT([$build_target])
199 AC_SUBST(build_target)
200 AM_CONDITIONAL([am__fastdepOBJC], false)
201 AC_UNALIGNED_64_ACCESS
202
203 # some other checks for standard libs
204 AC_SEARCH_LIBS([gethostbyname], [nsl ws2_32])
205 AC_CHECK_LIB(socket, socket)
206 AC_CHECK_LIB(m, log)
207 AC_CHECK_LIB(c, getloadavg, AC_DEFINE(HAVE_GETLOADAVG,1,[getloadavg supported]))
208
209 # 'save' libs; only those libs found so far will be
210 # linked against _everywhere_.  For the others, we
211 # will be more selective!
212 SAVE_LIBS=$LIBS
213
214 # libgnurx (regex library for W32)
215 gnurx=0
216 AC_CHECK_LIB(gnurx, regexec, gnurx=1)
217 if test "x$gnurx" = "x0" -a "x$build_target" = "xmingw"
218 then
219   AC_MSG_ERROR([on W32 GNUnet needs libgnurx])
220 fi
221
222 # libgcrypt
223 gcrypt=0
224 NEED_LIBGCRYPT_API=1
225 NEED_LIBGCRYPT_VERSION=1.4.2
226
227
228 AM_PATH_LIBGCRYPT("$NEED_LIBGCRYPT_API:$NEED_LIBGCRYPT_VERSION", gcrypt=1)
229 AC_CHECK_DECLS([gcry_mpi_lshift], [], [], [[#include <gcrypt.h>]])
230
231 if test $gcrypt = 0
232 then
233   AC_MSG_ERROR([[
234 ***
235 *** You need libgcrypt to build this program.
236 **  This library is for example available at
237 ***   ftp://ftp.gnupg.org/gcrypt/libgcrypt/
238 *** (at least version $NEED_LIBGCRYPT_VERSION (API $NEED_LIBGCRYPT_API) 
239 ***  is required.)
240 ***]])
241 fi
242 AC_DEFINE_UNQUOTED([NEED_LIBGCRYPT_VERSION], "$NEED_LIBGCRYPT_VERSION", [required libgcrypt version])
243
244 # Adam shostack suggests the following for Windows:
245 # -D_FORTIFY_SOURCE=2 -fstack-protector-all
246 AC_ARG_ENABLE(gcc-hardening,
247    AS_HELP_STRING(--enable-gcc-hardening, enable compiler security checks),
248 [if test x$enableval = xyes; then
249     CFLAGS="$CFLAGS -D_FORTIFY_SOURCE=2 -fstack-protector-all"
250     CFLAGS="$CFLAGS -fwrapv -fPIE -Wstack-protector"
251     CFLAGS="$CFLAGS --param ssp-buffer-size=1"
252     LDFLAGS="$LDFLAGS -pie"
253 fi])
254
255
256 # Linker hardening options
257 # Currently these options are ELF specific - you can't use this with MacOSX
258 AC_ARG_ENABLE(linker-hardening,
259   AS_HELP_STRING(--enable-linker-hardening, enable linker security fixups),
260 [if test x$enableval = xyes; then
261    LDFLAGS="$LDFLAGS -z relro -z now"
262 fi])
263
264
265 extra_logging=GNUNET_NO
266 AC_ARG_ENABLE([logging],
267    AS_HELP_STRING([--enable-logging@<:@=value@:>@],[Enable logging calls. Possible values: yes,no,verbose,veryverbose ('yes' is the default)]),
268    [AS_IF([test "x$enableval" = "xyes"], [],
269           [test "x$enableval" = "xno"], [AC_DEFINE([GNUNET_CULL_LOGGING],[],[Define to cull all logging calls])],
270           [test "x$enableval" = "xverbose"], [extra_logging=GNUNET_YES]
271           [test "x$enableval" = "xveryverbose"], [extra_logging=\(GNUNET_YES+1\)])
272    ], [])
273 AC_DEFINE_UNQUOTED([GNUNET_EXTRA_LOGGING],[$extra_logging],[1 if extra logging is enabled, 2 for very verbose extra logging, 0 otherwise])
274
275 # should memory poisoning be enabled?
276 AC_MSG_CHECKING(whether to poison freed memory)
277 AC_ARG_ENABLE([poisoning],
278    [AS_HELP_STRING([--enable-poisoning], [enable poisoning of freed memory (good for debugging)])],
279    [enable_poisoning=${enableval}],
280    [
281      if test "x$extra_logging" != "xGNUNET_NO"; then
282        enable_poisoning="defaults to yes (extra logging is enabled)"
283      else
284        enable_poisoning=no
285      fi
286    ])
287 AC_MSG_RESULT($enable_poisoning)
288 if test ! "x$enable_poisoning" = "xno"; then
289   enable_poisoning=1
290 else
291   enable_poisoning=0
292 fi
293 AC_DEFINE_UNQUOTED([ENABLE_POISONING],[$enable_poisoning],[1 if freed memory should be poisoned, 0 otherwise])
294
295 if test $build = $target
296 then
297 AC_MSG_CHECKING([for working HMAC])
298 AC_LANG_PUSH(C)
299 LIBS="$LIBS $LIBGCRYPT_LIBS"
300 CFLAGS="$CFLAGS $LIBGCRYPT_CFLAGS"
301 AC_RUN_IFELSE(
302   [AC_LANG_PROGRAM([#include <gcrypt.h> 
303         #include <stdio.h>], [[
304         gcry_md_hd_t mac;
305       
306         unsigned char data[] = { 0xbf, 0x16, 0x6e, 0x46, 0x3a, 0x6c, 0xf3, 0x93, 0xa7, 0x72,
307             0x11, 0xa1, 0xdc, 0x0b, 0x07, 0xdb, 0x1a, 0x5e, 0xd9, 0xb9, 0x81, 0xbe,
308             0xea, 0xe4, 0x31, 0x5f, 0x24, 0xff, 0xfe, 0x50, 0x8a, 0xde };
309         unsigned char key[] = { 0xfc, 0x62, 0x76, 0x35 };
310         unsigned char result[] = {0xa2, 0xb, 0x1, 0xd9, 0xc0, 0x8b, 0x5a, 0x12, 0x80,
311             0xd5, 0x50, 0x12, 0x8e, 0xd0, 0x5b, 0xb6, 0x5c, 0x87, 0x24, 0xe2, 0xd0,
312             0xd2, 0xaf, 0x63, 0xae, 0xd1, 0xd6, 0x64, 0x14, 0xe3, 0x6e, 0x61, 0x5b,
313             0xd, 0xba, 0x17, 0x7d, 0xd3, 0x10, 0xb1, 0x37, 0x41, 0x91, 0x7d, 0xeb,
314             0x1, 0x4d, 0x71, 0xe8, 0x59, 0x71, 0x42, 0x8e, 0xd6, 0xf3, 0x29, 0x3b,
315             0x90, 0xf2, 0xd1, 0xaf, 0x65, 0x1e, 0xb3};
316       
317         if (!gcry_check_version (GCRYPT_VERSION))
318         {
319           fprintf (stderr, "Version mismatch %s <-> %s \n", gcry_check_version (NULL), GCRYPT_VERSION);
320           return 1;
321         }
322   
323         gcry_control (GCRYCTL_DISABLE_SECMEM, 0);
324         gcry_control (GCRYCTL_INITIALIZATION_FINISHED, 0);
325   
326         if (gcry_md_open(&mac, GCRY_MD_SHA512, GCRY_MD_FLAG_HMAC) != GPG_ERR_NO_ERROR)
327         {
328           fprintf (stderr, "gcry_md_open error\n");
329           return 2;
330         }
331   
332         gcry_md_setkey (mac, key, sizeof (key));
333         gcry_md_write (mac, data, sizeof (data));
334   
335         if (memcmp(gcry_md_read (mac, 0), result, gcry_md_get_algo_dlen (gcry_md_get_algo (mac))) != 0)
336         {
337           fprintf (stderr, "memcmp error\n");
338           return 3;
339         }
340   
341         gcry_md_close (mac);
342   
343         return 0;
344     ]])],
345   [AC_MSG_RESULT([yes])],
346   [
347    RESULT=$?
348    if test $RESULT = 3
349    then
350      AC_MSG_FAILURE([HMAC test vector does not match. This is a known problem with libgcrypt 1.2.2 on Windows and fixed in 1.4.6.])
351    fi
352    if test $RESULT = 2
353    then
354      AC_MSG_FAILURE([HMAC test failed])
355    fi
356    if test $RESULT = 1
357    then
358      AC_MSG_FAILURE([libgcrypt header version does not match library version])
359    fi
360   ])
361 AC_LANG_POP(C)
362 fi      # $build = $target
363
364 # libcurl
365 LIBCURL_CHECK_CONFIG(,7.21.3,curl=1,curl=0)
366 if test "$curl" = 1
367 then
368         AM_CONDITIONAL(HAVE_LIBCURL, true)
369         AC_DEFINE([HAVE_LIBCURL],[1],[Have libcurl])
370 else
371         AM_CONDITIONAL(HAVE_LIBCURL, false)
372 fi
373 # restore LIBS
374 LIBS=$SAVE_LIBS
375
376
377 AC_CHECK_HEADERS([glpk.h],[glpk=true],[gplk=false])
378 AC_CHECK_LIB([glpk],[glp_create_prob],,[gplk=false])
379 # GLPK must support atm MLP presolving, version >= 4.32
380 AC_CHECK_MEMBERS(glp_iocp.presolve,,[gplk=false],[[#include <glpk.h>]])
381 if test x$gplk = xfalse
382 then
383         AM_CONDITIONAL(HAVE_LIBGLPK, false)
384         AC_MSG_WARN([GNUnet requires GLPK  >= 4.32])
385 else
386         AM_CONDITIONAL(HAVE_LIBGLPK, true)
387         AC_DEFINE([HAVE_LIBGLPK],[1],[Have GLPK])
388 fi
389
390
391
392 AC_CHECK_HEADERS([nss.h],[nss=true],[nss=false])
393 if test x$nss = xfalse
394 then
395         AM_CONDITIONAL(HAVE_GLIBCNSS, false)
396         AC_MSG_WARN([No GNU libc nss header, will not build NSS plugin])
397 else
398         AM_CONDITIONAL(HAVE_GLIBCNSS, true)
399 fi
400
401
402
403 # test for kvm and kstat (for CPU stats under BSD/Solaris)
404 AC_CHECK_LIB([kvm],[kvm_open])
405 AC_CHECK_LIB([kstat],[kstat_open])
406
407 # test for libextractor
408 extractor=0
409 AC_MSG_CHECKING(for libextractor)
410 AC_ARG_WITH(extractor,
411    [  --with-extractor=PFX    base of libextractor installation],
412    [AC_MSG_RESULT([$with_extractor])
413     case $with_extractor in
414       no)
415         ;;
416       yes)
417         AC_CHECK_HEADERS(extractor.h,
418           AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
419             extractor=1))
420         ;;
421       *)
422         LDFLAGS="-L$with_extractor/lib $LDFLAGS"
423         CPPFLAGS="-I$with_extractor/include $CPPFLAGS"
424         AC_CHECK_HEADERS(extractor.h,
425           AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
426             EXT_LIB_PATH="-L$with_extractor/lib $EXT_LIB_PATH"
427             extractor=1))
428         ;;
429     esac
430    ],
431    [AC_MSG_RESULT([--with-extractor not specified])
432     AC_CHECK_HEADERS(extractor.h,
433      AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
434       extractor=1))])
435 if test "$extractor" != 1
436 then
437  AC_MSG_ERROR([GNUnet requires libextractor])
438 fi
439 # restore LIBS
440 LIBS=$SAVE_LIBS
441
442 # test for libunistring
443 gl_LIBUNISTRING
444 if test $HAVE_LIBUNISTRING != yes; then
445  AC_MSG_ERROR([GNUnet requires libunistring])
446 fi
447 if test $gl_libunistring_hexversion -le 2305; then
448  AC_MSG_ERROR([GNUnet requires libunistring >= 0.9.1.1])
449 fi
450 # restore LIBS
451 LIBS=$SAVE_LIBS
452
453
454
455 # Checks for standard header files.
456 AC_HEADER_DIRENT
457 AC_HEADER_STDC
458
459 # Check for headers that are ALWAYS required
460 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]))
461
462 # Checks for headers that are only required on some systems or opional (and where we do NOT abort if they are not there)
463 AC_CHECK_HEADERS([malloc.h malloc/malloc.h 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 netinet/in_systm.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 ucred.h endian.h sys/endian.h execinfo.h])
464
465 SAVE_LDFLAGS=$LDFLAGS
466 SAVE_CPPFLAGS=$CPPFLAGS
467
468 # test for sqlite
469 sqlite=false
470 AC_MSG_CHECKING(for SQLite)
471 AC_ARG_WITH(sqlite,
472   [  --with-sqlite=PFX       base of SQLite installation],
473   [AC_MSG_RESULT("$with_sqlite")
474    case $with_sqlite in
475    no)
476      ;;
477    yes)
478     AC_CHECK_HEADERS(sqlite3.h,
479      sqlite=true)
480      ;;
481    *)
482     LDFLAGS="-L$with_sqlite/lib $LDFLAGS"
483     CPPFLAGS="-I$with_sqlite/include $CPPFLAGS"
484     AC_CHECK_HEADERS(sqlite3.h,
485      EXT_LIB_PATH="-L$with_sqlite/lib $EXT_LIB_PATH"
486      SQLITE_LDFLAGS="-L$with_sqlite/lib"
487      SQLITE_CPPFLAGS="-I$with_sqlite/include"
488      sqlite=true)
489     LDFLAGS=$SAVE_LDFLAGS
490     CPPFLAGS=$SAVE_CPPFLAGS
491     ;;
492    esac
493   ],
494   [AC_MSG_RESULT([--with-sqlite not specified])
495     AC_CHECK_HEADERS(sqlite3.h, sqlite=true)])
496 AM_CONDITIONAL(HAVE_SQLITE, test x$sqlite = xtrue)
497 AC_SUBST(SQLITE_CPPFLAGS)
498 AC_SUBST(SQLITE_LDFLAGS)
499
500 # test for postgres
501 postgres=false
502 AC_MSG_CHECKING(for postgres)
503 AC_ARG_WITH(postgres,
504   [  --with-postgres=PFX       base of postgres installation],
505   [AC_MSG_RESULT("$with_postgres")
506    case $with_postgres in
507    no)
508      ;;
509    yes)
510     AC_CHECK_HEADERS(postgresql/libpq-fe.h,
511      postgres=true)
512      ;;
513    *)
514     LDFLAGS="-L$with_postgres/lib $LDFLAGS"
515     CPPFLAGS="-I$with_postgres/include $CPPFLAGS"
516     AC_CHECK_HEADERS(postgresql/libpq-fe.h,
517      EXT_LIB_PATH="-L$with_postgres/lib $EXT_LIB_PATH"
518      POSTGRES_LDFLAGS="-L$with_postgres/lib"
519      POSTGRES_CPPFLAGS="-I$with_postgres/include"
520      postgres=true)
521     LDFLAGS=$SAVE_LDFLAGS
522     CPPFLAGS=$SAVE_CPPFLAGS
523     ;;
524    esac
525   ],
526   [AC_MSG_RESULT([--with-postgres not specified])
527     AC_CHECK_HEADERS(postgresql/libpq-fe.h, postgres=true)])
528 AM_CONDITIONAL(HAVE_POSTGRES, test x$postgres = xtrue)
529 AC_SUBST(POSTGRES_CPPFLAGS)
530 AC_SUBST(POSTGRES_LDFLAGS)
531
532 # test for libz (maybe required for linking mysql)
533 zlib=1
534 AC_CHECK_LIB(z, compress,,zlib=0)
535 AM_CONDITIONAL(HAVE_ZLIB, test x$zlib = x1)
536 if test "$zlib" != 1
537 then
538  AC_MSG_ERROR([GNUnet requires zlib])
539 fi
540
541 # mysql & windows
542 AC_CHECK_TYPES([sigset_t, off_t], [], [], [#include <sys/types.h>])
543 AC_CHECK_TYPES([size_t], [], [], [#include <stdio.h>])
544
545 if test "$build_target" = "mingw"
546 then
547   CYGWIN_MYSQL_MAGIC="#include <mysql/my_global.h>"
548 fi
549
550 # test for mysql
551 mysql=false
552 mysqlfail=false
553 SAVE_LDFLAGS=$LDFLAGS
554 SAVE_CPPFLAGS=$CPPFLAGS
555 AC_MSG_CHECKING(for mysql)
556 AC_ARG_WITH(mysql,
557   [  --with-mysql=PFX        base of MySQL installation],
558   [AC_MSG_RESULT("$with_mysql")
559    if test "$with_mysql" != "no"
560    then
561     if test "$with_mysql" != "yes"
562     then
563       LDFLAGS="-L$with_mysql/lib -L$with_mysql/lib/mysql $LDFLAGS $ZLIBS"
564       CPPFLAGS="-I$with_mysql/include $CPPFLAGS"
565     fi
566     AC_CHECK_HEADERS(mysql/mysql.h,
567      AC_CHECK_LIB(mysqlclient, mysql_init,
568       MYSQL_LDFLAGS="-L$with_mysql/lib -L$with_mysql/lib/mysql"
569       MYSQL_CPPFLAGS="-I$with_mysql/include"
570
571       mysql=true), [], [$CYGWIN_MYSQL_MAGIC])
572    fi
573   ],
574   [AC_MSG_RESULT([--with-mysql not specified])
575    LDFLAGS="-L/usr/lib/mysql $LDFLAGS $ZLIBS"
576    AC_CHECK_LIB(mysqlclient, mysql_init,
577     [AC_CHECK_HEADERS(mysql/mysql.h,
578       MYSQL_LDFLAGS="-L/usr/lib/mysql"
579       mysql=true
580
581      , [], [$CYGWIN_MYSQL_MAGIC])])
582   ])
583
584 AC_SUBST(MYSQL_LDFLAGS)
585 AC_SUBST(MYSQL_CPPFLAGS)
586
587 # additional version check for mysql
588 AC_ARG_ENABLE(mysql-version-check, [  --disable-mysql-version-check  do not check MySQL version],, enable_mysql_version_check=yes)
589 if test "$mysql" = "true" -a "x$enable_mysql_version_check" = "xyes"
590 then
591   AC_MSG_CHECKING(mysql version)
592   AC_RUN_IFELSE([AC_LANG_PROGRAM(
593     [[$CYGWIN_MYSQL_MAGIC
594       #include <mysql/mysql.h>]],
595     [[if (MYSQL_VERSION_ID < 40100)
596         return(-1);
597       else
598         return(0);
599     ]])
600     ],mysql=true,mysql=false)
601   if test "$mysql" = "false"
602   then
603     mysqlfail=true
604     AC_MSG_RESULT([fail, >= 4.1 required])
605   else
606     AC_MSG_RESULT(ok)
607   fi
608 fi
609 AM_CONDITIONAL(HAVE_MYSQL, test x$mysql = xtrue)
610 AM_CONDITIONAL(HAVE_MYSQLE, test "0" = "1")
611 # restore LIBS
612 LIBS=$SAVE_LIBS
613 LDFLAGS=$SAVE_LDFLAGS
614 CPPFLAGS=$SAVE_CPPFLAGS
615
616 if test "$sqlite" = 0 -a "$mysql" = 0
617 then
618  AC_MSG_ERROR([GNUnet requires SQLite or MySQL])
619 fi
620
621 # libmicrohttpd
622 lmhd=0
623 AC_MSG_CHECKING([for libmicrohttpd])
624 AC_ARG_WITH(microhttpd,
625    [  --with-microhttpd=PFX   base of libmicrohttpd installation],
626    [AC_MSG_RESULT([$with_microhttpd])
627     case $with_microhttpd in
628       no)
629         ;;
630       yes)
631         AC_CHECK_HEADERS([microhttpd.h],
632           AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
633             AC_CHECK_LIB([microhttpd], [MHD_start_daemon],
634               [AC_MSG_CHECKING([for libmicrohttpd >= 0.9.18])
635               AC_RUN_IFELSE([
636                 #include "$native_srcdir/src/include/platform.h"
637                 #include <microhttpd.h>
638                 int main () { return MHD_VERSION >= 0x0091200 ? 0 : 1; }
639                ], [
640                AC_MSG_RESULT(ok)
641                lmhd=1],[AC_MSG_RESULT(failed)],lmhd=1)]),
642             [],[#include "$native_srcdir/src/include/platform.h"
643                 #include <microhttpd.h>]),,
644             [#include "$native_srcdir/src/include/platform.h"])
645         ;;
646       *)
647         LDFLAGS="-L$with_microhttpd/lib $LDFLAGS"
648         CPPFLAGS="-I$with_microhttpd/include $CPPFLAGS"
649         AC_CHECK_HEADERS(microhttpd.h,
650           AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
651             AC_CHECK_LIB([microhttpd], [MHD_start_daemon],
652               EXT_LIB_PATH="-L$with_microhttpd/lib $EXT_LIB_PATH"
653               [AC_MSG_CHECKING([for libmicrohttpd >= 0.9.18])
654                AC_RUN_IFELSE([
655                 #include "$native_srcdir/src/include/platform.h"
656                 #include <microhttpd.h>
657                 int main () { return MHD_VERSION >= 0x0091200 ? 0 : 1; }
658                ], [
659                AC_MSG_RESULT(ok)
660                lmhd=1],[AC_MSG_RESULT(failed)],lmhd=1)]),
661             [],[#include "$native_srcdir/src/include/platform.h"
662                 #include <microhttpd.h>]),,
663             [#include "$native_srcdir/src/include/platform.h"])
664         ;;
665     esac
666    ],
667    [AC_MSG_RESULT([--with-microhttpd not specified])
668     AC_CHECK_HEADERS([microhttpd.h],
669       AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
670         AC_CHECK_LIB([microhttpd], [MHD_start_daemon],
671           [AC_MSG_CHECKING([for libmicrohttpd >= 0.9.18])
672               AC_RUN_IFELSE([
673                 #include "$native_srcdir/src/include/platform.h"
674                 #include <microhttpd.h>
675                 int main () { return MHD_VERSION >= 0x0091200 ? 0 : 1; }
676                ], [
677                AC_MSG_RESULT(ok)
678                lmhd=1],[AC_MSG_RESULT(failed)],lmhd=1)]),
679         [],[#include "$native_srcdir/src/include/platform.h"
680             #include <microhttpd.h>]),,
681        [#include "$native_srcdir/src/include/platform.h"])])
682 AM_CONDITIONAL(HAVE_MHD, test x$lmhd = x1)
683 AC_DEFINE_UNQUOTED([HAVE_MHD], $lmhd, [We have libmicrohttpd])
684
685
686 # restore LIBS
687 LIBS=$SAVE_LIBS
688
689 # check for python & pexpect (used for some testcases only)
690 AM_PATH_PYTHON([2.6],, [:])
691 AM_CONDITIONAL([HAVE_PYTHON], [test "$PYTHON" != :])
692
693 # check for gettext
694 AM_GNU_GETTEXT([external])
695 AM_GNU_GETTEXT_VERSION([0.16.1])
696
697 # check for iconv
698 AM_ICONV
699
700 # Checks for standard typedefs, structures, and compiler characteristics.
701 AC_TYPE_PID_T
702 AC_TYPE_SIZE_T
703 AC_TYPE_MODE_T
704 AC_HEADER_TIME
705 AC_HEADER_STAT
706 AC_HEADER_STDBOOL
707 AC_STRUCT_TM
708
709 AC_CHECK_MEMBER([struct sockaddr_in.sin_len],
710    [ AC_DEFINE(HAVE_SOCKADDR_IN_SIN_LEN, 1, [Do we have sockaddr_in.sin_len?])
711    ],
712    [],
713    [
714       #include <sys/types.h>
715       #include <sys/socket.h>
716       #include <netinet/in.h>
717    ])
718
719
720
721 # Checks for library functions.
722 AC_FUNC_CLOSEDIR_VOID
723 AC_FUNC_FORK
724 AC_PROG_GCC_TRADITIONAL
725 AC_FUNC_MEMCMP
726 AC_FUNC_SELECT_ARGTYPES
727 AC_FUNC_CHOWN
728
729 AC_TYPE_SIGNAL
730 AC_FUNC_STAT
731 AC_FUNC_STRFTIME
732 AC_FUNC_VPRINTF
733 AC_HEADER_SYS_WAIT
734 AC_TYPE_OFF_T
735 AC_TYPE_UID_T
736 AC_CHECK_FUNCS([atoll stat64 strnlen mremap setrlimit sysconf initgroups strndup gethostbyname2 getpeerucred getpeereid setresuid $funcstocheck getifaddrs freeifaddrs getresgid mallinfo malloc_size malloc_usable_size getrusage])
737
738 # restore LIBS
739 LIBS=$SAVE_LIBS
740
741 gn_user_home_dir="~/.gnunet"
742 AC_ARG_WITH(user-home-dir,
743         AC_HELP_STRING(
744                 [--with-user-home-dir=DIR],
745                 [default user home directory (~/.gnunet)]),
746         [gn_user_home_dir=$withval])
747 AC_SUBST(GN_USER_HOME_DIR, $gn_user_home_dir)
748 gn_daemon_home_dir="/var/lib/gnunet"
749 AC_ARG_WITH(daemon-home-dir,
750         AC_HELP_STRING(
751                 [--with-daemon-home-dir=DIR],
752                 [default daemon home directory (/var/lib/gnunet)]),
753         [gn_daemon_home_dir=$withval])
754 AC_SUBST(GN_DAEMON_HOME_DIR, $gn_daemon_home_dir)
755 gn_daemon_config_dir="/etc"
756 AC_ARG_WITH(daemon-config-dir,
757         AC_HELP_STRING(
758                 [--with-daemon-config-dir=DIR],
759                 [default daemon config directory (/etc)]),
760         [gn_daemon_config_dir=$withval])
761 AC_SUBST(GN_DAEMON_CONFIG_DIR, $gn_daemon_config_dir)
762
763 GN_INTLINCL=""
764 GN_LIBINTL="$LTLIBINTL"
765 AC_ARG_ENABLE(framework, [  --enable-framework      enable Mac OS X framework build helpers],enable_framework_build=$enableval)
766 AM_CONDITIONAL(WANT_FRAMEWORK, test x$enable_framework_build = xyes)
767 if test x$enable_framework_build = xyes
768 then
769   AC_DEFINE([FRAMEWORK_BUILD], 1, [Build a Mac OS X Framework])
770   GN_INTLINCL='-I$(top_srcdir)/src/intlemu'
771   GN_LIBINTL='$(top_builddir)/src/intlemu/libintlemu.la -framework CoreFoundation'
772   AC_LIB_APPENDTOVAR([CPPFLAGS], [$GN_INTLINCL]) 
773 fi
774
775 GN_LIB_LDFLAGS="-export-dynamic -no-undefined"
776 GN_PLUGIN_LDFLAGS="-export-dynamic -avoid-version -module -no-undefined"
777
778 AC_SUBST(GN_LIB_LDFLAGS)
779 AC_SUBST(GN_PLUGIN_LDFLAGS)
780 AC_SUBST(GN_INTLINCL)
781 AC_SUBST(GN_LIBINTL)
782
783 AC_SUBST(CPPFLAGS)
784 AC_SUBST(LIBS)
785 AC_SUBST(LDFLAGS)
786 AC_SUBST(EXT_LIB_PATH)
787 AC_SUBST(EXT_LIBS)
788
789 AC_SUBST(LIBPREFIX)
790 AC_SUBST(DLLDIR)
791 AC_SUBST(EXT_LIB_PATH)
792
793
794 # test for sudo
795 AC_MSG_CHECKING(for sudo)
796 AC_ARG_WITH(sudo,
797   [  --with-sudo=PATH       path to sudo binary (or just yes)],
798   [AC_MSG_RESULT("$with_sudo")
799    case $with_sudo in
800    no)
801      SUDO_BINARY=
802      ;;
803    yes)
804      SUDO_BINARY=sudo
805      ;;
806    *)
807      SUDO_BINARY=$with_sudo
808     ;;
809    esac
810   ],
811   [AC_MSG_RESULT([no])])
812 AC_SUBST(SUDO_BINARY)
813 AM_CONDITIONAL([HAVE_SUDO], [test "x$SUDO_BINARY" != "x" -o -w /])
814
815
816 # test for nssdir
817 AC_MSG_CHECKING(with nssdir)
818 AC_ARG_WITH(nssdir,
819   [  --with-nssdir=PATH       where to install NSS plugins],
820   [AC_MSG_RESULT("$with_nssdir")
821    case $with_nssdir in
822    no)
823      NSS_DIR=
824      install_nss=0
825      ;;
826    yes)
827      NSS_DIR="/lib"
828      install_nss=1
829      ;;
830    *)
831      NSS_DIR=$with_nssdir
832      install_nss=1
833     ;;
834    esac
835   ],
836   [
837    if test "x$SUDO_BINARY" != "x" -o -w /
838    then
839      NSS_DIR="/lib"
840      install_nss=1
841      AC_MSG_RESULT([yes, to /lib])
842    else
843      NSS_DIR=
844      install_nss=0
845      AC_MSG_RESULT([no])
846    fi
847   ])
848 AC_SUBST(NSS_DIR)
849 AM_CONDITIONAL([INSTALL_NSS], [test "x$install_nss" != "x0"])
850
851 # test for gnunetdns group name
852 GNUNETDNS_GROUP=gnunetdns
853 AC_MSG_CHECKING(for gnunetdns group name)
854 AC_ARG_WITH(gnunetdns,
855   [  --with-gnunetdns=GRPNAME       name for gnunetdns group],
856   [AC_MSG_RESULT("$with_gnunetdns")
857    case $with_gnunetdns in
858    no)
859      GNUNETDNS_GROUP=gnunet
860      ;;
861    yes)
862      GNUNETDNS_GROUP=gnunetdns
863      ;;
864    *)
865      GNUNETDNS_GROUP=$with_gnunetdns
866     ;;
867    esac
868   ],
869   [AC_MSG_RESULT([gnunetdns])])
870 AC_SUBST(GNUNETDNS_GROUP)
871
872
873
874 # gnutls
875 gnutls=0
876 AC_MSG_CHECKING(for gnutls)
877 AC_ARG_WITH(gnutls,
878    [  --with-gnutls=PFX   base of gnutls installation],
879    [AC_MSG_RESULT([$with_gnutls])
880     case $with_gnutls in
881       no)
882         ;;
883       yes)
884         AC_CHECK_HEADERS([gnutls/abstract.h],
885             AC_CHECK_LIB([gnutls], [gnutls_priority_set],
886              gnutls=true))
887         ;;
888       *)
889         LDFLAGS="-L$with_gnutls/lib $LDFLAGS"
890         CPPFLAGS="-I$with_gnutls/include $CPPFLAGS"
891         AC_CHECK_HEADERS([gnutls/abstract.h],
892             AC_CHECK_LIB([gnutls], [gnutls_priority_set],
893               EXT_LIB_PATH="-L$with_gnutls/lib $EXT_LIB_PATH"
894               gnutls=true))
895         ;;
896     esac
897    ],
898    [AC_MSG_RESULT([--with-gnutls not specified])
899     AC_CHECK_HEADERS([gnutls/abstract.h],
900         AC_CHECK_LIB([gnutls], [gnutls_priority_set],
901           gnutls=true))])
902 AM_CONDITIONAL(HAVE_GNUTLS, test x$gnutls = xtrue)
903 AC_DEFINE_UNQUOTED([HAVE_GNUTLS], $gnutls, [We have gnutls])
904
905
906
907 # should 'make check' run tests?
908 AC_MSG_CHECKING(whether to run tests)
909 AC_ARG_ENABLE([testruns],
910    [AS_HELP_STRING([--disable-testruns], [disable running tests on make check (default is YES)])],
911    [enable_tests_run=${enableval}],
912    [enable_tests_run=yes])
913 AC_MSG_RESULT($enable_test_run)
914 AM_CONDITIONAL([ENABLE_TEST_RUN], [test "x$enable_tests_run" = "xyes"])
915
916
917 # should monkey be used when running (certain) services?
918 AC_MSG_CHECKING(whether to run with monkey)
919 AC_ARG_ENABLE([monkey],
920    [AS_HELP_STRING([--enable-monkey], [enable running with monkey])],
921    [enable_monkey=${enableval}],
922    [enable_monkey=no])
923 AC_MSG_RESULT($enable_monkey)
924 AM_CONDITIONAL([ENABLE_MONKEY], [test "x$enable_monkey" = "xyes"])
925 if test "x$enable_monkey" = "xyes"
926 then
927   MONKEYPREFIX="monkey"
928 else
929   MONKEYPREFIX=""
930 fi
931 AC_SUBST(MONKEYPREFIX)
932
933
934 # should expensive tests be run?
935 AC_MSG_CHECKING(whether to run expensive tests)
936 AC_ARG_ENABLE([expensivetests],
937    [AS_HELP_STRING([--enable-expensivetests], [enable running expensive testcases])],
938    [enable_expensive=${enableval}],
939    [enable_expensive=no])
940 AC_MSG_RESULT($enable_expensive)
941 AM_CONDITIONAL([HAVE_EXPENSIVE_TESTS], [test "x$enable_expensive" = "xyes"])
942
943 # should ports be open for Java services?
944 AC_MSG_CHECKING(whether to enable ports for gnunet-java)
945 AC_ARG_ENABLE([javaports],
946    [AS_HELP_STRING([--enable-javaports], [use non-zero ports for services with Java bindings (default is NO)])],
947    [enable_java_ports=${enableval}],
948    [enable_java_ports=no])
949 AC_MSG_RESULT($enable_java_ports)
950 if test "x$enable_java_ports" = "xyes"
951 then
952   JAVAPORT=""
953 else
954   JAVAPORT="$UNIXONLY"
955 fi
956 AC_SUBST(JAVAPORT)
957
958 # should benchmarks be run?
959 AC_MSG_CHECKING(whether to run benchmarks during make check)
960 AC_ARG_ENABLE([benchmarks],
961    [AS_HELP_STRING([--enable-benchmarks], [enable running benchmarks during make check])],
962    [enable_benchmarks=${enableval}],
963    [enable_benchmarks=no])
964 AC_MSG_RESULT($enable_benchmarks)
965 AM_CONDITIONAL([HAVE_BENCHMARKS], [test "x$enable_benchmarks" = "xyes"])
966
967 # should experimental code be compiled (code that may not yet compile)?
968 AC_MSG_CHECKING(whether to compile experimental code)
969 AC_ARG_ENABLE([experimental],
970    [AS_HELP_STRING([--enable-experimental], [enable compiling experimental code])],
971    [enable_experimental=${enableval}],
972    [enable_experimental=no])
973 AC_MSG_RESULT($enable_experimental)
974 AM_CONDITIONAL([HAVE_EXPERIMENTAL], [test "x$enable_experimental" = "xyes"])
975
976 # should code be enabled that works around missing OS functionality on Windows?
977 # used for test cases
978 if test $build_target = "mingw"
979 then
980         workarounds=1
981
982 AC_LINK_IFELSE(
983  [AC_LANG_PROGRAM(
984   [#include <ws2tcpip.h>
985   ],[
986   int s = socket (0, 0, 0);])
987  ],[
988   AC_DEFINE_UNQUOTED([HAVE_SOCKET],1,[Define this if socket() is available])
989  ],[
990   AC_DEFINE_UNQUOTED([HAVE_SOCKET],0,[Define this if socket() is available])
991  ])
992
993 AC_LINK_IFELSE(
994  [AC_LANG_PROGRAM(
995   [#include <ws2tcpip.h>
996   ],[
997   int s = select (0, NULL, NULL, NULL, NULL);])
998  ],[
999   AC_DEFINE_UNQUOTED([HAVE_SELECT],1,[Define this if select() is available])
1000  ],[
1001   AC_DEFINE_UNQUOTED([HAVE_SELECT],0,[Define this if select() is available])
1002  ])
1003
1004 AC_LINK_IFELSE(
1005  [AC_LANG_PROGRAM(
1006   [#include <ws2tcpip.h>
1007   ],[
1008   struct in_addr i;
1009   char *s = inet_ntoa (i);])
1010  ],[
1011   AC_DEFINE_UNQUOTED([HAVE_INET_NTOA],1,[Define this if inet_ntoa() is available])
1012  ],[
1013   AC_DEFINE_UNQUOTED([HAVE_INET_NTOA],0,[Define this if inet_ntoa() is available])
1014  ])
1015
1016 AC_LINK_IFELSE(
1017  [AC_LANG_PROGRAM(
1018   [#include <ws2tcpip.h>
1019   ],[
1020   int s = getnameinfo (NULL, 0, NULL, 0, NULL, 0, 0);])
1021  ],[
1022   AC_DEFINE_UNQUOTED([HAVE_GETNAMEINFO],1,[Define this if getnameinfo() is available])
1023  ],[
1024   AC_DEFINE_UNQUOTED([HAVE_GETNAMEINFO],0,[Define this if getnameinfo() is available])
1025  ])
1026
1027 AC_LINK_IFELSE(
1028  [AC_LANG_PROGRAM(
1029   [#include <ws2tcpip.h>
1030   ],[
1031   int s = gethostname (NULL, 0);])
1032  ],[
1033   AC_DEFINE_UNQUOTED([HAVE_GETHOSTNAME],1,[Define this if gethostname() is available])
1034  ],[
1035   AC_DEFINE_UNQUOTED([HAVE_GETHOSTNAME],0,[Define this if gethostname() is available])
1036  ])
1037
1038 AC_LINK_IFELSE(
1039  [AC_LANG_PROGRAM(
1040   [#include <ws2tcpip.h>
1041   ],[
1042   void *s = gethostbyname (NULL);])
1043  ],[
1044   AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYNAME],1,[Define this if gethostbyname() is available])
1045  ],[
1046   AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYNAME],0,[Define this if gethostbyname() is available])
1047  ])
1048
1049 AC_LINK_IFELSE(
1050  [AC_LANG_PROGRAM(
1051   [#include <ws2tcpip.h>
1052   ],[
1053   void *s = gethostbyaddr (NULL, 0, 0);])
1054  ],[
1055   AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYADDR],1,[Define this if gethostbyaddr() is available])
1056  ],[
1057   AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYADDR],0,[Define this if gethostbyaddr() is available])
1058  ])
1059
1060 AC_LINK_IFELSE(
1061  [AC_LANG_PROGRAM(
1062   [#include <ws2tcpip.h>
1063   ],[
1064   int s = getaddrinfo (NULL, NULL, NULL, NULL);])
1065  ],[
1066   AC_DEFINE_UNQUOTED([HAVE_GETADDRINFO],1,[Define this if getaddrinfo() is available])
1067  ],[
1068   AC_DEFINE_UNQUOTED([HAVE_GETADDRINFO],1,[Define this if getaddrinfo() is available])
1069  ])
1070
1071 else
1072   AC_MSG_CHECKING(whether to enable windows workarounds)
1073   AC_ARG_ENABLE([windows_workarounds], 
1074      [AS_HELP_STRING([--enable-windows_workarounds], [enable workarounds used on Windows (only useful for test cases)])],
1075      [enable_workarounds=${enableval}],
1076      [enable_workarounds=no])
1077   AC_MSG_RESULT($enable_workarounds)
1078   if test x$enable_windows_workarounds = "xyes"
1079   then
1080      workarounds=1
1081   else
1082      workarounds=0
1083    fi
1084 fi
1085 AC_DEFINE_UNQUOTED([ENABLE_WINDOWS_WORKAROUNDS], $workarounds, [enable workarounds used on Windows (only useful for test cases)])
1086
1087 # gcov compilation
1088 AC_MSG_CHECKING(whether to compile with support for code coverage analysis)
1089 AC_ARG_ENABLE([coverage], 
1090               AS_HELP_STRING([--enable-coverage],
1091                              [compile the library with code coverage support]),
1092               [use_gcov=${enableval}], 
1093               [use_gcov=no])
1094 AC_MSG_RESULT($use_gcov)
1095 AM_CONDITIONAL([USE_COVERAGE], [test "x$use_gcov" = "xyes"])
1096
1097
1098 AC_CONFIG_FILES([ 
1099 Makefile
1100 contrib/Makefile
1101 doc/Makefile
1102 doc/man/Makefile
1103 m4/Makefile
1104 po/Makefile.in 
1105 src/Makefile
1106 src/arm/Makefile
1107 src/arm/arm.conf
1108 src/ats/Makefile
1109 src/ats/ats.conf
1110 src/block/Makefile
1111 src/chat/Makefile
1112 src/chat/chat.conf
1113 src/core/Makefile
1114 src/core/core.conf
1115 src/datacache/Makefile
1116 src/datastore/Makefile
1117 src/datastore/datastore.conf
1118 src/dht/Makefile
1119 src/dht/dht.conf
1120 src/dns/Makefile
1121 src/dns/dns.conf
1122 src/dv/Makefile
1123 src/dv/dv.conf
1124 src/exit/Makefile
1125 src/fragmentation/Makefile
1126 src/fs/Makefile
1127 src/fs/fs.conf
1128 src/gns/Makefile
1129 src/gns/gns.conf
1130 src/gns/nss/Makefile
1131 src/hello/Makefile
1132 src/include/Makefile
1133 src/include/gnunet_directories.h
1134 src/hostlist/Makefile
1135 src/lockmanager/Makefile
1136 src/lockmanager/lockmanager.conf
1137 src/mesh/Makefile
1138 src/mesh/mesh.conf
1139 src/mysql/Makefile
1140 src/namestore/Makefile
1141 src/namestore/namestore.conf
1142 src/nat/Makefile
1143 src/nse/Makefile
1144 src/nse/nse.conf
1145 src/peerinfo/Makefile
1146 src/peerinfo/peerinfo.conf
1147 src/peerinfo-tool/Makefile
1148 src/postgres/Makefile
1149 src/pt/Makefile
1150 src/regex/Makefile
1151 src/statistics/Makefile
1152 src/statistics/statistics.conf
1153 src/stream/Makefile
1154 src/template/Makefile
1155 src/testbed/Makefile
1156 src/testbed/testbed.conf
1157 src/testing/Makefile
1158 src/testing_old/Makefile
1159 src/topology/Makefile
1160 src/transport/Makefile
1161 src/transport/transport.conf
1162 src/tun/Makefile
1163 src/util/Makefile
1164 src/util/resolver.conf
1165 src/vpn/Makefile
1166 src/vpn/vpn.conf
1167 src/integration-tests/Makefile
1168 pkgconfig/Makefile
1169 pkgconfig/gnunetarm.pc
1170 pkgconfig/gnunetblock.pc
1171 pkgconfig/gnunetcore.pc
1172 pkgconfig/gnunetdatacache.pc
1173 pkgconfig/gnunetdatastore.pc
1174 pkgconfig/gnunetdht.pc
1175 pkgconfig/gnunetdhtlog.pc
1176 pkgconfig/gnunetdv.pc
1177 pkgconfig/gnunetfragmentation.pc
1178 pkgconfig/gnunetfs.pc
1179 pkgconfig/gnunethello.pc
1180 pkgconfig/gnunetnat.pc
1181 pkgconfig/gnunetnse.pc
1182 pkgconfig/gnunetpeerinfo.pc
1183 pkgconfig/gnunetregex.pc
1184 pkgconfig/gnunetstatistics.pc
1185 pkgconfig/gnunettesting.pc
1186 pkgconfig/gnunettransport.pc
1187 pkgconfig/gnunetutil.pc
1188 ])
1189 AC_OUTPUT
1190
1191 # Finally: summary!
1192
1193 # warn user if mysql found but not used due to version
1194 if test "$mysqlfail" = "true"
1195 then
1196   AC_MSG_NOTICE([NOTICE: MySQL found, but too old. MySQL support will not be compiled.])
1197 fi
1198
1199 # sqlite
1200 if test "x$sqlite" = "x0"
1201 then
1202   AC_MSG_NOTICE([NOTICE: sqlite not found.  sqLite support will not be compiled.])
1203 fi
1204
1205 # libcurl
1206 if test "x$curl" = "x0"
1207 then
1208   AC_MSG_NOTICE([NOTICE: libcurl not found.  http client support will not be compiled.])
1209 fi
1210
1211 #gnutls
1212 if test x$gnutls != xtrue
1213 then
1214   AC_MSG_NOTICE([NOTICE: gnutls not found, gnunet-gns-proxy will not be built])
1215 fi
1216
1217 # java ports
1218 if test "x$enable_java_ports" = "xyes"
1219 then
1220   AC_MSG_NOTICE([NOTICE: opening ports for gnunet-java bindings by default.])
1221 fi
1222
1223 if test "x$lmhd" != "x1"
1224 then
1225  AC_MSG_NOTICE([NOTICE: libmicrohttpd not found, http transport will not be installed.])
1226 fi
1227
1228 AC_MSG_NOTICE([NOTICE: Database support is set to MySQL: $mysql, SQLite: $sqlite, Postgres: $postgres])
1229
1230 if test "$enable_framework_build" = "yes"
1231 then
1232   AC_MSG_NOTICE([NOTICE: Mac OS X framework build enabled.])
1233 fi
1234
1235 if test "x$SUDO_BINARY" = "x" -a ! -w /
1236 then
1237   AC_MSG_NOTICE([NOTICE: --with-sudo not specified and not running as 'root', will not install GNS NSS library])
1238 fi
1239
1240
1241 AC_MSG_NOTICE([********************************************
1242 Please make sure NOW that you have created a user and group 'gnunet'
1243 and additionally a group 'gnunetdns':
1244         addgroup gnunetdns
1245         adduser gnunet
1246
1247 Make sure that '/var/lib/gnunet' is owned (and writable) by user
1248 'gnunet'.  Then, you can compile GNUnet with
1249         make
1250
1251 After that, run (if necessary as 'root')
1252         make install
1253 to install everything. 
1254
1255 Each GNUnet user should be added to the 'gnunet' group (may
1256 require fresh login to come into effect):
1257         adduser $USERNAME gnunet
1258 (run the above command as root once for each of your users, replacing
1259 "$USERNAME" with the respective login names).  If you have a global IP
1260 address, no further configuration is required.
1261         
1262 Optionally, download and compile gnunet-gtk to get a GUI for 
1263 file-sharing and configuration.  This is particularly recommended
1264 if your network setup is non-trivial, as gnunet-setup can be
1265 used to test in the GUI if your network configuration is working.
1266 gnunet-setup should be run as the "gnunet" user under X.  As it
1267 does very little with the network, running it as "root" is likely
1268 also harmless.  You can also run it as a normal user, but then
1269 you have to copy ~/.gnunet/gnunet.conf" over to the "gnunet" user's
1270 home directory in the end.
1271
1272 Once you have configured your peer, run (as the 'gnunet' user)
1273         gnunet-arm -s
1274 to start the peer.  You can then run the various GNUnet-tools as
1275 your "normal" user (who should only be in the group 'gnunet').
1276 ********************************************])