disting v0.11.3
[oweals/gnunet.git] / configure.ac
1 # This file is part of GNUnet.
2 # (C) 2001--2019 GNUnet e.V.
3 #
4 # GNUnet is free software: you can redistribute it and/or modify it
5 # under the terms of the GNU Affero General Public License as published
6 # by the Free Software Foundation, either version 3 of the License,
7 # or (at your 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 # Affero General Public License for more details.
13 #
14 # You should have received a copy of the GNU Affero General Public License
15 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
16 #
17 # SPDX-License-Identifier: AGPL3.0-or-later
18 #
19 # Process this file with autoconf to produce a configure script.
20 #
21 #
22 AC_PREREQ(2.61)
23 # Checks for programs.
24 AC_INIT([gnunet], [0.11.3], [bug-gnunet@gnu.org])
25 AC_CONFIG_AUX_DIR([build-aux])
26
27 # check for legacy option that is no longer supported (#5627) and fail hard
28 AC_ARG_WITH(nssdir,
29    [  --with-nssdir=DIR    legacy switch, no longer supported, do not use],
30    [AC_MSG_RESULT([$with_nssdir])
31     case $with_nssdir in
32       no)
33         ;;
34       *)
35         AC_MSG_ERROR([--with-nssdir is no longer supported])
36         ;;
37      esac
38    ])
39
40 AC_CANONICAL_TARGET
41 AC_CANONICAL_HOST
42 AC_CANONICAL_SYSTEM
43 AM_INIT_AUTOMAKE
44 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
45 AC_CONFIG_HEADERS([gnunet_config.h])
46 AH_TOP([#define _GNU_SOURCE  1])
47 AC_CONFIG_MACRO_DIR([m4])
48 AC_PROG_AWK
49 AC_PROG_CC_C99
50 AC_PROG_CPP
51 AC_PROG_CXX
52 AC_PROG_OBJC
53 AC_PROG_INSTALL
54 AC_PROG_LN_S
55 AC_PROG_MAKE_SET
56 AM_PROG_CC_C_O
57 LT_INIT([disable-static dlopen win32-dll])
58 AC_SUBST(MKDIR_P)
59
60 # large file support
61 AC_SYS_LARGEFILE
62 AC_FUNC_FSEEKO
63
64
65 CFLAGS="-Wall $CFLAGS"
66 # use '-fno-strict-aliasing', but only if the compiler can take it
67 if gcc -fno-strict-aliasing -S -o /dev/null -xc /dev/null >/dev/null 2>&1;
68 then
69  CFLAGS="-fno-strict-aliasing $CFLAGS"
70 fi
71
72 # Use Linux interface name unless the OS has a different preference
73 DEFAULT_INTERFACE="\"eth0\""
74
75 funcstocheck="getnameinfo gethostname gethostbyname gethostbyaddr getaddrinfo getaddrinfo_a"
76
77 # Srcdir in a form that native compiler understands (i.e. DOS path on W32)
78 native_srcdir=$srcdir
79
80 OLD_LDFLAGS="$LDFLAGS"
81 LDFLAGS="$LDFLAGS -Wl,--unresolved-symbols=report-all"
82
83 # Check system type
84 case "$host_os" in
85 *darwin* | *rhapsody* | *macosx*)
86      AC_DEFINE_UNQUOTED(DARWIN,1,[This is an Apple Darwin system])
87      CPPFLAGS="-D_APPLE_C_SOURCE $CPPFLAGS"
88      CFLAGS="-fno-common $CFLAGS"
89      LDFLAGS="$OLD_LDFLAGS"
90      AC_MSG_WARN([WARNING: The VPN application cannot be compiled on your OS])
91      AC_CHECK_LIB(intl, gettext)
92      build_target="darwin"
93      DEFAULT_INTERFACE="\"en0\""
94      LIBPREFIX=
95      DLLDIR=lib
96      UNIXONLY="#"
97      ;;
98 linux*)
99      AC_DEFINE_UNQUOTED(LINUX,1,[This is a Linux kernel])
100      build_target="linux"
101      LIBPREFIX=
102      DLLDIR=lib
103      UNIXONLY="#"
104      AC_PATH_XTRA
105      ;;
106 *freebsd*)
107      AC_DEFINE_UNQUOTED(SOMEBSD,1,[This is a BSD system])
108      AC_DEFINE_UNQUOTED(FREEBSD,1,[This is a FreeBSD system])
109      CFLAGS="-D_THREAD_SAFE $CFLAGS"
110      build_target="freebsd"
111      LIBPREFIX=
112      DLLDIR=lib
113      UNIXONLY="#"
114      ;;
115 *openbsd*)
116      AC_DEFINE_UNQUOTED(SOMEBSD,1,[This is a BSD system])
117      AC_DEFINE_UNQUOTED(OPENBSD,1,[This is an OpenBSD system])
118      LIBS=`echo $LIBS | sed -e "s/-ldl//"`
119      build_target="openbsd"
120      LIBPREFIX=
121      DLLDIR=lib
122      UNIXONLY="#"
123      ;;
124 *netbsd*)
125      AC_DEFINE_UNQUOTED(SOMEBSD,1,[This is a BSD system])
126      AC_DEFINE_UNQUOTED(NETBSD,1,[This is a NetBSD system])
127      LIBPREFIX=
128      DLLDIR=lib
129      UNIXONLY="#"
130      ;;
131 *solaris*)
132      AC_DEFINE_UNQUOTED(SOLARIS,1,[This is a Solaris system])
133      AC_DEFINE_UNQUOTED(_REENTRANT,1,[Need with solaris or errno doesnt work])
134      AC_CHECK_LIB(resolv, res_init)
135      AC_CHECK_LIB(rt, nanosleep)
136      build_target="solaris"
137      LIBPREFIX=
138      DLLDIR=lib
139      UNIXONLY="#"
140      ;;
141 *arm-linux*)
142      AC_DEFINE_UNQUOTED(LINUX,1,[This is a Linux kernel])
143      CFLAGS="-D_REENTRANT -fPIC -pipe $CFLAGS"
144      build_target="linux"
145      LIBPREFIX=
146      DLLDIR=lib
147      UNIXONLY="#"
148      ;;
149 *cygwin*)
150      AC_DEFINE_UNQUOTED(CYGWIN,1,[This is a Cygwin system])
151      AC_DEFINE_UNQUOTED(WINDOWS,1,[This is a Windows system])
152      AC_CHECK_LIB(intl, gettext)
153      CFLAGS="-mms-bitfields $CFLAGS"
154      build_target="cygwin"
155      LIBPREFIX=lib
156      DLLDIR=bin
157      AC_PROG_CXX
158      UNIXONLY=""
159      ;;
160 *mingw*)
161      AC_DEFINE_UNQUOTED(MINGW,1,[This is a MinGW system])
162      AC_DEFINE_UNQUOTED(WINDOWS,1,[This is a Windows system])
163      AC_DEFINE_UNQUOTED(_WIN32,1,[This is a Windows system])
164      AC_CHECK_LIB(intl, gettext)
165      LDFLAGS="$LDFLAGS -Wl,--export-all-symbols"
166      LIBS="$LIBS -lws2_32 -lplibc -lgnurx -lole32"
167      CFLAGS="-mms-bitfields $CFLAGS"
168      CPPFLAGS="-D_WIN32_WINNT=0x0501 -DHAVE_STAT64=1 -D__USE_MINGW_ANSI_STDIO=1 $CPPFLAGS"
169      build_target="mingw"
170      AC_PROG_CXX
171      LIBPREFIX=lib
172      DLLDIR=bin
173      UNIXONLY=""
174      funcstocheck=""
175      native_srcdir=$(cd $srcdir; pwd -W)
176      ;;
177 gnu*)
178      AC_DEFINE_UNQUOTED(GNU,1,[This is a GNU system])
179      build_target="gnu"
180      UNIXONLY="#"
181      ;;
182 *)
183      AC_MSG_RESULT(Unrecognised OS $host_os)
184      AC_DEFINE_UNQUOTED(OTHEROS,1,[Some strange OS])
185      UNIXONLY=""
186 ;;
187 esac
188 AC_DEFINE_UNQUOTED([GNUNET_DEFAULT_INTERFACE], $DEFAULT_INTERFACE, [This should be the default choice for the name of the first network interface])
189 AC_SUBST(DEFAULT_INTERFACE)
190
191 # Disable TCP-based IPC on systems that support UNIX domain
192 # sockets in default configuratin:
193 AC_SUBST(UNIXONLY)
194
195
196 AC_MSG_CHECKING([for build target])
197 AM_CONDITIONAL(DARWIN,  test "$build_target" = "darwin")
198 AM_CONDITIONAL(CYGWIN,  test "$build_target" = "cygwin")
199 AM_CONDITIONAL(MINGW,   test "$build_target" = "mingw")
200 AM_CONDITIONAL(SOLARIS, test "$build_target" = "solaris")
201 AM_CONDITIONAL(XFREEBSD, test "$build_target" = "freebsd")
202 AM_CONDITIONAL(OPENBSD, test "$build_target" = "openbsd")
203 AM_CONDITIONAL(LINUX, test "$build_target" = "linux")
204 AM_CONDITIONAL(GNU, test "$build_target" = "gnu")
205
206 AC_MSG_RESULT([$build_target])
207 AC_SUBST(build_target)
208 AM_CONDITIONAL([am__fastdepOBJC], false)
209 AC_UNALIGNED_64_ACCESS
210
211 # some other checks for standard libs
212 AC_SEARCH_LIBS([gethostbyname], [nsl ws2_32])
213 AC_SEARCH_LIBS([memrchr], [],
214                AC_DEFINE(HAVE_MEMRCHR,1,[memrchr supported]), [])
215 AC_CHECK_LIB(socket, socket)
216 AC_CHECK_LIB(m, log)
217 AC_CHECK_LIB(c, getloadavg, AC_DEFINE(HAVE_GETLOADAVG,1,[getloadavg supported]))
218
219 AC_CHECK_PROG(VAR_GETOPT_BINARY, getopt, true, false)
220 AM_CONDITIONAL(HAVE_GETOPT_BINARY, $VAR_GETOPT_BINARY)
221
222 AC_CHECK_PROG(VAR_SSH_BINARY, ssh, true, false)
223 AM_CONDITIONAL(HAVE_SSH_BINARY, $VAR_SSH_BINARY)
224 AM_CONDITIONAL(HAVE_SSH_KEY,  ssh -D 12345 -o "BatchMode yes" -o "UserKnownHostsFile /tmp/gnunet_test_cosks_ssh_garbage" -o "StrictHostKeyChecking no" 127.0.0.1 echo -n)
225 rm -f /tmp/gnunet_test_cosks_ssh_garbage
226
227 # autotools' m4 for python has no maximum version!
228 # python3.4 - python3.7 for tests
229 m4_define_default([_AM_PYTHON_INTERPRETER_LIST],[python3 python3.4 python3.5 python3.6 python3.7 python])
230 AM_PATH_PYTHON([3.4],, [:])
231 AC_SUBST([PYTHON])
232 AM_CONDITIONAL([HAVE_PYTHON], [test "$PYTHON" != :])
233
234 # perl
235 AC_PATH_PROG( PERL, perl, ,
236               $PATH:/usr/local/bin/perl:/usr/bin/:/usr/local/bin )
237 AC_SUBST([PERL])
238
239 # iptables is a soft requirement to run tests
240 AC_PATH_TARGET_TOOL(VAR_IPTABLES_BINARY, iptables, false)
241
242 if test x"$VAR_IPTABLES_BINARY" = x"false"
243 then
244   if test -x "/sbin/iptables"
245   then
246     VAR_IPTABLES_BINARY="/sbin/iptables"
247   elif test -x "/usr/sbin/iptables"
248   then
249     VAR_IPTABLES_BINARY="/usr/sbin/iptables"
250   fi
251 fi
252
253 if test x"$VAR_IPTABLES_BINARY" != x"false"
254 then
255 AC_DEFINE_UNQUOTED([IPTABLES], "$VAR_IPTABLES_BINARY", [Path to iptables])
256 else
257 AC_MSG_WARN([warning: 'iptables' not found.])
258 fi
259
260 # ip6tables is a soft requirement for some features
261 AC_PATH_TARGET_TOOL(VAR_IP6TABLES_BINARY, ip6tables, false)
262
263 if test x"$VAR_IP6TABLES_BINARY" = x"false"
264 then
265   if test -x "/sbin/ip6tables"
266   then
267     VAR_IP6TABLES_BINARY="/sbin/ip6tables"
268   elif test -x "/usr/sbin/ip6tables"
269   then
270     VAR_IP6TABLES_BINARY="/usr/sbin/ip6tables"
271   fi
272 fi
273
274 if test x"$VAR_IP6TABLES_BINARY" != x"false"
275 then
276 AC_DEFINE_UNQUOTED([IP6TABLES], "$VAR_IP6TABLES_BINARY", [Path to ip6tables])
277 else
278 AC_MSG_WARN([warning: 'ip6tables' not found.])
279 fi
280
281 # ip is a soft requirement for some features
282 AC_PATH_TARGET_TOOL(VAR_IP_BINARY, ip, false)
283
284 if test x"$VAR_IP_BINARY" = x"false"
285 then
286   if test -x "/sbin/ip"
287   then
288     VAR_IP_BINARY="/sbin/ip"
289   elif test -x "/usr/sbin/ip"
290   then
291     VAR_IP_BINARY="/usr/sbin/ip"
292   fi
293 fi
294
295 if test x"$VAR_IP_BINARY" != x"false"
296 then
297 AC_DEFINE_UNQUOTED([PATH_TO_IP], "$VAR_IP_BINARY", [Path to ip])
298 else
299 AC_MSG_WARN([warning: 'ip' not found.])
300 fi
301
302 # locate 'ifconfig'
303 AC_PATH_TARGET_TOOL(VAR_IFCONFIG_BINARY, ifconfig, false)
304
305 AC_CHECK_PROG(VAR_IFCONFIG_BINARY, ifconfig, true, false)
306 if test x"$VAR_IFCONFIG_BINARY" = x"false"
307 then
308   if test -x "/sbin/ifconfig"
309   then
310     VAR_IFCONFIG_BINARY="/sbin/ifconfig"
311   elif test -x "/usr/sbin/ifconfig"
312   then
313     VAR_IFCONFIG_BINARY="/usr/sbin/ifconfig"
314   fi
315 fi
316 if test x"$VAR_IFCONFIG_BINARY" != x"false"
317 then
318 AC_DEFINE_UNQUOTED([IFCONFIG], "$VAR_IFCONFIG_BINARY", [Path to ifconfig])
319 else
320 AC_MSG_WARN(['ifconfig' not found.])
321 fi
322
323
324 AC_PATH_TARGET_TOOL(VAR_SYSCTL_BINARY, sysctl, false)
325
326 AC_CHECK_PROG(VAR_SYSCTL_BINARY, sysctl, true, false)
327 AS_IF([test x"$VAR_SYSCTL_BINARY" = x"false"],
328       [AS_IF([test -x "/sbin/sysctl"],
329              [VAR_SYSCTL_BINARY="/sbin/sysctl"],
330              [AS_IF([test -x "/usr/sbin/sysctl"],
331                     [VAR_SYSCTL_BINARY="/usr/sbin/sysctl"])])])
332 AS_IF([test x"$VAR_SYSCTL_BINARY" != x"false"],
333       [AC_DEFINE_UNQUOTED([SYSCTL], "$VAR_SYSCTL_BINARY", [Path to sysctl])],
334       [AC_MSG_WARN(['sysctl' not found.])])
335
336 # miniupnpc / upnpc binary is a soft runtime requirement
337 AC_PATH_TARGET_TOOL(VAR_UPNPC_BINARY, upnpc, false)
338
339 if test x"$VAR_UPNPC_BINARY" != x"false"
340 then
341 AC_DEFINE_UNQUOTED([UPNPC], "$VAR_UPNPC_BINARY", [Path to upnpc binary])
342 else
343 AC_MSG_WARN([warning: 'upnpc' binary not found.])
344 fi
345
346 AC_CHECK_MEMBER(struct tm.tm_gmtoff,
347   [AC_DEFINE(HAVE_TM_GMTOFF, 1,
348      [Define if struct tm has the tm_gmtoff member.])],
349      ,
350      [#include <time.h>])
351
352 AC_CHECK_DECLS([_stati64])
353
354 # 'save' libs; only those libs found so far will be
355 # linked against _everywhere_.  For the others, we
356 # will be more selective!
357 SAVE_LIBS=$LIBS
358
359 have_addrinfo_a=0
360 AC_CHECK_LIB(anl, getaddrinfo_a, [have_addrinfo_a=1 AC_DEFINE(HAVE_GETADDRINFO_A,1,[getaddrinfo_a supported])])
361 AM_CONDITIONAL(HAVE_GETADDRINFO_A, [test "$have_addrinfo_a" = 1])
362
363
364 # tests only run on Windows
365 if test "x$build_target" = "xmingw"
366 then
367   AC_CHECK_LIB(plibc, plibc_init, [], [AC_MSG_ERROR([GNUnet requires PlibC on Windows])])
368   AC_CHECK_LIB(gnurx, regexec, [], [AC_MSG_ERROR([GNUnet requires libgnurx on Windows])])
369 fi
370
371 # libgcrypt
372 gcrypt=0
373 NEED_LIBGCRYPT_API=1
374 NEED_LIBGCRYPT_VERSION=1.6.0
375
376
377 AM_PATH_LIBGCRYPT("$NEED_LIBGCRYPT_API:$NEED_LIBGCRYPT_VERSION", gcrypt=1)
378 AC_CHECK_DECLS([gcry_mpi_set_opaque_copy], [], [], [[#include <gcrypt.h>]])
379
380 if test $gcrypt = 0
381 then
382   AC_MSG_ERROR([[
383 ***
384 *** You need libgcrypt to build this program.
385 **  This library is for example available at
386 ***   ftp://ftp.gnupg.org/gcrypt/libgcrypt/
387 *** (at least version $NEED_LIBGCRYPT_VERSION (API $NEED_LIBGCRYPT_API)
388 ***  is required.)
389 ***]])
390 fi
391 AC_DEFINE_UNQUOTED([NEED_LIBGCRYPT_VERSION], "$NEED_LIBGCRYPT_VERSION", [required libgcrypt version])
392
393 AC_CHECK_DECLS([struct in6_ifreq], [], [], [[#include <linux/if_tun.h>]])
394
395
396
397 # should the build process be building the documentation?
398 AC_MSG_CHECKING(whether to build documentation)
399 AC_ARG_ENABLE([documentation],
400    [AS_HELP_STRING([--disable-documentation], [do not build the documentation])],
401    [documentation=${enableval}],
402    [documentation=yes])
403 AC_MSG_RESULT($documentation)
404 if test "x$documentation" = "xyes"
405 then
406   AM_CONDITIONAL([DOCUMENTATION],true)
407   AC_DEFINE([DOCUMENTATION],[1],[Building the documentation])
408 else
409   AM_CONDITIONAL([DOCUMENTATION],false)
410   AC_DEFINE([DOCUMENTATION],[0],[Not building the documentation])
411 fi
412
413 # FIXME: Something is wrong about this in the output of ./configure runs
414 AC_MSG_CHECKING(wether to include generated texi2mdoc output in installation)
415 AC_ARG_ENABLE([texi2mdoc-generation],
416     [AS_HELP_STRING([--enable-texi2mdoc-generation], [include generated texi2mdoc output in installation])],
417     [texi2mdoc_generation=${enableval}],
418     [texi2mdoc_generation=no])
419 AC_MSG_RESULT($texi2mdoc_generation)
420 if test "x$texi2mdoc_generation" = "xyes"
421 then
422   if test "$texi2mdoc" = 0
423   then
424   AC_MSG_WARN([ERROR: mdoc output currently requires texi2mdoc.])
425   AC_MSG_WARN([ERROR: texi2mdoc can be obtained via your Operating System])
426   AC_MSG_WARN([ERROR: package manager or from https://mandoc.bsd.lv/texi2mdoc/])
427   else
428   AM_CONDITIONAL([TEXI2MDOC_GENERATION],true)
429   AC_DEFINE([TEXI2MDOC_GENERATION],[1],[Building section 7 mdoc output])
430   fi
431 else
432   AM_CONDITIONAL([TEXI2MDOC_GENERATION],false)
433   AC_DEFINE([TEXI2MDOC_GENERATION],[0],[Not building section 7 mdoc output])
434 fi
435
436 # should the build process be building only the documentation?
437 AC_MSG_CHECKING(whether to build only documentation)
438 AC_ARG_ENABLE([documentation-only],
439    [AS_HELP_STRING([--enable-documentation-only], [build only the documentation])],
440    [documentation_only=${enableval}],
441    [documentation_only=no])
442 AC_MSG_RESULT($documentation_only)
443 if test "x$documentation_only" = "xyes"
444 then
445   AM_CONDITIONAL([DOCUMENTATION_ONLY],true)
446   AC_DEFINE([DOCUMENTATION_ONLY],[1],[Building only the documentation])
447 else
448   AM_CONDITIONAL([DOCUMENTATION_ONLY],false)
449   AC_DEFINE([DOCUMENTATION_ONLY],[0],[Not building only the documentation])
450 fi
451
452 # should the build process be including the manpages? (default: yes)
453 AC_MSG_CHECKING(whether to include man pages)
454 AC_ARG_ENABLE([include-manpages],
455    [AS_HELP_STRING([--disable-include-manpages], [Do not include the man pages in build and installation])],
456    [include_manpages=${enableval}],
457    [include_manpages=yes])
458 AC_MSG_RESULT($include_manpages)
459 if test "x$include_manpages" = "xyes"
460 then
461   AM_CONDITIONAL([INCLUDE_MANPAGES],true)
462   AC_DEFINE([INCLUDE_MANPAGES],[1],[Including the man pages in the build and installation])
463 else
464   AM_CONDITIONAL([INCLUDE_MANPAGES],false)
465   AC_DEFINE([INCLUDE_MANPAGES],[0],[Not including the man pages in the build and installation])
466 fi
467
468 # Adam shostack suggests the following for Windows:
469 # -D_FORTIFY_SOURCE=2 -fstack-protector-all
470 AC_ARG_ENABLE(gcc-hardening,
471    AS_HELP_STRING(--enable-gcc-hardening, enable compiler security checks),
472 [if test x$enableval = xyes; then
473     CFLAGS="$CFLAGS -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fstack-protector-all"
474     CFLAGS="$CFLAGS -fwrapv -fPIE -Wstack-protector"
475     CFLAGS="$CFLAGS --param ssp-buffer-size=1"
476     LDFLAGS="$LDFLAGS -pie"
477 fi])
478
479 # Linker hardening options
480 # Currently these options are ELF specific - you can't use this with MacOSX
481 AC_ARG_ENABLE(linker-hardening,
482   AS_HELP_STRING(--enable-linker-hardening, enable linker security fixups),
483 [if test x$enableval = xyes; then
484    LDFLAGS="$LDFLAGS -z relro -z now"
485 fi])
486
487
488 AC_ARG_ENABLE(sanitizer,
489   AS_HELP_STRING(--enable-sanitizer, enable Address Sanitizer and Undefined Behavior Sanitizer),
490 [if test x$enableval = xyes; then
491    LDFLAGS="$CFLAGS -fsanitize=address,undefined -fno-omit-frame-pointer"
492 fi])
493
494
495 extra_logging=GNUNET_NO
496 AC_ARG_ENABLE([logging],
497    AS_HELP_STRING([--enable-logging@<:@=value@:>@],[Enable logging calls. Possible values: yes,no,verbose,veryverbose ('yes' is the default)]),
498    [AS_IF([test "x$enableval" = "xyes"], [],
499           [test "x$enableval" = "xno"], [AC_DEFINE([GNUNET_CULL_LOGGING],[],[Define to cull all logging calls])],
500           [test "x$enableval" = "xverbose"], [extra_logging=GNUNET_YES]
501           [test "x$enableval" = "xveryverbose"], [extra_logging=\(GNUNET_YES+1\)])
502    ], [])
503 AC_DEFINE_UNQUOTED([GNUNET_EXTRA_LOGGING],[$extra_logging],[1 if extra logging is enabled, 2 for very verbose extra logging, 0 otherwise])
504
505 # should memory poisoning be enabled?
506 AC_MSG_CHECKING(whether to poison freed memory)
507 AC_ARG_ENABLE([poisoning],
508    [AS_HELP_STRING([--enable-poisoning], [enable poisoning of freed memory (good for debugging)])],
509    [enable_poisoning=${enableval}],
510    [
511      if test "x$extra_logging" != "xGNUNET_NO"; then
512        enable_poisoning="defaults to yes (extra logging is enabled)"
513      else
514        enable_poisoning=no
515      fi
516    ])
517 AC_MSG_RESULT($enable_poisoning)
518 if test ! "x$enable_poisoning" = "xno"; then
519   enable_poisoning=1
520 else
521   enable_poisoning=0
522 fi
523 AC_DEFINE_UNQUOTED([ENABLE_POISONING],[$enable_poisoning],[1 if freed memory should be poisoned, 0 otherwise])
524
525 if test $build = $target
526 then
527 AC_MSG_CHECKING([for working HMAC])
528 AC_LANG_PUSH(C)
529 LIBS="$LIBS $LIBGCRYPT_LIBS"
530 CFLAGS="$CFLAGS $LIBGCRYPT_CFLAGS"
531 AC_RUN_IFELSE(
532   [AC_LANG_PROGRAM([#include <gcrypt.h>
533         #include <stdio.h>], [[
534         gcry_md_hd_t mac;
535
536         unsigned char data[] = { 0xbf, 0x16, 0x6e, 0x46, 0x3a, 0x6c, 0xf3, 0x93, 0xa7, 0x72,
537             0x11, 0xa1, 0xdc, 0x0b, 0x07, 0xdb, 0x1a, 0x5e, 0xd9, 0xb9, 0x81, 0xbe,
538             0xea, 0xe4, 0x31, 0x5f, 0x24, 0xff, 0xfe, 0x50, 0x8a, 0xde };
539         unsigned char key[] = { 0xfc, 0x62, 0x76, 0x35 };
540         unsigned char result[] = {0xa2, 0xb, 0x1, 0xd9, 0xc0, 0x8b, 0x5a, 0x12, 0x80,
541             0xd5, 0x50, 0x12, 0x8e, 0xd0, 0x5b, 0xb6, 0x5c, 0x87, 0x24, 0xe2, 0xd0,
542             0xd2, 0xaf, 0x63, 0xae, 0xd1, 0xd6, 0x64, 0x14, 0xe3, 0x6e, 0x61, 0x5b,
543             0xd, 0xba, 0x17, 0x7d, 0xd3, 0x10, 0xb1, 0x37, 0x41, 0x91, 0x7d, 0xeb,
544             0x1, 0x4d, 0x71, 0xe8, 0x59, 0x71, 0x42, 0x8e, 0xd6, 0xf3, 0x29, 0x3b,
545             0x90, 0xf2, 0xd1, 0xaf, 0x65, 0x1e, 0xb3};
546
547         if (!gcry_check_version (GCRYPT_VERSION))
548         {
549           fprintf (stderr, "Version mismatch %s <-> %s \n", gcry_check_version (NULL), GCRYPT_VERSION);
550           return 1;
551         }
552
553         gcry_control (GCRYCTL_DISABLE_SECMEM, 0);
554         gcry_control (GCRYCTL_INITIALIZATION_FINISHED, 0);
555
556         if (gcry_md_open(&mac, GCRY_MD_SHA512, GCRY_MD_FLAG_HMAC) != GPG_ERR_NO_ERROR)
557         {
558           fprintf (stderr, "gcry_md_open error\n");
559           return 2;
560         }
561
562         gcry_md_setkey (mac, key, sizeof (key));
563         gcry_md_write (mac, data, sizeof (data));
564
565         if (memcmp(gcry_md_read (mac, 0), result, gcry_md_get_algo_dlen (gcry_md_get_algo (mac))) != 0)
566         {
567           fprintf (stderr, "memcmp error\n");
568           return 3;
569         }
570
571         gcry_md_close (mac);
572
573         return 0;
574     ]])],
575   [AC_MSG_RESULT([yes])],
576   [
577    RESULT=$?
578    if test $RESULT = 3
579    then
580      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.])
581    fi
582    if test $RESULT = 2
583    then
584      AC_MSG_FAILURE([HMAC test failed])
585    fi
586    if test $RESULT = 1
587    then
588      AC_MSG_FAILURE([libgcrypt header version does not match library version])
589    fi
590   ],
591   [AC_MSG_RESULT([cross compiling, test skipped])])
592 AC_LANG_POP(C)
593 fi      # $build = $target
594
595 # check for bluetooth library
596 bluetooth=0
597 AC_CHECK_LIB(bluetooth, ba2str,[AC_CHECK_HEADER([bluetooth/bluetooth.h],bluetooth=1)])
598 if test "$build_target" = "mingw"
599 then
600   bluetooth=1
601 fi
602 AM_CONDITIONAL(HAVE_LIBBLUETOOTH, [test "$bluetooth" = 1])
603 if test "$bluetooth" = 1
604 then
605   AC_DEFINE([HAVE_LIBBLUETOOTH],[1],[Have bluetooth library])
606 else
607   AC_DEFINE([HAVE_LIBBLUETOOTH],[0],[Lacking bluetooth library])
608 fi
609
610 # check for zbar library
611 zbar=0
612 AC_MSG_CHECKING(for libzbar)
613 AC_ARG_WITH(zbar,
614    [  --with-zbar=PFX    base of libzbar installation],
615    [AC_MSG_RESULT([$with_zbar])
616     case $with_zbar in
617       no)
618         ;;
619       yes)
620         AC_CHECK_HEADERS(zbar.h,
621           AC_CHECK_LIB([zbar], [zbar_processor_create],
622             zbar=1))
623         ;;
624       *)
625         LDFLAGS="-L$with_zbar/lib $LDFLAGS"
626         CPPFLAGS="-I$with_zbar/include $CPPFLAGS"
627         AC_CHECK_HEADERS(zbar.h,
628           AC_CHECK_LIB([zbar], [zbar_processor_create],
629             EXT_LIB_PATH="-L$with_zbar/lib $EXT_LIB_PATH"
630             zbar=1))
631         ;;
632     esac
633    ],
634    [AC_MSG_RESULT([--with-zbar not specified])
635     AC_CHECK_HEADERS(zbar.h,
636      AC_CHECK_LIB([zbar], [zbar_processor_create],
637       zbar=1))])
638 AM_CONDITIONAL(HAVE_ZBAR, [test "$zbar" = 1])
639 AS_IF([test "x$zbar" = x1],
640       [AC_DEFINE([HAVE_ZBAR],[1],[Have zbar library])],
641       [AC_DEFINE([HAVE_ZBAR],[0],[Lacking zbar library])])
642
643 # check for jansson library
644 jansson=0
645 AC_MSG_CHECKING(for libjansson)
646 AC_ARG_WITH(jansson,
647    [  --with-jansson=PFX    base of libjansson installation],
648    [AC_MSG_RESULT([$with_jansson])
649     case $with_jansson in
650       no)
651         ;;
652       yes)
653         AC_CHECK_HEADERS(jansson.h,
654           AC_CHECK_LIB([jansson], [json_loads],
655             jansson=1))
656         ;;
657       *)
658         LDFLAGS="-L$with_jansson/lib $LDFLAGS"
659         CPPFLAGS="-I$with_jansson/include $CPPFLAGS"
660         AC_CHECK_HEADERS(jansson.h,
661           AC_CHECK_LIB([jansson], [json_loads],
662             EXT_LIB_PATH="-L$with_jansson/lib $EXT_LIB_PATH"
663             jansson=1))
664         ;;
665     esac
666    ],
667    [AC_MSG_RESULT([--with-jansson not specified])
668     AC_CHECK_HEADERS(jansson.h,
669      AC_CHECK_LIB([jansson], [json_loads],
670       jansson=1))])
671 AM_CONDITIONAL(HAVE_JANSSON, [test "$jansson" = 1])
672 AM_CONDITIONAL(HAVE_JSON, [test x$jansson = x1])
673 AS_IF([test "x$jansson" = x1],
674       [AC_DEFINE([HAVE_JANSSON],[1],[Have jansson library])],
675       [AC_DEFINE([HAVE_JANSSON],[0],[Lacking jansson library])])
676
677
678 # check for libpulse(audio) library
679 pulse=0
680 AC_CHECK_LIB(pulse,pa_stream_peek,
681   [AC_CHECK_HEADER([pulse/simple.h],pulse=1)])
682 AS_IF([test "$build_target" = "mingw"],
683       [pulse=0])
684 AS_IF([test "$pulse" = 1],
685       [AC_DEFINE([HAVE_PULSE],[1],[Have libpulse(audio) library])])
686
687 # check for libopus(audio) library
688 opus=0
689 AC_CHECK_LIB(opus,opus_decode_float,
690   [AC_CHECK_HEADER([opus/opus.h],
691     [AC_CHECK_DECL([OPUS_SET_GAIN],[opus=1],[],[[#include <opus/opus.h>]]
692     )]
693   )]
694 )
695 AS_IF([test "x$opus" = x1],
696       [AC_DEFINE([HAVE_OPUS],[1],[Have libopus library])])
697
698 # libogg
699 AC_CHECK_LIB(ogg, ogg_stream_flush_fill,
700         [AC_CHECK_HEADERS([ogg/ogg.h],
701           AM_CONDITIONAL(HAVE_OGG, true)
702           ogg=1
703           AC_DEFINE(HAVE_OGG,1,[Have ogg]),
704           AM_CONDITIONAL(HAVE_OGG, false)
705           ogg=0
706           AC_DEFINE(HAVE_OGG,0,[lacking ogg]))],
707         AM_CONDITIONAL(HAVE_OGG, false)
708         ogg=0)
709
710
711 PKG_CHECK_MODULES([GLIB],
712                   [glib-2.0],
713   [# check for pbc library
714   pbc=0
715    AC_CHECK_HEADER([pbc/pbc.h],pbc=1)
716    AC_CHECK_HEADER([gabe.h],abe=1)
717    AM_CONDITIONAL(HAVE_PBC, [test "x$pbc" = x1])
718    AM_CONDITIONAL(HAVE_ABE, [test "x$abe" = x1])
719    AS_IF([test "x$pbc" = x1],
720      [AC_DEFINE([HAVE_PBC],[1],[Have pbc library])],
721      [AC_DEFINE([HAVE_PBC],[0],[Lacking pbc library])])
722    AS_IF([test "x$abe" = x1],
723     [AC_DEFINE([HAVE_ABE],[1],[Have ABE library])],
724     [AC_DEFINE([HAVE_ABE],[0],[Lacking ABE library])])],
725   [# glib-2 not found
726    AM_CONDITIONAL(HAVE_PBC, [false])
727    AM_CONDITIONAL(HAVE_ABE, [false])
728    AC_DEFINE([HAVE_PBC],[0],[Lacking glib library])])
729
730 gst=0
731 PKG_CHECK_MODULES(
732   [GST],
733   [glib-2.0 gobject-2.0 gstreamer-1.0 gstreamer-app-1.0 gstreamer-audio-1.0],
734   [gst=1],
735   [gst=0])
736
737 # Pulse Audio
738 if test "x$pulse" != "x1" -o "x$opus" != "x1" -o "x$ogg" != "x1"
739 then
740  if test "x$gst" != "x1"
741  then
742   conversation_backend=none
743   AM_CONDITIONAL(BUILD_PULSE_HELPERS, false)
744   AM_CONDITIONAL(BUILD_GST_HELPERS, false)
745   AM_CONDITIONAL(BUILD_EXPERIMENTAL_HELPERS, false)
746  else
747    conversation_backend=gst
748    AM_CONDITIONAL(BUILD_PULSE_HELPERS, false)
749    AM_CONDITIONAL(BUILD_GST_HELPERS, true)
750    AM_CONDITIONAL(BUILD_EXPERIMENTAL_HELPERS, false)
751  fi
752 else
753
754  conversation_backend=pulse
755  AM_CONDITIONAL(BUILD_PULSE_HELPERS, true)
756  AM_CONDITIONAL(BUILD_GST_HELPERS, false)
757  AM_CONDITIONAL(BUILD_EXPERIMENTAL_HELPERS, false)
758 fi
759
760 # libgnurl
761 LIBGNURL_CHECK_CONFIG(,7.34.0,gnurl=1,gnurl=0)
762 if test "$gnurl" = 1
763 then
764         AM_CONDITIONAL(HAVE_LIBGNURL, true)
765         AC_DEFINE([HAVE_LIBGNURL],[1],[Have libgnurl])
766 else
767         AM_CONDITIONAL(HAVE_LIBGNURL, false)
768         AC_DEFINE([HAVE_LIBGNURL],[0],[Lacking libgnurl])
769 fi
770
771 SAVE_CPPFLAGS=$CPPFLAGS
772 CPPFLAGS="$LIBGNURL_CPPFLAGS $LIBCURL_CPPFLAGS $CPPFLAGS"
773 LIBS="$LIBGNURL $LIBCURL $LIBS"
774
775 # libcurl-gnutls
776 LIBCURL_CHECK_CONFIG(,7.34.0,[curl=true],[curl=false])
777 if test "x$curl" = xtrue
778 then
779
780  AC_CHECK_HEADERS([curl/curl.h],
781   AC_CHECK_DECLS(CURLINFO_TLS_SESSION,[curl=true],[curl=false],[[#include <curl/curl.h>]]),
782   [curl=false])
783  AC_CHECK_HEADERS([gnurl/curl.h],
784   AC_CHECK_DECLS(CURLINFO_TLS_SESSION,[curl=true],,[[#include <gnurl/curl.h>]]))
785  # need libcurl-gnutls.so, everything else is not acceptable
786  AC_CHECK_LIB([curl-gnutls],[curl_easy_getinfo],,[curl=false])
787  # cURL must support CURLINFO_TLS_SESSION, version >= 7.34
788 fi
789
790 # Check for curl/curl.h and gnurl/curl.h so we can use #ifdef
791 # HAVE_CURL_CURL_H later (the above LIBCURL_CHECK_CONFIG accepted
792 # *either* header set).
793 AC_CHECK_HEADERS([curl/curl.h],,
794   curl=false
795   AC_CHECK_HEADERS([gnurl/curl.h],,
796   gnurl=false))
797
798
799
800 if test x$curl = xfalse
801 then
802         AM_CONDITIONAL(HAVE_LIBCURL, false)
803 if test "$gnurl" = 0
804 then
805         AC_MSG_WARN([ERROR: GNUnet requires libcurl-gnutls or gnurl >= 7.34])
806 fi
807 else
808         AM_CONDITIONAL(HAVE_LIBCURL, true)
809         AC_DEFINE([HAVE_LIBCURL],[1],[Have CURL])
810 fi
811
812 AC_SEARCH_LIBS(__atomic_load_8, atomic, [have_libatomic=1 AC_DEFINE(HAVE_LIBATOMIC,1,[external libatomic])])
813 AM_CONDITIONAL(HAVE_LIBATOMIC, [test "$have_libatomic" = 1])
814
815 # restore LIBS & CPPFLAGS
816 LIBS=$SAVE_LIBS
817 CPPFLAGS=$SAVE_CPPFLAGS
818
819 AC_CHECK_HEADERS([glpk.h],[glpk=true],[glpk=false])
820 # GLPK must support glpk_init_env, version >= 4.43
821 AC_CHECK_LIB([glpk],[glp_init_env],,[glpk=false])
822 # GLPK must support atm MLP presolving, version >= 4.32
823 AC_CHECK_MEMBERS(glp_iocp.presolve,,[glpk=false],[[#include <glpk.h>]])
824 if test "x$glpk" = xfalse
825 then
826         AM_CONDITIONAL(HAVE_LIBGLPK, false)
827         AC_MSG_WARN([ERROR: GNUnet requires GLPK  >= 4.32])
828 else
829         AM_CONDITIONAL(HAVE_LIBGLPK, true)
830         AC_DEFINE([HAVE_LIBGLPK],[1],[Have GLPK])
831 fi
832
833
834 AC_CHECK_HEADERS([nss.h],[nss=true],[nss=false])
835 if test x$nss = xfalse
836 then
837         AM_CONDITIONAL(HAVE_GLIBCNSS, false)
838         AC_MSG_WARN([No GNU libc nss header, will not build NSS plugin])
839 else
840         NSS_INCLUDES="
841         #include <nss.h>
842         "
843         AC_CHECK_DECL([NSS_STATUS_UNAVAIL],
844                 [AM_CONDITIONAL(HAVE_GLIBCNSS, true)],
845                 [AM_CONDITIONAL(HAVE_GLIBCNSS, false)
846                  AC_MSG_WARN([No nss header fails to define NSS_STATUS_UNAVAIl, will not build NSS plugin])],
847                 [$NSS_INCLUDES])
848 fi
849
850
851
852 # test for kvm and kstat (for CPU stats under BSD/Solaris)
853 AC_CHECK_LIB([kvm],[kvm_open])
854 AC_CHECK_LIB([kstat],[kstat_open])
855
856
857 # should the build process be restricted to the code required
858 # for GNU Taler wallets?
859 AC_MSG_CHECKING(whether to compile GNU Taler Wallet library ONLY)
860 AC_ARG_ENABLE([taler-wallet],
861    [AS_HELP_STRING([--enable-taler-wallet], [only compile for Taler wallet])],
862    [taler_only=${enableval}],
863    [taler_only=no])
864 AC_MSG_RESULT($taler_only)
865 if test "x$taler_only" = "xyes"
866 then
867   AM_CONDITIONAL([TALER_ONLY],true)
868   AC_DEFINE([TALER_WALLET_ONLY],[1],[Compiling for Taler wallet])
869 else
870   AM_CONDITIONAL([TALER_ONLY],false)
871   AC_DEFINE([TALER_WALLET_ONLY],[0],[Canonical compilation])
872 fi
873
874 # test for libextractor
875 extractor=0
876 AC_MSG_CHECKING(for libextractor)
877 AC_ARG_WITH(extractor,
878    [  --with-extractor=PFX    base of libextractor installation],
879    [AC_MSG_RESULT([$with_extractor])
880     case $with_extractor in
881       no)
882         ;;
883       yes)
884         AC_CHECK_HEADERS([extractor.h],
885           AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
886             extractor=1))
887         ;;
888       *)
889         LDFLAGS="-L$with_extractor/lib $LDFLAGS"
890         CPPFLAGS="-I$with_extractor/include $CPPFLAGS"
891         AC_CHECK_HEADERS([extractor.h],
892           AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
893             EXT_LIB_PATH="-L$with_extractor/lib $EXT_LIB_PATH"
894             extractor=1))
895         ;;
896     esac
897    ],
898    [AC_MSG_RESULT([--with-extractor not specified])
899     AC_CHECK_HEADERS([extractor.h],
900      AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
901       extractor=1))])
902 # restore LIBS
903 LIBS=$SAVE_LIBS
904
905 if test "$extractor" != 1
906 then
907  AM_CONDITIONAL(HAVE_LIBEXTRACTOR, false)
908  AC_DEFINE([HAVE_LIBEXTRACTOR],[0],[Lacking libextractor])
909 else
910  AM_CONDITIONAL(HAVE_LIBEXTRACTOR, true)
911  AC_DEFINE([HAVE_LIBEXTRACTOR],[1],[Have libextractor])
912 fi
913
914
915 if test "$taler_only" != yes
916 then
917
918 # Check for libltdl header (#2999)
919 ltdl=0
920 AC_MSG_CHECKING(for libltdl)
921 AC_ARG_WITH(ltdl,
922    [  --with-ltdl=PFX    base of libltdl installation],
923    [AC_MSG_RESULT([$with_ltdl])
924     case $with_ltdl in
925       no)
926         ;;
927       yes)
928         AC_CHECK_HEADERS(ltdl.h,
929           AC_CHECK_LIB([ltdl], [lt_dlopenext],
930             ltdl=1))
931         ;;
932       *)
933         LDFLAGS="-L$with_ltdl/lib $LDFLAGS"
934         CPPFLAGS="-I$with_ltdl/include $CPPFLAGS"
935         AC_CHECK_HEADERS(ltdl.h,
936           AC_CHECK_LIB([ltdl], [lt_dlopenext],
937             EXT_LIB_PATH="-L$with_ltdl/lib $EXT_LIB_PATH"
938             ltdl=1))
939         ;;
940     esac
941    ],
942    [AC_MSG_RESULT([--with-ltdl not specified])
943     AC_CHECK_HEADERS(ltdl.h,
944      AC_CHECK_LIB([ltdl], [lt_dlopenext],
945       ltdl=1))])
946 if test x$ltdl = x1
947 then
948  AC_MSG_RESULT([libltdl found])
949 else
950  AC_MSG_ERROR([GNUnet requires libltdl (from GNU libtool), try installing libltdl-dev])
951 fi
952 # restore LIBS
953 LIBS=$SAVE_LIBS
954
955 # libidn and libidn2. The ideal goal is this:
956 # check for libidn2, if it doesn't exist check for libidn
957 # if both exist, prefer libidn2
958 # if none exist, fail and message that libidn or libidn2
959 # is required with a preference for libidn2.
960 # TODO: What we have right here can probably be improved.
961 my_with_libidn=1
962 AC_ARG_WITH(libidn,
963             AS_HELP_STRING([--with-libidn=pathname],
964                            [Support IDN (needs libidn)]),
965             [],
966             [withval="yes"])
967 AS_IF([test x_$withval = x_yes],
968       [AC_CHECK_HEADERS([idna.h],
969           AC_MSG_NOTICE([Found idna.h]),
970           AC_CHECK_HEADERS([idn/idna.h],
971                AC_MSG_NOTICE([Found idn/idna.h]),
972                my_with_libidn=0))],
973       [AS_IF([test x_$withval != x_no],
974              [CFLAGS="$CFLAGS -I$withval/include"
975               LDFLAGS="$LDFLAGS -L$withval/lib"
976               AC_CHECK_HEADERS([idna.h],
977                 AC_MSG_NOTICE([Found idna.h]),
978                 [AC_MSG_NOTICE([Failed to find idna.h])
979                  my_with_libidn=0])],
980              [my_with_libidn=0])])
981
982 my_with_libidn2=1
983 AC_ARG_WITH(libidn2,
984             AS_HELP_STRING([--with-libidn2=pathname],
985                            [Support IDN (needs libidn2)]),
986             [],
987             [withval="yes"])
988 AS_IF([test x_$withval = x_yes],
989       [AC_CHECK_HEADERS([idn2.h],
990        AC_MSG_NOTICE([Found idn2.h]),
991        AC_CHECK_HEADERS([idn2/idn2.h],
992           AC_MSG_NOTICE([Found idn2/idn2.h]),
993           [AC_MSG_NOTICE([Failed to find idn2.h])
994            my_with_libidn2=0]))],
995       [AS_IF([test x_$withval != x_no],
996              [CFLAGS="$CFLAGS -I$withval/include"
997               LDFLAGS="$LDFLAGS -L$withval/lib"],
998              [my_with_libidn2=0])])
999
1000 AC_MSG_CHECKING([if libidn can be used])
1001 # Check for LIBIDNs
1002 there_can_only_be_one=1
1003
1004 working_libidn1=0
1005 working_libidn2=0
1006 AS_IF([test x$my_with_libidn2 = x1],
1007       [AC_MSG_NOTICE([Checking for libidn2])
1008        AC_CHECK_LIB([idn2],
1009                     [idn2_to_unicode_8z8z],
1010                     [working_libidn2=1
1011                     LIBS="-lidn2 $LIBS"
1012                     AC_DEFINE_UNQUOTED([HAVE_LIBIDN2],
1013                                        [1],
1014                                         [Define to 1 if you have 'libidn2' (-lidn2).])],
1015                      [MISSING_DEPS="${MISSING_DEPS}${MISSING_SEP}libidn2"
1016                      MISSING_SEP=", "])])
1017 AM_CONDITIONAL(HAVE_LIBIDN2, test x$working_libidn2 = x1)
1018 AS_IF([test x$working_libidn2 = x0],
1019       [AS_IF([test x$my_with_libidn = x1],
1020              [AC_MSG_NOTICE([Checking for libidn])
1021               AC_CHECK_LIB([idn],
1022                            [idna_to_ascii_8z],
1023                            [working_libidn1=1
1024                            LIBS="-lidn $LIBS"
1025                              AC_DEFINE_UNQUOTED([HAVE_LIBIDN],
1026                                                 [1],
1027                                                 [Define to 1 if you have 'libidn' (-lidn).])],
1028                              [there_can_only_be_one=0])],
1029              [AS_IF([test x$my_with_libidn2 = x1],
1030                     [there_can_only_be_one=0
1031                      AC_MSG_FAILURE([* There can only be one libidn.
1032                                      * Provide either libidn >= 1.13
1033                                      * or
1034                                      * libidn2 to the configure
1035                                      * script via
1036                                      * --with-libidn2
1037                                      * --with-libidn])])])])
1038 AM_CONDITIONAL(HAVE_LIBIDN, test x$working_libidn1 = x1)
1039
1040 AS_IF([test "$working_libidn1" = 0 -a "$working_libidn2" = 0],
1041       [AC_MSG_ERROR([GNUnet requires libidn (or libidn2)])])
1042
1043 AS_IF([test x$there_can_only_be_one = x0],
1044       [AC_MSG_FAILURE([Missing dependencies: $MISSING_DEPS])])
1045
1046 # test for zlib
1047 SAVE_LDFLAGS=$LDFLAGS
1048 SAVE_CPPFLAGS=$CPPFLAGS
1049 AC_ARG_WITH(zlib,
1050             [  --with-zlib[[=DIR]]       use libz in DIR],
1051             [AS_IF([test "$withval" = "no"],
1052                    [AC_MSG_ERROR([GNUnet requires zlib])],
1053                    [test "$withval" != "yes"],
1054                    [
1055                      Z_DIR=$withval
1056                      CPPFLAGS="${CPPFLAGS} -I$withval/include"
1057                      LDFLAGS="${LDFLAGS} -L$withval/lib"
1058                    ])
1059             ])
1060 AC_CHECK_HEADER(zlib.h,
1061                 [],
1062                 [AC_MSG_ERROR([GNUnet requires zlib])])
1063 AC_CHECK_LIB(z, compress2,
1064              [
1065               AC_DEFINE([HAVE_ZLIB], [], [Have compression library])
1066               if test "x${Z_DIR}" != "x"; then
1067                       Z_CFLAGS="-I${Z_DIR}/include"
1068                       Z_LIBS="-L${Z_DIR}/lib -lz"
1069               else
1070                       Z_LIBS="-lz"
1071               fi],
1072               [AC_MSG_ERROR([GNUnet requires zlib])])
1073 AC_SUBST(Z_CFLAGS)
1074 AC_SUBST(Z_LIBS)
1075
1076 if test "$enable_shared" = "no"
1077 then
1078  AC_MSG_ERROR([GNUnet only works with shared libraries. Sorry.])
1079 fi
1080
1081
1082
1083 # restore LIBS
1084 LIBS=$SAVE_LIBS
1085
1086
1087 fi
1088
1089 # check for iconv
1090 AM_ICONV
1091
1092 # test for libunistring
1093 gl_LIBUNISTRING
1094 if test $HAVE_LIBUNISTRING != yes; then
1095  AC_MSG_ERROR([GNUnet requires libunistring])
1096 fi
1097 # under emscripten, $gl_libunistring_hexversion is undefined
1098 if test "$taler_only" != yes; then
1099 if test "x$gl_libunistring_hexversion" = "x" || test "$gl_libunistring_hexversion" -le 2305; then
1100  AC_MSG_ERROR([GNUnet requires libunistring >= 0.9.1.1])
1101 fi
1102 fi
1103 AC_CHECK_HEADERS([unistr.h],,AC_MSG_ERROR([Compiling GNUnet requires unistr.h (from libunistring) to be installed]))
1104
1105 # restore LIBS
1106 LIBS=$SAVE_LIBS
1107
1108
1109
1110 # Checks for standard header files.
1111 AC_HEADER_DIRENT
1112 AC_HEADER_STDC
1113
1114 # Check for headers that are ALWAYS required
1115 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: 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]))
1116
1117
1118
1119 # Checks for headers that are only required on some systems or opional (and where we do NOT abort if they are not there)
1120 AC_CHECK_HEADERS([stdatomic.h 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 byteswap.h])
1121
1122 # FreeBSD requires something more funky for netinet/in_systm.h and netinet/ip.h...
1123 AC_CHECK_HEADERS([sys/types.h netinet/in_systm.h netinet/in.h netinet/ip.h],,,
1124 [#ifdef HAVE_SYS_TYPES_H
1125 #include <sys/types.h>
1126 #endif
1127 #ifdef HAVE_NETINET_IN_SYSTM_H
1128 #include <netinet/in_systm.h>
1129 #endif
1130 #ifdef HAVE_NETINET_IN_H
1131 #include <netinet/in.h>
1132 #endif
1133 ])
1134
1135 SAVE_LDFLAGS=$LDFLAGS
1136 SAVE_CPPFLAGS=$CPPFLAGS
1137
1138 # test for sqlite
1139 sqlite=false
1140 AC_MSG_CHECKING(for SQLite)
1141 AC_ARG_WITH(sqlite,
1142   [  --with-sqlite=PFX       base of SQLite installation],
1143   [AC_MSG_RESULT("$with_sqlite")
1144    case $with_sqlite in
1145    no)
1146      ;;
1147    yes)
1148     AC_CHECK_HEADERS(sqlite3.h,
1149      sqlite=true)
1150      ;;
1151    *)
1152     LDFLAGS="-L$with_sqlite/lib $LDFLAGS"
1153     CPPFLAGS="-I$with_sqlite/include $CPPFLAGS"
1154     AC_CHECK_HEADERS(sqlite3.h,
1155      EXT_LIB_PATH="-L$with_sqlite/lib $EXT_LIB_PATH"
1156      SQLITE_LDFLAGS="-L$with_sqlite/lib"
1157      SQLITE_CPPFLAGS="-I$with_sqlite/include"
1158      sqlite=true)
1159     LDFLAGS=$SAVE_LDFLAGS
1160     CPPFLAGS=$SAVE_CPPFLAGS
1161     ;;
1162    esac
1163   ],
1164   [AC_MSG_RESULT([--with-sqlite not specified])
1165     AC_CHECK_HEADERS(sqlite3.h, sqlite=true)])
1166 AM_CONDITIONAL(HAVE_SQLITE, test x$sqlite = xtrue)
1167 AC_SUBST(SQLITE_CPPFLAGS)
1168 AC_SUBST(SQLITE_LDFLAGS)
1169
1170 LDFLAGS=$SAVE_LDFLAGS
1171 CPPFLAGS=$SAVE_CPPFLAGS
1172
1173 # test for postgres
1174 postgres=false
1175 # even running the check for postgres breaks emscripten ...
1176 AS_IF([test "$taler_only" != yes],
1177       [AX_LIB_POSTGRESQL([9.5],
1178         [CPPFLAGS="$CPPFLAGS $POSTGRESQL_CPPFLAGS"
1179          AC_CHECK_HEADERS([libpq-fe.h],
1180          postgres=true)
1181         ],
1182         [AC_MSG_RESULT([no postgres])])])
1183 AM_CONDITIONAL(HAVE_POSTGRESQL, test x$postgres = xtrue)
1184
1185
1186 LDFLAGS=$SAVE_LDFLAGS
1187 CPPFLAGS=$SAVE_CPPFLAGS
1188
1189 # mysql & windows
1190 AC_CHECK_TYPES([sigset_t, off_t], [], [], [#include <sys/types.h>])
1191 AC_CHECK_TYPES([size_t], [], [], [#include <stdio.h>])
1192
1193 if test "$build_target" = "mingw"
1194 then
1195   CYGWIN_MYSQL_MAGIC="#include <mysql/my_global.h>"
1196 fi
1197
1198 # test for mysql
1199 mysql=false
1200 mysqlfail=false
1201 SAVE_LDFLAGS=$LDFLAGS
1202 SAVE_CPPFLAGS=$CPPFLAGS
1203 AC_MSG_CHECKING(for mysql)
1204 AC_ARG_WITH(mysql,
1205   [  --with-mysql=PFX        base of MySQL installation],
1206   [AC_MSG_RESULT([$with_mysql])
1207    case $with_mysql in
1208    no)
1209       ;;
1210    yes|"")
1211       AC_CHECK_HEADERS(mysql/mysql.h,
1212        AC_CHECK_LIB(mysqlclient, mysql_init,
1213
1214        mysql=true), [], [$CYGWIN_MYSQL_MAGIC])
1215       ;;
1216    *)
1217       LDFLAGS="-L$with_mysql/lib -L$with_mysql/lib/mysql $LDFLAGS $ZLIBS"
1218       CPPFLAGS="-I$with_mysql/include $CPPFLAGS"
1219       AC_CHECK_HEADERS(mysql/mysql.h,
1220        AC_CHECK_LIB(mysqlclient, mysql_init,
1221         MYSQL_LDFLAGS="-L$with_mysql/lib -L$with_mysql/lib/mysql"
1222         MYSQL_CPPFLAGS="-I$with_mysql/include"
1223
1224         mysql=true), [], [$CYGWIN_MYSQL_MAGIC])
1225       ;;
1226    esac
1227   ],
1228   [AC_MSG_RESULT([--with-mysql not specified])
1229    if test -d "/usr/lib64/mysql"; then
1230     MYSQL_LIBDIR="/usr/lib64/mysql"
1231    elif test -d "/usr/lib/mysql"; then
1232     MYSQL_LIBDIR="/usr/lib/mysql"
1233    else
1234     MYSQL_LIBDIR="/usr/lib"
1235    fi
1236    LDFLAGS="-L$MYSQL_LIBDIR $LDFLAGS $ZLIBS"
1237    AC_CHECK_LIB(mysqlclient, mysql_init,
1238     [AC_CHECK_HEADERS(mysql/mysql.h,
1239       MYSQL_LDFLAGS="-L$MYSQL_LIBDIR"
1240       mysql=true
1241
1242      , [], [$CYGWIN_MYSQL_MAGIC])])
1243   ])
1244
1245 AC_SUBST(MYSQL_LDFLAGS)
1246 AC_SUBST(MYSQL_CPPFLAGS)
1247
1248 # additional version check for mysql
1249 AC_ARG_ENABLE(mysql-version-check, [  --disable-mysql-version-check  do not check MySQL version],, enable_mysql_version_check=yes)
1250 if test "$mysql" = "true" -a "x$enable_mysql_version_check" = "xyes"
1251 then
1252   AC_MSG_CHECKING(mysql version)
1253   AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
1254     [[$CYGWIN_MYSQL_MAGIC
1255       #include <mysql/mysql.h>]],
1256     [[
1257       #if (MYSQL_VERSION_ID < 40100)
1258       #error needs at least version >= 4.1
1259       #endif
1260       int main () { return 0; }
1261     ]])
1262     ],mysql=true,mysql=false)
1263   if test "$mysql" = "false"
1264   then
1265     mysqlfail=true
1266     AC_MSG_RESULT([fail, >= 4.1 required])
1267   else
1268     AC_MSG_RESULT(ok)
1269   fi
1270 fi
1271 AM_CONDITIONAL(HAVE_MYSQL, test x$mysql = xtrue)
1272 AM_CONDITIONAL(HAVE_MYSQLE, false)
1273 # restore LIBS
1274 LIBS=$SAVE_LIBS
1275 LDFLAGS=$SAVE_LDFLAGS
1276 CPPFLAGS=$SAVE_CPPFLAGS
1277
1278 if test "$sqlite" = 0 -a "$mysql" = 0
1279 then
1280  AC_MSG_ERROR([GNUnet requires SQLite or MySQL])
1281 fi
1282
1283 # libmicrohttpd
1284 lmhd=0
1285 AC_MSG_CHECKING([for libmicrohttpd])
1286 AC_ARG_WITH(microhttpd,
1287    [  --with-microhttpd=PFX   base of libmicrohttpd installation],
1288    [AC_MSG_RESULT([$with_microhttpd])
1289     case $with_microhttpd in
1290       no)
1291         ;;
1292       yes|"")
1293         AC_CHECK_HEADERS([microhttpd.h],
1294           AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
1295             AC_CHECK_LIB([microhttpd], [MHD_get_fdset2],
1296               [AC_MSG_CHECKING([for libmicrohttpd >= 0.9.52])
1297               AC_COMPILE_IFELSE([AC_LANG_SOURCE([
1298                 #include "$native_srcdir/src/include/platform.h"
1299                 #include <microhttpd.h>
1300                 #if (MHD_VERSION < 0x0094200)
1301                 #error needs at least version 0.9.42
1302                 #endif
1303                 int main () { return 0; }
1304                ])],
1305                [AC_MSG_RESULT(ok)
1306                 lmhd=1],
1307                [AC_MSG_RESULT(failed)])]),
1308             [],[#include "$native_srcdir/src/include/platform.h"
1309                 #include <microhttpd.h>]),,
1310             [#include "$native_srcdir/src/include/platform.h"])
1311         ;;
1312       *)
1313         LDFLAGS="-L$with_microhttpd/lib $LDFLAGS"
1314         CPPFLAGS="-I$with_microhttpd/include $CPPFLAGS"
1315         AC_CHECK_HEADERS(microhttpd.h,
1316           AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
1317             AC_CHECK_LIB([microhttpd], [MHD_get_fdset2],
1318               EXT_LIB_PATH="-L$with_microhttpd/lib $EXT_LIB_PATH"
1319               [AC_MSG_CHECKING([for libmicrohttpd >= 0.9.52])
1320                AC_COMPILE_IFELSE([AC_LANG_SOURCE([
1321                 #include "$native_srcdir/src/include/platform.h"
1322                 #include <microhttpd.h>
1323                 #if (MHD_VERSION < 0x0094200)
1324                 #error needs at least version 0.9.42
1325                 #endif
1326                 int main () { return 0; }
1327                ])],
1328                [AC_MSG_RESULT(ok)
1329                 lmhd=1],
1330                [AC_MSG_RESULT(failed)])]),
1331             [],[#include "$native_srcdir/src/include/platform.h"
1332                 #include <microhttpd.h>]),,
1333             [#include "$native_srcdir/src/include/platform.h"])
1334         ;;
1335     esac
1336    ],
1337    [AC_MSG_RESULT([--with-microhttpd not specified])
1338     AC_CHECK_HEADERS([microhttpd.h],
1339       AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
1340         AC_CHECK_LIB([microhttpd], [MHD_get_fdset2],
1341           [AC_MSG_CHECKING([for libmicrohttpd >= 0.9.52])
1342               AC_COMPILE_IFELSE([AC_LANG_SOURCE([
1343                 #include "$native_srcdir/src/include/platform.h"
1344                 #include <microhttpd.h>
1345                 #if (MHD_VERSION < 0x0094200)
1346                 #error needs at least version 0.9.52
1347                 #endif
1348                ])],
1349                [AC_MSG_RESULT(ok)
1350                 lmhd=1],
1351                [AC_MSG_RESULT(failed)])]),
1352         [],[#include "$native_srcdir/src/include/platform.h"
1353             #include <microhttpd.h>]),,
1354        [#include "$native_srcdir/src/include/platform.h"])])
1355 AM_CONDITIONAL(HAVE_MHD, test x$lmhd = x1)
1356 AC_DEFINE_UNQUOTED([HAVE_MHD], $lmhd, [We have libmicrohttpd])
1357
1358 AM_CONDITIONAL(HAVE_JSON, [test x$jansson = x1])
1359
1360 # restore LIBS
1361 LIBS=$SAVE_LIBS
1362
1363 # check for gettext
1364 AM_GNU_GETTEXT([external])
1365 AM_GNU_GETTEXT_VERSION([0.18.1])
1366
1367 # Checks for standard typedefs, structures, and compiler characteristics.
1368 AC_TYPE_PID_T
1369 AC_TYPE_SIZE_T
1370 AC_TYPE_MODE_T
1371 AC_HEADER_TIME
1372 AC_HEADER_STAT
1373 AC_HEADER_STDBOOL
1374 AC_STRUCT_TM
1375
1376 AC_CHECK_MEMBER([struct sockaddr_in.sin_len],
1377    [ AC_DEFINE(HAVE_SOCKADDR_IN_SIN_LEN, 1, [Do we have sockaddr_in.sin_len?])
1378    ],
1379    [],
1380    [
1381       #include <sys/types.h>
1382       #include <sys/socket.h>
1383       #include <netinet/in.h>
1384    ])
1385
1386 AC_CHECK_MEMBER([struct sockaddr_un.sun_len],
1387    [ AC_DEFINE(HAVE_SOCKADDR_UN_SUN_LEN, 1, [Do we have sockaddr_un.sun_len?])
1388    ],
1389    [],
1390    [
1391       #include <sys/types.h>
1392       #include <sys/socket.h>
1393       #include <sys/un.h>
1394    ])
1395
1396
1397
1398 # Checks for library functions.
1399 AC_FUNC_CLOSEDIR_VOID
1400 AC_FUNC_FORK
1401 AC_PROG_GCC_TRADITIONAL
1402 AC_FUNC_MEMCMP
1403 AC_FUNC_SELECT_ARGTYPES
1404 AC_FUNC_CHOWN
1405
1406 AC_TYPE_SIGNAL
1407 AC_FUNC_STAT
1408 AC_FUNC_STRFTIME
1409 AC_FUNC_VPRINTF
1410 AC_HEADER_SYS_WAIT
1411 AC_TYPE_OFF_T
1412 AC_TYPE_UID_T
1413 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 wait4])
1414
1415 # restore LIBS
1416 LIBS=$SAVE_LIBS
1417
1418 GN_INTLINCL=""
1419 GN_LIBINTL="$LTLIBINTL"
1420 AC_ARG_ENABLE(framework, [  --enable-framework      enable Mac OS X framework build helpers],enable_framework_build=$enableval)
1421 AM_CONDITIONAL(WANT_FRAMEWORK, test x$enable_framework_build = xyes)
1422 if test x$enable_framework_build = xyes
1423 then
1424   AC_DEFINE([FRAMEWORK_BUILD], 1, [Build a Mac OS X Framework])
1425   GN_INTLINCL='-I$(top_srcdir)/src/intlemu'
1426   GN_LIBINTL='$(top_builddir)/src/intlemu/libintlemu.la -framework CoreFoundation'
1427   AC_LIB_APPENDTOVAR([CPPFLAGS], [$GN_INTLINCL])
1428 fi
1429
1430 GN_LIB_LDFLAGS="-export-dynamic -no-undefined"
1431 GN_PLUGIN_LDFLAGS="-export-dynamic -avoid-version -module -no-undefined"
1432
1433 AC_SUBST(GN_LIB_LDFLAGS)
1434 AC_SUBST(GN_PLUGIN_LDFLAGS)
1435 AC_SUBST(GN_INTLINCL)
1436 AC_SUBST(GN_LIBINTL)
1437
1438 AC_SUBST(CPPFLAGS)
1439 AC_SUBST(LIBS)
1440 AC_SUBST(LDFLAGS)
1441 AC_SUBST(EXT_LIB_PATH)
1442 AC_SUBST(EXT_LIBS)
1443
1444 AC_SUBST(LIBPREFIX)
1445 AC_SUBST(DLLDIR)
1446 AC_SUBST(EXT_LIB_PATH)
1447
1448 DATAROOTDIR=$datarootdir
1449 AC_SUBST(DATAROOTDIR)
1450
1451 # test for sudo
1452 # TODO: do we need to change anything for "doas" on openbsd?
1453 AC_MSG_CHECKING(for sudo)
1454 AC_ARG_WITH(sudo,
1455   [  --with-sudo=PATH       path to sudo binary (or just yes)],
1456   [AC_MSG_RESULT("$with_sudo")
1457    case $with_sudo in
1458    no)
1459      SUDO_BINARY=
1460      ;;
1461    yes)
1462      SUDO_BINARY=sudo
1463      ;;
1464    *)
1465      SUDO_BINARY=$with_sudo
1466     ;;
1467    esac
1468   ],
1469   [AC_MSG_RESULT([no])])
1470 AC_SUBST(SUDO_BINARY)
1471 AM_CONDITIONAL([HAVE_SUDO], [test "x$SUDO_BINARY" != "x" -o -w /])
1472
1473
1474 # test for gnunetdns group name
1475 GNUNETDNS_GROUP=gnunetdns
1476 AC_MSG_CHECKING(for gnunetdns group name)
1477 AC_ARG_WITH(gnunetdns,
1478   [  --with-gnunetdns=GRPNAME       name for gnunetdns group],
1479   [AC_MSG_RESULT("$with_gnunetdns")
1480    case $with_gnunetdns in
1481    no)
1482      GNUNETDNS_GROUP=gnunet
1483      ;;
1484    yes)
1485      GNUNETDNS_GROUP=gnunetdns
1486      ;;
1487    *)
1488      GNUNETDNS_GROUP=$with_gnunetdns
1489     ;;
1490    esac
1491   ],
1492   [AC_MSG_RESULT([gnunetdns])])
1493 AC_SUBST(GNUNETDNS_GROUP)
1494
1495
1496
1497 # gnutls
1498 gnutls=0
1499 gnutls_dane=0
1500 AC_MSG_CHECKING(for gnutls)
1501 AC_ARG_WITH(gnutls,
1502    [  --with-gnutls=PFX   base of gnutls installation],
1503    [AC_MSG_RESULT([$with_gnutls])
1504     case $with_gnutls in
1505       no)
1506         ;;
1507       yes)
1508         AC_CHECK_HEADERS([gnutls/abstract.h],
1509             AC_CHECK_LIB([gnutls], [gnutls_priority_set],
1510              gnutls=true))
1511         AC_CHECK_HEADERS([gnutls/dane.h],
1512             AC_CHECK_LIB([gnutls-dane], [dane_verify_crt_raw],
1513               gnutls_dane=1))
1514         ;;
1515       *)
1516         LDFLAGS="-L$with_gnutls/lib $LDFLAGS"
1517         CPPFLAGS="-I$with_gnutls/include $CPPFLAGS"
1518         AC_CHECK_HEADERS([gnutls/abstract.h],
1519             AC_CHECK_LIB([gnutls], [gnutls_priority_set],
1520               EXT_LIB_PATH="-L$with_gnutls/lib $EXT_LIB_PATH"
1521               gnutls=true))
1522         AC_CHECK_HEADERS([gnutls/dane.h],
1523             AC_CHECK_LIB([gnutls-dane], [dane_verify_crt_raw],
1524               gnutls_dane=1))
1525         ;;
1526     esac
1527    ],
1528    [AC_MSG_RESULT([--with-gnutls not specified])
1529     AC_CHECK_HEADERS([gnutls/abstract.h],
1530         AC_CHECK_LIB([gnutls], [gnutls_priority_set],
1531           gnutls=true))
1532     AC_CHECK_HEADERS([gnutls/dane.h],
1533         AC_CHECK_LIB([gnutls-dane], [dane_verify_crt_raw],
1534                      gnutls_dane=1))
1535    ])
1536 AM_CONDITIONAL(HAVE_GNUTLS, test x$gnutls = xtrue)
1537 AC_DEFINE_UNQUOTED([HAVE_GNUTLS], $gnutls, [We have GnuTLS])
1538 AM_CONDITIONAL(HAVE_GNUTLS_DANE, test x$gnutls_dane = x1)
1539 AC_DEFINE_UNQUOTED([HAVE_GNUTLS_DANE], $gnutls_dane, [We have GnuTLS with DANE support])
1540
1541
1542
1543 # Test if we are building for superMUC
1544 AC_MSG_CHECKING(if GNUnet is being configured to run on the SuperMUC)
1545 AC_ARG_ENABLE([supermuc],
1546     [AS_HELP_STRING([--enable-supermuc],
1547        [build GNUnet with support to run on the SuperMUC (default is NO)])],
1548     [if test "x$enable_supermuc" = "xno"
1549      then
1550        supermuc=0
1551      else
1552        supermuc=1
1553      fi],
1554     [supermuc=0
1555      enable_supermuc=no])
1556 AC_MSG_RESULT($enable_SUPERMUC)
1557 AM_CONDITIONAL([ENABLE_SUPERMUC], [test "x$supermuc" = "x1"])
1558 AC_DEFINE_UNQUOTED([ENABLE_SUPERMUC], [$supermuc], [Build with support for SuperMUC])
1559
1560 # Check if NSE has to send timestamp information to testbed logger for
1561 # generating histogram of messages received
1562 AC_MSG_CHECKING(if NSE has to send timestamp information to testbed logger)
1563 AC_ARG_ENABLE([nse-histogram],
1564     [AS_HELP_STRING([--enable-nse-histogram],
1565        [have NSE send timestamp information to testbed logger for generating
1566        histogram of received messages.  NOT useful for production (default is
1567        NO)])],
1568     [if test "x$enableval" = "xno"
1569      then
1570        nse_histogram=0
1571      else
1572        nse_histogram=1
1573      fi],
1574     [nse_histogram=0
1575      enable_nse_histogram=no])
1576 AC_MSG_RESULT($enable_nse_histogram)
1577 AM_CONDITIONAL([ENABLE_NSE_HISTOGRAM], [test "x$nse_histogram" = "x1"])
1578 AC_DEFINE_UNQUOTED([ENABLE_NSE_HISTOGRAM], [$nse_histogram],
1579                    [have NSE send timestamp information to testbed logger])
1580
1581 # should 'make check' run tests?
1582 AC_MSG_CHECKING(whether to run tests)
1583 AC_ARG_ENABLE([testruns],
1584    [AS_HELP_STRING([--disable-testruns], [disable running tests on make check (default is YES)])],
1585    [enable_tests_run=${enableval}],
1586    [enable_tests_run=yes])
1587 AC_MSG_RESULT($enable_test_run)
1588 AM_CONDITIONAL([ENABLE_TEST_RUN], [test "x$enable_tests_run" = "xyes"])
1589
1590
1591 AC_MSG_CHECKING([whether to compile in benchmarks (currently for http and crypto)])
1592 AC_ARG_ENABLE([benchmark],
1593    [AS_HELP_STRING([--enable-benchmark], [enable benchmarking])],
1594    [enable_benchmark=${enableval}],
1595    [enable_benchmark=no])
1596 AC_MSG_RESULT($enable_benchmark)
1597 AS_IF([test "x$enable_benchmark" = "xyes"],
1598       [AC_DEFINE_UNQUOTED(ENABLE_BENCHMARK,1,[Benchmarks are enabled])])
1599 AM_CONDITIONAL([ENABLE_BENCHMARK], [test "x$enable_benchmark" = "xyes"])
1600
1601
1602 # should expensive tests be run?
1603 AC_MSG_CHECKING(whether to run expensive tests)
1604 AC_ARG_ENABLE([expensivetests],
1605    [AS_HELP_STRING([--enable-expensivetests], [enable running expensive testcases])],
1606    [enable_expensive=${enableval}],
1607    [enable_expensive=no])
1608 AC_MSG_RESULT($enable_expensive)
1609 AM_CONDITIONAL([HAVE_EXPENSIVE_TESTS], [test "x$enable_expensive" = "xyes"])
1610
1611 # should ports be open for Java services?
1612 AC_MSG_CHECKING(whether to enable ports for gnunet-java)
1613 AC_ARG_ENABLE([javaports],
1614    [AS_HELP_STRING([--enable-javaports], [use non-zero ports for services with Java bindings (default is NO)])],
1615    [enable_java_ports=${enableval}],
1616    [enable_java_ports=no])
1617 AC_MSG_RESULT($enable_java_ports)
1618 if test "x$enable_java_ports" = "xyes"
1619 then
1620   JAVAPORT=""
1621 else
1622   JAVAPORT="$UNIXONLY"
1623 fi
1624 AC_SUBST(JAVAPORT)
1625
1626 # should benchmarks be run?
1627 AC_MSG_CHECKING(whether to run benchmarks during make check)
1628 AC_ARG_ENABLE([benchmarks],
1629    [AS_HELP_STRING([--enable-benchmarks], [enable running benchmarks during make check])],
1630    [enable_benchmarks=${enableval}],
1631    [enable_benchmarks=no])
1632 AC_MSG_RESULT($enable_benchmarks)
1633 AM_CONDITIONAL([HAVE_BENCHMARKS], [test "x$enable_benchmarks" = "xyes"])
1634
1635 # should gnunet-testing be compiled
1636 AC_MSG_CHECKING(wether to compile gnunet-testing)
1637 AC_ARG_ENABLE([testing],
1638    [AS_HELP_STRING([--disable-testing], [do not build gnunet-testing])],
1639    [enable_testing=${enableval}],
1640    [enable_testing=yes])
1641 AC_MSG_RESULT($enable_testing)
1642 AM_CONDITIONAL([HAVE_TESTING], [test "x$enable_testing" = "xyes"])
1643
1644 # should experimental code be compiled (code that may not yet compile)?
1645 AC_MSG_CHECKING(whether to compile experimental code)
1646 AC_ARG_ENABLE([experimental],
1647    [AS_HELP_STRING([--enable-experimental], [enable compiling experimental code])],
1648    [enable_experimental=${enableval}],
1649    [enable_experimental=no])
1650 AC_MSG_RESULT($enable_experimental)
1651 AM_CONDITIONAL([HAVE_EXPERIMENTAL], [test "x$enable_experimental" = "xyes"])
1652
1653 # should malicious code be compiled (should only be used for testing)?
1654 AC_MSG_CHECKING(whether to compile malicious code)
1655 AC_ARG_ENABLE([malicious],
1656    [AS_HELP_STRING([--enable-malicious], [enable compiling malicious code])],
1657    [if test "x$enableval" = "xno"
1658      then
1659        malicious=0
1660      else
1661        malicious=1
1662      fi],
1663    [malicious=0
1664     enable_malicious=no])
1665 AC_MSG_RESULT($enable_malicious)
1666 AM_CONDITIONAL([ENABLE_MALICIOUS], [test 1=$malicious])
1667 AC_DEFINE_UNQUOTED([ENABLE_MALICIOUS], [$malicious],
1668                    [enable compilation of malicious code])
1669
1670 # should services be started on demand when needed?  Some services may choose to
1671 # never start by default and it is up to the service/module developer to decide
1672 # by having "START_ON_DEMAND = NO" instead of "START_ON_DEMAND = @START_ON_DEMAND@"
1673 # in the service/module's conf.in file.
1674 # See also IMMEDIATE_START for an unconditional immediate start.
1675 START_ON_DEMAND="YES"
1676 AC_MSG_CHECKING(whether to start peer's services on demand by default)
1677 AC_ARG_ENABLE([autostart],
1678    [AS_HELP_STRING([--disable-autostart], [do not start peer's services by default])],
1679    [enable_autostart=${enableval}
1680     if test "x$enable_autostart" = "xno"
1681     then
1682         START_ON_DEMAND="NO"
1683     fi
1684    ],
1685    [enable_autostart=yes])
1686 AC_MSG_RESULT($enable_autostart)
1687 #AM_CONDITIONAL([HAVE_START_ON_DEMAND], [test "x$enable_autostart" = "xyes"])
1688 AC_SUBST(START_ON_DEMAND)
1689
1690 # should memory statistics be kept (very expensive CPU-wise!)
1691 AC_MSG_CHECKING(whether to create expensive statistics on memory use)
1692 AC_ARG_ENABLE([heapstats],
1693    [AS_HELP_STRING([--enable-heapstats], [enable expensive heap statistics])],
1694    [enable_heapstats=1],
1695    [enable_heapstats=0])
1696 AC_MSG_RESULT($enable_heapstats)
1697 AC_DEFINE_UNQUOTED([ENABLE_HEAP_STATISTICS],$enable_heapstats,[enable expensive heap statistics])
1698
1699 # should code be enabled that works around missing OS functionality on Windows?
1700 # used for test cases
1701 if test $build_target = "mingw"
1702 then
1703         workarounds=1
1704
1705 AC_LINK_IFELSE(
1706  [AC_LANG_PROGRAM(
1707   [#include <ws2tcpip.h>
1708   ],[
1709   int s = socket (0, 0, 0);])
1710  ],[
1711   AC_DEFINE_UNQUOTED([HAVE_SOCKET],1,[Define this if socket() is available])
1712  ],[
1713   AC_DEFINE_UNQUOTED([HAVE_SOCKET],0,[Define this if socket() is available])
1714  ])
1715
1716 AC_LINK_IFELSE(
1717  [AC_LANG_PROGRAM(
1718   [#include <ws2tcpip.h>
1719   ],[
1720   int s = select (0, NULL, NULL, NULL, NULL);])
1721  ],[
1722   AC_DEFINE_UNQUOTED([HAVE_SELECT],1,[Define this if select() is available])
1723  ],[
1724   AC_DEFINE_UNQUOTED([HAVE_SELECT],0,[Define this if select() is available])
1725  ])
1726
1727 AC_LINK_IFELSE(
1728  [AC_LANG_PROGRAM(
1729   [#include <ws2tcpip.h>
1730   ],[
1731   struct in_addr i;
1732   char *s = inet_ntoa (i);])
1733  ],[
1734   AC_DEFINE_UNQUOTED([HAVE_INET_NTOA],1,[Define this if inet_ntoa() is available])
1735  ],[
1736   AC_DEFINE_UNQUOTED([HAVE_INET_NTOA],0,[Define this if inet_ntoa() is available])
1737  ])
1738
1739 AC_LINK_IFELSE(
1740  [AC_LANG_PROGRAM(
1741   [#include <ws2tcpip.h>
1742   ],[
1743   int s = getnameinfo (NULL, 0, NULL, 0, NULL, 0, 0);])
1744  ],[
1745   AC_DEFINE_UNQUOTED([HAVE_GETNAMEINFO],1,[Define this if getnameinfo() is available])
1746  ],[
1747   AC_DEFINE_UNQUOTED([HAVE_GETNAMEINFO],0,[Define this if getnameinfo() is available])
1748  ])
1749
1750 AC_LINK_IFELSE(
1751  [AC_LANG_PROGRAM(
1752   [#include <ws2tcpip.h>
1753   ],[
1754   int s = gethostname (NULL, 0);])
1755  ],[
1756   AC_DEFINE_UNQUOTED([HAVE_GETHOSTNAME],1,[Define this if gethostname() is available])
1757  ],[
1758   AC_DEFINE_UNQUOTED([HAVE_GETHOSTNAME],0,[Define this if gethostname() is available])
1759  ])
1760
1761 AC_LINK_IFELSE(
1762  [AC_LANG_PROGRAM(
1763   [#include <ws2tcpip.h>
1764   ],[
1765   void *s = gethostbyname (NULL);])
1766  ],[
1767   AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYNAME],1,[Define this if gethostbyname() is available])
1768  ],[
1769   AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYNAME],0,[Define this if gethostbyname() is available])
1770  ])
1771
1772 AC_LINK_IFELSE(
1773  [AC_LANG_PROGRAM(
1774   [#include <ws2tcpip.h>
1775   ],[
1776   void *s = gethostbyaddr (NULL, 0, 0);])
1777  ],[
1778   AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYADDR],1,[Define this if gethostbyaddr() is available])
1779  ],[
1780   AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYADDR],0,[Define this if gethostbyaddr() is available])
1781  ])
1782
1783 AC_LINK_IFELSE(
1784  [AC_LANG_PROGRAM(
1785   [#include <ws2tcpip.h>
1786   ],[
1787   int s = getaddrinfo (NULL, NULL, NULL, NULL);])
1788  ],[
1789   AC_DEFINE_UNQUOTED([HAVE_GETADDRINFO],1,[Define this if getaddrinfo() is available])
1790  ],[
1791   AC_DEFINE_UNQUOTED([HAVE_GETADDRINFO],0,[Define this if getaddrinfo() is available])
1792  ])
1793
1794 else
1795   AC_MSG_CHECKING(whether to enable windows workarounds)
1796   AC_ARG_ENABLE([windows_workarounds],
1797      [AS_HELP_STRING([--enable-windows_workarounds], [enable workarounds used on Windows (only useful for test cases)])],
1798      [enable_workarounds=${enableval}],
1799      [enable_workarounds=no])
1800   AC_MSG_RESULT($enable_workarounds)
1801   if test x$enable_windows_workarounds = "xyes"
1802   then
1803      workarounds=1
1804   else
1805      workarounds=0
1806    fi
1807 fi
1808 AC_DEFINE_UNQUOTED([ENABLE_WINDOWS_WORKAROUNDS], $workarounds, [enable workarounds used on Windows (only useful for test cases)])
1809
1810 # gcov compilation
1811 AC_MSG_CHECKING(whether to compile with support for code coverage analysis)
1812 AC_ARG_ENABLE([coverage],
1813               AS_HELP_STRING([--enable-coverage],
1814                              [compile the library with code coverage support]),
1815               [use_gcov=${enableval}],
1816               [use_gcov=no])
1817 AC_MSG_RESULT($use_gcov)
1818 AM_CONDITIONAL([USE_COVERAGE], [test "x$use_gcov" = "xyes"])
1819
1820
1821 # version info
1822 # TODO: git blame says this predates our switch to git. git-svn should be adjusted to simply git, or
1823 # an external script that does the job.
1824 AC_PATH_PROG(svnversioncommand, svnversion)
1825 AC_PATH_PROG(gitcommand, git)
1826 AC_MSG_CHECKING(for source being under a VCS)
1827
1828
1829 # version info
1830 AC_PATH_PROG(gitcommand, git)
1831 AC_MSG_CHECKING(for source being under a VCS)
1832 git_version=
1833 AS_IF([test ! "X$gitcommand" = "X"],
1834 [
1835   git_version=$(cd $srcdir ; git rev-list --full-history --all --abbrev-commit | head -n 1 2>/dev/null)
1836 ])
1837 AS_IF([test "X$git_version" = "X"],
1838   [
1839     vcs_name="no"
1840     vcs_version="\"release\""
1841   ],
1842   [
1843     vcs_name="yes, git-svn"
1844     vcs_version="\"git-$git_version\""
1845   ])
1846 AC_MSG_RESULT($vcs_name)
1847
1848 AC_MSG_CHECKING(VCS version)
1849 AC_MSG_RESULT($vcs_version)
1850 AC_DEFINE_UNQUOTED(VCS_VERSION, [$vcs_version], [VCS revision/hash or tarball version])
1851
1852 AC_CONFIG_FILES([
1853 Makefile
1854 contrib/Makefile
1855 contrib/hellos/Makefile
1856 contrib/services/Makefile
1857 contrib/services/openrc/Makefile
1858 contrib/services/systemd/Makefile
1859 contrib/scripts/Makefile
1860 contrib/scripts/gnunet-logread/Makefile
1861 contrib/scripts/gnunet-download-manager/Makefile
1862 doc/Makefile
1863 doc/man/Makefile
1864 doc/doxygen/Makefile
1865 doc/handbook/Makefile
1866 doc/tutorial/Makefile
1867 lint/Makefile
1868 m4/Makefile
1869 po/Makefile.in
1870 src/Makefile
1871 src/arm/Makefile
1872 src/arm/arm.conf
1873 src/ats/Makefile
1874 src/ats/ats.conf
1875 src/ats-tool/Makefile
1876 src/ats-tests/Makefile
1877 src/auction/Makefile
1878 src/block/Makefile
1879 src/cadet/Makefile
1880 src/cadet/cadet.conf
1881 src/core/Makefile
1882 src/core/core.conf
1883 src/consensus/Makefile
1884 src/consensus/consensus.conf
1885 src/conversation/Makefile
1886 src/conversation/conversation.conf
1887 src/curl/Makefile
1888 src/datacache/Makefile
1889 src/datastore/Makefile
1890 src/datastore/datastore.conf
1891 src/dht/Makefile
1892 src/dht/dht.conf
1893 src/dns/Makefile
1894 src/dns/dns.conf
1895 src/exit/Makefile
1896 src/fragmentation/Makefile
1897 src/fs/Makefile
1898 src/fs/fs.conf
1899 src/gns/Makefile
1900 src/gns/gns.conf
1901 src/gns/nss/Makefile
1902 src/gnsrecord/Makefile
1903 src/hello/Makefile
1904 src/identity/Makefile
1905 src/identity/identity.conf
1906 src/credential/Makefile
1907 src/credential/credential.conf
1908 src/include/Makefile
1909 src/integration-tests/Makefile
1910 src/json/Makefile
1911 src/hostlist/Makefile
1912 src/my/Makefile
1913 src/mysql/Makefile
1914 src/namecache/Makefile
1915 src/namecache/namecache.conf
1916 src/namestore/Makefile
1917 src/namestore/namestore.conf
1918 src/nat/Makefile
1919 src/nat/nat.conf
1920 src/nat-auto/Makefile
1921 src/nat-auto/nat-auto.conf
1922 src/nse/Makefile
1923 src/nse/nse.conf
1924 src/nt/Makefile
1925 src/peerinfo/Makefile
1926 src/peerinfo/peerinfo.conf
1927 src/peerinfo-tool/Makefile
1928 src/peerstore/Makefile
1929 src/peerstore/peerstore.conf
1930 src/pq/Makefile
1931 src/pt/Makefile
1932 src/regex/Makefile
1933 src/regex/regex.conf
1934 src/revocation/Makefile
1935 src/revocation/revocation.conf
1936 src/rps/Makefile
1937 src/rps/rps.conf
1938 src/secretsharing/Makefile
1939 src/secretsharing/secretsharing.conf
1940 src/scalarproduct/Makefile
1941 src/scalarproduct/scalarproduct.conf
1942 src/set/Makefile
1943 src/set/set.conf
1944 src/sq/Makefile
1945 src/statistics/Makefile
1946 src/statistics/statistics.conf
1947 src/template/Makefile
1948 src/testbed/Makefile
1949 src/testbed/testbed.conf
1950 src/testbed-logger/Makefile
1951 src/testbed-logger/testbed-logger.conf
1952 src/testing/Makefile
1953 src/topology/Makefile
1954 src/transport/Makefile
1955 src/transport/transport.conf
1956 src/util/Makefile
1957 src/util/resolver.conf
1958 src/vpn/Makefile
1959 src/vpn/vpn.conf
1960 src/zonemaster/Makefile
1961 src/zonemaster/zonemaster.conf
1962 src/rest/Makefile
1963 src/abe/Makefile
1964 src/reclaim-attribute/Makefile
1965 src/reclaim/Makefile
1966 pkgconfig/Makefile
1967 pkgconfig/gnunetarm.pc
1968 pkgconfig/gnunetats.pc
1969 pkgconfig/gnunetblock.pc
1970 pkgconfig/gnunetcadet.pc
1971 pkgconfig/gnunetconsensus.pc
1972 pkgconfig/gnunetconversation.pc
1973 pkgconfig/gnunetcore.pc
1974 pkgconfig/gnunetdatacache.pc
1975 pkgconfig/gnunetdatastore.pc
1976 pkgconfig/gnunetdht.pc
1977 pkgconfig/gnunetdns.pc
1978 pkgconfig/gnunetenv.pc
1979 pkgconfig/gnunetfragmentation.pc
1980 pkgconfig/gnunetfs.pc
1981 pkgconfig/gnunetgns.pc
1982 pkgconfig/gnunethello.pc
1983 pkgconfig/gnunetidentity.pc
1984 pkgconfig/gnunetmicrophone.pc
1985 pkgconfig/gnunetmysql.pc
1986 pkgconfig/gnunetnamestore.pc
1987 pkgconfig/gnunetnat.pc
1988 pkgconfig/gnunetnse.pc
1989 pkgconfig/gnunetpeerinfo.pc
1990 pkgconfig/gnunetpq.pc
1991 pkgconfig/gnunetregex.pc
1992 pkgconfig/gnunetrevocation.pc
1993 pkgconfig/gnunetrps.pc
1994 pkgconfig/gnunetscalarproduct.pc
1995 pkgconfig/gnunetset.pc
1996 pkgconfig/gnunetspeaker.pc
1997 pkgconfig/gnunetstatistics.pc
1998 pkgconfig/gnunettestbed.pc
1999 pkgconfig/gnunettesting.pc
2000 pkgconfig/gnunettransport.pc
2001 pkgconfig/gnunetutil.pc
2002 pkgconfig/gnunetvpn.pc
2003 ])
2004 AC_OUTPUT
2005
2006 # Finally: summary!
2007
2008 # warn user if mysql found but not used due to version
2009 AS_IF([test "$mysqlfail" = "true"]
2010       [AC_MSG_NOTICE([WARNING: optional MySQL not found (or too old)])])
2011
2012 # sqlite
2013 AS_IF([test "x$sqlite" = "x0"],
2014       [AC_MSG_ERROR([ERROR: sqlite3 not found, but sqlite3 is required.])])
2015
2016 # libgnurl
2017 AS_IF([test "$gnurl" = "0"],
2018   [AS_IF([test "x$curl" = "xfalse"],
2019     [AC_MSG_NOTICE([WARNING: libgnurl not found.  http client support will not be compiled.])
2020      AC_MSG_WARN([ERROR: libgnurl not found.  hostlist daemon will not be compiled, and you probably WANT the hostlist daemon])],
2021     [AC_MSG_NOTICE([WARNING: libgnurl not found, trying to use libcurl-gnutls instead.])])])
2022
2023 # bluetooth
2024 AS_IF([test "x$bluetooth" = "x0"],
2025       [AC_MSG_NOTICE([WARNING: optional bluetooth library not found.])])
2026
2027
2028 # jansson
2029 AS_IF([test "x$jansson" = "x0"],
2030       [AC_MSG_NOTICE([WARNING: optional jansson library not found.])])
2031
2032 #
2033 # FIXME: `some modules' -> be more specific which exact modules.
2034 #
2035
2036 # warn user if iptables is not found
2037 AS_IF([test "$VAR_IPTABLES_BINARY" = "false"],
2038  [AC_MSG_NOTICE([WARNING: optional iptables not found])])
2039
2040 # warn user if ifconfig is not found
2041 AS_IF([test "$VAR_IFCONFIG_BINARY" = "false"],
2042  [AC_MSG_NOTICE([WARNING: optional ifconfig not found])])
2043
2044 # warn user if upnpc binary is not found
2045 AS_IF([test "$VAR_UPNPC_BINARY" = "false"],
2046   [AC_MSG_NOTICE([WARNING: optional upnpc binary not found])])
2047
2048 #gnutls
2049 AS_IF([test x$gnutls != xtrue],
2050  [AC_MSG_NOTICE([WARNING: GnuTLS not found, gnunet-gns-proxy will not be built])],
2051  [AS_IF([test "x$gnutls_dane" != "x1"],
2052   [AC_MSG_NOTICE([WARNING: GnuTLS has no DANE support, DANE validation will not be possible])])])
2053
2054 # warn user if libzbar is not found
2055 AS_IF([test "$have_zbar" = 0],
2056       [AC_MSG_NOTICE([WARNING: zbar not found, gnunet-qr will not be built.])])
2057
2058 # java ports
2059 AS_IF([test "x$enable_java_ports" = "xyes"],
2060       [AC_MSG_NOTICE([NOTICE: Opening ports for gnunet-java bindings by default.])])
2061
2062 # MHD
2063 AS_IF([test "x$lmhd" != "x1"],
2064       [AC_MSG_NOTICE([WARNING: optional libmicrohttpd not found])])
2065
2066 # conversation
2067 AS_IF([test "x$conversation_backend" = "xnone"],
2068  [AS_IF([test "x$pulse" != "x1"],
2069    [AC_MSG_NOTICE([WARNING: libpulse(audio) not found, conversation will not be built.])])
2070   AS_IF([test "x$opus" != "x1"],
2071    [AC_MSG_NOTICE([WARNING: libopus not found, conversation will not be built.])])
2072   AS_IF([test "x$gst" != "x1"],
2073    [AC_MSG_NOTICE([WARNING: GStreamer not found, conversation will not be built.])])])
2074
2075 AS_IF([test "$extractor" != 1],
2076       [AC_MSG_WARN([ERROR: libextractor not found, but various file-sharing functions require it])])
2077
2078 AS_IF([test "x$working_libidn2" = x1],
2079       [AC_MSG_NOTICE([INFO: Using libidn2])])
2080 AS_IF([test "x$working_libidn1" = x1],
2081       [AC_MSG_NOTICE([INFO: Using libidn1])])
2082
2083 AC_MSG_NOTICE([NOTICE: Database support is set to MySQL: $mysql, SQLite: $sqlite, Postgres: $postgres])
2084
2085 AS_IF([test "$enable_framework_build" = "yes"],
2086       [AC_MSG_NOTICE([Mac OS X framework build enabled.])])
2087
2088 AC_MSG_NOTICE([********************************************
2089 Please make sure NOW that you have created a user and group 'gnunet'
2090 and additionally a group 'gnunetdns'. On Debian and Ubuntu GNU/Linux, type:
2091         addgroup gnunetdns
2092         adduser --system --group --disabled-login --home /var/lib/gnunet gnunet
2093
2094 Make sure that '/var/lib/gnunet' is owned (and writable) by user
2095 'gnunet'.  Then, you can compile GNUnet with
2096         make
2097
2098 After that, run (if necessary as 'root')
2099         make install
2100 to install everything.
2101
2102 Each GNUnet user should be added to the 'gnunet' group (may
2103 require fresh login to come into effect):
2104         adduser USERNAME gnunet
2105 (run the above command as root once for each of your users, replacing
2106 "USERNAME" with the respective login names).  If you have a global IP
2107 address, no further configuration is required.
2108
2109 For more detailed setup instructions, see https://docs.gnunet.org/
2110
2111 Optionally, download and compile gnunet-gtk to get a GUI for
2112 file-sharing and configuration.  This is particularly recommended
2113 if your network setup is non-trivial, as gnunet-setup can be
2114 used to test in the GUI if your network configuration is working.
2115 gnunet-setup should be run as the "gnunet" user under X.  As it
2116 does very little with the network, running it as "root" is likely
2117 also harmless.  You can also run it as a normal user, but then
2118 you have to copy ~/.gnunet/gnunet.conf" over to the "gnunet" user's
2119 home directory in the end.
2120
2121 Once you have configured your peer, run (as the 'gnunet' user)
2122         gnunet-arm -s
2123 to start the peer.  You can then run the various GNUnet-tools as
2124 your "normal" user (who should only be in the group 'gnunet').
2125 ********************************************])