1 # This file is part of GNUnet.
2 # (C) 2001--2017 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.10.1], [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)
453 [glib-2.0 gobject-2.0 gstreamer-1.0 gstreamer-app-1.0 gstreamer-audio-1.0],
459 AC_MSG_RESULT(not found)
463 if test "x$pulse" != "x1" -o "x$opus" != "x1" -o "x$ogg" != "x1"
465 if test "x$gst" != "x1"
467 conversation_backend=none
468 AM_CONDITIONAL(BUILD_PULSE_HELPERS, false)
469 AM_CONDITIONAL(BUILD_GST_HELPERS, false)
470 AM_CONDITIONAL(BUILD_EXPERIMENTAL_HELPERS, false)
472 conversation_backend=gst
473 AM_CONDITIONAL(BUILD_PULSE_HELPERS, false)
474 AM_CONDITIONAL(BUILD_GST_HELPERS, true)
475 AM_CONDITIONAL(BUILD_EXPERIMENTAL_HELPERS, false)
479 conversation_backend=pulse
480 AM_CONDITIONAL(BUILD_PULSE_HELPERS, true)
481 AM_CONDITIONAL(BUILD_GST_HELPERS, false)
482 AM_CONDITIONAL(BUILD_EXPERIMENTAL_HELPERS, false)
486 LIBGNURL_CHECK_CONFIG(,7.34.0,gnurl=1,gnurl=0)
489 AM_CONDITIONAL(HAVE_LIBGNURL, true)
490 AC_DEFINE([HAVE_LIBGNURL],[1],[Have libgnurl])
492 AM_CONDITIONAL(HAVE_LIBGNURL, false)
493 AC_DEFINE([HAVE_LIBGNURL],[0],[Lacking libgnurl])
496 SAVE_CPPFLAGS=$CPPFLAGS
497 CPPFLAGS="$LIBGNURL_CPPFLAGS $LIBCURL_CPPFLAGS $CPPFLAGS"
498 LIBS="$LIBGNURL $LIBCURL $LIBS"
501 LIBCURL_CHECK_CONFIG(,7.34.0,[curl=true],[curl=false])
502 if test "x$curl" = xtrue
505 AC_CHECK_HEADERS([curl/curl.h],
506 AC_CHECK_DECLS(CURLINFO_TLS_SESSION,[curl=true],[curl=false],[[#include <curl/curl.h>]]),
508 AC_CHECK_HEADERS([gnurl/curl.h],
509 AC_CHECK_DECLS(CURLINFO_TLS_SESSION,[curl=true],,[[#include <gnurl/curl.h>]]))
510 # need libcurl-gnutls.so, everything else is not acceptable
511 AC_CHECK_LIB([curl-gnutls],[curl_easy_getinfo],,[curl=false])
512 # cURL must support CURLINFO_TLS_SESSION, version >= 7.34
515 # Check for curl/curl.h and gnurl/curl.h so we can use #ifdef
516 # HAVE_CURL_CURL_H later (the above LIBCURL_CHECK_CONFIG accepted
517 # *either* header set).
518 AC_CHECK_HEADERS([curl/curl.h],,
520 AC_CHECK_HEADERS([gnurl/curl.h],,
525 if test x$curl = xfalse
527 AM_CONDITIONAL(HAVE_LIBCURL, false)
530 AC_MSG_WARN([ERROR: GNUnet requires libcurl-gnutls or gnurl >= 7.34])
533 AM_CONDITIONAL(HAVE_LIBCURL, true)
534 AC_DEFINE([HAVE_LIBCURL],[1],[Have CURL])
538 # restore LIBS & CPPFLAGS
540 CPPFLAGS=$SAVE_CPPFLAGS
542 AC_CHECK_HEADERS([glpk.h],[glpk=true],[gplk=false])
543 # GLPK must support glpk_init_env, version >= 4.43
544 AC_CHECK_LIB([glpk],[glp_init_env],,[gplk=false])
545 # GLPK must support atm MLP presolving, version >= 4.32
546 AC_CHECK_MEMBERS(glp_iocp.presolve,,[gplk=false],[[#include <glpk.h>]])
547 if test x$gplk = xfalse
549 AM_CONDITIONAL(HAVE_LIBGLPK, false)
550 AC_MSG_WARN([ERROR: GNUnet requires GLPK >= 4.32])
552 AM_CONDITIONAL(HAVE_LIBGLPK, true)
553 AC_DEFINE([HAVE_LIBGLPK],[1],[Have GLPK])
557 AC_CHECK_HEADERS([nss.h],[nss=true],[nss=false])
558 if test x$nss = xfalse
560 AM_CONDITIONAL(HAVE_GLIBCNSS, false)
561 AC_MSG_WARN([ERROR: No GNU libc nss header, will not build NSS plugin])
563 AM_CONDITIONAL(HAVE_GLIBCNSS, true)
568 # test for kvm and kstat (for CPU stats under BSD/Solaris)
569 AC_CHECK_LIB([kvm],[kvm_open])
570 AC_CHECK_LIB([kstat],[kstat_open])
573 # should the build process be restricted to only building
575 AC_MSG_CHECKING(whether to build documentation ONLY)
576 AC_ARG_ENABLE([documentation],
577 [AS_HELP_STRING([--enable-documentation], [only build the documentation])],
578 [doc_only=${enableval}],
580 AC_MSG_RESULT($doc_only)
581 if test "x$doc_only" = "xyes"
583 AM_CONDITIONAL([DOC_ONLY],true)
584 AC_DEFINE([DOC_ONLY],[1],[Building the documentation])
586 AM_CONDITIONAL([DOC_ONLY],false)
587 AC_DEFINE([DOC_ONLY],[0],[Canonical compilation])
590 # should the build process be restricted to the code required
591 # for GNU Taler wallets?
592 AC_MSG_CHECKING(whether to compile GNU Taler Wallet library ONLY)
593 AC_ARG_ENABLE([taler-wallet],
594 [AS_HELP_STRING([--enable-taler-wallet], [only compile for Taler wallet])],
595 [taler_only=${enableval}],
597 AC_MSG_RESULT($taler_only)
598 if test "x$taler_only" = "xyes"
600 AM_CONDITIONAL([TALER_ONLY],true)
601 AC_DEFINE([TALER_WALLET_ONLY],[1],[Compiling for Taler wallet])
603 AM_CONDITIONAL([TALER_ONLY],false)
604 AC_DEFINE([TALER_WALLET_ONLY],[0],[Canonical compilation])
607 # test for libextractor
609 AC_MSG_CHECKING(for libextractor)
610 AC_ARG_WITH(extractor,
611 [ --with-extractor=PFX base of libextractor installation],
612 [AC_MSG_RESULT([$with_extractor])
613 case $with_extractor in
617 AC_CHECK_HEADERS(extractor.h,
618 AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
622 LDFLAGS="-L$with_extractor/lib $LDFLAGS"
623 CPPFLAGS="-I$with_extractor/include $CPPFLAGS"
624 AC_CHECK_HEADERS(extractor.h,
625 AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
626 EXT_LIB_PATH="-L$with_extractor/lib $EXT_LIB_PATH"
631 [AC_MSG_RESULT([--with-extractor not specified])
632 AC_CHECK_HEADERS(extractor.h,
633 AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
638 if test "$extractor" != 1
640 AM_CONDITIONAL(HAVE_LIBEXTRACTOR, false)
641 AC_DEFINE([HAVE_LIBEXTRACTOR],[0],[Lacking libextractor])
643 AM_CONDITIONAL(HAVE_LIBEXTRACTOR, true)
644 AC_DEFINE([HAVE_LIBEXTRACTOR],[1],[Have libextractor])
648 if test "$taler_only" != yes
651 # Check for libltdl header (#2999)
653 AC_MSG_CHECKING(for libltdl)
655 [ --with-ltdl=PFX base of libltdl installation],
656 [AC_MSG_RESULT([$with_ltdl])
661 AC_CHECK_HEADERS(ltdl.h,
662 AC_CHECK_LIB([ltdl], [lt_dlopenext],
666 LDFLAGS="-L$with_ltdl/lib $LDFLAGS"
667 CPPFLAGS="-I$with_ltdl/include $CPPFLAGS"
668 AC_CHECK_HEADERS(ltdl.h,
669 AC_CHECK_LIB([ltdl], [lt_dlopenext],
670 EXT_LIB_PATH="-L$with_ltdl/lib $EXT_LIB_PATH"
675 [AC_MSG_RESULT([--with-ltdl not specified])
676 AC_CHECK_HEADERS(ltdl.h,
677 AC_CHECK_LIB([ltdl], [lt_dlopenext],
681 AC_MSG_RESULT([libltdl found])
683 AC_MSG_ERROR([GNUnet requires libltdl (from GNU libtool), try installing libltdl-dev])
690 AC_MSG_CHECKING([if Libidn can be used])
691 AC_ARG_WITH(libidn, AC_HELP_STRING([--with-libidn=[DIR]],
692 [Support IDN (needs GNU Libidn)]),
693 libidn=$withval, libidn=yes)
694 if test "$libidn" != "no"; then
695 if test "$libidn" != "yes"; then
696 LDFLAGS="${LDFLAGS} -L$libidn/lib"
697 CPPFLAGS="${CPPFLAGS} -I$libidn/include"
701 AC_CHECK_HEADER(idna.h,
702 AC_CHECK_LIB(idn, stringprep_check_version,
703 [libidn=yes LIBS="${LIBS} -lidn"], []), [])
704 if test "$libidn" != "yes"; then
705 AC_MSG_FAILURE([GNUnet requires libidn.
706 libidn-1.13 should be sufficient, newer versions work too.])
708 AC_MSG_RESULT($libidn)
712 SAVE_LDFLAGS=$LDFLAGS
713 SAVE_CPPFLAGS=$CPPFLAGS
715 [ --with-zlib[[=DIR]] use libz in DIR],
716 [AS_IF([test "$withval" = "no"],
717 [AC_MSG_ERROR([GNUnet requires zlib])],
718 [test "$withval" != "yes"],
721 CPPFLAGS="${CPPFLAGS} -I$withval/include"
722 LDFLAGS="${LDFLAGS} -L$withval/lib"
725 AC_CHECK_HEADER(zlib.h,
727 [AC_MSG_ERROR([GNUnet requires zlib])])
728 AC_CHECK_LIB(z, compress2,
730 AC_DEFINE([HAVE_ZLIB], [], [Have compression library])
731 if test "x${Z_DIR}" != "x"; then
732 Z_CFLAGS="-I${Z_DIR}/include"
733 Z_LIBS="-L${Z_DIR}/lib -lz"
737 [AC_MSG_ERROR([GNUnet requires zlib])])
741 if test "$enable_shared" = "no"
743 AC_MSG_ERROR([GNUnet only works with shared libraries. Sorry.])
757 # test for libunistring
759 if test $HAVE_LIBUNISTRING != yes; then
760 AC_MSG_ERROR([GNUnet requires libunistring])
762 # under emscripten, $gl_libunistring_hexversion is undefined
763 if test "$taler_only" != yes; then
764 if test "x$gl_libunistring_hexversion" = "x" || test "$gl_libunistring_hexversion" -le 2305; then
765 AC_MSG_ERROR([GNUnet requires libunistring >= 0.9.1.1])
768 AC_CHECK_HEADERS([unistr.h],,AC_MSG_ERROR([Compiling GNUnet requires unistr.h (from libunistring) to be installed]))
775 # Checks for standard header files.
779 # Check for headers that are ALWAYS required
780 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]))
784 # Checks for headers that are only required on some systems or opional (and where we do NOT abort if they are not there)
785 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])
787 # FreeBSD requires something more funky for netinet/in_systm.h and netinet/ip.h...
788 AC_CHECK_HEADERS([sys/types.h netinet/in_systm.h netinet/in.h netinet/ip.h],,,
789 [#ifdef HAVE_SYS_TYPES_H
790 #include <sys/types.h>
792 #ifdef HAVE_NETINET_IN_SYSTM_H
793 #include <netinet/in_systm.h>
795 #ifdef HAVE_NETINET_IN_H
796 #include <netinet/in.h>
800 SAVE_LDFLAGS=$LDFLAGS
801 SAVE_CPPFLAGS=$CPPFLAGS
805 AC_MSG_CHECKING(for SQLite)
807 [ --with-sqlite=PFX base of SQLite installation],
808 [AC_MSG_RESULT("$with_sqlite")
813 AC_CHECK_HEADERS(sqlite3.h,
817 LDFLAGS="-L$with_sqlite/lib $LDFLAGS"
818 CPPFLAGS="-I$with_sqlite/include $CPPFLAGS"
819 AC_CHECK_HEADERS(sqlite3.h,
820 EXT_LIB_PATH="-L$with_sqlite/lib $EXT_LIB_PATH"
821 SQLITE_LDFLAGS="-L$with_sqlite/lib"
822 SQLITE_CPPFLAGS="-I$with_sqlite/include"
824 LDFLAGS=$SAVE_LDFLAGS
825 CPPFLAGS=$SAVE_CPPFLAGS
829 [AC_MSG_RESULT([--with-sqlite not specified])
830 AC_CHECK_HEADERS(sqlite3.h, sqlite=true)])
831 AM_CONDITIONAL(HAVE_SQLITE, test x$sqlite = xtrue)
832 AC_SUBST(SQLITE_CPPFLAGS)
833 AC_SUBST(SQLITE_LDFLAGS)
835 LDFLAGS=$SAVE_LDFLAGS
836 CPPFLAGS=$SAVE_CPPFLAGS
840 # even running the check for postgres breaks emscripten ...
841 if test "$taler_only" != yes; then
842 AX_LIB_POSTGRESQL([9.5])
843 if test "$found_postgresql" = "yes"; then
844 CPPFLAGS="$CPPFLAGS $POSTGRESQL_CPPFLAGS"
845 AC_CHECK_HEADERS([libpq-fe.h],
849 AM_CONDITIONAL(HAVE_POSTGRESQL, test x$postgres = xtrue)
852 LDFLAGS=$SAVE_LDFLAGS
853 CPPFLAGS=$SAVE_CPPFLAGS
856 AC_CHECK_TYPES([sigset_t, off_t], [], [], [#include <sys/types.h>])
857 AC_CHECK_TYPES([size_t], [], [], [#include <stdio.h>])
859 if test "$build_target" = "mingw"
861 CYGWIN_MYSQL_MAGIC="#include <mysql/my_global.h>"
867 SAVE_LDFLAGS=$LDFLAGS
868 SAVE_CPPFLAGS=$CPPFLAGS
869 AC_MSG_CHECKING(for mysql)
871 [ --with-mysql=PFX base of MySQL installation],
872 [AC_MSG_RESULT([$with_mysql])
877 AC_CHECK_HEADERS(mysql/mysql.h,
878 AC_CHECK_LIB(mysqlclient, mysql_init,
880 mysql=true), [], [$CYGWIN_MYSQL_MAGIC])
883 LDFLAGS="-L$with_mysql/lib -L$with_mysql/lib/mysql $LDFLAGS $ZLIBS"
884 CPPFLAGS="-I$with_mysql/include $CPPFLAGS"
885 AC_CHECK_HEADERS(mysql/mysql.h,
886 AC_CHECK_LIB(mysqlclient, mysql_init,
887 MYSQL_LDFLAGS="-L$with_mysql/lib -L$with_mysql/lib/mysql"
888 MYSQL_CPPFLAGS="-I$with_mysql/include"
890 mysql=true), [], [$CYGWIN_MYSQL_MAGIC])
894 [AC_MSG_RESULT([--with-mysql not specified])
895 if test -d "/usr/lib64/mysql"; then
896 MYSQL_LIBDIR="/usr/lib64/mysql"
897 elif test -d "/usr/lib/mysql"; then
898 MYSQL_LIBDIR="/usr/lib/mysql"
900 MYSQL_LIBDIR="/usr/lib"
902 LDFLAGS="-L$MYSQL_LIBDIR $LDFLAGS $ZLIBS"
903 AC_CHECK_LIB(mysqlclient, mysql_init,
904 [AC_CHECK_HEADERS(mysql/mysql.h,
905 MYSQL_LDFLAGS="-L$MYSQL_LIBDIR"
908 , [], [$CYGWIN_MYSQL_MAGIC])])
911 AC_SUBST(MYSQL_LDFLAGS)
912 AC_SUBST(MYSQL_CPPFLAGS)
914 # additional version check for mysql
915 AC_ARG_ENABLE(mysql-version-check, [ --disable-mysql-version-check do not check MySQL version],, enable_mysql_version_check=yes)
916 if test "$mysql" = "true" -a "x$enable_mysql_version_check" = "xyes"
918 AC_MSG_CHECKING(mysql version)
919 AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
920 [[$CYGWIN_MYSQL_MAGIC
921 #include <mysql/mysql.h>]],
923 #if (MYSQL_VERSION_ID < 40100)
924 #error needs at least version >= 4.1
926 int main () { return 0; }
928 ],mysql=true,mysql=false)
929 if test "$mysql" = "false"
932 AC_MSG_RESULT([fail, >= 4.1 required])
937 AM_CONDITIONAL(HAVE_MYSQL, test x$mysql = xtrue)
938 AM_CONDITIONAL(HAVE_MYSQLE, test "0" = "1")
941 LDFLAGS=$SAVE_LDFLAGS
942 CPPFLAGS=$SAVE_CPPFLAGS
944 if test "$sqlite" = 0 -a "$mysql" = 0
946 AC_MSG_ERROR([GNUnet requires SQLite or MySQL])
951 AC_MSG_CHECKING([for libmicrohttpd])
952 AC_ARG_WITH(microhttpd,
953 [ --with-microhttpd=PFX base of libmicrohttpd installation],
954 [AC_MSG_RESULT([$with_microhttpd])
955 case $with_microhttpd in
959 AC_CHECK_HEADERS([microhttpd.h],
960 AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
961 AC_CHECK_LIB([microhttpd], [MHD_get_fdset2],
962 [AC_MSG_CHECKING([for libmicrohttpd >= 0.9.42])
963 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
964 #include "$native_srcdir/src/include/platform.h"
965 #include <microhttpd.h>
966 #if (MHD_VERSION < 0x0094200)
967 #error needs at least version 0.9.42
969 int main () { return 0; }
973 [AC_MSG_RESULT(failed)])]),
974 [],[#include "$native_srcdir/src/include/platform.h"
975 #include <microhttpd.h>]),,
976 [#include "$native_srcdir/src/include/platform.h"])
979 LDFLAGS="-L$with_microhttpd/lib $LDFLAGS"
980 CPPFLAGS="-I$with_microhttpd/include $CPPFLAGS"
981 AC_CHECK_HEADERS(microhttpd.h,
982 AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
983 AC_CHECK_LIB([microhttpd], [MHD_get_fdset2],
984 EXT_LIB_PATH="-L$with_microhttpd/lib $EXT_LIB_PATH"
985 [AC_MSG_CHECKING([for libmicrohttpd >= 0.9.42])
986 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
987 #include "$native_srcdir/src/include/platform.h"
988 #include <microhttpd.h>
989 #if (MHD_VERSION < 0x0094200)
990 #error needs at least version 0.9.42
992 int main () { return 0; }
996 [AC_MSG_RESULT(failed)])]),
997 [],[#include "$native_srcdir/src/include/platform.h"
998 #include <microhttpd.h>]),,
999 [#include "$native_srcdir/src/include/platform.h"])
1003 [AC_MSG_RESULT([--with-microhttpd not specified])
1004 AC_CHECK_HEADERS([microhttpd.h],
1005 AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
1006 AC_CHECK_LIB([microhttpd], [MHD_get_fdset2],
1007 [AC_MSG_CHECKING([for libmicrohttpd >= 0.9.42])
1008 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
1009 #include "$native_srcdir/src/include/platform.h"
1010 #include <microhttpd.h>
1011 #if (MHD_VERSION < 0x0094200)
1012 #error needs at least version 0.9.42
1017 [AC_MSG_RESULT(failed)])]),
1018 [],[#include "$native_srcdir/src/include/platform.h"
1019 #include <microhttpd.h>]),,
1020 [#include "$native_srcdir/src/include/platform.h"])])
1021 AM_CONDITIONAL(HAVE_MHD, test x$lmhd = x1)
1022 AC_DEFINE_UNQUOTED([HAVE_MHD], $lmhd, [We have libmicrohttpd])
1024 AM_CONDITIONAL(HAVE_JSON, [test x$jansson = x1])
1029 # check for python & pexpect (used for some testcases only)
1030 AM_PATH_PYTHON([2.6],, [:])
1031 AM_CONDITIONAL([HAVE_PYTHON], [test "$PYTHON" != :])
1034 AM_GNU_GETTEXT([external])
1035 AM_GNU_GETTEXT_VERSION([0.18.1])
1037 # Checks for standard typedefs, structures, and compiler characteristics.
1046 AC_CHECK_MEMBER([struct sockaddr_in.sin_len],
1047 [ AC_DEFINE(HAVE_SOCKADDR_IN_SIN_LEN, 1, [Do we have sockaddr_in.sin_len?])
1051 #include <sys/types.h>
1052 #include <sys/socket.h>
1053 #include <netinet/in.h>
1056 AC_CHECK_MEMBER([struct sockaddr_un.sun_len],
1057 [ AC_DEFINE(HAVE_SOCKADDR_UN_SUN_LEN, 1, [Do we have sockaddr_un.sun_len?])
1061 #include <sys/types.h>
1062 #include <sys/socket.h>
1068 # Checks for library functions.
1069 AC_FUNC_CLOSEDIR_VOID
1071 AC_PROG_GCC_TRADITIONAL
1073 AC_FUNC_SELECT_ARGTYPES
1083 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])
1089 GN_LIBINTL="$LTLIBINTL"
1090 AC_ARG_ENABLE(framework, [ --enable-framework enable Mac OS X framework build helpers],enable_framework_build=$enableval)
1091 AM_CONDITIONAL(WANT_FRAMEWORK, test x$enable_framework_build = xyes)
1092 if test x$enable_framework_build = xyes
1094 AC_DEFINE([FRAMEWORK_BUILD], 1, [Build a Mac OS X Framework])
1095 GN_INTLINCL='-I$(top_srcdir)/src/intlemu'
1096 GN_LIBINTL='$(top_builddir)/src/intlemu/libintlemu.la -framework CoreFoundation'
1097 AC_LIB_APPENDTOVAR([CPPFLAGS], [$GN_INTLINCL])
1100 GN_LIB_LDFLAGS="-export-dynamic -no-undefined"
1101 GN_PLUGIN_LDFLAGS="-export-dynamic -avoid-version -module -no-undefined"
1103 AC_SUBST(GN_LIB_LDFLAGS)
1104 AC_SUBST(GN_PLUGIN_LDFLAGS)
1105 AC_SUBST(GN_INTLINCL)
1106 AC_SUBST(GN_LIBINTL)
1111 AC_SUBST(EXT_LIB_PATH)
1116 AC_SUBST(EXT_LIB_PATH)
1120 AC_MSG_CHECKING(for sudo)
1122 [ --with-sudo=PATH path to sudo binary (or just yes)],
1123 [AC_MSG_RESULT("$with_sudo")
1132 SUDO_BINARY=$with_sudo
1136 [AC_MSG_RESULT([no])])
1137 AC_SUBST(SUDO_BINARY)
1138 AM_CONDITIONAL([HAVE_SUDO], [test "x$SUDO_BINARY" != "x" -o -w /])
1141 # test for gnunetdns group name
1142 GNUNETDNS_GROUP=gnunetdns
1143 AC_MSG_CHECKING(for gnunetdns group name)
1144 AC_ARG_WITH(gnunetdns,
1145 [ --with-gnunetdns=GRPNAME name for gnunetdns group],
1146 [AC_MSG_RESULT("$with_gnunetdns")
1147 case $with_gnunetdns in
1149 GNUNETDNS_GROUP=gnunet
1152 GNUNETDNS_GROUP=gnunetdns
1155 GNUNETDNS_GROUP=$with_gnunetdns
1159 [AC_MSG_RESULT([gnunetdns])])
1160 AC_SUBST(GNUNETDNS_GROUP)
1167 AC_MSG_CHECKING(for gnutls)
1169 [ --with-gnutls=PFX base of gnutls installation],
1170 [AC_MSG_RESULT([$with_gnutls])
1171 case $with_gnutls in
1175 AC_CHECK_HEADERS([gnutls/abstract.h],
1176 AC_CHECK_LIB([gnutls], [gnutls_priority_set],
1178 AC_CHECK_HEADERS([gnutls/dane.h],
1179 AC_CHECK_LIB([gnutls-dane], [dane_verify_crt_raw],
1183 LDFLAGS="-L$with_gnutls/lib $LDFLAGS"
1184 CPPFLAGS="-I$with_gnutls/include $CPPFLAGS"
1185 AC_CHECK_HEADERS([gnutls/abstract.h],
1186 AC_CHECK_LIB([gnutls], [gnutls_priority_set],
1187 EXT_LIB_PATH="-L$with_gnutls/lib $EXT_LIB_PATH"
1189 AC_CHECK_HEADERS([gnutls/dane.h],
1190 AC_CHECK_LIB([gnutls-dane], [dane_verify_crt_raw],
1195 [AC_MSG_RESULT([--with-gnutls not specified])
1196 AC_CHECK_HEADERS([gnutls/abstract.h],
1197 AC_CHECK_LIB([gnutls], [gnutls_priority_set],
1199 AC_CHECK_HEADERS([gnutls/dane.h],
1200 AC_CHECK_LIB([gnutls-dane], [dane_verify_crt_raw],
1203 AM_CONDITIONAL(HAVE_GNUTLS, test x$gnutls = xtrue)
1204 AC_DEFINE_UNQUOTED([HAVE_GNUTLS], $gnutls, [We have GnuTLS])
1205 AM_CONDITIONAL(HAVE_GNUTLS_DANE, test x$gnutls_dane = x1)
1206 AC_DEFINE_UNQUOTED([HAVE_GNUTLS_DANE], $gnutls_dane, [We have GnuTLS with DANE support])
1209 # Test if we are building for superMUC
1210 AC_MSG_CHECKING(if GNUnet is being configured to run on the SuperMUC)
1211 AC_ARG_ENABLE([supermuc],
1212 [AS_HELP_STRING([--enable-supermuc],
1213 [build GNUnet with support to run on the SuperMUC (default is NO)])],
1214 [if test "x$enable_supermuc" = "xno"
1221 enable_supermuc=no])
1222 AC_MSG_RESULT($enable_SUPERMUC)
1223 AM_CONDITIONAL([ENABLE_SUPERMUC], [test "x$supermuc" = "x1"])
1224 AC_DEFINE_UNQUOTED([ENABLE_SUPERMUC], [$supermuc], [Build with support for SuperMUC])
1226 # Check if NSE has to send timestamp information to testbed logger for
1227 # generating histogram of messages received
1228 AC_MSG_CHECKING(if NSE has to send timestamp information to testbed logger)
1229 AC_ARG_ENABLE([nse-histogram],
1230 [AS_HELP_STRING([--enable-nse-histogram],
1231 [have NSE send timestamp information to testbed logger for generating
1232 histogram of received messages. NOT useful for production (default is
1234 [if test "x$enableval" = "xno"
1241 enable_nse_histogram=no])
1242 AC_MSG_RESULT($enable_nse_histogram)
1243 AM_CONDITIONAL([ENABLE_NSE_HISTOGRAM], [test "x$nse_histogram" = "x1"])
1244 AC_DEFINE_UNQUOTED([ENABLE_NSE_HISTOGRAM], [$nse_histogram],
1245 [have NSE send timestamp information to testbed logger])
1247 # should 'make check' run tests?
1248 AC_MSG_CHECKING(whether to run tests)
1249 AC_ARG_ENABLE([testruns],
1250 [AS_HELP_STRING([--disable-testruns], [disable running tests on make check (default is YES)])],
1251 [enable_tests_run=${enableval}],
1252 [enable_tests_run=yes])
1253 AC_MSG_RESULT($enable_test_run)
1254 AM_CONDITIONAL([ENABLE_TEST_RUN], [test "x$enable_tests_run" = "xyes"])
1257 # should monkey be used when running (certain) services?
1258 AC_MSG_CHECKING(whether to run with monkey)
1259 AC_ARG_ENABLE([monkey],
1260 [AS_HELP_STRING([--enable-monkey], [enable running with monkey])],
1261 [enable_monkey=${enableval}],
1263 AC_MSG_RESULT($enable_monkey)
1264 AM_CONDITIONAL([ENABLE_MONKEY], [test "x$enable_monkey" = "xyes"])
1265 if test "x$enable_monkey" = "xyes"
1267 MONKEYPREFIX="pathologist -d $(eval echo ${datarootdir}/gnunet/gnunet.sqlite) -p 30 --"
1271 AC_SUBST(MONKEYPREFIX)
1274 # should expensive tests be run?
1275 AC_MSG_CHECKING(whether to run expensive tests)
1276 AC_ARG_ENABLE([expensivetests],
1277 [AS_HELP_STRING([--enable-expensivetests], [enable running expensive testcases])],
1278 [enable_expensive=${enableval}],
1279 [enable_expensive=no])
1280 AC_MSG_RESULT($enable_expensive)
1281 AM_CONDITIONAL([HAVE_EXPENSIVE_TESTS], [test "x$enable_expensive" = "xyes"])
1283 # should ports be open for Java services?
1284 AC_MSG_CHECKING(whether to enable ports for gnunet-java)
1285 AC_ARG_ENABLE([javaports],
1286 [AS_HELP_STRING([--enable-javaports], [use non-zero ports for services with Java bindings (default is NO)])],
1287 [enable_java_ports=${enableval}],
1288 [enable_java_ports=no])
1289 AC_MSG_RESULT($enable_java_ports)
1290 if test "x$enable_java_ports" = "xyes"
1294 JAVAPORT="$UNIXONLY"
1298 # should benchmarks be run?
1299 AC_MSG_CHECKING(whether to run benchmarks during make check)
1300 AC_ARG_ENABLE([benchmarks],
1301 [AS_HELP_STRING([--enable-benchmarks], [enable running benchmarks during make check])],
1302 [enable_benchmarks=${enableval}],
1303 [enable_benchmarks=no])
1304 AC_MSG_RESULT($enable_benchmarks)
1305 AM_CONDITIONAL([HAVE_BENCHMARKS], [test "x$enable_benchmarks" = "xyes"])
1307 # should gnunet-testing be compiled
1308 AC_MSG_CHECKING(wether to compile gnunet-testing)
1309 AC_ARG_ENABLE([testing],
1310 [AS_HELP_STRING([--disable-testing], [do not build gnunet-testing])],
1311 [enable_testing=${enableval}],
1312 [enable_testing=yes])
1313 AC_MSG_RESULT($enable_testing)
1314 AM_CONDITIONAL([HAVE_TESTING], [test "x$enable_testing" = "xyes"])
1316 # should experimental code be compiled (code that may not yet compile)?
1317 AC_MSG_CHECKING(whether to compile experimental code)
1318 AC_ARG_ENABLE([experimental],
1319 [AS_HELP_STRING([--enable-experimental], [enable compiling experimental code])],
1320 [enable_experimental=${enableval}],
1321 [enable_experimental=no])
1322 AC_MSG_RESULT($enable_experimental)
1323 AM_CONDITIONAL([HAVE_EXPERIMENTAL], [test "x$enable_experimental" = "xyes"])
1325 # should malicious code be compiled (should only be used for testing)?
1326 AC_MSG_CHECKING(whether to compile malicious code)
1327 AC_ARG_ENABLE([malicious],
1328 [AS_HELP_STRING([--enable-malicious], [enable compiling malicious code])],
1329 [if test "x$enableval" = "xno"
1336 enable_malicious=no])
1337 AC_MSG_RESULT($enable_malicious)
1338 AM_CONDITIONAL([ENABLE_MALICIOUS], [test 1=$malicious])
1339 AC_DEFINE_UNQUOTED([ENABLE_MALICIOUS], [$malicious],
1340 [enable compilation of malicious code])
1342 # should services be started by default when a peer starts? Some services may
1343 # choose to never start by default and it is upto the service/module developer to
1344 # decide it by having "AUTOSTART = NO" instead of "AUTOSTART = @AUTOSTART@" in
1345 # the service/module's conf.in file.
1347 AC_MSG_CHECKING(whether to auto-start peer's services by default)
1348 AC_ARG_ENABLE([autostart],
1349 [AS_HELP_STRING([--disable-autostart], [do not start peer's services by default])],
1350 [enable_autostart=${enableval}
1351 if test "x$enable_autostart" == "xno"
1356 [enable_autostart=yes])
1357 AC_MSG_RESULT($enable_autostart)
1358 #AM_CONDITIONAL([HAVE_AUTOSTART], [test "x$enable_autostart" = "xyes"])
1361 # should memory statistics be kept (very expensive CPU-wise!)
1362 AC_MSG_CHECKING(whether to create expensive statistics on memory use)
1363 AC_ARG_ENABLE([heapstats],
1364 [AS_HELP_STRING([--enable-heapstats], [enable expensive heap statistics])],
1365 [enable_heapstats=1],
1366 [enable_heapstats=0])
1367 AC_MSG_RESULT($enable_heapstats)
1368 AC_DEFINE_UNQUOTED([ENABLE_HEAP_STATISTICS],$enable_heapstats,[enable expensive heap statistics])
1370 # should code be enabled that works around missing OS functionality on Windows?
1371 # used for test cases
1372 if test $build_target = "mingw"
1378 [#include <ws2tcpip.h>
1380 int s = socket (0, 0, 0);])
1382 AC_DEFINE_UNQUOTED([HAVE_SOCKET],1,[Define this if socket() is available])
1384 AC_DEFINE_UNQUOTED([HAVE_SOCKET],0,[Define this if socket() is available])
1389 [#include <ws2tcpip.h>
1391 int s = select (0, NULL, NULL, NULL, NULL);])
1393 AC_DEFINE_UNQUOTED([HAVE_SELECT],1,[Define this if select() is available])
1395 AC_DEFINE_UNQUOTED([HAVE_SELECT],0,[Define this if select() is available])
1400 [#include <ws2tcpip.h>
1403 char *s = inet_ntoa (i);])
1405 AC_DEFINE_UNQUOTED([HAVE_INET_NTOA],1,[Define this if inet_ntoa() is available])
1407 AC_DEFINE_UNQUOTED([HAVE_INET_NTOA],0,[Define this if inet_ntoa() is available])
1412 [#include <ws2tcpip.h>
1414 int s = getnameinfo (NULL, 0, NULL, 0, NULL, 0, 0);])
1416 AC_DEFINE_UNQUOTED([HAVE_GETNAMEINFO],1,[Define this if getnameinfo() is available])
1418 AC_DEFINE_UNQUOTED([HAVE_GETNAMEINFO],0,[Define this if getnameinfo() is available])
1423 [#include <ws2tcpip.h>
1425 int s = gethostname (NULL, 0);])
1427 AC_DEFINE_UNQUOTED([HAVE_GETHOSTNAME],1,[Define this if gethostname() is available])
1429 AC_DEFINE_UNQUOTED([HAVE_GETHOSTNAME],0,[Define this if gethostname() is available])
1434 [#include <ws2tcpip.h>
1436 void *s = gethostbyname (NULL);])
1438 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYNAME],1,[Define this if gethostbyname() is available])
1440 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYNAME],0,[Define this if gethostbyname() is available])
1445 [#include <ws2tcpip.h>
1447 void *s = gethostbyaddr (NULL, 0, 0);])
1449 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYADDR],1,[Define this if gethostbyaddr() is available])
1451 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYADDR],0,[Define this if gethostbyaddr() is available])
1456 [#include <ws2tcpip.h>
1458 int s = getaddrinfo (NULL, NULL, NULL, NULL);])
1460 AC_DEFINE_UNQUOTED([HAVE_GETADDRINFO],1,[Define this if getaddrinfo() is available])
1462 AC_DEFINE_UNQUOTED([HAVE_GETADDRINFO],1,[Define this if getaddrinfo() is available])
1466 AC_MSG_CHECKING(whether to enable windows workarounds)
1467 AC_ARG_ENABLE([windows_workarounds],
1468 [AS_HELP_STRING([--enable-windows_workarounds], [enable workarounds used on Windows (only useful for test cases)])],
1469 [enable_workarounds=${enableval}],
1470 [enable_workarounds=no])
1471 AC_MSG_RESULT($enable_workarounds)
1472 if test x$enable_windows_workarounds = "xyes"
1479 AC_DEFINE_UNQUOTED([ENABLE_WINDOWS_WORKAROUNDS], $workarounds, [enable workarounds used on Windows (only useful for test cases)])
1482 AC_MSG_CHECKING(whether to compile with support for code coverage analysis)
1483 AC_ARG_ENABLE([coverage],
1484 AS_HELP_STRING([--enable-coverage],
1485 [compile the library with code coverage support]),
1486 [use_gcov=${enableval}],
1488 AC_MSG_RESULT($use_gcov)
1489 AM_CONDITIONAL([USE_COVERAGE], [test "x$use_gcov" = "xyes"])
1493 AC_PATH_PROG(svnversioncommand, svnversion)
1494 AC_PATH_PROG(gitcommand, git)
1495 AC_MSG_CHECKING(for source being under a VCS)
1498 AS_IF([test ! "X$svnversioncommand" = "X"],
1500 svn_version=$(cd $srcdir ; $svnversioncommand -n 2>/dev/null)
1502 AS_IF([test ! "X$gitcommand" = "X"],
1504 gitsvn_version=$(cd $srcdir ; git log -1 2>/dev/null | grep "git-svn-id" | sed -e 's/.*@\([[0-9]]\+\) .*/\1/')
1506 AS_IF([test "X$svn_version" = "X" -o "X$svn_version" = "Xexported" -o "X$svn_version" = "XUnversioned directory"],
1508 AS_IF([test "X$gitsvn_version" = "X"],
1511 vcs_version="\"release\""
1514 vcs_name="yes, git-svn"
1515 vcs_version="\"svn-r$gitsvn_version\""
1520 vcs_version="\"svn-r$svn_version\""
1522 AC_MSG_RESULT($vcs_name)
1524 AC_MSG_CHECKING(VCS version)
1525 AC_MSG_RESULT($vcs_version)
1526 AC_DEFINE_UNQUOTED(VCS_VERSION, [$vcs_version], [VCS revision/hash or tarball version])
1533 doc/doxygen/Makefile
1534 doc/documentation/Makefile
1542 src/ats-tool/Makefile
1543 src/ats-tests/Makefile
1544 src/auction/Makefile
1547 src/cadet/cadet.conf
1550 src/consensus/Makefile
1551 src/consensus/consensus.conf
1552 src/conversation/Makefile
1553 src/conversation/conversation.conf
1555 src/datacache/Makefile
1556 src/datastore/Makefile
1557 src/datastore/datastore.conf
1565 src/fragmentation/Makefile
1570 src/gns/nss/Makefile
1571 src/gnsrecord/Makefile
1573 src/identity/Makefile
1574 src/identity/identity.conf
1575 src/include/Makefile
1576 src/integration-tests/Makefile
1578 src/jsonapi/Makefile
1579 src/hostlist/Makefile
1580 src/multicast/Makefile
1581 src/multicast/multicast.conf
1584 src/namecache/Makefile
1585 src/namecache/namecache.conf
1586 src/namestore/Makefile
1587 src/namestore/namestore.conf
1590 src/nat-auto/Makefile
1591 src/nat-auto/nat-auto.conf
1594 src/peerinfo/Makefile
1595 src/peerinfo/peerinfo.conf
1596 src/peerinfo-tool/Makefile
1597 src/peerstore/Makefile
1598 src/peerstore/peerstore.conf
1600 src/psycutil/Makefile
1603 src/psycstore/Makefile
1604 src/psycstore/psycstore.conf
1607 src/regex/regex.conf
1608 src/revocation/Makefile
1609 src/revocation/revocation.conf
1612 src/secretsharing/Makefile
1613 src/secretsharing/secretsharing.conf
1614 src/scalarproduct/Makefile
1615 src/scalarproduct/scalarproduct.conf
1619 src/social/social.conf
1621 src/statistics/Makefile
1622 src/statistics/statistics.conf
1623 src/template/Makefile
1624 src/testbed/Makefile
1625 src/testbed/testbed.conf
1626 src/testbed-logger/Makefile
1627 src/testbed-logger/testbed-logger.conf
1628 src/testing/Makefile
1629 src/topology/Makefile
1630 src/transport/Makefile
1631 src/transport/transport.conf
1634 src/util/resolver.conf
1637 src/zonemaster/Makefile
1638 src/zonemaster/zonemaster.conf
1640 src/identity-provider/Makefile
1642 pkgconfig/gnunetarm.pc
1643 pkgconfig/gnunetats.pc
1644 pkgconfig/gnunetblock.pc
1645 pkgconfig/gnunetcadet.pc
1646 pkgconfig/gnunetconsensus.pc
1647 pkgconfig/gnunetconversation.pc
1648 pkgconfig/gnunetcore.pc
1649 pkgconfig/gnunetdatacache.pc
1650 pkgconfig/gnunetdatastore.pc
1651 pkgconfig/gnunetdht.pc
1652 pkgconfig/gnunetdns.pc
1653 pkgconfig/gnunetdnsparser.pc
1654 pkgconfig/gnunetdnsstub.pc
1655 pkgconfig/gnunetdv.pc
1656 pkgconfig/gnunetenv.pc
1657 pkgconfig/gnunetfragmentation.pc
1658 pkgconfig/gnunetfs.pc
1659 pkgconfig/gnunetgns.pc
1660 pkgconfig/gnunethello.pc
1661 pkgconfig/gnunetidentity.pc
1662 pkgconfig/gnunetmicrophone.pc
1663 pkgconfig/gnunetmulticast.pc
1664 pkgconfig/gnunetmysql.pc
1665 pkgconfig/gnunetnamestore.pc
1666 pkgconfig/gnunetnat.pc
1667 pkgconfig/gnunetnse.pc
1668 pkgconfig/gnunetpeerinfo.pc
1669 pkgconfig/gnunetpq.pc
1670 pkgconfig/gnunetpsyc.pc
1671 pkgconfig/gnunetpsycstore.pc
1672 pkgconfig/gnunetregex.pc
1673 pkgconfig/gnunetrevocation.pc
1674 pkgconfig/gnunetrps.pc
1675 pkgconfig/gnunetscalarproduct.pc
1676 pkgconfig/gnunetset.pc
1677 pkgconfig/gnunetsocial.pc
1678 pkgconfig/gnunetspeaker.pc
1679 pkgconfig/gnunetstatistics.pc
1680 pkgconfig/gnunettestbed.pc
1681 pkgconfig/gnunettesting.pc
1682 pkgconfig/gnunettransport.pc
1683 pkgconfig/gnunettun.pc
1684 pkgconfig/gnunetutil.pc
1685 pkgconfig/gnunetvpn.pc
1691 # warn user if mysql found but not used due to version
1692 if test "$mysqlfail" = "true"
1694 AC_MSG_NOTICE([WARNING: MySQL found, but too old. MySQL support will not be compiled.])
1698 if test "x$sqlite" = "x0"
1700 AC_MSG_ERROR([ERROR: sqlite3 not found, but sqlite3 is required.])
1704 if test "$gnurl" = "0"
1706 if test "x$curl" = "xfalse"
1708 AC_MSG_NOTICE([WARNING: libgnurl not found. http client support will not be compiled.])
1709 AC_MSG_WARN([ERROR: libgnurl not found. hostlist daemon will not be compiled, and you probably WANT the hostlist daemon])
1711 AC_MSG_NOTICE([WARNING: libgnurl not found, trying to use libcurl-gnutls instead.])
1717 if test "x$bluetooth" = "x0"
1719 AC_MSG_NOTICE([WARNING: bluetooth library not found. bluetooth support will not be compiled.])
1723 if test "x$jansson" = "x0"
1725 AC_MSG_NOTICE([WARNING: jansson library not found. json support will not be compiled.])
1729 if test x$gnutls != xtrue
1731 AC_MSG_NOTICE([WARNING: GnuTLS not found, gnunet-gns-proxy will not be built])
1733 if test "x$gnutls_dane" != "x1"
1735 AC_MSG_NOTICE([WARNING: GnuTLS has no DANE support, DANE validation will not be possible])
1740 if test "x$enable_java_ports" = "xyes"
1742 AC_MSG_NOTICE([NOTICE: Opening ports for gnunet-java bindings by default.])
1746 if test "x$lmhd" != "x1"
1748 AC_MSG_NOTICE([WARNING: libmicrohttpd not found, http transport will not be installed.])
1752 if test "x$conversation_backend" = "xnone"
1754 if test "x$pulse" != "x1"
1756 AC_MSG_NOTICE([WARNING: libpulse(audio) not found, conversation will not be built.])
1758 if test "x$opus" != "x1"
1760 AC_MSG_NOTICE([WARNING: libopus not found, conversation will not be built.])
1762 if test "x$gst" != "x1"
1764 AC_MSG_NOTICE([WARNING: GStreamer not found, conversation will not be built.])
1768 if test "$extractor" != 1
1770 AC_MSG_WARN([ERROR: libextractor not found, but various file-sharing functions require it])
1773 AC_MSG_NOTICE([NOTICE: Database support is set to MySQL: $mysql, SQLite: $sqlite, Postgres: $postgres])
1775 if test "$enable_framework_build" = "yes"
1777 AC_MSG_NOTICE([Mac OS X framework build enabled.])
1780 AC_MSG_NOTICE([********************************************
1781 Please make sure NOW that you have created a user and group 'gnunet'
1782 and additionally a group 'gnunetdns'. On Debian and Ubuntu GNU/Linux, type:
1784 adduser --system --group --disabled-login --home /var/lib/gnunet gnunet
1786 Make sure that '/var/lib/gnunet' is owned (and writable) by user
1787 'gnunet'. Then, you can compile GNUnet with
1790 After that, run (if necessary as 'root')
1792 to install everything.
1794 Each GNUnet user should be added to the 'gnunet' group (may
1795 require fresh login to come into effect):
1796 adduser USERNAME gnunet
1797 (run the above command as root once for each of your users, replacing
1798 "USERNAME" with the respective login names). If you have a global IP
1799 address, no further configuration is required.
1801 For more detailed setup instructions, see https://gnunet.org/installation
1803 Optionally, download and compile gnunet-gtk to get a GUI for
1804 file-sharing and configuration. This is particularly recommended
1805 if your network setup is non-trivial, as gnunet-setup can be
1806 used to test in the GUI if your network configuration is working.
1807 gnunet-setup should be run as the "gnunet" user under X. As it
1808 does very little with the network, running it as "root" is likely
1809 also harmless. You can also run it as a normal user, but then
1810 you have to copy ~/.gnunet/gnunet.conf" over to the "gnunet" user's
1811 home directory in the end.
1813 Once you have configured your peer, run (as the 'gnunet' user)
1815 to start the peer. You can then run the various GNUnet-tools as
1816 your "normal" user (who should only be in the group 'gnunet').
1817 ********************************************])