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.0], [bug-gnunet@gnu.org])
25 AC_CONFIG_AUX_DIR([build-aux])
31 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
32 AC_CONFIG_HEADERS([gnunet_config.h])
33 AH_TOP([#define _GNU_SOURCE 1])
34 AC_CONFIG_MACRO_DIR([m4])
44 LT_INIT([disable-static dlopen win32-dll])
52 CFLAGS="-Wall $CFLAGS"
53 # use '-fno-strict-aliasing', but only if the compiler can take it
54 if gcc -fno-strict-aliasing -S -o /dev/null -xc /dev/null >/dev/null 2>&1;
56 CFLAGS="-fno-strict-aliasing $CFLAGS"
59 # Use Linux interface name unless the OS has a different preference
60 DEFAULT_INTERFACE="\"eth0\""
62 funcstocheck="getnameinfo gethostname gethostbyname gethostbyaddr getaddrinfo getaddrinfo_a"
64 # Srcdir in a form that native compiler understands (i.e. DOS path on W32)
69 *darwin* | *rhapsody* | *macosx*)
70 AC_DEFINE_UNQUOTED(DARWIN,1,[This is an Apple Darwin system])
71 CPPFLAGS="-D_APPLE_C_SOURCE $CPPFLAGS"
72 CFLAGS="-fno-common $CFLAGS"
73 AC_MSG_WARN([WARNING: The VPN application cannot be compiled on your OS])
74 AC_CHECK_LIB(intl, gettext)
76 DEFAULT_INTERFACE="\"en0\""
82 AC_DEFINE_UNQUOTED(LINUX,1,[This is a Linux kernel])
90 AC_DEFINE_UNQUOTED(SOMEBSD,1,[This is a BSD system])
91 AC_DEFINE_UNQUOTED(FREEBSD,1,[This is a FreeBSD system])
92 CFLAGS="-D_THREAD_SAFE $CFLAGS"
93 build_target="freebsd"
99 AC_DEFINE_UNQUOTED(SOMEBSD,1,[This is a BSD system])
100 AC_DEFINE_UNQUOTED(OPENBSD,1,[This is an OpenBSD system])
101 LIBS=`echo $LIBS | sed -e "s/-ldl//"`
102 build_target="openbsd"
108 AC_DEFINE_UNQUOTED(SOMEBSD,1,[This is a BSD system])
109 AC_DEFINE_UNQUOTED(NETBSD,1,[This is a NetBSD system])
115 AC_DEFINE_UNQUOTED(SOLARIS,1,[This is a Solaris system])
116 AC_DEFINE_UNQUOTED(_REENTRANT,1,[Need with solaris or errno doesnt work])
117 AC_CHECK_LIB(resolv, res_init)
118 AC_CHECK_LIB(rt, nanosleep)
119 build_target="solaris"
125 AC_DEFINE_UNQUOTED(LINUX,1,[This is a Linux kernel])
126 CFLAGS="-D_REENTRANT -fPIC -pipe $CFLAGS"
133 AC_DEFINE_UNQUOTED(CYGWIN,1,[This is a Cygwin system])
134 AC_DEFINE_UNQUOTED(WINDOWS,1,[This is a Windows system])
135 AC_CHECK_LIB(intl, gettext)
136 CFLAGS="-mms-bitfields $CFLAGS"
137 build_target="cygwin"
144 AC_DEFINE_UNQUOTED(MINGW,1,[This is a MinGW system])
145 AC_DEFINE_UNQUOTED(WINDOWS,1,[This is a Windows system])
146 AC_DEFINE_UNQUOTED(_WIN32,1,[This is a Windows system])
147 AC_CHECK_LIB(intl, gettext)
148 LDFLAGS="$LDFLAGS -Wl,--export-all-symbols"
149 LIBS="$LIBS -lws2_32 -lplibc -lgnurx -lole32"
150 CFLAGS="-mms-bitfields $CFLAGS"
151 CPPFLAGS="-D_WIN32_WINNT=0x0501 -DHAVE_STAT64=1 -D__USE_MINGW_ANSI_STDIO=1 $CPPFLAGS"
158 native_srcdir=$(cd $srcdir; pwd -W)
161 AC_DEFINE_UNQUOTED(GNU,1,[This is a GNU system])
166 AC_MSG_RESULT(Unrecognised OS $host_os)
167 AC_DEFINE_UNQUOTED(OTHEROS,1,[Some strange OS])
171 AC_DEFINE_UNQUOTED([GNUNET_DEFAULT_INTERFACE], $DEFAULT_INTERFACE, [This should be the default choice for the name of the first network interface])
172 AC_SUBST(DEFAULT_INTERFACE)
174 # Disable TCP-based IPC on systems that support UNIX domain
175 # sockets in default configuratin:
179 AC_MSG_CHECKING([for build target])
180 AM_CONDITIONAL(DARWIN, test "$build_target" = "darwin")
181 AM_CONDITIONAL(CYGWIN, test "$build_target" = "cygwin")
182 AM_CONDITIONAL(MINGW, test "$build_target" = "mingw")
183 AM_CONDITIONAL(SOLARIS, test "$build_target" = "solaris")
184 AM_CONDITIONAL(XFREEBSD, test "$build_target" = "freebsd")
185 AM_CONDITIONAL(OPENBSD, test "$build_target" = "openbsd")
186 AM_CONDITIONAL(LINUX, test "$build_target" = "linux")
187 AM_CONDITIONAL(GNU, test "$build_target" = "gnu")
189 AC_MSG_RESULT([$build_target])
190 AC_SUBST(build_target)
191 AM_CONDITIONAL([am__fastdepOBJC], false)
192 AC_UNALIGNED_64_ACCESS
194 # some other checks for standard libs
195 AC_SEARCH_LIBS([gethostbyname], [nsl ws2_32])
196 AC_SEARCH_LIBS([memrchr], [],
197 AC_DEFINE(HAVE_MEMRCHR,1,[memrchr supported]), [])
198 AC_CHECK_LIB(socket, socket)
200 AC_CHECK_LIB(c, getloadavg, AC_DEFINE(HAVE_GETLOADAVG,1,[getloadavg supported]))
202 AC_CHECK_PROG(VAR_GETOPT_BINARY, getopt, true, false)
203 AM_CONDITIONAL(HAVE_GETOPT_BINARY, $VAR_GETOPT_BINARY)
205 AC_CHECK_PROG(VAR_SSH_BINARY, ssh, true, false)
206 AM_CONDITIONAL(HAVE_SSH_BINARY, $VAR_SSH_BINARY)
207 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)
208 rm -f /tmp/gnunet_test_cosks_ssh_garbage
210 # autotools' m4 for python has no maximum version!
211 # python3.4 - python3.7 for tests
212 m4_define_default([_AM_PYTHON_INTERPRETER_LIST],[python3 python3.4 python3.5 python3.6 python3.7 python])
213 AM_PATH_PYTHON([3.4],, [:])
215 AM_CONDITIONAL([HAVE_PYTHON], [test "$PYTHON" != :])
218 AC_PATH_PROG( PERL, perl, ,
219 $PATH:/usr/local/bin/perl:/usr/bin/:/usr/local/bin )
222 # iptables is a soft requirement to run tests
223 AC_PATH_TARGET_TOOL(VAR_IPTABLES_BINARY, iptables, false)
225 if test x"$VAR_IPTABLES_BINARY" = x"false"
227 if test -x "/sbin/iptables"
229 VAR_IPTABLES_BINARY="/sbin/iptables"
230 elif test -x "/usr/sbin/iptables"
232 VAR_IPTABLES_BINARY="/usr/sbin/iptables"
236 if test x"$VAR_IPTABLES_BINARY" != x"false"
238 AC_DEFINE_UNQUOTED([IPTABLES], "$VAR_IPTABLES_BINARY", [Path to iptables])
240 AC_MSG_WARN([warning: 'iptables' not found.])
243 AC_PATH_TARGET_TOOL(VAR_IFCONFIG_BINARY, ifconfig, false)
245 AC_CHECK_PROG(VAR_IFCONFIG_BINARY, ifconfig, true, false)
246 if test x"$VAR_IFCONFIG_BINARY" = x"false"
248 if test -x "/sbin/ifconfig"
250 VAR_IFCONFIG_BINARY="/sbin/ifconfig"
251 elif test -x "/usr/sbin/ifconfig"
253 VAR_IFCONFIG_BINARY="/usr/sbin/ifconfig"
256 if test x"$VAR_IFCONFIG_BINARY" != x"false"
258 AC_DEFINE_UNQUOTED([IFCONFIG], "$VAR_IFCONFIG_BINARY", [Path to ifconfig])
260 AC_MSG_WARN(['ifconfig' not found.])
263 # miniupnpc / upnpc binary is a soft runtime requirement
264 AC_PATH_TARGET_TOOL(VAR_UPNPC_BINARY, upnpc, false)
266 if test x"$VAR_UPNPC_BINARY" != x"false"
268 AC_DEFINE_UNQUOTED([UPNPC], "$VAR_UPNPC_BINARY", [Path to upnpc binary])
270 AC_MSG_WARN([warning: 'upnpc' binary not found.])
273 AC_CHECK_MEMBER(struct tm.tm_gmtoff,
274 [AC_DEFINE(HAVE_TM_GMTOFF, 1,
275 [Define if struct tm has the tm_gmtoff member.])],
279 AC_CHECK_DECLS([_stati64])
281 # 'save' libs; only those libs found so far will be
282 # linked against _everywhere_. For the others, we
283 # will be more selective!
287 AC_CHECK_LIB(anl, getaddrinfo_a, [have_addrinfo_a=1 AC_DEFINE(HAVE_GETADDRINFO_A,1,[getaddrinfo_a supported])])
288 AM_CONDITIONAL(HAVE_GETADDRINFO_A, [test "$have_addrinfo_a" = 1])
291 # tests only run on Windows
292 if test "x$build_target" = "xmingw"
294 AC_CHECK_LIB(plibc, plibc_init, [], [AC_MSG_ERROR([GNUnet requires PlibC on Windows])])
295 AC_CHECK_LIB(gnurx, regexec, [], [AC_MSG_ERROR([GNUnet requires libgnurx on Windows])])
301 NEED_LIBGCRYPT_VERSION=1.6.0
304 AM_PATH_LIBGCRYPT("$NEED_LIBGCRYPT_API:$NEED_LIBGCRYPT_VERSION", gcrypt=1)
305 AC_CHECK_DECLS([gcry_mpi_set_opaque_copy], [], [], [[#include <gcrypt.h>]])
311 *** You need libgcrypt to build this program.
312 ** This library is for example available at
313 *** ftp://ftp.gnupg.org/gcrypt/libgcrypt/
314 *** (at least version $NEED_LIBGCRYPT_VERSION (API $NEED_LIBGCRYPT_API)
318 AC_DEFINE_UNQUOTED([NEED_LIBGCRYPT_VERSION], "$NEED_LIBGCRYPT_VERSION", [required libgcrypt version])
320 AC_CHECK_DECLS([struct in6_ifreq], [], [], [[#include <linux/if_tun.h>]])
324 # should the build process be building the documentation?
325 AC_MSG_CHECKING(whether to build documentation)
326 AC_ARG_ENABLE([documentation],
327 [AS_HELP_STRING([--disable-documentation], [do not build the documentation])],
328 [documentation=${enableval}],
330 AC_MSG_RESULT($documentation)
331 if test "x$documentation" = "xyes"
333 AM_CONDITIONAL([DOCUMENTATION],true)
334 AC_DEFINE([DOCUMENTATION],[1],[Building the documentation])
336 AM_CONDITIONAL([DOCUMENTATION],false)
337 AC_DEFINE([DOCUMENTATION],[0],[Not building the documentation])
340 # FIXME: Something is wrong about this in the output of ./configure runs
341 AC_MSG_CHECKING(wether to include generated texi2mdoc output in installation)
342 AC_ARG_ENABLE([texi2mdoc-generation],
343 [AS_HELP_STRING([--enable-texi2mdoc-generation], [include generated texi2mdoc output in installation])],
344 [texi2mdoc_generation=${enableval}],
345 [texi2mdoc_generation=no])
346 AC_MSG_RESULT($texi2mdoc_generation)
347 if test "x$texi2mdoc_generation" = "xyes"
349 if test "$texi2mdoc" = 0
351 AC_MSG_WARN([ERROR: mdoc output currently requires texi2mdoc.])
352 AC_MSG_WARN([ERROR: texi2mdoc can be obtained via your Operating System])
353 AC_MSG_WARN([ERROR: package manager or from https://mandoc.bsd.lv/texi2mdoc/])
355 AM_CONDITIONAL([TEXI2MDOC_GENERATION],true)
356 AC_DEFINE([TEXI2MDOC_GENERATION],[1],[Building section 7 mdoc output])
359 AM_CONDITIONAL([TEXI2MDOC_GENERATION],false)
360 AC_DEFINE([TEXI2MDOC_GENERATION],[0],[Not building section 7 mdoc output])
363 # should the build process be building only the documentation?
364 AC_MSG_CHECKING(whether to build only documentation)
365 AC_ARG_ENABLE([documentation-only],
366 [AS_HELP_STRING([--enable-documentation-only], [build only the documentation])],
367 [documentation_only=${enableval}],
368 [documentation_only=no])
369 AC_MSG_RESULT($documentation_only)
370 if test "x$documentation_only" = "xyes"
372 AM_CONDITIONAL([DOCUMENTATION_ONLY],true)
373 AC_DEFINE([DOCUMENTATION_ONLY],[1],[Building only the documentation])
375 AM_CONDITIONAL([DOCUMENTATION_ONLY],false)
376 AC_DEFINE([DOCUMENTATION_ONLY],[0],[Not building only the documentation])
379 # should the build process be including the manpages? (default: yes)
380 AC_MSG_CHECKING(whether to include man pages)
381 AC_ARG_ENABLE([include-manpages],
382 [AS_HELP_STRING([--disable-include-manpages], [Do not include the man pages in build and installation])],
383 [include_manpages=${enableval}],
384 [include_manpages=yes])
385 AC_MSG_RESULT($include_manpages)
386 if test "x$include_manpages" = "xyes"
388 AM_CONDITIONAL([INCLUDE_MANPAGES],true)
389 AC_DEFINE([INCLUDE_MANPAGES],[1],[Including the man pages in the build and installation])
391 AM_CONDITIONAL([INCLUDE_MANPAGES],false)
392 AC_DEFINE([INCLUDE_MANPAGES],[0],[Not including the man pages in the build and installation])
395 # Adam shostack suggests the following for Windows:
396 # -D_FORTIFY_SOURCE=2 -fstack-protector-all
397 AC_ARG_ENABLE(gcc-hardening,
398 AS_HELP_STRING(--enable-gcc-hardening, enable compiler security checks),
399 [if test x$enableval = xyes; then
400 CFLAGS="$CFLAGS -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fstack-protector-all"
401 CFLAGS="$CFLAGS -fwrapv -fPIE -Wstack-protector"
402 CFLAGS="$CFLAGS --param ssp-buffer-size=1"
403 LDFLAGS="$LDFLAGS -pie"
406 # Linker hardening options
407 # Currently these options are ELF specific - you can't use this with MacOSX
408 AC_ARG_ENABLE(linker-hardening,
409 AS_HELP_STRING(--enable-linker-hardening, enable linker security fixups),
410 [if test x$enableval = xyes; then
411 LDFLAGS="$LDFLAGS -z relro -z now"
415 AC_ARG_ENABLE(sanitizer,
416 AS_HELP_STRING(--enable-sanitizer, enable Address Sanitizer and Undefined Behavior Sanitizer),
417 [if test x$enableval = xyes; then
418 LDFLAGS="$CFLAGS -fsanitize=address,undefined -fno-omit-frame-pointer"
422 extra_logging=GNUNET_NO
423 AC_ARG_ENABLE([logging],
424 AS_HELP_STRING([--enable-logging@<:@=value@:>@],[Enable logging calls. Possible values: yes,no,verbose,veryverbose ('yes' is the default)]),
425 [AS_IF([test "x$enableval" = "xyes"], [],
426 [test "x$enableval" = "xno"], [AC_DEFINE([GNUNET_CULL_LOGGING],[],[Define to cull all logging calls])],
427 [test "x$enableval" = "xverbose"], [extra_logging=GNUNET_YES]
428 [test "x$enableval" = "xveryverbose"], [extra_logging=\(GNUNET_YES+1\)])
430 AC_DEFINE_UNQUOTED([GNUNET_EXTRA_LOGGING],[$extra_logging],[1 if extra logging is enabled, 2 for very verbose extra logging, 0 otherwise])
432 # should memory poisoning be enabled?
433 AC_MSG_CHECKING(whether to poison freed memory)
434 AC_ARG_ENABLE([poisoning],
435 [AS_HELP_STRING([--enable-poisoning], [enable poisoning of freed memory (good for debugging)])],
436 [enable_poisoning=${enableval}],
438 if test "x$extra_logging" != "xGNUNET_NO"; then
439 enable_poisoning="defaults to yes (extra logging is enabled)"
444 AC_MSG_RESULT($enable_poisoning)
445 if test ! "x$enable_poisoning" = "xno"; then
450 AC_DEFINE_UNQUOTED([ENABLE_POISONING],[$enable_poisoning],[1 if freed memory should be poisoned, 0 otherwise])
452 if test $build = $target
454 AC_MSG_CHECKING([for working HMAC])
456 LIBS="$LIBS $LIBGCRYPT_LIBS"
457 CFLAGS="$CFLAGS $LIBGCRYPT_CFLAGS"
459 [AC_LANG_PROGRAM([#include <gcrypt.h>
460 #include <stdio.h>], [[
463 unsigned char data[] = { 0xbf, 0x16, 0x6e, 0x46, 0x3a, 0x6c, 0xf3, 0x93, 0xa7, 0x72,
464 0x11, 0xa1, 0xdc, 0x0b, 0x07, 0xdb, 0x1a, 0x5e, 0xd9, 0xb9, 0x81, 0xbe,
465 0xea, 0xe4, 0x31, 0x5f, 0x24, 0xff, 0xfe, 0x50, 0x8a, 0xde };
466 unsigned char key[] = { 0xfc, 0x62, 0x76, 0x35 };
467 unsigned char result[] = {0xa2, 0xb, 0x1, 0xd9, 0xc0, 0x8b, 0x5a, 0x12, 0x80,
468 0xd5, 0x50, 0x12, 0x8e, 0xd0, 0x5b, 0xb6, 0x5c, 0x87, 0x24, 0xe2, 0xd0,
469 0xd2, 0xaf, 0x63, 0xae, 0xd1, 0xd6, 0x64, 0x14, 0xe3, 0x6e, 0x61, 0x5b,
470 0xd, 0xba, 0x17, 0x7d, 0xd3, 0x10, 0xb1, 0x37, 0x41, 0x91, 0x7d, 0xeb,
471 0x1, 0x4d, 0x71, 0xe8, 0x59, 0x71, 0x42, 0x8e, 0xd6, 0xf3, 0x29, 0x3b,
472 0x90, 0xf2, 0xd1, 0xaf, 0x65, 0x1e, 0xb3};
474 if (!gcry_check_version (GCRYPT_VERSION))
476 fprintf (stderr, "Version mismatch %s <-> %s \n", gcry_check_version (NULL), GCRYPT_VERSION);
480 gcry_control (GCRYCTL_DISABLE_SECMEM, 0);
481 gcry_control (GCRYCTL_INITIALIZATION_FINISHED, 0);
483 if (gcry_md_open(&mac, GCRY_MD_SHA512, GCRY_MD_FLAG_HMAC) != GPG_ERR_NO_ERROR)
485 fprintf (stderr, "gcry_md_open error\n");
489 gcry_md_setkey (mac, key, sizeof (key));
490 gcry_md_write (mac, data, sizeof (data));
492 if (memcmp(gcry_md_read (mac, 0), result, gcry_md_get_algo_dlen (gcry_md_get_algo (mac))) != 0)
494 fprintf (stderr, "memcmp error\n");
502 [AC_MSG_RESULT([yes])],
507 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.])
511 AC_MSG_FAILURE([HMAC test failed])
515 AC_MSG_FAILURE([libgcrypt header version does not match library version])
518 [AC_MSG_RESULT([cross compiling, test skipped])])
520 fi # $build = $target
522 # check for bluetooth library
524 AC_CHECK_LIB(bluetooth, ba2str,[AC_CHECK_HEADER([bluetooth/bluetooth.h],bluetooth=1)])
525 if test "$build_target" = "mingw"
529 AM_CONDITIONAL(HAVE_LIBBLUETOOTH, [test "$bluetooth" = 1])
530 if test "$bluetooth" = 1
532 AC_DEFINE([HAVE_LIBBLUETOOTH],[1],[Have bluetooth library])
534 AC_DEFINE([HAVE_LIBBLUETOOTH],[0],[Lacking bluetooth library])
537 # check for jansson library
539 AC_MSG_CHECKING(for libjansson)
541 [ --with-jansson=PFX base of libjansson installation],
542 [AC_MSG_RESULT([$with_jansson])
543 case $with_jansson in
547 AC_CHECK_HEADERS(jansson.h,
548 AC_CHECK_LIB([jansson], [json_loads],
552 LDFLAGS="-L$with_jansson/lib $LDFLAGS"
553 CPPFLAGS="-I$with_jansson/include $CPPFLAGS"
554 AC_CHECK_HEADERS(jansson.h,
555 AC_CHECK_LIB([jansson], [json_loads],
556 EXT_LIB_PATH="-L$with_jansson/lib $EXT_LIB_PATH"
561 [AC_MSG_RESULT([--with-jansson not specified])
562 AC_CHECK_HEADERS(jansson.h,
563 AC_CHECK_LIB([jansson], [json_loads],
565 AM_CONDITIONAL(HAVE_JANSSON, [test "$jansson" = 1])
566 AS_IF([test "x$jansson" = x1],
567 [AC_DEFINE([HAVE_JANSSON],[1],[Have jansson library])],
568 [AC_DEFINE([HAVE_JANSSON],[0],[Lacking jansson library])])
571 # check for libpulse(audio) library
573 AC_CHECK_LIB(pulse,pa_stream_peek,
574 [AC_CHECK_HEADER([pulse/simple.h],pulse=1)])
575 AS_IF([test "$build_target" = "mingw"],
577 AS_IF([test "$pulse" = 1],
578 [AC_DEFINE([HAVE_PULSE],[1],[Have libpulse(audio) library])])
580 # check for libopus(audio) library
582 AC_CHECK_LIB(opus,opus_decode_float,
583 [AC_CHECK_HEADER([opus/opus.h],
584 [AC_CHECK_DECL([OPUS_SET_GAIN],[opus=1],[],[[#include <opus/opus.h>]]
588 AS_IF([test "x$opus" = x1],
589 [AC_DEFINE([HAVE_OPUS],[1],[Have libopus library])])
592 AC_CHECK_LIB(ogg, ogg_stream_flush_fill,
593 [AC_CHECK_HEADERS([ogg/ogg.h],
594 AM_CONDITIONAL(HAVE_OGG, true)
596 AC_DEFINE(HAVE_OGG,1,[Have ogg]),
597 AM_CONDITIONAL(HAVE_OGG, false)
599 AC_DEFINE(HAVE_OGG,0,[lacking ogg]))],
600 AM_CONDITIONAL(HAVE_OGG, false)
604 PKG_CHECK_MODULES([GLIB],
606 [# check for pbc library
608 AC_CHECK_HEADER([pbc/pbc.h],pbc=1)
609 AC_CHECK_HEADER([gabe.h],abe=1)
610 AM_CONDITIONAL(HAVE_PBC, [test "x$pbc" = x1])
611 AM_CONDITIONAL(HAVE_ABE, [test "x$abe" = x1])
612 AS_IF([test "x$pbc" = x1],
613 [AC_DEFINE([HAVE_PBC],[1],[Have pbc library])],
614 [AC_DEFINE([HAVE_PBC],[0],[Lacking pbc library])])
615 AS_IF([test "x$abe" = x1],
616 [AC_DEFINE([HAVE_ABE],[1],[Have ABE library])],
617 [AC_DEFINE([HAVE_ABE],[0],[Lacking ABE library])])],
619 AM_CONDITIONAL(HAVE_PBC, [false])
620 AM_CONDITIONAL(HAVE_ABE, [false])
621 AC_DEFINE([HAVE_PBC],[0],[Lacking glib library])])
626 [glib-2.0 gobject-2.0 gstreamer-1.0 gstreamer-app-1.0 gstreamer-audio-1.0],
631 if test "x$pulse" != "x1" -o "x$opus" != "x1" -o "x$ogg" != "x1"
633 if test "x$gst" != "x1"
635 conversation_backend=none
636 AM_CONDITIONAL(BUILD_PULSE_HELPERS, false)
637 AM_CONDITIONAL(BUILD_GST_HELPERS, false)
638 AM_CONDITIONAL(BUILD_EXPERIMENTAL_HELPERS, false)
640 conversation_backend=gst
641 AM_CONDITIONAL(BUILD_PULSE_HELPERS, false)
642 AM_CONDITIONAL(BUILD_GST_HELPERS, true)
643 AM_CONDITIONAL(BUILD_EXPERIMENTAL_HELPERS, false)
647 conversation_backend=pulse
648 AM_CONDITIONAL(BUILD_PULSE_HELPERS, true)
649 AM_CONDITIONAL(BUILD_GST_HELPERS, false)
650 AM_CONDITIONAL(BUILD_EXPERIMENTAL_HELPERS, false)
654 LIBGNURL_CHECK_CONFIG(,7.34.0,gnurl=1,gnurl=0)
657 AM_CONDITIONAL(HAVE_LIBGNURL, true)
658 AC_DEFINE([HAVE_LIBGNURL],[1],[Have libgnurl])
660 AM_CONDITIONAL(HAVE_LIBGNURL, false)
661 AC_DEFINE([HAVE_LIBGNURL],[0],[Lacking libgnurl])
664 SAVE_CPPFLAGS=$CPPFLAGS
665 CPPFLAGS="$LIBGNURL_CPPFLAGS $LIBCURL_CPPFLAGS $CPPFLAGS"
666 LIBS="$LIBGNURL $LIBCURL $LIBS"
669 LIBCURL_CHECK_CONFIG(,7.34.0,[curl=true],[curl=false])
670 if test "x$curl" = xtrue
673 AC_CHECK_HEADERS([curl/curl.h],
674 AC_CHECK_DECLS(CURLINFO_TLS_SESSION,[curl=true],[curl=false],[[#include <curl/curl.h>]]),
676 AC_CHECK_HEADERS([gnurl/curl.h],
677 AC_CHECK_DECLS(CURLINFO_TLS_SESSION,[curl=true],,[[#include <gnurl/curl.h>]]))
678 # need libcurl-gnutls.so, everything else is not acceptable
679 AC_CHECK_LIB([curl-gnutls],[curl_easy_getinfo],,[curl=false])
680 # cURL must support CURLINFO_TLS_SESSION, version >= 7.34
683 # Check for curl/curl.h and gnurl/curl.h so we can use #ifdef
684 # HAVE_CURL_CURL_H later (the above LIBCURL_CHECK_CONFIG accepted
685 # *either* header set).
686 AC_CHECK_HEADERS([curl/curl.h],,
688 AC_CHECK_HEADERS([gnurl/curl.h],,
693 if test x$curl = xfalse
695 AM_CONDITIONAL(HAVE_LIBCURL, false)
698 AC_MSG_WARN([ERROR: GNUnet requires libcurl-gnutls or gnurl >= 7.34])
701 AM_CONDITIONAL(HAVE_LIBCURL, true)
702 AC_DEFINE([HAVE_LIBCURL],[1],[Have CURL])
705 AC_SEARCH_LIBS(__atomic_load_8, atomic, [have_libatomic=1 AC_DEFINE(HAVE_LIBATOMIC,1,[external libatomic])])
706 AM_CONDITIONAL(HAVE_LIBATOMIC, [test "$have_libatomic" = 1])
708 # restore LIBS & CPPFLAGS
710 CPPFLAGS=$SAVE_CPPFLAGS
712 AC_CHECK_HEADERS([glpk.h],[glpk=true],[glpk=false])
713 # GLPK must support glpk_init_env, version >= 4.43
714 AC_CHECK_LIB([glpk],[glp_init_env],,[glpk=false])
715 # GLPK must support atm MLP presolving, version >= 4.32
716 AC_CHECK_MEMBERS(glp_iocp.presolve,,[glpk=false],[[#include <glpk.h>]])
717 if test "x$glpk" = xfalse
719 AM_CONDITIONAL(HAVE_LIBGLPK, false)
720 AC_MSG_WARN([ERROR: GNUnet requires GLPK >= 4.32])
722 AM_CONDITIONAL(HAVE_LIBGLPK, true)
723 AC_DEFINE([HAVE_LIBGLPK],[1],[Have GLPK])
727 AC_CHECK_HEADERS([nss.h],[nss=true],[nss=false])
728 if test x$nss = xfalse
730 AM_CONDITIONAL(HAVE_GLIBCNSS, false)
731 AC_MSG_WARN([No GNU libc nss header, will not build NSS plugin])
736 AC_CHECK_DECL([NSS_STATUS_UNAVAIL],
737 [AM_CONDITIONAL(HAVE_GLIBCNSS, true)],
738 [AM_CONDITIONAL(HAVE_GLIBCNSS, false)
739 AC_MSG_WARN([No nss header fails to define NSS_STATUS_UNAVAIl, will not build NSS plugin])],
745 # test for kvm and kstat (for CPU stats under BSD/Solaris)
746 AC_CHECK_LIB([kvm],[kvm_open])
747 AC_CHECK_LIB([kstat],[kstat_open])
750 # should the build process be restricted to the code required
751 # for GNU Taler wallets?
752 AC_MSG_CHECKING(whether to compile GNU Taler Wallet library ONLY)
753 AC_ARG_ENABLE([taler-wallet],
754 [AS_HELP_STRING([--enable-taler-wallet], [only compile for Taler wallet])],
755 [taler_only=${enableval}],
757 AC_MSG_RESULT($taler_only)
758 if test "x$taler_only" = "xyes"
760 AM_CONDITIONAL([TALER_ONLY],true)
761 AC_DEFINE([TALER_WALLET_ONLY],[1],[Compiling for Taler wallet])
763 AM_CONDITIONAL([TALER_ONLY],false)
764 AC_DEFINE([TALER_WALLET_ONLY],[0],[Canonical compilation])
767 # test for libextractor
769 AC_MSG_CHECKING(for libextractor)
770 AC_ARG_WITH(extractor,
771 [ --with-extractor=PFX base of libextractor installation],
772 [AC_MSG_RESULT([$with_extractor])
773 case $with_extractor in
777 AC_CHECK_HEADERS([extractor.h],
778 AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
782 LDFLAGS="-L$with_extractor/lib $LDFLAGS"
783 CPPFLAGS="-I$with_extractor/include $CPPFLAGS"
784 AC_CHECK_HEADERS([extractor.h],
785 AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
786 EXT_LIB_PATH="-L$with_extractor/lib $EXT_LIB_PATH"
791 [AC_MSG_RESULT([--with-extractor not specified])
792 AC_CHECK_HEADERS([extractor.h],
793 AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
798 if test "$extractor" != 1
800 AM_CONDITIONAL(HAVE_LIBEXTRACTOR, false)
801 AC_DEFINE([HAVE_LIBEXTRACTOR],[0],[Lacking libextractor])
803 AM_CONDITIONAL(HAVE_LIBEXTRACTOR, true)
804 AC_DEFINE([HAVE_LIBEXTRACTOR],[1],[Have libextractor])
808 if test "$taler_only" != yes
811 # Check for libltdl header (#2999)
813 AC_MSG_CHECKING(for libltdl)
815 [ --with-ltdl=PFX base of libltdl installation],
816 [AC_MSG_RESULT([$with_ltdl])
821 AC_CHECK_HEADERS(ltdl.h,
822 AC_CHECK_LIB([ltdl], [lt_dlopenext],
826 LDFLAGS="-L$with_ltdl/lib $LDFLAGS"
827 CPPFLAGS="-I$with_ltdl/include $CPPFLAGS"
828 AC_CHECK_HEADERS(ltdl.h,
829 AC_CHECK_LIB([ltdl], [lt_dlopenext],
830 EXT_LIB_PATH="-L$with_ltdl/lib $EXT_LIB_PATH"
835 [AC_MSG_RESULT([--with-ltdl not specified])
836 AC_CHECK_HEADERS(ltdl.h,
837 AC_CHECK_LIB([ltdl], [lt_dlopenext],
841 AC_MSG_RESULT([libltdl found])
843 AC_MSG_ERROR([GNUnet requires libltdl (from GNU libtool), try installing libltdl-dev])
848 # libidn and libidn2. The ideal goal is this:
849 # check for libidn2, if it doesn't exist check for libidn
850 # if both exist, prefer libidn2
851 # if none exist, fail and message that libidn or libidn2
852 # is required with a preference for libidn2.
853 # TODO: What we have right here can probably be improved.
856 AS_HELP_STRING([--with-libidn=pathname],
857 [Support IDN (needs libidn)]),
860 AS_IF([test x_$withval = x_yes],
861 [AC_CHECK_HEADERS([idna.h],
862 AC_MSG_NOTICE([Found idna.h]),
863 AC_CHECK_HEADERS([idn/idna.h],
864 AC_MSG_NOTICE([Found idn/idna.h]),
866 [AS_IF([test x_$withval != x_no],
867 [CFLAGS="$CFLAGS -I$withval/include"
868 LDFLAGS="$LDFLAGS -L$withval/lib"
869 AC_CHECK_HEADERS([idna.h],
870 AC_MSG_NOTICE([Found idna.h]),
871 [AC_MSG_NOTICE([Failed to find idna.h])
873 [my_with_libidn=0])])
877 AS_HELP_STRING([--with-libidn2=pathname],
878 [Support IDN (needs libidn2)]),
881 AS_IF([test x_$withval = x_yes],
882 [AC_CHECK_HEADERS([idn2.h],
883 AC_MSG_NOTICE([Found idn2.h]),
884 AC_CHECK_HEADERS([idn2/idn2.h],
885 AC_MSG_NOTICE([Found idn2/idn2.h]),
886 [AC_MSG_NOTICE([Failed to find idn2.h])
887 my_with_libidn2=0]))],
888 [AS_IF([test x_$withval != x_no],
889 [CFLAGS="$CFLAGS -I$withval/include"
890 LDFLAGS="$LDFLAGS -L$withval/lib"],
891 [my_with_libidn2=0])])
893 AC_MSG_CHECKING([if libidn can be used])
895 there_can_only_be_one=1
899 AS_IF([test x$my_with_libidn2 = x1],
900 [AC_MSG_NOTICE([Checking for libidn2])
902 [idn2_to_unicode_8z8z],
905 AC_DEFINE_UNQUOTED([HAVE_LIBIDN2],
907 [Define to 1 if you have 'libidn2' (-lidn2).])],
908 [MISSING_DEPS="${MISSING_DEPS}${MISSING_SEP}libidn2"
910 AM_CONDITIONAL(HAVE_LIBIDN2, test x$working_libidn2 = x1)
911 AS_IF([test x$working_libidn2 = x0],
912 [AS_IF([test x$my_with_libidn = x1],
913 [AC_MSG_NOTICE([Checking for libidn])
918 AC_DEFINE_UNQUOTED([HAVE_LIBIDN],
920 [Define to 1 if you have 'libidn' (-lidn).])],
921 [there_can_only_be_one=0])],
922 [AS_IF([test x$my_with_libidn2 = x1],
923 [there_can_only_be_one=0
924 AC_MSG_FAILURE([* There can only be one libidn.
925 * Provide either libidn >= 1.13
927 * libidn2 to the configure
930 * --with-libidn])])])])
931 AM_CONDITIONAL(HAVE_LIBIDN, test x$working_libidn1 = x1)
933 AS_IF([test "$working_libidn1" = 0 -a "$working_libidn2" = 0],
934 [AC_MSG_ERROR([GNUnet requires libidn (or libidn2)])])
936 AS_IF([test x$there_can_only_be_one = x0],
937 [AC_MSG_FAILURE([Missing dependencies: $MISSING_DEPS])])
940 SAVE_LDFLAGS=$LDFLAGS
941 SAVE_CPPFLAGS=$CPPFLAGS
943 [ --with-zlib[[=DIR]] use libz in DIR],
944 [AS_IF([test "$withval" = "no"],
945 [AC_MSG_ERROR([GNUnet requires zlib])],
946 [test "$withval" != "yes"],
949 CPPFLAGS="${CPPFLAGS} -I$withval/include"
950 LDFLAGS="${LDFLAGS} -L$withval/lib"
953 AC_CHECK_HEADER(zlib.h,
955 [AC_MSG_ERROR([GNUnet requires zlib])])
956 AC_CHECK_LIB(z, compress2,
958 AC_DEFINE([HAVE_ZLIB], [], [Have compression library])
959 if test "x${Z_DIR}" != "x"; then
960 Z_CFLAGS="-I${Z_DIR}/include"
961 Z_LIBS="-L${Z_DIR}/lib -lz"
965 [AC_MSG_ERROR([GNUnet requires zlib])])
969 if test "$enable_shared" = "no"
971 AC_MSG_ERROR([GNUnet only works with shared libraries. Sorry.])
985 # test for libunistring
987 if test $HAVE_LIBUNISTRING != yes; then
988 AC_MSG_ERROR([GNUnet requires libunistring])
990 # under emscripten, $gl_libunistring_hexversion is undefined
991 if test "$taler_only" != yes; then
992 if test "x$gl_libunistring_hexversion" = "x" || test "$gl_libunistring_hexversion" -le 2305; then
993 AC_MSG_ERROR([GNUnet requires libunistring >= 0.9.1.1])
996 AC_CHECK_HEADERS([unistr.h],,AC_MSG_ERROR([Compiling GNUnet requires unistr.h (from libunistring) to be installed]))
1003 # Checks for standard header files.
1007 # Check for headers that are ALWAYS required
1008 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]))
1012 # Checks for headers that are only required on some systems or opional (and where we do NOT abort if they are not there)
1013 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])
1015 # FreeBSD requires something more funky for netinet/in_systm.h and netinet/ip.h...
1016 AC_CHECK_HEADERS([sys/types.h netinet/in_systm.h netinet/in.h netinet/ip.h],,,
1017 [#ifdef HAVE_SYS_TYPES_H
1018 #include <sys/types.h>
1020 #ifdef HAVE_NETINET_IN_SYSTM_H
1021 #include <netinet/in_systm.h>
1023 #ifdef HAVE_NETINET_IN_H
1024 #include <netinet/in.h>
1028 SAVE_LDFLAGS=$LDFLAGS
1029 SAVE_CPPFLAGS=$CPPFLAGS
1033 AC_MSG_CHECKING(for SQLite)
1035 [ --with-sqlite=PFX base of SQLite installation],
1036 [AC_MSG_RESULT("$with_sqlite")
1037 case $with_sqlite in
1041 AC_CHECK_HEADERS(sqlite3.h,
1045 LDFLAGS="-L$with_sqlite/lib $LDFLAGS"
1046 CPPFLAGS="-I$with_sqlite/include $CPPFLAGS"
1047 AC_CHECK_HEADERS(sqlite3.h,
1048 EXT_LIB_PATH="-L$with_sqlite/lib $EXT_LIB_PATH"
1049 SQLITE_LDFLAGS="-L$with_sqlite/lib"
1050 SQLITE_CPPFLAGS="-I$with_sqlite/include"
1052 LDFLAGS=$SAVE_LDFLAGS
1053 CPPFLAGS=$SAVE_CPPFLAGS
1057 [AC_MSG_RESULT([--with-sqlite not specified])
1058 AC_CHECK_HEADERS(sqlite3.h, sqlite=true)])
1059 AM_CONDITIONAL(HAVE_SQLITE, test x$sqlite = xtrue)
1060 AC_SUBST(SQLITE_CPPFLAGS)
1061 AC_SUBST(SQLITE_LDFLAGS)
1063 LDFLAGS=$SAVE_LDFLAGS
1064 CPPFLAGS=$SAVE_CPPFLAGS
1068 # even running the check for postgres breaks emscripten ...
1069 AS_IF([test "$taler_only" != yes],
1070 [AX_LIB_POSTGRESQL([9.5],
1071 [CPPFLAGS="$CPPFLAGS $POSTGRESQL_CPPFLAGS"
1072 AC_CHECK_HEADERS([libpq-fe.h],
1075 [AC_MSG_RESULT([no postgres])])])
1076 AM_CONDITIONAL(HAVE_POSTGRESQL, test x$postgres = xtrue)
1079 LDFLAGS=$SAVE_LDFLAGS
1080 CPPFLAGS=$SAVE_CPPFLAGS
1083 AC_CHECK_TYPES([sigset_t, off_t], [], [], [#include <sys/types.h>])
1084 AC_CHECK_TYPES([size_t], [], [], [#include <stdio.h>])
1086 if test "$build_target" = "mingw"
1088 CYGWIN_MYSQL_MAGIC="#include <mysql/my_global.h>"
1094 SAVE_LDFLAGS=$LDFLAGS
1095 SAVE_CPPFLAGS=$CPPFLAGS
1096 AC_MSG_CHECKING(for mysql)
1098 [ --with-mysql=PFX base of MySQL installation],
1099 [AC_MSG_RESULT([$with_mysql])
1104 AC_CHECK_HEADERS(mysql/mysql.h,
1105 AC_CHECK_LIB(mysqlclient, mysql_init,
1107 mysql=true), [], [$CYGWIN_MYSQL_MAGIC])
1110 LDFLAGS="-L$with_mysql/lib -L$with_mysql/lib/mysql $LDFLAGS $ZLIBS"
1111 CPPFLAGS="-I$with_mysql/include $CPPFLAGS"
1112 AC_CHECK_HEADERS(mysql/mysql.h,
1113 AC_CHECK_LIB(mysqlclient, mysql_init,
1114 MYSQL_LDFLAGS="-L$with_mysql/lib -L$with_mysql/lib/mysql"
1115 MYSQL_CPPFLAGS="-I$with_mysql/include"
1117 mysql=true), [], [$CYGWIN_MYSQL_MAGIC])
1121 [AC_MSG_RESULT([--with-mysql not specified])
1122 if test -d "/usr/lib64/mysql"; then
1123 MYSQL_LIBDIR="/usr/lib64/mysql"
1124 elif test -d "/usr/lib/mysql"; then
1125 MYSQL_LIBDIR="/usr/lib/mysql"
1127 MYSQL_LIBDIR="/usr/lib"
1129 LDFLAGS="-L$MYSQL_LIBDIR $LDFLAGS $ZLIBS"
1130 AC_CHECK_LIB(mysqlclient, mysql_init,
1131 [AC_CHECK_HEADERS(mysql/mysql.h,
1132 MYSQL_LDFLAGS="-L$MYSQL_LIBDIR"
1135 , [], [$CYGWIN_MYSQL_MAGIC])])
1138 AC_SUBST(MYSQL_LDFLAGS)
1139 AC_SUBST(MYSQL_CPPFLAGS)
1141 # additional version check for mysql
1142 AC_ARG_ENABLE(mysql-version-check, [ --disable-mysql-version-check do not check MySQL version],, enable_mysql_version_check=yes)
1143 if test "$mysql" = "true" -a "x$enable_mysql_version_check" = "xyes"
1145 AC_MSG_CHECKING(mysql version)
1146 AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
1147 [[$CYGWIN_MYSQL_MAGIC
1148 #include <mysql/mysql.h>]],
1150 #if (MYSQL_VERSION_ID < 40100)
1151 #error needs at least version >= 4.1
1153 int main () { return 0; }
1155 ],mysql=true,mysql=false)
1156 if test "$mysql" = "false"
1159 AC_MSG_RESULT([fail, >= 4.1 required])
1164 AM_CONDITIONAL(HAVE_MYSQL, test x$mysql = xtrue)
1165 AM_CONDITIONAL(HAVE_MYSQLE, false)
1168 LDFLAGS=$SAVE_LDFLAGS
1169 CPPFLAGS=$SAVE_CPPFLAGS
1171 if test "$sqlite" = 0 -a "$mysql" = 0
1173 AC_MSG_ERROR([GNUnet requires SQLite or MySQL])
1178 AC_MSG_CHECKING([for libmicrohttpd])
1179 AC_ARG_WITH(microhttpd,
1180 [ --with-microhttpd=PFX base of libmicrohttpd installation],
1181 [AC_MSG_RESULT([$with_microhttpd])
1182 case $with_microhttpd in
1186 AC_CHECK_HEADERS([microhttpd.h],
1187 AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
1188 AC_CHECK_LIB([microhttpd], [MHD_get_fdset2],
1189 [AC_MSG_CHECKING([for libmicrohttpd >= 0.9.52])
1190 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
1191 #include "$native_srcdir/src/include/platform.h"
1192 #include <microhttpd.h>
1193 #if (MHD_VERSION < 0x0094200)
1194 #error needs at least version 0.9.42
1196 int main () { return 0; }
1200 [AC_MSG_RESULT(failed)])]),
1201 [],[#include "$native_srcdir/src/include/platform.h"
1202 #include <microhttpd.h>]),,
1203 [#include "$native_srcdir/src/include/platform.h"])
1206 LDFLAGS="-L$with_microhttpd/lib $LDFLAGS"
1207 CPPFLAGS="-I$with_microhttpd/include $CPPFLAGS"
1208 AC_CHECK_HEADERS(microhttpd.h,
1209 AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
1210 AC_CHECK_LIB([microhttpd], [MHD_get_fdset2],
1211 EXT_LIB_PATH="-L$with_microhttpd/lib $EXT_LIB_PATH"
1212 [AC_MSG_CHECKING([for libmicrohttpd >= 0.9.52])
1213 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
1214 #include "$native_srcdir/src/include/platform.h"
1215 #include <microhttpd.h>
1216 #if (MHD_VERSION < 0x0094200)
1217 #error needs at least version 0.9.42
1219 int main () { return 0; }
1223 [AC_MSG_RESULT(failed)])]),
1224 [],[#include "$native_srcdir/src/include/platform.h"
1225 #include <microhttpd.h>]),,
1226 [#include "$native_srcdir/src/include/platform.h"])
1230 [AC_MSG_RESULT([--with-microhttpd not specified])
1231 AC_CHECK_HEADERS([microhttpd.h],
1232 AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
1233 AC_CHECK_LIB([microhttpd], [MHD_get_fdset2],
1234 [AC_MSG_CHECKING([for libmicrohttpd >= 0.9.52])
1235 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
1236 #include "$native_srcdir/src/include/platform.h"
1237 #include <microhttpd.h>
1238 #if (MHD_VERSION < 0x0094200)
1239 #error needs at least version 0.9.52
1244 [AC_MSG_RESULT(failed)])]),
1245 [],[#include "$native_srcdir/src/include/platform.h"
1246 #include <microhttpd.h>]),,
1247 [#include "$native_srcdir/src/include/platform.h"])])
1248 AM_CONDITIONAL(HAVE_MHD, test x$lmhd = x1)
1249 AC_DEFINE_UNQUOTED([HAVE_MHD], $lmhd, [We have libmicrohttpd])
1251 AM_CONDITIONAL(HAVE_JSON, [test x$jansson = x1])
1257 AM_GNU_GETTEXT([external])
1258 AM_GNU_GETTEXT_VERSION([0.18.1])
1260 # Checks for standard typedefs, structures, and compiler characteristics.
1269 AC_CHECK_MEMBER([struct sockaddr_in.sin_len],
1270 [ AC_DEFINE(HAVE_SOCKADDR_IN_SIN_LEN, 1, [Do we have sockaddr_in.sin_len?])
1274 #include <sys/types.h>
1275 #include <sys/socket.h>
1276 #include <netinet/in.h>
1279 AC_CHECK_MEMBER([struct sockaddr_un.sun_len],
1280 [ AC_DEFINE(HAVE_SOCKADDR_UN_SUN_LEN, 1, [Do we have sockaddr_un.sun_len?])
1284 #include <sys/types.h>
1285 #include <sys/socket.h>
1291 # Checks for library functions.
1292 AC_FUNC_CLOSEDIR_VOID
1294 AC_PROG_GCC_TRADITIONAL
1296 AC_FUNC_SELECT_ARGTYPES
1306 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])
1312 GN_LIBINTL="$LTLIBINTL"
1313 AC_ARG_ENABLE(framework, [ --enable-framework enable Mac OS X framework build helpers],enable_framework_build=$enableval)
1314 AM_CONDITIONAL(WANT_FRAMEWORK, test x$enable_framework_build = xyes)
1315 if test x$enable_framework_build = xyes
1317 AC_DEFINE([FRAMEWORK_BUILD], 1, [Build a Mac OS X Framework])
1318 GN_INTLINCL='-I$(top_srcdir)/src/intlemu'
1319 GN_LIBINTL='$(top_builddir)/src/intlemu/libintlemu.la -framework CoreFoundation'
1320 AC_LIB_APPENDTOVAR([CPPFLAGS], [$GN_INTLINCL])
1323 GN_LIB_LDFLAGS="-export-dynamic -no-undefined"
1324 GN_PLUGIN_LDFLAGS="-export-dynamic -avoid-version -module -no-undefined"
1326 AC_SUBST(GN_LIB_LDFLAGS)
1327 AC_SUBST(GN_PLUGIN_LDFLAGS)
1328 AC_SUBST(GN_INTLINCL)
1329 AC_SUBST(GN_LIBINTL)
1334 AC_SUBST(EXT_LIB_PATH)
1339 AC_SUBST(EXT_LIB_PATH)
1341 DATAROOTDIR=$datarootdir
1342 AC_SUBST(DATAROOTDIR)
1345 # TODO: do we need to change anything for "doas" on openbsd?
1346 AC_MSG_CHECKING(for sudo)
1348 [ --with-sudo=PATH path to sudo binary (or just yes)],
1349 [AC_MSG_RESULT("$with_sudo")
1358 SUDO_BINARY=$with_sudo
1362 [AC_MSG_RESULT([no])])
1363 AC_SUBST(SUDO_BINARY)
1364 AM_CONDITIONAL([HAVE_SUDO], [test "x$SUDO_BINARY" != "x" -o -w /])
1367 # test for gnunetdns group name
1368 GNUNETDNS_GROUP=gnunetdns
1369 AC_MSG_CHECKING(for gnunetdns group name)
1370 AC_ARG_WITH(gnunetdns,
1371 [ --with-gnunetdns=GRPNAME name for gnunetdns group],
1372 [AC_MSG_RESULT("$with_gnunetdns")
1373 case $with_gnunetdns in
1375 GNUNETDNS_GROUP=gnunet
1378 GNUNETDNS_GROUP=gnunetdns
1381 GNUNETDNS_GROUP=$with_gnunetdns
1385 [AC_MSG_RESULT([gnunetdns])])
1386 AC_SUBST(GNUNETDNS_GROUP)
1393 AC_MSG_CHECKING(for gnutls)
1395 [ --with-gnutls=PFX base of gnutls installation],
1396 [AC_MSG_RESULT([$with_gnutls])
1397 case $with_gnutls in
1401 AC_CHECK_HEADERS([gnutls/abstract.h],
1402 AC_CHECK_LIB([gnutls], [gnutls_priority_set],
1404 AC_CHECK_HEADERS([gnutls/dane.h],
1405 AC_CHECK_LIB([gnutls-dane], [dane_verify_crt_raw],
1409 LDFLAGS="-L$with_gnutls/lib $LDFLAGS"
1410 CPPFLAGS="-I$with_gnutls/include $CPPFLAGS"
1411 AC_CHECK_HEADERS([gnutls/abstract.h],
1412 AC_CHECK_LIB([gnutls], [gnutls_priority_set],
1413 EXT_LIB_PATH="-L$with_gnutls/lib $EXT_LIB_PATH"
1415 AC_CHECK_HEADERS([gnutls/dane.h],
1416 AC_CHECK_LIB([gnutls-dane], [dane_verify_crt_raw],
1421 [AC_MSG_RESULT([--with-gnutls not specified])
1422 AC_CHECK_HEADERS([gnutls/abstract.h],
1423 AC_CHECK_LIB([gnutls], [gnutls_priority_set],
1425 AC_CHECK_HEADERS([gnutls/dane.h],
1426 AC_CHECK_LIB([gnutls-dane], [dane_verify_crt_raw],
1429 AM_CONDITIONAL(HAVE_GNUTLS, test x$gnutls = xtrue)
1430 AC_DEFINE_UNQUOTED([HAVE_GNUTLS], $gnutls, [We have GnuTLS])
1431 AM_CONDITIONAL(HAVE_GNUTLS_DANE, test x$gnutls_dane = x1)
1432 AC_DEFINE_UNQUOTED([HAVE_GNUTLS_DANE], $gnutls_dane, [We have GnuTLS with DANE support])
1435 # Test if we are building for superMUC
1436 AC_MSG_CHECKING(if GNUnet is being configured to run on the SuperMUC)
1437 AC_ARG_ENABLE([supermuc],
1438 [AS_HELP_STRING([--enable-supermuc],
1439 [build GNUnet with support to run on the SuperMUC (default is NO)])],
1440 [if test "x$enable_supermuc" = "xno"
1447 enable_supermuc=no])
1448 AC_MSG_RESULT($enable_SUPERMUC)
1449 AM_CONDITIONAL([ENABLE_SUPERMUC], [test "x$supermuc" = "x1"])
1450 AC_DEFINE_UNQUOTED([ENABLE_SUPERMUC], [$supermuc], [Build with support for SuperMUC])
1452 # Check if NSE has to send timestamp information to testbed logger for
1453 # generating histogram of messages received
1454 AC_MSG_CHECKING(if NSE has to send timestamp information to testbed logger)
1455 AC_ARG_ENABLE([nse-histogram],
1456 [AS_HELP_STRING([--enable-nse-histogram],
1457 [have NSE send timestamp information to testbed logger for generating
1458 histogram of received messages. NOT useful for production (default is
1460 [if test "x$enableval" = "xno"
1467 enable_nse_histogram=no])
1468 AC_MSG_RESULT($enable_nse_histogram)
1469 AM_CONDITIONAL([ENABLE_NSE_HISTOGRAM], [test "x$nse_histogram" = "x1"])
1470 AC_DEFINE_UNQUOTED([ENABLE_NSE_HISTOGRAM], [$nse_histogram],
1471 [have NSE send timestamp information to testbed logger])
1473 # should 'make check' run tests?
1474 AC_MSG_CHECKING(whether to run tests)
1475 AC_ARG_ENABLE([testruns],
1476 [AS_HELP_STRING([--disable-testruns], [disable running tests on make check (default is YES)])],
1477 [enable_tests_run=${enableval}],
1478 [enable_tests_run=yes])
1479 AC_MSG_RESULT($enable_test_run)
1480 AM_CONDITIONAL([ENABLE_TEST_RUN], [test "x$enable_tests_run" = "xyes"])
1483 AC_MSG_CHECKING([whether to compile in benchmarks (currently for http and crypto)])
1484 AC_ARG_ENABLE([benchmark],
1485 [AS_HELP_STRING([--enable-benchmark], [enable benchmarking])],
1486 [enable_benchmark=${enableval}],
1487 [enable_benchmark=no])
1488 AC_MSG_RESULT($enable_benchmark)
1489 AS_IF([test "x$enable_benchmark" = "xyes"],
1490 [AC_DEFINE_UNQUOTED(ENABLE_BENCHMARK,1,[Benchmarks are enabled])])
1491 AM_CONDITIONAL([ENABLE_BENCHMARK], [test "x$enable_benchmark" = "xyes"])
1494 # should expensive tests be run?
1495 AC_MSG_CHECKING(whether to run expensive tests)
1496 AC_ARG_ENABLE([expensivetests],
1497 [AS_HELP_STRING([--enable-expensivetests], [enable running expensive testcases])],
1498 [enable_expensive=${enableval}],
1499 [enable_expensive=no])
1500 AC_MSG_RESULT($enable_expensive)
1501 AM_CONDITIONAL([HAVE_EXPENSIVE_TESTS], [test "x$enable_expensive" = "xyes"])
1503 # should ports be open for Java services?
1504 AC_MSG_CHECKING(whether to enable ports for gnunet-java)
1505 AC_ARG_ENABLE([javaports],
1506 [AS_HELP_STRING([--enable-javaports], [use non-zero ports for services with Java bindings (default is NO)])],
1507 [enable_java_ports=${enableval}],
1508 [enable_java_ports=no])
1509 AC_MSG_RESULT($enable_java_ports)
1510 if test "x$enable_java_ports" = "xyes"
1514 JAVAPORT="$UNIXONLY"
1518 # should benchmarks be run?
1519 AC_MSG_CHECKING(whether to run benchmarks during make check)
1520 AC_ARG_ENABLE([benchmarks],
1521 [AS_HELP_STRING([--enable-benchmarks], [enable running benchmarks during make check])],
1522 [enable_benchmarks=${enableval}],
1523 [enable_benchmarks=no])
1524 AC_MSG_RESULT($enable_benchmarks)
1525 AM_CONDITIONAL([HAVE_BENCHMARKS], [test "x$enable_benchmarks" = "xyes"])
1527 # should gnunet-testing be compiled
1528 AC_MSG_CHECKING(wether to compile gnunet-testing)
1529 AC_ARG_ENABLE([testing],
1530 [AS_HELP_STRING([--disable-testing], [do not build gnunet-testing])],
1531 [enable_testing=${enableval}],
1532 [enable_testing=yes])
1533 AC_MSG_RESULT($enable_testing)
1534 AM_CONDITIONAL([HAVE_TESTING], [test "x$enable_testing" = "xyes"])
1536 # should experimental code be compiled (code that may not yet compile)?
1537 AC_MSG_CHECKING(whether to compile experimental code)
1538 AC_ARG_ENABLE([experimental],
1539 [AS_HELP_STRING([--enable-experimental], [enable compiling experimental code])],
1540 [enable_experimental=${enableval}],
1541 [enable_experimental=no])
1542 AC_MSG_RESULT($enable_experimental)
1543 AM_CONDITIONAL([HAVE_EXPERIMENTAL], [test "x$enable_experimental" = "xyes"])
1545 # should malicious code be compiled (should only be used for testing)?
1546 AC_MSG_CHECKING(whether to compile malicious code)
1547 AC_ARG_ENABLE([malicious],
1548 [AS_HELP_STRING([--enable-malicious], [enable compiling malicious code])],
1549 [if test "x$enableval" = "xno"
1556 enable_malicious=no])
1557 AC_MSG_RESULT($enable_malicious)
1558 AM_CONDITIONAL([ENABLE_MALICIOUS], [test 1=$malicious])
1559 AC_DEFINE_UNQUOTED([ENABLE_MALICIOUS], [$malicious],
1560 [enable compilation of malicious code])
1562 # should services be started on demand when needed? Some services may choose to
1563 # never start by default and it is up to the service/module developer to decide
1564 # by having "START_ON_DEMAND = NO" instead of "START_ON_DEMAND = @START_ON_DEMAND@"
1565 # in the service/module's conf.in file.
1566 # See also IMMEDIATE_START for an unconditional immediate start.
1567 START_ON_DEMAND="YES"
1568 AC_MSG_CHECKING(whether to start peer's services on demand by default)
1569 AC_ARG_ENABLE([autostart],
1570 [AS_HELP_STRING([--disable-autostart], [do not start peer's services by default])],
1571 [enable_autostart=${enableval}
1572 if test "x$enable_autostart" = "xno"
1574 START_ON_DEMAND="NO"
1577 [enable_autostart=yes])
1578 AC_MSG_RESULT($enable_autostart)
1579 #AM_CONDITIONAL([HAVE_START_ON_DEMAND], [test "x$enable_autostart" = "xyes"])
1580 AC_SUBST(START_ON_DEMAND)
1582 # should memory statistics be kept (very expensive CPU-wise!)
1583 AC_MSG_CHECKING(whether to create expensive statistics on memory use)
1584 AC_ARG_ENABLE([heapstats],
1585 [AS_HELP_STRING([--enable-heapstats], [enable expensive heap statistics])],
1586 [enable_heapstats=1],
1587 [enable_heapstats=0])
1588 AC_MSG_RESULT($enable_heapstats)
1589 AC_DEFINE_UNQUOTED([ENABLE_HEAP_STATISTICS],$enable_heapstats,[enable expensive heap statistics])
1591 # should code be enabled that works around missing OS functionality on Windows?
1592 # used for test cases
1593 if test $build_target = "mingw"
1599 [#include <ws2tcpip.h>
1601 int s = socket (0, 0, 0);])
1603 AC_DEFINE_UNQUOTED([HAVE_SOCKET],1,[Define this if socket() is available])
1605 AC_DEFINE_UNQUOTED([HAVE_SOCKET],0,[Define this if socket() is available])
1610 [#include <ws2tcpip.h>
1612 int s = select (0, NULL, NULL, NULL, NULL);])
1614 AC_DEFINE_UNQUOTED([HAVE_SELECT],1,[Define this if select() is available])
1616 AC_DEFINE_UNQUOTED([HAVE_SELECT],0,[Define this if select() is available])
1621 [#include <ws2tcpip.h>
1624 char *s = inet_ntoa (i);])
1626 AC_DEFINE_UNQUOTED([HAVE_INET_NTOA],1,[Define this if inet_ntoa() is available])
1628 AC_DEFINE_UNQUOTED([HAVE_INET_NTOA],0,[Define this if inet_ntoa() is available])
1633 [#include <ws2tcpip.h>
1635 int s = getnameinfo (NULL, 0, NULL, 0, NULL, 0, 0);])
1637 AC_DEFINE_UNQUOTED([HAVE_GETNAMEINFO],1,[Define this if getnameinfo() is available])
1639 AC_DEFINE_UNQUOTED([HAVE_GETNAMEINFO],0,[Define this if getnameinfo() is available])
1644 [#include <ws2tcpip.h>
1646 int s = gethostname (NULL, 0);])
1648 AC_DEFINE_UNQUOTED([HAVE_GETHOSTNAME],1,[Define this if gethostname() is available])
1650 AC_DEFINE_UNQUOTED([HAVE_GETHOSTNAME],0,[Define this if gethostname() is available])
1655 [#include <ws2tcpip.h>
1657 void *s = gethostbyname (NULL);])
1659 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYNAME],1,[Define this if gethostbyname() is available])
1661 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYNAME],0,[Define this if gethostbyname() is available])
1666 [#include <ws2tcpip.h>
1668 void *s = gethostbyaddr (NULL, 0, 0);])
1670 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYADDR],1,[Define this if gethostbyaddr() is available])
1672 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYADDR],0,[Define this if gethostbyaddr() is available])
1677 [#include <ws2tcpip.h>
1679 int s = getaddrinfo (NULL, NULL, NULL, NULL);])
1681 AC_DEFINE_UNQUOTED([HAVE_GETADDRINFO],1,[Define this if getaddrinfo() is available])
1683 AC_DEFINE_UNQUOTED([HAVE_GETADDRINFO],0,[Define this if getaddrinfo() is available])
1687 AC_MSG_CHECKING(whether to enable windows workarounds)
1688 AC_ARG_ENABLE([windows_workarounds],
1689 [AS_HELP_STRING([--enable-windows_workarounds], [enable workarounds used on Windows (only useful for test cases)])],
1690 [enable_workarounds=${enableval}],
1691 [enable_workarounds=no])
1692 AC_MSG_RESULT($enable_workarounds)
1693 if test x$enable_windows_workarounds = "xyes"
1700 AC_DEFINE_UNQUOTED([ENABLE_WINDOWS_WORKAROUNDS], $workarounds, [enable workarounds used on Windows (only useful for test cases)])
1703 AC_MSG_CHECKING(whether to compile with support for code coverage analysis)
1704 AC_ARG_ENABLE([coverage],
1705 AS_HELP_STRING([--enable-coverage],
1706 [compile the library with code coverage support]),
1707 [use_gcov=${enableval}],
1709 AC_MSG_RESULT($use_gcov)
1710 AM_CONDITIONAL([USE_COVERAGE], [test "x$use_gcov" = "xyes"])
1714 # TODO: git blame says this predates our switch to git. git-svn should be adjusted to simply git, or
1715 # an external script that does the job.
1716 AC_PATH_PROG(svnversioncommand, svnversion)
1717 AC_PATH_PROG(gitcommand, git)
1718 AC_MSG_CHECKING(for source being under a VCS)
1722 AC_PATH_PROG(gitcommand, git)
1723 AC_MSG_CHECKING(for source being under a VCS)
1725 AS_IF([test ! "X$gitcommand" = "X"],
1727 git_version=$(cd $srcdir ; git rev-list --full-history --all --abbrev-commit | head -n 1 2>/dev/null)
1729 AS_IF([test "X$git_version" = "X"],
1732 vcs_version="\"release\""
1735 vcs_name="yes, git-svn"
1736 vcs_version="\"git-$git_version\""
1738 AC_MSG_RESULT($vcs_name)
1740 AC_MSG_CHECKING(VCS version)
1741 AC_MSG_RESULT($vcs_version)
1742 AC_DEFINE_UNQUOTED(VCS_VERSION, [$vcs_version], [VCS revision/hash or tarball version])
1747 contrib/scripts/Makefile
1748 contrib/scripts/gnunet-logread/Makefile
1751 doc/doxygen/Makefile
1752 doc/handbook/Makefile
1753 doc/tutorial/Makefile
1762 src/ats-tool/Makefile
1763 src/ats-tests/Makefile
1764 src/auction/Makefile
1767 src/cadet/cadet.conf
1770 src/consensus/Makefile
1771 src/consensus/consensus.conf
1772 src/conversation/Makefile
1773 src/conversation/conversation.conf
1775 src/datacache/Makefile
1776 src/datastore/Makefile
1777 src/datastore/datastore.conf
1783 src/fragmentation/Makefile
1788 src/gns/nss/Makefile
1789 src/gnsrecord/Makefile
1791 src/identity/Makefile
1792 src/identity/identity.conf
1793 src/credential/Makefile
1794 src/credential/credential.conf
1795 src/include/Makefile
1796 src/integration-tests/Makefile
1798 src/hostlist/Makefile
1801 src/namecache/Makefile
1802 src/namecache/namecache.conf
1803 src/namestore/Makefile
1804 src/namestore/namestore.conf
1807 src/nat-auto/Makefile
1808 src/nat-auto/nat-auto.conf
1812 src/peerinfo/Makefile
1813 src/peerinfo/peerinfo.conf
1814 src/peerinfo-tool/Makefile
1815 src/peerstore/Makefile
1816 src/peerstore/peerstore.conf
1820 src/regex/regex.conf
1821 src/revocation/Makefile
1822 src/revocation/revocation.conf
1825 src/secretsharing/Makefile
1826 src/secretsharing/secretsharing.conf
1827 src/scalarproduct/Makefile
1828 src/scalarproduct/scalarproduct.conf
1832 src/statistics/Makefile
1833 src/statistics/statistics.conf
1834 src/template/Makefile
1835 src/testbed/Makefile
1836 src/testbed/testbed.conf
1837 src/testbed-logger/Makefile
1838 src/testbed-logger/testbed-logger.conf
1839 src/testing/Makefile
1840 src/topology/Makefile
1841 src/transport/Makefile
1842 src/transport/transport.conf
1844 src/util/resolver.conf
1847 src/zonemaster/Makefile
1848 src/zonemaster/zonemaster.conf
1851 src/reclaim-attribute/Makefile
1852 src/reclaim/Makefile
1854 pkgconfig/gnunetarm.pc
1855 pkgconfig/gnunetats.pc
1856 pkgconfig/gnunetblock.pc
1857 pkgconfig/gnunetcadet.pc
1858 pkgconfig/gnunetconsensus.pc
1859 pkgconfig/gnunetconversation.pc
1860 pkgconfig/gnunetcore.pc
1861 pkgconfig/gnunetdatacache.pc
1862 pkgconfig/gnunetdatastore.pc
1863 pkgconfig/gnunetdht.pc
1864 pkgconfig/gnunetdns.pc
1865 pkgconfig/gnunetenv.pc
1866 pkgconfig/gnunetfragmentation.pc
1867 pkgconfig/gnunetfs.pc
1868 pkgconfig/gnunetgns.pc
1869 pkgconfig/gnunethello.pc
1870 pkgconfig/gnunetidentity.pc
1871 pkgconfig/gnunetmicrophone.pc
1872 pkgconfig/gnunetmysql.pc
1873 pkgconfig/gnunetnamestore.pc
1874 pkgconfig/gnunetnat.pc
1875 pkgconfig/gnunetnse.pc
1876 pkgconfig/gnunetpeerinfo.pc
1877 pkgconfig/gnunetpq.pc
1878 pkgconfig/gnunetregex.pc
1879 pkgconfig/gnunetrevocation.pc
1880 pkgconfig/gnunetrps.pc
1881 pkgconfig/gnunetscalarproduct.pc
1882 pkgconfig/gnunetset.pc
1883 pkgconfig/gnunetspeaker.pc
1884 pkgconfig/gnunetstatistics.pc
1885 pkgconfig/gnunettestbed.pc
1886 pkgconfig/gnunettesting.pc
1887 pkgconfig/gnunettransport.pc
1888 pkgconfig/gnunetutil.pc
1889 pkgconfig/gnunetvpn.pc
1895 # warn user if mysql found but not used due to version
1896 AS_IF([test "$mysqlfail" = "true"]
1897 [AC_MSG_NOTICE([WARNING: optional MySQL not found (or too old)])])
1900 AS_IF([test "x$sqlite" = "x0"],
1901 [AC_MSG_ERROR([ERROR: sqlite3 not found, but sqlite3 is required.])])
1904 AS_IF([test "$gnurl" = "0"],
1905 [AS_IF([test "x$curl" = "xfalse"],
1906 [AC_MSG_NOTICE([WARNING: libgnurl not found. http client support will not be compiled.])
1907 AC_MSG_WARN([ERROR: libgnurl not found. hostlist daemon will not be compiled, and you probably WANT the hostlist daemon])],
1908 [AC_MSG_NOTICE([WARNING: libgnurl not found, trying to use libcurl-gnutls instead.])])])
1911 AS_IF([test "x$bluetooth" = "x0"],
1912 [AC_MSG_NOTICE([WARNING: optional bluetooth library not found.])])
1916 AS_IF([test "x$jansson" = "x0"],
1917 [AC_MSG_NOTICE([WARNING: optional jansson library not found.])])
1920 # FIXME: `some modules' -> be more specific which exact modules.
1923 # warn user if iptables is not found
1924 AS_IF([test "$VAR_IPTABLES_BINARY" = "false"],
1925 [AC_MSG_NOTICE([WARNING: optional iptables not found])])
1927 # warn user if ifconfig is not found
1928 AS_IF([test "$VAR_IFCONFIG_BINARY" = "false"],
1929 [AC_MSG_NOTICE([WARNING: optional ifconfig not found])])
1931 # warn user if upnpc binary is not found
1932 AS_IF([test "$VAR_UPNPC_BINARY" = "false"],
1933 [AC_MSG_NOTICE([WARNING: optional upnpc binary not found])])
1936 AS_IF([test x$gnutls != xtrue],
1937 [AC_MSG_NOTICE([WARNING: GnuTLS not found, gnunet-gns-proxy will not be built])],
1938 [AS_IF([test "x$gnutls_dane" != "x1"],
1939 [AC_MSG_NOTICE([WARNING: GnuTLS has no DANE support, DANE validation will not be possible])])])
1942 AS_IF([test "x$enable_java_ports" = "xyes"],
1943 [AC_MSG_NOTICE([NOTICE: Opening ports for gnunet-java bindings by default.])])
1946 AS_IF([test "x$lmhd" != "x1"],
1947 [AC_MSG_NOTICE([WARNING: optional libmicrohttpd not found])])
1950 AS_IF([test "x$conversation_backend" = "xnone"],
1951 [AS_IF([test "x$pulse" != "x1"],
1952 [AC_MSG_NOTICE([WARNING: libpulse(audio) not found, conversation will not be built.])])
1953 AS_IF([test "x$opus" != "x1"],
1954 [AC_MSG_NOTICE([WARNING: libopus not found, conversation will not be built.])])
1955 AS_IF([test "x$gst" != "x1"],
1956 [AC_MSG_NOTICE([WARNING: GStreamer not found, conversation will not be built.])])])
1958 AS_IF([test "$extractor" != 1],
1959 [AC_MSG_WARN([ERROR: libextractor not found, but various file-sharing functions require it])])
1961 AS_IF([test "x$working_libidn2" = x1],
1962 [AC_MSG_NOTICE([INFO: Using libidn2])])
1963 AS_IF([test "x$working_libidn1" = x1],
1964 [AC_MSG_NOTICE([INFO: Using libidn1])])
1966 AC_MSG_NOTICE([NOTICE: Database support is set to MySQL: $mysql, SQLite: $sqlite, Postgres: $postgres])
1968 AS_IF([test "$enable_framework_build" = "yes"],
1969 [AC_MSG_NOTICE([Mac OS X framework build enabled.])])
1971 AC_MSG_NOTICE([********************************************
1972 Please make sure NOW that you have created a user and group 'gnunet'
1973 and additionally a group 'gnunetdns'. On Debian and Ubuntu GNU/Linux, type:
1975 adduser --system --group --disabled-login --home /var/lib/gnunet gnunet
1977 Make sure that '/var/lib/gnunet' is owned (and writable) by user
1978 'gnunet'. Then, you can compile GNUnet with
1981 After that, run (if necessary as 'root')
1983 to install everything.
1985 Each GNUnet user should be added to the 'gnunet' group (may
1986 require fresh login to come into effect):
1987 adduser USERNAME gnunet
1988 (run the above command as root once for each of your users, replacing
1989 "USERNAME" with the respective login names). If you have a global IP
1990 address, no further configuration is required.
1992 For more detailed setup instructions, see https://docs.gnunet.org/
1994 Optionally, download and compile gnunet-gtk to get a GUI for
1995 file-sharing and configuration. This is particularly recommended
1996 if your network setup is non-trivial, as gnunet-setup can be
1997 used to test in the GUI if your network configuration is working.
1998 gnunet-setup should be run as the "gnunet" user under X. As it
1999 does very little with the network, running it as "root" is likely
2000 also harmless. You can also run it as a normal user, but then
2001 you have to copy ~/.gnunet/gnunet.conf" over to the "gnunet" user's
2002 home directory in the end.
2004 Once you have configured your peer, run (as the 'gnunet' user)
2006 to start the peer. You can then run the various GNUnet-tools as
2007 your "normal" user (who should only be in the group 'gnunet').
2008 ********************************************])