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
5 # it under the terms of the GNU General Public License as published
6 # by the Free Software Foundation; either version 3, or (at your
7 # 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 # General Public License for more details.
14 # You should have received a copy of the GNU General Public License
15 # along with GNUnet; see the file COPYING. If not, write to the
16 # Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17 # Boston, MA 02110-1301, USA.
20 # Process this file with autoconf to produce a configure script.
24 # Checks for programs.
25 AC_INIT([gnunet], [0.11.0], [bug-gnunet@gnu.org])
32 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
33 AC_CONFIG_HEADERS([gnunet_config.h])
34 AH_TOP([#define _GNU_SOURCE 1])
35 AC_CONFIG_MACRO_DIR([m4])
45 LT_INIT([disable-static dlopen win32-dll])
53 CFLAGS="-Wall $CFLAGS"
54 # use '-fno-strict-aliasing', but only if the compiler can take it
55 if gcc -fno-strict-aliasing -S -o /dev/null -xc /dev/null >/dev/null 2>&1;
57 CFLAGS="-fno-strict-aliasing $CFLAGS"
60 # Use Linux interface name unless the OS has a different preference
61 DEFAULT_INTERFACE="\"eth0\""
63 funcstocheck="getnameinfo gethostname gethostbyname gethostbyaddr getaddrinfo"
65 # Srcdir in a form that native compiler understands (i.e. DOS path on W32)
70 *darwin* | *rhapsody* | *macosx*)
71 AC_DEFINE_UNQUOTED(DARWIN,1,[This is an Apple Darwin system])
72 CPPFLAGS="-D_APPLE_C_SOURCE $CPPFLAGS"
73 CFLAGS="-fno-common $CFLAGS"
74 AC_MSG_WARN([WARNING: The VPN application cannot be compiled on your OS])
76 DEFAULT_INTERFACE="\"en0\""
82 AC_DEFINE_UNQUOTED(LINUX,1,[This is a Linux kernel])
90 AC_DEFINE_UNQUOTED(SOMEBSD,1,[This is a BSD system])
91 AC_DEFINE_UNQUOTED(FREEBSD,1,[This is a FreeBSD system])
92 CFLAGS="-D_THREAD_SAFE $CFLAGS"
93 build_target="freebsd"
99 AC_DEFINE_UNQUOTED(SOMEBSD,1,[This is a BSD system])
100 AC_DEFINE_UNQUOTED(OPENBSD,1,[This is an OpenBSD system])
101 LIBS=`echo $LIBS | sed -e "s/-ldl//"`
102 build_target="openbsd"
108 AC_DEFINE_UNQUOTED(SOMEBSD,1,[This is a BSD system])
109 AC_DEFINE_UNQUOTED(NETBSD,1,[This is a NetBSD system])
115 AC_DEFINE_UNQUOTED(SOLARIS,1,[This is a Solaris system])
116 AC_DEFINE_UNQUOTED(_REENTRANT,1,[Need with solaris or errno doesnt work])
117 AC_CHECK_LIB(resolv, res_init)
118 AC_CHECK_LIB(rt, nanosleep)
119 build_target="solaris"
125 AC_DEFINE_UNQUOTED(LINUX,1,[This is a Linux kernel])
126 CFLAGS="-D_REENTRANT -fPIC -pipe $CFLAGS"
133 AC_DEFINE_UNQUOTED(CYGWIN,1,[This is a Cygwin system])
134 AC_DEFINE_UNQUOTED(WINDOWS,1,[This is a Windows system])
135 AC_CHECK_LIB(intl, gettext)
136 CFLAGS="-mms-bitfields $CFLAGS"
137 build_target="cygwin"
144 AC_DEFINE_UNQUOTED(MINGW,1,[This is a MinGW system])
145 AC_DEFINE_UNQUOTED(WINDOWS,1,[This is a Windows system])
146 AC_DEFINE_UNQUOTED(_WIN32,1,[This is a Windows system])
147 AC_CHECK_LIB(intl, gettext)
148 LDFLAGS="$LDFLAGS -Wl,--export-all-symbols"
149 LIBS="$LIBS -lws2_32 -lplibc -lgnurx -lole32"
150 CFLAGS="-mms-bitfields $CFLAGS"
151 CPPFLAGS="-D_WIN32_WINNT=0x0501 -DHAVE_STAT64=1 -D__USE_MINGW_ANSI_STDIO=1 $CPPFLAGS"
158 native_srcdir=$(cd $srcdir; pwd -W)
161 AC_DEFINE_UNQUOTED(GNU,1,[This is a GNU system])
166 AC_MSG_RESULT(Unrecognised OS $host_os)
167 AC_DEFINE_UNQUOTED(OTHEROS,1,[Some strange OS])
171 AC_DEFINE_UNQUOTED([GNUNET_DEFAULT_INTERFACE], $DEFAULT_INTERFACE, [This should be the default choice for the name of the first network interface])
172 AC_SUBST(DEFAULT_INTERFACE)
174 # Disable TCP-based IPC on systems that support UNIX domain
175 # sockets in default configuratin:
179 AC_MSG_CHECKING([for build target])
180 AM_CONDITIONAL(DARWIN, test "$build_target" = "darwin")
181 AM_CONDITIONAL(CYGWIN, test "$build_target" = "cygwin")
182 AM_CONDITIONAL(MINGW, test "$build_target" = "mingw")
183 AM_CONDITIONAL(SOLARIS, test "$build_target" = "solaris")
184 AM_CONDITIONAL(XFREEBSD, test "$build_target" = "freebsd")
185 AM_CONDITIONAL(OPENBSD, test "$build_target" = "openbsd")
186 AM_CONDITIONAL(LINUX, test "$build_target" = "linux")
187 AM_CONDITIONAL(GNU, test "$build_target" = "gnu")
189 AC_MSG_RESULT([$build_target])
190 AC_SUBST(build_target)
191 AM_CONDITIONAL([am__fastdepOBJC], false)
192 AC_UNALIGNED_64_ACCESS
194 # some other checks for standard libs
195 AC_SEARCH_LIBS([gethostbyname], [nsl ws2_32])
196 AC_CHECK_LIB(socket, socket)
198 AC_CHECK_LIB(c, getloadavg, AC_DEFINE(HAVE_GETLOADAVG,1,[getloadavg supported]))
200 AC_CHECK_PROG(VAR_GETOPT_BINARY, getopt, true, false)
201 AM_CONDITIONAL(HAVE_GETOPT_BINARY, $VAR_GETOPT_BINARY)
203 AC_CHECK_PROG(VAR_SSH_BINARY,ssh,true,false)
204 AM_CONDITIONAL(HAVE_SSH_BINARY, $VAR_SSH_BINARY)
205 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)
206 rm -f /tmp/gnunet_test_cosks_ssh_garbage
209 AC_CHECK_MEMBER(struct tm.tm_gmtoff,
210 [AC_DEFINE(HAVE_TM_GMTOFF, 1,
211 [Define if struct tm has the tm_gmtoff member.])],
215 AC_CHECK_DECLS([_stati64])
217 # 'save' libs; only those libs found so far will be
218 # linked against _everywhere_. For the others, we
219 # will be more selective!
222 # tests only run on Windows
223 if test "x$build_target" = "xmingw"
225 AC_CHECK_LIB(plibc, plibc_init, [], [AC_MSG_ERROR([GNUnet requires PlibC on Windows])])
226 AC_CHECK_LIB(gnurx, regexec, [], [AC_MSG_ERROR([GNUnet requires libgnurx on Windows])])
232 NEED_LIBGCRYPT_VERSION=1.6.0
235 AM_PATH_LIBGCRYPT("$NEED_LIBGCRYPT_API:$NEED_LIBGCRYPT_VERSION", gcrypt=1)
236 AC_CHECK_DECLS([gcry_mpi_set_opaque_copy], [], [], [[#include <gcrypt.h>]])
242 *** You need libgcrypt to build this program.
243 ** This library is for example available at
244 *** ftp://ftp.gnupg.org/gcrypt/libgcrypt/
245 *** (at least version $NEED_LIBGCRYPT_VERSION (API $NEED_LIBGCRYPT_API)
249 AC_DEFINE_UNQUOTED([NEED_LIBGCRYPT_VERSION], "$NEED_LIBGCRYPT_VERSION", [required libgcrypt version])
251 # TODO: add check for VERSION
252 # TODO: add check for alternatives
253 # TODO: add switch to skip documentation building
254 AM_MISSING_PROG([MAKEINFO], [makeinfo])
256 # Adam shostack suggests the following for Windows:
257 # -D_FORTIFY_SOURCE=2 -fstack-protector-all
258 AC_ARG_ENABLE(gcc-hardening,
259 AS_HELP_STRING(--enable-gcc-hardening, enable compiler security checks),
260 [if test x$enableval = xyes; then
261 CFLAGS="$CFLAGS -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fstack-protector-all"
262 CFLAGS="$CFLAGS -fwrapv -fPIE -Wstack-protector"
263 CFLAGS="$CFLAGS --param ssp-buffer-size=1"
264 LDFLAGS="$LDFLAGS -pie"
268 # Linker hardening options
269 # Currently these options are ELF specific - you can't use this with MacOSX
270 AC_ARG_ENABLE(linker-hardening,
271 AS_HELP_STRING(--enable-linker-hardening, enable linker security fixups),
272 [if test x$enableval = xyes; then
273 LDFLAGS="$LDFLAGS -z relro -z now"
277 AC_ARG_ENABLE(sanitizer,
278 AS_HELP_STRING(--enable-sanitizer, enable Address Sanitizer and Undefined Behavior Sanitizer),
279 [if test x$enableval = xyes; then
280 LDFLAGS="$CFLAGS -fsanitize=address,undefined -fno-omit-frame-pointer"
284 extra_logging=GNUNET_NO
285 AC_ARG_ENABLE([logging],
286 AS_HELP_STRING([--enable-logging@<:@=value@:>@],[Enable logging calls. Possible values: yes,no,verbose,veryverbose ('yes' is the default)]),
287 [AS_IF([test "x$enableval" = "xyes"], [],
288 [test "x$enableval" = "xno"], [AC_DEFINE([GNUNET_CULL_LOGGING],[],[Define to cull all logging calls])],
289 [test "x$enableval" = "xverbose"], [extra_logging=GNUNET_YES]
290 [test "x$enableval" = "xveryverbose"], [extra_logging=\(GNUNET_YES+1\)])
292 AC_DEFINE_UNQUOTED([GNUNET_EXTRA_LOGGING],[$extra_logging],[1 if extra logging is enabled, 2 for very verbose extra logging, 0 otherwise])
294 # should memory poisoning be enabled?
295 AC_MSG_CHECKING(whether to poison freed memory)
296 AC_ARG_ENABLE([poisoning],
297 [AS_HELP_STRING([--enable-poisoning], [enable poisoning of freed memory (good for debugging)])],
298 [enable_poisoning=${enableval}],
300 if test "x$extra_logging" != "xGNUNET_NO"; then
301 enable_poisoning="defaults to yes (extra logging is enabled)"
306 AC_MSG_RESULT($enable_poisoning)
307 if test ! "x$enable_poisoning" = "xno"; then
312 AC_DEFINE_UNQUOTED([ENABLE_POISONING],[$enable_poisoning],[1 if freed memory should be poisoned, 0 otherwise])
314 if test $build = $target
316 AC_MSG_CHECKING([for working HMAC])
318 LIBS="$LIBS $LIBGCRYPT_LIBS"
319 CFLAGS="$CFLAGS $LIBGCRYPT_CFLAGS"
321 [AC_LANG_PROGRAM([#include <gcrypt.h>
322 #include <stdio.h>], [[
325 unsigned char data[] = { 0xbf, 0x16, 0x6e, 0x46, 0x3a, 0x6c, 0xf3, 0x93, 0xa7, 0x72,
326 0x11, 0xa1, 0xdc, 0x0b, 0x07, 0xdb, 0x1a, 0x5e, 0xd9, 0xb9, 0x81, 0xbe,
327 0xea, 0xe4, 0x31, 0x5f, 0x24, 0xff, 0xfe, 0x50, 0x8a, 0xde };
328 unsigned char key[] = { 0xfc, 0x62, 0x76, 0x35 };
329 unsigned char result[] = {0xa2, 0xb, 0x1, 0xd9, 0xc0, 0x8b, 0x5a, 0x12, 0x80,
330 0xd5, 0x50, 0x12, 0x8e, 0xd0, 0x5b, 0xb6, 0x5c, 0x87, 0x24, 0xe2, 0xd0,
331 0xd2, 0xaf, 0x63, 0xae, 0xd1, 0xd6, 0x64, 0x14, 0xe3, 0x6e, 0x61, 0x5b,
332 0xd, 0xba, 0x17, 0x7d, 0xd3, 0x10, 0xb1, 0x37, 0x41, 0x91, 0x7d, 0xeb,
333 0x1, 0x4d, 0x71, 0xe8, 0x59, 0x71, 0x42, 0x8e, 0xd6, 0xf3, 0x29, 0x3b,
334 0x90, 0xf2, 0xd1, 0xaf, 0x65, 0x1e, 0xb3};
336 if (!gcry_check_version (GCRYPT_VERSION))
338 fprintf (stderr, "Version mismatch %s <-> %s \n", gcry_check_version (NULL), GCRYPT_VERSION);
342 gcry_control (GCRYCTL_DISABLE_SECMEM, 0);
343 gcry_control (GCRYCTL_INITIALIZATION_FINISHED, 0);
345 if (gcry_md_open(&mac, GCRY_MD_SHA512, GCRY_MD_FLAG_HMAC) != GPG_ERR_NO_ERROR)
347 fprintf (stderr, "gcry_md_open error\n");
351 gcry_md_setkey (mac, key, sizeof (key));
352 gcry_md_write (mac, data, sizeof (data));
354 if (memcmp(gcry_md_read (mac, 0), result, gcry_md_get_algo_dlen (gcry_md_get_algo (mac))) != 0)
356 fprintf (stderr, "memcmp error\n");
364 [AC_MSG_RESULT([yes])],
369 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.])
373 AC_MSG_FAILURE([HMAC test failed])
377 AC_MSG_FAILURE([libgcrypt header version does not match library version])
380 [AC_MSG_RESULT([cross compiling, test skipped])])
382 fi # $build = $target
384 # check for bluetooth library
386 AC_CHECK_LIB(bluetooth, ba2str,[AC_CHECK_HEADER([bluetooth/bluetooth.h],bluetooth=1)])
387 if test "$build_target" = "mingw"
391 AM_CONDITIONAL(HAVE_LIBBLUETOOTH, [test "$bluetooth" = 1])
392 if test "$bluetooth" = 1
394 AC_DEFINE([HAVE_LIBBLUETOOTH],[1],[Have bluetooth library])
396 AC_DEFINE([HAVE_LIBBLUETOOTH],[0],[Lacking bluetooth library])
399 # check for jansson library
401 AC_CHECK_HEADER([jansson.h],jansson=1)
402 AM_CONDITIONAL(HAVE_JANSSON, [test "$jansson" = 1])
403 if test "x$jansson" = x1
405 AC_DEFINE([HAVE_JANSSON],[1],[Have jansson library])
407 AC_DEFINE([HAVE_JANSSON],[0],[Lacking jansson library])
410 # check for libpulse(audio) library
412 AC_CHECK_LIB(pulse,pa_stream_peek,
413 [AC_CHECK_HEADER([pulse/simple.h],pulse=1)])
414 if test "$build_target" = "mingw"
420 AC_DEFINE([HAVE_PULSE],[1],[Have libpulse(audio) library])
423 # check for libopus(audio) library
425 AC_CHECK_LIB(opus,opus_decode_float,
426 [AC_CHECK_HEADER([opus/opus.h],
427 [AC_CHECK_DECL([OPUS_SET_GAIN],[opus=1],[],[[#include <opus/opus.h>]]
433 AC_DEFINE([HAVE_OPUS],[1],[Have libopus library])
437 AC_CHECK_LIB(ogg, ogg_stream_flush_fill,
438 [AC_CHECK_HEADERS([ogg/ogg.h],
439 AM_CONDITIONAL(HAVE_OGG, true)
441 AC_DEFINE(HAVE_OGG,1,[Have ogg]),
442 AM_CONDITIONAL(HAVE_OGG, false)
444 AC_DEFINE(HAVE_OGG,0,[lacking ogg]))],
445 AM_CONDITIONAL(HAVE_OGG, false)
449 PKG_CHECK_MODULES([GLIB], [glib-2.0],
450 # check for pbc library
452 AC_CHECK_HEADER([pbc/pbc.h],pbc=1)
453 AC_CHECK_HEADER([gabe.h],abe=1)
454 AM_CONDITIONAL(HAVE_PBC, [test "$pbc" = 1])
455 AM_CONDITIONAL(HAVE_ABE, [test "$abe" = 1])
458 AC_DEFINE([HAVE_PBC],[1],[Have pbc library])
460 AC_DEFINE([HAVE_PBC],[0],[Lacking pbc library])
464 AC_DEFINE([HAVE_ABE],[1],[Have ABE library])
466 AC_DEFINE([HAVE_ABE],[0],[Lacking ABE library])
470 AM_CONDITIONAL(HAVE_PBC, [0])
471 AM_CONDITIONAL(HAVE_ABE, [0])
472 AC_DEFINE([HAVE_PBC],[0],[Lacking glib library])
478 [glib-2.0 gobject-2.0 gstreamer-1.0 gstreamer-app-1.0 gstreamer-audio-1.0],
484 AC_MSG_RESULT(not found)
488 if test "x$pulse" != "x1" -o "x$opus" != "x1" -o "x$ogg" != "x1"
490 if test "x$gst" != "x1"
492 conversation_backend=none
493 AM_CONDITIONAL(BUILD_PULSE_HELPERS, false)
494 AM_CONDITIONAL(BUILD_GST_HELPERS, false)
495 AM_CONDITIONAL(BUILD_EXPERIMENTAL_HELPERS, false)
497 conversation_backend=gst
498 AM_CONDITIONAL(BUILD_PULSE_HELPERS, false)
499 AM_CONDITIONAL(BUILD_GST_HELPERS, true)
500 AM_CONDITIONAL(BUILD_EXPERIMENTAL_HELPERS, false)
504 conversation_backend=pulse
505 AM_CONDITIONAL(BUILD_PULSE_HELPERS, true)
506 AM_CONDITIONAL(BUILD_GST_HELPERS, false)
507 AM_CONDITIONAL(BUILD_EXPERIMENTAL_HELPERS, false)
511 LIBGNURL_CHECK_CONFIG(,7.34.0,gnurl=1,gnurl=0)
514 AM_CONDITIONAL(HAVE_LIBGNURL, true)
515 AC_DEFINE([HAVE_LIBGNURL],[1],[Have libgnurl])
517 AM_CONDITIONAL(HAVE_LIBGNURL, false)
518 AC_DEFINE([HAVE_LIBGNURL],[0],[Lacking libgnurl])
521 SAVE_CPPFLAGS=$CPPFLAGS
522 CPPFLAGS="$LIBGNURL_CPPFLAGS $LIBCURL_CPPFLAGS $CPPFLAGS"
523 LIBS="$LIBGNURL $LIBCURL $LIBS"
526 LIBCURL_CHECK_CONFIG(,7.34.0,[curl=true],[curl=false])
527 if test "x$curl" = xtrue
530 AC_CHECK_HEADERS([curl/curl.h],
531 AC_CHECK_DECLS(CURLINFO_TLS_SESSION,[curl=true],[curl=false],[[#include <curl/curl.h>]]),
533 AC_CHECK_HEADERS([gnurl/curl.h],
534 AC_CHECK_DECLS(CURLINFO_TLS_SESSION,[curl=true],,[[#include <gnurl/curl.h>]]))
535 # need libcurl-gnutls.so, everything else is not acceptable
536 AC_CHECK_LIB([curl-gnutls],[curl_easy_getinfo],,[curl=false])
537 # cURL must support CURLINFO_TLS_SESSION, version >= 7.34
540 # Check for curl/curl.h and gnurl/curl.h so we can use #ifdef
541 # HAVE_CURL_CURL_H later (the above LIBCURL_CHECK_CONFIG accepted
542 # *either* header set).
543 AC_CHECK_HEADERS([curl/curl.h],,
545 AC_CHECK_HEADERS([gnurl/curl.h],,
550 if test x$curl = xfalse
552 AM_CONDITIONAL(HAVE_LIBCURL, false)
555 AC_MSG_WARN([ERROR: GNUnet requires libcurl-gnutls or gnurl >= 7.34])
558 AM_CONDITIONAL(HAVE_LIBCURL, true)
559 AC_DEFINE([HAVE_LIBCURL],[1],[Have CURL])
563 # restore LIBS & CPPFLAGS
565 CPPFLAGS=$SAVE_CPPFLAGS
567 AC_CHECK_HEADERS([glpk.h],[glpk=true],[gplk=false])
568 # GLPK must support glpk_init_env, version >= 4.43
569 AC_CHECK_LIB([glpk],[glp_init_env],,[gplk=false])
570 # GLPK must support atm MLP presolving, version >= 4.32
571 AC_CHECK_MEMBERS(glp_iocp.presolve,,[gplk=false],[[#include <glpk.h>]])
572 if test x$gplk = xfalse
574 AM_CONDITIONAL(HAVE_LIBGLPK, false)
575 AC_MSG_WARN([ERROR: GNUnet requires GLPK >= 4.32])
577 AM_CONDITIONAL(HAVE_LIBGLPK, true)
578 AC_DEFINE([HAVE_LIBGLPK],[1],[Have GLPK])
582 AC_CHECK_HEADERS([nss.h],[nss=true],[nss=false])
583 if test x$nss = xfalse
585 AM_CONDITIONAL(HAVE_GLIBCNSS, false)
586 AC_MSG_WARN([ERROR: No GNU libc nss header, will not build NSS plugin])
588 AM_CONDITIONAL(HAVE_GLIBCNSS, true)
593 # test for kvm and kstat (for CPU stats under BSD/Solaris)
594 AC_CHECK_LIB([kvm],[kvm_open])
595 AC_CHECK_LIB([kstat],[kstat_open])
598 # should the build process be building the documentation?
599 AC_MSG_CHECKING(whether to build documentation)
600 AC_ARG_ENABLE([documentation],
601 [AS_HELP_STRING([--enable-documentation], [build the documentation])],
602 [documentation=${enableval}],
604 AC_MSG_RESULT($documentation)
605 if test "x$documentation" = "xyes"
607 AM_CONDITIONAL([DOCUMENTATION],true)
608 AC_DEFINE([DOCUMENTATION],[1],[Building the documentation])
610 AM_CONDITIONAL([DOCUMENTATION],false)
611 AC_DEFINE([DOCUMENTATION],[0],[Not building the documentation])
614 # should the build process be restricted to the code required
615 # for GNU Taler wallets?
616 AC_MSG_CHECKING(whether to compile GNU Taler Wallet library ONLY)
617 AC_ARG_ENABLE([taler-wallet],
618 [AS_HELP_STRING([--enable-taler-wallet], [only compile for Taler wallet])],
619 [taler_only=${enableval}],
621 AC_MSG_RESULT($taler_only)
622 if test "x$taler_only" = "xyes"
624 AM_CONDITIONAL([TALER_ONLY],true)
625 AC_DEFINE([TALER_WALLET_ONLY],[1],[Compiling for Taler wallet])
627 AM_CONDITIONAL([TALER_ONLY],false)
628 AC_DEFINE([TALER_WALLET_ONLY],[0],[Canonical compilation])
631 # test for libextractor
633 AC_MSG_CHECKING(for libextractor)
634 AC_ARG_WITH(extractor,
635 [ --with-extractor=PFX base of libextractor installation],
636 [AC_MSG_RESULT([$with_extractor])
637 case $with_extractor in
641 AC_CHECK_HEADERS(extractor.h,
642 AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
646 LDFLAGS="-L$with_extractor/lib $LDFLAGS"
647 CPPFLAGS="-I$with_extractor/include $CPPFLAGS"
648 AC_CHECK_HEADERS(extractor.h,
649 AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
650 EXT_LIB_PATH="-L$with_extractor/lib $EXT_LIB_PATH"
655 [AC_MSG_RESULT([--with-extractor not specified])
656 AC_CHECK_HEADERS(extractor.h,
657 AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
662 if test "$extractor" != 1
664 AM_CONDITIONAL(HAVE_LIBEXTRACTOR, false)
665 AC_DEFINE([HAVE_LIBEXTRACTOR],[0],[Lacking libextractor])
667 AM_CONDITIONAL(HAVE_LIBEXTRACTOR, true)
668 AC_DEFINE([HAVE_LIBEXTRACTOR],[1],[Have libextractor])
672 if test "$taler_only" != yes
675 # Check for libltdl header (#2999)
677 AC_MSG_CHECKING(for libltdl)
679 [ --with-ltdl=PFX base of libltdl installation],
680 [AC_MSG_RESULT([$with_ltdl])
685 AC_CHECK_HEADERS(ltdl.h,
686 AC_CHECK_LIB([ltdl], [lt_dlopenext],
690 LDFLAGS="-L$with_ltdl/lib $LDFLAGS"
691 CPPFLAGS="-I$with_ltdl/include $CPPFLAGS"
692 AC_CHECK_HEADERS(ltdl.h,
693 AC_CHECK_LIB([ltdl], [lt_dlopenext],
694 EXT_LIB_PATH="-L$with_ltdl/lib $EXT_LIB_PATH"
699 [AC_MSG_RESULT([--with-ltdl not specified])
700 AC_CHECK_HEADERS(ltdl.h,
701 AC_CHECK_LIB([ltdl], [lt_dlopenext],
705 AC_MSG_RESULT([libltdl found])
707 AC_MSG_ERROR([GNUnet requires libltdl (from GNU libtool), try installing libltdl-dev])
714 AC_MSG_CHECKING([if Libidn can be used])
715 AC_ARG_WITH(libidn, AC_HELP_STRING([--with-libidn=[DIR]],
716 [Support IDN (needs GNU Libidn)]),
717 libidn=$withval, libidn=yes)
718 if test "$libidn" != "no"; then
719 if test "$libidn" != "yes"; then
720 LDFLAGS="${LDFLAGS} -L$libidn/lib"
721 CPPFLAGS="${CPPFLAGS} -I$libidn/include"
725 AC_CHECK_HEADER(idna.h,
726 AC_CHECK_LIB(idn, stringprep_check_version,
727 [libidn=yes LIBS="${LIBS} -lidn"], []), [])
728 if test "$libidn" != "yes"; then
729 AC_MSG_FAILURE([GNUnet requires libidn.
730 libidn-1.13 should be sufficient, newer versions work too.])
732 AC_MSG_RESULT($libidn)
736 SAVE_LDFLAGS=$LDFLAGS
737 SAVE_CPPFLAGS=$CPPFLAGS
739 [ --with-zlib[[=DIR]] use libz in DIR],
740 [AS_IF([test "$withval" = "no"],
741 [AC_MSG_ERROR([GNUnet requires zlib])],
742 [test "$withval" != "yes"],
745 CPPFLAGS="${CPPFLAGS} -I$withval/include"
746 LDFLAGS="${LDFLAGS} -L$withval/lib"
749 AC_CHECK_HEADER(zlib.h,
751 [AC_MSG_ERROR([GNUnet requires zlib])])
752 AC_CHECK_LIB(z, compress2,
754 AC_DEFINE([HAVE_ZLIB], [], [Have compression library])
755 if test "x${Z_DIR}" != "x"; then
756 Z_CFLAGS="-I${Z_DIR}/include"
757 Z_LIBS="-L${Z_DIR}/lib -lz"
761 [AC_MSG_ERROR([GNUnet requires zlib])])
765 if test "$enable_shared" = "no"
767 AC_MSG_ERROR([GNUnet only works with shared libraries. Sorry.])
781 # test for libunistring
783 if test $HAVE_LIBUNISTRING != yes; then
784 AC_MSG_ERROR([GNUnet requires libunistring])
786 # under emscripten, $gl_libunistring_hexversion is undefined
787 if test "$taler_only" != yes; then
788 if test "x$gl_libunistring_hexversion" = "x" || test "$gl_libunistring_hexversion" -le 2305; then
789 AC_MSG_ERROR([GNUnet requires libunistring >= 0.9.1.1])
792 AC_CHECK_HEADERS([unistr.h],,AC_MSG_ERROR([Compiling GNUnet requires unistr.h (from libunistring) to be installed]))
799 # Checks for standard header files.
803 # Check for headers that are ALWAYS required
804 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]))
808 # Checks for headers that are only required on some systems or opional (and where we do NOT abort if they are not there)
809 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])
811 # FreeBSD requires something more funky for netinet/in_systm.h and netinet/ip.h...
812 AC_CHECK_HEADERS([sys/types.h netinet/in_systm.h netinet/in.h netinet/ip.h],,,
813 [#ifdef HAVE_SYS_TYPES_H
814 #include <sys/types.h>
816 #ifdef HAVE_NETINET_IN_SYSTM_H
817 #include <netinet/in_systm.h>
819 #ifdef HAVE_NETINET_IN_H
820 #include <netinet/in.h>
824 SAVE_LDFLAGS=$LDFLAGS
825 SAVE_CPPFLAGS=$CPPFLAGS
829 AC_MSG_CHECKING(for SQLite)
831 [ --with-sqlite=PFX base of SQLite installation],
832 [AC_MSG_RESULT("$with_sqlite")
837 AC_CHECK_HEADERS(sqlite3.h,
841 LDFLAGS="-L$with_sqlite/lib $LDFLAGS"
842 CPPFLAGS="-I$with_sqlite/include $CPPFLAGS"
843 AC_CHECK_HEADERS(sqlite3.h,
844 EXT_LIB_PATH="-L$with_sqlite/lib $EXT_LIB_PATH"
845 SQLITE_LDFLAGS="-L$with_sqlite/lib"
846 SQLITE_CPPFLAGS="-I$with_sqlite/include"
848 LDFLAGS=$SAVE_LDFLAGS
849 CPPFLAGS=$SAVE_CPPFLAGS
853 [AC_MSG_RESULT([--with-sqlite not specified])
854 AC_CHECK_HEADERS(sqlite3.h, sqlite=true)])
855 AM_CONDITIONAL(HAVE_SQLITE, test x$sqlite = xtrue)
856 AC_SUBST(SQLITE_CPPFLAGS)
857 AC_SUBST(SQLITE_LDFLAGS)
859 LDFLAGS=$SAVE_LDFLAGS
860 CPPFLAGS=$SAVE_CPPFLAGS
864 # even running the check for postgres breaks emscripten ...
865 if test "$taler_only" != yes; then
866 AX_LIB_POSTGRESQL([9.5])
867 if test "$found_postgresql" = "yes"; then
868 CPPFLAGS="$CPPFLAGS $POSTGRESQL_CPPFLAGS"
869 AC_CHECK_HEADERS([libpq-fe.h],
873 AM_CONDITIONAL(HAVE_POSTGRESQL, test x$postgres = xtrue)
876 LDFLAGS=$SAVE_LDFLAGS
877 CPPFLAGS=$SAVE_CPPFLAGS
880 AC_CHECK_TYPES([sigset_t, off_t], [], [], [#include <sys/types.h>])
881 AC_CHECK_TYPES([size_t], [], [], [#include <stdio.h>])
883 if test "$build_target" = "mingw"
885 CYGWIN_MYSQL_MAGIC="#include <mysql/my_global.h>"
891 SAVE_LDFLAGS=$LDFLAGS
892 SAVE_CPPFLAGS=$CPPFLAGS
893 AC_MSG_CHECKING(for mysql)
895 [ --with-mysql=PFX base of MySQL installation],
896 [AC_MSG_RESULT([$with_mysql])
901 AC_CHECK_HEADERS(mysql/mysql.h,
902 AC_CHECK_LIB(mysqlclient, mysql_init,
904 mysql=true), [], [$CYGWIN_MYSQL_MAGIC])
907 LDFLAGS="-L$with_mysql/lib -L$with_mysql/lib/mysql $LDFLAGS $ZLIBS"
908 CPPFLAGS="-I$with_mysql/include $CPPFLAGS"
909 AC_CHECK_HEADERS(mysql/mysql.h,
910 AC_CHECK_LIB(mysqlclient, mysql_init,
911 MYSQL_LDFLAGS="-L$with_mysql/lib -L$with_mysql/lib/mysql"
912 MYSQL_CPPFLAGS="-I$with_mysql/include"
914 mysql=true), [], [$CYGWIN_MYSQL_MAGIC])
918 [AC_MSG_RESULT([--with-mysql not specified])
919 if test -d "/usr/lib64/mysql"; then
920 MYSQL_LIBDIR="/usr/lib64/mysql"
921 elif test -d "/usr/lib/mysql"; then
922 MYSQL_LIBDIR="/usr/lib/mysql"
924 MYSQL_LIBDIR="/usr/lib"
926 LDFLAGS="-L$MYSQL_LIBDIR $LDFLAGS $ZLIBS"
927 AC_CHECK_LIB(mysqlclient, mysql_init,
928 [AC_CHECK_HEADERS(mysql/mysql.h,
929 MYSQL_LDFLAGS="-L$MYSQL_LIBDIR"
932 , [], [$CYGWIN_MYSQL_MAGIC])])
935 AC_SUBST(MYSQL_LDFLAGS)
936 AC_SUBST(MYSQL_CPPFLAGS)
938 # additional version check for mysql
939 AC_ARG_ENABLE(mysql-version-check, [ --disable-mysql-version-check do not check MySQL version],, enable_mysql_version_check=yes)
940 if test "$mysql" = "true" -a "x$enable_mysql_version_check" = "xyes"
942 AC_MSG_CHECKING(mysql version)
943 AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
944 [[$CYGWIN_MYSQL_MAGIC
945 #include <mysql/mysql.h>]],
947 #if (MYSQL_VERSION_ID < 40100)
948 #error needs at least version >= 4.1
950 int main () { return 0; }
952 ],mysql=true,mysql=false)
953 if test "$mysql" = "false"
956 AC_MSG_RESULT([fail, >= 4.1 required])
961 AM_CONDITIONAL(HAVE_MYSQL, test x$mysql = xtrue)
962 AM_CONDITIONAL(HAVE_MYSQLE, test "0" = "1")
965 LDFLAGS=$SAVE_LDFLAGS
966 CPPFLAGS=$SAVE_CPPFLAGS
968 if test "$sqlite" = 0 -a "$mysql" = 0
970 AC_MSG_ERROR([GNUnet requires SQLite or MySQL])
975 AC_MSG_CHECKING([for libmicrohttpd])
976 AC_ARG_WITH(microhttpd,
977 [ --with-microhttpd=PFX base of libmicrohttpd installation],
978 [AC_MSG_RESULT([$with_microhttpd])
979 case $with_microhttpd in
983 AC_CHECK_HEADERS([microhttpd.h],
984 AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
985 AC_CHECK_LIB([microhttpd], [MHD_get_fdset2],
986 [AC_MSG_CHECKING([for libmicrohttpd >= 0.9.42])
987 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
988 #include "$native_srcdir/src/include/platform.h"
989 #include <microhttpd.h>
990 #if (MHD_VERSION < 0x0094200)
991 #error needs at least version 0.9.42
993 int main () { return 0; }
997 [AC_MSG_RESULT(failed)])]),
998 [],[#include "$native_srcdir/src/include/platform.h"
999 #include <microhttpd.h>]),,
1000 [#include "$native_srcdir/src/include/platform.h"])
1003 LDFLAGS="-L$with_microhttpd/lib $LDFLAGS"
1004 CPPFLAGS="-I$with_microhttpd/include $CPPFLAGS"
1005 AC_CHECK_HEADERS(microhttpd.h,
1006 AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
1007 AC_CHECK_LIB([microhttpd], [MHD_get_fdset2],
1008 EXT_LIB_PATH="-L$with_microhttpd/lib $EXT_LIB_PATH"
1009 [AC_MSG_CHECKING([for libmicrohttpd >= 0.9.42])
1010 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
1011 #include "$native_srcdir/src/include/platform.h"
1012 #include <microhttpd.h>
1013 #if (MHD_VERSION < 0x0094200)
1014 #error needs at least version 0.9.42
1016 int main () { return 0; }
1020 [AC_MSG_RESULT(failed)])]),
1021 [],[#include "$native_srcdir/src/include/platform.h"
1022 #include <microhttpd.h>]),,
1023 [#include "$native_srcdir/src/include/platform.h"])
1027 [AC_MSG_RESULT([--with-microhttpd not specified])
1028 AC_CHECK_HEADERS([microhttpd.h],
1029 AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
1030 AC_CHECK_LIB([microhttpd], [MHD_get_fdset2],
1031 [AC_MSG_CHECKING([for libmicrohttpd >= 0.9.42])
1032 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
1033 #include "$native_srcdir/src/include/platform.h"
1034 #include <microhttpd.h>
1035 #if (MHD_VERSION < 0x0094200)
1036 #error needs at least version 0.9.42
1041 [AC_MSG_RESULT(failed)])]),
1042 [],[#include "$native_srcdir/src/include/platform.h"
1043 #include <microhttpd.h>]),,
1044 [#include "$native_srcdir/src/include/platform.h"])])
1045 AM_CONDITIONAL(HAVE_MHD, test x$lmhd = x1)
1046 AC_DEFINE_UNQUOTED([HAVE_MHD], $lmhd, [We have libmicrohttpd])
1048 AM_CONDITIONAL(HAVE_JSON, [test x$jansson = x1])
1053 # check for python & pexpect (used for some testcases only)
1054 AM_PATH_PYTHON([2.6],, [:])
1055 AM_CONDITIONAL([HAVE_PYTHON], [test "$PYTHON" != :])
1058 AM_GNU_GETTEXT([external])
1059 AM_GNU_GETTEXT_VERSION([0.18.1])
1061 # Checks for standard typedefs, structures, and compiler characteristics.
1070 AC_CHECK_MEMBER([struct sockaddr_in.sin_len],
1071 [ AC_DEFINE(HAVE_SOCKADDR_IN_SIN_LEN, 1, [Do we have sockaddr_in.sin_len?])
1075 #include <sys/types.h>
1076 #include <sys/socket.h>
1077 #include <netinet/in.h>
1080 AC_CHECK_MEMBER([struct sockaddr_un.sun_len],
1081 [ AC_DEFINE(HAVE_SOCKADDR_UN_SUN_LEN, 1, [Do we have sockaddr_un.sun_len?])
1085 #include <sys/types.h>
1086 #include <sys/socket.h>
1092 # Checks for library functions.
1093 AC_FUNC_CLOSEDIR_VOID
1095 AC_PROG_GCC_TRADITIONAL
1097 AC_FUNC_SELECT_ARGTYPES
1107 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])
1113 GN_LIBINTL="$LTLIBINTL"
1114 AC_ARG_ENABLE(framework, [ --enable-framework enable Mac OS X framework build helpers],enable_framework_build=$enableval)
1115 AM_CONDITIONAL(WANT_FRAMEWORK, test x$enable_framework_build = xyes)
1116 if test x$enable_framework_build = xyes
1118 AC_DEFINE([FRAMEWORK_BUILD], 1, [Build a Mac OS X Framework])
1119 GN_INTLINCL='-I$(top_srcdir)/src/intlemu'
1120 GN_LIBINTL='$(top_builddir)/src/intlemu/libintlemu.la -framework CoreFoundation'
1121 AC_LIB_APPENDTOVAR([CPPFLAGS], [$GN_INTLINCL])
1124 GN_LIB_LDFLAGS="-export-dynamic -no-undefined"
1125 GN_PLUGIN_LDFLAGS="-export-dynamic -avoid-version -module -no-undefined"
1127 AC_SUBST(GN_LIB_LDFLAGS)
1128 AC_SUBST(GN_PLUGIN_LDFLAGS)
1129 AC_SUBST(GN_INTLINCL)
1130 AC_SUBST(GN_LIBINTL)
1135 AC_SUBST(EXT_LIB_PATH)
1140 AC_SUBST(EXT_LIB_PATH)
1144 AC_MSG_CHECKING(for sudo)
1146 [ --with-sudo=PATH path to sudo binary (or just yes)],
1147 [AC_MSG_RESULT("$with_sudo")
1156 SUDO_BINARY=$with_sudo
1160 [AC_MSG_RESULT([no])])
1161 AC_SUBST(SUDO_BINARY)
1162 AM_CONDITIONAL([HAVE_SUDO], [test "x$SUDO_BINARY" != "x" -o -w /])
1165 # test for gnunetdns group name
1166 GNUNETDNS_GROUP=gnunetdns
1167 AC_MSG_CHECKING(for gnunetdns group name)
1168 AC_ARG_WITH(gnunetdns,
1169 [ --with-gnunetdns=GRPNAME name for gnunetdns group],
1170 [AC_MSG_RESULT("$with_gnunetdns")
1171 case $with_gnunetdns in
1173 GNUNETDNS_GROUP=gnunet
1176 GNUNETDNS_GROUP=gnunetdns
1179 GNUNETDNS_GROUP=$with_gnunetdns
1183 [AC_MSG_RESULT([gnunetdns])])
1184 AC_SUBST(GNUNETDNS_GROUP)
1191 AC_MSG_CHECKING(for gnutls)
1193 [ --with-gnutls=PFX base of gnutls installation],
1194 [AC_MSG_RESULT([$with_gnutls])
1195 case $with_gnutls in
1199 AC_CHECK_HEADERS([gnutls/abstract.h],
1200 AC_CHECK_LIB([gnutls], [gnutls_priority_set],
1202 AC_CHECK_HEADERS([gnutls/dane.h],
1203 AC_CHECK_LIB([gnutls-dane], [dane_verify_crt_raw],
1207 LDFLAGS="-L$with_gnutls/lib $LDFLAGS"
1208 CPPFLAGS="-I$with_gnutls/include $CPPFLAGS"
1209 AC_CHECK_HEADERS([gnutls/abstract.h],
1210 AC_CHECK_LIB([gnutls], [gnutls_priority_set],
1211 EXT_LIB_PATH="-L$with_gnutls/lib $EXT_LIB_PATH"
1213 AC_CHECK_HEADERS([gnutls/dane.h],
1214 AC_CHECK_LIB([gnutls-dane], [dane_verify_crt_raw],
1219 [AC_MSG_RESULT([--with-gnutls not specified])
1220 AC_CHECK_HEADERS([gnutls/abstract.h],
1221 AC_CHECK_LIB([gnutls], [gnutls_priority_set],
1223 AC_CHECK_HEADERS([gnutls/dane.h],
1224 AC_CHECK_LIB([gnutls-dane], [dane_verify_crt_raw],
1227 AM_CONDITIONAL(HAVE_GNUTLS, test x$gnutls = xtrue)
1228 AC_DEFINE_UNQUOTED([HAVE_GNUTLS], $gnutls, [We have GnuTLS])
1229 AM_CONDITIONAL(HAVE_GNUTLS_DANE, test x$gnutls_dane = x1)
1230 AC_DEFINE_UNQUOTED([HAVE_GNUTLS_DANE], $gnutls_dane, [We have GnuTLS with DANE support])
1233 # Test if we are building for superMUC
1234 AC_MSG_CHECKING(if GNUnet is being configured to run on the SuperMUC)
1235 AC_ARG_ENABLE([supermuc],
1236 [AS_HELP_STRING([--enable-supermuc],
1237 [build GNUnet with support to run on the SuperMUC (default is NO)])],
1238 [if test "x$enable_supermuc" = "xno"
1245 enable_supermuc=no])
1246 AC_MSG_RESULT($enable_SUPERMUC)
1247 AM_CONDITIONAL([ENABLE_SUPERMUC], [test "x$supermuc" = "x1"])
1248 AC_DEFINE_UNQUOTED([ENABLE_SUPERMUC], [$supermuc], [Build with support for SuperMUC])
1250 # Check if NSE has to send timestamp information to testbed logger for
1251 # generating histogram of messages received
1252 AC_MSG_CHECKING(if NSE has to send timestamp information to testbed logger)
1253 AC_ARG_ENABLE([nse-histogram],
1254 [AS_HELP_STRING([--enable-nse-histogram],
1255 [have NSE send timestamp information to testbed logger for generating
1256 histogram of received messages. NOT useful for production (default is
1258 [if test "x$enableval" = "xno"
1265 enable_nse_histogram=no])
1266 AC_MSG_RESULT($enable_nse_histogram)
1267 AM_CONDITIONAL([ENABLE_NSE_HISTOGRAM], [test "x$nse_histogram" = "x1"])
1268 AC_DEFINE_UNQUOTED([ENABLE_NSE_HISTOGRAM], [$nse_histogram],
1269 [have NSE send timestamp information to testbed logger])
1271 # should 'make check' run tests?
1272 AC_MSG_CHECKING(whether to run tests)
1273 AC_ARG_ENABLE([testruns],
1274 [AS_HELP_STRING([--disable-testruns], [disable running tests on make check (default is YES)])],
1275 [enable_tests_run=${enableval}],
1276 [enable_tests_run=yes])
1277 AC_MSG_RESULT($enable_test_run)
1278 AM_CONDITIONAL([ENABLE_TEST_RUN], [test "x$enable_tests_run" = "xyes"])
1281 # should monkey be used when running (certain) services?
1282 AC_MSG_CHECKING(whether to run with monkey)
1283 AC_ARG_ENABLE([monkey],
1284 [AS_HELP_STRING([--enable-monkey], [enable running with monkey])],
1285 [enable_monkey=${enableval}],
1287 AC_MSG_RESULT($enable_monkey)
1288 AM_CONDITIONAL([ENABLE_MONKEY], [test "x$enable_monkey" = "xyes"])
1289 if test "x$enable_monkey" = "xyes"
1291 MONKEYPREFIX="pathologist -d $(eval echo ${datarootdir}/gnunet/gnunet.sqlite) -p 30 --"
1295 AC_SUBST(MONKEYPREFIX)
1298 # should expensive tests be run?
1299 AC_MSG_CHECKING(whether to run expensive tests)
1300 AC_ARG_ENABLE([expensivetests],
1301 [AS_HELP_STRING([--enable-expensivetests], [enable running expensive testcases])],
1302 [enable_expensive=${enableval}],
1303 [enable_expensive=no])
1304 AC_MSG_RESULT($enable_expensive)
1305 AM_CONDITIONAL([HAVE_EXPENSIVE_TESTS], [test "x$enable_expensive" = "xyes"])
1307 # should ports be open for Java services?
1308 AC_MSG_CHECKING(whether to enable ports for gnunet-java)
1309 AC_ARG_ENABLE([javaports],
1310 [AS_HELP_STRING([--enable-javaports], [use non-zero ports for services with Java bindings (default is NO)])],
1311 [enable_java_ports=${enableval}],
1312 [enable_java_ports=no])
1313 AC_MSG_RESULT($enable_java_ports)
1314 if test "x$enable_java_ports" = "xyes"
1318 JAVAPORT="$UNIXONLY"
1322 # should benchmarks be run?
1323 AC_MSG_CHECKING(whether to run benchmarks during make check)
1324 AC_ARG_ENABLE([benchmarks],
1325 [AS_HELP_STRING([--enable-benchmarks], [enable running benchmarks during make check])],
1326 [enable_benchmarks=${enableval}],
1327 [enable_benchmarks=no])
1328 AC_MSG_RESULT($enable_benchmarks)
1329 AM_CONDITIONAL([HAVE_BENCHMARKS], [test "x$enable_benchmarks" = "xyes"])
1331 # should gnunet-testing be compiled
1332 AC_MSG_CHECKING(wether to compile gnunet-testing)
1333 AC_ARG_ENABLE([testing],
1334 [AS_HELP_STRING([--disable-testing], [do not build gnunet-testing])],
1335 [enable_testing=${enableval}],
1336 [enable_testing=yes])
1337 AC_MSG_RESULT($enable_testing)
1338 AM_CONDITIONAL([HAVE_TESTING], [test "x$enable_testing" = "xyes"])
1340 # should experimental code be compiled (code that may not yet compile)?
1341 AC_MSG_CHECKING(whether to compile experimental code)
1342 AC_ARG_ENABLE([experimental],
1343 [AS_HELP_STRING([--enable-experimental], [enable compiling experimental code])],
1344 [enable_experimental=${enableval}],
1345 [enable_experimental=no])
1346 AC_MSG_RESULT($enable_experimental)
1347 AM_CONDITIONAL([HAVE_EXPERIMENTAL], [test "x$enable_experimental" = "xyes"])
1349 # should malicious code be compiled (should only be used for testing)?
1350 AC_MSG_CHECKING(whether to compile malicious code)
1351 AC_ARG_ENABLE([malicious],
1352 [AS_HELP_STRING([--enable-malicious], [enable compiling malicious code])],
1353 [if test "x$enableval" = "xno"
1360 enable_malicious=no])
1361 AC_MSG_RESULT($enable_malicious)
1362 AM_CONDITIONAL([ENABLE_MALICIOUS], [test 1=$malicious])
1363 AC_DEFINE_UNQUOTED([ENABLE_MALICIOUS], [$malicious],
1364 [enable compilation of malicious code])
1366 # should services be started by default when a peer starts? Some services may
1367 # choose to never start by default and it is upto the service/module developer to
1368 # decide it by having "AUTOSTART = NO" instead of "AUTOSTART = @AUTOSTART@" in
1369 # the service/module's conf.in file.
1371 AC_MSG_CHECKING(whether to auto-start peer's services by default)
1372 AC_ARG_ENABLE([autostart],
1373 [AS_HELP_STRING([--disable-autostart], [do not start peer's services by default])],
1374 [enable_autostart=${enableval}
1375 if test "x$enable_autostart" == "xno"
1380 [enable_autostart=yes])
1381 AC_MSG_RESULT($enable_autostart)
1382 #AM_CONDITIONAL([HAVE_AUTOSTART], [test "x$enable_autostart" = "xyes"])
1385 # should memory statistics be kept (very expensive CPU-wise!)
1386 AC_MSG_CHECKING(whether to create expensive statistics on memory use)
1387 AC_ARG_ENABLE([heapstats],
1388 [AS_HELP_STRING([--enable-heapstats], [enable expensive heap statistics])],
1389 [enable_heapstats=1],
1390 [enable_heapstats=0])
1391 AC_MSG_RESULT($enable_heapstats)
1392 AC_DEFINE_UNQUOTED([ENABLE_HEAP_STATISTICS],$enable_heapstats,[enable expensive heap statistics])
1394 # should code be enabled that works around missing OS functionality on Windows?
1395 # used for test cases
1396 if test $build_target = "mingw"
1402 [#include <ws2tcpip.h>
1404 int s = socket (0, 0, 0);])
1406 AC_DEFINE_UNQUOTED([HAVE_SOCKET],1,[Define this if socket() is available])
1408 AC_DEFINE_UNQUOTED([HAVE_SOCKET],0,[Define this if socket() is available])
1413 [#include <ws2tcpip.h>
1415 int s = select (0, NULL, NULL, NULL, NULL);])
1417 AC_DEFINE_UNQUOTED([HAVE_SELECT],1,[Define this if select() is available])
1419 AC_DEFINE_UNQUOTED([HAVE_SELECT],0,[Define this if select() is available])
1424 [#include <ws2tcpip.h>
1427 char *s = inet_ntoa (i);])
1429 AC_DEFINE_UNQUOTED([HAVE_INET_NTOA],1,[Define this if inet_ntoa() is available])
1431 AC_DEFINE_UNQUOTED([HAVE_INET_NTOA],0,[Define this if inet_ntoa() is available])
1436 [#include <ws2tcpip.h>
1438 int s = getnameinfo (NULL, 0, NULL, 0, NULL, 0, 0);])
1440 AC_DEFINE_UNQUOTED([HAVE_GETNAMEINFO],1,[Define this if getnameinfo() is available])
1442 AC_DEFINE_UNQUOTED([HAVE_GETNAMEINFO],0,[Define this if getnameinfo() is available])
1447 [#include <ws2tcpip.h>
1449 int s = gethostname (NULL, 0);])
1451 AC_DEFINE_UNQUOTED([HAVE_GETHOSTNAME],1,[Define this if gethostname() is available])
1453 AC_DEFINE_UNQUOTED([HAVE_GETHOSTNAME],0,[Define this if gethostname() is available])
1458 [#include <ws2tcpip.h>
1460 void *s = gethostbyname (NULL);])
1462 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYNAME],1,[Define this if gethostbyname() is available])
1464 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYNAME],0,[Define this if gethostbyname() is available])
1469 [#include <ws2tcpip.h>
1471 void *s = gethostbyaddr (NULL, 0, 0);])
1473 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYADDR],1,[Define this if gethostbyaddr() is available])
1475 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYADDR],0,[Define this if gethostbyaddr() is available])
1480 [#include <ws2tcpip.h>
1482 int s = getaddrinfo (NULL, NULL, NULL, NULL);])
1484 AC_DEFINE_UNQUOTED([HAVE_GETADDRINFO],1,[Define this if getaddrinfo() is available])
1486 AC_DEFINE_UNQUOTED([HAVE_GETADDRINFO],1,[Define this if getaddrinfo() is available])
1490 AC_MSG_CHECKING(whether to enable windows workarounds)
1491 AC_ARG_ENABLE([windows_workarounds],
1492 [AS_HELP_STRING([--enable-windows_workarounds], [enable workarounds used on Windows (only useful for test cases)])],
1493 [enable_workarounds=${enableval}],
1494 [enable_workarounds=no])
1495 AC_MSG_RESULT($enable_workarounds)
1496 if test x$enable_windows_workarounds = "xyes"
1503 AC_DEFINE_UNQUOTED([ENABLE_WINDOWS_WORKAROUNDS], $workarounds, [enable workarounds used on Windows (only useful for test cases)])
1506 AC_MSG_CHECKING(whether to compile with support for code coverage analysis)
1507 AC_ARG_ENABLE([coverage],
1508 AS_HELP_STRING([--enable-coverage],
1509 [compile the library with code coverage support]),
1510 [use_gcov=${enableval}],
1512 AC_MSG_RESULT($use_gcov)
1513 AM_CONDITIONAL([USE_COVERAGE], [test "x$use_gcov" = "xyes"])
1517 AC_PATH_PROG(svnversioncommand, svnversion)
1518 AC_PATH_PROG(gitcommand, git)
1519 AC_MSG_CHECKING(for source being under a VCS)
1522 AS_IF([test ! "X$svnversioncommand" = "X"],
1524 svn_version=$(cd $srcdir ; $svnversioncommand -n 2>/dev/null)
1526 AS_IF([test ! "X$gitcommand" = "X"],
1528 gitsvn_version=$(cd $srcdir ; git log -1 2>/dev/null | grep "git-svn-id" | sed -e 's/.*@\([[0-9]]\+\) .*/\1/')
1530 AS_IF([test "X$svn_version" = "X" -o "X$svn_version" = "Xexported" -o "X$svn_version" = "XUnversioned directory"],
1532 AS_IF([test "X$gitsvn_version" = "X"],
1535 vcs_version="\"release\""
1538 vcs_name="yes, git-svn"
1539 vcs_version="\"svn-r$gitsvn_version\""
1544 vcs_version="\"svn-r$svn_version\""
1546 AC_MSG_RESULT($vcs_name)
1548 AC_MSG_CHECKING(VCS version)
1549 AC_MSG_RESULT($vcs_version)
1550 AC_DEFINE_UNQUOTED(VCS_VERSION, [$vcs_version], [VCS revision/hash or tarball version])
1557 doc/doxygen/Makefile
1558 doc/documentation/Makefile
1566 src/ats-tool/Makefile
1567 src/ats-tests/Makefile
1568 src/auction/Makefile
1571 src/cadet/cadet.conf
1574 src/consensus/Makefile
1575 src/consensus/consensus.conf
1576 src/conversation/Makefile
1577 src/conversation/conversation.conf
1579 src/datacache/Makefile
1580 src/datastore/Makefile
1581 src/datastore/datastore.conf
1587 src/fragmentation/Makefile
1592 src/gns/nss/Makefile
1593 src/gnsrecord/Makefile
1595 src/identity/Makefile
1596 src/identity/identity.conf
1597 src/credential/Makefile
1598 src/credential/credential.conf
1599 src/include/Makefile
1600 src/integration-tests/Makefile
1602 src/jsonapi/Makefile
1603 src/hostlist/Makefile
1604 src/multicast/Makefile
1605 src/multicast/multicast.conf
1608 src/namecache/Makefile
1609 src/namecache/namecache.conf
1610 src/namestore/Makefile
1611 src/namestore/namestore.conf
1614 src/nat-auto/Makefile
1615 src/nat-auto/nat-auto.conf
1618 src/peerinfo/Makefile
1619 src/peerinfo/peerinfo.conf
1620 src/peerinfo-tool/Makefile
1621 src/peerstore/Makefile
1622 src/peerstore/peerstore.conf
1624 src/psycutil/Makefile
1627 src/psycstore/Makefile
1628 src/psycstore/psycstore.conf
1631 src/regex/regex.conf
1632 src/revocation/Makefile
1633 src/revocation/revocation.conf
1636 src/secretsharing/Makefile
1637 src/secretsharing/secretsharing.conf
1638 src/scalarproduct/Makefile
1639 src/scalarproduct/scalarproduct.conf
1643 src/social/social.conf
1645 src/statistics/Makefile
1646 src/statistics/statistics.conf
1647 src/template/Makefile
1648 src/testbed/Makefile
1649 src/testbed/testbed.conf
1650 src/testbed-logger/Makefile
1651 src/testbed-logger/testbed-logger.conf
1652 src/testing/Makefile
1653 src/topology/Makefile
1654 src/transport/Makefile
1655 src/transport/transport.conf
1658 src/util/resolver.conf
1661 src/zonemaster/Makefile
1662 src/zonemaster/zonemaster.conf
1665 src/identity-attribute/Makefile
1666 src/identity-provider/Makefile
1668 pkgconfig/gnunetarm.pc
1669 pkgconfig/gnunetats.pc
1670 pkgconfig/gnunetblock.pc
1671 pkgconfig/gnunetcadet.pc
1672 pkgconfig/gnunetconsensus.pc
1673 pkgconfig/gnunetconversation.pc
1674 pkgconfig/gnunetcore.pc
1675 pkgconfig/gnunetdatacache.pc
1676 pkgconfig/gnunetdatastore.pc
1677 pkgconfig/gnunetdht.pc
1678 pkgconfig/gnunetdns.pc
1679 pkgconfig/gnunetdnsparser.pc
1680 pkgconfig/gnunetdnsstub.pc
1681 pkgconfig/gnunetdv.pc
1682 pkgconfig/gnunetenv.pc
1683 pkgconfig/gnunetfragmentation.pc
1684 pkgconfig/gnunetfs.pc
1685 pkgconfig/gnunetgns.pc
1686 pkgconfig/gnunethello.pc
1687 pkgconfig/gnunetidentity.pc
1688 pkgconfig/gnunetmicrophone.pc
1689 pkgconfig/gnunetmulticast.pc
1690 pkgconfig/gnunetmysql.pc
1691 pkgconfig/gnunetnamestore.pc
1692 pkgconfig/gnunetnat.pc
1693 pkgconfig/gnunetnse.pc
1694 pkgconfig/gnunetpeerinfo.pc
1695 pkgconfig/gnunetpq.pc
1696 pkgconfig/gnunetpsyc.pc
1697 pkgconfig/gnunetpsycstore.pc
1698 pkgconfig/gnunetregex.pc
1699 pkgconfig/gnunetrevocation.pc
1700 pkgconfig/gnunetrps.pc
1701 pkgconfig/gnunetscalarproduct.pc
1702 pkgconfig/gnunetset.pc
1703 pkgconfig/gnunetsocial.pc
1704 pkgconfig/gnunetspeaker.pc
1705 pkgconfig/gnunetstatistics.pc
1706 pkgconfig/gnunettestbed.pc
1707 pkgconfig/gnunettesting.pc
1708 pkgconfig/gnunettransport.pc
1709 pkgconfig/gnunettun.pc
1710 pkgconfig/gnunetutil.pc
1711 pkgconfig/gnunetvpn.pc
1717 # warn user if mysql found but not used due to version
1718 if test "$mysqlfail" = "true"
1720 AC_MSG_NOTICE([WARNING: MySQL found, but too old. MySQL support will not be compiled.])
1724 if test "x$sqlite" = "x0"
1726 AC_MSG_ERROR([ERROR: sqlite3 not found, but sqlite3 is required.])
1730 if test "$gnurl" = "0"
1732 if test "x$curl" = "xfalse"
1734 AC_MSG_NOTICE([WARNING: libgnurl not found. http client support will not be compiled.])
1735 AC_MSG_WARN([ERROR: libgnurl not found. hostlist daemon will not be compiled, and you probably WANT the hostlist daemon])
1737 AC_MSG_NOTICE([WARNING: libgnurl not found, trying to use libcurl-gnutls instead.])
1743 if test "x$bluetooth" = "x0"
1745 AC_MSG_NOTICE([WARNING: bluetooth library not found. bluetooth support will not be compiled.])
1749 if test "x$jansson" = "x0"
1751 AC_MSG_NOTICE([WARNING: jansson library not found. json support will not be compiled.])
1755 if test x$gnutls != xtrue
1757 AC_MSG_NOTICE([WARNING: GnuTLS not found, gnunet-gns-proxy will not be built])
1759 if test "x$gnutls_dane" != "x1"
1761 AC_MSG_NOTICE([WARNING: GnuTLS has no DANE support, DANE validation will not be possible])
1766 if test "x$enable_java_ports" = "xyes"
1768 AC_MSG_NOTICE([NOTICE: Opening ports for gnunet-java bindings by default.])
1772 if test "x$lmhd" != "x1"
1774 AC_MSG_NOTICE([WARNING: libmicrohttpd not found, http transport will not be installed.])
1778 if test "x$conversation_backend" = "xnone"
1780 if test "x$pulse" != "x1"
1782 AC_MSG_NOTICE([WARNING: libpulse(audio) not found, conversation will not be built.])
1784 if test "x$opus" != "x1"
1786 AC_MSG_NOTICE([WARNING: libopus not found, conversation will not be built.])
1788 if test "x$gst" != "x1"
1790 AC_MSG_NOTICE([WARNING: GStreamer not found, conversation will not be built.])
1794 if test "$extractor" != 1
1796 AC_MSG_WARN([ERROR: libextractor not found, but various file-sharing functions require it])
1799 AC_MSG_NOTICE([NOTICE: Database support is set to MySQL: $mysql, SQLite: $sqlite, Postgres: $postgres])
1801 if test "$enable_framework_build" = "yes"
1803 AC_MSG_NOTICE([Mac OS X framework build enabled.])
1806 AC_MSG_NOTICE([********************************************
1807 Please make sure NOW that you have created a user and group 'gnunet'
1808 and additionally a group 'gnunetdns'. On Debian and Ubuntu GNU/Linux, type:
1810 adduser --system --group --disabled-login --home /var/lib/gnunet gnunet
1812 Make sure that '/var/lib/gnunet' is owned (and writable) by user
1813 'gnunet'. Then, you can compile GNUnet with
1816 After that, run (if necessary as 'root')
1818 to install everything.
1820 Each GNUnet user should be added to the 'gnunet' group (may
1821 require fresh login to come into effect):
1822 adduser USERNAME gnunet
1823 (run the above command as root once for each of your users, replacing
1824 "USERNAME" with the respective login names). If you have a global IP
1825 address, no further configuration is required.
1827 For more detailed setup instructions, see https://gnunet.org/installation
1829 Optionally, download and compile gnunet-gtk to get a GUI for
1830 file-sharing and configuration. This is particularly recommended
1831 if your network setup is non-trivial, as gnunet-setup can be
1832 used to test in the GUI if your network configuration is working.
1833 gnunet-setup should be run as the "gnunet" user under X. As it
1834 does very little with the network, running it as "root" is likely
1835 also harmless. You can also run it as a normal user, but then
1836 you have to copy ~/.gnunet/gnunet.conf" over to the "gnunet" user's
1837 home directory in the end.
1839 Once you have configured your peer, run (as the 'gnunet' user)
1841 to start the peer. You can then run the various GNUnet-tools as
1842 your "normal" user (who should only be in the group 'gnunet').
1843 ********************************************])