1 # This file is part of GNUnet.
2 # (C) 2001--2019 GNUnet e.V.
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.
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.
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/>.
17 # SPDX-License-Identifier: AGPL3.0-or-later
19 # Process this file with autoconf to produce a configure script.
23 # Checks for programs.
24 AC_INIT([gnunet], [0.11.4], [bug-gnunet@gnu.org])
25 AC_CONFIG_AUX_DIR([build-aux])
27 # check for legacy option that is no longer supported (#5627) and fail hard
29 [ --with-nssdir=DIR legacy switch, no longer supported, do not use],
30 [AC_MSG_RESULT([$with_nssdir])
31 AS_CASE([$with_nssdir],
33 [AC_MSG_ERROR([--with-nssdir is no longer supported])])
40 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
41 AC_CONFIG_HEADERS([gnunet_config.h])
42 AH_TOP([#define _GNU_SOURCE 1])
43 AC_CONFIG_MACRO_DIR([m4])
53 LT_INIT([disable-static dlopen win32-dll])
61 CFLAGS="-Wall $CFLAGS"
62 # use '-fno-strict-aliasing', but only if the compiler can take it
63 AS_IF([gcc -fno-strict-aliasing -S -o /dev/null -xc /dev/null >/dev/null 2>&1],
64 [CFLAGS="-fno-strict-aliasing $CFLAGS"])
66 # Use Linux interface name unless the OS has a different preference
67 DEFAULT_INTERFACE="\"eth0\""
69 funcstocheck="getnameinfo gethostname gethostbyname gethostbyaddr getaddrinfo getaddrinfo_a"
71 # Srcdir in a form that native compiler understands (i.e. DOS path on W32)
74 OLD_LDFLAGS="$LDFLAGS"
75 LDFLAGS="$LDFLAGS -Wl,--unresolved-symbols=report-all"
79 *darwin* | *rhapsody* | *macosx*)
80 AC_DEFINE_UNQUOTED(DARWIN,1,[This is an Apple Darwin system])
81 CPPFLAGS="-D_APPLE_C_SOURCE $CPPFLAGS"
82 CFLAGS="-fno-common $CFLAGS"
83 LDFLAGS="$OLD_LDFLAGS"
84 AC_MSG_WARN([WARNING: The VPN application cannot be compiled on your OS])
85 AC_CHECK_LIB(intl, gettext)
87 DEFAULT_INTERFACE="\"en0\""
93 AC_DEFINE_UNQUOTED(LINUX,1,[This is a Linux kernel])
101 AC_DEFINE_UNQUOTED(SOMEBSD,1,[This is a BSD system])
102 AC_DEFINE_UNQUOTED(FREEBSD,1,[This is a FreeBSD system])
103 CFLAGS="-D_THREAD_SAFE $CFLAGS"
104 build_target="freebsd"
110 AC_DEFINE_UNQUOTED(SOMEBSD,1,[This is a BSD system])
111 AC_DEFINE_UNQUOTED(OPENBSD,1,[This is an OpenBSD system])
112 LIBS=`echo $LIBS | sed -e "s/-ldl//"`
113 build_target="openbsd"
119 AC_DEFINE_UNQUOTED(SOMEBSD,1,[This is a BSD system])
120 AC_DEFINE_UNQUOTED(NETBSD,1,[This is a NetBSD system])
126 AC_DEFINE_UNQUOTED(SOLARIS,1,[This is a Solaris system])
127 AC_DEFINE_UNQUOTED(_REENTRANT,1,[Need with solaris or errno doesnt work])
128 AC_CHECK_LIB(resolv, res_init)
129 AC_CHECK_LIB(rt, nanosleep)
130 build_target="solaris"
136 AC_DEFINE_UNQUOTED(LINUX,1,[This is a Linux kernel])
137 CFLAGS="-D_REENTRANT -fPIC -pipe $CFLAGS"
144 AC_DEFINE_UNQUOTED(CYGWIN,1,[This is a Cygwin system])
145 AC_DEFINE_UNQUOTED(WINDOWS,1,[This is a Windows system])
146 AC_CHECK_LIB(intl, gettext)
147 CFLAGS="-mms-bitfields $CFLAGS"
148 build_target="cygwin"
155 AC_DEFINE_UNQUOTED(MINGW,1,[This is a MinGW system])
156 AC_DEFINE_UNQUOTED(WINDOWS,1,[This is a Windows system])
157 AC_DEFINE_UNQUOTED(_WIN32,1,[This is a Windows system])
158 AC_CHECK_LIB(intl, gettext)
159 LDFLAGS="$LDFLAGS -Wl,--export-all-symbols"
160 LIBS="$LIBS -lws2_32 -lplibc -lgnurx -lole32"
161 CFLAGS="-mms-bitfields $CFLAGS"
162 CPPFLAGS="-D_WIN32_WINNT=0x0501 -DHAVE_STAT64=1 -D__USE_MINGW_ANSI_STDIO=1 $CPPFLAGS"
169 native_srcdir=$(cd $srcdir; pwd -W)
172 AC_DEFINE_UNQUOTED(GNU,1,[This is a GNU system])
177 AC_MSG_RESULT(Unrecognised OS $host_os)
178 AC_DEFINE_UNQUOTED(OTHEROS,1,[Some strange OS])
182 AC_DEFINE_UNQUOTED([GNUNET_DEFAULT_INTERFACE], $DEFAULT_INTERFACE, [This should be the default choice for the name of the first network interface])
183 AC_SUBST(DEFAULT_INTERFACE)
185 # Disable TCP-based IPC on systems that support UNIX domain
186 # sockets in default configuratin:
190 AC_MSG_CHECKING([for build target])
191 AM_CONDITIONAL(DARWIN, test "$build_target" = "darwin")
192 AM_CONDITIONAL(CYGWIN, test "$build_target" = "cygwin")
193 AM_CONDITIONAL(MINGW, test "$build_target" = "mingw")
194 AM_CONDITIONAL(SOLARIS, test "$build_target" = "solaris")
195 AM_CONDITIONAL(XFREEBSD, test "$build_target" = "freebsd")
196 AM_CONDITIONAL(OPENBSD, test "$build_target" = "openbsd")
197 AM_CONDITIONAL(LINUX, test "$build_target" = "linux")
198 AM_CONDITIONAL(GNU, test "$build_target" = "gnu")
200 AC_MSG_RESULT([$build_target])
201 AC_SUBST(build_target)
202 AM_CONDITIONAL([am__fastdepOBJC], false)
203 AC_UNALIGNED_64_ACCESS
205 # some other checks for standard libs
206 AC_SEARCH_LIBS([gethostbyname], [nsl ws2_32])
207 AC_SEARCH_LIBS([memrchr], [],
208 AC_DEFINE(HAVE_MEMRCHR,1,[memrchr supported]), [])
209 AC_SEARCH_LIBS([memset_s], [],
210 AC_DEFINE(HAVE_MEMSET_S,1,[memset_s supported]), [])
211 AC_SEARCH_LIBS([memset_s], [],
212 AC_DEFINE(HAVE_EXPLICIT_BZERO,1,[explicit_bzero supported]), [])
213 AC_CHECK_LIB(socket, socket)
215 AC_CHECK_LIB(c, getloadavg, AC_DEFINE(HAVE_GETLOADAVG,1,[getloadavg supported]))
217 AC_CHECK_PROG(VAR_GETOPT_BINARY, getopt, true, false)
218 AM_CONDITIONAL(HAVE_GETOPT_BINARY, $VAR_GETOPT_BINARY)
220 AC_CHECK_PROG(VAR_SSH_BINARY, ssh, true, false)
221 AM_CONDITIONAL(HAVE_SSH_BINARY, $VAR_SSH_BINARY)
222 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)
223 rm -f /tmp/gnunet_test_cosks_ssh_garbage
225 # autotools' m4 for python has no maximum version!
226 # python3.4 - python3.7 for tests
227 m4_define_default([_AM_PYTHON_INTERPRETER_LIST],[python3 python3.4 python3.5 python3.6 python3.7 python])
228 AM_PATH_PYTHON([3.4],, [:])
230 AM_CONDITIONAL([HAVE_PYTHON], [test "$PYTHON" != :])
233 AC_PATH_PROG( PERL, perl, ,
234 $PATH:/usr/local/bin/perl:/usr/bin/:/usr/local/bin )
237 # iptables is a soft requirement to run tests
238 AC_PATH_TARGET_TOOL(VAR_IPTABLES_BINARY, iptables, false)
240 AS_IF([test x"$VAR_IPTABLES_BINARY" = x"false"],
241 [AS_IF([test -x "/sbin/iptables"],
242 [VAR_IPTABLES_BINARY="/sbin/iptables"],
243 [AS_IF([test -x "/usr/sbin/iptables"],
244 [VAR_IPTABLES_BINARY="/usr/sbin/iptables"])])])
246 AS_IF([test x"$VAR_IPTABLES_BINARY" != x"false"],
247 [AC_DEFINE_UNQUOTED([IPTABLES], "$VAR_IPTABLES_BINARY", [Path to iptables])],
248 [AC_MSG_WARN([warning: 'iptables' not found.])])
250 # ip6tables is a soft requirement for some features
251 AC_PATH_TARGET_TOOL(VAR_IP6TABLES_BINARY, ip6tables, false)
253 AS_IF([test x"$VAR_IP6TABLES_BINARY" = x"false"],
254 [AS_IF([test -x "/sbin/ip6tables"],
255 [VAR_IP6TABLES_BINARY="/sbin/ip6tables"],
256 [AS_IF([test -x "/usr/sbin/ip6tables"],
257 [VAR_IP6TABLES_BINARY="/usr/sbin/ip6tables"])])])
260 AS_IF([test x"$VAR_IP6TABLES_BINARY" != x"false"],
261 [AC_DEFINE_UNQUOTED([IP6TABLES], "$VAR_IP6TABLES_BINARY", [Path to ip6tables])],
262 [AC_MSG_WARN([warning: 'ip6tables' not found.])])
264 # ip is a soft requirement for some features
265 AC_PATH_TARGET_TOOL(VAR_IP_BINARY, ip, false)
267 AS_IF([test x"$VAR_IP_BINARY" = x"false"],
268 [AS_IF([test -x "/sbin/ip"],
269 [VAR_IP_BINARY="/sbin/ip"],
270 [AS_IF([test -x "/usr/sbin/ip"],
271 [VAR_IP_BINARY="/usr/sbin/ip"])])])
273 AS_IF([test x"$VAR_IP_BINARY" != x"false"],
274 [AC_DEFINE_UNQUOTED([PATH_TO_IP], "$VAR_IP_BINARY", [Path to ip])],
275 [AC_MSG_WARN([warning: 'ip' not found.])])
278 AC_PATH_TARGET_TOOL(VAR_IFCONFIG_BINARY, ifconfig, false)
280 AC_CHECK_PROG(VAR_IFCONFIG_BINARY, ifconfig, true, false)
281 AS_IF([test x"$VAR_IFCONFIG_BINARY" = x"false"],
282 [AS_IF([test -x "/sbin/ifconfig"],
283 [VAR_IFCONFIG_BINARY="/sbin/ifconfig"],
284 [AS_IF([test -x "/usr/sbin/ifconfig"],
285 [VAR_IFCONFIG_BINARY="/usr/sbin/ifconfig"])])])
287 AS_IF([test x"$VAR_IFCONFIG_BINARY" != x"false"],
288 [AC_DEFINE_UNQUOTED([IFCONFIG], "$VAR_IFCONFIG_BINARY", [Path to ifconfig])],
289 [AC_MSG_WARN(['ifconfig' not found.])])
292 AC_PATH_TARGET_TOOL(VAR_SYSCTL_BINARY, sysctl, false)
294 AC_CHECK_PROG(VAR_SYSCTL_BINARY, sysctl, true, false)
295 AS_IF([test x"$VAR_SYSCTL_BINARY" = x"false"],
296 [AS_IF([test -x "/sbin/sysctl"],
297 [VAR_SYSCTL_BINARY="/sbin/sysctl"],
298 [AS_IF([test -x "/usr/sbin/sysctl"],
299 [VAR_SYSCTL_BINARY="/usr/sbin/sysctl"])])])
300 AS_IF([test x"$VAR_SYSCTL_BINARY" != x"false"],
301 [AC_DEFINE_UNQUOTED([SYSCTL], "$VAR_SYSCTL_BINARY", [Path to sysctl])],
302 [AC_MSG_WARN(['sysctl' not found.])])
304 # miniupnpc / upnpc binary is a soft runtime requirement
305 AC_PATH_TARGET_TOOL(VAR_UPNPC_BINARY, upnpc, false)
307 AS_IF([test x"$VAR_UPNPC_BINARY" != x"false"],
308 [AC_DEFINE_UNQUOTED([UPNPC], "$VAR_UPNPC_BINARY", [Path to upnpc binary])],
309 [AC_MSG_WARN([warning: 'upnpc' binary not found.])])
311 AC_CHECK_MEMBER(struct tm.tm_gmtoff,
312 [AC_DEFINE(HAVE_TM_GMTOFF, 1,
313 [Define if struct tm has the tm_gmtoff member.])],
317 AC_CHECK_DECLS([_stati64])
319 # 'save' libs; only those libs found so far will be
320 # linked against _everywhere_. For the others, we
321 # will be more selective!
325 AC_CHECK_LIB(anl, getaddrinfo_a, [have_addrinfo_a=1 AC_DEFINE(HAVE_GETADDRINFO_A,1,[getaddrinfo_a supported])])
326 AM_CONDITIONAL(HAVE_GETADDRINFO_A, [test "$have_addrinfo_a" = 1])
329 # tests only run on Windows
330 AS_IF([test "x$build_target" = "xmingw"],
331 [AC_CHECK_LIB(plibc, plibc_init, [], [AC_MSG_ERROR([GNUnet requires PlibC on Windows])])
332 AC_CHECK_LIB(gnurx, regexec, [], [AC_MSG_ERROR([GNUnet requires libgnurx on Windows])])])
337 NEED_LIBGCRYPT_VERSION=1.6.0
340 AM_PATH_LIBGCRYPT("$NEED_LIBGCRYPT_API:$NEED_LIBGCRYPT_VERSION", gcrypt=1)
341 AC_CHECK_DECLS([gcry_mpi_set_opaque_copy], [], [], [[#include <gcrypt.h>]])
343 AS_IF([test $gcrypt = 0],
347 *** You need libgcrypt to build this program.
348 ** This library is for example available at
349 *** ftp://ftp.gnupg.org/gcrypt/libgcrypt/
350 *** (at least version $NEED_LIBGCRYPT_VERSION (API $NEED_LIBGCRYPT_API)
354 AC_DEFINE_UNQUOTED([NEED_LIBGCRYPT_VERSION], "$NEED_LIBGCRYPT_VERSION", [required libgcrypt version])
356 AC_CHECK_DECLS([struct in6_ifreq], [], [], [[#include <linux/if_tun.h>]])
360 # should the build process be building the documentation?
361 AC_MSG_CHECKING(whether to build documentation)
362 AC_ARG_ENABLE([documentation],
363 [AS_HELP_STRING([--disable-documentation], [do not build the documentation])],
364 [documentation=${enableval}],
366 AC_MSG_RESULT($documentation)
367 AS_IF([test "x$documentation" = "xyes"],
369 AM_CONDITIONAL([DOCUMENTATION],true)
370 AC_DEFINE([DOCUMENTATION],[1],[Building the documentation])
372 AM_CONDITIONAL([DOCUMENTATION],false)
373 AC_DEFINE([DOCUMENTATION],[0],[Not building the documentation])
376 # FIXME: Something is wrong about this in the output of ./configure runs
377 AC_MSG_CHECKING(wether to include generated texi2mdoc output in installation)
378 AC_ARG_ENABLE([texi2mdoc-generation],
379 [AS_HELP_STRING([--enable-texi2mdoc-generation], [include generated texi2mdoc output in installation])],
380 [texi2mdoc_generation=${enableval}],
381 [texi2mdoc_generation=no])
382 AC_MSG_RESULT($texi2mdoc_generation)
383 if test "x$texi2mdoc_generation" = "xyes"
385 if test "$texi2mdoc" = 0
387 AC_MSG_WARN([ERROR: mdoc output currently requires texi2mdoc.])
388 AC_MSG_WARN([ERROR: texi2mdoc can be obtained via your Operating System])
389 AC_MSG_WARN([ERROR: package manager or from https://mandoc.bsd.lv/texi2mdoc/])
391 AM_CONDITIONAL([TEXI2MDOC_GENERATION],true)
392 AC_DEFINE([TEXI2MDOC_GENERATION],[1],[Building section 7 mdoc output])
395 AM_CONDITIONAL([TEXI2MDOC_GENERATION],false)
396 AC_DEFINE([TEXI2MDOC_GENERATION],[0],[Not building section 7 mdoc output])
399 # should the build process be building only the documentation?
400 AC_MSG_CHECKING(whether to build only documentation)
401 AC_ARG_ENABLE([documentation-only],
402 [AS_HELP_STRING([--enable-documentation-only], [build only the documentation])],
403 [documentation_only=${enableval}],
404 [documentation_only=no])
405 AC_MSG_RESULT($documentation_only)
406 AS_IF([test "x$documentation_only" = "xyes"],
408 AM_CONDITIONAL([DOCUMENTATION_ONLY],true)
409 AC_DEFINE([DOCUMENTATION_ONLY],[1],[Building only the documentation])
411 AM_CONDITIONAL([DOCUMENTATION_ONLY],false)
412 AC_DEFINE([DOCUMENTATION_ONLY],[0],[Not building only the documentation])
415 # should the build process be including the manpages? (default: yes)
416 AC_MSG_CHECKING(whether to include man pages)
417 AC_ARG_ENABLE([include-manpages],
418 [AS_HELP_STRING([--disable-include-manpages], [Do not include the man pages in build and installation])],
419 [include_manpages=${enableval}],
420 [include_manpages=yes])
421 AC_MSG_RESULT($include_manpages)
422 AS_IF([test "x$include_manpages" = "xyes"],
424 AM_CONDITIONAL([INCLUDE_MANPAGES],true)
425 AC_DEFINE([INCLUDE_MANPAGES],[1],[Including the man pages in the build and installation])
427 AM_CONDITIONAL([INCLUDE_MANPAGES],false)
428 AC_DEFINE([INCLUDE_MANPAGES],[0],[Not including the man pages in the build and installation])
431 # Adam shostack suggests the following for Windows:
432 # -D_FORTIFY_SOURCE=2 -fstack-protector-all
433 AC_ARG_ENABLE(gcc-hardening,
434 AS_HELP_STRING(--enable-gcc-hardening, enable compiler security checks),
435 [AS_IF([test x$enableval = xyes],[
436 CFLAGS="$CFLAGS -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fstack-protector-all"
437 CFLAGS="$CFLAGS -fwrapv -fPIE -Wstack-protector"
438 CFLAGS="$CFLAGS --param ssp-buffer-size=1"
439 LDFLAGS="$LDFLAGS -pie"
442 # Linker hardening options
443 # Currently these options are ELF specific - you can't use this with MacOSX
444 AC_ARG_ENABLE(linker-hardening,
445 AS_HELP_STRING(--enable-linker-hardening, enable linker security fixups),
446 [AS_IF([test x$enableval = xyes],
447 [LDFLAGS="$LDFLAGS -z relro -z now"])])
450 AC_ARG_ENABLE(sanitizer,
451 AS_HELP_STRING(--enable-sanitizer, enable Address Sanitizer and Undefined Behavior Sanitizer),
452 [AS_IF([test x$enableval = xyes],[
453 LDFLAGS="$CFLAGS -fsanitize=address,undefined -fno-omit-frame-pointer"
457 extra_logging=GNUNET_NO
458 AC_ARG_ENABLE([logging],
459 AS_HELP_STRING([--enable-logging@<:@=value@:>@],[Enable logging calls. Possible values: yes,no,verbose,veryverbose ('yes' is the default)]),
460 [AS_IF([test "x$enableval" = "xyes"], [],
461 [test "x$enableval" = "xno"], [AC_DEFINE([GNUNET_CULL_LOGGING],[],[Define to cull all logging calls])],
462 [test "x$enableval" = "xverbose"], [extra_logging=GNUNET_YES]
463 [test "x$enableval" = "xveryverbose"], [extra_logging=\(GNUNET_YES+1\)])
465 AC_DEFINE_UNQUOTED([GNUNET_EXTRA_LOGGING],[$extra_logging],[1 if extra logging is enabled, 2 for very verbose extra logging, 0 otherwise])
467 # should memory poisoning be enabled?
468 AC_MSG_CHECKING(whether to poison freed memory)
469 AC_ARG_ENABLE([poisoning],
470 [AS_HELP_STRING([--enable-poisoning], [enable poisoning of freed memory (good for debugging)])],
471 [enable_poisoning=${enableval}],
473 AS_IF([test "x$extra_logging" != "xGNUNET_NO"],
474 [enable_poisoning="defaults to yes (extra logging is enabled)"],
475 [enable_poisoning=no])
477 AC_MSG_RESULT($enable_poisoning)
478 AS_IF([test ! "x$enable_poisoning" = "xno"],
479 [enable_poisoning=1],
480 [enable_poisoning=0])
481 AC_DEFINE_UNQUOTED([ENABLE_POISONING],[$enable_poisoning],[1 if freed memory should be poisoned, 0 otherwise])
483 if test $build = $target
485 AC_MSG_CHECKING([for working HMAC])
487 LIBS="$LIBS $LIBGCRYPT_LIBS"
488 CFLAGS="$CFLAGS $LIBGCRYPT_CFLAGS"
490 [AC_LANG_PROGRAM([#include <gcrypt.h>
491 #include <stdio.h>], [[
494 unsigned char data[] = { 0xbf, 0x16, 0x6e, 0x46, 0x3a, 0x6c, 0xf3, 0x93, 0xa7, 0x72,
495 0x11, 0xa1, 0xdc, 0x0b, 0x07, 0xdb, 0x1a, 0x5e, 0xd9, 0xb9, 0x81, 0xbe,
496 0xea, 0xe4, 0x31, 0x5f, 0x24, 0xff, 0xfe, 0x50, 0x8a, 0xde };
497 unsigned char key[] = { 0xfc, 0x62, 0x76, 0x35 };
498 unsigned char result[] = {0xa2, 0xb, 0x1, 0xd9, 0xc0, 0x8b, 0x5a, 0x12, 0x80,
499 0xd5, 0x50, 0x12, 0x8e, 0xd0, 0x5b, 0xb6, 0x5c, 0x87, 0x24, 0xe2, 0xd0,
500 0xd2, 0xaf, 0x63, 0xae, 0xd1, 0xd6, 0x64, 0x14, 0xe3, 0x6e, 0x61, 0x5b,
501 0xd, 0xba, 0x17, 0x7d, 0xd3, 0x10, 0xb1, 0x37, 0x41, 0x91, 0x7d, 0xeb,
502 0x1, 0x4d, 0x71, 0xe8, 0x59, 0x71, 0x42, 0x8e, 0xd6, 0xf3, 0x29, 0x3b,
503 0x90, 0xf2, 0xd1, 0xaf, 0x65, 0x1e, 0xb3};
505 if (!gcry_check_version (GCRYPT_VERSION))
507 fprintf (stderr, "Version mismatch %s <-> %s \n", gcry_check_version (NULL), GCRYPT_VERSION);
511 gcry_control (GCRYCTL_DISABLE_SECMEM, 0);
512 gcry_control (GCRYCTL_INITIALIZATION_FINISHED, 0);
514 if (gcry_md_open(&mac, GCRY_MD_SHA512, GCRY_MD_FLAG_HMAC) != GPG_ERR_NO_ERROR)
516 fprintf (stderr, "gcry_md_open error\n");
520 gcry_md_setkey (mac, key, sizeof (key));
521 gcry_md_write (mac, data, sizeof (data));
523 if (memcmp(gcry_md_read (mac, 0), result, gcry_md_get_algo_dlen (gcry_md_get_algo (mac))) != 0)
525 fprintf (stderr, "memcmp error\n");
533 [AC_MSG_RESULT([yes])],
538 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.])
542 AC_MSG_FAILURE([HMAC test failed])
546 AC_MSG_FAILURE([libgcrypt header version does not match library version])
549 [AC_MSG_RESULT([cross compiling, test skipped])])
551 fi # $build = $target
553 # check for bluetooth library
555 AC_CHECK_LIB(bluetooth, ba2str,[AC_CHECK_HEADER([bluetooth/bluetooth.h],bluetooth=1)])
556 if test "$build_target" = "mingw"
560 AM_CONDITIONAL(HAVE_LIBBLUETOOTH, [test "$bluetooth" = 1])
561 if test "$bluetooth" = 1
563 AC_DEFINE([HAVE_LIBBLUETOOTH],[1],[Have bluetooth library])
565 AC_DEFINE([HAVE_LIBBLUETOOTH],[0],[Lacking bluetooth library])
568 # check for zbar library
570 AC_MSG_CHECKING(for libzbar)
572 [ --with-zbar=PFX base of libzbar installation],
573 [AC_MSG_RESULT([$with_zbar])
578 AC_CHECK_HEADERS(zbar.h,
579 AC_CHECK_LIB([zbar], [zbar_processor_create],
583 LDFLAGS="-L$with_zbar/lib $LDFLAGS"
584 CPPFLAGS="-I$with_zbar/include $CPPFLAGS"
585 AC_CHECK_HEADERS(zbar.h,
586 AC_CHECK_LIB([zbar], [zbar_processor_create],
587 EXT_LIB_PATH="-L$with_zbar/lib $EXT_LIB_PATH"
592 [AC_MSG_RESULT([--with-zbar not specified])
593 AC_CHECK_HEADERS(zbar.h,
594 AC_CHECK_LIB([zbar], [zbar_processor_create],
596 AM_CONDITIONAL(HAVE_ZBAR, [test "$zbar" = 1])
597 AS_IF([test "x$zbar" = x1],
598 [AC_DEFINE([HAVE_ZBAR],[1],[Have zbar library])],
599 [AC_DEFINE([HAVE_ZBAR],[0],[Lacking zbar library])])
601 # check for jansson library
603 AC_MSG_CHECKING(for libjansson)
605 [ --with-jansson=PFX base of libjansson installation],
606 [AC_MSG_RESULT([$with_jansson])
607 case $with_jansson in
611 AC_CHECK_HEADERS(jansson.h,
612 AC_CHECK_LIB([jansson], [json_loads],
616 LDFLAGS="-L$with_jansson/lib $LDFLAGS"
617 CPPFLAGS="-I$with_jansson/include $CPPFLAGS"
618 AC_CHECK_HEADERS(jansson.h,
619 AC_CHECK_LIB([jansson], [json_loads],
620 EXT_LIB_PATH="-L$with_jansson/lib $EXT_LIB_PATH"
625 [AC_MSG_RESULT([--with-jansson not specified])
626 AC_CHECK_HEADERS(jansson.h,
627 AC_CHECK_LIB([jansson], [json_loads],
629 AM_CONDITIONAL(HAVE_JANSSON, [test "$jansson" = 1])
630 AM_CONDITIONAL(HAVE_JSON, [test x$jansson = x1])
631 AS_IF([test "x$jansson" = x1],
632 [AC_DEFINE([HAVE_JANSSON],[1],[Have jansson library])],
633 [AC_DEFINE([HAVE_JANSSON],[0],[Lacking jansson library])])
636 # check for libpulse(audio) library
638 AC_CHECK_LIB(pulse,pa_stream_peek,
639 [AC_CHECK_HEADER([pulse/simple.h],pulse=1)])
640 AS_IF([test "$build_target" = "mingw"],
642 AS_IF([test "$pulse" = 1],
643 [AC_DEFINE([HAVE_PULSE],[1],[Have libpulse(audio) library])])
645 # check for libopus(audio) library
647 AC_CHECK_LIB(opus,opus_decode_float,
648 [AC_CHECK_HEADER([opus/opus.h],
649 [AC_CHECK_DECL([OPUS_SET_GAIN],[opus=1],[],[[#include <opus/opus.h>]]
653 AS_IF([test "x$opus" = x1],
654 [AC_DEFINE([HAVE_OPUS],[1],[Have libopus library])])
657 AC_CHECK_LIB(ogg, ogg_stream_flush_fill,
658 [AC_CHECK_HEADERS([ogg/ogg.h],
659 AM_CONDITIONAL(HAVE_OGG, true)
661 AC_DEFINE(HAVE_OGG,1,[Have ogg]),
662 AM_CONDITIONAL(HAVE_OGG, false)
664 AC_DEFINE(HAVE_OGG,0,[lacking ogg]))],
665 AM_CONDITIONAL(HAVE_OGG, false)
669 PKG_CHECK_MODULES([GLIB],
671 [# check for pbc library
673 AC_CHECK_HEADER([pbc/pbc.h],pbc=1)
674 AC_CHECK_HEADER([gabe.h],abe=1)
675 AM_CONDITIONAL(HAVE_PBC, [test "x$pbc" = x1])
676 AM_CONDITIONAL(HAVE_ABE, [test "x$abe" = x1])
677 AS_IF([test "x$pbc" = x1],
678 [AC_DEFINE([HAVE_PBC],[1],[Have pbc library])],
679 [AC_DEFINE([HAVE_PBC],[0],[Lacking pbc library])])
680 AS_IF([test "x$abe" = x1],
681 [AC_DEFINE([HAVE_ABE],[1],[Have ABE library])],
682 [AC_DEFINE([HAVE_ABE],[0],[Lacking ABE library])])],
684 AM_CONDITIONAL(HAVE_PBC, [false])
685 AM_CONDITIONAL(HAVE_ABE, [false])
686 AC_DEFINE([HAVE_PBC],[0],[Lacking glib library])])
691 [glib-2.0 gobject-2.0 gstreamer-1.0 gstreamer-app-1.0 gstreamer-audio-1.0],
696 if test "x$pulse" != "x1" -o "x$opus" != "x1" -o "x$ogg" != "x1"
698 if test "x$gst" != "x1"
700 conversation_backend=none
701 AM_CONDITIONAL(BUILD_PULSE_HELPERS, false)
702 AM_CONDITIONAL(BUILD_GST_HELPERS, false)
703 AM_CONDITIONAL(BUILD_EXPERIMENTAL_HELPERS, false)
705 conversation_backend=gst
706 AM_CONDITIONAL(BUILD_PULSE_HELPERS, false)
707 AM_CONDITIONAL(BUILD_GST_HELPERS, true)
708 AM_CONDITIONAL(BUILD_EXPERIMENTAL_HELPERS, false)
712 conversation_backend=pulse
713 AM_CONDITIONAL(BUILD_PULSE_HELPERS, true)
714 AM_CONDITIONAL(BUILD_GST_HELPERS, false)
715 AM_CONDITIONAL(BUILD_EXPERIMENTAL_HELPERS, false)
719 LIBGNURL_CHECK_CONFIG(,7.34.0,gnurl=1,gnurl=0)
721 SAVE_CPPFLAGS=$CPPFLAGS
722 CPPFLAGS="$LIBGNURL_CPPFLAGS $LIBCURL_CPPFLAGS $CPPFLAGS"
723 LIBS="$LIBGNURL $LIBCURL $LIBS"
726 LIBCURL_CHECK_CONFIG(,7.34.0,[curl=true],[curl=false])
727 if test "x$curl" = xtrue
729 AC_CHECK_HEADER([curl/curl.h],
730 AC_CHECK_DECLS(CURLINFO_TLS_SESSION,[curl=true],[curl=false],[[#include <curl/curl.h>]]),
732 # need libcurl-gnutls.so, everything else is not acceptable
733 AC_CHECK_LIB([curl-gnutls],[curl_easy_getinfo],,[curl=false])
734 # cURL must support CURLINFO_TLS_SESSION, version >= 7.34
737 # libcurl and libgnurl should be mutually exclusive
738 AS_IF([test "$gnurl" = 1],
739 [AM_CONDITIONAL(HAVE_LIBGNURL, true)
740 AC_DEFINE([HAVE_LIBGNURL],[1],[Have libgnurl])
741 AM_CONDITIONAL(HAVE_LIBCURL, false)
742 AC_DEFINE([HAVE_LIBCURL],[0],[Lacking libcurl])],
743 [AS_IF([test "$curl" = true],
744 [AM_CONDITIONAL(HAVE_LIBGNURL, false)
745 AC_DEFINE([HAVE_LIBGNURL],[0],[Lacking libgnurl])
746 AM_CONDITIONAL(HAVE_LIBCURL, true)
747 AC_DEFINE([HAVE_LIBCURL],[1],[Have libcurl])],
748 [AC_MSG_WARN([ERROR: GNUnet requires libcurl-gnutls or gnurl >= 7.34])
749 AM_CONDITIONAL(HAVE_LIBGNURL, false)
750 AC_DEFINE([HAVE_LIBGNURL],[0],[Lacking libgnurl])
751 AM_CONDITIONAL(HAVE_LIBCURL, false)
752 AC_DEFINE([HAVE_LIBCURL],[0],[Lacking libcurl])])])
754 AC_SEARCH_LIBS(__atomic_load_8, atomic, [have_libatomic=1 AC_DEFINE(HAVE_LIBATOMIC,1,[external libatomic])])
755 AM_CONDITIONAL(HAVE_LIBATOMIC, [test "$have_libatomic" = 1])
757 # restore LIBS & CPPFLAGS
759 CPPFLAGS=$SAVE_CPPFLAGS
761 AC_CHECK_HEADERS([glpk.h],[glpk=true],[glpk=false])
762 # GLPK must support glpk_init_env, version >= 4.43
763 AC_CHECK_LIB([glpk],[glp_init_env],,[glpk=false])
764 # GLPK must support atm MLP presolving, version >= 4.32
765 AC_CHECK_MEMBERS(glp_iocp.presolve,,[glpk=false],[[#include <glpk.h>]])
766 if test "x$glpk" = xfalse
768 AM_CONDITIONAL(HAVE_LIBGLPK, false)
769 AC_MSG_WARN([ERROR: GNUnet requires GLPK >= 4.32])
771 AM_CONDITIONAL(HAVE_LIBGLPK, true)
772 AC_DEFINE([HAVE_LIBGLPK],[1],[Have GLPK])
776 AC_CHECK_HEADERS([nss.h],[nss=true],[nss=false])
777 if test x$nss = xfalse
779 AM_CONDITIONAL(HAVE_GLIBCNSS, false)
780 AC_MSG_WARN([No GNU libc nss header, will not build NSS plugin])
785 AC_CHECK_DECL([NSS_STATUS_UNAVAIL],
786 [AM_CONDITIONAL(HAVE_GLIBCNSS, true)],
787 [AM_CONDITIONAL(HAVE_GLIBCNSS, false)
788 AC_MSG_WARN([No nss header fails to define NSS_STATUS_UNAVAIl, will not build NSS plugin])],
794 # test for kvm and kstat (for CPU stats under BSD/Solaris)
795 AC_CHECK_LIB([kvm],[kvm_open])
796 AC_CHECK_LIB([kstat],[kstat_open])
799 # should the build process be restricted to the code required
800 # for GNU Taler wallets?
801 AC_MSG_CHECKING(whether to compile GNU Taler Wallet library ONLY)
802 AC_ARG_ENABLE([taler-wallet],
803 [AS_HELP_STRING([--enable-taler-wallet], [only compile for Taler wallet])],
804 [taler_only=${enableval}],
806 AC_MSG_RESULT($taler_only)
807 if test "x$taler_only" = "xyes"
809 AM_CONDITIONAL([TALER_ONLY],true)
810 AC_DEFINE([TALER_WALLET_ONLY],[1],[Compiling for Taler wallet])
812 AM_CONDITIONAL([TALER_ONLY],false)
813 AC_DEFINE([TALER_WALLET_ONLY],[0],[Canonical compilation])
816 # test for libextractor
818 AC_MSG_CHECKING(for libextractor)
819 AC_ARG_WITH(extractor,
820 [ --with-extractor=PFX base of libextractor installation],
821 [AC_MSG_RESULT([$with_extractor])
822 case $with_extractor in
826 AC_CHECK_HEADERS([extractor.h],
827 AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
831 LDFLAGS="-L$with_extractor/lib $LDFLAGS"
832 CPPFLAGS="-I$with_extractor/include $CPPFLAGS"
833 AC_CHECK_HEADERS([extractor.h],
834 AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
835 EXT_LIB_PATH="-L$with_extractor/lib $EXT_LIB_PATH"
840 [AC_MSG_RESULT([--with-extractor not specified])
841 AC_CHECK_HEADERS([extractor.h],
842 AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
847 if test "$extractor" != 1
849 AM_CONDITIONAL(HAVE_LIBEXTRACTOR, false)
850 AC_DEFINE([HAVE_LIBEXTRACTOR],[0],[Lacking libextractor])
852 AM_CONDITIONAL(HAVE_LIBEXTRACTOR, true)
853 AC_DEFINE([HAVE_LIBEXTRACTOR],[1],[Have libextractor])
857 if test "$taler_only" != yes
860 # Check for libltdl header (#2999)
862 AC_MSG_CHECKING(for libltdl)
864 [ --with-ltdl=PFX base of libltdl installation],
865 [AC_MSG_RESULT([$with_ltdl])
870 AC_CHECK_HEADERS(ltdl.h,
871 AC_CHECK_LIB([ltdl], [lt_dlopenext],
875 LDFLAGS="-L$with_ltdl/lib $LDFLAGS"
876 CPPFLAGS="-I$with_ltdl/include $CPPFLAGS"
877 AC_CHECK_HEADERS(ltdl.h,
878 AC_CHECK_LIB([ltdl], [lt_dlopenext],
879 EXT_LIB_PATH="-L$with_ltdl/lib $EXT_LIB_PATH"
884 [AC_MSG_RESULT([--with-ltdl not specified])
885 AC_CHECK_HEADERS(ltdl.h,
886 AC_CHECK_LIB([ltdl], [lt_dlopenext],
890 AC_MSG_RESULT([libltdl found])
892 AC_MSG_ERROR([GNUnet requires libltdl (from GNU libtool), try installing libltdl-dev])
897 # libidn and libidn2. The ideal goal is this:
898 # check for libidn2, if it doesn't exist check for libidn
899 # if both exist, prefer libidn2
900 # if none exist, fail and message that libidn or libidn2
901 # is required with a preference for libidn2.
902 # TODO: What we have right here can probably be improved.
905 AS_HELP_STRING([--with-libidn=pathname],
906 [Support IDN (needs libidn)]),
909 AS_IF([test x_$withval = x_yes],
910 [AC_CHECK_HEADERS([idna.h],
911 AC_MSG_NOTICE([Found idna.h]),
912 AC_CHECK_HEADERS([idn/idna.h],
913 AC_MSG_NOTICE([Found idn/idna.h]),
915 [AS_IF([test x_$withval != x_no],
916 [CFLAGS="$CFLAGS -I$withval/include"
917 LDFLAGS="$LDFLAGS -L$withval/lib"
918 AC_CHECK_HEADERS([idna.h],
919 AC_MSG_NOTICE([Found idna.h]),
920 [AC_MSG_NOTICE([Failed to find idna.h])
922 [my_with_libidn=0])])
926 AS_HELP_STRING([--with-libidn2=pathname],
927 [Support IDN (needs libidn2)]),
930 AS_IF([test x_$withval = x_yes],
931 [AC_CHECK_HEADERS([idn2.h],
932 AC_MSG_NOTICE([Found idn2.h]),
933 AC_CHECK_HEADERS([idn2/idn2.h],
934 AC_MSG_NOTICE([Found idn2/idn2.h]),
935 [AC_MSG_NOTICE([Failed to find idn2.h])
936 my_with_libidn2=0]))],
937 [AS_IF([test x_$withval != x_no],
938 [CFLAGS="$CFLAGS -I$withval/include"
939 LDFLAGS="$LDFLAGS -L$withval/lib"],
940 [my_with_libidn2=0])])
942 AC_MSG_CHECKING([if libidn can be used])
944 there_can_only_be_one=1
948 AS_IF([test x$my_with_libidn2 = x1],
949 [AC_MSG_NOTICE([Checking for libidn2])
951 [idn2_to_unicode_8z8z],
954 AC_DEFINE_UNQUOTED([HAVE_LIBIDN2],
956 [Define to 1 if you have 'libidn2' (-lidn2).])],
957 [MISSING_DEPS="${MISSING_DEPS}${MISSING_SEP}libidn2"
959 AM_CONDITIONAL(HAVE_LIBIDN2, test x$working_libidn2 = x1)
960 AS_IF([test x$working_libidn2 = x0],
961 [AS_IF([test x$my_with_libidn = x1],
962 [AC_MSG_NOTICE([Checking for libidn])
967 AC_DEFINE_UNQUOTED([HAVE_LIBIDN],
969 [Define to 1 if you have 'libidn' (-lidn).])],
970 [there_can_only_be_one=0])],
971 [AS_IF([test x$my_with_libidn2 = x1],
972 [there_can_only_be_one=0
973 AC_MSG_FAILURE([* There can only be one libidn.
974 * Provide either libidn >= 1.13
976 * libidn2 to the configure
979 * --with-libidn])])])])
980 AM_CONDITIONAL(HAVE_LIBIDN, test x$working_libidn1 = x1)
982 AS_IF([test "$working_libidn1" = 0 -a "$working_libidn2" = 0],
983 [AC_MSG_ERROR([GNUnet requires libidn (or libidn2)])])
985 AS_IF([test x$there_can_only_be_one = x0],
986 [AC_MSG_FAILURE([Missing dependencies: $MISSING_DEPS])])
989 SAVE_LDFLAGS=$LDFLAGS
990 SAVE_CPPFLAGS=$CPPFLAGS
992 [ --with-zlib[[=DIR]] use libz in DIR],
993 [AS_IF([test "$withval" = "no"],
994 [AC_MSG_ERROR([GNUnet requires zlib])],
995 [test "$withval" != "yes"],
998 CPPFLAGS="${CPPFLAGS} -I$withval/include"
999 LDFLAGS="${LDFLAGS} -L$withval/lib"
1002 AC_CHECK_HEADER(zlib.h,
1004 [AC_MSG_ERROR([GNUnet requires zlib])])
1005 AC_CHECK_LIB(z, compress2,
1007 AC_DEFINE([HAVE_ZLIB], [], [Have compression library])
1008 if test "x${Z_DIR}" != "x"; then
1009 Z_CFLAGS="-I${Z_DIR}/include"
1010 Z_LIBS="-L${Z_DIR}/lib -lz"
1014 [AC_MSG_ERROR([GNUnet requires zlib])])
1018 if test "$enable_shared" = "no"
1020 AC_MSG_ERROR([GNUnet only works with shared libraries. Sorry.])
1034 # test for libunistring
1036 if test $HAVE_LIBUNISTRING != yes; then
1037 AC_MSG_ERROR([GNUnet requires libunistring])
1039 # under emscripten, $gl_libunistring_hexversion is undefined
1040 if test "$taler_only" != yes; then
1041 if test "x$gl_libunistring_hexversion" = "x" || test "$gl_libunistring_hexversion" -le 2305; then
1042 AC_MSG_ERROR([GNUnet requires libunistring >= 0.9.1.1])
1045 AC_CHECK_HEADERS([unistr.h],,AC_MSG_ERROR([Compiling GNUnet requires unistr.h (from libunistring) to be installed]))
1052 # Checks for standard header files.
1056 # Check for headers that are ALWAYS required
1057 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]))
1061 # Checks for headers that are only required on some systems or opional (and where we do NOT abort if they are not there)
1062 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])
1064 # FreeBSD requires something more funky for netinet/in_systm.h and netinet/ip.h...
1065 AC_CHECK_HEADERS([sys/types.h netinet/in_systm.h netinet/in.h netinet/ip.h],,,
1066 [#ifdef HAVE_SYS_TYPES_H
1067 #include <sys/types.h>
1069 #ifdef HAVE_NETINET_IN_SYSTM_H
1070 #include <netinet/in_systm.h>
1072 #ifdef HAVE_NETINET_IN_H
1073 #include <netinet/in.h>
1077 SAVE_LDFLAGS=$LDFLAGS
1078 SAVE_CPPFLAGS=$CPPFLAGS
1082 AC_MSG_CHECKING(for SQLite)
1084 [ --with-sqlite=PFX base of SQLite installation],
1085 [AC_MSG_RESULT("$with_sqlite")
1086 case $with_sqlite in
1090 AC_CHECK_HEADERS(sqlite3.h,
1094 LDFLAGS="-L$with_sqlite/lib $LDFLAGS"
1095 CPPFLAGS="-I$with_sqlite/include $CPPFLAGS"
1096 AC_CHECK_HEADERS(sqlite3.h,
1097 EXT_LIB_PATH="-L$with_sqlite/lib $EXT_LIB_PATH"
1098 SQLITE_LDFLAGS="-L$with_sqlite/lib"
1099 SQLITE_CPPFLAGS="-I$with_sqlite/include"
1101 LDFLAGS=$SAVE_LDFLAGS
1102 CPPFLAGS=$SAVE_CPPFLAGS
1106 [AC_MSG_RESULT([--with-sqlite not specified])
1107 AC_CHECK_HEADERS(sqlite3.h, sqlite=true)])
1108 AM_CONDITIONAL(HAVE_SQLITE, test x$sqlite = xtrue)
1109 AC_SUBST(SQLITE_CPPFLAGS)
1110 AC_SUBST(SQLITE_LDFLAGS)
1112 LDFLAGS=$SAVE_LDFLAGS
1113 CPPFLAGS=$SAVE_CPPFLAGS
1117 # even running the check for postgres breaks emscripten ...
1118 AS_IF([test "$taler_only" != yes],
1119 [AX_LIB_POSTGRESQL([9.5],
1120 [CPPFLAGS="$CPPFLAGS $POSTGRESQL_CPPFLAGS"
1121 AC_CHECK_HEADERS([libpq-fe.h],
1124 [AC_MSG_RESULT([no postgres])])])
1125 AM_CONDITIONAL(HAVE_POSTGRESQL, test x$postgres = xtrue)
1128 LDFLAGS=$SAVE_LDFLAGS
1129 CPPFLAGS=$SAVE_CPPFLAGS
1132 AC_CHECK_TYPES([sigset_t, off_t], [], [], [#include <sys/types.h>])
1133 AC_CHECK_TYPES([size_t], [], [], [#include <stdio.h>])
1135 if test "$build_target" = "mingw"
1137 CYGWIN_MYSQL_MAGIC="#include <mysql/my_global.h>"
1143 SAVE_LDFLAGS=$LDFLAGS
1144 SAVE_CPPFLAGS=$CPPFLAGS
1145 AC_MSG_CHECKING(for mysql)
1147 [ --with-mysql=PFX base of MySQL installation],
1148 [AC_MSG_RESULT([$with_mysql])
1153 AC_CHECK_HEADERS(mysql/mysql.h,
1154 AC_CHECK_LIB(mysqlclient, mysql_init,
1156 mysql=true), [], [$CYGWIN_MYSQL_MAGIC])
1159 LDFLAGS="-L$with_mysql/lib -L$with_mysql/lib/mysql $LDFLAGS $ZLIBS"
1160 CPPFLAGS="-I$with_mysql/include $CPPFLAGS"
1161 AC_CHECK_HEADERS(mysql/mysql.h,
1162 AC_CHECK_LIB(mysqlclient, mysql_init,
1163 MYSQL_LDFLAGS="-L$with_mysql/lib -L$with_mysql/lib/mysql"
1164 MYSQL_CPPFLAGS="-I$with_mysql/include"
1166 mysql=true), [], [$CYGWIN_MYSQL_MAGIC])
1170 [AC_MSG_RESULT([--with-mysql not specified])
1171 if test -d "/usr/lib64/mysql"; then
1172 MYSQL_LIBDIR="/usr/lib64/mysql"
1173 elif test -d "/usr/lib/mysql"; then
1174 MYSQL_LIBDIR="/usr/lib/mysql"
1176 MYSQL_LIBDIR="/usr/lib"
1178 LDFLAGS="-L$MYSQL_LIBDIR $LDFLAGS $ZLIBS"
1179 AC_CHECK_LIB(mysqlclient, mysql_init,
1180 [AC_CHECK_HEADERS(mysql/mysql.h,
1181 MYSQL_LDFLAGS="-L$MYSQL_LIBDIR"
1184 , [], [$CYGWIN_MYSQL_MAGIC])])
1187 AC_SUBST(MYSQL_LDFLAGS)
1188 AC_SUBST(MYSQL_CPPFLAGS)
1190 # additional version check for mysql
1191 AC_ARG_ENABLE(mysql-version-check, [ --disable-mysql-version-check do not check MySQL version],, enable_mysql_version_check=yes)
1192 if test "$mysql" = "true" -a "x$enable_mysql_version_check" = "xyes"
1194 AC_MSG_CHECKING(mysql version)
1195 AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
1196 [[$CYGWIN_MYSQL_MAGIC
1197 #include <mysql/mysql.h>]],
1199 #if (MYSQL_VERSION_ID < 40100)
1200 #error needs at least version >= 4.1
1202 int main () { return 0; }
1204 ],mysql=true,mysql=false)
1205 if test "$mysql" = "false"
1208 AC_MSG_RESULT([fail, >= 4.1 required])
1213 AM_CONDITIONAL(HAVE_MYSQL, test x$mysql = xtrue)
1214 AM_CONDITIONAL(HAVE_MYSQLE, false)
1217 LDFLAGS=$SAVE_LDFLAGS
1218 CPPFLAGS=$SAVE_CPPFLAGS
1220 if test "$sqlite" = 0 -a "$mysql" = 0
1222 AC_MSG_ERROR([GNUnet requires SQLite or MySQL])
1227 AC_MSG_CHECKING([for libmicrohttpd])
1228 AC_ARG_WITH(microhttpd,
1229 [ --with-microhttpd=PFX base of libmicrohttpd installation],
1230 [AC_MSG_RESULT([$with_microhttpd])
1231 case $with_microhttpd in
1235 AC_CHECK_HEADERS([microhttpd.h],
1236 AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
1237 AC_CHECK_LIB([microhttpd], [MHD_get_fdset2],
1238 [AC_MSG_CHECKING([for libmicrohttpd >= 0.9.63])
1239 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
1240 #include "$native_srcdir/src/include/platform.h"
1241 #include <microhttpd.h>
1242 #if (MHD_VERSION < 0x0096300)
1243 #error needs at least version 0.9.63
1245 int main () { return 0; }
1249 [AC_MSG_RESULT(failed)])]),
1250 [],[#include "$native_srcdir/src/include/platform.h"
1251 #include <microhttpd.h>]),,
1252 [#include "$native_srcdir/src/include/platform.h"])
1255 LDFLAGS="-L$with_microhttpd/lib $LDFLAGS"
1256 CPPFLAGS="-I$with_microhttpd/include $CPPFLAGS"
1257 AC_CHECK_HEADERS(microhttpd.h,
1258 AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
1259 AC_CHECK_LIB([microhttpd], [MHD_get_fdset2],
1260 EXT_LIB_PATH="-L$with_microhttpd/lib $EXT_LIB_PATH"
1261 [AC_MSG_CHECKING([for libmicrohttpd >= 0.9.52])
1262 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
1263 #include "$native_srcdir/src/include/platform.h"
1264 #include <microhttpd.h>
1265 #if (MHD_VERSION < 0x0094200)
1266 #error needs at least version 0.9.42
1268 int main () { return 0; }
1272 [AC_MSG_RESULT(failed)])]),
1273 [],[#include "$native_srcdir/src/include/platform.h"
1274 #include <microhttpd.h>]),,
1275 [#include "$native_srcdir/src/include/platform.h"])
1279 [AC_MSG_RESULT([--with-microhttpd not specified])
1280 AC_CHECK_HEADERS([microhttpd.h],
1281 AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
1282 AC_CHECK_LIB([microhttpd], [MHD_get_fdset2],
1283 [AC_MSG_CHECKING([for libmicrohttpd >= 0.9.52])
1284 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
1285 #include "$native_srcdir/src/include/platform.h"
1286 #include <microhttpd.h>
1287 #if (MHD_VERSION < 0x0094200)
1288 #error needs at least version 0.9.52
1293 [AC_MSG_RESULT(failed)])]),
1294 [],[#include "$native_srcdir/src/include/platform.h"
1295 #include <microhttpd.h>]),,
1296 [#include "$native_srcdir/src/include/platform.h"])])
1297 AM_CONDITIONAL(HAVE_MHD, test x$lmhd = x1)
1298 AC_DEFINE_UNQUOTED([HAVE_MHD], $lmhd, [We have libmicrohttpd])
1300 AM_CONDITIONAL(HAVE_JSON, [test x$jansson = x1])
1306 AM_GNU_GETTEXT([external])
1307 AM_GNU_GETTEXT_VERSION([0.18.1])
1309 # Checks for standard typedefs, structures, and compiler characteristics.
1318 AC_CHECK_MEMBER([struct sockaddr_in.sin_len],
1319 [ AC_DEFINE(HAVE_SOCKADDR_IN_SIN_LEN, 1, [Do we have sockaddr_in.sin_len?])
1323 #include <sys/types.h>
1324 #include <sys/socket.h>
1325 #include <netinet/in.h>
1328 AC_CHECK_MEMBER([struct sockaddr_un.sun_len],
1329 [ AC_DEFINE(HAVE_SOCKADDR_UN_SUN_LEN, 1, [Do we have sockaddr_un.sun_len?])
1333 #include <sys/types.h>
1334 #include <sys/socket.h>
1340 # Checks for library functions.
1341 AC_FUNC_CLOSEDIR_VOID
1343 AC_PROG_GCC_TRADITIONAL
1345 AC_FUNC_SELECT_ARGTYPES
1355 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])
1361 GN_LIBINTL="$LTLIBINTL"
1362 AC_ARG_ENABLE(framework, [ --enable-framework enable Mac OS X framework build helpers],enable_framework_build=$enableval)
1363 AM_CONDITIONAL(WANT_FRAMEWORK, test x$enable_framework_build = xyes)
1364 if test x$enable_framework_build = xyes
1366 AC_DEFINE([FRAMEWORK_BUILD], 1, [Build a Mac OS X Framework])
1367 GN_INTLINCL='-I$(top_srcdir)/src/intlemu'
1368 GN_LIBINTL='$(top_builddir)/src/intlemu/libintlemu.la -framework CoreFoundation'
1369 AC_LIB_APPENDTOVAR([CPPFLAGS], [$GN_INTLINCL])
1372 GN_LIB_LDFLAGS="-export-dynamic -no-undefined"
1373 GN_PLUGIN_LDFLAGS="-export-dynamic -avoid-version -module -no-undefined"
1375 AC_SUBST(GN_LIB_LDFLAGS)
1376 AC_SUBST(GN_PLUGIN_LDFLAGS)
1377 AC_SUBST(GN_INTLINCL)
1378 AC_SUBST(GN_LIBINTL)
1383 AC_SUBST(EXT_LIB_PATH)
1388 AC_SUBST(EXT_LIB_PATH)
1390 DATAROOTDIR=$datarootdir
1391 AC_SUBST(DATAROOTDIR)
1394 # TODO: do we need to change anything for "doas" on openbsd?
1395 AC_MSG_CHECKING(for sudo)
1397 [ --with-sudo=PATH path to sudo binary (or just yes)],
1398 [AC_MSG_RESULT("$with_sudo")
1407 SUDO_BINARY=$with_sudo
1411 [AC_MSG_RESULT([no])])
1412 AC_SUBST(SUDO_BINARY)
1413 AM_CONDITIONAL([HAVE_SUDO], [test "x$SUDO_BINARY" != "x" -o -w /])
1416 # test for gnunetdns group name
1417 GNUNETDNS_GROUP=gnunetdns
1418 AC_MSG_CHECKING(for gnunetdns group name)
1419 AC_ARG_WITH(gnunetdns,
1420 [ --with-gnunetdns=GRPNAME name for gnunetdns group],
1421 [AC_MSG_RESULT("$with_gnunetdns")
1422 case $with_gnunetdns in
1424 GNUNETDNS_GROUP=gnunet
1427 GNUNETDNS_GROUP=gnunetdns
1430 GNUNETDNS_GROUP=$with_gnunetdns
1434 [AC_MSG_RESULT([gnunetdns])])
1435 AC_SUBST(GNUNETDNS_GROUP)
1442 AC_MSG_CHECKING(for gnutls)
1444 [ --with-gnutls=PFX base of gnutls installation],
1445 [AC_MSG_RESULT([$with_gnutls])
1446 case $with_gnutls in
1450 AC_CHECK_HEADERS([gnutls/abstract.h],
1451 AC_CHECK_LIB([gnutls], [gnutls_priority_set],
1453 AC_CHECK_HEADERS([gnutls/dane.h],
1454 AC_CHECK_LIB([gnutls-dane], [dane_verify_crt_raw],
1458 LDFLAGS="-L$with_gnutls/lib $LDFLAGS"
1459 CPPFLAGS="-I$with_gnutls/include $CPPFLAGS"
1460 AC_CHECK_HEADERS([gnutls/abstract.h],
1461 AC_CHECK_LIB([gnutls], [gnutls_priority_set],
1462 EXT_LIB_PATH="-L$with_gnutls/lib $EXT_LIB_PATH"
1464 AC_CHECK_HEADERS([gnutls/dane.h],
1465 AC_CHECK_LIB([gnutls-dane], [dane_verify_crt_raw],
1470 [AC_MSG_RESULT([--with-gnutls not specified])
1471 AC_CHECK_HEADERS([gnutls/abstract.h],
1472 AC_CHECK_LIB([gnutls], [gnutls_priority_set],
1474 AC_CHECK_HEADERS([gnutls/dane.h],
1475 AC_CHECK_LIB([gnutls-dane], [dane_verify_crt_raw],
1478 AM_CONDITIONAL(HAVE_GNUTLS, test x$gnutls = xtrue)
1479 AC_DEFINE_UNQUOTED([HAVE_GNUTLS], $gnutls, [We have GnuTLS])
1480 AM_CONDITIONAL(HAVE_GNUTLS_DANE, test x$gnutls_dane = x1)
1481 AC_DEFINE_UNQUOTED([HAVE_GNUTLS_DANE], $gnutls_dane, [We have GnuTLS with DANE support])
1485 # Test if we are building for superMUC
1486 AC_MSG_CHECKING(if GNUnet is being configured to run on the SuperMUC)
1487 AC_ARG_ENABLE([supermuc],
1488 [AS_HELP_STRING([--enable-supermuc],
1489 [build GNUnet with support to run on the SuperMUC (default is NO)])],
1490 [if test "x$enable_supermuc" = "xno"
1497 enable_supermuc=no])
1498 AC_MSG_RESULT($enable_SUPERMUC)
1499 AM_CONDITIONAL([ENABLE_SUPERMUC], [test "x$supermuc" = "x1"])
1500 AC_DEFINE_UNQUOTED([ENABLE_SUPERMUC], [$supermuc], [Build with support for SuperMUC])
1502 # Check if NSE has to send timestamp information to testbed logger for
1503 # generating histogram of messages received
1504 AC_MSG_CHECKING(if NSE has to send timestamp information to testbed logger)
1505 AC_ARG_ENABLE([nse-histogram],
1506 [AS_HELP_STRING([--enable-nse-histogram],
1507 [have NSE send timestamp information to testbed logger for generating
1508 histogram of received messages. NOT useful for production (default is
1510 [if test "x$enableval" = "xno"
1517 enable_nse_histogram=no])
1518 AC_MSG_RESULT($enable_nse_histogram)
1519 AM_CONDITIONAL([ENABLE_NSE_HISTOGRAM], [test "x$nse_histogram" = "x1"])
1520 AC_DEFINE_UNQUOTED([ENABLE_NSE_HISTOGRAM], [$nse_histogram],
1521 [have NSE send timestamp information to testbed logger])
1523 # should 'make check' run tests?
1524 AC_MSG_CHECKING(whether to run tests)
1525 AC_ARG_ENABLE([testruns],
1526 [AS_HELP_STRING([--disable-testruns], [disable running tests on make check (default is YES)])],
1527 [enable_tests_run=${enableval}],
1528 [enable_tests_run=yes])
1529 AC_MSG_RESULT($enable_test_run)
1530 AM_CONDITIONAL([ENABLE_TEST_RUN], [test "x$enable_tests_run" = "xyes"])
1533 AC_MSG_CHECKING([whether to compile in benchmarks (currently for http and crypto)])
1534 AC_ARG_ENABLE([benchmark],
1535 [AS_HELP_STRING([--enable-benchmark], [enable benchmarking])],
1536 [enable_benchmark=${enableval}],
1537 [enable_benchmark=no])
1538 AC_MSG_RESULT($enable_benchmark)
1539 AS_IF([test "x$enable_benchmark" = "xyes"],
1540 [AC_DEFINE_UNQUOTED(ENABLE_BENCHMARK,1,[Benchmarks are enabled])])
1541 AM_CONDITIONAL([ENABLE_BENCHMARK], [test "x$enable_benchmark" = "xyes"])
1544 # should expensive tests be run?
1545 AC_MSG_CHECKING(whether to run expensive tests)
1546 AC_ARG_ENABLE([expensivetests],
1547 [AS_HELP_STRING([--enable-expensivetests], [enable running expensive testcases])],
1548 [enable_expensive=${enableval}],
1549 [enable_expensive=no])
1550 AC_MSG_RESULT($enable_expensive)
1551 AM_CONDITIONAL([HAVE_EXPENSIVE_TESTS], [test "x$enable_expensive" = "xyes"])
1553 # should ports be open for Java services?
1554 AC_MSG_CHECKING(whether to enable ports for gnunet-java)
1555 AC_ARG_ENABLE([javaports],
1556 [AS_HELP_STRING([--enable-javaports], [use non-zero ports for services with Java bindings (default is NO)])],
1557 [enable_java_ports=${enableval}],
1558 [enable_java_ports=no])
1559 AC_MSG_RESULT($enable_java_ports)
1560 if test "x$enable_java_ports" = "xyes"
1564 JAVAPORT="$UNIXONLY"
1568 # should benchmarks be run?
1569 AC_MSG_CHECKING(whether to run benchmarks during make check)
1570 AC_ARG_ENABLE([benchmarks],
1571 [AS_HELP_STRING([--enable-benchmarks], [enable running benchmarks during make check])],
1572 [enable_benchmarks=${enableval}],
1573 [enable_benchmarks=no])
1574 AC_MSG_RESULT($enable_benchmarks)
1575 AM_CONDITIONAL([HAVE_BENCHMARKS], [test "x$enable_benchmarks" = "xyes"])
1577 # should gnunet-testing be compiled
1578 AC_MSG_CHECKING(wether to compile gnunet-testing)
1579 AC_ARG_ENABLE([testing],
1580 [AS_HELP_STRING([--disable-testing], [do not build gnunet-testing])],
1581 [enable_testing=${enableval}],
1582 [enable_testing=yes])
1583 AC_MSG_RESULT($enable_testing)
1584 AM_CONDITIONAL([HAVE_TESTING], [test "x$enable_testing" = "xyes"])
1586 # should experimental code be compiled (code that may not yet compile)?
1587 AC_MSG_CHECKING(whether to compile experimental code)
1588 AC_ARG_ENABLE([experimental],
1589 [AS_HELP_STRING([--enable-experimental], [enable compiling experimental code])],
1590 [enable_experimental=${enableval}],
1591 [enable_experimental=no])
1592 AC_MSG_RESULT($enable_experimental)
1593 AM_CONDITIONAL([HAVE_EXPERIMENTAL], [test "x$enable_experimental" = "xyes"])
1595 # should malicious code be compiled (should only be used for testing)?
1596 AC_MSG_CHECKING(whether to compile malicious code)
1597 AC_ARG_ENABLE([malicious],
1598 [AS_HELP_STRING([--enable-malicious], [enable compiling malicious code])],
1599 [if test "x$enableval" = "xno"
1606 enable_malicious=no])
1607 AC_MSG_RESULT($enable_malicious)
1608 AM_CONDITIONAL([ENABLE_MALICIOUS], [test 1=$malicious])
1609 AC_DEFINE_UNQUOTED([ENABLE_MALICIOUS], [$malicious],
1610 [enable compilation of malicious code])
1612 # should services be started on demand when needed? Some services may choose to
1613 # never start by default and it is up to the service/module developer to decide
1614 # by having "START_ON_DEMAND = NO" instead of "START_ON_DEMAND = @START_ON_DEMAND@"
1615 # in the service/module's conf.in file.
1616 # See also IMMEDIATE_START for an unconditional immediate start.
1617 START_ON_DEMAND="YES"
1618 AC_MSG_CHECKING(whether to start peer's services on demand by default)
1619 AC_ARG_ENABLE([autostart],
1620 [AS_HELP_STRING([--disable-autostart], [do not start peer's services by default])],
1621 [enable_autostart=${enableval}
1622 if test "x$enable_autostart" = "xno"
1624 START_ON_DEMAND="NO"
1627 [enable_autostart=yes])
1628 AC_MSG_RESULT($enable_autostart)
1629 #AM_CONDITIONAL([HAVE_START_ON_DEMAND], [test "x$enable_autostart" = "xyes"])
1630 AC_SUBST(START_ON_DEMAND)
1632 # should memory statistics be kept (very expensive CPU-wise!)
1633 AC_MSG_CHECKING(whether to create expensive statistics on memory use)
1634 AC_ARG_ENABLE([heapstats],
1635 [AS_HELP_STRING([--enable-heapstats], [enable expensive heap statistics])],
1636 [enable_heapstats=1],
1637 [enable_heapstats=0])
1638 AC_MSG_RESULT($enable_heapstats)
1639 AC_DEFINE_UNQUOTED([ENABLE_HEAP_STATISTICS],$enable_heapstats,[enable expensive heap statistics])
1641 # should code be enabled that works around missing OS functionality on Windows?
1642 # used for test cases
1643 if test $build_target = "mingw"
1649 [#include <ws2tcpip.h>
1651 int s = socket (0, 0, 0);])
1653 AC_DEFINE_UNQUOTED([HAVE_SOCKET],1,[Define this if socket() is available])
1655 AC_DEFINE_UNQUOTED([HAVE_SOCKET],0,[Define this if socket() is available])
1660 [#include <ws2tcpip.h>
1662 int s = select (0, NULL, NULL, NULL, NULL);])
1664 AC_DEFINE_UNQUOTED([HAVE_SELECT],1,[Define this if select() is available])
1666 AC_DEFINE_UNQUOTED([HAVE_SELECT],0,[Define this if select() is available])
1671 [#include <ws2tcpip.h>
1674 char *s = inet_ntoa (i);])
1676 AC_DEFINE_UNQUOTED([HAVE_INET_NTOA],1,[Define this if inet_ntoa() is available])
1678 AC_DEFINE_UNQUOTED([HAVE_INET_NTOA],0,[Define this if inet_ntoa() is available])
1683 [#include <ws2tcpip.h>
1685 int s = getnameinfo (NULL, 0, NULL, 0, NULL, 0, 0);])
1687 AC_DEFINE_UNQUOTED([HAVE_GETNAMEINFO],1,[Define this if getnameinfo() is available])
1689 AC_DEFINE_UNQUOTED([HAVE_GETNAMEINFO],0,[Define this if getnameinfo() is available])
1694 [#include <ws2tcpip.h>
1696 int s = gethostname (NULL, 0);])
1698 AC_DEFINE_UNQUOTED([HAVE_GETHOSTNAME],1,[Define this if gethostname() is available])
1700 AC_DEFINE_UNQUOTED([HAVE_GETHOSTNAME],0,[Define this if gethostname() is available])
1705 [#include <ws2tcpip.h>
1707 void *s = gethostbyname (NULL);])
1709 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYNAME],1,[Define this if gethostbyname() is available])
1711 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYNAME],0,[Define this if gethostbyname() is available])
1716 [#include <ws2tcpip.h>
1718 void *s = gethostbyaddr (NULL, 0, 0);])
1720 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYADDR],1,[Define this if gethostbyaddr() is available])
1722 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYADDR],0,[Define this if gethostbyaddr() is available])
1727 [#include <ws2tcpip.h>
1729 int s = getaddrinfo (NULL, NULL, NULL, NULL);])
1731 AC_DEFINE_UNQUOTED([HAVE_GETADDRINFO],1,[Define this if getaddrinfo() is available])
1733 AC_DEFINE_UNQUOTED([HAVE_GETADDRINFO],0,[Define this if getaddrinfo() is available])
1737 AC_MSG_CHECKING(whether to enable windows workarounds)
1738 AC_ARG_ENABLE([windows_workarounds],
1739 [AS_HELP_STRING([--enable-windows_workarounds], [enable workarounds used on Windows (only useful for test cases)])],
1740 [enable_workarounds=${enableval}],
1741 [enable_workarounds=no])
1742 AC_MSG_RESULT($enable_workarounds)
1743 if test x$enable_windows_workarounds = "xyes"
1750 AC_DEFINE_UNQUOTED([ENABLE_WINDOWS_WORKAROUNDS], $workarounds, [enable workarounds used on Windows (only useful for test cases)])
1753 # Check if the __thread storage class for thread-local storage is available.
1754 AC_MSG_CHECKING(whether __thread is supported)
1756 [AC_LANG_PROGRAM([#include <stdlib.h>
1758 static __thread int a = 1;],
1760 [have_thread_local_gcc=1],[have_thread_local_gcc=0])
1761 AC_DEFINE_UNQUOTED([HAVE_THREAD_LOCAL_GCC],$have_thread_local_gcc,[Define this if __thread is supported])
1762 AS_IF([test "x$have_thread_local_gcc" = "x1"],
1763 [AC_MSG_RESULT(yes)],
1764 [AC_MSG_RESULT(no)])
1767 AC_MSG_CHECKING(whether to compile with support for code coverage analysis)
1768 AC_ARG_ENABLE([coverage],
1769 AS_HELP_STRING([--enable-coverage],
1770 [compile the library with code coverage support]),
1771 [use_gcov=${enableval}],
1773 AC_MSG_RESULT($use_gcov)
1774 AM_CONDITIONAL([USE_COVERAGE], [test "x$use_gcov" = "xyes"])
1778 # TODO: git blame says this predates our switch to git. git-svn should be adjusted to simply git, or
1779 # an external script that does the job.
1780 AC_PATH_PROG(svnversioncommand, svnversion)
1781 AC_PATH_PROG(gitcommand, git)
1782 AC_MSG_CHECKING(for source being under a VCS)
1786 AC_PATH_PROG(gitcommand, git)
1787 AC_MSG_CHECKING(for source being under a VCS)
1789 AS_IF([test ! "X$gitcommand" = "X"],
1791 git_version=$(cd $srcdir ; git rev-list --full-history --all --abbrev-commit | head -n 1 2>/dev/null)
1793 AS_IF([test "X$git_version" = "X"],
1796 vcs_version="\"release\""
1799 vcs_name="yes, git-svn"
1800 vcs_version="\"git-$git_version\""
1802 AC_MSG_RESULT($vcs_name)
1804 AC_MSG_CHECKING(VCS version)
1805 AC_MSG_RESULT($vcs_version)
1806 AC_DEFINE_UNQUOTED(VCS_VERSION, [$vcs_version], [VCS revision/hash or tarball version])
1811 contrib/hellos/Makefile
1812 contrib/services/Makefile
1813 contrib/services/openrc/Makefile
1814 contrib/services/systemd/Makefile
1815 contrib/scripts/Makefile
1816 contrib/scripts/gnunet-logread/Makefile
1819 doc/doxygen/Makefile
1820 doc/handbook/Makefile
1821 doc/tutorial/Makefile
1830 src/ats-tool/Makefile
1831 src/ats-tests/Makefile
1832 src/auction/Makefile
1835 src/cadet/cadet.conf
1838 src/consensus/Makefile
1839 src/consensus/consensus.conf
1840 src/conversation/Makefile
1841 src/conversation/conversation.conf
1843 src/datacache/Makefile
1844 src/datastore/Makefile
1845 src/datastore/datastore.conf
1851 src/fragmentation/Makefile
1856 src/gns/nss/Makefile
1857 src/gnsrecord/Makefile
1859 src/identity/Makefile
1860 src/identity/identity.conf
1861 src/credential/Makefile
1862 src/credential/credential.conf
1863 src/include/Makefile
1864 src/integration-tests/Makefile
1866 src/hostlist/Makefile
1869 src/namecache/Makefile
1870 src/namecache/namecache.conf
1871 src/namestore/Makefile
1872 src/namestore/namestore.conf
1875 src/nat-auto/Makefile
1876 src/nat-auto/nat-auto.conf
1880 src/peerinfo/Makefile
1881 src/peerinfo/peerinfo.conf
1882 src/peerinfo-tool/Makefile
1883 src/peerstore/Makefile
1884 src/peerstore/peerstore.conf
1888 src/regex/regex.conf
1889 src/revocation/Makefile
1890 src/revocation/revocation.conf
1893 src/secretsharing/Makefile
1894 src/secretsharing/secretsharing.conf
1895 src/scalarproduct/Makefile
1896 src/scalarproduct/scalarproduct.conf
1900 src/statistics/Makefile
1901 src/statistics/statistics.conf
1902 src/template/Makefile
1903 src/testbed/Makefile
1904 src/testbed/testbed.conf
1905 src/testbed-logger/Makefile
1906 src/testbed-logger/testbed-logger.conf
1907 src/testing/Makefile
1908 src/topology/Makefile
1909 src/transport/Makefile
1910 src/transport/transport.conf
1912 src/util/resolver.conf
1915 src/zonemaster/Makefile
1916 src/zonemaster/zonemaster.conf
1919 src/reclaim-attribute/Makefile
1920 src/reclaim/Makefile
1922 pkgconfig/gnunetarm.pc
1923 pkgconfig/gnunetats.pc
1924 pkgconfig/gnunetblock.pc
1925 pkgconfig/gnunetcadet.pc
1926 pkgconfig/gnunetconsensus.pc
1927 pkgconfig/gnunetconversation.pc
1928 pkgconfig/gnunetcore.pc
1929 pkgconfig/gnunetdatacache.pc
1930 pkgconfig/gnunetdatastore.pc
1931 pkgconfig/gnunetdht.pc
1932 pkgconfig/gnunetdns.pc
1933 pkgconfig/gnunetenv.pc
1934 pkgconfig/gnunetfragmentation.pc
1935 pkgconfig/gnunetfs.pc
1936 pkgconfig/gnunetgns.pc
1937 pkgconfig/gnunethello.pc
1938 pkgconfig/gnunetidentity.pc
1939 pkgconfig/gnunetmicrophone.pc
1940 pkgconfig/gnunetmysql.pc
1941 pkgconfig/gnunetnamestore.pc
1942 pkgconfig/gnunetnat.pc
1943 pkgconfig/gnunetnse.pc
1944 pkgconfig/gnunetpeerinfo.pc
1945 pkgconfig/gnunetpq.pc
1946 pkgconfig/gnunetregex.pc
1947 pkgconfig/gnunetrevocation.pc
1948 pkgconfig/gnunetrps.pc
1949 pkgconfig/gnunetscalarproduct.pc
1950 pkgconfig/gnunetset.pc
1951 pkgconfig/gnunetspeaker.pc
1952 pkgconfig/gnunetstatistics.pc
1953 pkgconfig/gnunettestbed.pc
1954 pkgconfig/gnunettesting.pc
1955 pkgconfig/gnunettransport.pc
1956 pkgconfig/gnunetutil.pc
1957 pkgconfig/gnunetvpn.pc
1963 # warn user if mysql found but not used due to version
1964 AS_IF([test "$mysqlfail" = "true"]
1965 [AC_MSG_NOTICE([WARNING: optional MySQL not found (or too old)])])
1968 AS_IF([test "x$sqlite" = "x0"],
1969 [AC_MSG_ERROR([ERROR: sqlite3 not found, but sqlite3 is required.])])
1972 AS_IF([test "$gnurl" = "0"],
1973 [AS_IF([test "x$curl" = "xfalse"],
1974 [AC_MSG_NOTICE([WARNING: libgnurl not found. http client support will not be compiled.])
1975 AC_MSG_WARN([ERROR: libgnurl not found. hostlist daemon will not be compiled, and you probably WANT the hostlist daemon])],
1976 [AC_MSG_NOTICE([WARNING: libgnurl not found, trying to use libcurl-gnutls instead.])])])
1979 AS_IF([test "x$bluetooth" = "x0"],
1980 [AC_MSG_NOTICE([WARNING: optional bluetooth library not found.])])
1984 AS_IF([test "x$jansson" = "x0"],
1985 [AC_MSG_NOTICE([WARNING: optional jansson library not found.])])
1988 # FIXME: `some modules' -> be more specific which exact modules.
1991 # warn user if iptables is not found
1992 AS_IF([test "$VAR_IPTABLES_BINARY" = "false"],
1993 [AC_MSG_NOTICE([WARNING: optional iptables not found])])
1995 # warn user if ifconfig is not found
1996 AS_IF([test "$VAR_IFCONFIG_BINARY" = "false"],
1997 [AC_MSG_NOTICE([WARNING: optional ifconfig not found])])
1999 # warn user if upnpc binary is not found
2000 AS_IF([test "$VAR_UPNPC_BINARY" = "false"],
2001 [AC_MSG_NOTICE([WARNING: optional upnpc binary not found])])
2004 AS_IF([test x$gnutls != xtrue],
2005 [AC_MSG_NOTICE([WARNING: GnuTLS not found, gnunet-gns-proxy will not be built])],
2006 [AS_IF([test "x$gnutls_dane" != "x1"],
2007 [AC_MSG_NOTICE([WARNING: GnuTLS has no DANE support, DANE validation will not be possible])])])
2009 # warn user if libzbar is not found
2010 AS_IF([test "$have_zbar" = 0],
2011 [AC_MSG_NOTICE([WARNING: zbar not found, gnunet-qr will not be built.])])
2014 AS_IF([test "x$enable_java_ports" = "xyes"],
2015 [AC_MSG_NOTICE([NOTICE: Opening ports for gnunet-java bindings by default.])])
2018 AS_IF([test "x$lmhd" != "x1"],
2019 [AC_MSG_NOTICE([WARNING: optional libmicrohttpd not found])])
2022 AS_IF([test "x$conversation_backend" = "xnone"],
2023 [AS_IF([test "x$pulse" != "x1"],
2024 [AC_MSG_NOTICE([WARNING: libpulse(audio) not found, conversation will not be built.])])
2025 AS_IF([test "x$opus" != "x1"],
2026 [AC_MSG_NOTICE([WARNING: libopus not found, conversation will not be built.])])
2027 AS_IF([test "x$gst" != "x1"],
2028 [AC_MSG_NOTICE([WARNING: GStreamer not found, conversation will not be built.])])])
2030 AS_IF([test "$extractor" != 1],
2031 [AC_MSG_WARN([ERROR: libextractor not found, but various file-sharing functions require it])])
2033 AS_IF([test "x$working_libidn2" = x1],
2034 [AC_MSG_NOTICE([INFO: Using libidn2])])
2035 AS_IF([test "x$working_libidn1" = x1],
2036 [AC_MSG_NOTICE([INFO: Using libidn1])])
2038 AC_MSG_NOTICE([NOTICE: Database support is set to MySQL: $mysql, SQLite: $sqlite, Postgres: $postgres])
2040 AS_IF([test "$enable_framework_build" = "yes"],
2041 [AC_MSG_NOTICE([Mac OS X framework build enabled.])])
2043 AC_MSG_NOTICE([********************************************
2044 Please make sure NOW that you have created a user and group 'gnunet'
2045 and additionally a group 'gnunetdns'. On Debian and Ubuntu GNU/Linux, type:
2047 adduser --system --group --disabled-login --home /var/lib/gnunet gnunet
2049 Make sure that '/var/lib/gnunet' is owned (and writable) by user
2050 'gnunet'. Then, you can compile GNUnet with
2053 After that, run (if necessary as 'root')
2055 to install everything.
2057 Each GNUnet user should be added to the 'gnunet' group (may
2058 require fresh login to come into effect):
2059 adduser USERNAME gnunet
2060 (run the above command as root once for each of your users, replacing
2061 "USERNAME" with the respective login names). If you have a global IP
2062 address, no further configuration is required.
2064 For more detailed setup instructions, see https://docs.gnunet.org/
2066 Optionally, download and compile gnunet-gtk to get a GUI for
2067 file-sharing and configuration. This is particularly recommended
2068 if your network setup is non-trivial, as gnunet-setup can be
2069 used to test in the GUI if your network configuration is working.
2070 gnunet-setup should be run as the "gnunet" user under X. As it
2071 does very little with the network, running it as "root" is likely
2072 also harmless. You can also run it as a normal user, but then
2073 you have to copy ~/.gnunet/gnunet.conf" over to the "gnunet" user's
2074 home directory in the end.
2076 Once you have configured your peer, run (as the 'gnunet' user)
2078 to start the peer. You can then run the various GNUnet-tools as
2079 your "normal" user (who should only be in the group 'gnunet').
2080 ********************************************])