1 # This file is part of GNUnet.
2 # (C) 2001--2018 GNUnet e.V.
4 # GNUnet is free software: you can redistribute it and/or modify it
5 # under the terms of the GNU Affero General Public License as published
6 # by the Free Software Foundation, either version 3 of the License,
7 # or (at your option) any later version.
9 # GNUnet is distributed in the hope that it will be useful, but
10 # WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 # Affero General Public License for more details.
14 # You should have received a copy of the GNU Affero General Public License
15 # along with this program. If not, see <http://www.gnu.org/licenses/>.
18 # Process this file with autoconf to produce a configure script.
22 # Checks for programs.
23 AC_INIT([gnunet], [0.11.0pre66], [bug-gnunet@gnu.org])
30 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
31 AC_CONFIG_HEADERS([gnunet_config.h])
32 AH_TOP([#define _GNU_SOURCE 1])
33 AC_CONFIG_MACRO_DIR([m4])
43 LT_INIT([disable-static dlopen win32-dll])
51 CFLAGS="-Wall $CFLAGS"
52 # use '-fno-strict-aliasing', but only if the compiler can take it
53 if gcc -fno-strict-aliasing -S -o /dev/null -xc /dev/null >/dev/null 2>&1;
55 CFLAGS="-fno-strict-aliasing $CFLAGS"
58 # Use Linux interface name unless the OS has a different preference
59 DEFAULT_INTERFACE="\"eth0\""
61 funcstocheck="getnameinfo gethostname gethostbyname gethostbyaddr getaddrinfo"
63 # Srcdir in a form that native compiler understands (i.e. DOS path on W32)
68 *darwin* | *rhapsody* | *macosx*)
69 AC_DEFINE_UNQUOTED(DARWIN,1,[This is an Apple Darwin system])
70 CPPFLAGS="-D_APPLE_C_SOURCE $CPPFLAGS"
71 CFLAGS="-fno-common $CFLAGS"
72 AC_MSG_WARN([WARNING: The VPN application cannot be compiled on your OS])
74 DEFAULT_INTERFACE="\"en0\""
80 AC_DEFINE_UNQUOTED(LINUX,1,[This is a Linux kernel])
88 AC_DEFINE_UNQUOTED(SOMEBSD,1,[This is a BSD system])
89 AC_DEFINE_UNQUOTED(FREEBSD,1,[This is a FreeBSD system])
90 CFLAGS="-D_THREAD_SAFE $CFLAGS"
91 build_target="freebsd"
97 AC_DEFINE_UNQUOTED(SOMEBSD,1,[This is a BSD system])
98 AC_DEFINE_UNQUOTED(OPENBSD,1,[This is an OpenBSD system])
99 LIBS=`echo $LIBS | sed -e "s/-ldl//"`
100 build_target="openbsd"
106 AC_DEFINE_UNQUOTED(SOMEBSD,1,[This is a BSD system])
107 AC_DEFINE_UNQUOTED(NETBSD,1,[This is a NetBSD system])
113 AC_DEFINE_UNQUOTED(SOLARIS,1,[This is a Solaris system])
114 AC_DEFINE_UNQUOTED(_REENTRANT,1,[Need with solaris or errno doesnt work])
115 AC_CHECK_LIB(resolv, res_init)
116 AC_CHECK_LIB(rt, nanosleep)
117 build_target="solaris"
123 AC_DEFINE_UNQUOTED(LINUX,1,[This is a Linux kernel])
124 CFLAGS="-D_REENTRANT -fPIC -pipe $CFLAGS"
131 AC_DEFINE_UNQUOTED(CYGWIN,1,[This is a Cygwin system])
132 AC_DEFINE_UNQUOTED(WINDOWS,1,[This is a Windows system])
133 AC_CHECK_LIB(intl, gettext)
134 CFLAGS="-mms-bitfields $CFLAGS"
135 build_target="cygwin"
142 AC_DEFINE_UNQUOTED(MINGW,1,[This is a MinGW system])
143 AC_DEFINE_UNQUOTED(WINDOWS,1,[This is a Windows system])
144 AC_DEFINE_UNQUOTED(_WIN32,1,[This is a Windows system])
145 AC_CHECK_LIB(intl, gettext)
146 LDFLAGS="$LDFLAGS -Wl,--export-all-symbols"
147 LIBS="$LIBS -lws2_32 -lplibc -lgnurx -lole32"
148 CFLAGS="-mms-bitfields $CFLAGS"
149 CPPFLAGS="-D_WIN32_WINNT=0x0501 -DHAVE_STAT64=1 -D__USE_MINGW_ANSI_STDIO=1 $CPPFLAGS"
156 native_srcdir=$(cd $srcdir; pwd -W)
159 AC_DEFINE_UNQUOTED(GNU,1,[This is a GNU system])
164 AC_MSG_RESULT(Unrecognised OS $host_os)
165 AC_DEFINE_UNQUOTED(OTHEROS,1,[Some strange OS])
169 AC_DEFINE_UNQUOTED([GNUNET_DEFAULT_INTERFACE], $DEFAULT_INTERFACE, [This should be the default choice for the name of the first network interface])
170 AC_SUBST(DEFAULT_INTERFACE)
172 # Disable TCP-based IPC on systems that support UNIX domain
173 # sockets in default configuratin:
177 AC_MSG_CHECKING([for build target])
178 AM_CONDITIONAL(DARWIN, test "$build_target" = "darwin")
179 AM_CONDITIONAL(CYGWIN, test "$build_target" = "cygwin")
180 AM_CONDITIONAL(MINGW, test "$build_target" = "mingw")
181 AM_CONDITIONAL(SOLARIS, test "$build_target" = "solaris")
182 AM_CONDITIONAL(XFREEBSD, test "$build_target" = "freebsd")
183 AM_CONDITIONAL(OPENBSD, test "$build_target" = "openbsd")
184 AM_CONDITIONAL(LINUX, test "$build_target" = "linux")
185 AM_CONDITIONAL(GNU, test "$build_target" = "gnu")
187 AC_MSG_RESULT([$build_target])
188 AC_SUBST(build_target)
189 AM_CONDITIONAL([am__fastdepOBJC], false)
190 AC_UNALIGNED_64_ACCESS
192 # some other checks for standard libs
193 AC_SEARCH_LIBS([gethostbyname], [nsl ws2_32])
194 AC_CHECK_LIB(socket, socket)
196 AC_CHECK_LIB(c, getloadavg, AC_DEFINE(HAVE_GETLOADAVG,1,[getloadavg supported]))
198 AC_CHECK_PROG(VAR_GETOPT_BINARY, getopt, true, false)
199 AM_CONDITIONAL(HAVE_GETOPT_BINARY, $VAR_GETOPT_BINARY)
201 AC_CHECK_PROG(VAR_SSH_BINARY,ssh,true,false)
202 AM_CONDITIONAL(HAVE_SSH_BINARY, $VAR_SSH_BINARY)
203 AM_CONDITIONAL(HAVE_SSH_KEY, ssh -D 12345 -o "BatchMode yes" -o "UserKnownHostsFile /tmp/gnunet_test_cosks_ssh_garbage" -o "StrictHostKeyChecking no" 127.0.0.1 echo -n)
204 rm -f /tmp/gnunet_test_cosks_ssh_garbage
207 AC_CHECK_MEMBER(struct tm.tm_gmtoff,
208 [AC_DEFINE(HAVE_TM_GMTOFF, 1,
209 [Define if struct tm has the tm_gmtoff member.])],
213 AC_CHECK_DECLS([_stati64])
215 # 'save' libs; only those libs found so far will be
216 # linked against _everywhere_. For the others, we
217 # will be more selective!
220 # tests only run on Windows
221 if test "x$build_target" = "xmingw"
223 AC_CHECK_LIB(plibc, plibc_init, [], [AC_MSG_ERROR([GNUnet requires PlibC on Windows])])
224 AC_CHECK_LIB(gnurx, regexec, [], [AC_MSG_ERROR([GNUnet requires libgnurx on Windows])])
230 NEED_LIBGCRYPT_VERSION=1.6.0
233 AM_PATH_LIBGCRYPT("$NEED_LIBGCRYPT_API:$NEED_LIBGCRYPT_VERSION", gcrypt=1)
234 AC_CHECK_DECLS([gcry_mpi_set_opaque_copy], [], [], [[#include <gcrypt.h>]])
240 *** You need libgcrypt to build this program.
241 ** This library is for example available at
242 *** ftp://ftp.gnupg.org/gcrypt/libgcrypt/
243 *** (at least version $NEED_LIBGCRYPT_VERSION (API $NEED_LIBGCRYPT_API)
247 AC_DEFINE_UNQUOTED([NEED_LIBGCRYPT_VERSION], "$NEED_LIBGCRYPT_VERSION", [required libgcrypt version])
249 # TODO: add check for VERSION
250 # TODO: add check for alternatives
251 # TODO: add switch to skip documentation building
252 AM_MISSING_PROG([MAKEINFO], [makeinfo])
254 # Adam shostack suggests the following for Windows:
255 # -D_FORTIFY_SOURCE=2 -fstack-protector-all
256 AC_ARG_ENABLE(gcc-hardening,
257 AS_HELP_STRING(--enable-gcc-hardening, enable compiler security checks),
258 [if test x$enableval = xyes; then
259 CFLAGS="$CFLAGS -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fstack-protector-all"
260 CFLAGS="$CFLAGS -fwrapv -fPIE -Wstack-protector"
261 CFLAGS="$CFLAGS --param ssp-buffer-size=1"
262 LDFLAGS="$LDFLAGS -pie"
266 # Linker hardening options
267 # Currently these options are ELF specific - you can't use this with MacOSX
268 AC_ARG_ENABLE(linker-hardening,
269 AS_HELP_STRING(--enable-linker-hardening, enable linker security fixups),
270 [if test x$enableval = xyes; then
271 LDFLAGS="$LDFLAGS -z relro -z now"
275 AC_ARG_ENABLE(sanitizer,
276 AS_HELP_STRING(--enable-sanitizer, enable Address Sanitizer and Undefined Behavior Sanitizer),
277 [if test x$enableval = xyes; then
278 LDFLAGS="$CFLAGS -fsanitize=address,undefined -fno-omit-frame-pointer"
282 extra_logging=GNUNET_NO
283 AC_ARG_ENABLE([logging],
284 AS_HELP_STRING([--enable-logging@<:@=value@:>@],[Enable logging calls. Possible values: yes,no,verbose,veryverbose ('yes' is the default)]),
285 [AS_IF([test "x$enableval" = "xyes"], [],
286 [test "x$enableval" = "xno"], [AC_DEFINE([GNUNET_CULL_LOGGING],[],[Define to cull all logging calls])],
287 [test "x$enableval" = "xverbose"], [extra_logging=GNUNET_YES]
288 [test "x$enableval" = "xveryverbose"], [extra_logging=\(GNUNET_YES+1\)])
290 AC_DEFINE_UNQUOTED([GNUNET_EXTRA_LOGGING],[$extra_logging],[1 if extra logging is enabled, 2 for very verbose extra logging, 0 otherwise])
292 # should memory poisoning be enabled?
293 AC_MSG_CHECKING(whether to poison freed memory)
294 AC_ARG_ENABLE([poisoning],
295 [AS_HELP_STRING([--enable-poisoning], [enable poisoning of freed memory (good for debugging)])],
296 [enable_poisoning=${enableval}],
298 if test "x$extra_logging" != "xGNUNET_NO"; then
299 enable_poisoning="defaults to yes (extra logging is enabled)"
304 AC_MSG_RESULT($enable_poisoning)
305 if test ! "x$enable_poisoning" = "xno"; then
310 AC_DEFINE_UNQUOTED([ENABLE_POISONING],[$enable_poisoning],[1 if freed memory should be poisoned, 0 otherwise])
312 if test $build = $target
314 AC_MSG_CHECKING([for working HMAC])
316 LIBS="$LIBS $LIBGCRYPT_LIBS"
317 CFLAGS="$CFLAGS $LIBGCRYPT_CFLAGS"
319 [AC_LANG_PROGRAM([#include <gcrypt.h>
320 #include <stdio.h>], [[
323 unsigned char data[] = { 0xbf, 0x16, 0x6e, 0x46, 0x3a, 0x6c, 0xf3, 0x93, 0xa7, 0x72,
324 0x11, 0xa1, 0xdc, 0x0b, 0x07, 0xdb, 0x1a, 0x5e, 0xd9, 0xb9, 0x81, 0xbe,
325 0xea, 0xe4, 0x31, 0x5f, 0x24, 0xff, 0xfe, 0x50, 0x8a, 0xde };
326 unsigned char key[] = { 0xfc, 0x62, 0x76, 0x35 };
327 unsigned char result[] = {0xa2, 0xb, 0x1, 0xd9, 0xc0, 0x8b, 0x5a, 0x12, 0x80,
328 0xd5, 0x50, 0x12, 0x8e, 0xd0, 0x5b, 0xb6, 0x5c, 0x87, 0x24, 0xe2, 0xd0,
329 0xd2, 0xaf, 0x63, 0xae, 0xd1, 0xd6, 0x64, 0x14, 0xe3, 0x6e, 0x61, 0x5b,
330 0xd, 0xba, 0x17, 0x7d, 0xd3, 0x10, 0xb1, 0x37, 0x41, 0x91, 0x7d, 0xeb,
331 0x1, 0x4d, 0x71, 0xe8, 0x59, 0x71, 0x42, 0x8e, 0xd6, 0xf3, 0x29, 0x3b,
332 0x90, 0xf2, 0xd1, 0xaf, 0x65, 0x1e, 0xb3};
334 if (!gcry_check_version (GCRYPT_VERSION))
336 fprintf (stderr, "Version mismatch %s <-> %s \n", gcry_check_version (NULL), GCRYPT_VERSION);
340 gcry_control (GCRYCTL_DISABLE_SECMEM, 0);
341 gcry_control (GCRYCTL_INITIALIZATION_FINISHED, 0);
343 if (gcry_md_open(&mac, GCRY_MD_SHA512, GCRY_MD_FLAG_HMAC) != GPG_ERR_NO_ERROR)
345 fprintf (stderr, "gcry_md_open error\n");
349 gcry_md_setkey (mac, key, sizeof (key));
350 gcry_md_write (mac, data, sizeof (data));
352 if (memcmp(gcry_md_read (mac, 0), result, gcry_md_get_algo_dlen (gcry_md_get_algo (mac))) != 0)
354 fprintf (stderr, "memcmp error\n");
362 [AC_MSG_RESULT([yes])],
367 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.])
371 AC_MSG_FAILURE([HMAC test failed])
375 AC_MSG_FAILURE([libgcrypt header version does not match library version])
378 [AC_MSG_RESULT([cross compiling, test skipped])])
380 fi # $build = $target
382 # check for bluetooth library
384 AC_CHECK_LIB(bluetooth, ba2str,[AC_CHECK_HEADER([bluetooth/bluetooth.h],bluetooth=1)])
385 if test "$build_target" = "mingw"
389 AM_CONDITIONAL(HAVE_LIBBLUETOOTH, [test "$bluetooth" = 1])
390 if test "$bluetooth" = 1
392 AC_DEFINE([HAVE_LIBBLUETOOTH],[1],[Have bluetooth library])
394 AC_DEFINE([HAVE_LIBBLUETOOTH],[0],[Lacking bluetooth library])
397 # check for jansson library
399 AC_CHECK_HEADER([jansson.h],jansson=1)
400 AM_CONDITIONAL(HAVE_JANSSON, [test "$jansson" = 1])
401 if test "x$jansson" = x1
403 AC_DEFINE([HAVE_JANSSON],[1],[Have jansson library])
405 AC_DEFINE([HAVE_JANSSON],[0],[Lacking jansson library])
408 # check for libpulse(audio) library
410 AC_CHECK_LIB(pulse,pa_stream_peek,
411 [AC_CHECK_HEADER([pulse/simple.h],pulse=1)])
412 if test "$build_target" = "mingw"
418 AC_DEFINE([HAVE_PULSE],[1],[Have libpulse(audio) library])
421 # check for libopus(audio) library
423 AC_CHECK_LIB(opus,opus_decode_float,
424 [AC_CHECK_HEADER([opus/opus.h],
425 [AC_CHECK_DECL([OPUS_SET_GAIN],[opus=1],[],[[#include <opus/opus.h>]]
431 AC_DEFINE([HAVE_OPUS],[1],[Have libopus library])
435 AC_CHECK_LIB(ogg, ogg_stream_flush_fill,
436 [AC_CHECK_HEADERS([ogg/ogg.h],
437 AM_CONDITIONAL(HAVE_OGG, true)
439 AC_DEFINE(HAVE_OGG,1,[Have ogg]),
440 AM_CONDITIONAL(HAVE_OGG, false)
442 AC_DEFINE(HAVE_OGG,0,[lacking ogg]))],
443 AM_CONDITIONAL(HAVE_OGG, false)
447 PKG_CHECK_MODULES([GLIB], [glib-2.0],
448 # check for pbc library
450 AC_CHECK_HEADER([pbc/pbc.h],pbc=1)
451 AC_CHECK_HEADER([gabe.h],abe=1)
452 AM_CONDITIONAL(HAVE_PBC, [test "$pbc" = 1])
453 AM_CONDITIONAL(HAVE_ABE, [test "$abe" = 1])
456 AC_DEFINE([HAVE_PBC],[1],[Have pbc library])
458 AC_DEFINE([HAVE_PBC],[0],[Lacking pbc library])
462 AC_DEFINE([HAVE_ABE],[1],[Have ABE library])
464 AC_DEFINE([HAVE_ABE],[0],[Lacking ABE library])
468 AM_CONDITIONAL(HAVE_PBC, [0])
469 AM_CONDITIONAL(HAVE_ABE, [0])
470 AC_DEFINE([HAVE_PBC],[0],[Lacking glib library])
476 [glib-2.0 gobject-2.0 gstreamer-1.0 gstreamer-app-1.0 gstreamer-audio-1.0],
482 AC_MSG_RESULT(not found)
486 if test "x$pulse" != "x1" -o "x$opus" != "x1" -o "x$ogg" != "x1"
488 if test "x$gst" != "x1"
490 conversation_backend=none
491 AM_CONDITIONAL(BUILD_PULSE_HELPERS, false)
492 AM_CONDITIONAL(BUILD_GST_HELPERS, false)
493 AM_CONDITIONAL(BUILD_EXPERIMENTAL_HELPERS, false)
495 conversation_backend=gst
496 AM_CONDITIONAL(BUILD_PULSE_HELPERS, false)
497 AM_CONDITIONAL(BUILD_GST_HELPERS, true)
498 AM_CONDITIONAL(BUILD_EXPERIMENTAL_HELPERS, false)
502 conversation_backend=pulse
503 AM_CONDITIONAL(BUILD_PULSE_HELPERS, true)
504 AM_CONDITIONAL(BUILD_GST_HELPERS, false)
505 AM_CONDITIONAL(BUILD_EXPERIMENTAL_HELPERS, false)
509 LIBGNURL_CHECK_CONFIG(,7.34.0,gnurl=1,gnurl=0)
512 AM_CONDITIONAL(HAVE_LIBGNURL, true)
513 AC_DEFINE([HAVE_LIBGNURL],[1],[Have libgnurl])
515 AM_CONDITIONAL(HAVE_LIBGNURL, false)
516 AC_DEFINE([HAVE_LIBGNURL],[0],[Lacking libgnurl])
519 SAVE_CPPFLAGS=$CPPFLAGS
520 CPPFLAGS="$LIBGNURL_CPPFLAGS $LIBCURL_CPPFLAGS $CPPFLAGS"
521 LIBS="$LIBGNURL $LIBCURL $LIBS"
524 LIBCURL_CHECK_CONFIG(,7.34.0,[curl=true],[curl=false])
525 if test "x$curl" = xtrue
528 AC_CHECK_HEADERS([curl/curl.h],
529 AC_CHECK_DECLS(CURLINFO_TLS_SESSION,[curl=true],[curl=false],[[#include <curl/curl.h>]]),
531 AC_CHECK_HEADERS([gnurl/curl.h],
532 AC_CHECK_DECLS(CURLINFO_TLS_SESSION,[curl=true],,[[#include <gnurl/curl.h>]]))
533 # need libcurl-gnutls.so, everything else is not acceptable
534 AC_CHECK_LIB([curl-gnutls],[curl_easy_getinfo],,[curl=false])
535 # cURL must support CURLINFO_TLS_SESSION, version >= 7.34
538 # Check for curl/curl.h and gnurl/curl.h so we can use #ifdef
539 # HAVE_CURL_CURL_H later (the above LIBCURL_CHECK_CONFIG accepted
540 # *either* header set).
541 AC_CHECK_HEADERS([curl/curl.h],,
543 AC_CHECK_HEADERS([gnurl/curl.h],,
548 if test x$curl = xfalse
550 AM_CONDITIONAL(HAVE_LIBCURL, false)
553 AC_MSG_WARN([ERROR: GNUnet requires libcurl-gnutls or gnurl >= 7.34])
556 AM_CONDITIONAL(HAVE_LIBCURL, true)
557 AC_DEFINE([HAVE_LIBCURL],[1],[Have CURL])
561 # restore LIBS & CPPFLAGS
563 CPPFLAGS=$SAVE_CPPFLAGS
565 AC_CHECK_HEADERS([glpk.h],[glpk=true],[gplk=false])
566 # GLPK must support glpk_init_env, version >= 4.43
567 AC_CHECK_LIB([glpk],[glp_init_env],,[gplk=false])
568 # GLPK must support atm MLP presolving, version >= 4.32
569 AC_CHECK_MEMBERS(glp_iocp.presolve,,[gplk=false],[[#include <glpk.h>]])
570 if test x$gplk = xfalse
572 AM_CONDITIONAL(HAVE_LIBGLPK, false)
573 AC_MSG_WARN([ERROR: GNUnet requires GLPK >= 4.32])
575 AM_CONDITIONAL(HAVE_LIBGLPK, true)
576 AC_DEFINE([HAVE_LIBGLPK],[1],[Have GLPK])
580 AC_CHECK_HEADERS([nss.h],[nss=true],[nss=false])
581 if test x$nss = xfalse
583 AM_CONDITIONAL(HAVE_GLIBCNSS, false)
584 AC_MSG_WARN([ERROR: No GNU libc nss header, will not build NSS plugin])
586 AM_CONDITIONAL(HAVE_GLIBCNSS, true)
591 # test for kvm and kstat (for CPU stats under BSD/Solaris)
592 AC_CHECK_LIB([kvm],[kvm_open])
593 AC_CHECK_LIB([kstat],[kstat_open])
596 # should the build process be building the documentation?
597 AC_MSG_CHECKING(whether to build documentation)
598 AC_ARG_ENABLE([documentation],
599 [AS_HELP_STRING([--enable-documentation], [build the documentation])],
600 [documentation=${enableval}],
602 AC_MSG_RESULT($documentation)
603 if test "x$documentation" = "xyes"
605 AM_CONDITIONAL([DOCUMENTATION],true)
606 AC_DEFINE([DOCUMENTATION],[1],[Building the documentation])
608 AM_CONDITIONAL([DOCUMENTATION],false)
609 AC_DEFINE([DOCUMENTATION],[0],[Not building the documentation])
612 # should the build process be building only the documentation?
613 AC_MSG_CHECKING(whether to build only documentation)
614 AC_ARG_ENABLE([documentation-only],
615 [AS_HELP_STRING([--enable-documentation-only], [build only the documentation])],
616 [documentation_only=${enableval}],
617 [documentation_only=no])
618 AC_MSG_RESULT($documentation_only)
619 if test "x$documentation_only" = "xyes"
621 AM_CONDITIONAL([DOCUMENTATION_ONLY],true)
622 AC_DEFINE([DOCUMENTATION_ONLY],[1],[Building only the documentation])
624 AM_CONDITIONAL([DOCUMENTATION_ONLY],false)
625 AC_DEFINE([DOCUMENTATION_ONLY],[0],[Not building only the documentation])
628 # should the build process be restricted to the code required
629 # for GNU Taler wallets?
630 AC_MSG_CHECKING(whether to compile GNU Taler Wallet library ONLY)
631 AC_ARG_ENABLE([taler-wallet],
632 [AS_HELP_STRING([--enable-taler-wallet], [only compile for Taler wallet])],
633 [taler_only=${enableval}],
635 AC_MSG_RESULT($taler_only)
636 if test "x$taler_only" = "xyes"
638 AM_CONDITIONAL([TALER_ONLY],true)
639 AC_DEFINE([TALER_WALLET_ONLY],[1],[Compiling for Taler wallet])
641 AM_CONDITIONAL([TALER_ONLY],false)
642 AC_DEFINE([TALER_WALLET_ONLY],[0],[Canonical compilation])
645 # test for libextractor
647 AC_MSG_CHECKING(for libextractor)
648 AC_ARG_WITH(extractor,
649 [ --with-extractor=PFX base of libextractor installation],
650 [AC_MSG_RESULT([$with_extractor])
651 case $with_extractor in
655 AC_CHECK_HEADERS(extractor.h,
656 AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
660 LDFLAGS="-L$with_extractor/lib $LDFLAGS"
661 CPPFLAGS="-I$with_extractor/include $CPPFLAGS"
662 AC_CHECK_HEADERS(extractor.h,
663 AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
664 EXT_LIB_PATH="-L$with_extractor/lib $EXT_LIB_PATH"
669 [AC_MSG_RESULT([--with-extractor not specified])
670 AC_CHECK_HEADERS(extractor.h,
671 AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
676 if test "$extractor" != 1
678 AM_CONDITIONAL(HAVE_LIBEXTRACTOR, false)
679 AC_DEFINE([HAVE_LIBEXTRACTOR],[0],[Lacking libextractor])
681 AM_CONDITIONAL(HAVE_LIBEXTRACTOR, true)
682 AC_DEFINE([HAVE_LIBEXTRACTOR],[1],[Have libextractor])
686 if test "$taler_only" != yes
689 # Check for libltdl header (#2999)
691 AC_MSG_CHECKING(for libltdl)
693 [ --with-ltdl=PFX base of libltdl installation],
694 [AC_MSG_RESULT([$with_ltdl])
699 AC_CHECK_HEADERS(ltdl.h,
700 AC_CHECK_LIB([ltdl], [lt_dlopenext],
704 LDFLAGS="-L$with_ltdl/lib $LDFLAGS"
705 CPPFLAGS="-I$with_ltdl/include $CPPFLAGS"
706 AC_CHECK_HEADERS(ltdl.h,
707 AC_CHECK_LIB([ltdl], [lt_dlopenext],
708 EXT_LIB_PATH="-L$with_ltdl/lib $EXT_LIB_PATH"
713 [AC_MSG_RESULT([--with-ltdl not specified])
714 AC_CHECK_HEADERS(ltdl.h,
715 AC_CHECK_LIB([ltdl], [lt_dlopenext],
719 AC_MSG_RESULT([libltdl found])
721 AC_MSG_ERROR([GNUnet requires libltdl (from GNU libtool), try installing libltdl-dev])
728 AC_MSG_CHECKING([if Libidn can be used])
729 AC_ARG_WITH(libidn, AC_HELP_STRING([--with-libidn=[DIR]],
730 [Support IDN (needs GNU Libidn)]),
731 libidn=$withval, libidn=yes)
732 if test "$libidn" != "no"; then
733 if test "$libidn" != "yes"; then
734 LDFLAGS="${LDFLAGS} -L$libidn/lib"
735 CPPFLAGS="${CPPFLAGS} -I$libidn/include"
739 AC_CHECK_HEADER(idna.h,
740 AC_CHECK_LIB(idn, stringprep_check_version,
741 [libidn=yes LIBS="${LIBS} -lidn"], []), [])
742 if test "$libidn" != "yes"; then
743 AC_MSG_FAILURE([GNUnet requires libidn.
744 libidn-1.13 should be sufficient, newer versions work too.])
746 AC_MSG_RESULT($libidn)
750 SAVE_LDFLAGS=$LDFLAGS
751 SAVE_CPPFLAGS=$CPPFLAGS
753 [ --with-zlib[[=DIR]] use libz in DIR],
754 [AS_IF([test "$withval" = "no"],
755 [AC_MSG_ERROR([GNUnet requires zlib])],
756 [test "$withval" != "yes"],
759 CPPFLAGS="${CPPFLAGS} -I$withval/include"
760 LDFLAGS="${LDFLAGS} -L$withval/lib"
763 AC_CHECK_HEADER(zlib.h,
765 [AC_MSG_ERROR([GNUnet requires zlib])])
766 AC_CHECK_LIB(z, compress2,
768 AC_DEFINE([HAVE_ZLIB], [], [Have compression library])
769 if test "x${Z_DIR}" != "x"; then
770 Z_CFLAGS="-I${Z_DIR}/include"
771 Z_LIBS="-L${Z_DIR}/lib -lz"
775 [AC_MSG_ERROR([GNUnet requires zlib])])
779 if test "$enable_shared" = "no"
781 AC_MSG_ERROR([GNUnet only works with shared libraries. Sorry.])
795 # test for libunistring
797 if test $HAVE_LIBUNISTRING != yes; then
798 AC_MSG_ERROR([GNUnet requires libunistring])
800 # under emscripten, $gl_libunistring_hexversion is undefined
801 if test "$taler_only" != yes; then
802 if test "x$gl_libunistring_hexversion" = "x" || test "$gl_libunistring_hexversion" -le 2305; then
803 AC_MSG_ERROR([GNUnet requires libunistring >= 0.9.1.1])
806 AC_CHECK_HEADERS([unistr.h],,AC_MSG_ERROR([Compiling GNUnet requires unistr.h (from libunistring) to be installed]))
813 # Checks for standard header files.
817 # Check for headers that are ALWAYS required
818 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]))
822 # Checks for headers that are only required on some systems or opional (and where we do NOT abort if they are not there)
823 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])
825 # FreeBSD requires something more funky for netinet/in_systm.h and netinet/ip.h...
826 AC_CHECK_HEADERS([sys/types.h netinet/in_systm.h netinet/in.h netinet/ip.h],,,
827 [#ifdef HAVE_SYS_TYPES_H
828 #include <sys/types.h>
830 #ifdef HAVE_NETINET_IN_SYSTM_H
831 #include <netinet/in_systm.h>
833 #ifdef HAVE_NETINET_IN_H
834 #include <netinet/in.h>
838 SAVE_LDFLAGS=$LDFLAGS
839 SAVE_CPPFLAGS=$CPPFLAGS
843 AC_MSG_CHECKING(for SQLite)
845 [ --with-sqlite=PFX base of SQLite installation],
846 [AC_MSG_RESULT("$with_sqlite")
851 AC_CHECK_HEADERS(sqlite3.h,
855 LDFLAGS="-L$with_sqlite/lib $LDFLAGS"
856 CPPFLAGS="-I$with_sqlite/include $CPPFLAGS"
857 AC_CHECK_HEADERS(sqlite3.h,
858 EXT_LIB_PATH="-L$with_sqlite/lib $EXT_LIB_PATH"
859 SQLITE_LDFLAGS="-L$with_sqlite/lib"
860 SQLITE_CPPFLAGS="-I$with_sqlite/include"
862 LDFLAGS=$SAVE_LDFLAGS
863 CPPFLAGS=$SAVE_CPPFLAGS
867 [AC_MSG_RESULT([--with-sqlite not specified])
868 AC_CHECK_HEADERS(sqlite3.h, sqlite=true)])
869 AM_CONDITIONAL(HAVE_SQLITE, test x$sqlite = xtrue)
870 AC_SUBST(SQLITE_CPPFLAGS)
871 AC_SUBST(SQLITE_LDFLAGS)
873 LDFLAGS=$SAVE_LDFLAGS
874 CPPFLAGS=$SAVE_CPPFLAGS
878 # even running the check for postgres breaks emscripten ...
879 if test "$taler_only" != yes; then
880 AX_LIB_POSTGRESQL([9.5])
881 if test "$found_postgresql" = "yes"; then
882 CPPFLAGS="$CPPFLAGS $POSTGRESQL_CPPFLAGS"
883 AC_CHECK_HEADERS([libpq-fe.h],
887 AM_CONDITIONAL(HAVE_POSTGRESQL, test x$postgres = xtrue)
890 LDFLAGS=$SAVE_LDFLAGS
891 CPPFLAGS=$SAVE_CPPFLAGS
894 AC_CHECK_TYPES([sigset_t, off_t], [], [], [#include <sys/types.h>])
895 AC_CHECK_TYPES([size_t], [], [], [#include <stdio.h>])
897 if test "$build_target" = "mingw"
899 CYGWIN_MYSQL_MAGIC="#include <mysql/my_global.h>"
905 SAVE_LDFLAGS=$LDFLAGS
906 SAVE_CPPFLAGS=$CPPFLAGS
907 AC_MSG_CHECKING(for mysql)
909 [ --with-mysql=PFX base of MySQL installation],
910 [AC_MSG_RESULT([$with_mysql])
915 AC_CHECK_HEADERS(mysql/mysql.h,
916 AC_CHECK_LIB(mysqlclient, mysql_init,
918 mysql=true), [], [$CYGWIN_MYSQL_MAGIC])
921 LDFLAGS="-L$with_mysql/lib -L$with_mysql/lib/mysql $LDFLAGS $ZLIBS"
922 CPPFLAGS="-I$with_mysql/include $CPPFLAGS"
923 AC_CHECK_HEADERS(mysql/mysql.h,
924 AC_CHECK_LIB(mysqlclient, mysql_init,
925 MYSQL_LDFLAGS="-L$with_mysql/lib -L$with_mysql/lib/mysql"
926 MYSQL_CPPFLAGS="-I$with_mysql/include"
928 mysql=true), [], [$CYGWIN_MYSQL_MAGIC])
932 [AC_MSG_RESULT([--with-mysql not specified])
933 if test -d "/usr/lib64/mysql"; then
934 MYSQL_LIBDIR="/usr/lib64/mysql"
935 elif test -d "/usr/lib/mysql"; then
936 MYSQL_LIBDIR="/usr/lib/mysql"
938 MYSQL_LIBDIR="/usr/lib"
940 LDFLAGS="-L$MYSQL_LIBDIR $LDFLAGS $ZLIBS"
941 AC_CHECK_LIB(mysqlclient, mysql_init,
942 [AC_CHECK_HEADERS(mysql/mysql.h,
943 MYSQL_LDFLAGS="-L$MYSQL_LIBDIR"
946 , [], [$CYGWIN_MYSQL_MAGIC])])
949 AC_SUBST(MYSQL_LDFLAGS)
950 AC_SUBST(MYSQL_CPPFLAGS)
952 # additional version check for mysql
953 AC_ARG_ENABLE(mysql-version-check, [ --disable-mysql-version-check do not check MySQL version],, enable_mysql_version_check=yes)
954 if test "$mysql" = "true" -a "x$enable_mysql_version_check" = "xyes"
956 AC_MSG_CHECKING(mysql version)
957 AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
958 [[$CYGWIN_MYSQL_MAGIC
959 #include <mysql/mysql.h>]],
961 #if (MYSQL_VERSION_ID < 40100)
962 #error needs at least version >= 4.1
964 int main () { return 0; }
966 ],mysql=true,mysql=false)
967 if test "$mysql" = "false"
970 AC_MSG_RESULT([fail, >= 4.1 required])
975 AM_CONDITIONAL(HAVE_MYSQL, test x$mysql = xtrue)
976 AM_CONDITIONAL(HAVE_MYSQLE, test "0" = "1")
979 LDFLAGS=$SAVE_LDFLAGS
980 CPPFLAGS=$SAVE_CPPFLAGS
982 if test "$sqlite" = 0 -a "$mysql" = 0
984 AC_MSG_ERROR([GNUnet requires SQLite or MySQL])
989 AC_MSG_CHECKING([for libmicrohttpd])
990 AC_ARG_WITH(microhttpd,
991 [ --with-microhttpd=PFX base of libmicrohttpd installation],
992 [AC_MSG_RESULT([$with_microhttpd])
993 case $with_microhttpd in
997 AC_CHECK_HEADERS([microhttpd.h],
998 AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
999 AC_CHECK_LIB([microhttpd], [MHD_get_fdset2],
1000 [AC_MSG_CHECKING([for libmicrohttpd >= 0.9.42])
1001 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
1002 #include "$native_srcdir/src/include/platform.h"
1003 #include <microhttpd.h>
1004 #if (MHD_VERSION < 0x0094200)
1005 #error needs at least version 0.9.42
1007 int main () { return 0; }
1011 [AC_MSG_RESULT(failed)])]),
1012 [],[#include "$native_srcdir/src/include/platform.h"
1013 #include <microhttpd.h>]),,
1014 [#include "$native_srcdir/src/include/platform.h"])
1017 LDFLAGS="-L$with_microhttpd/lib $LDFLAGS"
1018 CPPFLAGS="-I$with_microhttpd/include $CPPFLAGS"
1019 AC_CHECK_HEADERS(microhttpd.h,
1020 AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
1021 AC_CHECK_LIB([microhttpd], [MHD_get_fdset2],
1022 EXT_LIB_PATH="-L$with_microhttpd/lib $EXT_LIB_PATH"
1023 [AC_MSG_CHECKING([for libmicrohttpd >= 0.9.42])
1024 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
1025 #include "$native_srcdir/src/include/platform.h"
1026 #include <microhttpd.h>
1027 #if (MHD_VERSION < 0x0094200)
1028 #error needs at least version 0.9.42
1030 int main () { return 0; }
1034 [AC_MSG_RESULT(failed)])]),
1035 [],[#include "$native_srcdir/src/include/platform.h"
1036 #include <microhttpd.h>]),,
1037 [#include "$native_srcdir/src/include/platform.h"])
1041 [AC_MSG_RESULT([--with-microhttpd not specified])
1042 AC_CHECK_HEADERS([microhttpd.h],
1043 AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
1044 AC_CHECK_LIB([microhttpd], [MHD_get_fdset2],
1045 [AC_MSG_CHECKING([for libmicrohttpd >= 0.9.42])
1046 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
1047 #include "$native_srcdir/src/include/platform.h"
1048 #include <microhttpd.h>
1049 #if (MHD_VERSION < 0x0094200)
1050 #error needs at least version 0.9.42
1055 [AC_MSG_RESULT(failed)])]),
1056 [],[#include "$native_srcdir/src/include/platform.h"
1057 #include <microhttpd.h>]),,
1058 [#include "$native_srcdir/src/include/platform.h"])])
1059 AM_CONDITIONAL(HAVE_MHD, test x$lmhd = x1)
1060 AC_DEFINE_UNQUOTED([HAVE_MHD], $lmhd, [We have libmicrohttpd])
1062 AM_CONDITIONAL(HAVE_JSON, [test x$jansson = x1])
1067 # check for python & pexpect (used for some testcases only)
1068 AM_PATH_PYTHON([2.6],, [:])
1069 AM_CONDITIONAL([HAVE_PYTHON], [test "$PYTHON" != :])
1072 AM_GNU_GETTEXT([external])
1073 AM_GNU_GETTEXT_VERSION([0.18.1])
1075 # Checks for standard typedefs, structures, and compiler characteristics.
1084 AC_CHECK_MEMBER([struct sockaddr_in.sin_len],
1085 [ AC_DEFINE(HAVE_SOCKADDR_IN_SIN_LEN, 1, [Do we have sockaddr_in.sin_len?])
1089 #include <sys/types.h>
1090 #include <sys/socket.h>
1091 #include <netinet/in.h>
1094 AC_CHECK_MEMBER([struct sockaddr_un.sun_len],
1095 [ AC_DEFINE(HAVE_SOCKADDR_UN_SUN_LEN, 1, [Do we have sockaddr_un.sun_len?])
1099 #include <sys/types.h>
1100 #include <sys/socket.h>
1106 # Checks for library functions.
1107 AC_FUNC_CLOSEDIR_VOID
1109 AC_PROG_GCC_TRADITIONAL
1111 AC_FUNC_SELECT_ARGTYPES
1121 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])
1127 GN_LIBINTL="$LTLIBINTL"
1128 AC_ARG_ENABLE(framework, [ --enable-framework enable Mac OS X framework build helpers],enable_framework_build=$enableval)
1129 AM_CONDITIONAL(WANT_FRAMEWORK, test x$enable_framework_build = xyes)
1130 if test x$enable_framework_build = xyes
1132 AC_DEFINE([FRAMEWORK_BUILD], 1, [Build a Mac OS X Framework])
1133 GN_INTLINCL='-I$(top_srcdir)/src/intlemu'
1134 GN_LIBINTL='$(top_builddir)/src/intlemu/libintlemu.la -framework CoreFoundation'
1135 AC_LIB_APPENDTOVAR([CPPFLAGS], [$GN_INTLINCL])
1138 GN_LIB_LDFLAGS="-export-dynamic -no-undefined"
1139 GN_PLUGIN_LDFLAGS="-export-dynamic -avoid-version -module -no-undefined"
1141 AC_SUBST(GN_LIB_LDFLAGS)
1142 AC_SUBST(GN_PLUGIN_LDFLAGS)
1143 AC_SUBST(GN_INTLINCL)
1144 AC_SUBST(GN_LIBINTL)
1149 AC_SUBST(EXT_LIB_PATH)
1154 AC_SUBST(EXT_LIB_PATH)
1158 AC_MSG_CHECKING(for sudo)
1160 [ --with-sudo=PATH path to sudo binary (or just yes)],
1161 [AC_MSG_RESULT("$with_sudo")
1170 SUDO_BINARY=$with_sudo
1174 [AC_MSG_RESULT([no])])
1175 AC_SUBST(SUDO_BINARY)
1176 AM_CONDITIONAL([HAVE_SUDO], [test "x$SUDO_BINARY" != "x" -o -w /])
1179 # test for gnunetdns group name
1180 GNUNETDNS_GROUP=gnunetdns
1181 AC_MSG_CHECKING(for gnunetdns group name)
1182 AC_ARG_WITH(gnunetdns,
1183 [ --with-gnunetdns=GRPNAME name for gnunetdns group],
1184 [AC_MSG_RESULT("$with_gnunetdns")
1185 case $with_gnunetdns in
1187 GNUNETDNS_GROUP=gnunet
1190 GNUNETDNS_GROUP=gnunetdns
1193 GNUNETDNS_GROUP=$with_gnunetdns
1197 [AC_MSG_RESULT([gnunetdns])])
1198 AC_SUBST(GNUNETDNS_GROUP)
1205 AC_MSG_CHECKING(for gnutls)
1207 [ --with-gnutls=PFX base of gnutls installation],
1208 [AC_MSG_RESULT([$with_gnutls])
1209 case $with_gnutls in
1213 AC_CHECK_HEADERS([gnutls/abstract.h],
1214 AC_CHECK_LIB([gnutls], [gnutls_priority_set],
1216 AC_CHECK_HEADERS([gnutls/dane.h],
1217 AC_CHECK_LIB([gnutls-dane], [dane_verify_crt_raw],
1221 LDFLAGS="-L$with_gnutls/lib $LDFLAGS"
1222 CPPFLAGS="-I$with_gnutls/include $CPPFLAGS"
1223 AC_CHECK_HEADERS([gnutls/abstract.h],
1224 AC_CHECK_LIB([gnutls], [gnutls_priority_set],
1225 EXT_LIB_PATH="-L$with_gnutls/lib $EXT_LIB_PATH"
1227 AC_CHECK_HEADERS([gnutls/dane.h],
1228 AC_CHECK_LIB([gnutls-dane], [dane_verify_crt_raw],
1233 [AC_MSG_RESULT([--with-gnutls not specified])
1234 AC_CHECK_HEADERS([gnutls/abstract.h],
1235 AC_CHECK_LIB([gnutls], [gnutls_priority_set],
1237 AC_CHECK_HEADERS([gnutls/dane.h],
1238 AC_CHECK_LIB([gnutls-dane], [dane_verify_crt_raw],
1241 AM_CONDITIONAL(HAVE_GNUTLS, test x$gnutls = xtrue)
1242 AC_DEFINE_UNQUOTED([HAVE_GNUTLS], $gnutls, [We have GnuTLS])
1243 AM_CONDITIONAL(HAVE_GNUTLS_DANE, test x$gnutls_dane = x1)
1244 AC_DEFINE_UNQUOTED([HAVE_GNUTLS_DANE], $gnutls_dane, [We have GnuTLS with DANE support])
1247 # Test if we are building for superMUC
1248 AC_MSG_CHECKING(if GNUnet is being configured to run on the SuperMUC)
1249 AC_ARG_ENABLE([supermuc],
1250 [AS_HELP_STRING([--enable-supermuc],
1251 [build GNUnet with support to run on the SuperMUC (default is NO)])],
1252 [if test "x$enable_supermuc" = "xno"
1259 enable_supermuc=no])
1260 AC_MSG_RESULT($enable_SUPERMUC)
1261 AM_CONDITIONAL([ENABLE_SUPERMUC], [test "x$supermuc" = "x1"])
1262 AC_DEFINE_UNQUOTED([ENABLE_SUPERMUC], [$supermuc], [Build with support for SuperMUC])
1264 # Check if NSE has to send timestamp information to testbed logger for
1265 # generating histogram of messages received
1266 AC_MSG_CHECKING(if NSE has to send timestamp information to testbed logger)
1267 AC_ARG_ENABLE([nse-histogram],
1268 [AS_HELP_STRING([--enable-nse-histogram],
1269 [have NSE send timestamp information to testbed logger for generating
1270 histogram of received messages. NOT useful for production (default is
1272 [if test "x$enableval" = "xno"
1279 enable_nse_histogram=no])
1280 AC_MSG_RESULT($enable_nse_histogram)
1281 AM_CONDITIONAL([ENABLE_NSE_HISTOGRAM], [test "x$nse_histogram" = "x1"])
1282 AC_DEFINE_UNQUOTED([ENABLE_NSE_HISTOGRAM], [$nse_histogram],
1283 [have NSE send timestamp information to testbed logger])
1285 # should 'make check' run tests?
1286 AC_MSG_CHECKING(whether to run tests)
1287 AC_ARG_ENABLE([testruns],
1288 [AS_HELP_STRING([--disable-testruns], [disable running tests on make check (default is YES)])],
1289 [enable_tests_run=${enableval}],
1290 [enable_tests_run=yes])
1291 AC_MSG_RESULT($enable_test_run)
1292 AM_CONDITIONAL([ENABLE_TEST_RUN], [test "x$enable_tests_run" = "xyes"])
1295 # should monkey be used when running (certain) services?
1296 AC_MSG_CHECKING(whether to run with monkey)
1297 AC_ARG_ENABLE([monkey],
1298 [AS_HELP_STRING([--enable-monkey], [enable running with monkey])],
1299 [enable_monkey=${enableval}],
1301 AC_MSG_RESULT($enable_monkey)
1302 AM_CONDITIONAL([ENABLE_MONKEY], [test "x$enable_monkey" = "xyes"])
1303 if test "x$enable_monkey" = "xyes"
1305 MONKEYPREFIX="pathologist -d $(eval echo ${datarootdir}/gnunet/gnunet.sqlite) -p 30 --"
1309 AC_SUBST(MONKEYPREFIX)
1312 # should expensive tests be run?
1313 AC_MSG_CHECKING(whether to run expensive tests)
1314 AC_ARG_ENABLE([expensivetests],
1315 [AS_HELP_STRING([--enable-expensivetests], [enable running expensive testcases])],
1316 [enable_expensive=${enableval}],
1317 [enable_expensive=no])
1318 AC_MSG_RESULT($enable_expensive)
1319 AM_CONDITIONAL([HAVE_EXPENSIVE_TESTS], [test "x$enable_expensive" = "xyes"])
1321 # should ports be open for Java services?
1322 AC_MSG_CHECKING(whether to enable ports for gnunet-java)
1323 AC_ARG_ENABLE([javaports],
1324 [AS_HELP_STRING([--enable-javaports], [use non-zero ports for services with Java bindings (default is NO)])],
1325 [enable_java_ports=${enableval}],
1326 [enable_java_ports=no])
1327 AC_MSG_RESULT($enable_java_ports)
1328 if test "x$enable_java_ports" = "xyes"
1332 JAVAPORT="$UNIXONLY"
1336 # should benchmarks be run?
1337 AC_MSG_CHECKING(whether to run benchmarks during make check)
1338 AC_ARG_ENABLE([benchmarks],
1339 [AS_HELP_STRING([--enable-benchmarks], [enable running benchmarks during make check])],
1340 [enable_benchmarks=${enableval}],
1341 [enable_benchmarks=no])
1342 AC_MSG_RESULT($enable_benchmarks)
1343 AM_CONDITIONAL([HAVE_BENCHMARKS], [test "x$enable_benchmarks" = "xyes"])
1345 # should gnunet-testing be compiled
1346 AC_MSG_CHECKING(wether to compile gnunet-testing)
1347 AC_ARG_ENABLE([testing],
1348 [AS_HELP_STRING([--disable-testing], [do not build gnunet-testing])],
1349 [enable_testing=${enableval}],
1350 [enable_testing=yes])
1351 AC_MSG_RESULT($enable_testing)
1352 AM_CONDITIONAL([HAVE_TESTING], [test "x$enable_testing" = "xyes"])
1354 # should experimental code be compiled (code that may not yet compile)?
1355 AC_MSG_CHECKING(whether to compile experimental code)
1356 AC_ARG_ENABLE([experimental],
1357 [AS_HELP_STRING([--enable-experimental], [enable compiling experimental code])],
1358 [enable_experimental=${enableval}],
1359 [enable_experimental=no])
1360 AC_MSG_RESULT($enable_experimental)
1361 AM_CONDITIONAL([HAVE_EXPERIMENTAL], [test "x$enable_experimental" = "xyes"])
1363 # should malicious code be compiled (should only be used for testing)?
1364 AC_MSG_CHECKING(whether to compile malicious code)
1365 AC_ARG_ENABLE([malicious],
1366 [AS_HELP_STRING([--enable-malicious], [enable compiling malicious code])],
1367 [if test "x$enableval" = "xno"
1374 enable_malicious=no])
1375 AC_MSG_RESULT($enable_malicious)
1376 AM_CONDITIONAL([ENABLE_MALICIOUS], [test 1=$malicious])
1377 AC_DEFINE_UNQUOTED([ENABLE_MALICIOUS], [$malicious],
1378 [enable compilation of malicious code])
1380 # should services be started on demand when needed? Some services may choose to
1381 # never start by default and it is up to the service/module developer to decide
1382 # by having "START_ON_DEMAND = NO" instead of "START_ON_DEMAND = @START_ON_DEMAND@"
1383 # in the service/module's conf.in file.
1384 # See also FORCESTART for an unconditional immediate start.
1385 START_ON_DEMAND="YES"
1386 AC_MSG_CHECKING(whether to start peer's services on demand by default)
1387 AC_ARG_ENABLE([autostart],
1388 [AS_HELP_STRING([--disable-autostart], [do not start peer's services by default])],
1389 [enable_autostart=${enableval}
1390 if test "x$enable_autostart" == "xno"
1392 START_ON_DEMAND="NO"
1395 [enable_autostart=yes])
1396 AC_MSG_RESULT($enable_autostart)
1397 #AM_CONDITIONAL([HAVE_START_ON_DEMAND], [test "x$enable_autostart" = "xyes"])
1398 AC_SUBST(START_ON_DEMAND)
1400 # should memory statistics be kept (very expensive CPU-wise!)
1401 AC_MSG_CHECKING(whether to create expensive statistics on memory use)
1402 AC_ARG_ENABLE([heapstats],
1403 [AS_HELP_STRING([--enable-heapstats], [enable expensive heap statistics])],
1404 [enable_heapstats=1],
1405 [enable_heapstats=0])
1406 AC_MSG_RESULT($enable_heapstats)
1407 AC_DEFINE_UNQUOTED([ENABLE_HEAP_STATISTICS],$enable_heapstats,[enable expensive heap statistics])
1409 # should code be enabled that works around missing OS functionality on Windows?
1410 # used for test cases
1411 if test $build_target = "mingw"
1417 [#include <ws2tcpip.h>
1419 int s = socket (0, 0, 0);])
1421 AC_DEFINE_UNQUOTED([HAVE_SOCKET],1,[Define this if socket() is available])
1423 AC_DEFINE_UNQUOTED([HAVE_SOCKET],0,[Define this if socket() is available])
1428 [#include <ws2tcpip.h>
1430 int s = select (0, NULL, NULL, NULL, NULL);])
1432 AC_DEFINE_UNQUOTED([HAVE_SELECT],1,[Define this if select() is available])
1434 AC_DEFINE_UNQUOTED([HAVE_SELECT],0,[Define this if select() is available])
1439 [#include <ws2tcpip.h>
1442 char *s = inet_ntoa (i);])
1444 AC_DEFINE_UNQUOTED([HAVE_INET_NTOA],1,[Define this if inet_ntoa() is available])
1446 AC_DEFINE_UNQUOTED([HAVE_INET_NTOA],0,[Define this if inet_ntoa() is available])
1451 [#include <ws2tcpip.h>
1453 int s = getnameinfo (NULL, 0, NULL, 0, NULL, 0, 0);])
1455 AC_DEFINE_UNQUOTED([HAVE_GETNAMEINFO],1,[Define this if getnameinfo() is available])
1457 AC_DEFINE_UNQUOTED([HAVE_GETNAMEINFO],0,[Define this if getnameinfo() is available])
1462 [#include <ws2tcpip.h>
1464 int s = gethostname (NULL, 0);])
1466 AC_DEFINE_UNQUOTED([HAVE_GETHOSTNAME],1,[Define this if gethostname() is available])
1468 AC_DEFINE_UNQUOTED([HAVE_GETHOSTNAME],0,[Define this if gethostname() is available])
1473 [#include <ws2tcpip.h>
1475 void *s = gethostbyname (NULL);])
1477 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYNAME],1,[Define this if gethostbyname() is available])
1479 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYNAME],0,[Define this if gethostbyname() is available])
1484 [#include <ws2tcpip.h>
1486 void *s = gethostbyaddr (NULL, 0, 0);])
1488 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYADDR],1,[Define this if gethostbyaddr() is available])
1490 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYADDR],0,[Define this if gethostbyaddr() is available])
1495 [#include <ws2tcpip.h>
1497 int s = getaddrinfo (NULL, NULL, NULL, NULL);])
1499 AC_DEFINE_UNQUOTED([HAVE_GETADDRINFO],1,[Define this if getaddrinfo() is available])
1501 AC_DEFINE_UNQUOTED([HAVE_GETADDRINFO],1,[Define this if getaddrinfo() is available])
1505 AC_MSG_CHECKING(whether to enable windows workarounds)
1506 AC_ARG_ENABLE([windows_workarounds],
1507 [AS_HELP_STRING([--enable-windows_workarounds], [enable workarounds used on Windows (only useful for test cases)])],
1508 [enable_workarounds=${enableval}],
1509 [enable_workarounds=no])
1510 AC_MSG_RESULT($enable_workarounds)
1511 if test x$enable_windows_workarounds = "xyes"
1518 AC_DEFINE_UNQUOTED([ENABLE_WINDOWS_WORKAROUNDS], $workarounds, [enable workarounds used on Windows (only useful for test cases)])
1521 AC_MSG_CHECKING(whether to compile with support for code coverage analysis)
1522 AC_ARG_ENABLE([coverage],
1523 AS_HELP_STRING([--enable-coverage],
1524 [compile the library with code coverage support]),
1525 [use_gcov=${enableval}],
1527 AC_MSG_RESULT($use_gcov)
1528 AM_CONDITIONAL([USE_COVERAGE], [test "x$use_gcov" = "xyes"])
1532 # TODO: git blame says this predates our switch to git. git-svn should be adjusted to simply git, or
1533 # an external script that does the job.
1534 AC_PATH_PROG(svnversioncommand, svnversion)
1535 AC_PATH_PROG(gitcommand, git)
1536 AC_MSG_CHECKING(for source being under a VCS)
1539 AS_IF([test ! "X$svnversioncommand" = "X"],
1541 svn_version=$(cd $srcdir ; $svnversioncommand -n 2>/dev/null)
1543 AS_IF([test ! "X$gitcommand" = "X"],
1545 gitsvn_version=$(cd $srcdir ; git log -1 2>/dev/null | grep "git-svn-id" | sed -e 's/.*@\([[0-9]]\+\) .*/\1/')
1547 AS_IF([test "X$svn_version" = "X" -o "X$svn_version" = "Xexported" -o "X$svn_version" = "XUnversioned directory"],
1549 AS_IF([test "X$gitsvn_version" = "X"],
1552 vcs_version="\"release\""
1555 vcs_name="yes, git-svn"
1556 vcs_version="\"svn-r$gitsvn_version\""
1561 vcs_version="\"svn-r$svn_version\""
1563 AC_MSG_RESULT($vcs_name)
1565 AC_MSG_CHECKING(VCS version)
1566 AC_MSG_RESULT($vcs_version)
1567 AC_DEFINE_UNQUOTED(VCS_VERSION, [$vcs_version], [VCS revision/hash or tarball version])
1574 doc/doxygen/Makefile
1575 doc/documentation/Makefile
1583 src/ats-tool/Makefile
1584 src/ats-tests/Makefile
1585 src/auction/Makefile
1588 src/cadet/cadet.conf
1591 src/consensus/Makefile
1592 src/consensus/consensus.conf
1593 src/conversation/Makefile
1594 src/conversation/conversation.conf
1596 src/datacache/Makefile
1597 src/datastore/Makefile
1598 src/datastore/datastore.conf
1604 src/fragmentation/Makefile
1609 src/gns/nss/Makefile
1610 src/gnsrecord/Makefile
1612 src/identity/Makefile
1613 src/identity/identity.conf
1614 src/credential/Makefile
1615 src/credential/credential.conf
1616 src/include/Makefile
1617 src/integration-tests/Makefile
1619 src/jsonapi/Makefile
1620 src/hostlist/Makefile
1621 src/multicast/Makefile
1622 src/multicast/multicast.conf
1625 src/namecache/Makefile
1626 src/namecache/namecache.conf
1627 src/namestore/Makefile
1628 src/namestore/namestore.conf
1631 src/nat-auto/Makefile
1632 src/nat-auto/nat-auto.conf
1635 src/peerinfo/Makefile
1636 src/peerinfo/peerinfo.conf
1637 src/peerinfo-tool/Makefile
1638 src/peerstore/Makefile
1639 src/peerstore/peerstore.conf
1641 src/psycutil/Makefile
1644 src/psycstore/Makefile
1645 src/psycstore/psycstore.conf
1648 src/regex/regex.conf
1649 src/revocation/Makefile
1650 src/revocation/revocation.conf
1653 src/secretsharing/Makefile
1654 src/secretsharing/secretsharing.conf
1655 src/scalarproduct/Makefile
1656 src/scalarproduct/scalarproduct.conf
1660 src/social/social.conf
1662 src/statistics/Makefile
1663 src/statistics/statistics.conf
1664 src/template/Makefile
1665 src/testbed/Makefile
1666 src/testbed/testbed.conf
1667 src/testbed-logger/Makefile
1668 src/testbed-logger/testbed-logger.conf
1669 src/testing/Makefile
1670 src/topology/Makefile
1671 src/transport/Makefile
1672 src/transport/transport.conf
1675 src/util/resolver.conf
1678 src/zonemaster/Makefile
1679 src/zonemaster/zonemaster.conf
1682 src/identity-attribute/Makefile
1683 src/identity-provider/Makefile
1685 pkgconfig/gnunetarm.pc
1686 pkgconfig/gnunetats.pc
1687 pkgconfig/gnunetblock.pc
1688 pkgconfig/gnunetcadet.pc
1689 pkgconfig/gnunetconsensus.pc
1690 pkgconfig/gnunetconversation.pc
1691 pkgconfig/gnunetcore.pc
1692 pkgconfig/gnunetdatacache.pc
1693 pkgconfig/gnunetdatastore.pc
1694 pkgconfig/gnunetdht.pc
1695 pkgconfig/gnunetdns.pc
1696 pkgconfig/gnunetdnsparser.pc
1697 pkgconfig/gnunetdnsstub.pc
1698 pkgconfig/gnunetdv.pc
1699 pkgconfig/gnunetenv.pc
1700 pkgconfig/gnunetfragmentation.pc
1701 pkgconfig/gnunetfs.pc
1702 pkgconfig/gnunetgns.pc
1703 pkgconfig/gnunethello.pc
1704 pkgconfig/gnunetidentity.pc
1705 pkgconfig/gnunetmicrophone.pc
1706 pkgconfig/gnunetmulticast.pc
1707 pkgconfig/gnunetmysql.pc
1708 pkgconfig/gnunetnamestore.pc
1709 pkgconfig/gnunetnat.pc
1710 pkgconfig/gnunetnse.pc
1711 pkgconfig/gnunetpeerinfo.pc
1712 pkgconfig/gnunetpq.pc
1713 pkgconfig/gnunetpsyc.pc
1714 pkgconfig/gnunetpsycstore.pc
1715 pkgconfig/gnunetregex.pc
1716 pkgconfig/gnunetrevocation.pc
1717 pkgconfig/gnunetrps.pc
1718 pkgconfig/gnunetscalarproduct.pc
1719 pkgconfig/gnunetset.pc
1720 pkgconfig/gnunetsocial.pc
1721 pkgconfig/gnunetspeaker.pc
1722 pkgconfig/gnunetstatistics.pc
1723 pkgconfig/gnunettestbed.pc
1724 pkgconfig/gnunettesting.pc
1725 pkgconfig/gnunettransport.pc
1726 pkgconfig/gnunettun.pc
1727 pkgconfig/gnunetutil.pc
1728 pkgconfig/gnunetvpn.pc
1734 # warn user if mysql found but not used due to version
1735 if test "$mysqlfail" = "true"
1737 AC_MSG_NOTICE([WARNING: MySQL found, but too old. MySQL support will not be compiled.])
1741 if test "x$sqlite" = "x0"
1743 AC_MSG_ERROR([ERROR: sqlite3 not found, but sqlite3 is required.])
1747 if test "$gnurl" = "0"
1749 if test "x$curl" = "xfalse"
1751 AC_MSG_NOTICE([WARNING: libgnurl not found. http client support will not be compiled.])
1752 AC_MSG_WARN([ERROR: libgnurl not found. hostlist daemon will not be compiled, and you probably WANT the hostlist daemon])
1754 AC_MSG_NOTICE([WARNING: libgnurl not found, trying to use libcurl-gnutls instead.])
1760 if test "x$bluetooth" = "x0"
1762 AC_MSG_NOTICE([WARNING: bluetooth library not found. bluetooth support will not be compiled.])
1766 if test "x$jansson" = "x0"
1768 AC_MSG_NOTICE([WARNING: jansson library not found. json support will not be compiled.])
1772 if test x$gnutls != xtrue
1774 AC_MSG_NOTICE([WARNING: GnuTLS not found, gnunet-gns-proxy will not be built])
1776 if test "x$gnutls_dane" != "x1"
1778 AC_MSG_NOTICE([WARNING: GnuTLS has no DANE support, DANE validation will not be possible])
1783 if test "x$enable_java_ports" = "xyes"
1785 AC_MSG_NOTICE([NOTICE: Opening ports for gnunet-java bindings by default.])
1789 if test "x$lmhd" != "x1"
1791 AC_MSG_NOTICE([WARNING: libmicrohttpd not found, http transport will not be installed.])
1795 if test "x$conversation_backend" = "xnone"
1797 if test "x$pulse" != "x1"
1799 AC_MSG_NOTICE([WARNING: libpulse(audio) not found, conversation will not be built.])
1801 if test "x$opus" != "x1"
1803 AC_MSG_NOTICE([WARNING: libopus not found, conversation will not be built.])
1805 if test "x$gst" != "x1"
1807 AC_MSG_NOTICE([WARNING: GStreamer not found, conversation will not be built.])
1811 if test "$extractor" != 1
1813 AC_MSG_WARN([ERROR: libextractor not found, but various file-sharing functions require it])
1816 AC_MSG_NOTICE([NOTICE: Database support is set to MySQL: $mysql, SQLite: $sqlite, Postgres: $postgres])
1818 if test "$enable_framework_build" = "yes"
1820 AC_MSG_NOTICE([Mac OS X framework build enabled.])
1823 AC_MSG_NOTICE([********************************************
1824 Please make sure NOW that you have created a user and group 'gnunet'
1825 and additionally a group 'gnunetdns'. On Debian and Ubuntu GNU/Linux, type:
1827 adduser --system --group --disabled-login --home /var/lib/gnunet gnunet
1829 Make sure that '/var/lib/gnunet' is owned (and writable) by user
1830 'gnunet'. Then, you can compile GNUnet with
1833 After that, run (if necessary as 'root')
1835 to install everything.
1837 Each GNUnet user should be added to the 'gnunet' group (may
1838 require fresh login to come into effect):
1839 adduser USERNAME gnunet
1840 (run the above command as root once for each of your users, replacing
1841 "USERNAME" with the respective login names). If you have a global IP
1842 address, no further configuration is required.
1844 For more detailed setup instructions, see https://gnunet.org/installation
1846 Optionally, download and compile gnunet-gtk to get a GUI for
1847 file-sharing and configuration. This is particularly recommended
1848 if your network setup is non-trivial, as gnunet-setup can be
1849 used to test in the GUI if your network configuration is working.
1850 gnunet-setup should be run as the "gnunet" user under X. As it
1851 does very little with the network, running it as "root" is likely
1852 also harmless. You can also run it as a normal user, but then
1853 you have to copy ~/.gnunet/gnunet.conf" over to the "gnunet" user's
1854 home directory in the end.
1856 Once you have configured your peer, run (as the 'gnunet' user)
1858 to start the peer. You can then run the various GNUnet-tools as
1859 your "normal" user (who should only be in the group 'gnunet').
1860 ********************************************])