3072684fc217c25131d2c83d27c397b955bba637
[oweals/gnunet.git] / configure.ac
1 # This file is part of GNUnet.
2 # (C) 2001--2015 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 3, 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.10.1], [bug-gnunet@gnu.org])
26
27 AC_CANONICAL_TARGET
28 AC_CANONICAL_HOST
29 AC_CANONICAL_SYSTEM
30
31 AM_INIT_AUTOMAKE
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 AC_CONFIG_MACRO_DIR([m4])
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 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 funcstocheck="getnameinfo gethostname gethostbyname gethostbyaddr getaddrinfo"
69
70 # Srcdir in a form that native compiler understands (i.e. DOS path on W32)
71 native_srcdir=$srcdir
72
73 # Check system type
74 case "$host_os" in
75 *darwin* | *rhapsody* | *macosx*)
76      AC_DEFINE_UNQUOTED(DARWIN,1,[This is an Apple Darwin system])
77      CPPFLAGS="-D_APPLE_C_SOURCE $CPPFLAGS"
78      CFLAGS="-fno-common $CFLAGS"
79      AC_MSG_WARN([The VPN application cannot be compiled on your OS])
80      build_target="darwin"
81      DEFAULT_INTERFACE="\"en0\""
82      LIBPREFIX=
83      DLLDIR=lib
84      UNIXONLY="#"
85      ;;
86 linux*)
87      AC_DEFINE_UNQUOTED(LINUX,1,[This is a Linux kernel])
88      build_target="linux"
89      LIBPREFIX=
90      DLLDIR=lib
91      UNIXONLY="#"
92      AC_PATH_XTRA
93      ;;
94 *freebsd*)
95      AC_DEFINE_UNQUOTED(SOMEBSD,1,[This is a BSD system])
96      AC_DEFINE_UNQUOTED(FREEBSD,1,[This is a FreeBSD system])
97      CFLAGS="-D_THREAD_SAFE $CFLAGS"
98      build_target="freebsd"
99      LIBPREFIX=
100      DLLDIR=lib
101      UNIXONLY="#"
102      ;;
103 *openbsd*)
104      AC_DEFINE_UNQUOTED(SOMEBSD,1,[This is a BSD system])
105      AC_DEFINE_UNQUOTED(OPENBSD,1,[This is an OpenBSD system])
106      LIBS=`echo $LIBS | sed -e "s/-ldl//"`
107      build_target="openbsd"
108      LIBPREFIX=
109      DLLDIR=lib
110      UNIXONLY="#"
111      ;;
112 *netbsd*)
113      AC_DEFINE_UNQUOTED(SOMEBSD,1,[This is a BSD system])
114      AC_DEFINE_UNQUOTED(NETBSD,1,[This is a NetBSD system])
115      LIBPREFIX=
116      DLLDIR=lib
117      UNIXONLY="#"
118      ;;
119 *solaris*)
120      AC_DEFINE_UNQUOTED(SOLARIS,1,[This is a Solaris system])
121      AC_DEFINE_UNQUOTED(_REENTRANT,1,[Need with solaris or errno doesnt work])
122      AC_CHECK_LIB(resolv, res_init)
123      AC_CHECK_LIB(rt, nanosleep)
124      build_target="solaris"
125      LIBPREFIX=
126      DLLDIR=lib
127      UNIXONLY="#"
128      ;;
129 *arm-linux*)
130      AC_DEFINE_UNQUOTED(LINUX,1,[This is a Linux kernel])
131      CFLAGS="-D_REENTRANT -fPIC -pipe $CFLAGS"
132      build_target="linux"
133      LIBPREFIX=
134      DLLDIR=lib
135      UNIXONLY="#"
136      ;;
137 *cygwin*)
138      AC_DEFINE_UNQUOTED(CYGWIN,1,[This is a Cygwin system])
139      AC_DEFINE_UNQUOTED(WINDOWS,1,[This is a Windows system])
140      AC_CHECK_LIB(intl, gettext)
141      CFLAGS="-mms-bitfields $CFLAGS"
142      build_target="cygwin"
143      LIBPREFIX=lib
144      DLLDIR=bin
145      AC_PROG_CXX
146      UNIXONLY=""
147      ;;
148 *mingw*)
149      AC_DEFINE_UNQUOTED(MINGW,1,[This is a MinGW system])
150      AC_DEFINE_UNQUOTED(WINDOWS,1,[This is a Windows system])
151      AC_DEFINE_UNQUOTED(_WIN32,1,[This is a Windows system])
152      AC_CHECK_LIB(intl, gettext)
153      LDFLAGS="$LDFLAGS -Wl,--export-all-symbols"
154      LIBS="$LIBS -lws2_32 -lplibc -lgnurx -lole32"
155      CFLAGS="-mms-bitfields $CFLAGS"
156      CPPFLAGS="-D_WIN32_WINNT=0x0501 -DHAVE_STAT64=1 -D__USE_MINGW_ANSI_STDIO=1 $CPPFLAGS"
157      build_target="mingw"
158      AC_PROG_CXX
159      LIBPREFIX=lib
160      DLLDIR=bin
161      UNIXONLY=""
162      funcstocheck=""
163      native_srcdir=$(cd $srcdir; pwd -W)
164      ;;
165 gnu*)
166      AC_DEFINE_UNQUOTED(GNU,1,[This is a GNU system])
167      build_target="gnu"
168      UNIXONLY="#"
169      ;;
170 *)
171      AC_MSG_RESULT(Unrecognised OS $host_os)
172      AC_DEFINE_UNQUOTED(OTHEROS,1,[Some strange OS])
173      UNIXONLY=""
174 ;;
175 esac
176 AC_DEFINE_UNQUOTED([GNUNET_DEFAULT_INTERFACE], $DEFAULT_INTERFACE, [This should be the default choice for the name of the first network interface])
177 AC_SUBST(DEFAULT_INTERFACE)
178
179 # Disable TCP-based IPC on systems that support UNIX domain
180 # sockets in default configuratin:
181 AC_SUBST(UNIXONLY)
182
183
184 AC_MSG_CHECKING([for build target])
185 AM_CONDITIONAL(DARWIN,  test "$build_target" = "darwin")
186 AM_CONDITIONAL(CYGWIN,  test "$build_target" = "cygwin")
187 AM_CONDITIONAL(MINGW,   test "$build_target" = "mingw")
188 AM_CONDITIONAL(SOLARIS, test "$build_target" = "solaris")
189 AM_CONDITIONAL(XFREEBSD, test "$build_target" = "freebsd")
190 AM_CONDITIONAL(OPENBSD, test "$build_target" = "openbsd")
191 AM_CONDITIONAL(LINUX, test "$build_target" = "linux")
192 AM_CONDITIONAL(GNU, test "$build_target" = "gnu")
193
194 AC_MSG_RESULT([$build_target])
195 AC_SUBST(build_target)
196 AM_CONDITIONAL([am__fastdepOBJC], false)
197 AC_UNALIGNED_64_ACCESS
198
199 # some other checks for standard libs
200 AC_SEARCH_LIBS([gethostbyname], [nsl ws2_32])
201 AC_CHECK_LIB(socket, socket)
202 AC_CHECK_LIB(m, log)
203 AC_CHECK_LIB(c, getloadavg, AC_DEFINE(HAVE_GETLOADAVG,1,[getloadavg supported]))
204
205 AC_CHECK_PROG(VAR_GETOPT_BINARY, getopt, true, false)
206 AM_CONDITIONAL(HAVE_GETOPT_BINARY, $VAR_GETOPT_BINARY)
207
208
209
210 AC_CHECK_MEMBER(struct tm.tm_gmtoff,
211   [AC_DEFINE(HAVE_TM_GMTOFF, 1,
212      [Define if struct tm has the tm_gmtoff member.])],
213      ,
214      [#include <time.h>])
215
216 AC_CHECK_DECLS([_stati64])
217
218 # 'save' libs; only those libs found so far will be
219 # linked against _everywhere_.  For the others, we
220 # will be more selective!
221 SAVE_LIBS=$LIBS
222
223 # tests only run on Windows
224 if test "x$build_target" = "xmingw"
225 then
226   AC_CHECK_LIB(plibc, plibc_init, [], [AC_MSG_ERROR([GNUnet requires PlibC on Windows])])
227   AC_CHECK_LIB(gnurx, regexec, [], [AC_MSG_ERROR([GNUnet requires libgnurx on Windows])])
228 fi
229
230 # libgcrypt
231 gcrypt=0
232 NEED_LIBGCRYPT_API=1
233 NEED_LIBGCRYPT_VERSION=1.6.0
234
235
236 AM_PATH_LIBGCRYPT("$NEED_LIBGCRYPT_API:$NEED_LIBGCRYPT_VERSION", gcrypt=1)
237 AC_CHECK_DECLS([gcry_mpi_set_opaque_copy], [], [], [[#include <gcrypt.h>]])
238
239 if test $gcrypt = 0
240 then
241   AC_MSG_ERROR([[
242 ***
243 *** You need libgcrypt to build this program.
244 **  This library is for example available at
245 ***   ftp://ftp.gnupg.org/gcrypt/libgcrypt/
246 *** (at least version $NEED_LIBGCRYPT_VERSION (API $NEED_LIBGCRYPT_API)
247 ***  is required.)
248 ***]])
249 fi
250 AC_DEFINE_UNQUOTED([NEED_LIBGCRYPT_VERSION], "$NEED_LIBGCRYPT_VERSION", [required libgcrypt version])
251
252 # Adam shostack suggests the following for Windows:
253 # -D_FORTIFY_SOURCE=2 -fstack-protector-all
254 AC_ARG_ENABLE(gcc-hardening,
255    AS_HELP_STRING(--enable-gcc-hardening, enable compiler security checks),
256 [if test x$enableval = xyes; then
257     CFLAGS="$CFLAGS -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fstack-protector-all"
258     CFLAGS="$CFLAGS -fwrapv -fPIE -Wstack-protector"
259     CFLAGS="$CFLAGS --param ssp-buffer-size=1"
260     LDFLAGS="$LDFLAGS -pie"
261 fi])
262
263
264 # Linker hardening options
265 # Currently these options are ELF specific - you can't use this with MacOSX
266 AC_ARG_ENABLE(linker-hardening,
267   AS_HELP_STRING(--enable-linker-hardening, enable linker security fixups),
268 [if test x$enableval = xyes; then
269    LDFLAGS="$LDFLAGS -z relro -z now"
270 fi])
271
272
273 extra_logging=GNUNET_NO
274 AC_ARG_ENABLE([logging],
275    AS_HELP_STRING([--enable-logging@<:@=value@:>@],[Enable logging calls. Possible values: yes,no,verbose,veryverbose ('yes' is the default)]),
276    [AS_IF([test "x$enableval" = "xyes"], [],
277           [test "x$enableval" = "xno"], [AC_DEFINE([GNUNET_CULL_LOGGING],[],[Define to cull all logging calls])],
278           [test "x$enableval" = "xverbose"], [extra_logging=GNUNET_YES]
279           [test "x$enableval" = "xveryverbose"], [extra_logging=\(GNUNET_YES+1\)])
280    ], [])
281 AC_DEFINE_UNQUOTED([GNUNET_EXTRA_LOGGING],[$extra_logging],[1 if extra logging is enabled, 2 for very verbose extra logging, 0 otherwise])
282
283 # should memory poisoning be enabled?
284 AC_MSG_CHECKING(whether to poison freed memory)
285 AC_ARG_ENABLE([poisoning],
286    [AS_HELP_STRING([--enable-poisoning], [enable poisoning of freed memory (good for debugging)])],
287    [enable_poisoning=${enableval}],
288    [
289      if test "x$extra_logging" != "xGNUNET_NO"; then
290        enable_poisoning="defaults to yes (extra logging is enabled)"
291      else
292        enable_poisoning=no
293      fi
294    ])
295 AC_MSG_RESULT($enable_poisoning)
296 if test ! "x$enable_poisoning" = "xno"; then
297   enable_poisoning=1
298 else
299   enable_poisoning=0
300 fi
301 AC_DEFINE_UNQUOTED([ENABLE_POISONING],[$enable_poisoning],[1 if freed memory should be poisoned, 0 otherwise])
302
303 if test $build = $target
304 then
305 AC_MSG_CHECKING([for working HMAC])
306 AC_LANG_PUSH(C)
307 LIBS="$LIBS $LIBGCRYPT_LIBS"
308 CFLAGS="$CFLAGS $LIBGCRYPT_CFLAGS"
309 AC_RUN_IFELSE(
310   [AC_LANG_PROGRAM([#include <gcrypt.h>
311         #include <stdio.h>], [[
312         gcry_md_hd_t mac;
313
314         unsigned char data[] = { 0xbf, 0x16, 0x6e, 0x46, 0x3a, 0x6c, 0xf3, 0x93, 0xa7, 0x72,
315             0x11, 0xa1, 0xdc, 0x0b, 0x07, 0xdb, 0x1a, 0x5e, 0xd9, 0xb9, 0x81, 0xbe,
316             0xea, 0xe4, 0x31, 0x5f, 0x24, 0xff, 0xfe, 0x50, 0x8a, 0xde };
317         unsigned char key[] = { 0xfc, 0x62, 0x76, 0x35 };
318         unsigned char result[] = {0xa2, 0xb, 0x1, 0xd9, 0xc0, 0x8b, 0x5a, 0x12, 0x80,
319             0xd5, 0x50, 0x12, 0x8e, 0xd0, 0x5b, 0xb6, 0x5c, 0x87, 0x24, 0xe2, 0xd0,
320             0xd2, 0xaf, 0x63, 0xae, 0xd1, 0xd6, 0x64, 0x14, 0xe3, 0x6e, 0x61, 0x5b,
321             0xd, 0xba, 0x17, 0x7d, 0xd3, 0x10, 0xb1, 0x37, 0x41, 0x91, 0x7d, 0xeb,
322             0x1, 0x4d, 0x71, 0xe8, 0x59, 0x71, 0x42, 0x8e, 0xd6, 0xf3, 0x29, 0x3b,
323             0x90, 0xf2, 0xd1, 0xaf, 0x65, 0x1e, 0xb3};
324
325         if (!gcry_check_version (GCRYPT_VERSION))
326         {
327           fprintf (stderr, "Version mismatch %s <-> %s \n", gcry_check_version (NULL), GCRYPT_VERSION);
328           return 1;
329         }
330
331         gcry_control (GCRYCTL_DISABLE_SECMEM, 0);
332         gcry_control (GCRYCTL_INITIALIZATION_FINISHED, 0);
333
334         if (gcry_md_open(&mac, GCRY_MD_SHA512, GCRY_MD_FLAG_HMAC) != GPG_ERR_NO_ERROR)
335         {
336           fprintf (stderr, "gcry_md_open error\n");
337           return 2;
338         }
339
340         gcry_md_setkey (mac, key, sizeof (key));
341         gcry_md_write (mac, data, sizeof (data));
342
343         if (memcmp(gcry_md_read (mac, 0), result, gcry_md_get_algo_dlen (gcry_md_get_algo (mac))) != 0)
344         {
345           fprintf (stderr, "memcmp error\n");
346           return 3;
347         }
348
349         gcry_md_close (mac);
350
351         return 0;
352     ]])],
353   [AC_MSG_RESULT([yes])],
354   [
355    RESULT=$?
356    if test $RESULT = 3
357    then
358      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.])
359    fi
360    if test $RESULT = 2
361    then
362      AC_MSG_FAILURE([HMAC test failed])
363    fi
364    if test $RESULT = 1
365    then
366      AC_MSG_FAILURE([libgcrypt header version does not match library version])
367    fi
368   ],
369   [AC_MSG_RESULT([cross compiling, test skipped])])
370 AC_LANG_POP(C)
371 fi      # $build = $target
372
373 # check for bluetooth library
374 bluetooth=0
375 AC_CHECK_LIB(bluetooth, ba2str,[AC_CHECK_HEADER([bluetooth/bluetooth.h],bluetooth=1)])
376 if test "$bluetooth" = 1
377 then
378   AM_CONDITIONAL(HAVE_LIBBLUETOOTH, true)
379   AC_DEFINE([HAVE_LIBBLUETOOTH],[1],[Have bluetooth library])
380 else
381   AM_CONDITIONAL(HAVE_LIBBLUETOOTH, false)
382 fi
383 if test "$build_target" = "mingw"
384 then
385   bluetooth=1
386 fi
387
388 # check for libpulse(audio) library
389 pulse=0
390 AC_CHECK_LIB(pulse,pa_stream_peek,
391   [AC_CHECK_HEADER([pulse/simple.h],pulse=1)])
392 if test "$pulse" = 1
393 then
394   AC_DEFINE([HAVE_PULSE],[1],[Have libpulse(audio) library])
395 fi
396 if test "$build_target" = "mingw"
397 then
398   pulse=0
399 fi
400
401 # check for libopus(audio) library
402 opus=0
403 AC_CHECK_LIB(opus,opus_decode_float,
404   [AC_CHECK_HEADER([opus/opus.h],
405     [AC_CHECK_DECL([OPUS_SET_GAIN],[opus=1],[],[[#include <opus/opus.h>]]
406     )]
407   )]
408 )
409 if test "$opus" = 1
410 then
411   AC_DEFINE([HAVE_OPUS],[1],[Have libopus library])
412 fi
413
414 # libogg
415 AC_CHECK_LIB(ogg, ogg_stream_flush_fill,
416         [AC_CHECK_HEADERS([ogg/ogg.h],
417           AM_CONDITIONAL(HAVE_OGG, true)
418           ogg=1
419           AC_DEFINE(HAVE_OGG,1,[Have ogg]),
420           AM_CONDITIONAL(HAVE_OGG, false)
421           ogg=0
422           AC_DEFINE(HAVE_OGG,0,[lacking ogg]))],
423         AM_CONDITIONAL(HAVE_OGG, false)
424         ogg=0)
425
426
427
428 gst=0
429 PKG_CHECK_MODULES(
430   [GST],
431   [glib-2.0 gobject-2.0 gstreamer-1.0 gstreamer-app-1.0 gstreamer-audio-1.0],
432   [
433     gst=1
434     AC_MSG_RESULT(ok)
435   ], [
436     gst=0
437     AC_MSG_RESULT(not found)
438   ])
439
440 # Pulse Audio
441 if test "x$pulse" != "x1" -o "x$opus" != "x1" -o "x$ogg" != "x1"
442 then
443  if test "x$gst" != "x1"
444  then
445   conversation_backend=none
446   AM_CONDITIONAL(BUILD_PULSE_HELPERS, false)
447   AM_CONDITIONAL(BUILD_GST_HELPERS, false)
448  else
449   conversation_backend=gst
450   AM_CONDITIONAL(BUILD_PULSE_HELPERS, false)
451   AM_CONDITIONAL(BUILD_GST_HELPERS, true)
452  fi
453 else
454  conversation_backend=pulse
455  AM_CONDITIONAL(BUILD_PULSE_HELPERS, true)
456  AM_CONDITIONAL(BUILD_GST_HELPERS, false)
457 fi
458
459 # libgnurl
460 LIBGNURL_CHECK_CONFIG(,7.34.0,gnurl=1,gnurl=0)
461 if test "$gnurl" = 1
462 then
463         AM_CONDITIONAL(HAVE_LIBGNURL, true)
464         AC_DEFINE([HAVE_LIBGNURL],[1],[Have libgnurl])
465 else
466         AM_CONDITIONAL(HAVE_LIBGNURL, false)
467 fi
468
469 # libcurl-gnutls
470 LIBCURL_CHECK_CONFIG(,7.34.0,[curl=true],[curl=false])
471 if test "x$curl" = xtrue
472 then
473  AC_CHECK_HEADERS([curl/curl.h],
474    AC_CHECK_DECLS(CURLINFO_TLS_SESSION,[curl=true],[curl=false],[[#include <curl/curl.h>]]),
475    [curl=false])
476  # need libcurl-gnutls.so, everything else is not acceptable
477  AC_CHECK_LIB([curl-gnutls],[curl_easy_getinfo],,[curl=false])
478  # cURL must support CURLINFO_TLS_SESSION, version >= 7.34
479
480 fi
481 if test x$curl = xfalse
482 then
483         AM_CONDITIONAL(HAVE_LIBCURL, false)
484 if test "$gnurl" = 0
485 then
486         AC_MSG_WARN([GNUnet requires libcurl-gnutls  >= 7.34])
487 fi
488 else
489         AM_CONDITIONAL(HAVE_LIBCURL, true)
490         AC_DEFINE([HAVE_LIBCURL],[1],[Have CURL])
491 fi
492
493
494 # libidn
495 AC_MSG_CHECKING([if Libidn can be used])
496 AC_ARG_WITH(libidn, AC_HELP_STRING([--with-libidn=[DIR]],
497                                     [Support IDN (needs GNU Libidn)]),
498 libidn=$withval, libidn=yes)
499 if test "$libidn" != "no"; then
500   if test "$libidn" != "yes"; then
501      LDFLAGS="${LDFLAGS} -L$libidn/lib"
502      CPPFLAGS="${CPPFLAGS} -I$libidn/include"
503   fi
504 fi
505 libidn=no
506 AC_CHECK_HEADER(idna.h,
507   AC_CHECK_LIB(idn, stringprep_check_version,
508     [libidn=yes LIBS="${LIBS} -lidn"], []), [])
509 if test "$libidn" != "yes"; then
510   AC_MSG_FAILURE([GNUnet requires libidn.
511 libidn-1.13 should be sufficient, newer versions work too.])
512 fi
513 AC_MSG_RESULT($libidn)
514
515 # restore LIBS
516 LIBS=$SAVE_LIBS
517
518
519 AC_CHECK_HEADERS([glpk.h],[glpk=true],[gplk=false])
520 # GLPK must support glpk_init_env, version >= 4.43
521 AC_CHECK_LIB([glpk],[glp_init_env],,[gplk=false])
522 # GLPK must support atm MLP presolving, version >= 4.32
523 AC_CHECK_MEMBERS(glp_iocp.presolve,,[gplk=false],[[#include <glpk.h>]])
524 if test x$gplk = xfalse
525 then
526         AM_CONDITIONAL(HAVE_LIBGLPK, false)
527         AC_MSG_WARN([GNUnet requires GLPK  >= 4.32])
528 else
529         AM_CONDITIONAL(HAVE_LIBGLPK, true)
530         AC_DEFINE([HAVE_LIBGLPK],[1],[Have GLPK])
531 fi
532
533
534
535 AC_CHECK_HEADERS([nss.h],[nss=true],[nss=false])
536 if test x$nss = xfalse
537 then
538         AM_CONDITIONAL(HAVE_GLIBCNSS, false)
539         AC_MSG_WARN([No GNU libc nss header, will not build NSS plugin])
540 else
541         AM_CONDITIONAL(HAVE_GLIBCNSS, true)
542 fi
543
544
545
546 # test for kvm and kstat (for CPU stats under BSD/Solaris)
547 AC_CHECK_LIB([kvm],[kvm_open])
548 AC_CHECK_LIB([kstat],[kstat_open])
549
550
551 # should the build process be restricted to the code required
552 # for GNU Taler wallets?
553 AC_MSG_CHECKING(whether to compile GNU Taler Wallet library ONLY)
554 AC_ARG_ENABLE([taler-wallet],
555    [AS_HELP_STRING([--enable-taler-wallet], [only compile for Taler wallet])],
556    [taler_only=${enableval}],
557    [taler_only=no])
558 AC_MSG_RESULT($taler_only)
559 AM_CONDITIONAL([TALER_ONLY], [test "x$taler_only" = "xyes"])
560
561 # test for libextractor
562 extractor=0
563 AC_MSG_CHECKING(for libextractor)
564 AC_ARG_WITH(extractor,
565    [  --with-extractor=PFX    base of libextractor installation],
566    [AC_MSG_RESULT([$with_extractor])
567     case $with_extractor in
568       no)
569         ;;
570       yes)
571         AC_CHECK_HEADERS(extractor.h,
572           AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
573             extractor=1))
574         ;;
575       *)
576         LDFLAGS="-L$with_extractor/lib $LDFLAGS"
577         CPPFLAGS="-I$with_extractor/include $CPPFLAGS"
578         AC_CHECK_HEADERS(extractor.h,
579           AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
580             EXT_LIB_PATH="-L$with_extractor/lib $EXT_LIB_PATH"
581             extractor=1))
582         ;;
583     esac
584    ],
585    [AC_MSG_RESULT([--with-extractor not specified])
586     AC_CHECK_HEADERS(extractor.h,
587      AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
588       extractor=1))])
589 # restore LIBS
590 LIBS=$SAVE_LIBS
591
592 if test "$extractor" != 1
593 then
594  AM_CONDITIONAL(HAVE_LIBEXTRACTOR, false)
595  AC_DEFINE([HAVE_LIBEXTRACTOR],[0],[Lacking libextractor])
596 else
597  AM_CONDITIONAL(HAVE_LIBEXTRACTOR, true)
598  AC_DEFINE([HAVE_LIBEXTRACTOR],[1],[Have libextractor])
599 fi
600
601
602 if test "$taler_only" != yes
603 then
604
605 # Check for libltdl header (#2999)
606 ltdl=0
607 AC_MSG_CHECKING(for libltdl)
608 AC_ARG_WITH(ltdl,
609    [  --with-ltdl=PFX    base of libltdl installation],
610    [AC_MSG_RESULT([$with_ltdl])
611     case $with_ltdl in
612       no)
613         ;;
614       yes)
615         AC_CHECK_HEADERS(ltdl.h,
616           AC_CHECK_LIB([ltdl], [lt_dlopenext],
617             ltdl=1))
618         ;;
619       *)
620         LDFLAGS="-L$with_ltdl/lib $LDFLAGS"
621         CPPFLAGS="-I$with_ltdl/include $CPPFLAGS"
622         AC_CHECK_HEADERS(ltdl.h,
623           AC_CHECK_LIB([ltdl], [lt_dlopenext],
624             EXT_LIB_PATH="-L$with_ltdl/lib $EXT_LIB_PATH"
625             ltdl=1))
626         ;;
627     esac
628    ],
629    [AC_MSG_RESULT([--with-ltdl not specified])
630     AC_CHECK_HEADERS(ltdl.h,
631      AC_CHECK_LIB([ltdl], [lt_dlopenext],
632       ltdl=1))])
633 if test x$ltdl = x1
634 then
635  AC_MSG_RESULT([libltdl found])
636 else
637  AC_MSG_ERROR([GNUnet requires libltdl (from GNU libtool), try installing libltdl-dev])
638 fi
639 # restore LIBS
640 LIBS=$SAVE_LIBS
641
642 fi
643
644 # test for libunistring
645 gl_LIBUNISTRING
646 if test $HAVE_LIBUNISTRING != yes; then
647  AC_MSG_ERROR([GNUnet requires libunistring])
648 fi
649 if test $gl_libunistring_hexversion -le 2305; then
650  AC_MSG_ERROR([GNUnet requires libunistring >= 0.9.1.1])
651 fi
652 # restore LIBS
653 LIBS=$SAVE_LIBS
654
655
656
657 # Checks for standard header files.
658 AC_HEADER_DIRENT
659 AC_HEADER_STDC
660
661 # Check for headers that are ALWAYS required
662 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]))
663
664
665
666 # Checks for headers that are only required on some systems or opional (and where we do NOT abort if they are not there)
667 AC_CHECK_HEADERS([malloc.h malloc/malloc.h malloc/malloc_np.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 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 sys/ucred.h endian.h sys/endian.h execinfo.h])
668
669 # FreeBSD requires something more funky for netinet/in_systm.h and netinet/ip.h...
670 AC_CHECK_HEADERS([sys/types.h netinet/in_systm.h netinet/in.h netinet/ip.h],,,
671 [#ifdef HAVE_SYS_TYPES_H
672 #include <sys/types.h>
673 #endif
674 #ifdef HAVE_NETINET_IN_SYSTM_H
675 #include <netinet/in_systm.h>
676 #endif
677 #ifdef HAVE_NETINET_IN_H
678 #include <netinet/in.h>
679 #endif
680 ])
681
682 SAVE_LDFLAGS=$LDFLAGS
683 SAVE_CPPFLAGS=$CPPFLAGS
684
685 # test for sqlite
686 sqlite=false
687 AC_MSG_CHECKING(for SQLite)
688 AC_ARG_WITH(sqlite,
689   [  --with-sqlite=PFX       base of SQLite installation],
690   [AC_MSG_RESULT("$with_sqlite")
691    case $with_sqlite in
692    no)
693      ;;
694    yes)
695     AC_CHECK_HEADERS(sqlite3.h,
696      sqlite=true)
697      ;;
698    *)
699     LDFLAGS="-L$with_sqlite/lib $LDFLAGS"
700     CPPFLAGS="-I$with_sqlite/include $CPPFLAGS"
701     AC_CHECK_HEADERS(sqlite3.h,
702      EXT_LIB_PATH="-L$with_sqlite/lib $EXT_LIB_PATH"
703      SQLITE_LDFLAGS="-L$with_sqlite/lib"
704      SQLITE_CPPFLAGS="-I$with_sqlite/include"
705      sqlite=true)
706     LDFLAGS=$SAVE_LDFLAGS
707     CPPFLAGS=$SAVE_CPPFLAGS
708     ;;
709    esac
710   ],
711   [AC_MSG_RESULT([--with-sqlite not specified])
712     AC_CHECK_HEADERS(sqlite3.h, sqlite=true)])
713 AM_CONDITIONAL(HAVE_SQLITE, test x$sqlite = xtrue)
714 AC_SUBST(SQLITE_CPPFLAGS)
715 AC_SUBST(SQLITE_LDFLAGS)
716
717 # test for postgres
718 postgres=false
719 AX_LIB_POSTGRESQL([])
720 if test "$found_postgresql" = "yes"; then
721   postgres=true
722 fi
723 AM_CONDITIONAL(HAVE_POSTGRESQL, test x$postgres = xtrue)
724
725 # test for zlib
726 SAVE_LDFLAGS=$LDFLAGS
727 SAVE_CPPFLAGS=$CPPFLAGS
728 AC_ARG_WITH(zlib,
729             [  --with-zlib[[=DIR]]       use libz in DIR],
730             [AS_IF([test "$withval" = "no"],
731                    [AC_MSG_ERROR([GNUnet requires zlib])],
732                    [test "$withval" != "yes"],
733                    [
734                      Z_DIR=$withval
735                      CPPFLAGS="${CPPFLAGS} -I$withval/include"
736                      LDFLAGS="${LDFLAGS} -L$withval/lib"
737                    ])
738             ])
739 AC_CHECK_HEADER(zlib.h,
740                 [],
741                 [AC_MSG_ERROR([GNUnet requires zlib])])
742 AC_CHECK_LIB(z, compress2,
743              [
744               AC_DEFINE([HAVE_ZLIB], [], [Have compression library])
745               if test "x${Z_DIR}" != "x"; then
746                       Z_CFLAGS="-I${Z_DIR}/include"
747                       Z_LIBS="-L${Z_DIR}/lib -lz"
748               else
749                       Z_LIBS="-lz"
750               fi],
751               [AC_MSG_ERROR([GNUnet requires zlib])])
752 AC_SUBST(Z_CFLAGS)
753 AC_SUBST(Z_LIBS)
754
755 LDFLAGS=$SAVE_LDFLAGS
756 CPPFLAGS=$SAVE_CPPFLAGS
757
758 # mysql & windows
759 AC_CHECK_TYPES([sigset_t, off_t], [], [], [#include <sys/types.h>])
760 AC_CHECK_TYPES([size_t], [], [], [#include <stdio.h>])
761
762 if test "$build_target" = "mingw"
763 then
764   CYGWIN_MYSQL_MAGIC="#include <mysql/my_global.h>"
765 fi
766
767 # test for mysql
768 mysql=false
769 mysqlfail=false
770 SAVE_LDFLAGS=$LDFLAGS
771 SAVE_CPPFLAGS=$CPPFLAGS
772 AC_MSG_CHECKING(for mysql)
773 AC_ARG_WITH(mysql,
774   [  --with-mysql=PFX        base of MySQL installation],
775   [AC_MSG_RESULT("$with_mysql")
776    if test "$with_mysql" != "no"
777    then
778     if test "$with_mysql" != "yes"
779     then
780       LDFLAGS="-L$with_mysql/lib -L$with_mysql/lib/mysql $LDFLAGS $ZLIBS"
781       CPPFLAGS="-I$with_mysql/include $CPPFLAGS"
782     fi
783     AC_CHECK_HEADERS(mysql/mysql.h,
784      AC_CHECK_LIB(mysqlclient, mysql_init,
785       MYSQL_LDFLAGS="-L$with_mysql/lib -L$with_mysql/lib/mysql"
786       MYSQL_CPPFLAGS="-I$with_mysql/include"
787
788       mysql=true), [], [$CYGWIN_MYSQL_MAGIC])
789    fi
790   ],
791   [AC_MSG_RESULT([--with-mysql not specified])
792    if test -d "/usr/lib64/mysql"; then
793     MYSQL_LIBDIR="/usr/lib64/mysql"
794    elif test -d "/usr/lib/mysql"; then
795     MYSQL_LIBDIR="/usr/lib/mysql"
796    else
797     MYSQL_LIBDIR="/usr/lib"
798    fi
799    LDFLAGS="-L$MYSQL_LIBDIR $LDFLAGS $ZLIBS"
800    AC_CHECK_LIB(mysqlclient, mysql_init,
801     [AC_CHECK_HEADERS(mysql/mysql.h,
802       MYSQL_LDFLAGS="-L$MYSQL_LIBDIR"
803       mysql=true
804
805      , [], [$CYGWIN_MYSQL_MAGIC])])
806   ])
807
808 AC_SUBST(MYSQL_LDFLAGS)
809 AC_SUBST(MYSQL_CPPFLAGS)
810
811 # additional version check for mysql
812 AC_ARG_ENABLE(mysql-version-check, [  --disable-mysql-version-check  do not check MySQL version],, enable_mysql_version_check=yes)
813 if test "$mysql" = "true" -a "x$enable_mysql_version_check" = "xyes"
814 then
815   AC_MSG_CHECKING(mysql version)
816   AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
817     [[$CYGWIN_MYSQL_MAGIC
818       #include <mysql/mysql.h>]],
819     [[
820       #if (MYSQL_VERSION_ID < 40100)
821       #error needs at least version >= 4.1
822       #endif
823       int main () { return 0; }
824     ]])
825     ],mysql=true,mysql=false)
826   if test "$mysql" = "false"
827   then
828     mysqlfail=true
829     AC_MSG_RESULT([fail, >= 4.1 required])
830   else
831     AC_MSG_RESULT(ok)
832   fi
833 fi
834 AM_CONDITIONAL(HAVE_MYSQL, test x$mysql = xtrue)
835 AM_CONDITIONAL(HAVE_MYSQLE, test "0" = "1")
836 # restore LIBS
837 LIBS=$SAVE_LIBS
838 LDFLAGS=$SAVE_LDFLAGS
839 CPPFLAGS=$SAVE_CPPFLAGS
840
841 if test "$sqlite" = 0 -a "$mysql" = 0
842 then
843  AC_MSG_ERROR([GNUnet requires SQLite or MySQL])
844 fi
845
846 # libmicrohttpd
847 lmhd=0
848 AC_MSG_CHECKING([for libmicrohttpd])
849 AC_ARG_WITH(microhttpd,
850    [  --with-microhttpd=PFX   base of libmicrohttpd installation],
851    [AC_MSG_RESULT([$with_microhttpd])
852     case $with_microhttpd in
853       no)
854         ;;
855       yes)
856         AC_CHECK_HEADERS([microhttpd.h],
857           AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
858             AC_CHECK_LIB([microhttpd], [MHD_get_fdset2],
859               [AC_MSG_CHECKING([for libmicrohttpd >= 0.9.32])
860               AC_COMPILE_IFELSE([AC_LANG_SOURCE([
861                 #include "$native_srcdir/src/include/platform.h"
862                 #include <microhttpd.h>
863                 #if (MHD_VERSION < 0x0093200)
864                 #error needs at least version 0.9.32
865                 #endif
866                 int main () { return 0; }
867                ])],
868                [AC_MSG_RESULT(ok)
869                 lmhd=1],
870                [AC_MSG_RESULT(failed)])]),
871             [],[#include "$native_srcdir/src/include/platform.h"
872                 #include <microhttpd.h>]),,
873             [#include "$native_srcdir/src/include/platform.h"])
874         ;;
875       *)
876         LDFLAGS="-L$with_microhttpd/lib $LDFLAGS"
877         CPPFLAGS="-I$with_microhttpd/include $CPPFLAGS"
878         AC_CHECK_HEADERS(microhttpd.h,
879           AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
880             AC_CHECK_LIB([microhttpd], [MHD_get_fdset2],
881               EXT_LIB_PATH="-L$with_microhttpd/lib $EXT_LIB_PATH"
882               [AC_MSG_CHECKING([for libmicrohttpd >= 0.9.32])
883                AC_COMPILE_IFELSE([AC_LANG_SOURCE([
884                 #include "$native_srcdir/src/include/platform.h"
885                 #include <microhttpd.h>
886                 #if (MHD_VERSION < 0x0093200)
887                 #error needs at least version 0.9.32
888                 #endif
889                 int main () { return 0; }
890                ])],
891                [AC_MSG_RESULT(ok)
892                 lmhd=1],
893                [AC_MSG_RESULT(failed)])]),
894             [],[#include "$native_srcdir/src/include/platform.h"
895                 #include <microhttpd.h>]),,
896             [#include "$native_srcdir/src/include/platform.h"])
897         ;;
898     esac
899    ],
900    [AC_MSG_RESULT([--with-microhttpd not specified])
901     AC_CHECK_HEADERS([microhttpd.h],
902       AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
903         AC_CHECK_LIB([microhttpd], [MHD_get_fdset2],
904           [AC_MSG_CHECKING([for libmicrohttpd >= 0.9.32])
905               AC_COMPILE_IFELSE([AC_LANG_SOURCE([
906                 #include "$native_srcdir/src/include/platform.h"
907                 #include <microhttpd.h>
908                 #if (MHD_VERSION < 0x0093200)
909                 #error needs at least version 0.9.32
910                 #endif
911                ])],
912                [AC_MSG_RESULT(ok)
913                 lmhd=1],
914                [AC_MSG_RESULT(failed)])]),
915         [],[#include "$native_srcdir/src/include/platform.h"
916             #include <microhttpd.h>]),,
917        [#include "$native_srcdir/src/include/platform.h"])])
918 AM_CONDITIONAL(HAVE_MHD, test x$lmhd = x1)
919 AC_DEFINE_UNQUOTED([HAVE_MHD], $lmhd, [We have libmicrohttpd])
920
921
922 # restore LIBS
923 LIBS=$SAVE_LIBS
924
925 # check for python & pexpect (used for some testcases only)
926 AM_PATH_PYTHON([2.6],, [:])
927 AM_CONDITIONAL([HAVE_PYTHON], [test "$PYTHON" != :])
928
929 # check for gettext
930 AM_GNU_GETTEXT([external])
931 AM_GNU_GETTEXT_VERSION([0.19.3])
932
933 # check for iconv
934 AM_ICONV
935
936 # Checks for standard typedefs, structures, and compiler characteristics.
937 AC_TYPE_PID_T
938 AC_TYPE_SIZE_T
939 AC_TYPE_MODE_T
940 AC_HEADER_TIME
941 AC_HEADER_STAT
942 AC_HEADER_STDBOOL
943 AC_STRUCT_TM
944
945 AC_CHECK_MEMBER([struct sockaddr_in.sin_len],
946    [ AC_DEFINE(HAVE_SOCKADDR_IN_SIN_LEN, 1, [Do we have sockaddr_in.sin_len?])
947    ],
948    [],
949    [
950       #include <sys/types.h>
951       #include <sys/socket.h>
952       #include <netinet/in.h>
953    ])
954
955
956
957 # Checks for library functions.
958 AC_FUNC_CLOSEDIR_VOID
959 AC_FUNC_FORK
960 AC_PROG_GCC_TRADITIONAL
961 AC_FUNC_MEMCMP
962 AC_FUNC_SELECT_ARGTYPES
963 AC_FUNC_CHOWN
964
965 AC_TYPE_SIGNAL
966 AC_FUNC_STAT
967 AC_FUNC_STRFTIME
968 AC_FUNC_VPRINTF
969 AC_HEADER_SYS_WAIT
970 AC_TYPE_OFF_T
971 AC_TYPE_UID_T
972 AC_CHECK_FUNCS([atoll stat64 strnlen mremap getrlimit setrlimit sysconf initgroups strndup gethostbyname2 getpeerucred getpeereid setresuid $funcstocheck getifaddrs freeifaddrs getresgid mallinfo malloc_size malloc_usable_size getrusage random srandom stat statfs statvfs])
973
974 # restore LIBS
975 LIBS=$SAVE_LIBS
976
977 GN_INTLINCL=""
978 GN_LIBINTL="$LTLIBINTL"
979 AC_ARG_ENABLE(framework, [  --enable-framework      enable Mac OS X framework build helpers],enable_framework_build=$enableval)
980 AM_CONDITIONAL(WANT_FRAMEWORK, test x$enable_framework_build = xyes)
981 if test x$enable_framework_build = xyes
982 then
983   AC_DEFINE([FRAMEWORK_BUILD], 1, [Build a Mac OS X Framework])
984   GN_INTLINCL='-I$(top_srcdir)/src/intlemu'
985   GN_LIBINTL='$(top_builddir)/src/intlemu/libintlemu.la -framework CoreFoundation'
986   AC_LIB_APPENDTOVAR([CPPFLAGS], [$GN_INTLINCL])
987 fi
988
989 GN_LIB_LDFLAGS="-export-dynamic -no-undefined"
990 GN_PLUGIN_LDFLAGS="-export-dynamic -avoid-version -module -no-undefined"
991
992 AC_SUBST(GN_LIB_LDFLAGS)
993 AC_SUBST(GN_PLUGIN_LDFLAGS)
994 AC_SUBST(GN_INTLINCL)
995 AC_SUBST(GN_LIBINTL)
996
997 AC_SUBST(CPPFLAGS)
998 AC_SUBST(LIBS)
999 AC_SUBST(LDFLAGS)
1000 AC_SUBST(EXT_LIB_PATH)
1001 AC_SUBST(EXT_LIBS)
1002
1003 AC_SUBST(LIBPREFIX)
1004 AC_SUBST(DLLDIR)
1005 AC_SUBST(EXT_LIB_PATH)
1006
1007
1008 # test for sudo
1009 AC_MSG_CHECKING(for sudo)
1010 AC_ARG_WITH(sudo,
1011   [  --with-sudo=PATH       path to sudo binary (or just yes)],
1012   [AC_MSG_RESULT("$with_sudo")
1013    case $with_sudo in
1014    no)
1015      SUDO_BINARY=
1016      ;;
1017    yes)
1018      SUDO_BINARY=sudo
1019      ;;
1020    *)
1021      SUDO_BINARY=$with_sudo
1022     ;;
1023    esac
1024   ],
1025   [AC_MSG_RESULT([no])])
1026 AC_SUBST(SUDO_BINARY)
1027 AM_CONDITIONAL([HAVE_SUDO], [test "x$SUDO_BINARY" != "x" -o -w /])
1028
1029
1030 # test for nssdir
1031 AC_MSG_CHECKING(with nssdir)
1032 AC_ARG_WITH(nssdir,
1033   [  --with-nssdir=PATH       where to install NSS plugins],
1034   [AC_MSG_RESULT("$with_nssdir")
1035    case $with_nssdir in
1036    no)
1037      NSS_DIR=
1038      install_nss=0
1039      ;;
1040    yes)
1041      NSS_DIR="/lib"
1042      install_nss=1
1043      ;;
1044    *)
1045      NSS_DIR=$with_nssdir
1046      install_nss=1
1047     ;;
1048    esac
1049   ],
1050   [
1051    if test "x$SUDO_BINARY" != "x" -o -w /
1052    then
1053      NSS_DIR="/lib"
1054      install_nss=1
1055      AC_MSG_RESULT([yes, to /lib])
1056    else
1057      NSS_DIR=
1058      install_nss=0
1059      AC_MSG_RESULT([no])
1060    fi
1061   ])
1062 AC_SUBST(NSS_DIR)
1063 AM_CONDITIONAL([INSTALL_NSS], [test "x$install_nss" != "x0"])
1064
1065 # test for gnunetdns group name
1066 GNUNETDNS_GROUP=gnunetdns
1067 AC_MSG_CHECKING(for gnunetdns group name)
1068 AC_ARG_WITH(gnunetdns,
1069   [  --with-gnunetdns=GRPNAME       name for gnunetdns group],
1070   [AC_MSG_RESULT("$with_gnunetdns")
1071    case $with_gnunetdns in
1072    no)
1073      GNUNETDNS_GROUP=gnunet
1074      ;;
1075    yes)
1076      GNUNETDNS_GROUP=gnunetdns
1077      ;;
1078    *)
1079      GNUNETDNS_GROUP=$with_gnunetdns
1080     ;;
1081    esac
1082   ],
1083   [AC_MSG_RESULT([gnunetdns])])
1084 AC_SUBST(GNUNETDNS_GROUP)
1085
1086
1087
1088 # gnutls
1089 gnutls=0
1090 gnutls_dane=0
1091 AC_MSG_CHECKING(for gnutls)
1092 AC_ARG_WITH(gnutls,
1093    [  --with-gnutls=PFX   base of gnutls installation],
1094    [AC_MSG_RESULT([$with_gnutls])
1095     case $with_gnutls in
1096       no)
1097         ;;
1098       yes)
1099         AC_CHECK_HEADERS([gnutls/abstract.h],
1100             AC_CHECK_LIB([gnutls], [gnutls_priority_set],
1101              gnutls=true))
1102         AC_CHECK_HEADERS([gnutls/dane.h],
1103             AC_CHECK_LIB([gnutls-dane], [dane_verify_crt_raw],
1104               gnutls_dane=1))
1105         ;;
1106       *)
1107         LDFLAGS="-L$with_gnutls/lib $LDFLAGS"
1108         CPPFLAGS="-I$with_gnutls/include $CPPFLAGS"
1109         AC_CHECK_HEADERS([gnutls/abstract.h],
1110             AC_CHECK_LIB([gnutls], [gnutls_priority_set],
1111               EXT_LIB_PATH="-L$with_gnutls/lib $EXT_LIB_PATH"
1112               gnutls=true))
1113         AC_CHECK_HEADERS([gnutls/dane.h],
1114             AC_CHECK_LIB([gnutls-dane], [dane_verify_crt_raw],
1115               gnutls_dane=1))
1116         ;;
1117     esac
1118    ],
1119    [AC_MSG_RESULT([--with-gnutls not specified])
1120     AC_CHECK_HEADERS([gnutls/abstract.h],
1121         AC_CHECK_LIB([gnutls], [gnutls_priority_set],
1122           gnutls=true))
1123     AC_CHECK_HEADERS([gnutls/dane.h],
1124         AC_CHECK_LIB([gnutls-dane], [dane_verify_crt_raw],
1125                      gnutls_dane=1))
1126    ])
1127 AM_CONDITIONAL(HAVE_GNUTLS, test x$gnutls = xtrue)
1128 AC_DEFINE_UNQUOTED([HAVE_GNUTLS], $gnutls, [We have GnuTLS])
1129 AM_CONDITIONAL(HAVE_GNUTLS_DANE, test x$gnutls_dane = x1)
1130 AC_DEFINE_UNQUOTED([HAVE_GNUTLS_DANE], $gnutls_dane, [We have GnuTLS with DANE support])
1131
1132
1133 # Test if we are building for superMUC
1134 AC_MSG_CHECKING(if GNUnet is being configured to run on the SuperMUC)
1135 AC_ARG_ENABLE([supermuc],
1136     [AS_HELP_STRING([--enable-supermuc],
1137        [build GNUnet with support to run on the SuperMUC (default is NO)])],
1138     [if test "x$enable_supermuc" = "xno"
1139      then
1140        supermuc=0
1141      else
1142        supermuc=1
1143      fi],
1144     [supermuc=0
1145      enable_supermuc=no])
1146 AC_MSG_RESULT($enable_SUPERMUC)
1147 AM_CONDITIONAL([ENABLE_SUPERMUC], [test "x$supermuc" = "x1"])
1148 AC_DEFINE_UNQUOTED([ENABLE_SUPERMUC], [$supermuc], [Build with support for SuperMUC])
1149
1150 # Check if NSE has to send timestamp information to testbed logger for
1151 # generating histogram of messages received
1152 AC_MSG_CHECKING(if NSE has to send timestamp information to testbed logger)
1153 AC_ARG_ENABLE([nse-histogram],
1154     [AS_HELP_STRING([--enable-nse-histogram],
1155        [have NSE send timestamp information to testbed logger for generating
1156        histogram of received messages.  NOT useful for production (default is
1157        NO)])],
1158     [if test "x$enableval" = "xno"
1159      then
1160        nse_histogram=0
1161      else
1162        nse_histogram=1
1163      fi],
1164     [nse_histogram=0
1165      enable_nse_histogram=no])
1166 AC_MSG_RESULT($enable_nse_histogram)
1167 AM_CONDITIONAL([ENABLE_NSE_HISTOGRAM], [test "x$nse_histogram" = "x1"])
1168 AC_DEFINE_UNQUOTED([ENABLE_NSE_HISTOGRAM], [$nse_histogram],
1169                    [have NSE send timestamp information to testbed logger])
1170
1171 # should 'make check' run tests?
1172 AC_MSG_CHECKING(whether to run tests)
1173 AC_ARG_ENABLE([testruns],
1174    [AS_HELP_STRING([--disable-testruns], [disable running tests on make check (default is YES)])],
1175    [enable_tests_run=${enableval}],
1176    [enable_tests_run=yes])
1177 AC_MSG_RESULT($enable_test_run)
1178 AM_CONDITIONAL([ENABLE_TEST_RUN], [test "x$enable_tests_run" = "xyes"])
1179
1180
1181 # should monkey be used when running (certain) services?
1182 AC_MSG_CHECKING(whether to run with monkey)
1183 AC_ARG_ENABLE([monkey],
1184    [AS_HELP_STRING([--enable-monkey], [enable running with monkey])],
1185    [enable_monkey=${enableval}],
1186    [enable_monkey=no])
1187 AC_MSG_RESULT($enable_monkey)
1188 AM_CONDITIONAL([ENABLE_MONKEY], [test "x$enable_monkey" = "xyes"])
1189 if test "x$enable_monkey" = "xyes"
1190 then
1191   MONKEYPREFIX="pathologist -d $(eval echo ${datarootdir}/gnunet/gnunet.sqlite) -p 30 --"
1192 else
1193   MONKEYPREFIX=""
1194 fi
1195 AC_SUBST(MONKEYPREFIX)
1196
1197
1198 # should expensive tests be run?
1199 AC_MSG_CHECKING(whether to run expensive tests)
1200 AC_ARG_ENABLE([expensivetests],
1201    [AS_HELP_STRING([--enable-expensivetests], [enable running expensive testcases])],
1202    [enable_expensive=${enableval}],
1203    [enable_expensive=no])
1204 AC_MSG_RESULT($enable_expensive)
1205 AM_CONDITIONAL([HAVE_EXPENSIVE_TESTS], [test "x$enable_expensive" = "xyes"])
1206
1207 # should ports be open for Java services?
1208 AC_MSG_CHECKING(whether to enable ports for gnunet-java)
1209 AC_ARG_ENABLE([javaports],
1210    [AS_HELP_STRING([--enable-javaports], [use non-zero ports for services with Java bindings (default is NO)])],
1211    [enable_java_ports=${enableval}],
1212    [enable_java_ports=no])
1213 AC_MSG_RESULT($enable_java_ports)
1214 if test "x$enable_java_ports" = "xyes"
1215 then
1216   JAVAPORT=""
1217 else
1218   JAVAPORT="$UNIXONLY"
1219 fi
1220 AC_SUBST(JAVAPORT)
1221
1222 # should benchmarks be run?
1223 AC_MSG_CHECKING(whether to run benchmarks during make check)
1224 AC_ARG_ENABLE([benchmarks],
1225    [AS_HELP_STRING([--enable-benchmarks], [enable running benchmarks during make check])],
1226    [enable_benchmarks=${enableval}],
1227    [enable_benchmarks=no])
1228 AC_MSG_RESULT($enable_benchmarks)
1229 AM_CONDITIONAL([HAVE_BENCHMARKS], [test "x$enable_benchmarks" = "xyes"])
1230
1231 # should gnunet-testing be compiled
1232 AC_MSG_CHECKING(wether to compile gnunet-testing)
1233 AC_ARG_ENABLE([testing],
1234    [AS_HELP_STRING([--disable-testing], [do not build gnunet-testing])],
1235    [enable_testing=${enableval}],
1236    [enable_testing=yes])
1237 AC_MSG_RESULT($enable_testing)
1238 AM_CONDITIONAL([HAVE_TESTING], [test "x$enable_testing" = "xyes"])
1239
1240 # should experimental code be compiled (code that may not yet compile)?
1241 AC_MSG_CHECKING(whether to compile experimental code)
1242 AC_ARG_ENABLE([experimental],
1243    [AS_HELP_STRING([--enable-experimental], [enable compiling experimental code])],
1244    [enable_experimental=${enableval}],
1245    [enable_experimental=no])
1246 AC_MSG_RESULT($enable_experimental)
1247 AM_CONDITIONAL([HAVE_EXPERIMENTAL], [test "x$enable_experimental" = "xyes"])
1248
1249 # FTBFS right now...
1250 AC_MSG_CHECKING(whether to compile ATS test code)
1251 AC_ARG_ENABLE([wachs],
1252    [AS_HELP_STRING([--enable-wachs], [enable compiling ATS test code])],
1253    [enable_wachs=${enableval}],
1254    [enable_wachs=no])
1255 AC_MSG_RESULT($enable_wachs)
1256 AM_CONDITIONAL([HAVE_WACHS], [test "x$enable_wachs" = "xyes"])
1257
1258 # REST API
1259 AC_MSG_CHECKING(whether to compile REST API)
1260 AC_ARG_ENABLE([rest],
1261    [AS_HELP_STRING([--enable-rest], [enable REST])],
1262    [enable_rest=${enableval}],
1263    [enable_rest=no])
1264 AC_MSG_RESULT($enable_rest)
1265 AM_CONDITIONAL([HAVE_REST], [test "x$enable_rest" = "xyes"])
1266
1267 # should malicious code be compiled (should only be used for testing)?
1268 AC_MSG_CHECKING(whether to compile malicious code)
1269 AC_ARG_ENABLE([malicious],
1270    [AS_HELP_STRING([--enable-malicious], [enable compiling malicious code])],
1271    [if test "x$enableval" = "xno"
1272      then
1273        malicious=0
1274      else
1275        malicious=1
1276      fi],
1277    [malicious=0
1278     enable_malicious=no])
1279 AC_MSG_RESULT($enable_malicious)
1280 AM_CONDITIONAL([ENABLE_MALICIOUS], [test 1=$malicious])
1281 AC_DEFINE_UNQUOTED([ENABLE_MALICIOUS], [$malicious],
1282                    [enable compilation of malicious code])
1283
1284 # should services be started by default when a peer starts?  Some services may
1285 # choose to never start by default and it is upto the service/module developer to
1286 # decide it by having "AUTOSTART = NO" instead of "AUTOSTART = @AUTOSTART@" in
1287 # the service/module's conf.in file.
1288 AUTOSTART="YES"
1289 AC_MSG_CHECKING(whether to auto-start peer's services by default)
1290 AC_ARG_ENABLE([autostart],
1291    [AS_HELP_STRING([--disable-autostart], [do not start peer's services by default])],
1292    [enable_autostart=${enableval}
1293     if test "x$enable_autostart" == "xno"
1294     then
1295         AUTOSTART="NO"
1296     fi
1297    ],
1298    [enable_autostart=yes])
1299 AC_MSG_RESULT($enable_autostart)
1300 #AM_CONDITIONAL([HAVE_AUTOSTART], [test "x$enable_autostart" = "xyes"])
1301 AC_SUBST(AUTOSTART)
1302
1303 # should memory statistics be kept (very expensive CPU-wise!)
1304 AC_MSG_CHECKING(whether to create expensive statistics on memory use)
1305 AC_ARG_ENABLE([heapstats],
1306    [AS_HELP_STRING([--enable-heapstats], [enable expensive heap statistics])],
1307    [enable_heapstats=1],
1308    [enable_heapstats=0])
1309 AC_MSG_RESULT($enable_heapstats)
1310 AC_DEFINE_UNQUOTED([ENABLE_HEAP_STATISTICS],$enable_heapstats,[enable expensive heap statistics])
1311
1312 # should code be enabled that works around missing OS functionality on Windows?
1313 # used for test cases
1314 if test $build_target = "mingw"
1315 then
1316         workarounds=1
1317
1318 AC_LINK_IFELSE(
1319  [AC_LANG_PROGRAM(
1320   [#include <ws2tcpip.h>
1321   ],[
1322   int s = socket (0, 0, 0);])
1323  ],[
1324   AC_DEFINE_UNQUOTED([HAVE_SOCKET],1,[Define this if socket() is available])
1325  ],[
1326   AC_DEFINE_UNQUOTED([HAVE_SOCKET],0,[Define this if socket() is available])
1327  ])
1328
1329 AC_LINK_IFELSE(
1330  [AC_LANG_PROGRAM(
1331   [#include <ws2tcpip.h>
1332   ],[
1333   int s = select (0, NULL, NULL, NULL, NULL);])
1334  ],[
1335   AC_DEFINE_UNQUOTED([HAVE_SELECT],1,[Define this if select() is available])
1336  ],[
1337   AC_DEFINE_UNQUOTED([HAVE_SELECT],0,[Define this if select() is available])
1338  ])
1339
1340 AC_LINK_IFELSE(
1341  [AC_LANG_PROGRAM(
1342   [#include <ws2tcpip.h>
1343   ],[
1344   struct in_addr i;
1345   char *s = inet_ntoa (i);])
1346  ],[
1347   AC_DEFINE_UNQUOTED([HAVE_INET_NTOA],1,[Define this if inet_ntoa() is available])
1348  ],[
1349   AC_DEFINE_UNQUOTED([HAVE_INET_NTOA],0,[Define this if inet_ntoa() is available])
1350  ])
1351
1352 AC_LINK_IFELSE(
1353  [AC_LANG_PROGRAM(
1354   [#include <ws2tcpip.h>
1355   ],[
1356   int s = getnameinfo (NULL, 0, NULL, 0, NULL, 0, 0);])
1357  ],[
1358   AC_DEFINE_UNQUOTED([HAVE_GETNAMEINFO],1,[Define this if getnameinfo() is available])
1359  ],[
1360   AC_DEFINE_UNQUOTED([HAVE_GETNAMEINFO],0,[Define this if getnameinfo() is available])
1361  ])
1362
1363 AC_LINK_IFELSE(
1364  [AC_LANG_PROGRAM(
1365   [#include <ws2tcpip.h>
1366   ],[
1367   int s = gethostname (NULL, 0);])
1368  ],[
1369   AC_DEFINE_UNQUOTED([HAVE_GETHOSTNAME],1,[Define this if gethostname() is available])
1370  ],[
1371   AC_DEFINE_UNQUOTED([HAVE_GETHOSTNAME],0,[Define this if gethostname() is available])
1372  ])
1373
1374 AC_LINK_IFELSE(
1375  [AC_LANG_PROGRAM(
1376   [#include <ws2tcpip.h>
1377   ],[
1378   void *s = gethostbyname (NULL);])
1379  ],[
1380   AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYNAME],1,[Define this if gethostbyname() is available])
1381  ],[
1382   AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYNAME],0,[Define this if gethostbyname() is available])
1383  ])
1384
1385 AC_LINK_IFELSE(
1386  [AC_LANG_PROGRAM(
1387   [#include <ws2tcpip.h>
1388   ],[
1389   void *s = gethostbyaddr (NULL, 0, 0);])
1390  ],[
1391   AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYADDR],1,[Define this if gethostbyaddr() is available])
1392  ],[
1393   AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYADDR],0,[Define this if gethostbyaddr() is available])
1394  ])
1395
1396 AC_LINK_IFELSE(
1397  [AC_LANG_PROGRAM(
1398   [#include <ws2tcpip.h>
1399   ],[
1400   int s = getaddrinfo (NULL, NULL, NULL, NULL);])
1401  ],[
1402   AC_DEFINE_UNQUOTED([HAVE_GETADDRINFO],1,[Define this if getaddrinfo() is available])
1403  ],[
1404   AC_DEFINE_UNQUOTED([HAVE_GETADDRINFO],1,[Define this if getaddrinfo() is available])
1405  ])
1406
1407 else
1408   AC_MSG_CHECKING(whether to enable windows workarounds)
1409   AC_ARG_ENABLE([windows_workarounds],
1410      [AS_HELP_STRING([--enable-windows_workarounds], [enable workarounds used on Windows (only useful for test cases)])],
1411      [enable_workarounds=${enableval}],
1412      [enable_workarounds=no])
1413   AC_MSG_RESULT($enable_workarounds)
1414   if test x$enable_windows_workarounds = "xyes"
1415   then
1416      workarounds=1
1417   else
1418      workarounds=0
1419    fi
1420 fi
1421 AC_DEFINE_UNQUOTED([ENABLE_WINDOWS_WORKAROUNDS], $workarounds, [enable workarounds used on Windows (only useful for test cases)])
1422
1423 # gcov compilation
1424 AC_MSG_CHECKING(whether to compile with support for code coverage analysis)
1425 AC_ARG_ENABLE([coverage],
1426               AS_HELP_STRING([--enable-coverage],
1427                              [compile the library with code coverage support]),
1428               [use_gcov=${enableval}],
1429               [use_gcov=no])
1430 AC_MSG_RESULT($use_gcov)
1431 AM_CONDITIONAL([USE_COVERAGE], [test "x$use_gcov" = "xyes"])
1432
1433
1434 # version info
1435 AC_PATH_PROG(svnversioncommand, svnversion)
1436 AC_PATH_PROG(gitcommand, git)
1437 AC_MSG_CHECKING(for source being under a VCS)
1438 svn_version=
1439 gitsvn_version=
1440 AS_IF([test ! "X$svnversioncommand" = "X"],
1441 [
1442   svn_version=$(cd $srcdir ; $svnversioncommand -n 2>/dev/null)
1443 ])
1444 AS_IF([test ! "X$gitcommand" = "X"],
1445 [
1446   gitsvn_version=$(cd $srcdir ; git log -1 2>/dev/null | grep "git-svn-id" | sed -e 's/.*@\([[0-9]]\+\) .*/\1/')
1447 ])
1448 AS_IF([test "X$svn_version" = "X" -o "X$svn_version" = "Xexported" -o "X$svn_version" = "XUnversioned directory"],
1449 [
1450   AS_IF([test "X$gitsvn_version" = "X"],
1451   [
1452     vcs_name="no"
1453     vcs_version="\"release\""
1454   ],
1455   [
1456     vcs_name="yes, git-svn"
1457     vcs_version="\"svn-r$gitsvn_version\""
1458   ])
1459 ],
1460 [
1461   vcs_name="yes, svn"
1462   vcs_version="\"svn-r$svn_version\""
1463 ])
1464 AC_MSG_RESULT($vcs_name)
1465
1466 AC_MSG_CHECKING(VCS version)
1467 AC_MSG_RESULT($vcs_version)
1468 AC_DEFINE_UNQUOTED(VCS_VERSION, [$vcs_version], [VCS revision/hash or tarball version])
1469
1470 AC_CONFIG_FILES([
1471 Makefile
1472 contrib/Makefile
1473 doc/Makefile
1474 doc/man/Makefile
1475 doc/doxygen/Makefile
1476 m4/Makefile
1477 po/Makefile.in
1478 src/Makefile
1479 src/arm/Makefile
1480 src/arm/arm.conf
1481 src/ats/Makefile
1482 src/ats/ats.conf
1483 src/ats-tool/Makefile
1484 src/ats-tests/Makefile
1485 src/block/Makefile
1486 src/cadet/Makefile
1487 src/cadet/cadet.conf
1488 src/core/Makefile
1489 src/core/core.conf
1490 src/consensus/Makefile
1491 src/consensus/consensus.conf
1492 src/conversation/Makefile
1493 src/conversation/conversation.conf
1494 src/datacache/Makefile
1495 src/datastore/Makefile
1496 src/datastore/datastore.conf
1497 src/dht/Makefile
1498 src/dht/dht.conf
1499 src/dns/Makefile
1500 src/dns/dns.conf
1501 src/dv/Makefile
1502 src/dv/dv.conf
1503 src/env/Makefile
1504 src/exit/Makefile
1505 src/fragmentation/Makefile
1506 src/fs/Makefile
1507 src/fs/fs.conf
1508 src/gns/Makefile
1509 src/gns/gns.conf
1510 src/gns/nss/Makefile
1511 src/gnsrecord/Makefile
1512 src/hello/Makefile
1513 src/identity/Makefile
1514 src/identity/identity.conf
1515 src/include/Makefile
1516 src/integration-tests/Makefile
1517 src/hostlist/Makefile
1518 src/multicast/Makefile
1519 src/multicast/multicast.conf
1520 src/mysql/Makefile
1521 src/namecache/Makefile
1522 src/namecache/namecache.conf
1523 src/namestore/Makefile
1524 src/namestore/namestore.conf
1525 src/nat/Makefile
1526 src/nse/Makefile
1527 src/nse/nse.conf
1528 src/peerinfo/Makefile
1529 src/peerinfo/peerinfo.conf
1530 src/peerinfo-tool/Makefile
1531 src/peerstore/Makefile
1532 src/peerstore/peerstore.conf
1533 src/postgres/Makefile
1534 src/psyc/Makefile
1535 src/psyc/psyc.conf
1536 src/psycstore/Makefile
1537 src/psycstore/psycstore.conf
1538 src/pt/Makefile
1539 src/regex/Makefile
1540 src/regex/regex.conf
1541 src/revocation/Makefile
1542 src/revocation/revocation.conf
1543 src/rps/Makefile
1544 src/rps/rps.conf
1545 src/secretsharing/Makefile
1546 src/secretsharing/secretsharing.conf
1547 src/sensor/Makefile
1548 src/sensor/sensor.conf
1549 src/sensordashboard/Makefile
1550 src/sensordashboard/sensordashboard.conf
1551 src/scalarproduct/Makefile
1552 src/scalarproduct/scalarproduct.conf
1553 src/set/Makefile
1554 src/set/set.conf
1555 src/social/Makefile
1556 src/social/social.conf
1557 src/statistics/Makefile
1558 src/statistics/statistics.conf
1559 src/template/Makefile
1560 src/testbed/Makefile
1561 src/testbed/testbed.conf
1562 src/testing/Makefile
1563 src/topology/Makefile
1564 src/transport/Makefile
1565 src/transport/transport.conf
1566 src/tun/Makefile
1567 src/util/Makefile
1568 src/util/resolver.conf
1569 src/vpn/Makefile
1570 src/vpn/vpn.conf
1571 src/rest/Makefile
1572 pkgconfig/Makefile
1573 pkgconfig/gnunetarm.pc
1574 pkgconfig/gnunetats.pc
1575 pkgconfig/gnunetblock.pc
1576 pkgconfig/gnunetcadet.pc
1577 pkgconfig/gnunetconsensus.pc
1578 pkgconfig/gnunetconversation.pc
1579 pkgconfig/gnunetcore.pc
1580 pkgconfig/gnunetdatacache.pc
1581 pkgconfig/gnunetdatastore.pc
1582 pkgconfig/gnunetdht.pc
1583 pkgconfig/gnunetdns.pc
1584 pkgconfig/gnunetdnsparser.pc
1585 pkgconfig/gnunetdnsstub.pc
1586 pkgconfig/gnunetdv.pc
1587 pkgconfig/gnunetenv.pc
1588 pkgconfig/gnunetfragmentation.pc
1589 pkgconfig/gnunetfs.pc
1590 pkgconfig/gnunetgns.pc
1591 pkgconfig/gnunethello.pc
1592 pkgconfig/gnunetidentity.pc
1593 pkgconfig/gnunetmicrophone.pc
1594 pkgconfig/gnunetmulticast.pc
1595 pkgconfig/gnunetmysql.pc
1596 pkgconfig/gnunetnamestore.pc
1597 pkgconfig/gnunetnat.pc
1598 pkgconfig/gnunetnse.pc
1599 pkgconfig/gnunetpeerinfo.pc
1600 pkgconfig/gnunetpostgres.pc
1601 pkgconfig/gnunetpsyc.pc
1602 pkgconfig/gnunetpsycstore.pc
1603 pkgconfig/gnunetregex.pc
1604 pkgconfig/gnunetrevocation.pc
1605 pkgconfig/gnunetrps.pc
1606 pkgconfig/gnunetscalarproduct.pc
1607 pkgconfig/gnunetset.pc
1608 pkgconfig/gnunetsocial.pc
1609 pkgconfig/gnunetspeaker.pc
1610 pkgconfig/gnunetstatistics.pc
1611 pkgconfig/gnunettestbed.pc
1612 pkgconfig/gnunettesting.pc
1613 pkgconfig/gnunettransport.pc
1614 pkgconfig/gnunettun.pc
1615 pkgconfig/gnunetutil.pc
1616 pkgconfig/gnunetvpn.pc
1617 ])
1618 AC_OUTPUT
1619
1620 # Finally: summary!
1621
1622 # warn user if mysql found but not used due to version
1623 if test "$mysqlfail" = "true"
1624 then
1625   AC_MSG_NOTICE([NOTICE: MySQL found, but too old. MySQL support will not be compiled.])
1626 fi
1627
1628 # sqlite
1629 if test "x$sqlite" = "x0"
1630 then
1631   AC_MSG_ERROR([ERROR: sqlite3 not found, but sqlite3 is required.])
1632 fi
1633
1634 # libgnurl
1635 if test "x$gnurl" = "x0"
1636 then
1637   if test "x$curl" = "x0"
1638   then
1639     AC_MSG_NOTICE([NOTICE: libgnurl not found.  http client support will not be compiled.])
1640     AC_MSG_WARN([ERROR: libgnurl not found.  hostlist daemon will not be compiled, and you probably WANT the hostlist daemon])
1641   else
1642     AC_MSG_NOTICE([WARNING: libgnurl not found, trying to use libcurl-gnutls instead.])
1643   fi
1644 fi
1645
1646
1647 # bluetooth
1648 if test "x$bluetooth" = "x0"
1649 then
1650   AC_MSG_NOTICE([NOTICE: bluetooth library not found.  bluetooth support will not be compiled.])
1651 fi
1652
1653 #gnutls
1654 if test x$gnutls != xtrue
1655 then
1656   AC_MSG_NOTICE([NOTICE: GnuTLS not found, gnunet-gns-proxy will not be built])
1657 else
1658 if test "x$gnutls_dane" != "x1"
1659 then
1660   AC_MSG_NOTICE([NOTICE: GnuTLS has no DANE support, DANE validation will not be possible])
1661 fi
1662 fi
1663
1664 # java ports
1665 if test "x$enable_java_ports" = "xyes"
1666 then
1667   AC_MSG_NOTICE([NOTICE: opening ports for gnunet-java bindings by default.])
1668 fi
1669
1670 # MHD
1671 if test "x$lmhd" != "x1"
1672 then
1673  AC_MSG_NOTICE([NOTICE: libmicrohttpd not found, http transport will not be installed.])
1674 fi
1675
1676 # conversation
1677 if test "x$conversation_backend" = "xnone"
1678 then
1679   if test "x$pulse" != "x1"
1680   then
1681     AC_MSG_NOTICE([NOTICE: libpulse(audio) not found, conversation will not be built.])
1682   fi
1683   if test "x$opus" != "x1"
1684   then
1685    AC_MSG_NOTICE([NOTICE: libopus not found, conversation will not be built.])
1686   fi
1687   if test "x$gst" != "x1"
1688   then
1689    AC_MSG_NOTICE([NOTICE: GStreamer not found, conversation will not be built.])
1690   fi
1691 fi
1692
1693 if test "$extractor" != 1
1694 then
1695  AC_MSG_WARN([NOTICE: libextractor not found, but various file-sharing functions require it])
1696 fi
1697
1698 AC_MSG_NOTICE([NOTICE: Database support is set to MySQL: $mysql, SQLite: $sqlite, Postgres: $postgres])
1699
1700 if test "$enable_framework_build" = "yes"
1701 then
1702   AC_MSG_NOTICE([NOTICE: Mac OS X framework build enabled.])
1703 fi
1704
1705 if test "x$SUDO_BINARY" = "x" -a ! -w /
1706 then
1707   AC_MSG_NOTICE([NOTICE: --with-sudo not specified and not running as 'root', will not install GNS NSS library])
1708 fi
1709
1710
1711 AC_MSG_NOTICE([********************************************
1712 Please make sure NOW that you have created a user and group 'gnunet'
1713 and additionally a group 'gnunetdns':
1714         addgroup gnunetdns
1715         adduser gnunet
1716
1717 Make sure that '/var/lib/gnunet' is owned (and writable) by user
1718 'gnunet'.  Then, you can compile GNUnet with
1719         make
1720
1721 After that, run (if necessary as 'root')
1722         make install
1723 to install everything.
1724
1725 Each GNUnet user should be added to the 'gnunet' group (may
1726 require fresh login to come into effect):
1727         adduser USERNAME gnunet
1728 (run the above command as root once for each of your users, replacing
1729 "USERNAME" with the respective login names).  If you have a global IP
1730 address, no further configuration is required.
1731
1732 Optionally, download and compile gnunet-gtk to get a GUI for
1733 file-sharing and configuration.  This is particularly recommended
1734 if your network setup is non-trivial, as gnunet-setup can be
1735 used to test in the GUI if your network configuration is working.
1736 gnunet-setup should be run as the "gnunet" user under X.  As it
1737 does very little with the network, running it as "root" is likely
1738 also harmless.  You can also run it as a normal user, but then
1739 you have to copy ~/.gnunet/gnunet.conf" over to the "gnunet" user's
1740 home directory in the end.
1741
1742 Once you have configured your peer, run (as the 'gnunet' user)
1743         gnunet-arm -s
1744 to start the peer.  You can then run the various GNUnet-tools as
1745 your "normal" user (who should only be in the group 'gnunet').
1746 ********************************************])