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 getaddrinfo_a"
63 # Srcdir in a form that native compiler understands (i.e. DOS path on W32)
68 *darwin* | *rhapsody* | *macosx*)
69 AC_DEFINE_UNQUOTED(DARWIN,1,[This is an Apple Darwin system])
70 CPPFLAGS="-D_APPLE_C_SOURCE $CPPFLAGS"
71 CFLAGS="-fno-common $CFLAGS"
72 AC_MSG_WARN([WARNING: The VPN application cannot be compiled on your OS])
74 DEFAULT_INTERFACE="\"en0\""
80 AC_DEFINE_UNQUOTED(LINUX,1,[This is a Linux kernel])
88 AC_DEFINE_UNQUOTED(SOMEBSD,1,[This is a BSD system])
89 AC_DEFINE_UNQUOTED(FREEBSD,1,[This is a FreeBSD system])
90 CFLAGS="-D_THREAD_SAFE $CFLAGS"
91 build_target="freebsd"
97 AC_DEFINE_UNQUOTED(SOMEBSD,1,[This is a BSD system])
98 AC_DEFINE_UNQUOTED(OPENBSD,1,[This is an OpenBSD system])
99 LIBS=`echo $LIBS | sed -e "s/-ldl//"`
100 build_target="openbsd"
106 AC_DEFINE_UNQUOTED(SOMEBSD,1,[This is a BSD system])
107 AC_DEFINE_UNQUOTED(NETBSD,1,[This is a NetBSD system])
113 AC_DEFINE_UNQUOTED(SOLARIS,1,[This is a Solaris system])
114 AC_DEFINE_UNQUOTED(_REENTRANT,1,[Need with solaris or errno doesnt work])
115 AC_CHECK_LIB(resolv, res_init)
116 AC_CHECK_LIB(rt, nanosleep)
117 build_target="solaris"
123 AC_DEFINE_UNQUOTED(LINUX,1,[This is a Linux kernel])
124 CFLAGS="-D_REENTRANT -fPIC -pipe $CFLAGS"
131 AC_DEFINE_UNQUOTED(CYGWIN,1,[This is a Cygwin system])
132 AC_DEFINE_UNQUOTED(WINDOWS,1,[This is a Windows system])
133 AC_CHECK_LIB(intl, gettext)
134 CFLAGS="-mms-bitfields $CFLAGS"
135 build_target="cygwin"
142 AC_DEFINE_UNQUOTED(MINGW,1,[This is a MinGW system])
143 AC_DEFINE_UNQUOTED(WINDOWS,1,[This is a Windows system])
144 AC_DEFINE_UNQUOTED(_WIN32,1,[This is a Windows system])
145 AC_CHECK_LIB(intl, gettext)
146 LDFLAGS="$LDFLAGS -Wl,--export-all-symbols"
147 LIBS="$LIBS -lws2_32 -lplibc -lgnurx -lole32"
148 CFLAGS="-mms-bitfields $CFLAGS"
149 CPPFLAGS="-D_WIN32_WINNT=0x0501 -DHAVE_STAT64=1 -D__USE_MINGW_ANSI_STDIO=1 $CPPFLAGS"
156 native_srcdir=$(cd $srcdir; pwd -W)
159 AC_DEFINE_UNQUOTED(GNU,1,[This is a GNU system])
164 AC_MSG_RESULT(Unrecognised OS $host_os)
165 AC_DEFINE_UNQUOTED(OTHEROS,1,[Some strange OS])
169 AC_DEFINE_UNQUOTED([GNUNET_DEFAULT_INTERFACE], $DEFAULT_INTERFACE, [This should be the default choice for the name of the first network interface])
170 AC_SUBST(DEFAULT_INTERFACE)
172 # Disable TCP-based IPC on systems that support UNIX domain
173 # sockets in default configuratin:
177 AC_MSG_CHECKING([for build target])
178 AM_CONDITIONAL(DARWIN, test "$build_target" = "darwin")
179 AM_CONDITIONAL(CYGWIN, test "$build_target" = "cygwin")
180 AM_CONDITIONAL(MINGW, test "$build_target" = "mingw")
181 AM_CONDITIONAL(SOLARIS, test "$build_target" = "solaris")
182 AM_CONDITIONAL(XFREEBSD, test "$build_target" = "freebsd")
183 AM_CONDITIONAL(OPENBSD, test "$build_target" = "openbsd")
184 AM_CONDITIONAL(LINUX, test "$build_target" = "linux")
185 AM_CONDITIONAL(GNU, test "$build_target" = "gnu")
187 AC_MSG_RESULT([$build_target])
188 AC_SUBST(build_target)
189 AM_CONDITIONAL([am__fastdepOBJC], false)
190 AC_UNALIGNED_64_ACCESS
192 # some other checks for standard libs
193 AC_SEARCH_LIBS([gethostbyname], [nsl ws2_32])
194 AC_CHECK_LIB(socket, socket)
196 AC_CHECK_LIB(c, getloadavg, AC_DEFINE(HAVE_GETLOADAVG,1,[getloadavg supported]))
198 AC_CHECK_PROG(VAR_GETOPT_BINARY, getopt, true, false)
199 AM_CONDITIONAL(HAVE_GETOPT_BINARY, $VAR_GETOPT_BINARY)
201 AC_CHECK_PROG(VAR_SSH_BINARY, ssh, true, false)
202 AM_CONDITIONAL(HAVE_SSH_BINARY, $VAR_SSH_BINARY)
203 AM_CONDITIONAL(HAVE_SSH_KEY, ssh -D 12345 -o "BatchMode yes" -o "UserKnownHostsFile /tmp/gnunet_test_cosks_ssh_garbage" -o "StrictHostKeyChecking no" 127.0.0.1 echo -n)
204 rm -f /tmp/gnunet_test_cosks_ssh_garbage
206 # iptables is a soft requirement to run tests
207 AC_PATH_TARGET_TOOL(VAR_IPTABLES_BINARY, iptables, false)
209 if test x"$VAR_IPTABLES_BINARY" != x"false"
211 AC_DEFINE_UNQUOTED([IPTABLES], "$VAR_IPTABLES_BINARY", [Path to iptables])
213 AC_MSG_WARN([warning: 'iptables' not found.])
217 AC_CHECK_PROG(VAR_IFCONFIG_BINARY, ifconfig, true, false)
218 AC_MSG_WARN([warning: 'ifconfig' not found.])
220 AC_CHECK_MEMBER(struct tm.tm_gmtoff,
221 [AC_DEFINE(HAVE_TM_GMTOFF, 1,
222 [Define if struct tm has the tm_gmtoff member.])],
226 AC_CHECK_DECLS([_stati64])
228 # 'save' libs; only those libs found so far will be
229 # linked against _everywhere_. For the others, we
230 # will be more selective!
234 AC_CHECK_LIB(anl, getaddrinfo_a, [have_addrinfo_a=1 AC_DEFINE(HAVE_GETADDRINFO_A,1,[getaddrinfo_a supported])])
235 AM_CONDITIONAL(HAVE_GETADDRINFO_A, [test "$have_addrinfo_a" = 1])
237 # tests only run on Windows
238 if test "x$build_target" = "xmingw"
240 AC_CHECK_LIB(plibc, plibc_init, [], [AC_MSG_ERROR([GNUnet requires PlibC on Windows])])
241 AC_CHECK_LIB(gnurx, regexec, [], [AC_MSG_ERROR([GNUnet requires libgnurx on Windows])])
247 NEED_LIBGCRYPT_VERSION=1.6.0
250 AM_PATH_LIBGCRYPT("$NEED_LIBGCRYPT_API:$NEED_LIBGCRYPT_VERSION", gcrypt=1)
251 AC_CHECK_DECLS([gcry_mpi_set_opaque_copy], [], [], [[#include <gcrypt.h>]])
257 *** You need libgcrypt to build this program.
258 ** This library is for example available at
259 *** ftp://ftp.gnupg.org/gcrypt/libgcrypt/
260 *** (at least version $NEED_LIBGCRYPT_VERSION (API $NEED_LIBGCRYPT_API)
264 AC_DEFINE_UNQUOTED([NEED_LIBGCRYPT_VERSION], "$NEED_LIBGCRYPT_VERSION", [required libgcrypt version])
266 # TODO: add check for VERSION
267 # TODO: add check for alternatives
268 # TODO: add switch to skip documentation building
269 AM_MISSING_PROG([MAKEINFO], [makeinfo])
271 # Adam shostack suggests the following for Windows:
272 # -D_FORTIFY_SOURCE=2 -fstack-protector-all
273 AC_ARG_ENABLE(gcc-hardening,
274 AS_HELP_STRING(--enable-gcc-hardening, enable compiler security checks),
275 [if test x$enableval = xyes; then
276 CFLAGS="$CFLAGS -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fstack-protector-all"
277 CFLAGS="$CFLAGS -fwrapv -fPIE -Wstack-protector"
278 CFLAGS="$CFLAGS --param ssp-buffer-size=1"
279 LDFLAGS="$LDFLAGS -pie"
283 # Linker hardening options
284 # Currently these options are ELF specific - you can't use this with MacOSX
285 AC_ARG_ENABLE(linker-hardening,
286 AS_HELP_STRING(--enable-linker-hardening, enable linker security fixups),
287 [if test x$enableval = xyes; then
288 LDFLAGS="$LDFLAGS -z relro -z now"
292 AC_ARG_ENABLE(sanitizer,
293 AS_HELP_STRING(--enable-sanitizer, enable Address Sanitizer and Undefined Behavior Sanitizer),
294 [if test x$enableval = xyes; then
295 LDFLAGS="$CFLAGS -fsanitize=address,undefined -fno-omit-frame-pointer"
299 extra_logging=GNUNET_NO
300 AC_ARG_ENABLE([logging],
301 AS_HELP_STRING([--enable-logging@<:@=value@:>@],[Enable logging calls. Possible values: yes,no,verbose,veryverbose ('yes' is the default)]),
302 [AS_IF([test "x$enableval" = "xyes"], [],
303 [test "x$enableval" = "xno"], [AC_DEFINE([GNUNET_CULL_LOGGING],[],[Define to cull all logging calls])],
304 [test "x$enableval" = "xverbose"], [extra_logging=GNUNET_YES]
305 [test "x$enableval" = "xveryverbose"], [extra_logging=\(GNUNET_YES+1\)])
307 AC_DEFINE_UNQUOTED([GNUNET_EXTRA_LOGGING],[$extra_logging],[1 if extra logging is enabled, 2 for very verbose extra logging, 0 otherwise])
309 # should memory poisoning be enabled?
310 AC_MSG_CHECKING(whether to poison freed memory)
311 AC_ARG_ENABLE([poisoning],
312 [AS_HELP_STRING([--enable-poisoning], [enable poisoning of freed memory (good for debugging)])],
313 [enable_poisoning=${enableval}],
315 if test "x$extra_logging" != "xGNUNET_NO"; then
316 enable_poisoning="defaults to yes (extra logging is enabled)"
321 AC_MSG_RESULT($enable_poisoning)
322 if test ! "x$enable_poisoning" = "xno"; then
327 AC_DEFINE_UNQUOTED([ENABLE_POISONING],[$enable_poisoning],[1 if freed memory should be poisoned, 0 otherwise])
329 if test $build = $target
331 AC_MSG_CHECKING([for working HMAC])
333 LIBS="$LIBS $LIBGCRYPT_LIBS"
334 CFLAGS="$CFLAGS $LIBGCRYPT_CFLAGS"
336 [AC_LANG_PROGRAM([#include <gcrypt.h>
337 #include <stdio.h>], [[
340 unsigned char data[] = { 0xbf, 0x16, 0x6e, 0x46, 0x3a, 0x6c, 0xf3, 0x93, 0xa7, 0x72,
341 0x11, 0xa1, 0xdc, 0x0b, 0x07, 0xdb, 0x1a, 0x5e, 0xd9, 0xb9, 0x81, 0xbe,
342 0xea, 0xe4, 0x31, 0x5f, 0x24, 0xff, 0xfe, 0x50, 0x8a, 0xde };
343 unsigned char key[] = { 0xfc, 0x62, 0x76, 0x35 };
344 unsigned char result[] = {0xa2, 0xb, 0x1, 0xd9, 0xc0, 0x8b, 0x5a, 0x12, 0x80,
345 0xd5, 0x50, 0x12, 0x8e, 0xd0, 0x5b, 0xb6, 0x5c, 0x87, 0x24, 0xe2, 0xd0,
346 0xd2, 0xaf, 0x63, 0xae, 0xd1, 0xd6, 0x64, 0x14, 0xe3, 0x6e, 0x61, 0x5b,
347 0xd, 0xba, 0x17, 0x7d, 0xd3, 0x10, 0xb1, 0x37, 0x41, 0x91, 0x7d, 0xeb,
348 0x1, 0x4d, 0x71, 0xe8, 0x59, 0x71, 0x42, 0x8e, 0xd6, 0xf3, 0x29, 0x3b,
349 0x90, 0xf2, 0xd1, 0xaf, 0x65, 0x1e, 0xb3};
351 if (!gcry_check_version (GCRYPT_VERSION))
353 fprintf (stderr, "Version mismatch %s <-> %s \n", gcry_check_version (NULL), GCRYPT_VERSION);
357 gcry_control (GCRYCTL_DISABLE_SECMEM, 0);
358 gcry_control (GCRYCTL_INITIALIZATION_FINISHED, 0);
360 if (gcry_md_open(&mac, GCRY_MD_SHA512, GCRY_MD_FLAG_HMAC) != GPG_ERR_NO_ERROR)
362 fprintf (stderr, "gcry_md_open error\n");
366 gcry_md_setkey (mac, key, sizeof (key));
367 gcry_md_write (mac, data, sizeof (data));
369 if (memcmp(gcry_md_read (mac, 0), result, gcry_md_get_algo_dlen (gcry_md_get_algo (mac))) != 0)
371 fprintf (stderr, "memcmp error\n");
379 [AC_MSG_RESULT([yes])],
384 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.])
388 AC_MSG_FAILURE([HMAC test failed])
392 AC_MSG_FAILURE([libgcrypt header version does not match library version])
395 [AC_MSG_RESULT([cross compiling, test skipped])])
397 fi # $build = $target
399 # check for bluetooth library
401 AC_CHECK_LIB(bluetooth, ba2str,[AC_CHECK_HEADER([bluetooth/bluetooth.h],bluetooth=1)])
402 if test "$build_target" = "mingw"
406 AM_CONDITIONAL(HAVE_LIBBLUETOOTH, [test "$bluetooth" = 1])
407 if test "$bluetooth" = 1
409 AC_DEFINE([HAVE_LIBBLUETOOTH],[1],[Have bluetooth library])
411 AC_DEFINE([HAVE_LIBBLUETOOTH],[0],[Lacking bluetooth library])
414 # check for jansson library
416 AC_MSG_CHECKING(for libjansson)
418 [ --with-jansson=PFX base of libjansson installation],
419 [AC_MSG_RESULT([$with_jansson])
420 case $with_jansson in
424 AC_CHECK_HEADERS(jansson.h,
425 AC_CHECK_LIB([jansson], [json_loads],
429 LDFLAGS="-L$with_jansson/lib $LDFLAGS"
430 CPPFLAGS="-I$with_jansson/include $CPPFLAGS"
431 AC_CHECK_HEADERS(jansson.h,
432 AC_CHECK_LIB([jansson], [json_loads],
433 EXT_LIB_PATH="-L$with_jansson/lib $EXT_LIB_PATH"
438 [AC_MSG_RESULT([--with-jansson not specified])
439 AC_CHECK_HEADERS(jansson.h,
440 AC_CHECK_LIB([jansson], [json_loads],
442 AM_CONDITIONAL(HAVE_JANSSON, [test "$jansson" = 1])
443 if test "x$jansson" = x1
445 AC_DEFINE([HAVE_JANSSON],[1],[Have jansson library])
447 AC_DEFINE([HAVE_JANSSON],[0],[Lacking jansson library])
451 # check for libpulse(audio) library
453 AC_CHECK_LIB(pulse,pa_stream_peek,
454 [AC_CHECK_HEADER([pulse/simple.h],pulse=1)])
455 if test "$build_target" = "mingw"
461 AC_DEFINE([HAVE_PULSE],[1],[Have libpulse(audio) library])
464 # check for libopus(audio) library
466 AC_CHECK_LIB(opus,opus_decode_float,
467 [AC_CHECK_HEADER([opus/opus.h],
468 [AC_CHECK_DECL([OPUS_SET_GAIN],[opus=1],[],[[#include <opus/opus.h>]]
474 AC_DEFINE([HAVE_OPUS],[1],[Have libopus library])
478 AC_CHECK_LIB(ogg, ogg_stream_flush_fill,
479 [AC_CHECK_HEADERS([ogg/ogg.h],
480 AM_CONDITIONAL(HAVE_OGG, true)
482 AC_DEFINE(HAVE_OGG,1,[Have ogg]),
483 AM_CONDITIONAL(HAVE_OGG, false)
485 AC_DEFINE(HAVE_OGG,0,[lacking ogg]))],
486 AM_CONDITIONAL(HAVE_OGG, false)
490 PKG_CHECK_MODULES([GLIB], [glib-2.0],
491 # check for pbc library
493 AC_CHECK_HEADER([pbc/pbc.h],pbc=1)
494 AC_CHECK_HEADER([gabe.h],abe=1)
495 AM_CONDITIONAL(HAVE_PBC, [test "$pbc" = 1])
496 AM_CONDITIONAL(HAVE_ABE, [test "$abe" = 1])
499 AC_DEFINE([HAVE_PBC],[1],[Have pbc library])
501 AC_DEFINE([HAVE_PBC],[0],[Lacking pbc library])
505 AC_DEFINE([HAVE_ABE],[1],[Have ABE library])
507 AC_DEFINE([HAVE_ABE],[0],[Lacking ABE library])
511 AM_CONDITIONAL(HAVE_PBC, [0])
512 AM_CONDITIONAL(HAVE_ABE, [0])
513 AC_DEFINE([HAVE_PBC],[0],[Lacking glib library])
519 [glib-2.0 gobject-2.0 gstreamer-1.0 gstreamer-app-1.0 gstreamer-audio-1.0],
525 AC_MSG_RESULT(not found)
529 if test "x$pulse" != "x1" -o "x$opus" != "x1" -o "x$ogg" != "x1"
531 if test "x$gst" != "x1"
533 conversation_backend=none
534 AM_CONDITIONAL(BUILD_PULSE_HELPERS, false)
535 AM_CONDITIONAL(BUILD_GST_HELPERS, false)
536 AM_CONDITIONAL(BUILD_EXPERIMENTAL_HELPERS, false)
538 conversation_backend=gst
539 AM_CONDITIONAL(BUILD_PULSE_HELPERS, false)
540 AM_CONDITIONAL(BUILD_GST_HELPERS, true)
541 AM_CONDITIONAL(BUILD_EXPERIMENTAL_HELPERS, false)
545 conversation_backend=pulse
546 AM_CONDITIONAL(BUILD_PULSE_HELPERS, true)
547 AM_CONDITIONAL(BUILD_GST_HELPERS, false)
548 AM_CONDITIONAL(BUILD_EXPERIMENTAL_HELPERS, false)
552 LIBGNURL_CHECK_CONFIG(,7.34.0,gnurl=1,gnurl=0)
555 AM_CONDITIONAL(HAVE_LIBGNURL, true)
556 AC_DEFINE([HAVE_LIBGNURL],[1],[Have libgnurl])
558 AM_CONDITIONAL(HAVE_LIBGNURL, false)
559 AC_DEFINE([HAVE_LIBGNURL],[0],[Lacking libgnurl])
562 SAVE_CPPFLAGS=$CPPFLAGS
563 CPPFLAGS="$LIBGNURL_CPPFLAGS $LIBCURL_CPPFLAGS $CPPFLAGS"
564 LIBS="$LIBGNURL $LIBCURL $LIBS"
567 LIBCURL_CHECK_CONFIG(,7.34.0,[curl=true],[curl=false])
568 if test "x$curl" = xtrue
571 AC_CHECK_HEADERS([curl/curl.h],
572 AC_CHECK_DECLS(CURLINFO_TLS_SESSION,[curl=true],[curl=false],[[#include <curl/curl.h>]]),
574 AC_CHECK_HEADERS([gnurl/curl.h],
575 AC_CHECK_DECLS(CURLINFO_TLS_SESSION,[curl=true],,[[#include <gnurl/curl.h>]]))
576 # need libcurl-gnutls.so, everything else is not acceptable
577 AC_CHECK_LIB([curl-gnutls],[curl_easy_getinfo],,[curl=false])
578 # cURL must support CURLINFO_TLS_SESSION, version >= 7.34
581 # Check for curl/curl.h and gnurl/curl.h so we can use #ifdef
582 # HAVE_CURL_CURL_H later (the above LIBCURL_CHECK_CONFIG accepted
583 # *either* header set).
584 AC_CHECK_HEADERS([curl/curl.h],,
586 AC_CHECK_HEADERS([gnurl/curl.h],,
591 if test x$curl = xfalse
593 AM_CONDITIONAL(HAVE_LIBCURL, false)
596 AC_MSG_WARN([ERROR: GNUnet requires libcurl-gnutls or gnurl >= 7.34])
599 AM_CONDITIONAL(HAVE_LIBCURL, true)
600 AC_DEFINE([HAVE_LIBCURL],[1],[Have CURL])
604 # restore LIBS & CPPFLAGS
606 CPPFLAGS=$SAVE_CPPFLAGS
608 AC_CHECK_HEADERS([glpk.h],[glpk=true],[gplk=false])
609 # GLPK must support glpk_init_env, version >= 4.43
610 AC_CHECK_LIB([glpk],[glp_init_env],,[gplk=false])
611 # GLPK must support atm MLP presolving, version >= 4.32
612 AC_CHECK_MEMBERS(glp_iocp.presolve,,[gplk=false],[[#include <glpk.h>]])
613 if test x$gplk = xfalse
615 AM_CONDITIONAL(HAVE_LIBGLPK, false)
616 AC_MSG_WARN([ERROR: GNUnet requires GLPK >= 4.32])
618 AM_CONDITIONAL(HAVE_LIBGLPK, true)
619 AC_DEFINE([HAVE_LIBGLPK],[1],[Have GLPK])
623 AC_CHECK_HEADERS([nss.h],[nss=true],[nss=false])
624 if test x$nss = xfalse
626 AM_CONDITIONAL(HAVE_GLIBCNSS, false)
627 AC_MSG_WARN([ERROR: No GNU libc nss header, will not build NSS plugin])
629 AM_CONDITIONAL(HAVE_GLIBCNSS, true)
634 # test for kvm and kstat (for CPU stats under BSD/Solaris)
635 AC_CHECK_LIB([kvm],[kvm_open])
636 AC_CHECK_LIB([kstat],[kstat_open])
639 # should the build process be building the documentation?
640 AC_MSG_CHECKING(whether to build documentation)
641 AC_ARG_ENABLE([documentation],
642 [AS_HELP_STRING([--enable-documentation], [build the documentation])],
643 [documentation=${enableval}],
645 AC_MSG_RESULT($documentation)
646 if test "x$documentation" = "xyes"
648 AM_CONDITIONAL([DOCUMENTATION],true)
649 AC_DEFINE([DOCUMENTATION],[1],[Building the documentation])
651 AM_CONDITIONAL([DOCUMENTATION],false)
652 AC_DEFINE([DOCUMENTATION],[0],[Not building the documentation])
655 # should the build process be building only the documentation?
656 AC_MSG_CHECKING(whether to build only documentation)
657 AC_ARG_ENABLE([documentation-only],
658 [AS_HELP_STRING([--enable-documentation-only], [build only the documentation])],
659 [documentation_only=${enableval}],
660 [documentation_only=no])
661 AC_MSG_RESULT($documentation_only)
662 if test "x$documentation_only" = "xyes"
664 AM_CONDITIONAL([DOCUMENTATION_ONLY],true)
665 AC_DEFINE([DOCUMENTATION_ONLY],[1],[Building only the documentation])
667 AM_CONDITIONAL([DOCUMENTATION_ONLY],false)
668 AC_DEFINE([DOCUMENTATION_ONLY],[0],[Not building only the documentation])
671 # should the build process be restricted to the code required
672 # for GNU Taler wallets?
673 AC_MSG_CHECKING(whether to compile GNU Taler Wallet library ONLY)
674 AC_ARG_ENABLE([taler-wallet],
675 [AS_HELP_STRING([--enable-taler-wallet], [only compile for Taler wallet])],
676 [taler_only=${enableval}],
678 AC_MSG_RESULT($taler_only)
679 if test "x$taler_only" = "xyes"
681 AM_CONDITIONAL([TALER_ONLY],true)
682 AC_DEFINE([TALER_WALLET_ONLY],[1],[Compiling for Taler wallet])
684 AM_CONDITIONAL([TALER_ONLY],false)
685 AC_DEFINE([TALER_WALLET_ONLY],[0],[Canonical compilation])
688 # test for libextractor
690 AC_MSG_CHECKING(for libextractor)
691 AC_ARG_WITH(extractor,
692 [ --with-extractor=PFX base of libextractor installation],
693 [AC_MSG_RESULT([$with_extractor])
694 case $with_extractor in
698 AC_CHECK_HEADERS(extractor.h,
699 AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
703 LDFLAGS="-L$with_extractor/lib $LDFLAGS"
704 CPPFLAGS="-I$with_extractor/include $CPPFLAGS"
705 AC_CHECK_HEADERS(extractor.h,
706 AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
707 EXT_LIB_PATH="-L$with_extractor/lib $EXT_LIB_PATH"
712 [AC_MSG_RESULT([--with-extractor not specified])
713 AC_CHECK_HEADERS(extractor.h,
714 AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
719 if test "$extractor" != 1
721 AM_CONDITIONAL(HAVE_LIBEXTRACTOR, false)
722 AC_DEFINE([HAVE_LIBEXTRACTOR],[0],[Lacking libextractor])
724 AM_CONDITIONAL(HAVE_LIBEXTRACTOR, true)
725 AC_DEFINE([HAVE_LIBEXTRACTOR],[1],[Have libextractor])
729 if test "$taler_only" != yes
732 # Check for libltdl header (#2999)
734 AC_MSG_CHECKING(for libltdl)
736 [ --with-ltdl=PFX base of libltdl installation],
737 [AC_MSG_RESULT([$with_ltdl])
742 AC_CHECK_HEADERS(ltdl.h,
743 AC_CHECK_LIB([ltdl], [lt_dlopenext],
747 LDFLAGS="-L$with_ltdl/lib $LDFLAGS"
748 CPPFLAGS="-I$with_ltdl/include $CPPFLAGS"
749 AC_CHECK_HEADERS(ltdl.h,
750 AC_CHECK_LIB([ltdl], [lt_dlopenext],
751 EXT_LIB_PATH="-L$with_ltdl/lib $EXT_LIB_PATH"
756 [AC_MSG_RESULT([--with-ltdl not specified])
757 AC_CHECK_HEADERS(ltdl.h,
758 AC_CHECK_LIB([ltdl], [lt_dlopenext],
762 AC_MSG_RESULT([libltdl found])
764 AC_MSG_ERROR([GNUnet requires libltdl (from GNU libtool), try installing libltdl-dev])
771 AC_MSG_CHECKING([if Libidn can be used])
772 AC_ARG_WITH(libidn, AC_HELP_STRING([--with-libidn=[DIR]],
773 [Support IDN (needs GNU Libidn)]),
774 libidn=$withval, libidn=yes)
775 if test "$libidn" != "no"; then
776 if test "$libidn" != "yes"; then
777 LDFLAGS="${LDFLAGS} -L$libidn/lib"
778 CPPFLAGS="${CPPFLAGS} -I$libidn/include"
782 AC_CHECK_HEADER(idna.h,
783 AC_CHECK_LIB(idn, stringprep_check_version,
784 [libidn=yes LIBS="${LIBS} -lidn"], []), [])
785 if test "$libidn" != "yes"; then
786 AC_MSG_FAILURE([GNUnet requires libidn.
787 libidn-1.13 should be sufficient, newer versions work too.])
789 AC_MSG_RESULT($libidn)
793 SAVE_LDFLAGS=$LDFLAGS
794 SAVE_CPPFLAGS=$CPPFLAGS
796 [ --with-zlib[[=DIR]] use libz in DIR],
797 [AS_IF([test "$withval" = "no"],
798 [AC_MSG_ERROR([GNUnet requires zlib])],
799 [test "$withval" != "yes"],
802 CPPFLAGS="${CPPFLAGS} -I$withval/include"
803 LDFLAGS="${LDFLAGS} -L$withval/lib"
806 AC_CHECK_HEADER(zlib.h,
808 [AC_MSG_ERROR([GNUnet requires zlib])])
809 AC_CHECK_LIB(z, compress2,
811 AC_DEFINE([HAVE_ZLIB], [], [Have compression library])
812 if test "x${Z_DIR}" != "x"; then
813 Z_CFLAGS="-I${Z_DIR}/include"
814 Z_LIBS="-L${Z_DIR}/lib -lz"
818 [AC_MSG_ERROR([GNUnet requires zlib])])
822 if test "$enable_shared" = "no"
824 AC_MSG_ERROR([GNUnet only works with shared libraries. Sorry.])
838 # test for libunistring
840 if test $HAVE_LIBUNISTRING != yes; then
841 AC_MSG_ERROR([GNUnet requires libunistring])
843 # under emscripten, $gl_libunistring_hexversion is undefined
844 if test "$taler_only" != yes; then
845 if test "x$gl_libunistring_hexversion" = "x" || test "$gl_libunistring_hexversion" -le 2305; then
846 AC_MSG_ERROR([GNUnet requires libunistring >= 0.9.1.1])
849 AC_CHECK_HEADERS([unistr.h],,AC_MSG_ERROR([Compiling GNUnet requires unistr.h (from libunistring) to be installed]))
856 # Checks for standard header files.
860 # Check for headers that are ALWAYS required
861 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]))
865 # Checks for headers that are only required on some systems or opional (and where we do NOT abort if they are not there)
866 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])
868 # FreeBSD requires something more funky for netinet/in_systm.h and netinet/ip.h...
869 AC_CHECK_HEADERS([sys/types.h netinet/in_systm.h netinet/in.h netinet/ip.h],,,
870 [#ifdef HAVE_SYS_TYPES_H
871 #include <sys/types.h>
873 #ifdef HAVE_NETINET_IN_SYSTM_H
874 #include <netinet/in_systm.h>
876 #ifdef HAVE_NETINET_IN_H
877 #include <netinet/in.h>
881 SAVE_LDFLAGS=$LDFLAGS
882 SAVE_CPPFLAGS=$CPPFLAGS
886 AC_MSG_CHECKING(for SQLite)
888 [ --with-sqlite=PFX base of SQLite installation],
889 [AC_MSG_RESULT("$with_sqlite")
894 AC_CHECK_HEADERS(sqlite3.h,
898 LDFLAGS="-L$with_sqlite/lib $LDFLAGS"
899 CPPFLAGS="-I$with_sqlite/include $CPPFLAGS"
900 AC_CHECK_HEADERS(sqlite3.h,
901 EXT_LIB_PATH="-L$with_sqlite/lib $EXT_LIB_PATH"
902 SQLITE_LDFLAGS="-L$with_sqlite/lib"
903 SQLITE_CPPFLAGS="-I$with_sqlite/include"
905 LDFLAGS=$SAVE_LDFLAGS
906 CPPFLAGS=$SAVE_CPPFLAGS
910 [AC_MSG_RESULT([--with-sqlite not specified])
911 AC_CHECK_HEADERS(sqlite3.h, sqlite=true)])
912 AM_CONDITIONAL(HAVE_SQLITE, test x$sqlite = xtrue)
913 AC_SUBST(SQLITE_CPPFLAGS)
914 AC_SUBST(SQLITE_LDFLAGS)
916 LDFLAGS=$SAVE_LDFLAGS
917 CPPFLAGS=$SAVE_CPPFLAGS
921 # even running the check for postgres breaks emscripten ...
922 if test "$taler_only" != yes; then
923 AX_LIB_POSTGRESQL([9.5])
924 if test "$found_postgresql" = "yes"; then
925 CPPFLAGS="$CPPFLAGS $POSTGRESQL_CPPFLAGS"
926 AC_CHECK_HEADERS([libpq-fe.h],
930 AM_CONDITIONAL(HAVE_POSTGRESQL, test x$postgres = xtrue)
933 LDFLAGS=$SAVE_LDFLAGS
934 CPPFLAGS=$SAVE_CPPFLAGS
937 AC_CHECK_TYPES([sigset_t, off_t], [], [], [#include <sys/types.h>])
938 AC_CHECK_TYPES([size_t], [], [], [#include <stdio.h>])
940 if test "$build_target" = "mingw"
942 CYGWIN_MYSQL_MAGIC="#include <mysql/my_global.h>"
948 SAVE_LDFLAGS=$LDFLAGS
949 SAVE_CPPFLAGS=$CPPFLAGS
950 AC_MSG_CHECKING(for mysql)
952 [ --with-mysql=PFX base of MySQL installation],
953 [AC_MSG_RESULT([$with_mysql])
958 AC_CHECK_HEADERS(mysql/mysql.h,
959 AC_CHECK_LIB(mysqlclient, mysql_init,
961 mysql=true), [], [$CYGWIN_MYSQL_MAGIC])
964 LDFLAGS="-L$with_mysql/lib -L$with_mysql/lib/mysql $LDFLAGS $ZLIBS"
965 CPPFLAGS="-I$with_mysql/include $CPPFLAGS"
966 AC_CHECK_HEADERS(mysql/mysql.h,
967 AC_CHECK_LIB(mysqlclient, mysql_init,
968 MYSQL_LDFLAGS="-L$with_mysql/lib -L$with_mysql/lib/mysql"
969 MYSQL_CPPFLAGS="-I$with_mysql/include"
971 mysql=true), [], [$CYGWIN_MYSQL_MAGIC])
975 [AC_MSG_RESULT([--with-mysql not specified])
976 if test -d "/usr/lib64/mysql"; then
977 MYSQL_LIBDIR="/usr/lib64/mysql"
978 elif test -d "/usr/lib/mysql"; then
979 MYSQL_LIBDIR="/usr/lib/mysql"
981 MYSQL_LIBDIR="/usr/lib"
983 LDFLAGS="-L$MYSQL_LIBDIR $LDFLAGS $ZLIBS"
984 AC_CHECK_LIB(mysqlclient, mysql_init,
985 [AC_CHECK_HEADERS(mysql/mysql.h,
986 MYSQL_LDFLAGS="-L$MYSQL_LIBDIR"
989 , [], [$CYGWIN_MYSQL_MAGIC])])
992 AC_SUBST(MYSQL_LDFLAGS)
993 AC_SUBST(MYSQL_CPPFLAGS)
995 # additional version check for mysql
996 AC_ARG_ENABLE(mysql-version-check, [ --disable-mysql-version-check do not check MySQL version],, enable_mysql_version_check=yes)
997 if test "$mysql" = "true" -a "x$enable_mysql_version_check" = "xyes"
999 AC_MSG_CHECKING(mysql version)
1000 AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
1001 [[$CYGWIN_MYSQL_MAGIC
1002 #include <mysql/mysql.h>]],
1004 #if (MYSQL_VERSION_ID < 40100)
1005 #error needs at least version >= 4.1
1007 int main () { return 0; }
1009 ],mysql=true,mysql=false)
1010 if test "$mysql" = "false"
1013 AC_MSG_RESULT([fail, >= 4.1 required])
1018 AM_CONDITIONAL(HAVE_MYSQL, test x$mysql = xtrue)
1019 AM_CONDITIONAL(HAVE_MYSQLE, test "0" = "1")
1022 LDFLAGS=$SAVE_LDFLAGS
1023 CPPFLAGS=$SAVE_CPPFLAGS
1025 if test "$sqlite" = 0 -a "$mysql" = 0
1027 AC_MSG_ERROR([GNUnet requires SQLite or MySQL])
1032 AC_MSG_CHECKING([for libmicrohttpd])
1033 AC_ARG_WITH(microhttpd,
1034 [ --with-microhttpd=PFX base of libmicrohttpd installation],
1035 [AC_MSG_RESULT([$with_microhttpd])
1036 case $with_microhttpd in
1040 AC_CHECK_HEADERS([microhttpd.h],
1041 AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
1042 AC_CHECK_LIB([microhttpd], [MHD_get_fdset2],
1043 [AC_MSG_CHECKING([for libmicrohttpd >= 0.9.42])
1044 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
1045 #include "$native_srcdir/src/include/platform.h"
1046 #include <microhttpd.h>
1047 #if (MHD_VERSION < 0x0094200)
1048 #error needs at least version 0.9.42
1050 int main () { return 0; }
1054 [AC_MSG_RESULT(failed)])]),
1055 [],[#include "$native_srcdir/src/include/platform.h"
1056 #include <microhttpd.h>]),,
1057 [#include "$native_srcdir/src/include/platform.h"])
1060 LDFLAGS="-L$with_microhttpd/lib $LDFLAGS"
1061 CPPFLAGS="-I$with_microhttpd/include $CPPFLAGS"
1062 AC_CHECK_HEADERS(microhttpd.h,
1063 AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
1064 AC_CHECK_LIB([microhttpd], [MHD_get_fdset2],
1065 EXT_LIB_PATH="-L$with_microhttpd/lib $EXT_LIB_PATH"
1066 [AC_MSG_CHECKING([for libmicrohttpd >= 0.9.42])
1067 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
1068 #include "$native_srcdir/src/include/platform.h"
1069 #include <microhttpd.h>
1070 #if (MHD_VERSION < 0x0094200)
1071 #error needs at least version 0.9.42
1073 int main () { return 0; }
1077 [AC_MSG_RESULT(failed)])]),
1078 [],[#include "$native_srcdir/src/include/platform.h"
1079 #include <microhttpd.h>]),,
1080 [#include "$native_srcdir/src/include/platform.h"])
1084 [AC_MSG_RESULT([--with-microhttpd not specified])
1085 AC_CHECK_HEADERS([microhttpd.h],
1086 AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
1087 AC_CHECK_LIB([microhttpd], [MHD_get_fdset2],
1088 [AC_MSG_CHECKING([for libmicrohttpd >= 0.9.42])
1089 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
1090 #include "$native_srcdir/src/include/platform.h"
1091 #include <microhttpd.h>
1092 #if (MHD_VERSION < 0x0094200)
1093 #error needs at least version 0.9.42
1098 [AC_MSG_RESULT(failed)])]),
1099 [],[#include "$native_srcdir/src/include/platform.h"
1100 #include <microhttpd.h>]),,
1101 [#include "$native_srcdir/src/include/platform.h"])])
1102 AM_CONDITIONAL(HAVE_MHD, test x$lmhd = x1)
1103 AC_DEFINE_UNQUOTED([HAVE_MHD], $lmhd, [We have libmicrohttpd])
1105 AM_CONDITIONAL(HAVE_JSON, [test x$jansson = x1])
1110 # check for python & pexpect (used for some testcases only)
1111 AM_PATH_PYTHON([2.6],, [:])
1112 AM_CONDITIONAL([HAVE_PYTHON], [test "$PYTHON" != :])
1115 AM_GNU_GETTEXT([external])
1116 AM_GNU_GETTEXT_VERSION([0.18.1])
1118 # Checks for standard typedefs, structures, and compiler characteristics.
1127 AC_CHECK_MEMBER([struct sockaddr_in.sin_len],
1128 [ AC_DEFINE(HAVE_SOCKADDR_IN_SIN_LEN, 1, [Do we have sockaddr_in.sin_len?])
1132 #include <sys/types.h>
1133 #include <sys/socket.h>
1134 #include <netinet/in.h>
1137 AC_CHECK_MEMBER([struct sockaddr_un.sun_len],
1138 [ AC_DEFINE(HAVE_SOCKADDR_UN_SUN_LEN, 1, [Do we have sockaddr_un.sun_len?])
1142 #include <sys/types.h>
1143 #include <sys/socket.h>
1149 # Checks for library functions.
1150 AC_FUNC_CLOSEDIR_VOID
1152 AC_PROG_GCC_TRADITIONAL
1154 AC_FUNC_SELECT_ARGTYPES
1164 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])
1170 GN_LIBINTL="$LTLIBINTL"
1171 AC_ARG_ENABLE(framework, [ --enable-framework enable Mac OS X framework build helpers],enable_framework_build=$enableval)
1172 AM_CONDITIONAL(WANT_FRAMEWORK, test x$enable_framework_build = xyes)
1173 if test x$enable_framework_build = xyes
1175 AC_DEFINE([FRAMEWORK_BUILD], 1, [Build a Mac OS X Framework])
1176 GN_INTLINCL='-I$(top_srcdir)/src/intlemu'
1177 GN_LIBINTL='$(top_builddir)/src/intlemu/libintlemu.la -framework CoreFoundation'
1178 AC_LIB_APPENDTOVAR([CPPFLAGS], [$GN_INTLINCL])
1181 GN_LIB_LDFLAGS="-export-dynamic -no-undefined"
1182 GN_PLUGIN_LDFLAGS="-export-dynamic -avoid-version -module -no-undefined"
1184 AC_SUBST(GN_LIB_LDFLAGS)
1185 AC_SUBST(GN_PLUGIN_LDFLAGS)
1186 AC_SUBST(GN_INTLINCL)
1187 AC_SUBST(GN_LIBINTL)
1192 AC_SUBST(EXT_LIB_PATH)
1197 AC_SUBST(EXT_LIB_PATH)
1201 AC_MSG_CHECKING(for sudo)
1203 [ --with-sudo=PATH path to sudo binary (or just yes)],
1204 [AC_MSG_RESULT("$with_sudo")
1213 SUDO_BINARY=$with_sudo
1217 [AC_MSG_RESULT([no])])
1218 AC_SUBST(SUDO_BINARY)
1219 AM_CONDITIONAL([HAVE_SUDO], [test "x$SUDO_BINARY" != "x" -o -w /])
1222 # test for gnunetdns group name
1223 GNUNETDNS_GROUP=gnunetdns
1224 AC_MSG_CHECKING(for gnunetdns group name)
1225 AC_ARG_WITH(gnunetdns,
1226 [ --with-gnunetdns=GRPNAME name for gnunetdns group],
1227 [AC_MSG_RESULT("$with_gnunetdns")
1228 case $with_gnunetdns in
1230 GNUNETDNS_GROUP=gnunet
1233 GNUNETDNS_GROUP=gnunetdns
1236 GNUNETDNS_GROUP=$with_gnunetdns
1240 [AC_MSG_RESULT([gnunetdns])])
1241 AC_SUBST(GNUNETDNS_GROUP)
1248 AC_MSG_CHECKING(for gnutls)
1250 [ --with-gnutls=PFX base of gnutls installation],
1251 [AC_MSG_RESULT([$with_gnutls])
1252 case $with_gnutls in
1256 AC_CHECK_HEADERS([gnutls/abstract.h],
1257 AC_CHECK_LIB([gnutls], [gnutls_priority_set],
1259 AC_CHECK_HEADERS([gnutls/dane.h],
1260 AC_CHECK_LIB([gnutls-dane], [dane_verify_crt_raw],
1264 LDFLAGS="-L$with_gnutls/lib $LDFLAGS"
1265 CPPFLAGS="-I$with_gnutls/include $CPPFLAGS"
1266 AC_CHECK_HEADERS([gnutls/abstract.h],
1267 AC_CHECK_LIB([gnutls], [gnutls_priority_set],
1268 EXT_LIB_PATH="-L$with_gnutls/lib $EXT_LIB_PATH"
1270 AC_CHECK_HEADERS([gnutls/dane.h],
1271 AC_CHECK_LIB([gnutls-dane], [dane_verify_crt_raw],
1276 [AC_MSG_RESULT([--with-gnutls not specified])
1277 AC_CHECK_HEADERS([gnutls/abstract.h],
1278 AC_CHECK_LIB([gnutls], [gnutls_priority_set],
1280 AC_CHECK_HEADERS([gnutls/dane.h],
1281 AC_CHECK_LIB([gnutls-dane], [dane_verify_crt_raw],
1284 AM_CONDITIONAL(HAVE_GNUTLS, test x$gnutls = xtrue)
1285 AC_DEFINE_UNQUOTED([HAVE_GNUTLS], $gnutls, [We have GnuTLS])
1286 AM_CONDITIONAL(HAVE_GNUTLS_DANE, test x$gnutls_dane = x1)
1287 AC_DEFINE_UNQUOTED([HAVE_GNUTLS_DANE], $gnutls_dane, [We have GnuTLS with DANE support])
1290 # Test if we are building for superMUC
1291 AC_MSG_CHECKING(if GNUnet is being configured to run on the SuperMUC)
1292 AC_ARG_ENABLE([supermuc],
1293 [AS_HELP_STRING([--enable-supermuc],
1294 [build GNUnet with support to run on the SuperMUC (default is NO)])],
1295 [if test "x$enable_supermuc" = "xno"
1302 enable_supermuc=no])
1303 AC_MSG_RESULT($enable_SUPERMUC)
1304 AM_CONDITIONAL([ENABLE_SUPERMUC], [test "x$supermuc" = "x1"])
1305 AC_DEFINE_UNQUOTED([ENABLE_SUPERMUC], [$supermuc], [Build with support for SuperMUC])
1307 # Check if NSE has to send timestamp information to testbed logger for
1308 # generating histogram of messages received
1309 AC_MSG_CHECKING(if NSE has to send timestamp information to testbed logger)
1310 AC_ARG_ENABLE([nse-histogram],
1311 [AS_HELP_STRING([--enable-nse-histogram],
1312 [have NSE send timestamp information to testbed logger for generating
1313 histogram of received messages. NOT useful for production (default is
1315 [if test "x$enableval" = "xno"
1322 enable_nse_histogram=no])
1323 AC_MSG_RESULT($enable_nse_histogram)
1324 AM_CONDITIONAL([ENABLE_NSE_HISTOGRAM], [test "x$nse_histogram" = "x1"])
1325 AC_DEFINE_UNQUOTED([ENABLE_NSE_HISTOGRAM], [$nse_histogram],
1326 [have NSE send timestamp information to testbed logger])
1328 # should 'make check' run tests?
1329 AC_MSG_CHECKING(whether to run tests)
1330 AC_ARG_ENABLE([testruns],
1331 [AS_HELP_STRING([--disable-testruns], [disable running tests on make check (default is YES)])],
1332 [enable_tests_run=${enableval}],
1333 [enable_tests_run=yes])
1334 AC_MSG_RESULT($enable_test_run)
1335 AM_CONDITIONAL([ENABLE_TEST_RUN], [test "x$enable_tests_run" = "xyes"])
1338 # should monkey be used when running (certain) services?
1339 AC_MSG_CHECKING(whether to run with monkey)
1340 AC_ARG_ENABLE([monkey],
1341 [AS_HELP_STRING([--enable-monkey], [enable running with monkey])],
1342 [enable_monkey=${enableval}],
1344 AC_MSG_RESULT($enable_monkey)
1345 AM_CONDITIONAL([ENABLE_MONKEY], [test "x$enable_monkey" = "xyes"])
1346 if test "x$enable_monkey" = "xyes"
1348 MONKEYPREFIX="pathologist -d $(eval echo ${datarootdir}/gnunet/gnunet.sqlite) -p 30 --"
1352 AC_SUBST(MONKEYPREFIX)
1355 # should expensive tests be run?
1356 AC_MSG_CHECKING(whether to run expensive tests)
1357 AC_ARG_ENABLE([expensivetests],
1358 [AS_HELP_STRING([--enable-expensivetests], [enable running expensive testcases])],
1359 [enable_expensive=${enableval}],
1360 [enable_expensive=no])
1361 AC_MSG_RESULT($enable_expensive)
1362 AM_CONDITIONAL([HAVE_EXPENSIVE_TESTS], [test "x$enable_expensive" = "xyes"])
1364 # should ports be open for Java services?
1365 AC_MSG_CHECKING(whether to enable ports for gnunet-java)
1366 AC_ARG_ENABLE([javaports],
1367 [AS_HELP_STRING([--enable-javaports], [use non-zero ports for services with Java bindings (default is NO)])],
1368 [enable_java_ports=${enableval}],
1369 [enable_java_ports=no])
1370 AC_MSG_RESULT($enable_java_ports)
1371 if test "x$enable_java_ports" = "xyes"
1375 JAVAPORT="$UNIXONLY"
1379 # should benchmarks be run?
1380 AC_MSG_CHECKING(whether to run benchmarks during make check)
1381 AC_ARG_ENABLE([benchmarks],
1382 [AS_HELP_STRING([--enable-benchmarks], [enable running benchmarks during make check])],
1383 [enable_benchmarks=${enableval}],
1384 [enable_benchmarks=no])
1385 AC_MSG_RESULT($enable_benchmarks)
1386 AM_CONDITIONAL([HAVE_BENCHMARKS], [test "x$enable_benchmarks" = "xyes"])
1388 # should gnunet-testing be compiled
1389 AC_MSG_CHECKING(wether to compile gnunet-testing)
1390 AC_ARG_ENABLE([testing],
1391 [AS_HELP_STRING([--disable-testing], [do not build gnunet-testing])],
1392 [enable_testing=${enableval}],
1393 [enable_testing=yes])
1394 AC_MSG_RESULT($enable_testing)
1395 AM_CONDITIONAL([HAVE_TESTING], [test "x$enable_testing" = "xyes"])
1397 # should experimental code be compiled (code that may not yet compile)?
1398 AC_MSG_CHECKING(whether to compile experimental code)
1399 AC_ARG_ENABLE([experimental],
1400 [AS_HELP_STRING([--enable-experimental], [enable compiling experimental code])],
1401 [enable_experimental=${enableval}],
1402 [enable_experimental=no])
1403 AC_MSG_RESULT($enable_experimental)
1404 AM_CONDITIONAL([HAVE_EXPERIMENTAL], [test "x$enable_experimental" = "xyes"])
1406 # should malicious code be compiled (should only be used for testing)?
1407 AC_MSG_CHECKING(whether to compile malicious code)
1408 AC_ARG_ENABLE([malicious],
1409 [AS_HELP_STRING([--enable-malicious], [enable compiling malicious code])],
1410 [if test "x$enableval" = "xno"
1417 enable_malicious=no])
1418 AC_MSG_RESULT($enable_malicious)
1419 AM_CONDITIONAL([ENABLE_MALICIOUS], [test 1=$malicious])
1420 AC_DEFINE_UNQUOTED([ENABLE_MALICIOUS], [$malicious],
1421 [enable compilation of malicious code])
1423 # should services be started on demand when needed? Some services may choose to
1424 # never start by default and it is up to the service/module developer to decide
1425 # by having "START_ON_DEMAND = NO" instead of "START_ON_DEMAND = @START_ON_DEMAND@"
1426 # in the service/module's conf.in file.
1427 # See also IMMEDIATE_START for an unconditional immediate start.
1428 START_ON_DEMAND="YES"
1429 AC_MSG_CHECKING(whether to start peer's services on demand by default)
1430 AC_ARG_ENABLE([autostart],
1431 [AS_HELP_STRING([--disable-autostart], [do not start peer's services by default])],
1432 [enable_autostart=${enableval}
1433 if test "x$enable_autostart" == "xno"
1435 START_ON_DEMAND="NO"
1438 [enable_autostart=yes])
1439 AC_MSG_RESULT($enable_autostart)
1440 #AM_CONDITIONAL([HAVE_START_ON_DEMAND], [test "x$enable_autostart" = "xyes"])
1441 AC_SUBST(START_ON_DEMAND)
1443 # should memory statistics be kept (very expensive CPU-wise!)
1444 AC_MSG_CHECKING(whether to create expensive statistics on memory use)
1445 AC_ARG_ENABLE([heapstats],
1446 [AS_HELP_STRING([--enable-heapstats], [enable expensive heap statistics])],
1447 [enable_heapstats=1],
1448 [enable_heapstats=0])
1449 AC_MSG_RESULT($enable_heapstats)
1450 AC_DEFINE_UNQUOTED([ENABLE_HEAP_STATISTICS],$enable_heapstats,[enable expensive heap statistics])
1452 # should code be enabled that works around missing OS functionality on Windows?
1453 # used for test cases
1454 if test $build_target = "mingw"
1460 [#include <ws2tcpip.h>
1462 int s = socket (0, 0, 0);])
1464 AC_DEFINE_UNQUOTED([HAVE_SOCKET],1,[Define this if socket() is available])
1466 AC_DEFINE_UNQUOTED([HAVE_SOCKET],0,[Define this if socket() is available])
1471 [#include <ws2tcpip.h>
1473 int s = select (0, NULL, NULL, NULL, NULL);])
1475 AC_DEFINE_UNQUOTED([HAVE_SELECT],1,[Define this if select() is available])
1477 AC_DEFINE_UNQUOTED([HAVE_SELECT],0,[Define this if select() is available])
1482 [#include <ws2tcpip.h>
1485 char *s = inet_ntoa (i);])
1487 AC_DEFINE_UNQUOTED([HAVE_INET_NTOA],1,[Define this if inet_ntoa() is available])
1489 AC_DEFINE_UNQUOTED([HAVE_INET_NTOA],0,[Define this if inet_ntoa() is available])
1494 [#include <ws2tcpip.h>
1496 int s = getnameinfo (NULL, 0, NULL, 0, NULL, 0, 0);])
1498 AC_DEFINE_UNQUOTED([HAVE_GETNAMEINFO],1,[Define this if getnameinfo() is available])
1500 AC_DEFINE_UNQUOTED([HAVE_GETNAMEINFO],0,[Define this if getnameinfo() is available])
1505 [#include <ws2tcpip.h>
1507 int s = gethostname (NULL, 0);])
1509 AC_DEFINE_UNQUOTED([HAVE_GETHOSTNAME],1,[Define this if gethostname() is available])
1511 AC_DEFINE_UNQUOTED([HAVE_GETHOSTNAME],0,[Define this if gethostname() is available])
1516 [#include <ws2tcpip.h>
1518 void *s = gethostbyname (NULL);])
1520 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYNAME],1,[Define this if gethostbyname() is available])
1522 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYNAME],0,[Define this if gethostbyname() is available])
1527 [#include <ws2tcpip.h>
1529 void *s = gethostbyaddr (NULL, 0, 0);])
1531 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYADDR],1,[Define this if gethostbyaddr() is available])
1533 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYADDR],0,[Define this if gethostbyaddr() is available])
1538 [#include <ws2tcpip.h>
1540 int s = getaddrinfo (NULL, NULL, NULL, NULL);])
1542 AC_DEFINE_UNQUOTED([HAVE_GETADDRINFO],1,[Define this if getaddrinfo() is available])
1544 AC_DEFINE_UNQUOTED([HAVE_GETADDRINFO],0,[Define this if getaddrinfo() is available])
1548 AC_MSG_CHECKING(whether to enable windows workarounds)
1549 AC_ARG_ENABLE([windows_workarounds],
1550 [AS_HELP_STRING([--enable-windows_workarounds], [enable workarounds used on Windows (only useful for test cases)])],
1551 [enable_workarounds=${enableval}],
1552 [enable_workarounds=no])
1553 AC_MSG_RESULT($enable_workarounds)
1554 if test x$enable_windows_workarounds = "xyes"
1561 AC_DEFINE_UNQUOTED([ENABLE_WINDOWS_WORKAROUNDS], $workarounds, [enable workarounds used on Windows (only useful for test cases)])
1564 AC_MSG_CHECKING(whether to compile with support for code coverage analysis)
1565 AC_ARG_ENABLE([coverage],
1566 AS_HELP_STRING([--enable-coverage],
1567 [compile the library with code coverage support]),
1568 [use_gcov=${enableval}],
1570 AC_MSG_RESULT($use_gcov)
1571 AM_CONDITIONAL([USE_COVERAGE], [test "x$use_gcov" = "xyes"])
1575 # TODO: git blame says this predates our switch to git. git-svn should be adjusted to simply git, or
1576 # an external script that does the job.
1577 AC_PATH_PROG(svnversioncommand, svnversion)
1578 AC_PATH_PROG(gitcommand, git)
1579 AC_MSG_CHECKING(for source being under a VCS)
1582 AS_IF([test ! "X$svnversioncommand" = "X"],
1584 svn_version=$(cd $srcdir ; $svnversioncommand -n 2>/dev/null)
1586 AS_IF([test ! "X$gitcommand" = "X"],
1588 gitsvn_version=$(cd $srcdir ; git log -1 2>/dev/null | grep "git-svn-id" | sed -e 's/.*@\([[0-9]]\+\) .*/\1/')
1590 AS_IF([test "X$svn_version" = "X" -o "X$svn_version" = "Xexported" -o "X$svn_version" = "XUnversioned directory"],
1592 AS_IF([test "X$gitsvn_version" = "X"],
1595 vcs_version="\"release\""
1598 vcs_name="yes, git-svn"
1599 vcs_version="\"svn-r$gitsvn_version\""
1604 vcs_version="\"svn-r$svn_version\""
1606 AC_MSG_RESULT($vcs_name)
1608 AC_MSG_CHECKING(VCS version)
1609 AC_MSG_RESULT($vcs_version)
1610 AC_DEFINE_UNQUOTED(VCS_VERSION, [$vcs_version], [VCS revision/hash or tarball version])
1617 doc/doxygen/Makefile
1618 doc/documentation/Makefile
1626 src/ats-tool/Makefile
1627 src/ats-tests/Makefile
1628 src/auction/Makefile
1631 src/cadet/cadet.conf
1634 src/consensus/Makefile
1635 src/consensus/consensus.conf
1636 src/conversation/Makefile
1637 src/conversation/conversation.conf
1639 src/datacache/Makefile
1640 src/datastore/Makefile
1641 src/datastore/datastore.conf
1647 src/fragmentation/Makefile
1652 src/gns/nss/Makefile
1653 src/gnsrecord/Makefile
1655 src/identity/Makefile
1656 src/identity/identity.conf
1657 src/credential/Makefile
1658 src/credential/credential.conf
1659 src/include/Makefile
1660 src/integration-tests/Makefile
1662 src/jsonapi/Makefile
1663 src/hostlist/Makefile
1664 src/multicast/Makefile
1665 src/multicast/multicast.conf
1668 src/namecache/Makefile
1669 src/namecache/namecache.conf
1670 src/namestore/Makefile
1671 src/namestore/namestore.conf
1674 src/nat-auto/Makefile
1675 src/nat-auto/nat-auto.conf
1678 src/peerinfo/Makefile
1679 src/peerinfo/peerinfo.conf
1680 src/peerinfo-tool/Makefile
1681 src/peerstore/Makefile
1682 src/peerstore/peerstore.conf
1684 src/psycutil/Makefile
1687 src/psycstore/Makefile
1688 src/psycstore/psycstore.conf
1691 src/regex/regex.conf
1692 src/revocation/Makefile
1693 src/revocation/revocation.conf
1696 src/secretsharing/Makefile
1697 src/secretsharing/secretsharing.conf
1698 src/scalarproduct/Makefile
1699 src/scalarproduct/scalarproduct.conf
1703 src/social/social.conf
1705 src/statistics/Makefile
1706 src/statistics/statistics.conf
1707 src/template/Makefile
1708 src/testbed/Makefile
1709 src/testbed/testbed.conf
1710 src/testbed-logger/Makefile
1711 src/testbed-logger/testbed-logger.conf
1712 src/testing/Makefile
1713 src/topology/Makefile
1714 src/transport/Makefile
1715 src/transport/transport.conf
1718 src/util/resolver.conf
1721 src/zonemaster/Makefile
1722 src/zonemaster/zonemaster.conf
1725 src/identity-attribute/Makefile
1726 src/identity-provider/Makefile
1728 pkgconfig/gnunetarm.pc
1729 pkgconfig/gnunetats.pc
1730 pkgconfig/gnunetblock.pc
1731 pkgconfig/gnunetcadet.pc
1732 pkgconfig/gnunetconsensus.pc
1733 pkgconfig/gnunetconversation.pc
1734 pkgconfig/gnunetcore.pc
1735 pkgconfig/gnunetdatacache.pc
1736 pkgconfig/gnunetdatastore.pc
1737 pkgconfig/gnunetdht.pc
1738 pkgconfig/gnunetdns.pc
1739 pkgconfig/gnunetdnsparser.pc
1740 pkgconfig/gnunetdnsstub.pc
1741 pkgconfig/gnunetdv.pc
1742 pkgconfig/gnunetenv.pc
1743 pkgconfig/gnunetfragmentation.pc
1744 pkgconfig/gnunetfs.pc
1745 pkgconfig/gnunetgns.pc
1746 pkgconfig/gnunethello.pc
1747 pkgconfig/gnunetidentity.pc
1748 pkgconfig/gnunetmicrophone.pc
1749 pkgconfig/gnunetmulticast.pc
1750 pkgconfig/gnunetmysql.pc
1751 pkgconfig/gnunetnamestore.pc
1752 pkgconfig/gnunetnat.pc
1753 pkgconfig/gnunetnse.pc
1754 pkgconfig/gnunetpeerinfo.pc
1755 pkgconfig/gnunetpq.pc
1756 pkgconfig/gnunetpsyc.pc
1757 pkgconfig/gnunetpsycstore.pc
1758 pkgconfig/gnunetregex.pc
1759 pkgconfig/gnunetrevocation.pc
1760 pkgconfig/gnunetrps.pc
1761 pkgconfig/gnunetscalarproduct.pc
1762 pkgconfig/gnunetset.pc
1763 pkgconfig/gnunetsocial.pc
1764 pkgconfig/gnunetspeaker.pc
1765 pkgconfig/gnunetstatistics.pc
1766 pkgconfig/gnunettestbed.pc
1767 pkgconfig/gnunettesting.pc
1768 pkgconfig/gnunettransport.pc
1769 pkgconfig/gnunettun.pc
1770 pkgconfig/gnunetutil.pc
1771 pkgconfig/gnunetvpn.pc
1777 # warn user if mysql found but not used due to version
1778 if test "$mysqlfail" = "true"
1780 AC_MSG_NOTICE([WARNING: MySQL found, but too old. MySQL support will not be compiled.])
1784 if test "x$sqlite" = "x0"
1786 AC_MSG_ERROR([ERROR: sqlite3 not found, but sqlite3 is required.])
1790 if test "$gnurl" = "0"
1792 if test "x$curl" = "xfalse"
1794 AC_MSG_NOTICE([WARNING: libgnurl not found. http client support will not be compiled.])
1795 AC_MSG_WARN([ERROR: libgnurl not found. hostlist daemon will not be compiled, and you probably WANT the hostlist daemon])
1797 AC_MSG_NOTICE([WARNING: libgnurl not found, trying to use libcurl-gnutls instead.])
1803 if test "x$bluetooth" = "x0"
1805 AC_MSG_NOTICE([WARNING: bluetooth library not found. bluetooth support will not be compiled.])
1809 if test "x$jansson" = "x0"
1811 AC_MSG_NOTICE([WARNING: jansson library not found. json support will not be compiled.])
1814 # warn user if iptables is not found
1815 if test "$VAR_IPTABLES_BINARY" = "false"
1817 AC_MSG_NOTICE([WARNING: iptables not found. some modules may not have full functionality.])
1820 # warn user if ifconfig is not found
1821 if test "$VAR_IFCONFIG_BINARY" = "false"
1823 AC_MSG_NOTICE([WARNING: ifconfig not found. some modules may not have full functionality.])
1827 if test x$gnutls != xtrue
1829 AC_MSG_NOTICE([WARNING: GnuTLS not found, gnunet-gns-proxy will not be built])
1831 if test "x$gnutls_dane" != "x1"
1833 AC_MSG_NOTICE([WARNING: GnuTLS has no DANE support, DANE validation will not be possible])
1838 if test "x$enable_java_ports" = "xyes"
1840 AC_MSG_NOTICE([NOTICE: Opening ports for gnunet-java bindings by default.])
1844 if test "x$lmhd" != "x1"
1846 AC_MSG_NOTICE([WARNING: libmicrohttpd not found, http transport will not be installed.])
1850 if test "x$conversation_backend" = "xnone"
1852 if test "x$pulse" != "x1"
1854 AC_MSG_NOTICE([WARNING: libpulse(audio) not found, conversation will not be built.])
1856 if test "x$opus" != "x1"
1858 AC_MSG_NOTICE([WARNING: libopus not found, conversation will not be built.])
1860 if test "x$gst" != "x1"
1862 AC_MSG_NOTICE([WARNING: GStreamer not found, conversation will not be built.])
1866 if test "$extractor" != 1
1868 AC_MSG_WARN([ERROR: libextractor not found, but various file-sharing functions require it])
1871 AC_MSG_NOTICE([NOTICE: Database support is set to MySQL: $mysql, SQLite: $sqlite, Postgres: $postgres])
1873 if test "$enable_framework_build" = "yes"
1875 AC_MSG_NOTICE([Mac OS X framework build enabled.])
1878 AC_MSG_NOTICE([********************************************
1879 Please make sure NOW that you have created a user and group 'gnunet'
1880 and additionally a group 'gnunetdns'. On Debian and Ubuntu GNU/Linux, type:
1882 adduser --system --group --disabled-login --home /var/lib/gnunet gnunet
1884 Make sure that '/var/lib/gnunet' is owned (and writable) by user
1885 'gnunet'. Then, you can compile GNUnet with
1888 After that, run (if necessary as 'root')
1890 to install everything.
1892 Each GNUnet user should be added to the 'gnunet' group (may
1893 require fresh login to come into effect):
1894 adduser USERNAME gnunet
1895 (run the above command as root once for each of your users, replacing
1896 "USERNAME" with the respective login names). If you have a global IP
1897 address, no further configuration is required.
1899 For more detailed setup instructions, see https://gnunet.org/installation
1901 Optionally, download and compile gnunet-gtk to get a GUI for
1902 file-sharing and configuration. This is particularly recommended
1903 if your network setup is non-trivial, as gnunet-setup can be
1904 used to test in the GUI if your network configuration is working.
1905 gnunet-setup should be run as the "gnunet" user under X. As it
1906 does very little with the network, running it as "root" is likely
1907 also harmless. You can also run it as a normal user, but then
1908 you have to copy ~/.gnunet/gnunet.conf" over to the "gnunet" user's
1909 home directory in the end.
1911 Once you have configured your peer, run (as the 'gnunet' user)
1913 to start the peer. You can then run the various GNUnet-tools as
1914 your "normal" user (who should only be in the group 'gnunet').
1915 ********************************************])