1 # This file is part of GNUnet.
2 # (C) 2001--2018 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/>.
18 # Process this file with autoconf to produce a configure script.
22 # Checks for programs.
23 AC_INIT([gnunet], [0.11.0pre66], [bug-gnunet@gnu.org])
24 AC_CONFIG_AUX_DIR([build-aux])
30 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
31 AC_CONFIG_HEADERS([gnunet_config.h])
32 AH_TOP([#define _GNU_SOURCE 1])
33 AC_CONFIG_MACRO_DIR([m4])
43 LT_INIT([disable-static dlopen win32-dll])
51 CFLAGS="-Wall $CFLAGS"
52 # use '-fno-strict-aliasing', but only if the compiler can take it
53 if gcc -fno-strict-aliasing -S -o /dev/null -xc /dev/null >/dev/null 2>&1;
55 CFLAGS="-fno-strict-aliasing $CFLAGS"
58 # Use Linux interface name unless the OS has a different preference
59 DEFAULT_INTERFACE="\"eth0\""
61 funcstocheck="getnameinfo gethostname gethostbyname gethostbyaddr getaddrinfo getaddrinfo_a"
63 # Srcdir in a form that native compiler understands (i.e. DOS path on W32)
68 *darwin* | *rhapsody* | *macosx*)
69 AC_DEFINE_UNQUOTED(DARWIN,1,[This is an Apple Darwin system])
70 CPPFLAGS="-D_APPLE_C_SOURCE $CPPFLAGS"
71 CFLAGS="-fno-common $CFLAGS"
72 AC_MSG_WARN([WARNING: The VPN application cannot be compiled on your OS])
74 DEFAULT_INTERFACE="\"en0\""
80 AC_DEFINE_UNQUOTED(LINUX,1,[This is a Linux kernel])
88 AC_DEFINE_UNQUOTED(SOMEBSD,1,[This is a BSD system])
89 AC_DEFINE_UNQUOTED(FREEBSD,1,[This is a FreeBSD system])
90 CFLAGS="-D_THREAD_SAFE $CFLAGS"
91 build_target="freebsd"
97 AC_DEFINE_UNQUOTED(SOMEBSD,1,[This is a BSD system])
98 AC_DEFINE_UNQUOTED(OPENBSD,1,[This is an OpenBSD system])
99 LIBS=`echo $LIBS | sed -e "s/-ldl//"`
100 build_target="openbsd"
106 AC_DEFINE_UNQUOTED(SOMEBSD,1,[This is a BSD system])
107 AC_DEFINE_UNQUOTED(NETBSD,1,[This is a NetBSD system])
113 AC_DEFINE_UNQUOTED(SOLARIS,1,[This is a Solaris system])
114 AC_DEFINE_UNQUOTED(_REENTRANT,1,[Need with solaris or errno doesnt work])
115 AC_CHECK_LIB(resolv, res_init)
116 AC_CHECK_LIB(rt, nanosleep)
117 build_target="solaris"
123 AC_DEFINE_UNQUOTED(LINUX,1,[This is a Linux kernel])
124 CFLAGS="-D_REENTRANT -fPIC -pipe $CFLAGS"
131 AC_DEFINE_UNQUOTED(CYGWIN,1,[This is a Cygwin system])
132 AC_DEFINE_UNQUOTED(WINDOWS,1,[This is a Windows system])
133 AC_CHECK_LIB(intl, gettext)
134 CFLAGS="-mms-bitfields $CFLAGS"
135 build_target="cygwin"
142 AC_DEFINE_UNQUOTED(MINGW,1,[This is a MinGW system])
143 AC_DEFINE_UNQUOTED(WINDOWS,1,[This is a Windows system])
144 AC_DEFINE_UNQUOTED(_WIN32,1,[This is a Windows system])
145 AC_CHECK_LIB(intl, gettext)
146 LDFLAGS="$LDFLAGS -Wl,--export-all-symbols"
147 LIBS="$LIBS -lws2_32 -lplibc -lgnurx -lole32"
148 CFLAGS="-mms-bitfields $CFLAGS"
149 CPPFLAGS="-D_WIN32_WINNT=0x0501 -DHAVE_STAT64=1 -D__USE_MINGW_ANSI_STDIO=1 $CPPFLAGS"
156 native_srcdir=$(cd $srcdir; pwd -W)
159 AC_DEFINE_UNQUOTED(GNU,1,[This is a GNU system])
164 AC_MSG_RESULT(Unrecognised OS $host_os)
165 AC_DEFINE_UNQUOTED(OTHEROS,1,[Some strange OS])
169 AC_DEFINE_UNQUOTED([GNUNET_DEFAULT_INTERFACE], $DEFAULT_INTERFACE, [This should be the default choice for the name of the first network interface])
170 AC_SUBST(DEFAULT_INTERFACE)
172 # Disable TCP-based IPC on systems that support UNIX domain
173 # sockets in default configuratin:
177 AC_MSG_CHECKING([for build target])
178 AM_CONDITIONAL(DARWIN, test "$build_target" = "darwin")
179 AM_CONDITIONAL(CYGWIN, test "$build_target" = "cygwin")
180 AM_CONDITIONAL(MINGW, test "$build_target" = "mingw")
181 AM_CONDITIONAL(SOLARIS, test "$build_target" = "solaris")
182 AM_CONDITIONAL(XFREEBSD, test "$build_target" = "freebsd")
183 AM_CONDITIONAL(OPENBSD, test "$build_target" = "openbsd")
184 AM_CONDITIONAL(LINUX, test "$build_target" = "linux")
185 AM_CONDITIONAL(GNU, test "$build_target" = "gnu")
187 AC_MSG_RESULT([$build_target])
188 AC_SUBST(build_target)
189 AM_CONDITIONAL([am__fastdepOBJC], false)
190 AC_UNALIGNED_64_ACCESS
192 # some other checks for standard libs
193 AC_SEARCH_LIBS([gethostbyname], [nsl ws2_32])
194 AC_CHECK_LIB(socket, socket)
196 AC_CHECK_LIB(c, getloadavg, AC_DEFINE(HAVE_GETLOADAVG,1,[getloadavg supported]))
198 AC_CHECK_PROG(VAR_GETOPT_BINARY, getopt, true, false)
199 AM_CONDITIONAL(HAVE_GETOPT_BINARY, $VAR_GETOPT_BINARY)
201 AC_CHECK_PROG(VAR_SSH_BINARY, ssh, true, false)
202 AM_CONDITIONAL(HAVE_SSH_BINARY, $VAR_SSH_BINARY)
203 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)
204 rm -f /tmp/gnunet_test_cosks_ssh_garbage
206 # iptables is a soft requirement to run tests
207 AC_PATH_TARGET_TOOL(VAR_IPTABLES_BINARY, iptables, false)
209 if test x"$VAR_IPTABLES_BINARY" != x"false"
211 if test -x "/sbin/iptables"
213 VAR_IPTABLES_BINARY="/sbin/iptables"
214 elif test -x "/usr/sbin/iptables"
216 VAR_IPTABLES_BINARY="/usr/sbin/iptables"
220 if test x"$VAR_IPTABLES_BINARY" != x"false"
222 AC_DEFINE_UNQUOTED([IPTABLES], "$VAR_IPTABLES_BINARY", [Path to iptables])
224 AC_MSG_WARN([warning: 'iptables' not found.])
227 AC_PATH_TARGET_TOOL(VAR_IFCONFIG_BINARY, ifconfig, false)
229 AC_CHECK_PROG(VAR_IFCONFIG_BINARY, ifconfig, true, false)
230 if test x"$VAR_IFCONFIG_BINARY" != x"false"
232 if test -x "/sbin/ifconfig"
234 VAR_IFCONFIG_BINARY="/sbin/ifconfig"
235 elif test -x "/usr/sbin/ifconfig"
237 VAR_IFCONFIG_BINARY="/usr/sbin/ifconfig"
240 if test x"$VAR_IFCONFIG_BINARY" != x"false"
242 AC_DEFINE_UNQUOTED([IFCONFIG], "$VAR_IFCONFIG_BINARY", [Path to ifconfig])
244 AC_MSG_WARN([warning: 'ifconfig' not found.])
248 # miniupnpc / upnpc binary is a soft runtime requirement
249 AC_PATH_TARGET_TOOL(VAR_UPNPC_BINARY, upnpc, false)
251 if test x"$VAR_UPNPC_BINARY" != x"false"
253 AC_DEFINE_UNQUOTED([UPNPC], "$VAR_UPNPC_BINARY", [Path to upnpc binary])
255 AC_MSG_WARN([warning: 'upnpc' binary not found.])
258 AC_CHECK_MEMBER(struct tm.tm_gmtoff,
259 [AC_DEFINE(HAVE_TM_GMTOFF, 1,
260 [Define if struct tm has the tm_gmtoff member.])],
264 AC_CHECK_DECLS([_stati64])
266 # 'save' libs; only those libs found so far will be
267 # linked against _everywhere_. For the others, we
268 # will be more selective!
272 AC_CHECK_LIB(anl, getaddrinfo_a, [have_addrinfo_a=1 AC_DEFINE(HAVE_GETADDRINFO_A,1,[getaddrinfo_a supported])])
273 AM_CONDITIONAL(HAVE_GETADDRINFO_A, [test "$have_addrinfo_a" = 1])
275 # tests only run on Windows
276 if test "x$build_target" = "xmingw"
278 AC_CHECK_LIB(plibc, plibc_init, [], [AC_MSG_ERROR([GNUnet requires PlibC on Windows])])
279 AC_CHECK_LIB(gnurx, regexec, [], [AC_MSG_ERROR([GNUnet requires libgnurx on Windows])])
285 NEED_LIBGCRYPT_VERSION=1.6.0
288 AM_PATH_LIBGCRYPT("$NEED_LIBGCRYPT_API:$NEED_LIBGCRYPT_VERSION", gcrypt=1)
289 AC_CHECK_DECLS([gcry_mpi_set_opaque_copy], [], [], [[#include <gcrypt.h>]])
295 *** You need libgcrypt to build this program.
296 ** This library is for example available at
297 *** ftp://ftp.gnupg.org/gcrypt/libgcrypt/
298 *** (at least version $NEED_LIBGCRYPT_VERSION (API $NEED_LIBGCRYPT_API)
302 AC_DEFINE_UNQUOTED([NEED_LIBGCRYPT_VERSION], "$NEED_LIBGCRYPT_VERSION", [required libgcrypt version])
304 # TODO: add check for VERSION
305 # TODO: add check for alternatives
306 # TODO: add switch to skip documentation building
307 AM_MISSING_PROG([MAKEINFO], [makeinfo])
309 # Adam shostack suggests the following for Windows:
310 # -D_FORTIFY_SOURCE=2 -fstack-protector-all
311 AC_ARG_ENABLE(gcc-hardening,
312 AS_HELP_STRING(--enable-gcc-hardening, enable compiler security checks),
313 [if test x$enableval = xyes; then
314 CFLAGS="$CFLAGS -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fstack-protector-all"
315 CFLAGS="$CFLAGS -fwrapv -fPIE -Wstack-protector"
316 CFLAGS="$CFLAGS --param ssp-buffer-size=1"
317 LDFLAGS="$LDFLAGS -pie"
321 # Linker hardening options
322 # Currently these options are ELF specific - you can't use this with MacOSX
323 AC_ARG_ENABLE(linker-hardening,
324 AS_HELP_STRING(--enable-linker-hardening, enable linker security fixups),
325 [if test x$enableval = xyes; then
326 LDFLAGS="$LDFLAGS -z relro -z now"
330 AC_ARG_ENABLE(sanitizer,
331 AS_HELP_STRING(--enable-sanitizer, enable Address Sanitizer and Undefined Behavior Sanitizer),
332 [if test x$enableval = xyes; then
333 LDFLAGS="$CFLAGS -fsanitize=address,undefined -fno-omit-frame-pointer"
337 extra_logging=GNUNET_NO
338 AC_ARG_ENABLE([logging],
339 AS_HELP_STRING([--enable-logging@<:@=value@:>@],[Enable logging calls. Possible values: yes,no,verbose,veryverbose ('yes' is the default)]),
340 [AS_IF([test "x$enableval" = "xyes"], [],
341 [test "x$enableval" = "xno"], [AC_DEFINE([GNUNET_CULL_LOGGING],[],[Define to cull all logging calls])],
342 [test "x$enableval" = "xverbose"], [extra_logging=GNUNET_YES]
343 [test "x$enableval" = "xveryverbose"], [extra_logging=\(GNUNET_YES+1\)])
345 AC_DEFINE_UNQUOTED([GNUNET_EXTRA_LOGGING],[$extra_logging],[1 if extra logging is enabled, 2 for very verbose extra logging, 0 otherwise])
347 # should memory poisoning be enabled?
348 AC_MSG_CHECKING(whether to poison freed memory)
349 AC_ARG_ENABLE([poisoning],
350 [AS_HELP_STRING([--enable-poisoning], [enable poisoning of freed memory (good for debugging)])],
351 [enable_poisoning=${enableval}],
353 if test "x$extra_logging" != "xGNUNET_NO"; then
354 enable_poisoning="defaults to yes (extra logging is enabled)"
359 AC_MSG_RESULT($enable_poisoning)
360 if test ! "x$enable_poisoning" = "xno"; then
365 AC_DEFINE_UNQUOTED([ENABLE_POISONING],[$enable_poisoning],[1 if freed memory should be poisoned, 0 otherwise])
367 if test $build = $target
369 AC_MSG_CHECKING([for working HMAC])
371 LIBS="$LIBS $LIBGCRYPT_LIBS"
372 CFLAGS="$CFLAGS $LIBGCRYPT_CFLAGS"
374 [AC_LANG_PROGRAM([#include <gcrypt.h>
375 #include <stdio.h>], [[
378 unsigned char data[] = { 0xbf, 0x16, 0x6e, 0x46, 0x3a, 0x6c, 0xf3, 0x93, 0xa7, 0x72,
379 0x11, 0xa1, 0xdc, 0x0b, 0x07, 0xdb, 0x1a, 0x5e, 0xd9, 0xb9, 0x81, 0xbe,
380 0xea, 0xe4, 0x31, 0x5f, 0x24, 0xff, 0xfe, 0x50, 0x8a, 0xde };
381 unsigned char key[] = { 0xfc, 0x62, 0x76, 0x35 };
382 unsigned char result[] = {0xa2, 0xb, 0x1, 0xd9, 0xc0, 0x8b, 0x5a, 0x12, 0x80,
383 0xd5, 0x50, 0x12, 0x8e, 0xd0, 0x5b, 0xb6, 0x5c, 0x87, 0x24, 0xe2, 0xd0,
384 0xd2, 0xaf, 0x63, 0xae, 0xd1, 0xd6, 0x64, 0x14, 0xe3, 0x6e, 0x61, 0x5b,
385 0xd, 0xba, 0x17, 0x7d, 0xd3, 0x10, 0xb1, 0x37, 0x41, 0x91, 0x7d, 0xeb,
386 0x1, 0x4d, 0x71, 0xe8, 0x59, 0x71, 0x42, 0x8e, 0xd6, 0xf3, 0x29, 0x3b,
387 0x90, 0xf2, 0xd1, 0xaf, 0x65, 0x1e, 0xb3};
389 if (!gcry_check_version (GCRYPT_VERSION))
391 fprintf (stderr, "Version mismatch %s <-> %s \n", gcry_check_version (NULL), GCRYPT_VERSION);
395 gcry_control (GCRYCTL_DISABLE_SECMEM, 0);
396 gcry_control (GCRYCTL_INITIALIZATION_FINISHED, 0);
398 if (gcry_md_open(&mac, GCRY_MD_SHA512, GCRY_MD_FLAG_HMAC) != GPG_ERR_NO_ERROR)
400 fprintf (stderr, "gcry_md_open error\n");
404 gcry_md_setkey (mac, key, sizeof (key));
405 gcry_md_write (mac, data, sizeof (data));
407 if (memcmp(gcry_md_read (mac, 0), result, gcry_md_get_algo_dlen (gcry_md_get_algo (mac))) != 0)
409 fprintf (stderr, "memcmp error\n");
417 [AC_MSG_RESULT([yes])],
422 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.])
426 AC_MSG_FAILURE([HMAC test failed])
430 AC_MSG_FAILURE([libgcrypt header version does not match library version])
433 [AC_MSG_RESULT([cross compiling, test skipped])])
435 fi # $build = $target
437 # check for bluetooth library
439 AC_CHECK_LIB(bluetooth, ba2str,[AC_CHECK_HEADER([bluetooth/bluetooth.h],bluetooth=1)])
440 if test "$build_target" = "mingw"
444 AM_CONDITIONAL(HAVE_LIBBLUETOOTH, [test "$bluetooth" = 1])
445 if test "$bluetooth" = 1
447 AC_DEFINE([HAVE_LIBBLUETOOTH],[1],[Have bluetooth library])
449 AC_DEFINE([HAVE_LIBBLUETOOTH],[0],[Lacking bluetooth library])
452 # check for jansson library
454 AC_MSG_CHECKING(for libjansson)
456 [ --with-jansson=PFX base of libjansson installation],
457 [AC_MSG_RESULT([$with_jansson])
458 case $with_jansson in
462 AC_CHECK_HEADERS(jansson.h,
463 AC_CHECK_LIB([jansson], [json_loads],
467 LDFLAGS="-L$with_jansson/lib $LDFLAGS"
468 CPPFLAGS="-I$with_jansson/include $CPPFLAGS"
469 AC_CHECK_HEADERS(jansson.h,
470 AC_CHECK_LIB([jansson], [json_loads],
471 EXT_LIB_PATH="-L$with_jansson/lib $EXT_LIB_PATH"
476 [AC_MSG_RESULT([--with-jansson not specified])
477 AC_CHECK_HEADERS(jansson.h,
478 AC_CHECK_LIB([jansson], [json_loads],
480 AM_CONDITIONAL(HAVE_JANSSON, [test "$jansson" = 1])
481 if test "x$jansson" = x1
483 AC_DEFINE([HAVE_JANSSON],[1],[Have jansson library])
485 AC_DEFINE([HAVE_JANSSON],[0],[Lacking jansson library])
489 # check for libpulse(audio) library
491 AC_CHECK_LIB(pulse,pa_stream_peek,
492 [AC_CHECK_HEADER([pulse/simple.h],pulse=1)])
493 if test "$build_target" = "mingw"
499 AC_DEFINE([HAVE_PULSE],[1],[Have libpulse(audio) library])
502 # check for libopus(audio) library
504 AC_CHECK_LIB(opus,opus_decode_float,
505 [AC_CHECK_HEADER([opus/opus.h],
506 [AC_CHECK_DECL([OPUS_SET_GAIN],[opus=1],[],[[#include <opus/opus.h>]]
510 AS_IF([test "x$opus" = x1],
511 [AC_DEFINE([HAVE_OPUS],[1],[Have libopus library])])
514 AC_CHECK_LIB(ogg, ogg_stream_flush_fill,
515 [AC_CHECK_HEADERS([ogg/ogg.h],
516 AM_CONDITIONAL(HAVE_OGG, true)
518 AC_DEFINE(HAVE_OGG,1,[Have ogg]),
519 AM_CONDITIONAL(HAVE_OGG, false)
521 AC_DEFINE(HAVE_OGG,0,[lacking ogg]))],
522 AM_CONDITIONAL(HAVE_OGG, false)
526 PKG_CHECK_MODULES([GLIB], [glib-2.0],
527 # check for pbc library
529 AC_CHECK_HEADER([pbc/pbc.h],pbc=1)
530 AC_CHECK_HEADER([gabe.h],abe=1)
531 AM_CONDITIONAL(HAVE_PBC, [test "$pbc" = 1])
532 AM_CONDITIONAL(HAVE_ABE, [test "$abe" = 1])
535 AC_DEFINE([HAVE_PBC],[1],[Have pbc library])
537 AC_DEFINE([HAVE_PBC],[0],[Lacking pbc library])
541 AC_DEFINE([HAVE_ABE],[1],[Have ABE library])
543 AC_DEFINE([HAVE_ABE],[0],[Lacking ABE library])
547 AM_CONDITIONAL(HAVE_PBC, [0])
548 AM_CONDITIONAL(HAVE_ABE, [0])
549 AC_DEFINE([HAVE_PBC],[0],[Lacking glib library])
555 [glib-2.0 gobject-2.0 gstreamer-1.0 gstreamer-app-1.0 gstreamer-audio-1.0],
561 AC_MSG_RESULT(not found)
565 if test "x$pulse" != "x1" -o "x$opus" != "x1" -o "x$ogg" != "x1"
567 if test "x$gst" != "x1"
569 conversation_backend=none
570 AM_CONDITIONAL(BUILD_PULSE_HELPERS, false)
571 AM_CONDITIONAL(BUILD_GST_HELPERS, false)
572 AM_CONDITIONAL(BUILD_EXPERIMENTAL_HELPERS, false)
574 conversation_backend=gst
575 AM_CONDITIONAL(BUILD_PULSE_HELPERS, false)
576 AM_CONDITIONAL(BUILD_GST_HELPERS, true)
577 AM_CONDITIONAL(BUILD_EXPERIMENTAL_HELPERS, false)
581 conversation_backend=pulse
582 AM_CONDITIONAL(BUILD_PULSE_HELPERS, true)
583 AM_CONDITIONAL(BUILD_GST_HELPERS, false)
584 AM_CONDITIONAL(BUILD_EXPERIMENTAL_HELPERS, false)
588 LIBGNURL_CHECK_CONFIG(,7.34.0,gnurl=1,gnurl=0)
591 AM_CONDITIONAL(HAVE_LIBGNURL, true)
592 AC_DEFINE([HAVE_LIBGNURL],[1],[Have libgnurl])
594 AM_CONDITIONAL(HAVE_LIBGNURL, false)
595 AC_DEFINE([HAVE_LIBGNURL],[0],[Lacking libgnurl])
598 SAVE_CPPFLAGS=$CPPFLAGS
599 CPPFLAGS="$LIBGNURL_CPPFLAGS $LIBCURL_CPPFLAGS $CPPFLAGS"
600 LIBS="$LIBGNURL $LIBCURL $LIBS"
603 LIBCURL_CHECK_CONFIG(,7.34.0,[curl=true],[curl=false])
604 if test "x$curl" = xtrue
607 AC_CHECK_HEADERS([curl/curl.h],
608 AC_CHECK_DECLS(CURLINFO_TLS_SESSION,[curl=true],[curl=false],[[#include <curl/curl.h>]]),
610 AC_CHECK_HEADERS([gnurl/curl.h],
611 AC_CHECK_DECLS(CURLINFO_TLS_SESSION,[curl=true],,[[#include <gnurl/curl.h>]]))
612 # need libcurl-gnutls.so, everything else is not acceptable
613 AC_CHECK_LIB([curl-gnutls],[curl_easy_getinfo],,[curl=false])
614 # cURL must support CURLINFO_TLS_SESSION, version >= 7.34
617 # Check for curl/curl.h and gnurl/curl.h so we can use #ifdef
618 # HAVE_CURL_CURL_H later (the above LIBCURL_CHECK_CONFIG accepted
619 # *either* header set).
620 AC_CHECK_HEADERS([curl/curl.h],,
622 AC_CHECK_HEADERS([gnurl/curl.h],,
627 if test x$curl = xfalse
629 AM_CONDITIONAL(HAVE_LIBCURL, false)
632 AC_MSG_WARN([ERROR: GNUnet requires libcurl-gnutls or gnurl >= 7.34])
635 AM_CONDITIONAL(HAVE_LIBCURL, true)
636 AC_DEFINE([HAVE_LIBCURL],[1],[Have CURL])
640 # restore LIBS & CPPFLAGS
642 CPPFLAGS=$SAVE_CPPFLAGS
644 AC_CHECK_HEADERS([glpk.h],[glpk=true],[gplk=false])
645 # GLPK must support glpk_init_env, version >= 4.43
646 AC_CHECK_LIB([glpk],[glp_init_env],,[gplk=false])
647 # GLPK must support atm MLP presolving, version >= 4.32
648 AC_CHECK_MEMBERS(glp_iocp.presolve,,[gplk=false],[[#include <glpk.h>]])
649 if test x$gplk = xfalse
651 AM_CONDITIONAL(HAVE_LIBGLPK, false)
652 AC_MSG_WARN([ERROR: GNUnet requires GLPK >= 4.32])
654 AM_CONDITIONAL(HAVE_LIBGLPK, true)
655 AC_DEFINE([HAVE_LIBGLPK],[1],[Have GLPK])
659 AC_CHECK_HEADERS([nss.h],[nss=true],[nss=false])
660 if test x$nss = xfalse
662 AM_CONDITIONAL(HAVE_GLIBCNSS, false)
663 AC_MSG_WARN([ERROR: No GNU libc nss header, will not build NSS plugin])
665 AM_CONDITIONAL(HAVE_GLIBCNSS, true)
670 # test for kvm and kstat (for CPU stats under BSD/Solaris)
671 AC_CHECK_LIB([kvm],[kvm_open])
672 AC_CHECK_LIB([kstat],[kstat_open])
675 # should the build process be building the documentation?
676 AC_MSG_CHECKING(whether to build documentation)
677 AC_ARG_ENABLE([documentation],
678 [AS_HELP_STRING([--disable-documentation], [do not build the documentation])],
679 [documentation=${enableval}],
681 AC_MSG_RESULT($documentation)
682 if test "x$documentation" = "xyes"
684 AM_CONDITIONAL([DOCUMENTATION],true)
685 AC_DEFINE([DOCUMENTATION],[1],[Building the documentation])
687 AM_CONDITIONAL([DOCUMENTATION],false)
688 AC_DEFINE([DOCUMENTATION],[0],[Not building the documentation])
691 # TODO: Include check for mandoc + texi2mdoc.
692 # TODO: Rename the switch? Just 'section7' is too vague.
693 # mdoc section 7 output.
694 AC_MSG_CHECKING(wether to build section 7 mdoc output)
695 AC_ARG_ENABLE([section7],
696 [AS_HELP_STRING([--disable-section7], [do not build section 7 mdoc output])],
697 [section7=${enableval}],
699 AC_MSG_RESULT($section7)
700 if test "x$section7" = "xyes"
702 if test "$texi2mdoc" = 0
704 AC_MSG_WARN([ERROR: mdoc output currently requires texi2mdoc.])
705 AC_MSG_WARN([ERROR: texi2mdoc can be obtained via your Operating System])
706 AC_MSG_WARN([ERROR: package manager or from https://mandoc.bsd.lv/texi2mdoc/])
708 AM_CONDITIONAL([SECTION7],true)
709 AC_DEFINE([SECTION7],[1],[Building section 7 mdoc output])
712 AM_CONDITIONAL([SECTION7],false)
713 AC_DEFINE([SECTION7],[0],[Not building section 7 mdoc output])
716 # should the build process be building only the documentation?
717 AC_MSG_CHECKING(whether to build only documentation)
718 AC_ARG_ENABLE([documentation-only],
719 [AS_HELP_STRING([--enable-documentation-only], [build only the documentation])],
720 [documentation_only=${enableval}],
721 [documentation_only=no])
722 AC_MSG_RESULT($documentation_only)
723 if test "x$documentation_only" = "xyes"
725 AM_CONDITIONAL([DOCUMENTATION_ONLY],true)
726 AC_DEFINE([DOCUMENTATION_ONLY],[1],[Building only the documentation])
728 AM_CONDITIONAL([DOCUMENTATION_ONLY],false)
729 AC_DEFINE([DOCUMENTATION_ONLY],[0],[Not building only the documentation])
732 # should the build process be restricted to the code required
733 # for GNU Taler wallets?
734 AC_MSG_CHECKING(whether to compile GNU Taler Wallet library ONLY)
735 AC_ARG_ENABLE([taler-wallet],
736 [AS_HELP_STRING([--enable-taler-wallet], [only compile for Taler wallet])],
737 [taler_only=${enableval}],
739 AC_MSG_RESULT($taler_only)
740 if test "x$taler_only" = "xyes"
742 AM_CONDITIONAL([TALER_ONLY],true)
743 AC_DEFINE([TALER_WALLET_ONLY],[1],[Compiling for Taler wallet])
745 AM_CONDITIONAL([TALER_ONLY],false)
746 AC_DEFINE([TALER_WALLET_ONLY],[0],[Canonical compilation])
749 # test for libextractor
751 AC_MSG_CHECKING(for libextractor)
752 AC_ARG_WITH(extractor,
753 [ --with-extractor=PFX base of libextractor installation],
754 [AC_MSG_RESULT([$with_extractor])
755 case $with_extractor in
759 AC_CHECK_HEADERS(extractor.h,
760 AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
764 LDFLAGS="-L$with_extractor/lib $LDFLAGS"
765 CPPFLAGS="-I$with_extractor/include $CPPFLAGS"
766 AC_CHECK_HEADERS(extractor.h,
767 AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
768 EXT_LIB_PATH="-L$with_extractor/lib $EXT_LIB_PATH"
773 [AC_MSG_RESULT([--with-extractor not specified])
774 AC_CHECK_HEADERS(extractor.h,
775 AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
780 if test "$extractor" != 1
782 AM_CONDITIONAL(HAVE_LIBEXTRACTOR, false)
783 AC_DEFINE([HAVE_LIBEXTRACTOR],[0],[Lacking libextractor])
785 AM_CONDITIONAL(HAVE_LIBEXTRACTOR, true)
786 AC_DEFINE([HAVE_LIBEXTRACTOR],[1],[Have libextractor])
790 if test "$taler_only" != yes
793 # Check for libltdl header (#2999)
795 AC_MSG_CHECKING(for libltdl)
797 [ --with-ltdl=PFX base of libltdl installation],
798 [AC_MSG_RESULT([$with_ltdl])
803 AC_CHECK_HEADERS(ltdl.h,
804 AC_CHECK_LIB([ltdl], [lt_dlopenext],
808 LDFLAGS="-L$with_ltdl/lib $LDFLAGS"
809 CPPFLAGS="-I$with_ltdl/include $CPPFLAGS"
810 AC_CHECK_HEADERS(ltdl.h,
811 AC_CHECK_LIB([ltdl], [lt_dlopenext],
812 EXT_LIB_PATH="-L$with_ltdl/lib $EXT_LIB_PATH"
817 [AC_MSG_RESULT([--with-ltdl not specified])
818 AC_CHECK_HEADERS(ltdl.h,
819 AC_CHECK_LIB([ltdl], [lt_dlopenext],
823 AC_MSG_RESULT([libltdl found])
825 AC_MSG_ERROR([GNUnet requires libltdl (from GNU libtool), try installing libltdl-dev])
830 # libidn and libidn2. The ideal goal is this:
831 # check for libidn2, if it doesn't exist check for libidn
832 # if both exist, prefer libidn2
833 # if none exist, fail and message that libidn or libidn2
834 # is required with a preference for libidn2.
835 # TODO: What we have right here can probably be improved.
838 AS_HELP_STRING([--with-libidn=pathname],
839 [Support IDN (needs libidn)]),
842 AS_IF([test x_$withval = x_yes],
843 [AC_CHECK_HEADERS([idna.h],
844 AC_MSG_NOTICE([Found idna.h]),
845 AC_CHECK_HEADERS([idn/idna.h],
846 AC_MSG_NOTICE([Found idn/idna.h]),
848 [AS_IF([test x_$withval != x_no],
849 [CFLAGS="$CFLAGS -I$withval/include"
850 LDFLAGS="$LDFLAGS -L$withval/lib"
851 AC_CHECK_HEADERS([idna.h],
852 AC_MSG_NOTICE([Found idna.h]),
853 [AC_MSG_NOTICE([Failed to find idna.h])
855 [my_with_libidn=0])])
859 AS_HELP_STRING([--with-libidn2=pathname],
860 [Support IDN (needs libidn2)]),
863 AS_IF([test x_$withval = x_yes],
864 [AC_CHECK_HEADERS([idn2.h],
865 AC_MSG_NOTICE([Found idn2.h]),
866 AC_CHECK_HEADERS([idn2/idn2.h],
867 AC_MSG_NOTICE([Found idn2/idn2.h]),
868 [AC_MSG_NOTICE([Failed to find idn2.h])
869 my_with_libidn2=0]))],
870 [AS_IF([test x_$withval != x_no],
871 [CFLAGS="$CFLAGS -I$withval/include"
872 LDFLAGS="$LDFLAGS -L$withval/lib"],
873 [my_with_libidn2=0])])
875 AC_MSG_CHECKING([if libidn can be used])
877 there_can_only_be_one=1
881 AS_IF([test x$my_with_libidn2 = x1],
882 [AC_MSG_NOTICE([Checking for libidn2])
884 [idn2_to_unicode_8z8z],
887 AC_DEFINE_UNQUOTED([HAVE_LIBIDN2],
889 [Define to 1 if you have 'libidn2' (-lidn).])],
890 [MISSING_DEPS="${MISSING_DEPS}${MISSING_SEP}libidn2"
892 AM_CONDITIONAL(HAVE_LIBIDN2, test x$working_libidn2 = x1)
893 AS_IF([test x$working_libidn2 = x0],
894 [AS_IF([test x$my_with_libidn = x1],
895 [AC_MSG_NOTICE([Checking for libidn])
900 AC_DEFINE_UNQUOTED([HAVE_LIBIDN],
902 [Define to 1 if you have 'libidn' (-lidn).])],
903 [there_can_only_be_one=0])],
904 [AS_IF([test x$my_with_libidn2 = x1],
905 [there_can_only_be_one=0
906 AC_MSG_FAILURE([* There can only be one libidn.
907 * Provide either libidn >= 1.13
909 * libidn2 to the configure
912 * --with-libidn])])])])
913 AM_CONDITIONAL(HAVE_LIBIDN, test x$working_libidn1 = x1)
915 AS_IF([test x$there_can_only_be_one = x0],
916 [AC_MSG_FAILURE([Missing dependencies: $MISSING_DEPS])])
919 SAVE_LDFLAGS=$LDFLAGS
920 SAVE_CPPFLAGS=$CPPFLAGS
922 [ --with-zlib[[=DIR]] use libz in DIR],
923 [AS_IF([test "$withval" = "no"],
924 [AC_MSG_ERROR([GNUnet requires zlib])],
925 [test "$withval" != "yes"],
928 CPPFLAGS="${CPPFLAGS} -I$withval/include"
929 LDFLAGS="${LDFLAGS} -L$withval/lib"
932 AC_CHECK_HEADER(zlib.h,
934 [AC_MSG_ERROR([GNUnet requires zlib])])
935 AC_CHECK_LIB(z, compress2,
937 AC_DEFINE([HAVE_ZLIB], [], [Have compression library])
938 if test "x${Z_DIR}" != "x"; then
939 Z_CFLAGS="-I${Z_DIR}/include"
940 Z_LIBS="-L${Z_DIR}/lib -lz"
944 [AC_MSG_ERROR([GNUnet requires zlib])])
948 if test "$enable_shared" = "no"
950 AC_MSG_ERROR([GNUnet only works with shared libraries. Sorry.])
964 # test for libunistring
966 if test $HAVE_LIBUNISTRING != yes; then
967 AC_MSG_ERROR([GNUnet requires libunistring])
969 # under emscripten, $gl_libunistring_hexversion is undefined
970 if test "$taler_only" != yes; then
971 if test "x$gl_libunistring_hexversion" = "x" || test "$gl_libunistring_hexversion" -le 2305; then
972 AC_MSG_ERROR([GNUnet requires libunistring >= 0.9.1.1])
975 AC_CHECK_HEADERS([unistr.h],,AC_MSG_ERROR([Compiling GNUnet requires unistr.h (from libunistring) to be installed]))
982 # Checks for standard header files.
986 # Check for headers that are ALWAYS required
987 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]))
991 # Checks for headers that are only required on some systems or opional (and where we do NOT abort if they are not there)
992 AC_CHECK_HEADERS([malloc.h malloc/malloc.h malloc/malloc_np.h langinfo.h sys/param.h sys/mount.h sys/statvfs.h sys/select.h sockLib.h sys/mman.h sys/msg.h sys/vfs.h arpa/inet.h fcntl.h libintl.h netdb.h netinet/in.h sys/ioctl.h sys/socket.h sys/time.h unistd.h kstat.h sys/sysinfo.h kvm.h sys/file.h sys/resource.h ifaddrs.h mach/mach.h stddef.h sys/timeb.h terminos.h argz.h ucred.h sys/ucred.h endian.h sys/endian.h execinfo.h byteswap.h])
994 # FreeBSD requires something more funky for netinet/in_systm.h and netinet/ip.h...
995 AC_CHECK_HEADERS([sys/types.h netinet/in_systm.h netinet/in.h netinet/ip.h],,,
996 [#ifdef HAVE_SYS_TYPES_H
997 #include <sys/types.h>
999 #ifdef HAVE_NETINET_IN_SYSTM_H
1000 #include <netinet/in_systm.h>
1002 #ifdef HAVE_NETINET_IN_H
1003 #include <netinet/in.h>
1007 SAVE_LDFLAGS=$LDFLAGS
1008 SAVE_CPPFLAGS=$CPPFLAGS
1012 AC_MSG_CHECKING(for SQLite)
1014 [ --with-sqlite=PFX base of SQLite installation],
1015 [AC_MSG_RESULT("$with_sqlite")
1016 case $with_sqlite in
1020 AC_CHECK_HEADERS(sqlite3.h,
1024 LDFLAGS="-L$with_sqlite/lib $LDFLAGS"
1025 CPPFLAGS="-I$with_sqlite/include $CPPFLAGS"
1026 AC_CHECK_HEADERS(sqlite3.h,
1027 EXT_LIB_PATH="-L$with_sqlite/lib $EXT_LIB_PATH"
1028 SQLITE_LDFLAGS="-L$with_sqlite/lib"
1029 SQLITE_CPPFLAGS="-I$with_sqlite/include"
1031 LDFLAGS=$SAVE_LDFLAGS
1032 CPPFLAGS=$SAVE_CPPFLAGS
1036 [AC_MSG_RESULT([--with-sqlite not specified])
1037 AC_CHECK_HEADERS(sqlite3.h, sqlite=true)])
1038 AM_CONDITIONAL(HAVE_SQLITE, test x$sqlite = xtrue)
1039 AC_SUBST(SQLITE_CPPFLAGS)
1040 AC_SUBST(SQLITE_LDFLAGS)
1042 LDFLAGS=$SAVE_LDFLAGS
1043 CPPFLAGS=$SAVE_CPPFLAGS
1047 # even running the check for postgres breaks emscripten ...
1048 if test "$taler_only" != yes; then
1049 AX_LIB_POSTGRESQL([9.5])
1050 if test "x$found_postgresql" = "xyes"; then
1051 CPPFLAGS="$CPPFLAGS $POSTGRESQL_CPPFLAGS"
1052 AC_CHECK_HEADERS([libpq-fe.h],
1056 AM_CONDITIONAL(HAVE_POSTGRESQL, test x$postgres = xtrue)
1059 LDFLAGS=$SAVE_LDFLAGS
1060 CPPFLAGS=$SAVE_CPPFLAGS
1063 AC_CHECK_TYPES([sigset_t, off_t], [], [], [#include <sys/types.h>])
1064 AC_CHECK_TYPES([size_t], [], [], [#include <stdio.h>])
1066 if test "$build_target" = "mingw"
1068 CYGWIN_MYSQL_MAGIC="#include <mysql/my_global.h>"
1074 SAVE_LDFLAGS=$LDFLAGS
1075 SAVE_CPPFLAGS=$CPPFLAGS
1076 AC_MSG_CHECKING(for mysql)
1078 [ --with-mysql=PFX base of MySQL installation],
1079 [AC_MSG_RESULT([$with_mysql])
1084 AC_CHECK_HEADERS(mysql/mysql.h,
1085 AC_CHECK_LIB(mysqlclient, mysql_init,
1087 mysql=true), [], [$CYGWIN_MYSQL_MAGIC])
1090 LDFLAGS="-L$with_mysql/lib -L$with_mysql/lib/mysql $LDFLAGS $ZLIBS"
1091 CPPFLAGS="-I$with_mysql/include $CPPFLAGS"
1092 AC_CHECK_HEADERS(mysql/mysql.h,
1093 AC_CHECK_LIB(mysqlclient, mysql_init,
1094 MYSQL_LDFLAGS="-L$with_mysql/lib -L$with_mysql/lib/mysql"
1095 MYSQL_CPPFLAGS="-I$with_mysql/include"
1097 mysql=true), [], [$CYGWIN_MYSQL_MAGIC])
1101 [AC_MSG_RESULT([--with-mysql not specified])
1102 if test -d "/usr/lib64/mysql"; then
1103 MYSQL_LIBDIR="/usr/lib64/mysql"
1104 elif test -d "/usr/lib/mysql"; then
1105 MYSQL_LIBDIR="/usr/lib/mysql"
1107 MYSQL_LIBDIR="/usr/lib"
1109 LDFLAGS="-L$MYSQL_LIBDIR $LDFLAGS $ZLIBS"
1110 AC_CHECK_LIB(mysqlclient, mysql_init,
1111 [AC_CHECK_HEADERS(mysql/mysql.h,
1112 MYSQL_LDFLAGS="-L$MYSQL_LIBDIR"
1115 , [], [$CYGWIN_MYSQL_MAGIC])])
1118 AC_SUBST(MYSQL_LDFLAGS)
1119 AC_SUBST(MYSQL_CPPFLAGS)
1121 # additional version check for mysql
1122 AC_ARG_ENABLE(mysql-version-check, [ --disable-mysql-version-check do not check MySQL version],, enable_mysql_version_check=yes)
1123 if test "$mysql" = "true" -a "x$enable_mysql_version_check" = "xyes"
1125 AC_MSG_CHECKING(mysql version)
1126 AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
1127 [[$CYGWIN_MYSQL_MAGIC
1128 #include <mysql/mysql.h>]],
1130 #if (MYSQL_VERSION_ID < 40100)
1131 #error needs at least version >= 4.1
1133 int main () { return 0; }
1135 ],mysql=true,mysql=false)
1136 if test "$mysql" = "false"
1139 AC_MSG_RESULT([fail, >= 4.1 required])
1144 AM_CONDITIONAL(HAVE_MYSQL, test x$mysql = xtrue)
1145 AM_CONDITIONAL(HAVE_MYSQLE, test "0" = "1")
1148 LDFLAGS=$SAVE_LDFLAGS
1149 CPPFLAGS=$SAVE_CPPFLAGS
1151 if test "$sqlite" = 0 -a "$mysql" = 0
1153 AC_MSG_ERROR([GNUnet requires SQLite or MySQL])
1158 AC_MSG_CHECKING([for libmicrohttpd])
1159 AC_ARG_WITH(microhttpd,
1160 [ --with-microhttpd=PFX base of libmicrohttpd installation],
1161 [AC_MSG_RESULT([$with_microhttpd])
1162 case $with_microhttpd in
1166 AC_CHECK_HEADERS([microhttpd.h],
1167 AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
1168 AC_CHECK_LIB([microhttpd], [MHD_get_fdset2],
1169 [AC_MSG_CHECKING([for libmicrohttpd >= 0.9.42])
1170 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
1171 #include "$native_srcdir/src/include/platform.h"
1172 #include <microhttpd.h>
1173 #if (MHD_VERSION < 0x0094200)
1174 #error needs at least version 0.9.42
1176 int main () { return 0; }
1180 [AC_MSG_RESULT(failed)])]),
1181 [],[#include "$native_srcdir/src/include/platform.h"
1182 #include <microhttpd.h>]),,
1183 [#include "$native_srcdir/src/include/platform.h"])
1186 LDFLAGS="-L$with_microhttpd/lib $LDFLAGS"
1187 CPPFLAGS="-I$with_microhttpd/include $CPPFLAGS"
1188 AC_CHECK_HEADERS(microhttpd.h,
1189 AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
1190 AC_CHECK_LIB([microhttpd], [MHD_get_fdset2],
1191 EXT_LIB_PATH="-L$with_microhttpd/lib $EXT_LIB_PATH"
1192 [AC_MSG_CHECKING([for libmicrohttpd >= 0.9.42])
1193 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
1194 #include "$native_srcdir/src/include/platform.h"
1195 #include <microhttpd.h>
1196 #if (MHD_VERSION < 0x0094200)
1197 #error needs at least version 0.9.42
1199 int main () { return 0; }
1203 [AC_MSG_RESULT(failed)])]),
1204 [],[#include "$native_srcdir/src/include/platform.h"
1205 #include <microhttpd.h>]),,
1206 [#include "$native_srcdir/src/include/platform.h"])
1210 [AC_MSG_RESULT([--with-microhttpd not specified])
1211 AC_CHECK_HEADERS([microhttpd.h],
1212 AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
1213 AC_CHECK_LIB([microhttpd], [MHD_get_fdset2],
1214 [AC_MSG_CHECKING([for libmicrohttpd >= 0.9.42])
1215 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
1216 #include "$native_srcdir/src/include/platform.h"
1217 #include <microhttpd.h>
1218 #if (MHD_VERSION < 0x0094200)
1219 #error needs at least version 0.9.42
1224 [AC_MSG_RESULT(failed)])]),
1225 [],[#include "$native_srcdir/src/include/platform.h"
1226 #include <microhttpd.h>]),,
1227 [#include "$native_srcdir/src/include/platform.h"])])
1228 AM_CONDITIONAL(HAVE_MHD, test x$lmhd = x1)
1229 AC_DEFINE_UNQUOTED([HAVE_MHD], $lmhd, [We have libmicrohttpd])
1231 AM_CONDITIONAL(HAVE_JSON, [test x$jansson = x1])
1236 # check for python & pexpect (used for some testcases only)
1237 AM_PATH_PYTHON([2.6],, [:])
1238 AM_CONDITIONAL([HAVE_PYTHON], [test "$PYTHON" != :])
1241 AM_GNU_GETTEXT([external])
1242 AM_GNU_GETTEXT_VERSION([0.18.1])
1244 # Checks for standard typedefs, structures, and compiler characteristics.
1253 AC_CHECK_MEMBER([struct sockaddr_in.sin_len],
1254 [ AC_DEFINE(HAVE_SOCKADDR_IN_SIN_LEN, 1, [Do we have sockaddr_in.sin_len?])
1258 #include <sys/types.h>
1259 #include <sys/socket.h>
1260 #include <netinet/in.h>
1263 AC_CHECK_MEMBER([struct sockaddr_un.sun_len],
1264 [ AC_DEFINE(HAVE_SOCKADDR_UN_SUN_LEN, 1, [Do we have sockaddr_un.sun_len?])
1268 #include <sys/types.h>
1269 #include <sys/socket.h>
1275 # Checks for library functions.
1276 AC_FUNC_CLOSEDIR_VOID
1278 AC_PROG_GCC_TRADITIONAL
1280 AC_FUNC_SELECT_ARGTYPES
1290 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])
1296 GN_LIBINTL="$LTLIBINTL"
1297 AC_ARG_ENABLE(framework, [ --enable-framework enable Mac OS X framework build helpers],enable_framework_build=$enableval)
1298 AM_CONDITIONAL(WANT_FRAMEWORK, test x$enable_framework_build = xyes)
1299 if test x$enable_framework_build = xyes
1301 AC_DEFINE([FRAMEWORK_BUILD], 1, [Build a Mac OS X Framework])
1302 GN_INTLINCL='-I$(top_srcdir)/src/intlemu'
1303 GN_LIBINTL='$(top_builddir)/src/intlemu/libintlemu.la -framework CoreFoundation'
1304 AC_LIB_APPENDTOVAR([CPPFLAGS], [$GN_INTLINCL])
1307 GN_LIB_LDFLAGS="-export-dynamic -no-undefined"
1308 GN_PLUGIN_LDFLAGS="-export-dynamic -avoid-version -module -no-undefined"
1310 AC_SUBST(GN_LIB_LDFLAGS)
1311 AC_SUBST(GN_PLUGIN_LDFLAGS)
1312 AC_SUBST(GN_INTLINCL)
1313 AC_SUBST(GN_LIBINTL)
1318 AC_SUBST(EXT_LIB_PATH)
1323 AC_SUBST(EXT_LIB_PATH)
1327 AC_MSG_CHECKING(for sudo)
1329 [ --with-sudo=PATH path to sudo binary (or just yes)],
1330 [AC_MSG_RESULT("$with_sudo")
1339 SUDO_BINARY=$with_sudo
1343 [AC_MSG_RESULT([no])])
1344 AC_SUBST(SUDO_BINARY)
1345 AM_CONDITIONAL([HAVE_SUDO], [test "x$SUDO_BINARY" != "x" -o -w /])
1348 # test for gnunetdns group name
1349 GNUNETDNS_GROUP=gnunetdns
1350 AC_MSG_CHECKING(for gnunetdns group name)
1351 AC_ARG_WITH(gnunetdns,
1352 [ --with-gnunetdns=GRPNAME name for gnunetdns group],
1353 [AC_MSG_RESULT("$with_gnunetdns")
1354 case $with_gnunetdns in
1356 GNUNETDNS_GROUP=gnunet
1359 GNUNETDNS_GROUP=gnunetdns
1362 GNUNETDNS_GROUP=$with_gnunetdns
1366 [AC_MSG_RESULT([gnunetdns])])
1367 AC_SUBST(GNUNETDNS_GROUP)
1374 AC_MSG_CHECKING(for gnutls)
1376 [ --with-gnutls=PFX base of gnutls installation],
1377 [AC_MSG_RESULT([$with_gnutls])
1378 case $with_gnutls in
1382 AC_CHECK_HEADERS([gnutls/abstract.h],
1383 AC_CHECK_LIB([gnutls], [gnutls_priority_set],
1385 AC_CHECK_HEADERS([gnutls/dane.h],
1386 AC_CHECK_LIB([gnutls-dane], [dane_verify_crt_raw],
1390 LDFLAGS="-L$with_gnutls/lib $LDFLAGS"
1391 CPPFLAGS="-I$with_gnutls/include $CPPFLAGS"
1392 AC_CHECK_HEADERS([gnutls/abstract.h],
1393 AC_CHECK_LIB([gnutls], [gnutls_priority_set],
1394 EXT_LIB_PATH="-L$with_gnutls/lib $EXT_LIB_PATH"
1396 AC_CHECK_HEADERS([gnutls/dane.h],
1397 AC_CHECK_LIB([gnutls-dane], [dane_verify_crt_raw],
1402 [AC_MSG_RESULT([--with-gnutls not specified])
1403 AC_CHECK_HEADERS([gnutls/abstract.h],
1404 AC_CHECK_LIB([gnutls], [gnutls_priority_set],
1406 AC_CHECK_HEADERS([gnutls/dane.h],
1407 AC_CHECK_LIB([gnutls-dane], [dane_verify_crt_raw],
1410 AM_CONDITIONAL(HAVE_GNUTLS, test x$gnutls = xtrue)
1411 AC_DEFINE_UNQUOTED([HAVE_GNUTLS], $gnutls, [We have GnuTLS])
1412 AM_CONDITIONAL(HAVE_GNUTLS_DANE, test x$gnutls_dane = x1)
1413 AC_DEFINE_UNQUOTED([HAVE_GNUTLS_DANE], $gnutls_dane, [We have GnuTLS with DANE support])
1416 # Test if we are building for superMUC
1417 AC_MSG_CHECKING(if GNUnet is being configured to run on the SuperMUC)
1418 AC_ARG_ENABLE([supermuc],
1419 [AS_HELP_STRING([--enable-supermuc],
1420 [build GNUnet with support to run on the SuperMUC (default is NO)])],
1421 [if test "x$enable_supermuc" = "xno"
1428 enable_supermuc=no])
1429 AC_MSG_RESULT($enable_SUPERMUC)
1430 AM_CONDITIONAL([ENABLE_SUPERMUC], [test "x$supermuc" = "x1"])
1431 AC_DEFINE_UNQUOTED([ENABLE_SUPERMUC], [$supermuc], [Build with support for SuperMUC])
1433 # Check if NSE has to send timestamp information to testbed logger for
1434 # generating histogram of messages received
1435 AC_MSG_CHECKING(if NSE has to send timestamp information to testbed logger)
1436 AC_ARG_ENABLE([nse-histogram],
1437 [AS_HELP_STRING([--enable-nse-histogram],
1438 [have NSE send timestamp information to testbed logger for generating
1439 histogram of received messages. NOT useful for production (default is
1441 [if test "x$enableval" = "xno"
1448 enable_nse_histogram=no])
1449 AC_MSG_RESULT($enable_nse_histogram)
1450 AM_CONDITIONAL([ENABLE_NSE_HISTOGRAM], [test "x$nse_histogram" = "x1"])
1451 AC_DEFINE_UNQUOTED([ENABLE_NSE_HISTOGRAM], [$nse_histogram],
1452 [have NSE send timestamp information to testbed logger])
1454 # should 'make check' run tests?
1455 AC_MSG_CHECKING(whether to run tests)
1456 AC_ARG_ENABLE([testruns],
1457 [AS_HELP_STRING([--disable-testruns], [disable running tests on make check (default is YES)])],
1458 [enable_tests_run=${enableval}],
1459 [enable_tests_run=yes])
1460 AC_MSG_RESULT($enable_test_run)
1461 AM_CONDITIONAL([ENABLE_TEST_RUN], [test "x$enable_tests_run" = "xyes"])
1464 # should monkey be used when running (certain) services?
1465 AC_MSG_CHECKING(whether to run with monkey)
1466 AC_ARG_ENABLE([monkey],
1467 [AS_HELP_STRING([--enable-monkey], [enable running with monkey])],
1468 [enable_monkey=${enableval}],
1470 AC_MSG_RESULT($enable_monkey)
1471 AM_CONDITIONAL([ENABLE_MONKEY], [test "x$enable_monkey" = "xyes"])
1472 if test "x$enable_monkey" = "xyes"
1474 MONKEYPREFIX="pathologist -d $(eval echo ${datarootdir}/gnunet/gnunet.sqlite) -p 30 --"
1478 AC_SUBST(MONKEYPREFIX)
1481 AC_MSG_CHECKING([whether to compile in benchmarks (currently for http and crypto)])
1482 AC_ARG_ENABLE([benchmark],
1483 [AS_HELP_STRING([--enable-benchmark], [enable benchmarking])],
1484 [enable_benchmark=${enableval}],
1485 [enable_benchmark=no])
1486 AC_MSG_RESULT($enable_benchmark)
1487 AS_IF([test "x$enable_benchmark" = "xyes"],
1488 [AC_DEFINE_UNQUOTED(ENABLE_BENCHMARK,1,[Benchmarks are enabled])])
1489 AM_CONDITIONAL([ENABLE_BENCHMARK], [test "x$enable_benchmark" = "xyes"])
1492 # should expensive tests be run?
1493 AC_MSG_CHECKING(whether to run expensive tests)
1494 AC_ARG_ENABLE([expensivetests],
1495 [AS_HELP_STRING([--enable-expensivetests], [enable running expensive testcases])],
1496 [enable_expensive=${enableval}],
1497 [enable_expensive=no])
1498 AC_MSG_RESULT($enable_expensive)
1499 AM_CONDITIONAL([HAVE_EXPENSIVE_TESTS], [test "x$enable_expensive" = "xyes"])
1501 # should ports be open for Java services?
1502 AC_MSG_CHECKING(whether to enable ports for gnunet-java)
1503 AC_ARG_ENABLE([javaports],
1504 [AS_HELP_STRING([--enable-javaports], [use non-zero ports for services with Java bindings (default is NO)])],
1505 [enable_java_ports=${enableval}],
1506 [enable_java_ports=no])
1507 AC_MSG_RESULT($enable_java_ports)
1508 if test "x$enable_java_ports" = "xyes"
1512 JAVAPORT="$UNIXONLY"
1516 # should benchmarks be run?
1517 AC_MSG_CHECKING(whether to run benchmarks during make check)
1518 AC_ARG_ENABLE([benchmarks],
1519 [AS_HELP_STRING([--enable-benchmarks], [enable running benchmarks during make check])],
1520 [enable_benchmarks=${enableval}],
1521 [enable_benchmarks=no])
1522 AC_MSG_RESULT($enable_benchmarks)
1523 AM_CONDITIONAL([HAVE_BENCHMARKS], [test "x$enable_benchmarks" = "xyes"])
1525 # should gnunet-testing be compiled
1526 AC_MSG_CHECKING(wether to compile gnunet-testing)
1527 AC_ARG_ENABLE([testing],
1528 [AS_HELP_STRING([--disable-testing], [do not build gnunet-testing])],
1529 [enable_testing=${enableval}],
1530 [enable_testing=yes])
1531 AC_MSG_RESULT($enable_testing)
1532 AM_CONDITIONAL([HAVE_TESTING], [test "x$enable_testing" = "xyes"])
1534 # should experimental code be compiled (code that may not yet compile)?
1535 AC_MSG_CHECKING(whether to compile experimental code)
1536 AC_ARG_ENABLE([experimental],
1537 [AS_HELP_STRING([--enable-experimental], [enable compiling experimental code])],
1538 [enable_experimental=${enableval}],
1539 [enable_experimental=no])
1540 AC_MSG_RESULT($enable_experimental)
1541 AM_CONDITIONAL([HAVE_EXPERIMENTAL], [test "x$enable_experimental" = "xyes"])
1543 # should malicious code be compiled (should only be used for testing)?
1544 AC_MSG_CHECKING(whether to compile malicious code)
1545 AC_ARG_ENABLE([malicious],
1546 [AS_HELP_STRING([--enable-malicious], [enable compiling malicious code])],
1547 [if test "x$enableval" = "xno"
1554 enable_malicious=no])
1555 AC_MSG_RESULT($enable_malicious)
1556 AM_CONDITIONAL([ENABLE_MALICIOUS], [test 1=$malicious])
1557 AC_DEFINE_UNQUOTED([ENABLE_MALICIOUS], [$malicious],
1558 [enable compilation of malicious code])
1560 # should services be started on demand when needed? Some services may choose to
1561 # never start by default and it is up to the service/module developer to decide
1562 # by having "START_ON_DEMAND = NO" instead of "START_ON_DEMAND = @START_ON_DEMAND@"
1563 # in the service/module's conf.in file.
1564 # See also IMMEDIATE_START for an unconditional immediate start.
1565 START_ON_DEMAND="YES"
1566 AC_MSG_CHECKING(whether to start peer's services on demand by default)
1567 AC_ARG_ENABLE([autostart],
1568 [AS_HELP_STRING([--disable-autostart], [do not start peer's services by default])],
1569 [enable_autostart=${enableval}
1570 if test "x$enable_autostart" == "xno"
1572 START_ON_DEMAND="NO"
1575 [enable_autostart=yes])
1576 AC_MSG_RESULT($enable_autostart)
1577 #AM_CONDITIONAL([HAVE_START_ON_DEMAND], [test "x$enable_autostart" = "xyes"])
1578 AC_SUBST(START_ON_DEMAND)
1580 # should memory statistics be kept (very expensive CPU-wise!)
1581 AC_MSG_CHECKING(whether to create expensive statistics on memory use)
1582 AC_ARG_ENABLE([heapstats],
1583 [AS_HELP_STRING([--enable-heapstats], [enable expensive heap statistics])],
1584 [enable_heapstats=1],
1585 [enable_heapstats=0])
1586 AC_MSG_RESULT($enable_heapstats)
1587 AC_DEFINE_UNQUOTED([ENABLE_HEAP_STATISTICS],$enable_heapstats,[enable expensive heap statistics])
1589 # should code be enabled that works around missing OS functionality on Windows?
1590 # used for test cases
1591 if test $build_target = "mingw"
1597 [#include <ws2tcpip.h>
1599 int s = socket (0, 0, 0);])
1601 AC_DEFINE_UNQUOTED([HAVE_SOCKET],1,[Define this if socket() is available])
1603 AC_DEFINE_UNQUOTED([HAVE_SOCKET],0,[Define this if socket() is available])
1608 [#include <ws2tcpip.h>
1610 int s = select (0, NULL, NULL, NULL, NULL);])
1612 AC_DEFINE_UNQUOTED([HAVE_SELECT],1,[Define this if select() is available])
1614 AC_DEFINE_UNQUOTED([HAVE_SELECT],0,[Define this if select() is available])
1619 [#include <ws2tcpip.h>
1622 char *s = inet_ntoa (i);])
1624 AC_DEFINE_UNQUOTED([HAVE_INET_NTOA],1,[Define this if inet_ntoa() is available])
1626 AC_DEFINE_UNQUOTED([HAVE_INET_NTOA],0,[Define this if inet_ntoa() is available])
1631 [#include <ws2tcpip.h>
1633 int s = getnameinfo (NULL, 0, NULL, 0, NULL, 0, 0);])
1635 AC_DEFINE_UNQUOTED([HAVE_GETNAMEINFO],1,[Define this if getnameinfo() is available])
1637 AC_DEFINE_UNQUOTED([HAVE_GETNAMEINFO],0,[Define this if getnameinfo() is available])
1642 [#include <ws2tcpip.h>
1644 int s = gethostname (NULL, 0);])
1646 AC_DEFINE_UNQUOTED([HAVE_GETHOSTNAME],1,[Define this if gethostname() is available])
1648 AC_DEFINE_UNQUOTED([HAVE_GETHOSTNAME],0,[Define this if gethostname() is available])
1653 [#include <ws2tcpip.h>
1655 void *s = gethostbyname (NULL);])
1657 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYNAME],1,[Define this if gethostbyname() is available])
1659 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYNAME],0,[Define this if gethostbyname() is available])
1664 [#include <ws2tcpip.h>
1666 void *s = gethostbyaddr (NULL, 0, 0);])
1668 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYADDR],1,[Define this if gethostbyaddr() is available])
1670 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYADDR],0,[Define this if gethostbyaddr() is available])
1675 [#include <ws2tcpip.h>
1677 int s = getaddrinfo (NULL, NULL, NULL, NULL);])
1679 AC_DEFINE_UNQUOTED([HAVE_GETADDRINFO],1,[Define this if getaddrinfo() is available])
1681 AC_DEFINE_UNQUOTED([HAVE_GETADDRINFO],0,[Define this if getaddrinfo() is available])
1685 AC_MSG_CHECKING(whether to enable windows workarounds)
1686 AC_ARG_ENABLE([windows_workarounds],
1687 [AS_HELP_STRING([--enable-windows_workarounds], [enable workarounds used on Windows (only useful for test cases)])],
1688 [enable_workarounds=${enableval}],
1689 [enable_workarounds=no])
1690 AC_MSG_RESULT($enable_workarounds)
1691 if test x$enable_windows_workarounds = "xyes"
1698 AC_DEFINE_UNQUOTED([ENABLE_WINDOWS_WORKAROUNDS], $workarounds, [enable workarounds used on Windows (only useful for test cases)])
1701 AC_MSG_CHECKING(whether to compile with support for code coverage analysis)
1702 AC_ARG_ENABLE([coverage],
1703 AS_HELP_STRING([--enable-coverage],
1704 [compile the library with code coverage support]),
1705 [use_gcov=${enableval}],
1707 AC_MSG_RESULT($use_gcov)
1708 AM_CONDITIONAL([USE_COVERAGE], [test "x$use_gcov" = "xyes"])
1712 # TODO: git blame says this predates our switch to git. git-svn should be adjusted to simply git, or
1713 # an external script that does the job.
1714 AC_PATH_PROG(svnversioncommand, svnversion)
1715 AC_PATH_PROG(gitcommand, git)
1716 AC_MSG_CHECKING(for source being under a VCS)
1719 AS_IF([test ! "X$svnversioncommand" = "X"],
1721 svn_version=$(cd $srcdir ; $svnversioncommand -n 2>/dev/null)
1723 AS_IF([test ! "X$gitcommand" = "X"],
1725 gitsvn_version=$(cd $srcdir ; git log -1 2>/dev/null | grep "git-svn-id" | sed -e 's/.*@\([[0-9]]\+\) .*/\1/')
1727 AS_IF([test "X$svn_version" = "X" -o "X$svn_version" = "Xexported" -o "X$svn_version" = "XUnversioned directory"],
1729 AS_IF([test "X$gitsvn_version" = "X"],
1732 vcs_version="\"release\""
1735 vcs_name="yes, git-svn"
1736 vcs_version="\"svn-r$gitsvn_version\""
1741 vcs_version="\"svn-r$svn_version\""
1743 AC_MSG_RESULT($vcs_name)
1745 AC_MSG_CHECKING(VCS version)
1746 AC_MSG_RESULT($vcs_version)
1747 AC_DEFINE_UNQUOTED(VCS_VERSION, [$vcs_version], [VCS revision/hash or tarball version])
1754 doc/doxygen/Makefile
1755 doc/handbook/Makefile
1756 doc/tutorial/Makefile
1764 src/ats-tool/Makefile
1765 src/ats-tests/Makefile
1766 src/auction/Makefile
1769 src/cadet/cadet.conf
1772 src/consensus/Makefile
1773 src/consensus/consensus.conf
1774 src/conversation/Makefile
1775 src/conversation/conversation.conf
1777 src/datacache/Makefile
1778 src/datastore/Makefile
1779 src/datastore/datastore.conf
1785 src/fragmentation/Makefile
1790 src/gns/nss/Makefile
1791 src/gnsrecord/Makefile
1793 src/identity/Makefile
1794 src/identity/identity.conf
1795 src/credential/Makefile
1796 src/credential/credential.conf
1797 src/include/Makefile
1798 src/integration-tests/Makefile
1800 src/hostlist/Makefile
1801 src/multicast/Makefile
1802 src/multicast/multicast.conf
1805 src/namecache/Makefile
1806 src/namecache/namecache.conf
1807 src/namestore/Makefile
1808 src/namestore/namestore.conf
1811 src/nat-auto/Makefile
1812 src/nat-auto/nat-auto.conf
1815 src/peerinfo/Makefile
1816 src/peerinfo/peerinfo.conf
1817 src/peerinfo-tool/Makefile
1818 src/peerstore/Makefile
1819 src/peerstore/peerstore.conf
1821 src/psycutil/Makefile
1824 src/psycstore/Makefile
1825 src/psycstore/psycstore.conf
1828 src/regex/regex.conf
1829 src/revocation/Makefile
1830 src/revocation/revocation.conf
1833 src/secretsharing/Makefile
1834 src/secretsharing/secretsharing.conf
1835 src/scalarproduct/Makefile
1836 src/scalarproduct/scalarproduct.conf
1840 src/social/social.conf
1842 src/statistics/Makefile
1843 src/statistics/statistics.conf
1844 src/template/Makefile
1845 src/testbed/Makefile
1846 src/testbed/testbed.conf
1847 src/testbed-logger/Makefile
1848 src/testbed-logger/testbed-logger.conf
1849 src/testing/Makefile
1850 src/topology/Makefile
1851 src/transport/Makefile
1852 src/transport/transport.conf
1854 src/util/resolver.conf
1857 src/zonemaster/Makefile
1858 src/zonemaster/zonemaster.conf
1860 src/rest-plugins/Makefile
1862 src/reclaim-attribute/Makefile
1863 src/reclaim/Makefile
1865 pkgconfig/gnunetarm.pc
1866 pkgconfig/gnunetats.pc
1867 pkgconfig/gnunetblock.pc
1868 pkgconfig/gnunetcadet.pc
1869 pkgconfig/gnunetconsensus.pc
1870 pkgconfig/gnunetconversation.pc
1871 pkgconfig/gnunetcore.pc
1872 pkgconfig/gnunetdatacache.pc
1873 pkgconfig/gnunetdatastore.pc
1874 pkgconfig/gnunetdht.pc
1875 pkgconfig/gnunetdns.pc
1876 pkgconfig/gnunetdv.pc
1877 pkgconfig/gnunetenv.pc
1878 pkgconfig/gnunetfragmentation.pc
1879 pkgconfig/gnunetfs.pc
1880 pkgconfig/gnunetgns.pc
1881 pkgconfig/gnunethello.pc
1882 pkgconfig/gnunetidentity.pc
1883 pkgconfig/gnunetmicrophone.pc
1884 pkgconfig/gnunetmulticast.pc
1885 pkgconfig/gnunetmysql.pc
1886 pkgconfig/gnunetnamestore.pc
1887 pkgconfig/gnunetnat.pc
1888 pkgconfig/gnunetnse.pc
1889 pkgconfig/gnunetpeerinfo.pc
1890 pkgconfig/gnunetpq.pc
1891 pkgconfig/gnunetpsyc.pc
1892 pkgconfig/gnunetpsycstore.pc
1893 pkgconfig/gnunetregex.pc
1894 pkgconfig/gnunetrevocation.pc
1895 pkgconfig/gnunetrps.pc
1896 pkgconfig/gnunetscalarproduct.pc
1897 pkgconfig/gnunetset.pc
1898 pkgconfig/gnunetsocial.pc
1899 pkgconfig/gnunetspeaker.pc
1900 pkgconfig/gnunetstatistics.pc
1901 pkgconfig/gnunettestbed.pc
1902 pkgconfig/gnunettesting.pc
1903 pkgconfig/gnunettransport.pc
1904 pkgconfig/gnunetutil.pc
1905 pkgconfig/gnunetvpn.pc
1911 # warn user if mysql found but not used due to version
1912 AS_IF([test "$mysqlfail" = "true"]
1913 [AC_MSG_NOTICE([WARNING: optional MySQL not found (or too old)])])
1916 AS_IF([test "x$sqlite" = "x0"],
1917 [AC_MSG_ERROR([ERROR: sqlite3 not found, but sqlite3 is required.])])
1920 AS_IF([test "$gnurl" = "0"],
1921 [AS_IF([test "x$curl" = "xfalse"],
1922 [AC_MSG_NOTICE([WARNING: libgnurl not found. http client support will not be compiled.])
1923 AC_MSG_WARN([ERROR: libgnurl not found. hostlist daemon will not be compiled, and you probably WANT the hostlist daemon])],
1924 [AC_MSG_NOTICE([WARNING: libgnurl not found, trying to use libcurl-gnutls instead.])])])
1927 AS_IF([test "x$bluetooth" = "x0"],
1928 [AC_MSG_NOTICE([WARNING: optional bluetooth library not found.])])
1932 AS_IF([test "x$jansson" = "x0"],
1933 [AC_MSG_NOTICE([WARNING: optional jansson library not found.])])
1936 # FIXME: `some modules' -> be more specific which exact modules.
1939 # warn user if iptables is not found
1940 AS_IF([test "$VAR_IPTABLES_BINARY" = "false"],
1941 [AC_MSG_NOTICE([WARNING: optional iptables not found])])
1943 # warn user if ifconfig is not found
1944 AS_IF([test "$VAR_IFCONFIG_BINARY" = "false"],
1945 [AC_MSG_NOTICE([WARNING: optional ifconfig not found])])
1947 # warn user if upnpc binary is not found
1948 AS_IF([test "$VAR_UPNPC_BINARY" = "false"],
1949 [AC_MSG_NOTICE([WARNING: optional upnpc binary not found])])
1952 AS_IF([test x$gnutls != xtrue],
1953 [AC_MSG_NOTICE([WARNING: GnuTLS not found, gnunet-gns-proxy will not be built])],
1954 [AS_IF([test "x$gnutls_dane" != "x1"],
1955 [AC_MSG_NOTICE([WARNING: GnuTLS has no DANE support, DANE validation will not be possible])])])
1958 AS_IF([test "x$enable_java_ports" = "xyes"],
1959 [AC_MSG_NOTICE([NOTICE: Opening ports for gnunet-java bindings by default.])])
1962 AS_IF([test "x$lmhd" != "x1"],
1963 [AC_MSG_NOTICE([WARNING: optional libmicrohttpd not found])])
1966 AS_IF([test "x$conversation_backend" = "xnone"],
1967 [AS_IF([test "x$pulse" != "x1"],
1968 [AC_MSG_NOTICE([WARNING: libpulse(audio) not found, conversation will not be built.])])
1969 AS_IF([test "x$opus" != "x1"],
1970 [AC_MSG_NOTICE([WARNING: libopus not found, conversation will not be built.])])
1971 AS_IF([test "x$gst" != "x1"],
1972 [AC_MSG_NOTICE([WARNING: GStreamer not found, conversation will not be built.])])])
1974 AS_IF([test "$extractor" != 1],
1975 [AC_MSG_WARN([ERROR: libextractor not found, but various file-sharing functions require it])])
1977 AS_IF([test "x$working_libidn2" = x1],
1978 [AC_MSG_NOTICE([INFO: Using libidn2])])
1979 AS_IF([test "x$working_libidn1" = x1],
1980 [AC_MSG_NOTICE([INFO: Using libidn1])])
1982 AC_MSG_NOTICE([NOTICE: Database support is set to MySQL: $mysql, SQLite: $sqlite, Postgres: $postgres])
1984 AS_IF([test "$enable_framework_build" = "yes"],
1985 [AC_MSG_NOTICE([Mac OS X framework build enabled.])])
1987 AC_MSG_NOTICE([********************************************
1988 Please make sure NOW that you have created a user and group 'gnunet'
1989 and additionally a group 'gnunetdns'. On Debian and Ubuntu GNU/Linux, type:
1991 adduser --system --group --disabled-login --home /var/lib/gnunet gnunet
1993 Make sure that '/var/lib/gnunet' is owned (and writable) by user
1994 'gnunet'. Then, you can compile GNUnet with
1997 After that, run (if necessary as 'root')
1999 to install everything.
2001 Each GNUnet user should be added to the 'gnunet' group (may
2002 require fresh login to come into effect):
2003 adduser USERNAME gnunet
2004 (run the above command as root once for each of your users, replacing
2005 "USERNAME" with the respective login names). If you have a global IP
2006 address, no further configuration is required.
2008 For more detailed setup instructions, see https://gnunet.org/installation
2010 Optionally, download and compile gnunet-gtk to get a GUI for
2011 file-sharing and configuration. This is particularly recommended
2012 if your network setup is non-trivial, as gnunet-setup can be
2013 used to test in the GUI if your network configuration is working.
2014 gnunet-setup should be run as the "gnunet" user under X. As it
2015 does very little with the network, running it as "root" is likely
2016 also harmless. You can also run it as a normal user, but then
2017 you have to copy ~/.gnunet/gnunet.conf" over to the "gnunet" user's
2018 home directory in the end.
2020 Once you have configured your peer, run (as the 'gnunet' user)
2022 to start the peer. You can then run the various GNUnet-tools as
2023 your "normal" user (who should only be in the group 'gnunet').
2024 ********************************************])