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])
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"
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 AC_DEFINE_UNQUOTED([IPTABLES], "$VAR_IPTABLES_BINARY", [Path to iptables])
213 AC_MSG_WARN([warning: 'iptables' not found.])
217 AC_CHECK_PROG(VAR_IFCONFIG_BINARY, ifconfig, true, false)
218 AC_MSG_WARN([warning: 'ifconfig' not found.])
220 AC_CHECK_MEMBER(struct tm.tm_gmtoff,
221 [AC_DEFINE(HAVE_TM_GMTOFF, 1,
222 [Define if struct tm has the tm_gmtoff member.])],
226 AC_CHECK_DECLS([_stati64])
228 # 'save' libs; only those libs found so far will be
229 # linked against _everywhere_. For the others, we
230 # will be more selective!
233 # tests only run on Windows
234 if test "x$build_target" = "xmingw"
236 AC_CHECK_LIB(plibc, plibc_init, [], [AC_MSG_ERROR([GNUnet requires PlibC on Windows])])
237 AC_CHECK_LIB(gnurx, regexec, [], [AC_MSG_ERROR([GNUnet requires libgnurx on Windows])])
243 NEED_LIBGCRYPT_VERSION=1.6.0
246 AM_PATH_LIBGCRYPT("$NEED_LIBGCRYPT_API:$NEED_LIBGCRYPT_VERSION", gcrypt=1)
247 AC_CHECK_DECLS([gcry_mpi_set_opaque_copy], [], [], [[#include <gcrypt.h>]])
253 *** You need libgcrypt to build this program.
254 ** This library is for example available at
255 *** ftp://ftp.gnupg.org/gcrypt/libgcrypt/
256 *** (at least version $NEED_LIBGCRYPT_VERSION (API $NEED_LIBGCRYPT_API)
260 AC_DEFINE_UNQUOTED([NEED_LIBGCRYPT_VERSION], "$NEED_LIBGCRYPT_VERSION", [required libgcrypt version])
262 # TODO: add check for VERSION
263 # TODO: add check for alternatives
264 # TODO: add switch to skip documentation building
265 AM_MISSING_PROG([MAKEINFO], [makeinfo])
267 # Adam shostack suggests the following for Windows:
268 # -D_FORTIFY_SOURCE=2 -fstack-protector-all
269 AC_ARG_ENABLE(gcc-hardening,
270 AS_HELP_STRING(--enable-gcc-hardening, enable compiler security checks),
271 [if test x$enableval = xyes; then
272 CFLAGS="$CFLAGS -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fstack-protector-all"
273 CFLAGS="$CFLAGS -fwrapv -fPIE -Wstack-protector"
274 CFLAGS="$CFLAGS --param ssp-buffer-size=1"
275 LDFLAGS="$LDFLAGS -pie"
279 # Linker hardening options
280 # Currently these options are ELF specific - you can't use this with MacOSX
281 AC_ARG_ENABLE(linker-hardening,
282 AS_HELP_STRING(--enable-linker-hardening, enable linker security fixups),
283 [if test x$enableval = xyes; then
284 LDFLAGS="$LDFLAGS -z relro -z now"
288 AC_ARG_ENABLE(sanitizer,
289 AS_HELP_STRING(--enable-sanitizer, enable Address Sanitizer and Undefined Behavior Sanitizer),
290 [if test x$enableval = xyes; then
291 LDFLAGS="$CFLAGS -fsanitize=address,undefined -fno-omit-frame-pointer"
295 extra_logging=GNUNET_NO
296 AC_ARG_ENABLE([logging],
297 AS_HELP_STRING([--enable-logging@<:@=value@:>@],[Enable logging calls. Possible values: yes,no,verbose,veryverbose ('yes' is the default)]),
298 [AS_IF([test "x$enableval" = "xyes"], [],
299 [test "x$enableval" = "xno"], [AC_DEFINE([GNUNET_CULL_LOGGING],[],[Define to cull all logging calls])],
300 [test "x$enableval" = "xverbose"], [extra_logging=GNUNET_YES]
301 [test "x$enableval" = "xveryverbose"], [extra_logging=\(GNUNET_YES+1\)])
303 AC_DEFINE_UNQUOTED([GNUNET_EXTRA_LOGGING],[$extra_logging],[1 if extra logging is enabled, 2 for very verbose extra logging, 0 otherwise])
305 # should memory poisoning be enabled?
306 AC_MSG_CHECKING(whether to poison freed memory)
307 AC_ARG_ENABLE([poisoning],
308 [AS_HELP_STRING([--enable-poisoning], [enable poisoning of freed memory (good for debugging)])],
309 [enable_poisoning=${enableval}],
311 if test "x$extra_logging" != "xGNUNET_NO"; then
312 enable_poisoning="defaults to yes (extra logging is enabled)"
317 AC_MSG_RESULT($enable_poisoning)
318 if test ! "x$enable_poisoning" = "xno"; then
323 AC_DEFINE_UNQUOTED([ENABLE_POISONING],[$enable_poisoning],[1 if freed memory should be poisoned, 0 otherwise])
325 if test $build = $target
327 AC_MSG_CHECKING([for working HMAC])
329 LIBS="$LIBS $LIBGCRYPT_LIBS"
330 CFLAGS="$CFLAGS $LIBGCRYPT_CFLAGS"
332 [AC_LANG_PROGRAM([#include <gcrypt.h>
333 #include <stdio.h>], [[
336 unsigned char data[] = { 0xbf, 0x16, 0x6e, 0x46, 0x3a, 0x6c, 0xf3, 0x93, 0xa7, 0x72,
337 0x11, 0xa1, 0xdc, 0x0b, 0x07, 0xdb, 0x1a, 0x5e, 0xd9, 0xb9, 0x81, 0xbe,
338 0xea, 0xe4, 0x31, 0x5f, 0x24, 0xff, 0xfe, 0x50, 0x8a, 0xde };
339 unsigned char key[] = { 0xfc, 0x62, 0x76, 0x35 };
340 unsigned char result[] = {0xa2, 0xb, 0x1, 0xd9, 0xc0, 0x8b, 0x5a, 0x12, 0x80,
341 0xd5, 0x50, 0x12, 0x8e, 0xd0, 0x5b, 0xb6, 0x5c, 0x87, 0x24, 0xe2, 0xd0,
342 0xd2, 0xaf, 0x63, 0xae, 0xd1, 0xd6, 0x64, 0x14, 0xe3, 0x6e, 0x61, 0x5b,
343 0xd, 0xba, 0x17, 0x7d, 0xd3, 0x10, 0xb1, 0x37, 0x41, 0x91, 0x7d, 0xeb,
344 0x1, 0x4d, 0x71, 0xe8, 0x59, 0x71, 0x42, 0x8e, 0xd6, 0xf3, 0x29, 0x3b,
345 0x90, 0xf2, 0xd1, 0xaf, 0x65, 0x1e, 0xb3};
347 if (!gcry_check_version (GCRYPT_VERSION))
349 fprintf (stderr, "Version mismatch %s <-> %s \n", gcry_check_version (NULL), GCRYPT_VERSION);
353 gcry_control (GCRYCTL_DISABLE_SECMEM, 0);
354 gcry_control (GCRYCTL_INITIALIZATION_FINISHED, 0);
356 if (gcry_md_open(&mac, GCRY_MD_SHA512, GCRY_MD_FLAG_HMAC) != GPG_ERR_NO_ERROR)
358 fprintf (stderr, "gcry_md_open error\n");
362 gcry_md_setkey (mac, key, sizeof (key));
363 gcry_md_write (mac, data, sizeof (data));
365 if (memcmp(gcry_md_read (mac, 0), result, gcry_md_get_algo_dlen (gcry_md_get_algo (mac))) != 0)
367 fprintf (stderr, "memcmp error\n");
375 [AC_MSG_RESULT([yes])],
380 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.])
384 AC_MSG_FAILURE([HMAC test failed])
388 AC_MSG_FAILURE([libgcrypt header version does not match library version])
391 [AC_MSG_RESULT([cross compiling, test skipped])])
393 fi # $build = $target
395 # check for bluetooth library
397 AC_CHECK_LIB(bluetooth, ba2str,[AC_CHECK_HEADER([bluetooth/bluetooth.h],bluetooth=1)])
398 if test "$build_target" = "mingw"
402 AM_CONDITIONAL(HAVE_LIBBLUETOOTH, [test "$bluetooth" = 1])
403 if test "$bluetooth" = 1
405 AC_DEFINE([HAVE_LIBBLUETOOTH],[1],[Have bluetooth library])
407 AC_DEFINE([HAVE_LIBBLUETOOTH],[0],[Lacking bluetooth library])
410 # check for jansson library
412 AC_MSG_CHECKING(for libjansson)
414 [ --with-jansson=PFX base of libjansson installation],
415 [AC_MSG_RESULT([$with_jansson])
416 case $with_jansson in
420 AC_CHECK_HEADERS(jansson.h,
421 AC_CHECK_LIB([jansson], [json_loads],
425 LDFLAGS="-L$with_jansson/lib $LDFLAGS"
426 CPPFLAGS="-I$with_jansson/include $CPPFLAGS"
427 AC_CHECK_HEADERS(jansson.h,
428 AC_CHECK_LIB([jansson], [json_loads],
429 EXT_LIB_PATH="-L$with_jansson/lib $EXT_LIB_PATH"
434 [AC_MSG_RESULT([--with-jansson not specified])
435 AC_CHECK_HEADERS(jansson.h,
436 AC_CHECK_LIB([jansson], [json_loads],
438 AM_CONDITIONAL(HAVE_JANSSON, [test "$jansson" = 1])
439 if test "x$jansson" = x1
441 AC_DEFINE([HAVE_JANSSON],[1],[Have jansson library])
443 AC_DEFINE([HAVE_JANSSON],[0],[Lacking jansson library])
447 # check for libpulse(audio) library
449 AC_CHECK_LIB(pulse,pa_stream_peek,
450 [AC_CHECK_HEADER([pulse/simple.h],pulse=1)])
451 if test "$build_target" = "mingw"
457 AC_DEFINE([HAVE_PULSE],[1],[Have libpulse(audio) library])
460 # check for libopus(audio) library
462 AC_CHECK_LIB(opus,opus_decode_float,
463 [AC_CHECK_HEADER([opus/opus.h],
464 [AC_CHECK_DECL([OPUS_SET_GAIN],[opus=1],[],[[#include <opus/opus.h>]]
470 AC_DEFINE([HAVE_OPUS],[1],[Have libopus library])
474 AC_CHECK_LIB(ogg, ogg_stream_flush_fill,
475 [AC_CHECK_HEADERS([ogg/ogg.h],
476 AM_CONDITIONAL(HAVE_OGG, true)
478 AC_DEFINE(HAVE_OGG,1,[Have ogg]),
479 AM_CONDITIONAL(HAVE_OGG, false)
481 AC_DEFINE(HAVE_OGG,0,[lacking ogg]))],
482 AM_CONDITIONAL(HAVE_OGG, false)
486 PKG_CHECK_MODULES([GLIB], [glib-2.0],
487 # check for pbc library
489 AC_CHECK_HEADER([pbc/pbc.h],pbc=1)
490 AC_CHECK_HEADER([gabe.h],abe=1)
491 AM_CONDITIONAL(HAVE_PBC, [test "$pbc" = 1])
492 AM_CONDITIONAL(HAVE_ABE, [test "$abe" = 1])
495 AC_DEFINE([HAVE_PBC],[1],[Have pbc library])
497 AC_DEFINE([HAVE_PBC],[0],[Lacking pbc library])
501 AC_DEFINE([HAVE_ABE],[1],[Have ABE library])
503 AC_DEFINE([HAVE_ABE],[0],[Lacking ABE library])
507 AM_CONDITIONAL(HAVE_PBC, [0])
508 AM_CONDITIONAL(HAVE_ABE, [0])
509 AC_DEFINE([HAVE_PBC],[0],[Lacking glib library])
515 [glib-2.0 gobject-2.0 gstreamer-1.0 gstreamer-app-1.0 gstreamer-audio-1.0],
521 AC_MSG_RESULT(not found)
525 if test "x$pulse" != "x1" -o "x$opus" != "x1" -o "x$ogg" != "x1"
527 if test "x$gst" != "x1"
529 conversation_backend=none
530 AM_CONDITIONAL(BUILD_PULSE_HELPERS, false)
531 AM_CONDITIONAL(BUILD_GST_HELPERS, false)
532 AM_CONDITIONAL(BUILD_EXPERIMENTAL_HELPERS, false)
534 conversation_backend=gst
535 AM_CONDITIONAL(BUILD_PULSE_HELPERS, false)
536 AM_CONDITIONAL(BUILD_GST_HELPERS, true)
537 AM_CONDITIONAL(BUILD_EXPERIMENTAL_HELPERS, false)
541 conversation_backend=pulse
542 AM_CONDITIONAL(BUILD_PULSE_HELPERS, true)
543 AM_CONDITIONAL(BUILD_GST_HELPERS, false)
544 AM_CONDITIONAL(BUILD_EXPERIMENTAL_HELPERS, false)
548 LIBGNURL_CHECK_CONFIG(,7.34.0,gnurl=1,gnurl=0)
551 AM_CONDITIONAL(HAVE_LIBGNURL, true)
552 AC_DEFINE([HAVE_LIBGNURL],[1],[Have libgnurl])
554 AM_CONDITIONAL(HAVE_LIBGNURL, false)
555 AC_DEFINE([HAVE_LIBGNURL],[0],[Lacking libgnurl])
558 SAVE_CPPFLAGS=$CPPFLAGS
559 CPPFLAGS="$LIBGNURL_CPPFLAGS $LIBCURL_CPPFLAGS $CPPFLAGS"
560 LIBS="$LIBGNURL $LIBCURL $LIBS"
563 LIBCURL_CHECK_CONFIG(,7.34.0,[curl=true],[curl=false])
564 if test "x$curl" = xtrue
567 AC_CHECK_HEADERS([curl/curl.h],
568 AC_CHECK_DECLS(CURLINFO_TLS_SESSION,[curl=true],[curl=false],[[#include <curl/curl.h>]]),
570 AC_CHECK_HEADERS([gnurl/curl.h],
571 AC_CHECK_DECLS(CURLINFO_TLS_SESSION,[curl=true],,[[#include <gnurl/curl.h>]]))
572 # need libcurl-gnutls.so, everything else is not acceptable
573 AC_CHECK_LIB([curl-gnutls],[curl_easy_getinfo],,[curl=false])
574 # cURL must support CURLINFO_TLS_SESSION, version >= 7.34
577 # Check for curl/curl.h and gnurl/curl.h so we can use #ifdef
578 # HAVE_CURL_CURL_H later (the above LIBCURL_CHECK_CONFIG accepted
579 # *either* header set).
580 AC_CHECK_HEADERS([curl/curl.h],,
582 AC_CHECK_HEADERS([gnurl/curl.h],,
587 if test x$curl = xfalse
589 AM_CONDITIONAL(HAVE_LIBCURL, false)
592 AC_MSG_WARN([ERROR: GNUnet requires libcurl-gnutls or gnurl >= 7.34])
595 AM_CONDITIONAL(HAVE_LIBCURL, true)
596 AC_DEFINE([HAVE_LIBCURL],[1],[Have CURL])
600 # restore LIBS & CPPFLAGS
602 CPPFLAGS=$SAVE_CPPFLAGS
604 AC_CHECK_HEADERS([glpk.h],[glpk=true],[gplk=false])
605 # GLPK must support glpk_init_env, version >= 4.43
606 AC_CHECK_LIB([glpk],[glp_init_env],,[gplk=false])
607 # GLPK must support atm MLP presolving, version >= 4.32
608 AC_CHECK_MEMBERS(glp_iocp.presolve,,[gplk=false],[[#include <glpk.h>]])
609 if test x$gplk = xfalse
611 AM_CONDITIONAL(HAVE_LIBGLPK, false)
612 AC_MSG_WARN([ERROR: GNUnet requires GLPK >= 4.32])
614 AM_CONDITIONAL(HAVE_LIBGLPK, true)
615 AC_DEFINE([HAVE_LIBGLPK],[1],[Have GLPK])
619 AC_CHECK_HEADERS([nss.h],[nss=true],[nss=false])
620 if test x$nss = xfalse
622 AM_CONDITIONAL(HAVE_GLIBCNSS, false)
623 AC_MSG_WARN([ERROR: No GNU libc nss header, will not build NSS plugin])
625 AM_CONDITIONAL(HAVE_GLIBCNSS, true)
630 # test for kvm and kstat (for CPU stats under BSD/Solaris)
631 AC_CHECK_LIB([kvm],[kvm_open])
632 AC_CHECK_LIB([kstat],[kstat_open])
635 # should the build process be building the documentation?
636 AC_MSG_CHECKING(whether to build documentation)
637 AC_ARG_ENABLE([documentation],
638 [AS_HELP_STRING([--enable-documentation], [build the documentation])],
639 [documentation=${enableval}],
641 AC_MSG_RESULT($documentation)
642 if test "x$documentation" = "xyes"
644 AM_CONDITIONAL([DOCUMENTATION],true)
645 AC_DEFINE([DOCUMENTATION],[1],[Building the documentation])
647 AM_CONDITIONAL([DOCUMENTATION],false)
648 AC_DEFINE([DOCUMENTATION],[0],[Not building the documentation])
651 # should the build process be building only the documentation?
652 AC_MSG_CHECKING(whether to build only documentation)
653 AC_ARG_ENABLE([documentation-only],
654 [AS_HELP_STRING([--enable-documentation-only], [build only the documentation])],
655 [documentation_only=${enableval}],
656 [documentation_only=no])
657 AC_MSG_RESULT($documentation_only)
658 if test "x$documentation_only" = "xyes"
660 AM_CONDITIONAL([DOCUMENTATION_ONLY],true)
661 AC_DEFINE([DOCUMENTATION_ONLY],[1],[Building only the documentation])
663 AM_CONDITIONAL([DOCUMENTATION_ONLY],false)
664 AC_DEFINE([DOCUMENTATION_ONLY],[0],[Not building only the documentation])
667 # should the build process be restricted to the code required
668 # for GNU Taler wallets?
669 AC_MSG_CHECKING(whether to compile GNU Taler Wallet library ONLY)
670 AC_ARG_ENABLE([taler-wallet],
671 [AS_HELP_STRING([--enable-taler-wallet], [only compile for Taler wallet])],
672 [taler_only=${enableval}],
674 AC_MSG_RESULT($taler_only)
675 if test "x$taler_only" = "xyes"
677 AM_CONDITIONAL([TALER_ONLY],true)
678 AC_DEFINE([TALER_WALLET_ONLY],[1],[Compiling for Taler wallet])
680 AM_CONDITIONAL([TALER_ONLY],false)
681 AC_DEFINE([TALER_WALLET_ONLY],[0],[Canonical compilation])
684 # test for libextractor
686 AC_MSG_CHECKING(for libextractor)
687 AC_ARG_WITH(extractor,
688 [ --with-extractor=PFX base of libextractor installation],
689 [AC_MSG_RESULT([$with_extractor])
690 case $with_extractor in
694 AC_CHECK_HEADERS(extractor.h,
695 AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
699 LDFLAGS="-L$with_extractor/lib $LDFLAGS"
700 CPPFLAGS="-I$with_extractor/include $CPPFLAGS"
701 AC_CHECK_HEADERS(extractor.h,
702 AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
703 EXT_LIB_PATH="-L$with_extractor/lib $EXT_LIB_PATH"
708 [AC_MSG_RESULT([--with-extractor not specified])
709 AC_CHECK_HEADERS(extractor.h,
710 AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
715 if test "$extractor" != 1
717 AM_CONDITIONAL(HAVE_LIBEXTRACTOR, false)
718 AC_DEFINE([HAVE_LIBEXTRACTOR],[0],[Lacking libextractor])
720 AM_CONDITIONAL(HAVE_LIBEXTRACTOR, true)
721 AC_DEFINE([HAVE_LIBEXTRACTOR],[1],[Have libextractor])
725 if test "$taler_only" != yes
728 # Check for libltdl header (#2999)
730 AC_MSG_CHECKING(for libltdl)
732 [ --with-ltdl=PFX base of libltdl installation],
733 [AC_MSG_RESULT([$with_ltdl])
738 AC_CHECK_HEADERS(ltdl.h,
739 AC_CHECK_LIB([ltdl], [lt_dlopenext],
743 LDFLAGS="-L$with_ltdl/lib $LDFLAGS"
744 CPPFLAGS="-I$with_ltdl/include $CPPFLAGS"
745 AC_CHECK_HEADERS(ltdl.h,
746 AC_CHECK_LIB([ltdl], [lt_dlopenext],
747 EXT_LIB_PATH="-L$with_ltdl/lib $EXT_LIB_PATH"
752 [AC_MSG_RESULT([--with-ltdl not specified])
753 AC_CHECK_HEADERS(ltdl.h,
754 AC_CHECK_LIB([ltdl], [lt_dlopenext],
758 AC_MSG_RESULT([libltdl found])
760 AC_MSG_ERROR([GNUnet requires libltdl (from GNU libtool), try installing libltdl-dev])
767 AC_MSG_CHECKING([if Libidn can be used])
768 AC_ARG_WITH(libidn, AC_HELP_STRING([--with-libidn=[DIR]],
769 [Support IDN (needs GNU Libidn)]),
770 libidn=$withval, libidn=yes)
771 if test "$libidn" != "no"; then
772 if test "$libidn" != "yes"; then
773 LDFLAGS="${LDFLAGS} -L$libidn/lib"
774 CPPFLAGS="${CPPFLAGS} -I$libidn/include"
778 AC_CHECK_HEADER(idna.h,
779 AC_CHECK_LIB(idn, stringprep_check_version,
780 [libidn=yes LIBS="${LIBS} -lidn"], []), [])
781 if test "$libidn" != "yes"; then
782 AC_MSG_FAILURE([GNUnet requires libidn.
783 libidn-1.13 should be sufficient, newer versions work too.])
785 AC_MSG_RESULT($libidn)
789 SAVE_LDFLAGS=$LDFLAGS
790 SAVE_CPPFLAGS=$CPPFLAGS
792 [ --with-zlib[[=DIR]] use libz in DIR],
793 [AS_IF([test "$withval" = "no"],
794 [AC_MSG_ERROR([GNUnet requires zlib])],
795 [test "$withval" != "yes"],
798 CPPFLAGS="${CPPFLAGS} -I$withval/include"
799 LDFLAGS="${LDFLAGS} -L$withval/lib"
802 AC_CHECK_HEADER(zlib.h,
804 [AC_MSG_ERROR([GNUnet requires zlib])])
805 AC_CHECK_LIB(z, compress2,
807 AC_DEFINE([HAVE_ZLIB], [], [Have compression library])
808 if test "x${Z_DIR}" != "x"; then
809 Z_CFLAGS="-I${Z_DIR}/include"
810 Z_LIBS="-L${Z_DIR}/lib -lz"
814 [AC_MSG_ERROR([GNUnet requires zlib])])
818 if test "$enable_shared" = "no"
820 AC_MSG_ERROR([GNUnet only works with shared libraries. Sorry.])
834 # test for libunistring
836 if test $HAVE_LIBUNISTRING != yes; then
837 AC_MSG_ERROR([GNUnet requires libunistring])
839 # under emscripten, $gl_libunistring_hexversion is undefined
840 if test "$taler_only" != yes; then
841 if test "x$gl_libunistring_hexversion" = "x" || test "$gl_libunistring_hexversion" -le 2305; then
842 AC_MSG_ERROR([GNUnet requires libunistring >= 0.9.1.1])
845 AC_CHECK_HEADERS([unistr.h],,AC_MSG_ERROR([Compiling GNUnet requires unistr.h (from libunistring) to be installed]))
852 # Checks for standard header files.
856 # Check for headers that are ALWAYS required
857 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]))
861 # Checks for headers that are only required on some systems or opional (and where we do NOT abort if they are not there)
862 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])
864 # FreeBSD requires something more funky for netinet/in_systm.h and netinet/ip.h...
865 AC_CHECK_HEADERS([sys/types.h netinet/in_systm.h netinet/in.h netinet/ip.h],,,
866 [#ifdef HAVE_SYS_TYPES_H
867 #include <sys/types.h>
869 #ifdef HAVE_NETINET_IN_SYSTM_H
870 #include <netinet/in_systm.h>
872 #ifdef HAVE_NETINET_IN_H
873 #include <netinet/in.h>
877 SAVE_LDFLAGS=$LDFLAGS
878 SAVE_CPPFLAGS=$CPPFLAGS
882 AC_MSG_CHECKING(for SQLite)
884 [ --with-sqlite=PFX base of SQLite installation],
885 [AC_MSG_RESULT("$with_sqlite")
890 AC_CHECK_HEADERS(sqlite3.h,
894 LDFLAGS="-L$with_sqlite/lib $LDFLAGS"
895 CPPFLAGS="-I$with_sqlite/include $CPPFLAGS"
896 AC_CHECK_HEADERS(sqlite3.h,
897 EXT_LIB_PATH="-L$with_sqlite/lib $EXT_LIB_PATH"
898 SQLITE_LDFLAGS="-L$with_sqlite/lib"
899 SQLITE_CPPFLAGS="-I$with_sqlite/include"
901 LDFLAGS=$SAVE_LDFLAGS
902 CPPFLAGS=$SAVE_CPPFLAGS
906 [AC_MSG_RESULT([--with-sqlite not specified])
907 AC_CHECK_HEADERS(sqlite3.h, sqlite=true)])
908 AM_CONDITIONAL(HAVE_SQLITE, test x$sqlite = xtrue)
909 AC_SUBST(SQLITE_CPPFLAGS)
910 AC_SUBST(SQLITE_LDFLAGS)
912 LDFLAGS=$SAVE_LDFLAGS
913 CPPFLAGS=$SAVE_CPPFLAGS
917 # even running the check for postgres breaks emscripten ...
918 if test "$taler_only" != yes; then
919 AX_LIB_POSTGRESQL([9.5])
920 if test "$found_postgresql" = "yes"; then
921 CPPFLAGS="$CPPFLAGS $POSTGRESQL_CPPFLAGS"
922 AC_CHECK_HEADERS([libpq-fe.h],
926 AM_CONDITIONAL(HAVE_POSTGRESQL, test x$postgres = xtrue)
929 LDFLAGS=$SAVE_LDFLAGS
930 CPPFLAGS=$SAVE_CPPFLAGS
933 AC_CHECK_TYPES([sigset_t, off_t], [], [], [#include <sys/types.h>])
934 AC_CHECK_TYPES([size_t], [], [], [#include <stdio.h>])
936 if test "$build_target" = "mingw"
938 CYGWIN_MYSQL_MAGIC="#include <mysql/my_global.h>"
944 SAVE_LDFLAGS=$LDFLAGS
945 SAVE_CPPFLAGS=$CPPFLAGS
946 AC_MSG_CHECKING(for mysql)
948 [ --with-mysql=PFX base of MySQL installation],
949 [AC_MSG_RESULT([$with_mysql])
954 AC_CHECK_HEADERS(mysql/mysql.h,
955 AC_CHECK_LIB(mysqlclient, mysql_init,
957 mysql=true), [], [$CYGWIN_MYSQL_MAGIC])
960 LDFLAGS="-L$with_mysql/lib -L$with_mysql/lib/mysql $LDFLAGS $ZLIBS"
961 CPPFLAGS="-I$with_mysql/include $CPPFLAGS"
962 AC_CHECK_HEADERS(mysql/mysql.h,
963 AC_CHECK_LIB(mysqlclient, mysql_init,
964 MYSQL_LDFLAGS="-L$with_mysql/lib -L$with_mysql/lib/mysql"
965 MYSQL_CPPFLAGS="-I$with_mysql/include"
967 mysql=true), [], [$CYGWIN_MYSQL_MAGIC])
971 [AC_MSG_RESULT([--with-mysql not specified])
972 if test -d "/usr/lib64/mysql"; then
973 MYSQL_LIBDIR="/usr/lib64/mysql"
974 elif test -d "/usr/lib/mysql"; then
975 MYSQL_LIBDIR="/usr/lib/mysql"
977 MYSQL_LIBDIR="/usr/lib"
979 LDFLAGS="-L$MYSQL_LIBDIR $LDFLAGS $ZLIBS"
980 AC_CHECK_LIB(mysqlclient, mysql_init,
981 [AC_CHECK_HEADERS(mysql/mysql.h,
982 MYSQL_LDFLAGS="-L$MYSQL_LIBDIR"
985 , [], [$CYGWIN_MYSQL_MAGIC])])
988 AC_SUBST(MYSQL_LDFLAGS)
989 AC_SUBST(MYSQL_CPPFLAGS)
991 # additional version check for mysql
992 AC_ARG_ENABLE(mysql-version-check, [ --disable-mysql-version-check do not check MySQL version],, enable_mysql_version_check=yes)
993 if test "$mysql" = "true" -a "x$enable_mysql_version_check" = "xyes"
995 AC_MSG_CHECKING(mysql version)
996 AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
997 [[$CYGWIN_MYSQL_MAGIC
998 #include <mysql/mysql.h>]],
1000 #if (MYSQL_VERSION_ID < 40100)
1001 #error needs at least version >= 4.1
1003 int main () { return 0; }
1005 ],mysql=true,mysql=false)
1006 if test "$mysql" = "false"
1009 AC_MSG_RESULT([fail, >= 4.1 required])
1014 AM_CONDITIONAL(HAVE_MYSQL, test x$mysql = xtrue)
1015 AM_CONDITIONAL(HAVE_MYSQLE, test "0" = "1")
1018 LDFLAGS=$SAVE_LDFLAGS
1019 CPPFLAGS=$SAVE_CPPFLAGS
1021 if test "$sqlite" = 0 -a "$mysql" = 0
1023 AC_MSG_ERROR([GNUnet requires SQLite or MySQL])
1028 AC_MSG_CHECKING([for libmicrohttpd])
1029 AC_ARG_WITH(microhttpd,
1030 [ --with-microhttpd=PFX base of libmicrohttpd installation],
1031 [AC_MSG_RESULT([$with_microhttpd])
1032 case $with_microhttpd in
1036 AC_CHECK_HEADERS([microhttpd.h],
1037 AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
1038 AC_CHECK_LIB([microhttpd], [MHD_get_fdset2],
1039 [AC_MSG_CHECKING([for libmicrohttpd >= 0.9.42])
1040 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
1041 #include "$native_srcdir/src/include/platform.h"
1042 #include <microhttpd.h>
1043 #if (MHD_VERSION < 0x0094200)
1044 #error needs at least version 0.9.42
1046 int main () { return 0; }
1050 [AC_MSG_RESULT(failed)])]),
1051 [],[#include "$native_srcdir/src/include/platform.h"
1052 #include <microhttpd.h>]),,
1053 [#include "$native_srcdir/src/include/platform.h"])
1056 LDFLAGS="-L$with_microhttpd/lib $LDFLAGS"
1057 CPPFLAGS="-I$with_microhttpd/include $CPPFLAGS"
1058 AC_CHECK_HEADERS(microhttpd.h,
1059 AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
1060 AC_CHECK_LIB([microhttpd], [MHD_get_fdset2],
1061 EXT_LIB_PATH="-L$with_microhttpd/lib $EXT_LIB_PATH"
1062 [AC_MSG_CHECKING([for libmicrohttpd >= 0.9.42])
1063 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
1064 #include "$native_srcdir/src/include/platform.h"
1065 #include <microhttpd.h>
1066 #if (MHD_VERSION < 0x0094200)
1067 #error needs at least version 0.9.42
1069 int main () { return 0; }
1073 [AC_MSG_RESULT(failed)])]),
1074 [],[#include "$native_srcdir/src/include/platform.h"
1075 #include <microhttpd.h>]),,
1076 [#include "$native_srcdir/src/include/platform.h"])
1080 [AC_MSG_RESULT([--with-microhttpd not specified])
1081 AC_CHECK_HEADERS([microhttpd.h],
1082 AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
1083 AC_CHECK_LIB([microhttpd], [MHD_get_fdset2],
1084 [AC_MSG_CHECKING([for libmicrohttpd >= 0.9.42])
1085 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
1086 #include "$native_srcdir/src/include/platform.h"
1087 #include <microhttpd.h>
1088 #if (MHD_VERSION < 0x0094200)
1089 #error needs at least version 0.9.42
1094 [AC_MSG_RESULT(failed)])]),
1095 [],[#include "$native_srcdir/src/include/platform.h"
1096 #include <microhttpd.h>]),,
1097 [#include "$native_srcdir/src/include/platform.h"])])
1098 AM_CONDITIONAL(HAVE_MHD, test x$lmhd = x1)
1099 AC_DEFINE_UNQUOTED([HAVE_MHD], $lmhd, [We have libmicrohttpd])
1101 AM_CONDITIONAL(HAVE_JSON, [test x$jansson = x1])
1106 # check for python & pexpect (used for some testcases only)
1107 AM_PATH_PYTHON([2.6],, [:])
1108 AM_CONDITIONAL([HAVE_PYTHON], [test "$PYTHON" != :])
1111 AM_GNU_GETTEXT([external])
1112 AM_GNU_GETTEXT_VERSION([0.18.1])
1114 # Checks for standard typedefs, structures, and compiler characteristics.
1123 AC_CHECK_MEMBER([struct sockaddr_in.sin_len],
1124 [ AC_DEFINE(HAVE_SOCKADDR_IN_SIN_LEN, 1, [Do we have sockaddr_in.sin_len?])
1128 #include <sys/types.h>
1129 #include <sys/socket.h>
1130 #include <netinet/in.h>
1133 AC_CHECK_MEMBER([struct sockaddr_un.sun_len],
1134 [ AC_DEFINE(HAVE_SOCKADDR_UN_SUN_LEN, 1, [Do we have sockaddr_un.sun_len?])
1138 #include <sys/types.h>
1139 #include <sys/socket.h>
1145 # Checks for library functions.
1146 AC_FUNC_CLOSEDIR_VOID
1148 AC_PROG_GCC_TRADITIONAL
1150 AC_FUNC_SELECT_ARGTYPES
1160 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])
1166 GN_LIBINTL="$LTLIBINTL"
1167 AC_ARG_ENABLE(framework, [ --enable-framework enable Mac OS X framework build helpers],enable_framework_build=$enableval)
1168 AM_CONDITIONAL(WANT_FRAMEWORK, test x$enable_framework_build = xyes)
1169 if test x$enable_framework_build = xyes
1171 AC_DEFINE([FRAMEWORK_BUILD], 1, [Build a Mac OS X Framework])
1172 GN_INTLINCL='-I$(top_srcdir)/src/intlemu'
1173 GN_LIBINTL='$(top_builddir)/src/intlemu/libintlemu.la -framework CoreFoundation'
1174 AC_LIB_APPENDTOVAR([CPPFLAGS], [$GN_INTLINCL])
1177 GN_LIB_LDFLAGS="-export-dynamic -no-undefined"
1178 GN_PLUGIN_LDFLAGS="-export-dynamic -avoid-version -module -no-undefined"
1180 AC_SUBST(GN_LIB_LDFLAGS)
1181 AC_SUBST(GN_PLUGIN_LDFLAGS)
1182 AC_SUBST(GN_INTLINCL)
1183 AC_SUBST(GN_LIBINTL)
1188 AC_SUBST(EXT_LIB_PATH)
1193 AC_SUBST(EXT_LIB_PATH)
1197 AC_MSG_CHECKING(for sudo)
1199 [ --with-sudo=PATH path to sudo binary (or just yes)],
1200 [AC_MSG_RESULT("$with_sudo")
1209 SUDO_BINARY=$with_sudo
1213 [AC_MSG_RESULT([no])])
1214 AC_SUBST(SUDO_BINARY)
1215 AM_CONDITIONAL([HAVE_SUDO], [test "x$SUDO_BINARY" != "x" -o -w /])
1218 # test for gnunetdns group name
1219 GNUNETDNS_GROUP=gnunetdns
1220 AC_MSG_CHECKING(for gnunetdns group name)
1221 AC_ARG_WITH(gnunetdns,
1222 [ --with-gnunetdns=GRPNAME name for gnunetdns group],
1223 [AC_MSG_RESULT("$with_gnunetdns")
1224 case $with_gnunetdns in
1226 GNUNETDNS_GROUP=gnunet
1229 GNUNETDNS_GROUP=gnunetdns
1232 GNUNETDNS_GROUP=$with_gnunetdns
1236 [AC_MSG_RESULT([gnunetdns])])
1237 AC_SUBST(GNUNETDNS_GROUP)
1244 AC_MSG_CHECKING(for gnutls)
1246 [ --with-gnutls=PFX base of gnutls installation],
1247 [AC_MSG_RESULT([$with_gnutls])
1248 case $with_gnutls in
1252 AC_CHECK_HEADERS([gnutls/abstract.h],
1253 AC_CHECK_LIB([gnutls], [gnutls_priority_set],
1255 AC_CHECK_HEADERS([gnutls/dane.h],
1256 AC_CHECK_LIB([gnutls-dane], [dane_verify_crt_raw],
1260 LDFLAGS="-L$with_gnutls/lib $LDFLAGS"
1261 CPPFLAGS="-I$with_gnutls/include $CPPFLAGS"
1262 AC_CHECK_HEADERS([gnutls/abstract.h],
1263 AC_CHECK_LIB([gnutls], [gnutls_priority_set],
1264 EXT_LIB_PATH="-L$with_gnutls/lib $EXT_LIB_PATH"
1266 AC_CHECK_HEADERS([gnutls/dane.h],
1267 AC_CHECK_LIB([gnutls-dane], [dane_verify_crt_raw],
1272 [AC_MSG_RESULT([--with-gnutls not specified])
1273 AC_CHECK_HEADERS([gnutls/abstract.h],
1274 AC_CHECK_LIB([gnutls], [gnutls_priority_set],
1276 AC_CHECK_HEADERS([gnutls/dane.h],
1277 AC_CHECK_LIB([gnutls-dane], [dane_verify_crt_raw],
1280 AM_CONDITIONAL(HAVE_GNUTLS, test x$gnutls = xtrue)
1281 AC_DEFINE_UNQUOTED([HAVE_GNUTLS], $gnutls, [We have GnuTLS])
1282 AM_CONDITIONAL(HAVE_GNUTLS_DANE, test x$gnutls_dane = x1)
1283 AC_DEFINE_UNQUOTED([HAVE_GNUTLS_DANE], $gnutls_dane, [We have GnuTLS with DANE support])
1286 # Test if we are building for superMUC
1287 AC_MSG_CHECKING(if GNUnet is being configured to run on the SuperMUC)
1288 AC_ARG_ENABLE([supermuc],
1289 [AS_HELP_STRING([--enable-supermuc],
1290 [build GNUnet with support to run on the SuperMUC (default is NO)])],
1291 [if test "x$enable_supermuc" = "xno"
1298 enable_supermuc=no])
1299 AC_MSG_RESULT($enable_SUPERMUC)
1300 AM_CONDITIONAL([ENABLE_SUPERMUC], [test "x$supermuc" = "x1"])
1301 AC_DEFINE_UNQUOTED([ENABLE_SUPERMUC], [$supermuc], [Build with support for SuperMUC])
1303 # Check if NSE has to send timestamp information to testbed logger for
1304 # generating histogram of messages received
1305 AC_MSG_CHECKING(if NSE has to send timestamp information to testbed logger)
1306 AC_ARG_ENABLE([nse-histogram],
1307 [AS_HELP_STRING([--enable-nse-histogram],
1308 [have NSE send timestamp information to testbed logger for generating
1309 histogram of received messages. NOT useful for production (default is
1311 [if test "x$enableval" = "xno"
1318 enable_nse_histogram=no])
1319 AC_MSG_RESULT($enable_nse_histogram)
1320 AM_CONDITIONAL([ENABLE_NSE_HISTOGRAM], [test "x$nse_histogram" = "x1"])
1321 AC_DEFINE_UNQUOTED([ENABLE_NSE_HISTOGRAM], [$nse_histogram],
1322 [have NSE send timestamp information to testbed logger])
1324 # should 'make check' run tests?
1325 AC_MSG_CHECKING(whether to run tests)
1326 AC_ARG_ENABLE([testruns],
1327 [AS_HELP_STRING([--disable-testruns], [disable running tests on make check (default is YES)])],
1328 [enable_tests_run=${enableval}],
1329 [enable_tests_run=yes])
1330 AC_MSG_RESULT($enable_test_run)
1331 AM_CONDITIONAL([ENABLE_TEST_RUN], [test "x$enable_tests_run" = "xyes"])
1334 # should monkey be used when running (certain) services?
1335 AC_MSG_CHECKING(whether to run with monkey)
1336 AC_ARG_ENABLE([monkey],
1337 [AS_HELP_STRING([--enable-monkey], [enable running with monkey])],
1338 [enable_monkey=${enableval}],
1340 AC_MSG_RESULT($enable_monkey)
1341 AM_CONDITIONAL([ENABLE_MONKEY], [test "x$enable_monkey" = "xyes"])
1342 if test "x$enable_monkey" = "xyes"
1344 MONKEYPREFIX="pathologist -d $(eval echo ${datarootdir}/gnunet/gnunet.sqlite) -p 30 --"
1348 AC_SUBST(MONKEYPREFIX)
1351 # should expensive tests be run?
1352 AC_MSG_CHECKING(whether to run expensive tests)
1353 AC_ARG_ENABLE([expensivetests],
1354 [AS_HELP_STRING([--enable-expensivetests], [enable running expensive testcases])],
1355 [enable_expensive=${enableval}],
1356 [enable_expensive=no])
1357 AC_MSG_RESULT($enable_expensive)
1358 AM_CONDITIONAL([HAVE_EXPENSIVE_TESTS], [test "x$enable_expensive" = "xyes"])
1360 # should ports be open for Java services?
1361 AC_MSG_CHECKING(whether to enable ports for gnunet-java)
1362 AC_ARG_ENABLE([javaports],
1363 [AS_HELP_STRING([--enable-javaports], [use non-zero ports for services with Java bindings (default is NO)])],
1364 [enable_java_ports=${enableval}],
1365 [enable_java_ports=no])
1366 AC_MSG_RESULT($enable_java_ports)
1367 if test "x$enable_java_ports" = "xyes"
1371 JAVAPORT="$UNIXONLY"
1375 # should benchmarks be run?
1376 AC_MSG_CHECKING(whether to run benchmarks during make check)
1377 AC_ARG_ENABLE([benchmarks],
1378 [AS_HELP_STRING([--enable-benchmarks], [enable running benchmarks during make check])],
1379 [enable_benchmarks=${enableval}],
1380 [enable_benchmarks=no])
1381 AC_MSG_RESULT($enable_benchmarks)
1382 AM_CONDITIONAL([HAVE_BENCHMARKS], [test "x$enable_benchmarks" = "xyes"])
1384 # should gnunet-testing be compiled
1385 AC_MSG_CHECKING(wether to compile gnunet-testing)
1386 AC_ARG_ENABLE([testing],
1387 [AS_HELP_STRING([--disable-testing], [do not build gnunet-testing])],
1388 [enable_testing=${enableval}],
1389 [enable_testing=yes])
1390 AC_MSG_RESULT($enable_testing)
1391 AM_CONDITIONAL([HAVE_TESTING], [test "x$enable_testing" = "xyes"])
1393 # should experimental code be compiled (code that may not yet compile)?
1394 AC_MSG_CHECKING(whether to compile experimental code)
1395 AC_ARG_ENABLE([experimental],
1396 [AS_HELP_STRING([--enable-experimental], [enable compiling experimental code])],
1397 [enable_experimental=${enableval}],
1398 [enable_experimental=no])
1399 AC_MSG_RESULT($enable_experimental)
1400 AM_CONDITIONAL([HAVE_EXPERIMENTAL], [test "x$enable_experimental" = "xyes"])
1402 # should malicious code be compiled (should only be used for testing)?
1403 AC_MSG_CHECKING(whether to compile malicious code)
1404 AC_ARG_ENABLE([malicious],
1405 [AS_HELP_STRING([--enable-malicious], [enable compiling malicious code])],
1406 [if test "x$enableval" = "xno"
1413 enable_malicious=no])
1414 AC_MSG_RESULT($enable_malicious)
1415 AM_CONDITIONAL([ENABLE_MALICIOUS], [test 1=$malicious])
1416 AC_DEFINE_UNQUOTED([ENABLE_MALICIOUS], [$malicious],
1417 [enable compilation of malicious code])
1419 # should services be started on demand when needed? Some services may choose to
1420 # never start by default and it is up to the service/module developer to decide
1421 # by having "START_ON_DEMAND = NO" instead of "START_ON_DEMAND = @START_ON_DEMAND@"
1422 # in the service/module's conf.in file.
1423 # See also IMMEDIATE_START for an unconditional immediate start.
1424 START_ON_DEMAND="YES"
1425 AC_MSG_CHECKING(whether to start peer's services on demand by default)
1426 AC_ARG_ENABLE([autostart],
1427 [AS_HELP_STRING([--disable-autostart], [do not start peer's services by default])],
1428 [enable_autostart=${enableval}
1429 if test "x$enable_autostart" == "xno"
1431 START_ON_DEMAND="NO"
1434 [enable_autostart=yes])
1435 AC_MSG_RESULT($enable_autostart)
1436 #AM_CONDITIONAL([HAVE_START_ON_DEMAND], [test "x$enable_autostart" = "xyes"])
1437 AC_SUBST(START_ON_DEMAND)
1439 # should memory statistics be kept (very expensive CPU-wise!)
1440 AC_MSG_CHECKING(whether to create expensive statistics on memory use)
1441 AC_ARG_ENABLE([heapstats],
1442 [AS_HELP_STRING([--enable-heapstats], [enable expensive heap statistics])],
1443 [enable_heapstats=1],
1444 [enable_heapstats=0])
1445 AC_MSG_RESULT($enable_heapstats)
1446 AC_DEFINE_UNQUOTED([ENABLE_HEAP_STATISTICS],$enable_heapstats,[enable expensive heap statistics])
1448 # should code be enabled that works around missing OS functionality on Windows?
1449 # used for test cases
1450 if test $build_target = "mingw"
1456 [#include <ws2tcpip.h>
1458 int s = socket (0, 0, 0);])
1460 AC_DEFINE_UNQUOTED([HAVE_SOCKET],1,[Define this if socket() is available])
1462 AC_DEFINE_UNQUOTED([HAVE_SOCKET],0,[Define this if socket() is available])
1467 [#include <ws2tcpip.h>
1469 int s = select (0, NULL, NULL, NULL, NULL);])
1471 AC_DEFINE_UNQUOTED([HAVE_SELECT],1,[Define this if select() is available])
1473 AC_DEFINE_UNQUOTED([HAVE_SELECT],0,[Define this if select() is available])
1478 [#include <ws2tcpip.h>
1481 char *s = inet_ntoa (i);])
1483 AC_DEFINE_UNQUOTED([HAVE_INET_NTOA],1,[Define this if inet_ntoa() is available])
1485 AC_DEFINE_UNQUOTED([HAVE_INET_NTOA],0,[Define this if inet_ntoa() is available])
1490 [#include <ws2tcpip.h>
1492 int s = getnameinfo (NULL, 0, NULL, 0, NULL, 0, 0);])
1494 AC_DEFINE_UNQUOTED([HAVE_GETNAMEINFO],1,[Define this if getnameinfo() is available])
1496 AC_DEFINE_UNQUOTED([HAVE_GETNAMEINFO],0,[Define this if getnameinfo() is available])
1501 [#include <ws2tcpip.h>
1503 int s = gethostname (NULL, 0);])
1505 AC_DEFINE_UNQUOTED([HAVE_GETHOSTNAME],1,[Define this if gethostname() is available])
1507 AC_DEFINE_UNQUOTED([HAVE_GETHOSTNAME],0,[Define this if gethostname() is available])
1512 [#include <ws2tcpip.h>
1514 void *s = gethostbyname (NULL);])
1516 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYNAME],1,[Define this if gethostbyname() is available])
1518 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYNAME],0,[Define this if gethostbyname() is available])
1523 [#include <ws2tcpip.h>
1525 void *s = gethostbyaddr (NULL, 0, 0);])
1527 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYADDR],1,[Define this if gethostbyaddr() is available])
1529 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYADDR],0,[Define this if gethostbyaddr() is available])
1534 [#include <ws2tcpip.h>
1536 int s = getaddrinfo (NULL, NULL, NULL, NULL);])
1538 AC_DEFINE_UNQUOTED([HAVE_GETADDRINFO],1,[Define this if getaddrinfo() is available])
1540 AC_DEFINE_UNQUOTED([HAVE_GETADDRINFO],1,[Define this if getaddrinfo() is available])
1544 AC_MSG_CHECKING(whether to enable windows workarounds)
1545 AC_ARG_ENABLE([windows_workarounds],
1546 [AS_HELP_STRING([--enable-windows_workarounds], [enable workarounds used on Windows (only useful for test cases)])],
1547 [enable_workarounds=${enableval}],
1548 [enable_workarounds=no])
1549 AC_MSG_RESULT($enable_workarounds)
1550 if test x$enable_windows_workarounds = "xyes"
1557 AC_DEFINE_UNQUOTED([ENABLE_WINDOWS_WORKAROUNDS], $workarounds, [enable workarounds used on Windows (only useful for test cases)])
1560 AC_MSG_CHECKING(whether to compile with support for code coverage analysis)
1561 AC_ARG_ENABLE([coverage],
1562 AS_HELP_STRING([--enable-coverage],
1563 [compile the library with code coverage support]),
1564 [use_gcov=${enableval}],
1566 AC_MSG_RESULT($use_gcov)
1567 AM_CONDITIONAL([USE_COVERAGE], [test "x$use_gcov" = "xyes"])
1571 # TODO: git blame says this predates our switch to git. git-svn should be adjusted to simply git, or
1572 # an external script that does the job.
1573 AC_PATH_PROG(svnversioncommand, svnversion)
1574 AC_PATH_PROG(gitcommand, git)
1575 AC_MSG_CHECKING(for source being under a VCS)
1578 AS_IF([test ! "X$svnversioncommand" = "X"],
1580 svn_version=$(cd $srcdir ; $svnversioncommand -n 2>/dev/null)
1582 AS_IF([test ! "X$gitcommand" = "X"],
1584 gitsvn_version=$(cd $srcdir ; git log -1 2>/dev/null | grep "git-svn-id" | sed -e 's/.*@\([[0-9]]\+\) .*/\1/')
1586 AS_IF([test "X$svn_version" = "X" -o "X$svn_version" = "Xexported" -o "X$svn_version" = "XUnversioned directory"],
1588 AS_IF([test "X$gitsvn_version" = "X"],
1591 vcs_version="\"release\""
1594 vcs_name="yes, git-svn"
1595 vcs_version="\"svn-r$gitsvn_version\""
1600 vcs_version="\"svn-r$svn_version\""
1602 AC_MSG_RESULT($vcs_name)
1604 AC_MSG_CHECKING(VCS version)
1605 AC_MSG_RESULT($vcs_version)
1606 AC_DEFINE_UNQUOTED(VCS_VERSION, [$vcs_version], [VCS revision/hash or tarball version])
1613 doc/doxygen/Makefile
1614 doc/documentation/Makefile
1622 src/ats-tool/Makefile
1623 src/ats-tests/Makefile
1624 src/auction/Makefile
1627 src/cadet/cadet.conf
1630 src/consensus/Makefile
1631 src/consensus/consensus.conf
1632 src/conversation/Makefile
1633 src/conversation/conversation.conf
1635 src/datacache/Makefile
1636 src/datastore/Makefile
1637 src/datastore/datastore.conf
1643 src/fragmentation/Makefile
1648 src/gns/nss/Makefile
1649 src/gnsrecord/Makefile
1651 src/identity/Makefile
1652 src/identity/identity.conf
1653 src/credential/Makefile
1654 src/credential/credential.conf
1655 src/include/Makefile
1656 src/integration-tests/Makefile
1658 src/jsonapi/Makefile
1659 src/hostlist/Makefile
1660 src/multicast/Makefile
1661 src/multicast/multicast.conf
1664 src/namecache/Makefile
1665 src/namecache/namecache.conf
1666 src/namestore/Makefile
1667 src/namestore/namestore.conf
1670 src/nat-auto/Makefile
1671 src/nat-auto/nat-auto.conf
1674 src/peerinfo/Makefile
1675 src/peerinfo/peerinfo.conf
1676 src/peerinfo-tool/Makefile
1677 src/peerstore/Makefile
1678 src/peerstore/peerstore.conf
1680 src/psycutil/Makefile
1683 src/psycstore/Makefile
1684 src/psycstore/psycstore.conf
1687 src/regex/regex.conf
1688 src/revocation/Makefile
1689 src/revocation/revocation.conf
1692 src/secretsharing/Makefile
1693 src/secretsharing/secretsharing.conf
1694 src/scalarproduct/Makefile
1695 src/scalarproduct/scalarproduct.conf
1699 src/social/social.conf
1701 src/statistics/Makefile
1702 src/statistics/statistics.conf
1703 src/template/Makefile
1704 src/testbed/Makefile
1705 src/testbed/testbed.conf
1706 src/testbed-logger/Makefile
1707 src/testbed-logger/testbed-logger.conf
1708 src/testing/Makefile
1709 src/topology/Makefile
1710 src/transport/Makefile
1711 src/transport/transport.conf
1714 src/util/resolver.conf
1717 src/zonemaster/Makefile
1718 src/zonemaster/zonemaster.conf
1721 src/identity-attribute/Makefile
1722 src/identity-provider/Makefile
1724 pkgconfig/gnunetarm.pc
1725 pkgconfig/gnunetats.pc
1726 pkgconfig/gnunetblock.pc
1727 pkgconfig/gnunetcadet.pc
1728 pkgconfig/gnunetconsensus.pc
1729 pkgconfig/gnunetconversation.pc
1730 pkgconfig/gnunetcore.pc
1731 pkgconfig/gnunetdatacache.pc
1732 pkgconfig/gnunetdatastore.pc
1733 pkgconfig/gnunetdht.pc
1734 pkgconfig/gnunetdns.pc
1735 pkgconfig/gnunetdnsparser.pc
1736 pkgconfig/gnunetdnsstub.pc
1737 pkgconfig/gnunetdv.pc
1738 pkgconfig/gnunetenv.pc
1739 pkgconfig/gnunetfragmentation.pc
1740 pkgconfig/gnunetfs.pc
1741 pkgconfig/gnunetgns.pc
1742 pkgconfig/gnunethello.pc
1743 pkgconfig/gnunetidentity.pc
1744 pkgconfig/gnunetmicrophone.pc
1745 pkgconfig/gnunetmulticast.pc
1746 pkgconfig/gnunetmysql.pc
1747 pkgconfig/gnunetnamestore.pc
1748 pkgconfig/gnunetnat.pc
1749 pkgconfig/gnunetnse.pc
1750 pkgconfig/gnunetpeerinfo.pc
1751 pkgconfig/gnunetpq.pc
1752 pkgconfig/gnunetpsyc.pc
1753 pkgconfig/gnunetpsycstore.pc
1754 pkgconfig/gnunetregex.pc
1755 pkgconfig/gnunetrevocation.pc
1756 pkgconfig/gnunetrps.pc
1757 pkgconfig/gnunetscalarproduct.pc
1758 pkgconfig/gnunetset.pc
1759 pkgconfig/gnunetsocial.pc
1760 pkgconfig/gnunetspeaker.pc
1761 pkgconfig/gnunetstatistics.pc
1762 pkgconfig/gnunettestbed.pc
1763 pkgconfig/gnunettesting.pc
1764 pkgconfig/gnunettransport.pc
1765 pkgconfig/gnunettun.pc
1766 pkgconfig/gnunetutil.pc
1767 pkgconfig/gnunetvpn.pc
1773 # warn user if mysql found but not used due to version
1774 if test "$mysqlfail" = "true"
1776 AC_MSG_NOTICE([WARNING: MySQL found, but too old. MySQL support will not be compiled.])
1780 if test "x$sqlite" = "x0"
1782 AC_MSG_ERROR([ERROR: sqlite3 not found, but sqlite3 is required.])
1786 if test "$gnurl" = "0"
1788 if test "x$curl" = "xfalse"
1790 AC_MSG_NOTICE([WARNING: libgnurl not found. http client support will not be compiled.])
1791 AC_MSG_WARN([ERROR: libgnurl not found. hostlist daemon will not be compiled, and you probably WANT the hostlist daemon])
1793 AC_MSG_NOTICE([WARNING: libgnurl not found, trying to use libcurl-gnutls instead.])
1799 if test "x$bluetooth" = "x0"
1801 AC_MSG_NOTICE([WARNING: bluetooth library not found. bluetooth support will not be compiled.])
1805 if test "x$jansson" = "x0"
1807 AC_MSG_NOTICE([WARNING: jansson library not found. json support will not be compiled.])
1810 # warn user if iptables is not found
1811 if test "$VAR_IPTABLES_BINARY" = "false"
1813 AC_MSG_NOTICE([WARNING: iptables not found. some modules may not have full functionality.])
1816 # warn user if ifconfig is not found
1817 if test "$VAR_IFCONFIG_BINARY" = "false"
1819 AC_MSG_NOTICE([WARNING: ifconfig not found. some modules may not have full functionality.])
1823 if test x$gnutls != xtrue
1825 AC_MSG_NOTICE([WARNING: GnuTLS not found, gnunet-gns-proxy will not be built])
1827 if test "x$gnutls_dane" != "x1"
1829 AC_MSG_NOTICE([WARNING: GnuTLS has no DANE support, DANE validation will not be possible])
1834 if test "x$enable_java_ports" = "xyes"
1836 AC_MSG_NOTICE([NOTICE: Opening ports for gnunet-java bindings by default.])
1840 if test "x$lmhd" != "x1"
1842 AC_MSG_NOTICE([WARNING: libmicrohttpd not found, http transport will not be installed.])
1846 if test "x$conversation_backend" = "xnone"
1848 if test "x$pulse" != "x1"
1850 AC_MSG_NOTICE([WARNING: libpulse(audio) not found, conversation will not be built.])
1852 if test "x$opus" != "x1"
1854 AC_MSG_NOTICE([WARNING: libopus not found, conversation will not be built.])
1856 if test "x$gst" != "x1"
1858 AC_MSG_NOTICE([WARNING: GStreamer not found, conversation will not be built.])
1862 if test "$extractor" != 1
1864 AC_MSG_WARN([ERROR: libextractor not found, but various file-sharing functions require it])
1867 AC_MSG_NOTICE([NOTICE: Database support is set to MySQL: $mysql, SQLite: $sqlite, Postgres: $postgres])
1869 if test "$enable_framework_build" = "yes"
1871 AC_MSG_NOTICE([Mac OS X framework build enabled.])
1874 AC_MSG_NOTICE([********************************************
1875 Please make sure NOW that you have created a user and group 'gnunet'
1876 and additionally a group 'gnunetdns'. On Debian and Ubuntu GNU/Linux, type:
1878 adduser --system --group --disabled-login --home /var/lib/gnunet gnunet
1880 Make sure that '/var/lib/gnunet' is owned (and writable) by user
1881 'gnunet'. Then, you can compile GNUnet with
1884 After that, run (if necessary as 'root')
1886 to install everything.
1888 Each GNUnet user should be added to the 'gnunet' group (may
1889 require fresh login to come into effect):
1890 adduser USERNAME gnunet
1891 (run the above command as root once for each of your users, replacing
1892 "USERNAME" with the respective login names). If you have a global IP
1893 address, no further configuration is required.
1895 For more detailed setup instructions, see https://gnunet.org/installation
1897 Optionally, download and compile gnunet-gtk to get a GUI for
1898 file-sharing and configuration. This is particularly recommended
1899 if your network setup is non-trivial, as gnunet-setup can be
1900 used to test in the GUI if your network configuration is working.
1901 gnunet-setup should be run as the "gnunet" user under X. As it
1902 does very little with the network, running it as "root" is likely
1903 also harmless. You can also run it as a normal user, but then
1904 you have to copy ~/.gnunet/gnunet.conf" over to the "gnunet" user's
1905 home directory in the end.
1907 Once you have configured your peer, run (as the 'gnunet' user)
1909 to start the peer. You can then run the various GNUnet-tools as
1910 your "normal" user (who should only be in the group 'gnunet').
1911 ********************************************])