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])
181 AC_DEFINE_UNQUOTED([GNUNET_DEFAULT_INTERFACE], $DEFAULT_INTERFACE, [This should be the default choice for the name of the first network interface])
182 AC_SUBST(DEFAULT_INTERFACE)
184 # Disable TCP-based IPC on systems that support UNIX domain
185 # sockets in default configuratin:
189 AC_MSG_CHECKING([for build target])
190 AM_CONDITIONAL(DARWIN, test "$build_target" = "darwin")
191 AM_CONDITIONAL(CYGWIN, test "$build_target" = "cygwin")
192 AM_CONDITIONAL(MINGW, test "$build_target" = "mingw")
193 AM_CONDITIONAL(SOLARIS, test "$build_target" = "solaris")
194 AM_CONDITIONAL(XFREEBSD, test "$build_target" = "freebsd")
195 AM_CONDITIONAL(OPENBSD, test "$build_target" = "openbsd")
196 AM_CONDITIONAL(LINUX, test "$build_target" = "linux")
197 AM_CONDITIONAL(GNU, test "$build_target" = "gnu")
199 AC_MSG_RESULT([$build_target])
200 AC_SUBST(build_target)
201 AM_CONDITIONAL([am__fastdepOBJC], false)
202 AC_UNALIGNED_64_ACCESS
204 # some other checks for standard libs
205 AC_SEARCH_LIBS([gethostbyname], [nsl ws2_32])
206 AC_SEARCH_LIBS([memrchr], [],
207 AC_DEFINE(HAVE_MEMRCHR,1,[memrchr supported]), [])
208 AC_SEARCH_LIBS([memset_s], [],
209 AC_DEFINE(HAVE_MEMSET_S,1,[memset_s supported]), [])
210 AC_SEARCH_LIBS([memset_s], [],
211 AC_DEFINE(HAVE_EXPLICIT_BZERO,1,[explicit_bzero supported]), [])
212 AC_CHECK_LIB(socket, socket)
214 AC_CHECK_LIB(c, getloadavg, AC_DEFINE(HAVE_GETLOADAVG,1,[getloadavg supported]))
216 AC_CHECK_PROG(VAR_GETOPT_BINARY, getopt, true, false)
217 AM_CONDITIONAL(HAVE_GETOPT_BINARY, $VAR_GETOPT_BINARY)
219 AC_CHECK_PROG(VAR_SSH_BINARY, ssh, true, false)
220 AM_CONDITIONAL(HAVE_SSH_BINARY, $VAR_SSH_BINARY)
221 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)
222 rm -f /tmp/gnunet_test_cosks_ssh_garbage
224 # autotools' m4 for python has no maximum version!
225 # python3.4 - python3.7 for tests
226 m4_define_default([_AM_PYTHON_INTERPRETER_LIST],[python3 python3.4 python3.5 python3.6 python3.7 python])
227 AM_PATH_PYTHON([3.4],, [:])
229 AM_CONDITIONAL([HAVE_PYTHON], [test "$PYTHON" != :])
232 AC_PATH_PROG( PERL, perl, ,
233 $PATH:/usr/local/bin/perl:/usr/bin/:/usr/local/bin )
236 # iptables is a soft requirement to run tests
237 AC_PATH_TARGET_TOOL(VAR_IPTABLES_BINARY, iptables, false)
239 AS_IF([test x"$VAR_IPTABLES_BINARY" = x"false"],
240 [AS_IF([test -x "/sbin/iptables"],
241 [VAR_IPTABLES_BINARY="/sbin/iptables"],
242 [AS_IF([test -x "/usr/sbin/iptables"],
243 [VAR_IPTABLES_BINARY="/usr/sbin/iptables"])])])
245 AS_IF([test x"$VAR_IPTABLES_BINARY" != x"false"],
246 [AC_DEFINE_UNQUOTED([IPTABLES], "$VAR_IPTABLES_BINARY", [Path to iptables])],
247 [AC_MSG_WARN([warning: 'iptables' not found.])])
249 # ip6tables is a soft requirement for some features
250 AC_PATH_TARGET_TOOL(VAR_IP6TABLES_BINARY, ip6tables, false)
252 AS_IF([test x"$VAR_IP6TABLES_BINARY" = x"false"],
253 [AS_IF([test -x "/sbin/ip6tables"],
254 [VAR_IP6TABLES_BINARY="/sbin/ip6tables"],
255 [AS_IF([test -x "/usr/sbin/ip6tables"],
256 [VAR_IP6TABLES_BINARY="/usr/sbin/ip6tables"])])])
259 AS_IF([test x"$VAR_IP6TABLES_BINARY" != x"false"],
260 [AC_DEFINE_UNQUOTED([IP6TABLES], "$VAR_IP6TABLES_BINARY", [Path to ip6tables])],
261 [AC_MSG_WARN([warning: 'ip6tables' not found.])])
263 # ip is a soft requirement for some features
264 AC_PATH_TARGET_TOOL(VAR_IP_BINARY, ip, false)
266 AS_IF([test x"$VAR_IP_BINARY" = x"false"],
267 [AS_IF([test -x "/sbin/ip"],
268 [VAR_IP_BINARY="/sbin/ip"],
269 [AS_IF([test -x "/usr/sbin/ip"],
270 [VAR_IP_BINARY="/usr/sbin/ip"])])])
272 AS_IF([test x"$VAR_IP_BINARY" != x"false"],
273 [AC_DEFINE_UNQUOTED([PATH_TO_IP], "$VAR_IP_BINARY", [Path to ip])],
274 [AC_MSG_WARN([warning: 'ip' not found.])])
277 AC_PATH_TARGET_TOOL(VAR_IFCONFIG_BINARY, ifconfig, false)
279 AC_CHECK_PROG(VAR_IFCONFIG_BINARY, ifconfig, true, false)
280 AS_IF([test x"$VAR_IFCONFIG_BINARY" = x"false"],
281 [AS_IF([test -x "/sbin/ifconfig"],
282 [VAR_IFCONFIG_BINARY="/sbin/ifconfig"],
283 [AS_IF([test -x "/usr/sbin/ifconfig"],
284 [VAR_IFCONFIG_BINARY="/usr/sbin/ifconfig"])])])
286 AS_IF([test x"$VAR_IFCONFIG_BINARY" != x"false"],
287 [AC_DEFINE_UNQUOTED([IFCONFIG], "$VAR_IFCONFIG_BINARY", [Path to ifconfig])],
288 [AC_MSG_WARN(['ifconfig' not found.])])
291 AC_PATH_TARGET_TOOL(VAR_SYSCTL_BINARY, sysctl, false)
293 AC_CHECK_PROG(VAR_SYSCTL_BINARY, sysctl, true, false)
294 AS_IF([test x"$VAR_SYSCTL_BINARY" = x"false"],
295 [AS_IF([test -x "/sbin/sysctl"],
296 [VAR_SYSCTL_BINARY="/sbin/sysctl"],
297 [AS_IF([test -x "/usr/sbin/sysctl"],
298 [VAR_SYSCTL_BINARY="/usr/sbin/sysctl"])])])
299 AS_IF([test x"$VAR_SYSCTL_BINARY" != x"false"],
300 [AC_DEFINE_UNQUOTED([SYSCTL], "$VAR_SYSCTL_BINARY", [Path to sysctl])],
301 [AC_MSG_WARN(['sysctl' not found.])])
303 # miniupnpc / upnpc binary is a soft runtime requirement
304 AC_PATH_TARGET_TOOL(VAR_UPNPC_BINARY, upnpc, false)
306 AS_IF([test x"$VAR_UPNPC_BINARY" != x"false"],
307 [AC_DEFINE_UNQUOTED([UPNPC], "$VAR_UPNPC_BINARY", [Path to upnpc binary])],
308 [AC_MSG_WARN([warning: 'upnpc' binary not found.])])
310 AC_CHECK_MEMBER(struct tm.tm_gmtoff,
311 [AC_DEFINE(HAVE_TM_GMTOFF, 1,
312 [Define if struct tm has the tm_gmtoff member.])],
316 AC_CHECK_DECLS([_stati64])
318 # 'save' libs; only those libs found so far will be
319 # linked against _everywhere_. For the others, we
320 # will be more selective!
324 AC_CHECK_LIB(anl, getaddrinfo_a, [have_addrinfo_a=1 AC_DEFINE(HAVE_GETADDRINFO_A,1,[getaddrinfo_a supported])])
325 AM_CONDITIONAL(HAVE_GETADDRINFO_A, [test "$have_addrinfo_a" = 1])
328 # tests only run on Windows
329 AS_IF([test "x$build_target" = "xmingw"],
330 [AC_CHECK_LIB(plibc, plibc_init, [], [AC_MSG_ERROR([GNUnet requires PlibC on Windows])])
331 AC_CHECK_LIB(gnurx, regexec, [], [AC_MSG_ERROR([GNUnet requires libgnurx on Windows])])])
336 NEED_LIBGCRYPT_VERSION=1.6.0
339 AM_PATH_LIBGCRYPT("$NEED_LIBGCRYPT_API:$NEED_LIBGCRYPT_VERSION", gcrypt=1)
340 AC_CHECK_DECLS([gcry_mpi_set_opaque_copy], [], [], [[#include <gcrypt.h>]])
342 AS_IF([test $gcrypt = 0],
346 *** You need libgcrypt to build this program.
347 ** This library is for example available at
348 *** ftp://ftp.gnupg.org/gcrypt/libgcrypt/
349 *** (at least version $NEED_LIBGCRYPT_VERSION (API $NEED_LIBGCRYPT_API)
353 AC_DEFINE_UNQUOTED([NEED_LIBGCRYPT_VERSION], "$NEED_LIBGCRYPT_VERSION", [required libgcrypt version])
355 AC_CHECK_DECLS([struct in6_ifreq], [], [], [[#include <linux/if_tun.h>]])
359 # should the build process be building the documentation?
360 AC_MSG_CHECKING(whether to build documentation)
361 AC_ARG_ENABLE([documentation],
362 [AS_HELP_STRING([--disable-documentation], [do not build the documentation])],
363 [documentation=${enableval}],
365 AC_MSG_RESULT($documentation)
366 AS_IF([test "x$documentation" = "xyes"],
368 AM_CONDITIONAL([DOCUMENTATION],true)
369 AC_DEFINE([DOCUMENTATION],[1],[Building the documentation])
371 AM_CONDITIONAL([DOCUMENTATION],false)
372 AC_DEFINE([DOCUMENTATION],[0],[Not building the documentation])
375 # FIXME: Something is wrong about this in the output of ./configure runs
376 AC_MSG_CHECKING(wether to include generated texi2mdoc output in installation)
377 AC_ARG_ENABLE([texi2mdoc-generation],
378 [AS_HELP_STRING([--enable-texi2mdoc-generation], [include generated texi2mdoc output in installation])],
379 [texi2mdoc_generation=${enableval}],
380 [texi2mdoc_generation=no])
381 AC_MSG_RESULT($texi2mdoc_generation)
382 AS_IF([test "x$texi2mdoc_generation" = "xyes"],
384 AS_IF([test "$texi2mdoc" = 0],
386 AC_MSG_WARN([ERROR: mdoc output currently requires texi2mdoc.])
387 AC_MSG_WARN([ERROR: texi2mdoc can be obtained via your Operating System])
388 AC_MSG_WARN([ERROR: package manager or from https://mandoc.bsd.lv/texi2mdoc/])
390 AM_CONDITIONAL([TEXI2MDOC_GENERATION],true)
391 AC_DEFINE([TEXI2MDOC_GENERATION],[1],[Building section 7 mdoc output])
394 AM_CONDITIONAL([TEXI2MDOC_GENERATION],false)
395 AC_DEFINE([TEXI2MDOC_GENERATION],[0],[Not building section 7 mdoc output])
398 # should the build process be building only the documentation?
399 AC_MSG_CHECKING(whether to build only documentation)
400 AC_ARG_ENABLE([documentation-only],
401 [AS_HELP_STRING([--enable-documentation-only], [build only the documentation])],
402 [documentation_only=${enableval}],
403 [documentation_only=no])
404 AC_MSG_RESULT($documentation_only)
405 AS_IF([test "x$documentation_only" = "xyes"],
407 AM_CONDITIONAL([DOCUMENTATION_ONLY],true)
408 AC_DEFINE([DOCUMENTATION_ONLY],[1],[Building only the documentation])
410 AM_CONDITIONAL([DOCUMENTATION_ONLY],false)
411 AC_DEFINE([DOCUMENTATION_ONLY],[0],[Not building only the documentation])
414 # should the build process be including the manpages? (default: yes)
415 AC_MSG_CHECKING(whether to include man pages)
416 AC_ARG_ENABLE([include-manpages],
417 [AS_HELP_STRING([--disable-include-manpages], [Do not include the man pages in build and installation])],
418 [include_manpages=${enableval}],
419 [include_manpages=yes])
420 AC_MSG_RESULT($include_manpages)
421 AS_IF([test "x$include_manpages" = "xyes"],
423 AM_CONDITIONAL([INCLUDE_MANPAGES],true)
424 AC_DEFINE([INCLUDE_MANPAGES],[1],[Including the man pages in the build and installation])
426 AM_CONDITIONAL([INCLUDE_MANPAGES],false)
427 AC_DEFINE([INCLUDE_MANPAGES],[0],[Not including the man pages in the build and installation])
430 # Adam shostack suggests the following for Windows:
431 # -D_FORTIFY_SOURCE=2 -fstack-protector-all
432 AC_ARG_ENABLE(gcc-hardening,
433 AS_HELP_STRING(--enable-gcc-hardening, enable compiler security checks),
434 [AS_IF([test x$enableval = xyes],[
435 CFLAGS="$CFLAGS -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fstack-protector-all"
436 CFLAGS="$CFLAGS -fwrapv -fPIE -Wstack-protector"
437 CFLAGS="$CFLAGS --param ssp-buffer-size=1"
438 LDFLAGS="$LDFLAGS -pie"
441 # Linker hardening options
442 # Currently these options are ELF specific - you can't use this with MacOSX
443 AC_ARG_ENABLE(linker-hardening,
444 AS_HELP_STRING(--enable-linker-hardening, enable linker security fixups),
445 [AS_IF([test x$enableval = xyes],
446 [LDFLAGS="$LDFLAGS -z relro -z now"])])
449 AC_ARG_ENABLE(sanitizer,
450 AS_HELP_STRING(--enable-sanitizer, enable Address Sanitizer and Undefined Behavior Sanitizer),
451 [AS_IF([test x$enableval = xyes],[
452 LDFLAGS="$CFLAGS -fsanitize=address,undefined -fno-omit-frame-pointer"
456 extra_logging=GNUNET_NO
457 AC_ARG_ENABLE([logging],
458 AS_HELP_STRING([--enable-logging@<:@=value@:>@],[Enable logging calls. Possible values: yes,no,verbose,veryverbose ('yes' is the default)]),
459 [AS_IF([test "x$enableval" = "xyes"], [],
460 [test "x$enableval" = "xno"], [AC_DEFINE([GNUNET_CULL_LOGGING],[],[Define to cull all logging calls])],
461 [test "x$enableval" = "xverbose"], [extra_logging=GNUNET_YES]
462 [test "x$enableval" = "xveryverbose"], [extra_logging=\(GNUNET_YES+1\)])
464 AC_DEFINE_UNQUOTED([GNUNET_EXTRA_LOGGING],[$extra_logging],[1 if extra logging is enabled, 2 for very verbose extra logging, 0 otherwise])
466 # should memory poisoning be enabled?
467 AC_MSG_CHECKING(whether to poison freed memory)
468 AC_ARG_ENABLE([poisoning],
469 [AS_HELP_STRING([--enable-poisoning], [enable poisoning of freed memory (good for debugging)])],
470 [enable_poisoning=${enableval}],
472 AS_IF([test "x$extra_logging" != "xGNUNET_NO"],
473 [enable_poisoning="defaults to yes (extra logging is enabled)"],
474 [enable_poisoning=no])
476 AC_MSG_RESULT($enable_poisoning)
477 AS_IF([test ! "x$enable_poisoning" = "xno"],
478 [enable_poisoning=1],
479 [enable_poisoning=0])
480 AC_DEFINE_UNQUOTED([ENABLE_POISONING],[$enable_poisoning],[1 if freed memory should be poisoned, 0 otherwise])
482 AS_IF([test $build = $target],
484 AC_MSG_CHECKING([for working HMAC])
486 LIBS="$LIBS $LIBGCRYPT_LIBS"
487 CFLAGS="$CFLAGS $LIBGCRYPT_CFLAGS"
489 [AC_LANG_PROGRAM([#include <gcrypt.h>
490 #include <stdio.h>], [[
493 unsigned char data[] = { 0xbf, 0x16, 0x6e, 0x46, 0x3a, 0x6c, 0xf3, 0x93, 0xa7, 0x72,
494 0x11, 0xa1, 0xdc, 0x0b, 0x07, 0xdb, 0x1a, 0x5e, 0xd9, 0xb9, 0x81, 0xbe,
495 0xea, 0xe4, 0x31, 0x5f, 0x24, 0xff, 0xfe, 0x50, 0x8a, 0xde };
496 unsigned char key[] = { 0xfc, 0x62, 0x76, 0x35 };
497 unsigned char result[] = {0xa2, 0xb, 0x1, 0xd9, 0xc0, 0x8b, 0x5a, 0x12, 0x80,
498 0xd5, 0x50, 0x12, 0x8e, 0xd0, 0x5b, 0xb6, 0x5c, 0x87, 0x24, 0xe2, 0xd0,
499 0xd2, 0xaf, 0x63, 0xae, 0xd1, 0xd6, 0x64, 0x14, 0xe3, 0x6e, 0x61, 0x5b,
500 0xd, 0xba, 0x17, 0x7d, 0xd3, 0x10, 0xb1, 0x37, 0x41, 0x91, 0x7d, 0xeb,
501 0x1, 0x4d, 0x71, 0xe8, 0x59, 0x71, 0x42, 0x8e, 0xd6, 0xf3, 0x29, 0x3b,
502 0x90, 0xf2, 0xd1, 0xaf, 0x65, 0x1e, 0xb3};
504 if (!gcry_check_version (GCRYPT_VERSION))
506 fprintf (stderr, "Version mismatch %s <-> %s \n", gcry_check_version (NULL), GCRYPT_VERSION);
510 gcry_control (GCRYCTL_DISABLE_SECMEM, 0);
511 gcry_control (GCRYCTL_INITIALIZATION_FINISHED, 0);
513 if (gcry_md_open(&mac, GCRY_MD_SHA512, GCRY_MD_FLAG_HMAC) != GPG_ERR_NO_ERROR)
515 fprintf (stderr, "gcry_md_open error\n");
519 gcry_md_setkey (mac, key, sizeof (key));
520 gcry_md_write (mac, data, sizeof (data));
522 if (memcmp(gcry_md_read (mac, 0), result, gcry_md_get_algo_dlen (gcry_md_get_algo (mac))) != 0)
524 fprintf (stderr, "memcmp error\n");
532 [AC_MSG_RESULT([yes])],
537 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.])
541 AC_MSG_FAILURE([HMAC test failed])
545 AC_MSG_FAILURE([libgcrypt header version does not match library version])
548 [AC_MSG_RESULT([cross compiling, test skipped])])
550 ]) # $build = $target
552 # check for bluetooth library
554 AC_CHECK_LIB(bluetooth, ba2str,[AC_CHECK_HEADER([bluetooth/bluetooth.h],bluetooth=1)])
555 AS_IF([test "$build_target" = "mingw"],
557 AM_CONDITIONAL(HAVE_LIBBLUETOOTH, [test "$bluetooth" = 1])
558 AS_IF([test "$bluetooth" = 1],
559 [AC_DEFINE([HAVE_LIBBLUETOOTH],[1],[Have bluetooth library])],
560 [AC_DEFINE([HAVE_LIBBLUETOOTH],[0],[Lacking bluetooth library])])
562 # check for zbar library
564 AC_MSG_CHECKING(for libzbar)
566 [ --with-zbar=PFX base of libzbar installation],
567 [AC_MSG_RESULT([$with_zbar])
568 AS_CASE([$with_zbar],
571 AC_CHECK_HEADERS(zbar.h,
572 AC_CHECK_LIB([zbar], [zbar_processor_create],
575 LDFLAGS="-L$with_zbar/lib $LDFLAGS"
576 CPPFLAGS="-I$with_zbar/include $CPPFLAGS"
577 AC_CHECK_HEADERS(zbar.h,
578 AC_CHECK_LIB([zbar], [zbar_processor_create],
579 EXT_LIB_PATH="-L$with_zbar/lib $EXT_LIB_PATH"
583 [AC_MSG_RESULT([--with-zbar not specified])
584 AC_CHECK_HEADERS(zbar.h,
585 AC_CHECK_LIB([zbar], [zbar_processor_create],
587 AM_CONDITIONAL(HAVE_ZBAR, [test "$zbar" = 1])
588 AS_IF([test "x$zbar" = x1],
589 [AC_DEFINE([HAVE_ZBAR],[1],[Have zbar library])],
590 [AC_DEFINE([HAVE_ZBAR],[0],[Lacking zbar library])])
592 # check for jansson library
594 AC_MSG_CHECKING(for libjansson)
596 [ --with-jansson=PFX base of libjansson installation],
597 [AC_MSG_RESULT([$with_jansson])
598 AS_CASE([$with_jansson],
601 AC_CHECK_HEADERS(jansson.h,
602 AC_CHECK_LIB([jansson], [json_loads],
605 LDFLAGS="-L$with_jansson/lib $LDFLAGS"
606 CPPFLAGS="-I$with_jansson/include $CPPFLAGS"
607 AC_CHECK_HEADERS(jansson.h,
608 AC_CHECK_LIB([jansson], [json_loads],
609 EXT_LIB_PATH="-L$with_jansson/lib $EXT_LIB_PATH"
613 [AC_MSG_RESULT([--with-jansson not specified])
614 AC_CHECK_HEADERS(jansson.h,
615 AC_CHECK_LIB([jansson], [json_loads],
617 AM_CONDITIONAL(HAVE_JANSSON, [test "$jansson" = 1])
618 AM_CONDITIONAL(HAVE_JSON, [test x$jansson = x1])
619 AS_IF([test "x$jansson" = x1],
620 [AC_DEFINE([HAVE_JANSSON],[1],[Have jansson library])],
621 [AC_DEFINE([HAVE_JANSSON],[0],[Lacking jansson library])])
624 # check for libpulse(audio) library
626 AC_CHECK_LIB(pulse,pa_stream_peek,
627 [AC_CHECK_HEADER([pulse/simple.h],pulse=1)])
628 AS_IF([test "$build_target" = "mingw"],
630 AS_IF([test "$pulse" = 1],
631 [AC_DEFINE([HAVE_PULSE],[1],[Have libpulse(audio) library])])
633 # check for libopus(audio) library
635 AC_CHECK_LIB(opus,opus_decode_float,
636 [AC_CHECK_HEADER([opus/opus.h],
637 [AC_CHECK_DECL([OPUS_SET_GAIN],[opus=1],[],[[#include <opus/opus.h>]]
641 AS_IF([test "x$opus" = x1],
642 [AC_DEFINE([HAVE_OPUS],[1],[Have libopus library])])
645 AC_CHECK_LIB(ogg, ogg_stream_flush_fill,
646 [AC_CHECK_HEADERS([ogg/ogg.h],
647 AM_CONDITIONAL(HAVE_OGG, true)
649 AC_DEFINE(HAVE_OGG,1,[Have ogg]),
650 AM_CONDITIONAL(HAVE_OGG, false)
652 AC_DEFINE(HAVE_OGG,0,[lacking ogg]))],
653 AM_CONDITIONAL(HAVE_OGG, false)
657 PKG_CHECK_MODULES([GLIB],
659 [# check for pbc library
661 AC_CHECK_HEADER([pbc/pbc.h],pbc=1)
662 AC_CHECK_HEADER([gabe.h],abe=1)
663 AM_CONDITIONAL(HAVE_PBC, [test "x$pbc" = x1])
664 AM_CONDITIONAL(HAVE_ABE, [test "x$abe" = x1])
665 AS_IF([test "x$pbc" = x1],
666 [AC_DEFINE([HAVE_PBC],[1],[Have pbc library])],
667 [AC_DEFINE([HAVE_PBC],[0],[Lacking pbc library])])
668 AS_IF([test "x$abe" = x1],
669 [AC_DEFINE([HAVE_ABE],[1],[Have ABE library])],
670 [AC_DEFINE([HAVE_ABE],[0],[Lacking ABE library])])],
672 AM_CONDITIONAL(HAVE_PBC, [false])
673 AM_CONDITIONAL(HAVE_ABE, [false])
674 AC_DEFINE([HAVE_PBC],[0],[Lacking glib library])])
679 [glib-2.0 gobject-2.0 gstreamer-1.0 gstreamer-app-1.0 gstreamer-audio-1.0],
684 AS_IF([test "x$pulse" != "x1" -o "x$opus" != "x1" -o "x$ogg" != "x1"],[
685 AS_IF([test "x$gst" != "x1"],[
686 conversation_backend=none
687 AM_CONDITIONAL(BUILD_PULSE_HELPERS, false)
688 AM_CONDITIONAL(BUILD_GST_HELPERS, false)
689 AM_CONDITIONAL(BUILD_EXPERIMENTAL_HELPERS, false)
691 conversation_backend=gst
692 AM_CONDITIONAL(BUILD_PULSE_HELPERS, false)
693 AM_CONDITIONAL(BUILD_GST_HELPERS, true)
694 AM_CONDITIONAL(BUILD_EXPERIMENTAL_HELPERS, false)
697 conversation_backend=pulse
698 AM_CONDITIONAL(BUILD_PULSE_HELPERS, true)
699 AM_CONDITIONAL(BUILD_GST_HELPERS, false)
700 AM_CONDITIONAL(BUILD_EXPERIMENTAL_HELPERS, false)
704 LIBGNURL_CHECK_CONFIG(,7.34.0,gnurl=1,gnurl=0)
706 SAVE_CPPFLAGS=$CPPFLAGS
707 CPPFLAGS="$LIBGNURL_CPPFLAGS $LIBCURL_CPPFLAGS $CPPFLAGS"
708 LIBS="$LIBGNURL $LIBCURL $LIBS"
711 LIBCURL_CHECK_CONFIG(,7.34.0,[curl=true],[curl=false])
712 AS_IF([test "x$curl" = xtrue],[
713 AC_CHECK_HEADER([curl/curl.h],
714 AC_CHECK_DECLS(CURLINFO_TLS_SESSION,[curl=true],[curl=false],[[#include <curl/curl.h>]]),
716 # need libcurl-gnutls.so, everything else is not acceptable
717 AC_CHECK_LIB([curl-gnutls],[curl_easy_getinfo],,[curl=false])
718 # cURL must support CURLINFO_TLS_SESSION, version >= 7.34
721 # libcurl and libgnurl should be mutually exclusive
722 AS_IF([test "$gnurl" = 1],
723 [AM_CONDITIONAL(HAVE_LIBGNURL, true)
724 AC_DEFINE([HAVE_LIBGNURL],[1],[Have libgnurl])
725 AM_CONDITIONAL(HAVE_LIBCURL, false)
726 AC_DEFINE([HAVE_LIBCURL],[0],[Lacking libcurl])],
727 [AS_IF([test "$curl" = true],
728 [AM_CONDITIONAL(HAVE_LIBGNURL, false)
729 AC_DEFINE([HAVE_LIBGNURL],[0],[Lacking libgnurl])
730 AM_CONDITIONAL(HAVE_LIBCURL, true)
731 AC_DEFINE([HAVE_LIBCURL],[1],[Have libcurl])],
732 [AC_MSG_WARN([ERROR: GNUnet requires libcurl-gnutls or gnurl >= 7.34])
733 AM_CONDITIONAL(HAVE_LIBGNURL, false)
734 AC_DEFINE([HAVE_LIBGNURL],[0],[Lacking libgnurl])
735 AM_CONDITIONAL(HAVE_LIBCURL, false)
736 AC_DEFINE([HAVE_LIBCURL],[0],[Lacking libcurl])])])
738 AC_SEARCH_LIBS(__atomic_load_8, atomic, [have_libatomic=1 AC_DEFINE(HAVE_LIBATOMIC,1,[external libatomic])])
739 AM_CONDITIONAL(HAVE_LIBATOMIC, [test "$have_libatomic" = 1])
741 # restore LIBS & CPPFLAGS
743 CPPFLAGS=$SAVE_CPPFLAGS
745 AC_CHECK_HEADERS([glpk.h],[glpk=true],[glpk=false])
746 # GLPK must support glpk_init_env, version >= 4.43
747 AC_CHECK_LIB([glpk],[glp_init_env],,[glpk=false])
748 # GLPK must support atm MLP presolving, version >= 4.32
749 AC_CHECK_MEMBERS(glp_iocp.presolve,,[glpk=false],[[#include <glpk.h>]])
750 AS_IF([test "x$glpk" = xfalse],
752 AM_CONDITIONAL(HAVE_LIBGLPK, false)
753 AC_MSG_WARN([ERROR: GNUnet requires GLPK >= 4.32])
755 AM_CONDITIONAL(HAVE_LIBGLPK, true)
756 AC_DEFINE([HAVE_LIBGLPK],[1],[Have GLPK])
760 AC_CHECK_HEADERS([nss.h],[nss=true],[nss=false])
761 AS_IF([test x$nss = xfalse],
763 AM_CONDITIONAL(HAVE_GLIBCNSS, false)
764 AC_MSG_WARN([No GNU libc nss header, will not build NSS plugin])
769 AC_CHECK_DECL([NSS_STATUS_UNAVAIL],
770 [AM_CONDITIONAL(HAVE_GLIBCNSS, true)],
771 [AM_CONDITIONAL(HAVE_GLIBCNSS, false)
772 AC_MSG_WARN([No nss header fails to define NSS_STATUS_UNAVAIl, will not build NSS plugin])],
778 # test for kvm and kstat (for CPU stats under BSD/Solaris)
779 AC_CHECK_LIB([kvm],[kvm_open])
780 AC_CHECK_LIB([kstat],[kstat_open])
783 # should the build process be restricted to the code required
784 # for GNU Taler wallets?
785 AC_MSG_CHECKING(whether to compile GNU Taler Wallet library ONLY)
786 AC_ARG_ENABLE([taler-wallet],
787 [AS_HELP_STRING([--enable-taler-wallet], [only compile for Taler wallet])],
788 [taler_only=${enableval}],
790 AC_MSG_RESULT($taler_only)
791 if test "x$taler_only" = "xyes"
793 AM_CONDITIONAL([TALER_ONLY],true)
794 AC_DEFINE([TALER_WALLET_ONLY],[1],[Compiling for Taler wallet])
796 AM_CONDITIONAL([TALER_ONLY],false)
797 AC_DEFINE([TALER_WALLET_ONLY],[0],[Canonical compilation])
800 # test for libextractor
802 AC_MSG_CHECKING(for libextractor)
803 AC_ARG_WITH(extractor,
804 [ --with-extractor=PFX base of libextractor installation],
805 [AC_MSG_RESULT([$with_extractor])
806 case $with_extractor in
810 AC_CHECK_HEADERS([extractor.h],
811 AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
815 LDFLAGS="-L$with_extractor/lib $LDFLAGS"
816 CPPFLAGS="-I$with_extractor/include $CPPFLAGS"
817 AC_CHECK_HEADERS([extractor.h],
818 AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
819 EXT_LIB_PATH="-L$with_extractor/lib $EXT_LIB_PATH"
824 [AC_MSG_RESULT([--with-extractor not specified])
825 AC_CHECK_HEADERS([extractor.h],
826 AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
831 if test "$extractor" != 1
833 AM_CONDITIONAL(HAVE_LIBEXTRACTOR, false)
834 AC_DEFINE([HAVE_LIBEXTRACTOR],[0],[Lacking libextractor])
836 AM_CONDITIONAL(HAVE_LIBEXTRACTOR, true)
837 AC_DEFINE([HAVE_LIBEXTRACTOR],[1],[Have libextractor])
841 if test "$taler_only" != yes
844 # Check for libltdl header (#2999)
846 AC_MSG_CHECKING(for libltdl)
848 [ --with-ltdl=PFX base of libltdl installation],
849 [AC_MSG_RESULT([$with_ltdl])
854 AC_CHECK_HEADERS(ltdl.h,
855 AC_CHECK_LIB([ltdl], [lt_dlopenext],
859 LDFLAGS="-L$with_ltdl/lib $LDFLAGS"
860 CPPFLAGS="-I$with_ltdl/include $CPPFLAGS"
861 AC_CHECK_HEADERS(ltdl.h,
862 AC_CHECK_LIB([ltdl], [lt_dlopenext],
863 EXT_LIB_PATH="-L$with_ltdl/lib $EXT_LIB_PATH"
868 [AC_MSG_RESULT([--with-ltdl not specified])
869 AC_CHECK_HEADERS(ltdl.h,
870 AC_CHECK_LIB([ltdl], [lt_dlopenext],
874 AC_MSG_RESULT([libltdl found])
876 AC_MSG_ERROR([GNUnet requires libltdl (from GNU libtool), try installing libltdl-dev])
881 # libidn and libidn2. The ideal goal is this:
882 # check for libidn2, if it doesn't exist check for libidn
883 # if both exist, prefer libidn2
884 # if none exist, fail and message that libidn or libidn2
885 # is required with a preference for libidn2.
886 # TODO: What we have right here can probably be improved.
889 AS_HELP_STRING([--with-libidn=pathname],
890 [Support IDN (needs libidn)]),
893 AS_IF([test x_$withval = x_yes],
894 [AC_CHECK_HEADERS([idna.h],
895 AC_MSG_NOTICE([Found idna.h]),
896 AC_CHECK_HEADERS([idn/idna.h],
897 AC_MSG_NOTICE([Found idn/idna.h]),
899 [AS_IF([test x_$withval != x_no],
900 [CFLAGS="$CFLAGS -I$withval/include"
901 LDFLAGS="$LDFLAGS -L$withval/lib"
902 AC_CHECK_HEADERS([idna.h],
903 AC_MSG_NOTICE([Found idna.h]),
904 [AC_MSG_NOTICE([Failed to find idna.h])
906 [my_with_libidn=0])])
910 AS_HELP_STRING([--with-libidn2=pathname],
911 [Support IDN (needs libidn2)]),
914 AS_IF([test x_$withval = x_yes],
915 [AC_CHECK_HEADERS([idn2.h],
916 AC_MSG_NOTICE([Found idn2.h]),
917 AC_CHECK_HEADERS([idn2/idn2.h],
918 AC_MSG_NOTICE([Found idn2/idn2.h]),
919 [AC_MSG_NOTICE([Failed to find idn2.h])
920 my_with_libidn2=0]))],
921 [AS_IF([test x_$withval != x_no],
922 [CFLAGS="$CFLAGS -I$withval/include"
923 LDFLAGS="$LDFLAGS -L$withval/lib"],
924 [my_with_libidn2=0])])
926 AC_MSG_CHECKING([if libidn can be used])
928 there_can_only_be_one=1
932 AS_IF([test x$my_with_libidn2 = x1],
933 [AC_MSG_NOTICE([Checking for libidn2])
935 [idn2_to_unicode_8z8z],
938 AC_DEFINE_UNQUOTED([HAVE_LIBIDN2],
940 [Define to 1 if you have 'libidn2' (-lidn2).])],
941 [MISSING_DEPS="${MISSING_DEPS}${MISSING_SEP}libidn2"
943 AM_CONDITIONAL(HAVE_LIBIDN2, test x$working_libidn2 = x1)
944 AS_IF([test x$working_libidn2 = x0],
945 [AS_IF([test x$my_with_libidn = x1],
946 [AC_MSG_NOTICE([Checking for libidn])
951 AC_DEFINE_UNQUOTED([HAVE_LIBIDN],
953 [Define to 1 if you have 'libidn' (-lidn).])],
954 [there_can_only_be_one=0])],
955 [AS_IF([test x$my_with_libidn2 = x1],
956 [there_can_only_be_one=0
957 AC_MSG_FAILURE([* There can only be one libidn.
958 * Provide either libidn >= 1.13
960 * libidn2 to the configure
963 * --with-libidn])])])])
964 AM_CONDITIONAL(HAVE_LIBIDN, test x$working_libidn1 = x1)
966 AS_IF([test "$working_libidn1" = 0 -a "$working_libidn2" = 0],
967 [AC_MSG_ERROR([GNUnet requires libidn (or libidn2)])])
969 AS_IF([test x$there_can_only_be_one = x0],
970 [AC_MSG_FAILURE([Missing dependencies: $MISSING_DEPS])])
973 SAVE_LDFLAGS=$LDFLAGS
974 SAVE_CPPFLAGS=$CPPFLAGS
976 [ --with-zlib[[=DIR]] use libz in DIR],
977 [AS_IF([test "$withval" = "no"],
978 [AC_MSG_ERROR([GNUnet requires zlib])],
979 [test "$withval" != "yes"],
982 CPPFLAGS="${CPPFLAGS} -I$withval/include"
983 LDFLAGS="${LDFLAGS} -L$withval/lib"
986 AC_CHECK_HEADER(zlib.h,
988 [AC_MSG_ERROR([GNUnet requires zlib])])
989 AC_CHECK_LIB(z, compress2,
991 AC_DEFINE([HAVE_ZLIB], [], [Have compression library])
992 if test "x${Z_DIR}" != "x"; then
993 Z_CFLAGS="-I${Z_DIR}/include"
994 Z_LIBS="-L${Z_DIR}/lib -lz"
998 [AC_MSG_ERROR([GNUnet requires zlib])])
1002 if test "$enable_shared" = "no"
1004 AC_MSG_ERROR([GNUnet only works with shared libraries. Sorry.])
1018 # test for libunistring
1020 if test $HAVE_LIBUNISTRING != yes; then
1021 AC_MSG_ERROR([GNUnet requires libunistring])
1023 # under emscripten, $gl_libunistring_hexversion is undefined
1024 if test "$taler_only" != yes; then
1025 if test "x$gl_libunistring_hexversion" = "x" || test "$gl_libunistring_hexversion" -le 2305; then
1026 AC_MSG_ERROR([GNUnet requires libunistring >= 0.9.1.1])
1029 AC_CHECK_HEADERS([unistr.h],,AC_MSG_ERROR([Compiling GNUnet requires unistr.h (from libunistring) to be installed]))
1036 # Checks for standard header files.
1040 # Check for headers that are ALWAYS required
1041 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]))
1045 # Checks for headers that are only required on some systems or opional (and where we do NOT abort if they are not there)
1046 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])
1048 # FreeBSD requires something more funky for netinet/in_systm.h and netinet/ip.h...
1049 AC_CHECK_HEADERS([sys/types.h netinet/in_systm.h netinet/in.h netinet/ip.h],,,
1050 [#ifdef HAVE_SYS_TYPES_H
1051 #include <sys/types.h>
1053 #ifdef HAVE_NETINET_IN_SYSTM_H
1054 #include <netinet/in_systm.h>
1056 #ifdef HAVE_NETINET_IN_H
1057 #include <netinet/in.h>
1061 SAVE_LDFLAGS=$LDFLAGS
1062 SAVE_CPPFLAGS=$CPPFLAGS
1066 AC_MSG_CHECKING(for SQLite)
1068 [ --with-sqlite=PFX base of SQLite installation],
1069 [AC_MSG_RESULT("$with_sqlite")
1070 case $with_sqlite in
1074 AC_CHECK_HEADERS(sqlite3.h,
1078 LDFLAGS="-L$with_sqlite/lib $LDFLAGS"
1079 CPPFLAGS="-I$with_sqlite/include $CPPFLAGS"
1080 AC_CHECK_HEADERS(sqlite3.h,
1081 EXT_LIB_PATH="-L$with_sqlite/lib $EXT_LIB_PATH"
1082 SQLITE_LDFLAGS="-L$with_sqlite/lib"
1083 SQLITE_CPPFLAGS="-I$with_sqlite/include"
1085 LDFLAGS=$SAVE_LDFLAGS
1086 CPPFLAGS=$SAVE_CPPFLAGS
1090 [AC_MSG_RESULT([--with-sqlite not specified])
1091 AC_CHECK_HEADERS(sqlite3.h, sqlite=true)])
1092 AM_CONDITIONAL(HAVE_SQLITE, test x$sqlite = xtrue)
1093 AC_SUBST(SQLITE_CPPFLAGS)
1094 AC_SUBST(SQLITE_LDFLAGS)
1096 LDFLAGS=$SAVE_LDFLAGS
1097 CPPFLAGS=$SAVE_CPPFLAGS
1101 # even running the check for postgres breaks emscripten ...
1102 AS_IF([test "$taler_only" != yes],
1103 [AX_LIB_POSTGRESQL([9.5],
1104 [CPPFLAGS="$CPPFLAGS $POSTGRESQL_CPPFLAGS"
1105 AC_CHECK_HEADERS([libpq-fe.h],
1108 [AC_MSG_RESULT([no postgres])])])
1109 AM_CONDITIONAL(HAVE_POSTGRESQL, test x$postgres = xtrue)
1112 LDFLAGS=$SAVE_LDFLAGS
1113 CPPFLAGS=$SAVE_CPPFLAGS
1116 AC_CHECK_TYPES([sigset_t, off_t], [], [], [#include <sys/types.h>])
1117 AC_CHECK_TYPES([size_t], [], [], [#include <stdio.h>])
1119 if test "$build_target" = "mingw"
1121 CYGWIN_MYSQL_MAGIC="#include <mysql/my_global.h>"
1127 SAVE_LDFLAGS=$LDFLAGS
1128 SAVE_CPPFLAGS=$CPPFLAGS
1129 AC_MSG_CHECKING(for mysql)
1131 [ --with-mysql=PFX base of MySQL installation],
1132 [AC_MSG_RESULT([$with_mysql])
1137 AC_CHECK_HEADERS(mysql/mysql.h,
1138 AC_CHECK_LIB(mysqlclient, mysql_init,
1140 mysql=true), [], [$CYGWIN_MYSQL_MAGIC])
1143 LDFLAGS="-L$with_mysql/lib -L$with_mysql/lib/mysql $LDFLAGS $ZLIBS"
1144 CPPFLAGS="-I$with_mysql/include $CPPFLAGS"
1145 AC_CHECK_HEADERS(mysql/mysql.h,
1146 AC_CHECK_LIB(mysqlclient, mysql_init,
1147 MYSQL_LDFLAGS="-L$with_mysql/lib -L$with_mysql/lib/mysql"
1148 MYSQL_CPPFLAGS="-I$with_mysql/include"
1150 mysql=true), [], [$CYGWIN_MYSQL_MAGIC])
1154 [AC_MSG_RESULT([--with-mysql not specified])
1155 if test -d "/usr/lib64/mysql"; then
1156 MYSQL_LIBDIR="/usr/lib64/mysql"
1157 elif test -d "/usr/lib/mysql"; then
1158 MYSQL_LIBDIR="/usr/lib/mysql"
1160 MYSQL_LIBDIR="/usr/lib"
1162 LDFLAGS="-L$MYSQL_LIBDIR $LDFLAGS $ZLIBS"
1163 AC_CHECK_LIB(mysqlclient, mysql_init,
1164 [AC_CHECK_HEADERS(mysql/mysql.h,
1165 MYSQL_LDFLAGS="-L$MYSQL_LIBDIR"
1168 , [], [$CYGWIN_MYSQL_MAGIC])])
1171 AC_SUBST(MYSQL_LDFLAGS)
1172 AC_SUBST(MYSQL_CPPFLAGS)
1174 # additional version check for mysql
1175 AC_ARG_ENABLE(mysql-version-check, [ --disable-mysql-version-check do not check MySQL version],, enable_mysql_version_check=yes)
1176 if test "$mysql" = "true" -a "x$enable_mysql_version_check" = "xyes"
1178 AC_MSG_CHECKING(mysql version)
1179 AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
1180 [[$CYGWIN_MYSQL_MAGIC
1181 #include <mysql/mysql.h>]],
1183 #if (MYSQL_VERSION_ID < 40100)
1184 #error needs at least version >= 4.1
1186 int main () { return 0; }
1188 ],mysql=true,mysql=false)
1189 if test "$mysql" = "false"
1192 AC_MSG_RESULT([fail, >= 4.1 required])
1197 AM_CONDITIONAL(HAVE_MYSQL, test x$mysql = xtrue)
1198 AM_CONDITIONAL(HAVE_MYSQLE, false)
1201 LDFLAGS=$SAVE_LDFLAGS
1202 CPPFLAGS=$SAVE_CPPFLAGS
1204 if test "$sqlite" = 0 -a "$mysql" = 0
1206 AC_MSG_ERROR([GNUnet requires SQLite or MySQL])
1211 AC_MSG_CHECKING([for libmicrohttpd])
1212 AC_ARG_WITH(microhttpd,
1213 [ --with-microhttpd=PFX base of libmicrohttpd installation],
1214 [AC_MSG_RESULT([$with_microhttpd])
1215 case $with_microhttpd in
1219 AC_CHECK_HEADERS([microhttpd.h],
1220 AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
1221 AC_CHECK_LIB([microhttpd], [MHD_get_fdset2],
1222 [AC_MSG_CHECKING([for libmicrohttpd >= 0.9.63])
1223 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
1224 #include "$native_srcdir/src/include/platform.h"
1225 #include <microhttpd.h>
1226 #if (MHD_VERSION < 0x0096300)
1227 #error needs at least version 0.9.63
1229 int main () { return 0; }
1233 [AC_MSG_RESULT(failed)])]),
1234 [],[#include "$native_srcdir/src/include/platform.h"
1235 #include <microhttpd.h>]),,
1236 [#include "$native_srcdir/src/include/platform.h"])
1239 LDFLAGS="-L$with_microhttpd/lib $LDFLAGS"
1240 CPPFLAGS="-I$with_microhttpd/include $CPPFLAGS"
1241 AC_CHECK_HEADERS(microhttpd.h,
1242 AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
1243 AC_CHECK_LIB([microhttpd], [MHD_get_fdset2],
1244 EXT_LIB_PATH="-L$with_microhttpd/lib $EXT_LIB_PATH"
1245 [AC_MSG_CHECKING([for libmicrohttpd >= 0.9.52])
1246 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
1247 #include "$native_srcdir/src/include/platform.h"
1248 #include <microhttpd.h>
1249 #if (MHD_VERSION < 0x0094200)
1250 #error needs at least version 0.9.42
1252 int main () { return 0; }
1256 [AC_MSG_RESULT(failed)])]),
1257 [],[#include "$native_srcdir/src/include/platform.h"
1258 #include <microhttpd.h>]),,
1259 [#include "$native_srcdir/src/include/platform.h"])
1263 [AC_MSG_RESULT([--with-microhttpd not specified])
1264 AC_CHECK_HEADERS([microhttpd.h],
1265 AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
1266 AC_CHECK_LIB([microhttpd], [MHD_get_fdset2],
1267 [AC_MSG_CHECKING([for libmicrohttpd >= 0.9.52])
1268 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
1269 #include "$native_srcdir/src/include/platform.h"
1270 #include <microhttpd.h>
1271 #if (MHD_VERSION < 0x0094200)
1272 #error needs at least version 0.9.52
1277 [AC_MSG_RESULT(failed)])]),
1278 [],[#include "$native_srcdir/src/include/platform.h"
1279 #include <microhttpd.h>]),,
1280 [#include "$native_srcdir/src/include/platform.h"])])
1281 AM_CONDITIONAL(HAVE_MHD, test x$lmhd = x1)
1282 AC_DEFINE_UNQUOTED([HAVE_MHD], $lmhd, [We have libmicrohttpd])
1284 AM_CONDITIONAL(HAVE_JSON, [test x$jansson = x1])
1290 AM_GNU_GETTEXT([external])
1291 AM_GNU_GETTEXT_VERSION([0.18.1])
1293 # Checks for standard typedefs, structures, and compiler characteristics.
1302 AC_CHECK_MEMBER([struct sockaddr_in.sin_len],
1303 [ AC_DEFINE(HAVE_SOCKADDR_IN_SIN_LEN, 1, [Do we have sockaddr_in.sin_len?])
1307 #include <sys/types.h>
1308 #include <sys/socket.h>
1309 #include <netinet/in.h>
1312 AC_CHECK_MEMBER([struct sockaddr_un.sun_len],
1313 [ AC_DEFINE(HAVE_SOCKADDR_UN_SUN_LEN, 1, [Do we have sockaddr_un.sun_len?])
1317 #include <sys/types.h>
1318 #include <sys/socket.h>
1324 # Checks for library functions.
1325 AC_FUNC_CLOSEDIR_VOID
1327 AC_PROG_GCC_TRADITIONAL
1329 AC_FUNC_SELECT_ARGTYPES
1339 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])
1345 GN_LIBINTL="$LTLIBINTL"
1346 AC_ARG_ENABLE(framework, [ --enable-framework enable Mac OS X framework build helpers],enable_framework_build=$enableval)
1347 AM_CONDITIONAL(WANT_FRAMEWORK, test x$enable_framework_build = xyes)
1348 if test x$enable_framework_build = xyes
1350 AC_DEFINE([FRAMEWORK_BUILD], 1, [Build a Mac OS X Framework])
1351 GN_INTLINCL='-I$(top_srcdir)/src/intlemu'
1352 GN_LIBINTL='$(top_builddir)/src/intlemu/libintlemu.la -framework CoreFoundation'
1353 AC_LIB_APPENDTOVAR([CPPFLAGS], [$GN_INTLINCL])
1356 GN_LIB_LDFLAGS="-export-dynamic -no-undefined"
1357 GN_PLUGIN_LDFLAGS="-export-dynamic -avoid-version -module -no-undefined"
1359 AC_SUBST(GN_LIB_LDFLAGS)
1360 AC_SUBST(GN_PLUGIN_LDFLAGS)
1361 AC_SUBST(GN_INTLINCL)
1362 AC_SUBST(GN_LIBINTL)
1367 AC_SUBST(EXT_LIB_PATH)
1372 AC_SUBST(EXT_LIB_PATH)
1374 DATAROOTDIR=$datarootdir
1375 AC_SUBST(DATAROOTDIR)
1378 # TODO: do we need to change anything for "doas" on openbsd?
1379 AC_MSG_CHECKING(for sudo)
1381 [ --with-sudo=PATH path to sudo binary (or just yes)],
1382 [AC_MSG_RESULT("$with_sudo")
1391 SUDO_BINARY=$with_sudo
1395 [AC_MSG_RESULT([no])])
1396 AC_SUBST(SUDO_BINARY)
1397 AM_CONDITIONAL([HAVE_SUDO], [test "x$SUDO_BINARY" != "x" -o -w /])
1400 # test for gnunetdns group name
1401 GNUNETDNS_GROUP=gnunetdns
1402 AC_MSG_CHECKING(for gnunetdns group name)
1403 AC_ARG_WITH(gnunetdns,
1404 [ --with-gnunetdns=GRPNAME name for gnunetdns group],
1405 [AC_MSG_RESULT("$with_gnunetdns")
1406 case $with_gnunetdns in
1408 GNUNETDNS_GROUP=gnunet
1411 GNUNETDNS_GROUP=gnunetdns
1414 GNUNETDNS_GROUP=$with_gnunetdns
1418 [AC_MSG_RESULT([gnunetdns])])
1419 AC_SUBST(GNUNETDNS_GROUP)
1426 AC_MSG_CHECKING(for gnutls)
1428 [ --with-gnutls=PFX base of gnutls installation],
1429 [AC_MSG_RESULT([$with_gnutls])
1430 case $with_gnutls in
1434 AC_CHECK_HEADERS([gnutls/abstract.h],
1435 AC_CHECK_LIB([gnutls], [gnutls_priority_set],
1437 AC_CHECK_HEADERS([gnutls/dane.h],
1438 AC_CHECK_LIB([gnutls-dane], [dane_verify_crt_raw],
1442 LDFLAGS="-L$with_gnutls/lib $LDFLAGS"
1443 CPPFLAGS="-I$with_gnutls/include $CPPFLAGS"
1444 AC_CHECK_HEADERS([gnutls/abstract.h],
1445 AC_CHECK_LIB([gnutls], [gnutls_priority_set],
1446 EXT_LIB_PATH="-L$with_gnutls/lib $EXT_LIB_PATH"
1448 AC_CHECK_HEADERS([gnutls/dane.h],
1449 AC_CHECK_LIB([gnutls-dane], [dane_verify_crt_raw],
1454 [AC_MSG_RESULT([--with-gnutls not specified])
1455 AC_CHECK_HEADERS([gnutls/abstract.h],
1456 AC_CHECK_LIB([gnutls], [gnutls_priority_set],
1458 AC_CHECK_HEADERS([gnutls/dane.h],
1459 AC_CHECK_LIB([gnutls-dane], [dane_verify_crt_raw],
1462 AM_CONDITIONAL(HAVE_GNUTLS, test x$gnutls = xtrue)
1463 AC_DEFINE_UNQUOTED([HAVE_GNUTLS], $gnutls, [We have GnuTLS])
1464 AM_CONDITIONAL(HAVE_GNUTLS_DANE, test x$gnutls_dane = x1)
1465 AC_DEFINE_UNQUOTED([HAVE_GNUTLS_DANE], $gnutls_dane, [We have GnuTLS with DANE support])
1469 # Test if we are building for superMUC
1470 AC_MSG_CHECKING(if GNUnet is being configured to run on the SuperMUC)
1471 AC_ARG_ENABLE([supermuc],
1472 [AS_HELP_STRING([--enable-supermuc],
1473 [build GNUnet with support to run on the SuperMUC (default is NO)])],
1474 [if test "x$enable_supermuc" = "xno"
1481 enable_supermuc=no])
1482 AC_MSG_RESULT($enable_SUPERMUC)
1483 AM_CONDITIONAL([ENABLE_SUPERMUC], [test "x$supermuc" = "x1"])
1484 AC_DEFINE_UNQUOTED([ENABLE_SUPERMUC], [$supermuc], [Build with support for SuperMUC])
1486 # Check if NSE has to send timestamp information to testbed logger for
1487 # generating histogram of messages received
1488 AC_MSG_CHECKING(if NSE has to send timestamp information to testbed logger)
1489 AC_ARG_ENABLE([nse-histogram],
1490 [AS_HELP_STRING([--enable-nse-histogram],
1491 [have NSE send timestamp information to testbed logger for generating
1492 histogram of received messages. NOT useful for production (default is
1494 [if test "x$enableval" = "xno"
1501 enable_nse_histogram=no])
1502 AC_MSG_RESULT($enable_nse_histogram)
1503 AM_CONDITIONAL([ENABLE_NSE_HISTOGRAM], [test "x$nse_histogram" = "x1"])
1504 AC_DEFINE_UNQUOTED([ENABLE_NSE_HISTOGRAM], [$nse_histogram],
1505 [have NSE send timestamp information to testbed logger])
1507 # should 'make check' run tests?
1508 AC_MSG_CHECKING(whether to run tests)
1509 AC_ARG_ENABLE([testruns],
1510 [AS_HELP_STRING([--disable-testruns], [disable running tests on make check (default is YES)])],
1511 [enable_tests_run=${enableval}],
1512 [enable_tests_run=yes])
1513 AC_MSG_RESULT($enable_test_run)
1514 AM_CONDITIONAL([ENABLE_TEST_RUN], [test "x$enable_tests_run" = "xyes"])
1517 AC_MSG_CHECKING([whether to compile in benchmarks (currently for http and crypto)])
1518 AC_ARG_ENABLE([benchmark],
1519 [AS_HELP_STRING([--enable-benchmark], [enable benchmarking])],
1520 [enable_benchmark=${enableval}],
1521 [enable_benchmark=no])
1522 AC_MSG_RESULT($enable_benchmark)
1523 AS_IF([test "x$enable_benchmark" = "xyes"],
1524 [AC_DEFINE_UNQUOTED(ENABLE_BENCHMARK,1,[Benchmarks are enabled])])
1525 AM_CONDITIONAL([ENABLE_BENCHMARK], [test "x$enable_benchmark" = "xyes"])
1528 # should expensive tests be run?
1529 AC_MSG_CHECKING(whether to run expensive tests)
1530 AC_ARG_ENABLE([expensivetests],
1531 [AS_HELP_STRING([--enable-expensivetests], [enable running expensive testcases])],
1532 [enable_expensive=${enableval}],
1533 [enable_expensive=no])
1534 AC_MSG_RESULT($enable_expensive)
1535 AM_CONDITIONAL([HAVE_EXPENSIVE_TESTS], [test "x$enable_expensive" = "xyes"])
1537 # should ports be open for Java services?
1538 AC_MSG_CHECKING(whether to enable ports for gnunet-java)
1539 AC_ARG_ENABLE([javaports],
1540 [AS_HELP_STRING([--enable-javaports], [use non-zero ports for services with Java bindings (default is NO)])],
1541 [enable_java_ports=${enableval}],
1542 [enable_java_ports=no])
1543 AC_MSG_RESULT($enable_java_ports)
1544 if test "x$enable_java_ports" = "xyes"
1548 JAVAPORT="$UNIXONLY"
1552 # should benchmarks be run?
1553 AC_MSG_CHECKING(whether to run benchmarks during make check)
1554 AC_ARG_ENABLE([benchmarks],
1555 [AS_HELP_STRING([--enable-benchmarks], [enable running benchmarks during make check])],
1556 [enable_benchmarks=${enableval}],
1557 [enable_benchmarks=no])
1558 AC_MSG_RESULT($enable_benchmarks)
1559 AM_CONDITIONAL([HAVE_BENCHMARKS], [test "x$enable_benchmarks" = "xyes"])
1561 # should gnunet-testing be compiled
1562 AC_MSG_CHECKING(wether to compile gnunet-testing)
1563 AC_ARG_ENABLE([testing],
1564 [AS_HELP_STRING([--disable-testing], [do not build gnunet-testing])],
1565 [enable_testing=${enableval}],
1566 [enable_testing=yes])
1567 AC_MSG_RESULT($enable_testing)
1568 AM_CONDITIONAL([HAVE_TESTING], [test "x$enable_testing" = "xyes"])
1570 # should experimental code be compiled (code that may not yet compile)?
1571 AC_MSG_CHECKING(whether to compile experimental code)
1572 AC_ARG_ENABLE([experimental],
1573 [AS_HELP_STRING([--enable-experimental], [enable compiling experimental code])],
1574 [enable_experimental=${enableval}],
1575 [enable_experimental=no])
1576 AC_MSG_RESULT($enable_experimental)
1577 AM_CONDITIONAL([HAVE_EXPERIMENTAL], [test "x$enable_experimental" = "xyes"])
1579 # should malicious code be compiled (should only be used for testing)?
1580 AC_MSG_CHECKING(whether to compile malicious code)
1581 AC_ARG_ENABLE([malicious],
1582 [AS_HELP_STRING([--enable-malicious], [enable compiling malicious code])],
1583 [if test "x$enableval" = "xno"
1590 enable_malicious=no])
1591 AC_MSG_RESULT($enable_malicious)
1592 AM_CONDITIONAL([ENABLE_MALICIOUS], [test 1=$malicious])
1593 AC_DEFINE_UNQUOTED([ENABLE_MALICIOUS], [$malicious],
1594 [enable compilation of malicious code])
1596 # should services be started on demand when needed? Some services may choose to
1597 # never start by default and it is up to the service/module developer to decide
1598 # by having "START_ON_DEMAND = NO" instead of "START_ON_DEMAND = @START_ON_DEMAND@"
1599 # in the service/module's conf.in file.
1600 # See also IMMEDIATE_START for an unconditional immediate start.
1601 START_ON_DEMAND="YES"
1602 AC_MSG_CHECKING(whether to start peer's services on demand by default)
1603 AC_ARG_ENABLE([autostart],
1604 [AS_HELP_STRING([--disable-autostart], [do not start peer's services by default])],
1605 [enable_autostart=${enableval}
1606 if test "x$enable_autostart" = "xno"
1608 START_ON_DEMAND="NO"
1611 [enable_autostart=yes])
1612 AC_MSG_RESULT($enable_autostart)
1613 #AM_CONDITIONAL([HAVE_START_ON_DEMAND], [test "x$enable_autostart" = "xyes"])
1614 AC_SUBST(START_ON_DEMAND)
1616 # should memory statistics be kept (very expensive CPU-wise!)
1617 AC_MSG_CHECKING(whether to create expensive statistics on memory use)
1618 AC_ARG_ENABLE([heapstats],
1619 [AS_HELP_STRING([--enable-heapstats], [enable expensive heap statistics])],
1620 [enable_heapstats=1],
1621 [enable_heapstats=0])
1622 AC_MSG_RESULT($enable_heapstats)
1623 AC_DEFINE_UNQUOTED([ENABLE_HEAP_STATISTICS],$enable_heapstats,[enable expensive heap statistics])
1625 # should code be enabled that works around missing OS functionality on Windows?
1626 # used for test cases
1627 if test $build_target = "mingw"
1633 [#include <ws2tcpip.h>
1635 int s = socket (0, 0, 0);])
1637 AC_DEFINE_UNQUOTED([HAVE_SOCKET],1,[Define this if socket() is available])
1639 AC_DEFINE_UNQUOTED([HAVE_SOCKET],0,[Define this if socket() is available])
1644 [#include <ws2tcpip.h>
1646 int s = select (0, NULL, NULL, NULL, NULL);])
1648 AC_DEFINE_UNQUOTED([HAVE_SELECT],1,[Define this if select() is available])
1650 AC_DEFINE_UNQUOTED([HAVE_SELECT],0,[Define this if select() is available])
1655 [#include <ws2tcpip.h>
1658 char *s = inet_ntoa (i);])
1660 AC_DEFINE_UNQUOTED([HAVE_INET_NTOA],1,[Define this if inet_ntoa() is available])
1662 AC_DEFINE_UNQUOTED([HAVE_INET_NTOA],0,[Define this if inet_ntoa() is available])
1667 [#include <ws2tcpip.h>
1669 int s = getnameinfo (NULL, 0, NULL, 0, NULL, 0, 0);])
1671 AC_DEFINE_UNQUOTED([HAVE_GETNAMEINFO],1,[Define this if getnameinfo() is available])
1673 AC_DEFINE_UNQUOTED([HAVE_GETNAMEINFO],0,[Define this if getnameinfo() is available])
1678 [#include <ws2tcpip.h>
1680 int s = gethostname (NULL, 0);])
1682 AC_DEFINE_UNQUOTED([HAVE_GETHOSTNAME],1,[Define this if gethostname() is available])
1684 AC_DEFINE_UNQUOTED([HAVE_GETHOSTNAME],0,[Define this if gethostname() is available])
1689 [#include <ws2tcpip.h>
1691 void *s = gethostbyname (NULL);])
1693 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYNAME],1,[Define this if gethostbyname() is available])
1695 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYNAME],0,[Define this if gethostbyname() is available])
1700 [#include <ws2tcpip.h>
1702 void *s = gethostbyaddr (NULL, 0, 0);])
1704 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYADDR],1,[Define this if gethostbyaddr() is available])
1706 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYADDR],0,[Define this if gethostbyaddr() is available])
1711 [#include <ws2tcpip.h>
1713 int s = getaddrinfo (NULL, NULL, NULL, NULL);])
1715 AC_DEFINE_UNQUOTED([HAVE_GETADDRINFO],1,[Define this if getaddrinfo() is available])
1717 AC_DEFINE_UNQUOTED([HAVE_GETADDRINFO],0,[Define this if getaddrinfo() is available])
1721 AC_MSG_CHECKING(whether to enable windows workarounds)
1722 AC_ARG_ENABLE([windows_workarounds],
1723 [AS_HELP_STRING([--enable-windows_workarounds], [enable workarounds used on Windows (only useful for test cases)])],
1724 [enable_workarounds=${enableval}],
1725 [enable_workarounds=no])
1726 AC_MSG_RESULT($enable_workarounds)
1727 if test x$enable_windows_workarounds = "xyes"
1734 AC_DEFINE_UNQUOTED([ENABLE_WINDOWS_WORKAROUNDS], $workarounds, [enable workarounds used on Windows (only useful for test cases)])
1737 # Check if the __thread storage class for thread-local storage is available.
1738 AC_MSG_CHECKING(whether __thread is supported)
1740 [AC_LANG_PROGRAM([#include <stdlib.h>
1742 static __thread int a = 1;],
1744 [have_thread_local_gcc=1],[have_thread_local_gcc=0])
1745 AC_DEFINE_UNQUOTED([HAVE_THREAD_LOCAL_GCC],$have_thread_local_gcc,[Define this if __thread is supported])
1746 AS_IF([test "x$have_thread_local_gcc" = "x1"],
1747 [AC_MSG_RESULT(yes)],
1748 [AC_MSG_RESULT(no)])
1751 AC_MSG_CHECKING(whether to compile with support for code coverage analysis)
1752 AC_ARG_ENABLE([coverage],
1753 AS_HELP_STRING([--enable-coverage],
1754 [compile the library with code coverage support]),
1755 [use_gcov=${enableval}],
1757 AC_MSG_RESULT($use_gcov)
1758 AM_CONDITIONAL([USE_COVERAGE], [test "x$use_gcov" = "xyes"])
1762 # TODO: git blame says this predates our switch to git. git-svn should be adjusted to simply git, or
1763 # an external script that does the job.
1764 AC_PATH_PROG(svnversioncommand, svnversion)
1765 AC_PATH_PROG(gitcommand, git)
1766 AC_MSG_CHECKING(for source being under a VCS)
1770 AC_PATH_PROG(gitcommand, git)
1771 AC_MSG_CHECKING(for source being under a VCS)
1773 AS_IF([test ! "X$gitcommand" = "X"],
1775 git_version=$(cd $srcdir ; git rev-list --full-history --all --abbrev-commit | head -n 1 2>/dev/null)
1777 AS_IF([test "X$git_version" = "X"],
1780 vcs_version="\"release\""
1783 vcs_name="yes, git-svn"
1784 vcs_version="\"git-$git_version\""
1786 AC_MSG_RESULT($vcs_name)
1788 AC_MSG_CHECKING(VCS version)
1789 AC_MSG_RESULT($vcs_version)
1790 AC_DEFINE_UNQUOTED(VCS_VERSION, [$vcs_version], [VCS revision/hash or tarball version])
1795 contrib/hellos/Makefile
1796 contrib/services/Makefile
1797 contrib/services/openrc/Makefile
1798 contrib/services/systemd/Makefile
1799 contrib/scripts/Makefile
1800 contrib/scripts/gnunet-logread/Makefile
1803 doc/doxygen/Makefile
1804 doc/handbook/Makefile
1805 doc/tutorial/Makefile
1814 src/ats-tool/Makefile
1815 src/ats-tests/Makefile
1816 src/auction/Makefile
1819 src/cadet/cadet.conf
1822 src/consensus/Makefile
1823 src/consensus/consensus.conf
1824 src/conversation/Makefile
1825 src/conversation/conversation.conf
1827 src/datacache/Makefile
1828 src/datastore/Makefile
1829 src/datastore/datastore.conf
1835 src/fragmentation/Makefile
1840 src/gns/nss/Makefile
1841 src/gnsrecord/Makefile
1843 src/identity/Makefile
1844 src/identity/identity.conf
1845 src/credential/Makefile
1846 src/credential/credential.conf
1847 src/include/Makefile
1848 src/integration-tests/Makefile
1850 src/hostlist/Makefile
1853 src/namecache/Makefile
1854 src/namecache/namecache.conf
1855 src/namestore/Makefile
1856 src/namestore/namestore.conf
1859 src/nat-auto/Makefile
1860 src/nat-auto/nat-auto.conf
1864 src/peerinfo/Makefile
1865 src/peerinfo/peerinfo.conf
1866 src/peerinfo-tool/Makefile
1867 src/peerstore/Makefile
1868 src/peerstore/peerstore.conf
1872 src/regex/regex.conf
1873 src/revocation/Makefile
1874 src/revocation/revocation.conf
1877 src/secretsharing/Makefile
1878 src/secretsharing/secretsharing.conf
1879 src/scalarproduct/Makefile
1880 src/scalarproduct/scalarproduct.conf
1884 src/statistics/Makefile
1885 src/statistics/statistics.conf
1886 src/template/Makefile
1887 src/testbed/Makefile
1888 src/testbed/testbed.conf
1889 src/testbed-logger/Makefile
1890 src/testbed-logger/testbed-logger.conf
1891 src/testing/Makefile
1892 src/topology/Makefile
1893 src/transport/Makefile
1894 src/transport/transport.conf
1896 src/util/resolver.conf
1899 src/zonemaster/Makefile
1900 src/zonemaster/zonemaster.conf
1903 src/reclaim-attribute/Makefile
1904 src/reclaim/Makefile
1906 pkgconfig/gnunetarm.pc
1907 pkgconfig/gnunetats.pc
1908 pkgconfig/gnunetblock.pc
1909 pkgconfig/gnunetcadet.pc
1910 pkgconfig/gnunetconsensus.pc
1911 pkgconfig/gnunetconversation.pc
1912 pkgconfig/gnunetcore.pc
1913 pkgconfig/gnunetdatacache.pc
1914 pkgconfig/gnunetdatastore.pc
1915 pkgconfig/gnunetdht.pc
1916 pkgconfig/gnunetdns.pc
1917 pkgconfig/gnunetenv.pc
1918 pkgconfig/gnunetfragmentation.pc
1919 pkgconfig/gnunetfs.pc
1920 pkgconfig/gnunetgns.pc
1921 pkgconfig/gnunethello.pc
1922 pkgconfig/gnunetidentity.pc
1923 pkgconfig/gnunetmicrophone.pc
1924 pkgconfig/gnunetmysql.pc
1925 pkgconfig/gnunetnamestore.pc
1926 pkgconfig/gnunetnat.pc
1927 pkgconfig/gnunetnse.pc
1928 pkgconfig/gnunetpeerinfo.pc
1929 pkgconfig/gnunetpq.pc
1930 pkgconfig/gnunetregex.pc
1931 pkgconfig/gnunetrevocation.pc
1932 pkgconfig/gnunetrps.pc
1933 pkgconfig/gnunetscalarproduct.pc
1934 pkgconfig/gnunetset.pc
1935 pkgconfig/gnunetspeaker.pc
1936 pkgconfig/gnunetstatistics.pc
1937 pkgconfig/gnunettestbed.pc
1938 pkgconfig/gnunettesting.pc
1939 pkgconfig/gnunettransport.pc
1940 pkgconfig/gnunetutil.pc
1941 pkgconfig/gnunetvpn.pc
1947 # warn user if mysql found but not used due to version
1948 AS_IF([test "$mysqlfail" = "true"]
1949 [AC_MSG_NOTICE([WARNING: optional MySQL not found (or too old)])])
1952 AS_IF([test "x$sqlite" = "x0"],
1953 [AC_MSG_ERROR([ERROR: sqlite3 not found, but sqlite3 is required.])])
1956 AS_IF([test "$gnurl" = "0"],
1957 [AS_IF([test "x$curl" = "xfalse"],
1958 [AC_MSG_NOTICE([WARNING: libgnurl not found. http client support will not be compiled.])
1959 AC_MSG_WARN([ERROR: libgnurl not found. hostlist daemon will not be compiled, and you probably WANT the hostlist daemon])],
1960 [AC_MSG_NOTICE([WARNING: libgnurl not found, trying to use libcurl-gnutls instead.])])])
1963 AS_IF([test "x$bluetooth" = "x0"],
1964 [AC_MSG_NOTICE([WARNING: optional bluetooth library not found.])])
1968 AS_IF([test "x$jansson" = "x0"],
1969 [AC_MSG_NOTICE([WARNING: optional jansson library not found.])])
1972 # FIXME: `some modules' -> be more specific which exact modules.
1975 # warn user if iptables is not found
1976 AS_IF([test "$VAR_IPTABLES_BINARY" = "false"],
1977 [AC_MSG_NOTICE([WARNING: optional iptables not found])])
1979 # warn user if ifconfig is not found
1980 AS_IF([test "$VAR_IFCONFIG_BINARY" = "false"],
1981 [AC_MSG_NOTICE([WARNING: optional ifconfig not found])])
1983 # warn user if upnpc binary is not found
1984 AS_IF([test "$VAR_UPNPC_BINARY" = "false"],
1985 [AC_MSG_NOTICE([WARNING: optional upnpc binary not found])])
1988 AS_IF([test x$gnutls != xtrue],
1989 [AC_MSG_NOTICE([WARNING: GnuTLS not found, gnunet-gns-proxy will not be built])],
1990 [AS_IF([test "x$gnutls_dane" != "x1"],
1991 [AC_MSG_NOTICE([WARNING: GnuTLS has no DANE support, DANE validation will not be possible])])])
1993 # warn user if libzbar is not found
1994 AS_IF([test "$have_zbar" = 0],
1995 [AC_MSG_NOTICE([WARNING: zbar not found, gnunet-qr will not be built.])])
1998 AS_IF([test "x$enable_java_ports" = "xyes"],
1999 [AC_MSG_NOTICE([NOTICE: Opening ports for gnunet-java bindings by default.])])
2002 AS_IF([test "x$lmhd" != "x1"],
2003 [AC_MSG_NOTICE([WARNING: optional libmicrohttpd not found])])
2006 AS_IF([test "x$conversation_backend" = "xnone"],
2007 [AS_IF([test "x$pulse" != "x1"],
2008 [AC_MSG_NOTICE([WARNING: libpulse(audio) not found, conversation will not be built.])])
2009 AS_IF([test "x$opus" != "x1"],
2010 [AC_MSG_NOTICE([WARNING: libopus not found, conversation will not be built.])])
2011 AS_IF([test "x$gst" != "x1"],
2012 [AC_MSG_NOTICE([WARNING: GStreamer not found, conversation will not be built.])])])
2014 AS_IF([test "$extractor" != 1],
2015 [AC_MSG_WARN([ERROR: libextractor not found, but various file-sharing functions require it])])
2017 AS_IF([test "x$working_libidn2" = x1],
2018 [AC_MSG_NOTICE([INFO: Using libidn2])])
2019 AS_IF([test "x$working_libidn1" = x1],
2020 [AC_MSG_NOTICE([INFO: Using libidn1])])
2022 AC_MSG_NOTICE([NOTICE: Database support is set to MySQL: $mysql, SQLite: $sqlite, Postgres: $postgres])
2024 AS_IF([test "$enable_framework_build" = "yes"],
2025 [AC_MSG_NOTICE([Mac OS X framework build enabled.])])
2027 AC_MSG_NOTICE([********************************************
2028 Please make sure NOW that you have created a user and group 'gnunet'
2029 and additionally a group 'gnunetdns'. On Debian and Ubuntu GNU/Linux, type:
2031 adduser --system --group --disabled-login --home /var/lib/gnunet gnunet
2033 Make sure that '/var/lib/gnunet' is owned (and writable) by user
2034 'gnunet'. Then, you can compile GNUnet with
2037 After that, run (if necessary as 'root')
2039 to install everything.
2041 Each GNUnet user should be added to the 'gnunet' group (may
2042 require fresh login to come into effect):
2043 adduser USERNAME gnunet
2044 (run the above command as root once for each of your users, replacing
2045 "USERNAME" with the respective login names). If you have a global IP
2046 address, no further configuration is required.
2048 For more detailed setup instructions, see https://docs.gnunet.org/
2050 Optionally, download and compile gnunet-gtk to get a GUI for
2051 file-sharing and configuration. This is particularly recommended
2052 if your network setup is non-trivial, as gnunet-setup can be
2053 used to test in the GUI if your network configuration is working.
2054 gnunet-setup should be run as the "gnunet" user under X. As it
2055 does very little with the network, running it as "root" is likely
2056 also harmless. You can also run it as a normal user, but then
2057 you have to copy ~/.gnunet/gnunet.conf" over to the "gnunet" user's
2058 home directory in the end.
2060 Once you have configured your peer, run (as the 'gnunet' user)
2062 to start the peer. You can then run the various GNUnet-tools as
2063 your "normal" user (who should only be in the group 'gnunet').
2064 ********************************************])