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 if test -x "/sbin/iptables"
213 VAR_IPTABLES_BINARY="/sbin/iptables"
214 elif test -x "/usr/sbin/iptables"
216 VAR_IPTABLES_BINARY="/usr/sbin/iptables"
220 if test x"$VAR_IPTABLES_BINARY" != x"false"
222 AC_DEFINE_UNQUOTED([IPTABLES], "$VAR_IPTABLES_BINARY", [Path to iptables])
224 AC_MSG_WARN([warning: 'iptables' not found.])
227 AC_PATH_TARGET_TOOL(VAR_IFCONFIG_BINARY, ifconfig, false)
229 AC_CHECK_PROG(VAR_IFCONFIG_BINARY, ifconfig, true, false)
230 if test x"$VAR_IFCONFIG_BINARY" != x"false"
232 if test -x "/sbin/ifconfig"
234 VAR_IFCONFIG_BINARY="/sbin/ifconfig"
235 elif test -x "/usr/sbin/ifconfig"
237 VAR_IFCONFIG_BINARY="/usr/sbin/ifconfig"
240 if test x"$VAR_IFCONFIG_BINARY" != x"false"
242 AC_DEFINE_UNQUOTED([IFCONFIG], "$VAR_IFCONFIG_BINARY", [Path to ifconfig])
244 AC_MSG_WARN([warning: 'ifconfig' not found.])
248 # miniupnpc / upnpc binary is a soft runtime requirement
249 AC_PATH_TARGET_TOOL(VAR_UPNPC_BINARY, upnpc, false)
251 if test x"$VAR_UPNPC_BINARY" != x"false"
253 AC_DEFINE_UNQUOTED([UPNPC], "$VAR_UPNPC_BINARY", [Path to upnpc binary])
255 AC_MSG_WARN([warning: 'upnpc' binary not found.])
258 AC_CHECK_MEMBER(struct tm.tm_gmtoff,
259 [AC_DEFINE(HAVE_TM_GMTOFF, 1,
260 [Define if struct tm has the tm_gmtoff member.])],
264 AC_CHECK_DECLS([_stati64])
266 # 'save' libs; only those libs found so far will be
267 # linked against _everywhere_. For the others, we
268 # will be more selective!
272 AC_CHECK_LIB(anl, getaddrinfo_a, [have_addrinfo_a=1 AC_DEFINE(HAVE_GETADDRINFO_A,1,[getaddrinfo_a supported])])
273 AM_CONDITIONAL(HAVE_GETADDRINFO_A, [test "$have_addrinfo_a" = 1])
275 # tests only run on Windows
276 if test "x$build_target" = "xmingw"
278 AC_CHECK_LIB(plibc, plibc_init, [], [AC_MSG_ERROR([GNUnet requires PlibC on Windows])])
279 AC_CHECK_LIB(gnurx, regexec, [], [AC_MSG_ERROR([GNUnet requires libgnurx on Windows])])
285 NEED_LIBGCRYPT_VERSION=1.6.0
288 AM_PATH_LIBGCRYPT("$NEED_LIBGCRYPT_API:$NEED_LIBGCRYPT_VERSION", gcrypt=1)
289 AC_CHECK_DECLS([gcry_mpi_set_opaque_copy], [], [], [[#include <gcrypt.h>]])
295 *** You need libgcrypt to build this program.
296 ** This library is for example available at
297 *** ftp://ftp.gnupg.org/gcrypt/libgcrypt/
298 *** (at least version $NEED_LIBGCRYPT_VERSION (API $NEED_LIBGCRYPT_API)
302 AC_DEFINE_UNQUOTED([NEED_LIBGCRYPT_VERSION], "$NEED_LIBGCRYPT_VERSION", [required libgcrypt version])
304 # TODO: add check for VERSION
305 # TODO: add check for alternatives
306 # TODO: add switch to skip documentation building
307 AM_MISSING_PROG([MAKEINFO], [makeinfo])
309 # Adam shostack suggests the following for Windows:
310 # -D_FORTIFY_SOURCE=2 -fstack-protector-all
311 AC_ARG_ENABLE(gcc-hardening,
312 AS_HELP_STRING(--enable-gcc-hardening, enable compiler security checks),
313 [if test x$enableval = xyes; then
314 CFLAGS="$CFLAGS -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fstack-protector-all"
315 CFLAGS="$CFLAGS -fwrapv -fPIE -Wstack-protector"
316 CFLAGS="$CFLAGS --param ssp-buffer-size=1"
317 LDFLAGS="$LDFLAGS -pie"
321 # Linker hardening options
322 # Currently these options are ELF specific - you can't use this with MacOSX
323 AC_ARG_ENABLE(linker-hardening,
324 AS_HELP_STRING(--enable-linker-hardening, enable linker security fixups),
325 [if test x$enableval = xyes; then
326 LDFLAGS="$LDFLAGS -z relro -z now"
330 AC_ARG_ENABLE(sanitizer,
331 AS_HELP_STRING(--enable-sanitizer, enable Address Sanitizer and Undefined Behavior Sanitizer),
332 [if test x$enableval = xyes; then
333 LDFLAGS="$CFLAGS -fsanitize=address,undefined -fno-omit-frame-pointer"
337 extra_logging=GNUNET_NO
338 AC_ARG_ENABLE([logging],
339 AS_HELP_STRING([--enable-logging@<:@=value@:>@],[Enable logging calls. Possible values: yes,no,verbose,veryverbose ('yes' is the default)]),
340 [AS_IF([test "x$enableval" = "xyes"], [],
341 [test "x$enableval" = "xno"], [AC_DEFINE([GNUNET_CULL_LOGGING],[],[Define to cull all logging calls])],
342 [test "x$enableval" = "xverbose"], [extra_logging=GNUNET_YES]
343 [test "x$enableval" = "xveryverbose"], [extra_logging=\(GNUNET_YES+1\)])
345 AC_DEFINE_UNQUOTED([GNUNET_EXTRA_LOGGING],[$extra_logging],[1 if extra logging is enabled, 2 for very verbose extra logging, 0 otherwise])
347 # should memory poisoning be enabled?
348 AC_MSG_CHECKING(whether to poison freed memory)
349 AC_ARG_ENABLE([poisoning],
350 [AS_HELP_STRING([--enable-poisoning], [enable poisoning of freed memory (good for debugging)])],
351 [enable_poisoning=${enableval}],
353 if test "x$extra_logging" != "xGNUNET_NO"; then
354 enable_poisoning="defaults to yes (extra logging is enabled)"
359 AC_MSG_RESULT($enable_poisoning)
360 if test ! "x$enable_poisoning" = "xno"; then
365 AC_DEFINE_UNQUOTED([ENABLE_POISONING],[$enable_poisoning],[1 if freed memory should be poisoned, 0 otherwise])
367 if test $build = $target
369 AC_MSG_CHECKING([for working HMAC])
371 LIBS="$LIBS $LIBGCRYPT_LIBS"
372 CFLAGS="$CFLAGS $LIBGCRYPT_CFLAGS"
374 [AC_LANG_PROGRAM([#include <gcrypt.h>
375 #include <stdio.h>], [[
378 unsigned char data[] = { 0xbf, 0x16, 0x6e, 0x46, 0x3a, 0x6c, 0xf3, 0x93, 0xa7, 0x72,
379 0x11, 0xa1, 0xdc, 0x0b, 0x07, 0xdb, 0x1a, 0x5e, 0xd9, 0xb9, 0x81, 0xbe,
380 0xea, 0xe4, 0x31, 0x5f, 0x24, 0xff, 0xfe, 0x50, 0x8a, 0xde };
381 unsigned char key[] = { 0xfc, 0x62, 0x76, 0x35 };
382 unsigned char result[] = {0xa2, 0xb, 0x1, 0xd9, 0xc0, 0x8b, 0x5a, 0x12, 0x80,
383 0xd5, 0x50, 0x12, 0x8e, 0xd0, 0x5b, 0xb6, 0x5c, 0x87, 0x24, 0xe2, 0xd0,
384 0xd2, 0xaf, 0x63, 0xae, 0xd1, 0xd6, 0x64, 0x14, 0xe3, 0x6e, 0x61, 0x5b,
385 0xd, 0xba, 0x17, 0x7d, 0xd3, 0x10, 0xb1, 0x37, 0x41, 0x91, 0x7d, 0xeb,
386 0x1, 0x4d, 0x71, 0xe8, 0x59, 0x71, 0x42, 0x8e, 0xd6, 0xf3, 0x29, 0x3b,
387 0x90, 0xf2, 0xd1, 0xaf, 0x65, 0x1e, 0xb3};
389 if (!gcry_check_version (GCRYPT_VERSION))
391 fprintf (stderr, "Version mismatch %s <-> %s \n", gcry_check_version (NULL), GCRYPT_VERSION);
395 gcry_control (GCRYCTL_DISABLE_SECMEM, 0);
396 gcry_control (GCRYCTL_INITIALIZATION_FINISHED, 0);
398 if (gcry_md_open(&mac, GCRY_MD_SHA512, GCRY_MD_FLAG_HMAC) != GPG_ERR_NO_ERROR)
400 fprintf (stderr, "gcry_md_open error\n");
404 gcry_md_setkey (mac, key, sizeof (key));
405 gcry_md_write (mac, data, sizeof (data));
407 if (memcmp(gcry_md_read (mac, 0), result, gcry_md_get_algo_dlen (gcry_md_get_algo (mac))) != 0)
409 fprintf (stderr, "memcmp error\n");
417 [AC_MSG_RESULT([yes])],
422 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.])
426 AC_MSG_FAILURE([HMAC test failed])
430 AC_MSG_FAILURE([libgcrypt header version does not match library version])
433 [AC_MSG_RESULT([cross compiling, test skipped])])
435 fi # $build = $target
437 # check for bluetooth library
439 AC_CHECK_LIB(bluetooth, ba2str,[AC_CHECK_HEADER([bluetooth/bluetooth.h],bluetooth=1)])
440 if test "$build_target" = "mingw"
444 AM_CONDITIONAL(HAVE_LIBBLUETOOTH, [test "$bluetooth" = 1])
445 if test "$bluetooth" = 1
447 AC_DEFINE([HAVE_LIBBLUETOOTH],[1],[Have bluetooth library])
449 AC_DEFINE([HAVE_LIBBLUETOOTH],[0],[Lacking bluetooth library])
452 # check for jansson library
454 AC_MSG_CHECKING(for libjansson)
456 [ --with-jansson=PFX base of libjansson installation],
457 [AC_MSG_RESULT([$with_jansson])
458 case $with_jansson in
462 AC_CHECK_HEADERS(jansson.h,
463 AC_CHECK_LIB([jansson], [json_loads],
467 LDFLAGS="-L$with_jansson/lib $LDFLAGS"
468 CPPFLAGS="-I$with_jansson/include $CPPFLAGS"
469 AC_CHECK_HEADERS(jansson.h,
470 AC_CHECK_LIB([jansson], [json_loads],
471 EXT_LIB_PATH="-L$with_jansson/lib $EXT_LIB_PATH"
476 [AC_MSG_RESULT([--with-jansson not specified])
477 AC_CHECK_HEADERS(jansson.h,
478 AC_CHECK_LIB([jansson], [json_loads],
480 AM_CONDITIONAL(HAVE_JANSSON, [test "$jansson" = 1])
481 if test "x$jansson" = x1
483 AC_DEFINE([HAVE_JANSSON],[1],[Have jansson library])
485 AC_DEFINE([HAVE_JANSSON],[0],[Lacking jansson library])
489 # check for libpulse(audio) library
491 AC_CHECK_LIB(pulse,pa_stream_peek,
492 [AC_CHECK_HEADER([pulse/simple.h],pulse=1)])
493 if test "$build_target" = "mingw"
499 AC_DEFINE([HAVE_PULSE],[1],[Have libpulse(audio) library])
502 # check for libopus(audio) library
504 AC_CHECK_LIB(opus,opus_decode_float,
505 [AC_CHECK_HEADER([opus/opus.h],
506 [AC_CHECK_DECL([OPUS_SET_GAIN],[opus=1],[],[[#include <opus/opus.h>]]
510 AS_IF([test "x$opus" = x1],
511 [AC_DEFINE([HAVE_OPUS],[1],[Have libopus library])])
514 AC_CHECK_LIB(ogg, ogg_stream_flush_fill,
515 [AC_CHECK_HEADERS([ogg/ogg.h],
516 AM_CONDITIONAL(HAVE_OGG, true)
518 AC_DEFINE(HAVE_OGG,1,[Have ogg]),
519 AM_CONDITIONAL(HAVE_OGG, false)
521 AC_DEFINE(HAVE_OGG,0,[lacking ogg]))],
522 AM_CONDITIONAL(HAVE_OGG, false)
526 PKG_CHECK_MODULES([GLIB], [glib-2.0],
527 # check for pbc library
529 AC_CHECK_HEADER([pbc/pbc.h],pbc=1)
530 AC_CHECK_HEADER([gabe.h],abe=1)
531 AM_CONDITIONAL(HAVE_PBC, [test "$pbc" = 1])
532 AM_CONDITIONAL(HAVE_ABE, [test "$abe" = 1])
535 AC_DEFINE([HAVE_PBC],[1],[Have pbc library])
537 AC_DEFINE([HAVE_PBC],[0],[Lacking pbc library])
541 AC_DEFINE([HAVE_ABE],[1],[Have ABE library])
543 AC_DEFINE([HAVE_ABE],[0],[Lacking ABE library])
547 AM_CONDITIONAL(HAVE_PBC, [0])
548 AM_CONDITIONAL(HAVE_ABE, [0])
549 AC_DEFINE([HAVE_PBC],[0],[Lacking glib library])
555 [glib-2.0 gobject-2.0 gstreamer-1.0 gstreamer-app-1.0 gstreamer-audio-1.0],
561 AC_MSG_RESULT(not found)
565 if test "x$pulse" != "x1" -o "x$opus" != "x1" -o "x$ogg" != "x1"
567 if test "x$gst" != "x1"
569 conversation_backend=none
570 AM_CONDITIONAL(BUILD_PULSE_HELPERS, false)
571 AM_CONDITIONAL(BUILD_GST_HELPERS, false)
572 AM_CONDITIONAL(BUILD_EXPERIMENTAL_HELPERS, false)
574 conversation_backend=gst
575 AM_CONDITIONAL(BUILD_PULSE_HELPERS, false)
576 AM_CONDITIONAL(BUILD_GST_HELPERS, true)
577 AM_CONDITIONAL(BUILD_EXPERIMENTAL_HELPERS, false)
581 conversation_backend=pulse
582 AM_CONDITIONAL(BUILD_PULSE_HELPERS, true)
583 AM_CONDITIONAL(BUILD_GST_HELPERS, false)
584 AM_CONDITIONAL(BUILD_EXPERIMENTAL_HELPERS, false)
588 LIBGNURL_CHECK_CONFIG(,7.34.0,gnurl=1,gnurl=0)
591 AM_CONDITIONAL(HAVE_LIBGNURL, true)
592 AC_DEFINE([HAVE_LIBGNURL],[1],[Have libgnurl])
594 AM_CONDITIONAL(HAVE_LIBGNURL, false)
595 AC_DEFINE([HAVE_LIBGNURL],[0],[Lacking libgnurl])
598 SAVE_CPPFLAGS=$CPPFLAGS
599 CPPFLAGS="$LIBGNURL_CPPFLAGS $LIBCURL_CPPFLAGS $CPPFLAGS"
600 LIBS="$LIBGNURL $LIBCURL $LIBS"
603 LIBCURL_CHECK_CONFIG(,7.34.0,[curl=true],[curl=false])
604 if test "x$curl" = xtrue
607 AC_CHECK_HEADERS([curl/curl.h],
608 AC_CHECK_DECLS(CURLINFO_TLS_SESSION,[curl=true],[curl=false],[[#include <curl/curl.h>]]),
610 AC_CHECK_HEADERS([gnurl/curl.h],
611 AC_CHECK_DECLS(CURLINFO_TLS_SESSION,[curl=true],,[[#include <gnurl/curl.h>]]))
612 # need libcurl-gnutls.so, everything else is not acceptable
613 AC_CHECK_LIB([curl-gnutls],[curl_easy_getinfo],,[curl=false])
614 # cURL must support CURLINFO_TLS_SESSION, version >= 7.34
617 # Check for curl/curl.h and gnurl/curl.h so we can use #ifdef
618 # HAVE_CURL_CURL_H later (the above LIBCURL_CHECK_CONFIG accepted
619 # *either* header set).
620 AC_CHECK_HEADERS([curl/curl.h],,
622 AC_CHECK_HEADERS([gnurl/curl.h],,
627 if test x$curl = xfalse
629 AM_CONDITIONAL(HAVE_LIBCURL, false)
632 AC_MSG_WARN([ERROR: GNUnet requires libcurl-gnutls or gnurl >= 7.34])
635 AM_CONDITIONAL(HAVE_LIBCURL, true)
636 AC_DEFINE([HAVE_LIBCURL],[1],[Have CURL])
640 # restore LIBS & CPPFLAGS
642 CPPFLAGS=$SAVE_CPPFLAGS
644 AC_CHECK_HEADERS([glpk.h],[glpk=true],[gplk=false])
645 # GLPK must support glpk_init_env, version >= 4.43
646 AC_CHECK_LIB([glpk],[glp_init_env],,[gplk=false])
647 # GLPK must support atm MLP presolving, version >= 4.32
648 AC_CHECK_MEMBERS(glp_iocp.presolve,,[gplk=false],[[#include <glpk.h>]])
649 if test x$gplk = xfalse
651 AM_CONDITIONAL(HAVE_LIBGLPK, false)
652 AC_MSG_WARN([ERROR: GNUnet requires GLPK >= 4.32])
654 AM_CONDITIONAL(HAVE_LIBGLPK, true)
655 AC_DEFINE([HAVE_LIBGLPK],[1],[Have GLPK])
659 AC_CHECK_HEADERS([nss.h],[nss=true],[nss=false])
660 if test x$nss = xfalse
662 AM_CONDITIONAL(HAVE_GLIBCNSS, false)
663 AC_MSG_WARN([ERROR: No GNU libc nss header, will not build NSS plugin])
665 AM_CONDITIONAL(HAVE_GLIBCNSS, true)
670 # test for kvm and kstat (for CPU stats under BSD/Solaris)
671 AC_CHECK_LIB([kvm],[kvm_open])
672 AC_CHECK_LIB([kstat],[kstat_open])
675 # should the build process be building the documentation?
676 AC_MSG_CHECKING(whether to build documentation)
677 AC_ARG_ENABLE([documentation],
678 [AS_HELP_STRING([--disable-documentation], [do not build the documentation])],
679 [documentation=${enableval}],
681 AC_MSG_RESULT($documentation)
682 if test "x$documentation" = "xyes"
684 AM_CONDITIONAL([DOCUMENTATION],true)
685 AC_DEFINE([DOCUMENTATION],[1],[Building the documentation])
687 AM_CONDITIONAL([DOCUMENTATION],false)
688 AC_DEFINE([DOCUMENTATION],[0],[Not building the documentation])
691 # TODO: Include check for mandoc + texi2mdoc.
692 # TODO: Rename the switch? Just 'section7' is too vague.
693 # mdoc section 7 output.
694 AC_MSG_CHECKING(wether to build section 7 mdoc output)
695 AC_ARG_ENABLE([section7],
696 [AS_HELP_STRING([--disable-section7], [do not build section 7 mdoc output])],
697 [section7=${enableval}],
699 AC_MSG_RESULT($section7)
700 if test "x$section7" = "xyes"
702 AM_CONDITIONAL([SECTION7],true)
703 AC_DEFINE([SECTION7],[1],[Building section 7 mdoc output])
705 AM_CONDITIONAL([SECTION7],false)
706 AC_DEFINE([SECTION7],[0],[Not building section 7 mdoc output])
709 # should the build process be building only the documentation?
710 AC_MSG_CHECKING(whether to build only documentation)
711 AC_ARG_ENABLE([documentation-only],
712 [AS_HELP_STRING([--enable-documentation-only], [build only the documentation])],
713 [documentation_only=${enableval}],
714 [documentation_only=no])
715 AC_MSG_RESULT($documentation_only)
716 if test "x$documentation_only" = "xyes"
718 AM_CONDITIONAL([DOCUMENTATION_ONLY],true)
719 AC_DEFINE([DOCUMENTATION_ONLY],[1],[Building only the documentation])
721 AM_CONDITIONAL([DOCUMENTATION_ONLY],false)
722 AC_DEFINE([DOCUMENTATION_ONLY],[0],[Not building only the documentation])
725 # should the build process be restricted to the code required
726 # for GNU Taler wallets?
727 AC_MSG_CHECKING(whether to compile GNU Taler Wallet library ONLY)
728 AC_ARG_ENABLE([taler-wallet],
729 [AS_HELP_STRING([--enable-taler-wallet], [only compile for Taler wallet])],
730 [taler_only=${enableval}],
732 AC_MSG_RESULT($taler_only)
733 if test "x$taler_only" = "xyes"
735 AM_CONDITIONAL([TALER_ONLY],true)
736 AC_DEFINE([TALER_WALLET_ONLY],[1],[Compiling for Taler wallet])
738 AM_CONDITIONAL([TALER_ONLY],false)
739 AC_DEFINE([TALER_WALLET_ONLY],[0],[Canonical compilation])
742 # test for libextractor
744 AC_MSG_CHECKING(for libextractor)
745 AC_ARG_WITH(extractor,
746 [ --with-extractor=PFX base of libextractor installation],
747 [AC_MSG_RESULT([$with_extractor])
748 case $with_extractor in
752 AC_CHECK_HEADERS(extractor.h,
753 AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
757 LDFLAGS="-L$with_extractor/lib $LDFLAGS"
758 CPPFLAGS="-I$with_extractor/include $CPPFLAGS"
759 AC_CHECK_HEADERS(extractor.h,
760 AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
761 EXT_LIB_PATH="-L$with_extractor/lib $EXT_LIB_PATH"
766 [AC_MSG_RESULT([--with-extractor not specified])
767 AC_CHECK_HEADERS(extractor.h,
768 AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
773 if test "$extractor" != 1
775 AM_CONDITIONAL(HAVE_LIBEXTRACTOR, false)
776 AC_DEFINE([HAVE_LIBEXTRACTOR],[0],[Lacking libextractor])
778 AM_CONDITIONAL(HAVE_LIBEXTRACTOR, true)
779 AC_DEFINE([HAVE_LIBEXTRACTOR],[1],[Have libextractor])
783 if test "$taler_only" != yes
786 # Check for libltdl header (#2999)
788 AC_MSG_CHECKING(for libltdl)
790 [ --with-ltdl=PFX base of libltdl installation],
791 [AC_MSG_RESULT([$with_ltdl])
796 AC_CHECK_HEADERS(ltdl.h,
797 AC_CHECK_LIB([ltdl], [lt_dlopenext],
801 LDFLAGS="-L$with_ltdl/lib $LDFLAGS"
802 CPPFLAGS="-I$with_ltdl/include $CPPFLAGS"
803 AC_CHECK_HEADERS(ltdl.h,
804 AC_CHECK_LIB([ltdl], [lt_dlopenext],
805 EXT_LIB_PATH="-L$with_ltdl/lib $EXT_LIB_PATH"
810 [AC_MSG_RESULT([--with-ltdl not specified])
811 AC_CHECK_HEADERS(ltdl.h,
812 AC_CHECK_LIB([ltdl], [lt_dlopenext],
816 AC_MSG_RESULT([libltdl found])
818 AC_MSG_ERROR([GNUnet requires libltdl (from GNU libtool), try installing libltdl-dev])
825 AC_MSG_CHECKING([if Libidn can be used])
826 AC_ARG_WITH(libidn, AC_HELP_STRING([--with-libidn=[DIR]],
827 [Support IDN (needs GNU Libidn)]),
828 libidn=$withval, libidn=yes)
829 if test "$libidn" != "no"; then
830 if test "$libidn" != "yes"; then
831 LDFLAGS="${LDFLAGS} -L$libidn/lib"
832 CPPFLAGS="${CPPFLAGS} -I$libidn/include"
836 AC_CHECK_HEADER(idna.h,
837 AC_CHECK_LIB(idn, stringprep_check_version,
838 [libidn=yes LIBS="${LIBS} -lidn"], []), [])
839 if test "$libidn" != "yes"; then
840 AC_MSG_FAILURE([GNUnet requires libidn.
841 libidn-1.13 should be sufficient, newer versions work too.])
843 AC_MSG_RESULT($libidn)
847 SAVE_LDFLAGS=$LDFLAGS
848 SAVE_CPPFLAGS=$CPPFLAGS
850 [ --with-zlib[[=DIR]] use libz in DIR],
851 [AS_IF([test "$withval" = "no"],
852 [AC_MSG_ERROR([GNUnet requires zlib])],
853 [test "$withval" != "yes"],
856 CPPFLAGS="${CPPFLAGS} -I$withval/include"
857 LDFLAGS="${LDFLAGS} -L$withval/lib"
860 AC_CHECK_HEADER(zlib.h,
862 [AC_MSG_ERROR([GNUnet requires zlib])])
863 AC_CHECK_LIB(z, compress2,
865 AC_DEFINE([HAVE_ZLIB], [], [Have compression library])
866 if test "x${Z_DIR}" != "x"; then
867 Z_CFLAGS="-I${Z_DIR}/include"
868 Z_LIBS="-L${Z_DIR}/lib -lz"
872 [AC_MSG_ERROR([GNUnet requires zlib])])
876 if test "$enable_shared" = "no"
878 AC_MSG_ERROR([GNUnet only works with shared libraries. Sorry.])
892 # test for libunistring
894 if test $HAVE_LIBUNISTRING != yes; then
895 AC_MSG_ERROR([GNUnet requires libunistring])
897 # under emscripten, $gl_libunistring_hexversion is undefined
898 if test "$taler_only" != yes; then
899 if test "x$gl_libunistring_hexversion" = "x" || test "$gl_libunistring_hexversion" -le 2305; then
900 AC_MSG_ERROR([GNUnet requires libunistring >= 0.9.1.1])
903 AC_CHECK_HEADERS([unistr.h],,AC_MSG_ERROR([Compiling GNUnet requires unistr.h (from libunistring) to be installed]))
910 # Checks for standard header files.
914 # Check for headers that are ALWAYS required
915 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]))
919 # Checks for headers that are only required on some systems or opional (and where we do NOT abort if they are not there)
920 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])
922 # FreeBSD requires something more funky for netinet/in_systm.h and netinet/ip.h...
923 AC_CHECK_HEADERS([sys/types.h netinet/in_systm.h netinet/in.h netinet/ip.h],,,
924 [#ifdef HAVE_SYS_TYPES_H
925 #include <sys/types.h>
927 #ifdef HAVE_NETINET_IN_SYSTM_H
928 #include <netinet/in_systm.h>
930 #ifdef HAVE_NETINET_IN_H
931 #include <netinet/in.h>
935 SAVE_LDFLAGS=$LDFLAGS
936 SAVE_CPPFLAGS=$CPPFLAGS
940 AC_MSG_CHECKING(for SQLite)
942 [ --with-sqlite=PFX base of SQLite installation],
943 [AC_MSG_RESULT("$with_sqlite")
948 AC_CHECK_HEADERS(sqlite3.h,
952 LDFLAGS="-L$with_sqlite/lib $LDFLAGS"
953 CPPFLAGS="-I$with_sqlite/include $CPPFLAGS"
954 AC_CHECK_HEADERS(sqlite3.h,
955 EXT_LIB_PATH="-L$with_sqlite/lib $EXT_LIB_PATH"
956 SQLITE_LDFLAGS="-L$with_sqlite/lib"
957 SQLITE_CPPFLAGS="-I$with_sqlite/include"
959 LDFLAGS=$SAVE_LDFLAGS
960 CPPFLAGS=$SAVE_CPPFLAGS
964 [AC_MSG_RESULT([--with-sqlite not specified])
965 AC_CHECK_HEADERS(sqlite3.h, sqlite=true)])
966 AM_CONDITIONAL(HAVE_SQLITE, test x$sqlite = xtrue)
967 AC_SUBST(SQLITE_CPPFLAGS)
968 AC_SUBST(SQLITE_LDFLAGS)
970 LDFLAGS=$SAVE_LDFLAGS
971 CPPFLAGS=$SAVE_CPPFLAGS
975 # even running the check for postgres breaks emscripten ...
976 if test "$taler_only" != yes; then
977 AX_LIB_POSTGRESQL([9.5])
978 if test "x$found_postgresql" = "xyes"; then
979 CPPFLAGS="$CPPFLAGS $POSTGRESQL_CPPFLAGS"
980 AC_CHECK_HEADERS([libpq-fe.h],
984 AM_CONDITIONAL(HAVE_POSTGRESQL, test x$postgres = xtrue)
987 LDFLAGS=$SAVE_LDFLAGS
988 CPPFLAGS=$SAVE_CPPFLAGS
991 AC_CHECK_TYPES([sigset_t, off_t], [], [], [#include <sys/types.h>])
992 AC_CHECK_TYPES([size_t], [], [], [#include <stdio.h>])
994 if test "$build_target" = "mingw"
996 CYGWIN_MYSQL_MAGIC="#include <mysql/my_global.h>"
1002 SAVE_LDFLAGS=$LDFLAGS
1003 SAVE_CPPFLAGS=$CPPFLAGS
1004 AC_MSG_CHECKING(for mysql)
1006 [ --with-mysql=PFX base of MySQL installation],
1007 [AC_MSG_RESULT([$with_mysql])
1012 AC_CHECK_HEADERS(mysql/mysql.h,
1013 AC_CHECK_LIB(mysqlclient, mysql_init,
1015 mysql=true), [], [$CYGWIN_MYSQL_MAGIC])
1018 LDFLAGS="-L$with_mysql/lib -L$with_mysql/lib/mysql $LDFLAGS $ZLIBS"
1019 CPPFLAGS="-I$with_mysql/include $CPPFLAGS"
1020 AC_CHECK_HEADERS(mysql/mysql.h,
1021 AC_CHECK_LIB(mysqlclient, mysql_init,
1022 MYSQL_LDFLAGS="-L$with_mysql/lib -L$with_mysql/lib/mysql"
1023 MYSQL_CPPFLAGS="-I$with_mysql/include"
1025 mysql=true), [], [$CYGWIN_MYSQL_MAGIC])
1029 [AC_MSG_RESULT([--with-mysql not specified])
1030 if test -d "/usr/lib64/mysql"; then
1031 MYSQL_LIBDIR="/usr/lib64/mysql"
1032 elif test -d "/usr/lib/mysql"; then
1033 MYSQL_LIBDIR="/usr/lib/mysql"
1035 MYSQL_LIBDIR="/usr/lib"
1037 LDFLAGS="-L$MYSQL_LIBDIR $LDFLAGS $ZLIBS"
1038 AC_CHECK_LIB(mysqlclient, mysql_init,
1039 [AC_CHECK_HEADERS(mysql/mysql.h,
1040 MYSQL_LDFLAGS="-L$MYSQL_LIBDIR"
1043 , [], [$CYGWIN_MYSQL_MAGIC])])
1046 AC_SUBST(MYSQL_LDFLAGS)
1047 AC_SUBST(MYSQL_CPPFLAGS)
1049 # additional version check for mysql
1050 AC_ARG_ENABLE(mysql-version-check, [ --disable-mysql-version-check do not check MySQL version],, enable_mysql_version_check=yes)
1051 if test "$mysql" = "true" -a "x$enable_mysql_version_check" = "xyes"
1053 AC_MSG_CHECKING(mysql version)
1054 AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
1055 [[$CYGWIN_MYSQL_MAGIC
1056 #include <mysql/mysql.h>]],
1058 #if (MYSQL_VERSION_ID < 40100)
1059 #error needs at least version >= 4.1
1061 int main () { return 0; }
1063 ],mysql=true,mysql=false)
1064 if test "$mysql" = "false"
1067 AC_MSG_RESULT([fail, >= 4.1 required])
1072 AM_CONDITIONAL(HAVE_MYSQL, test x$mysql = xtrue)
1073 AM_CONDITIONAL(HAVE_MYSQLE, test "0" = "1")
1076 LDFLAGS=$SAVE_LDFLAGS
1077 CPPFLAGS=$SAVE_CPPFLAGS
1079 if test "$sqlite" = 0 -a "$mysql" = 0
1081 AC_MSG_ERROR([GNUnet requires SQLite or MySQL])
1086 AC_MSG_CHECKING([for libmicrohttpd])
1087 AC_ARG_WITH(microhttpd,
1088 [ --with-microhttpd=PFX base of libmicrohttpd installation],
1089 [AC_MSG_RESULT([$with_microhttpd])
1090 case $with_microhttpd in
1094 AC_CHECK_HEADERS([microhttpd.h],
1095 AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
1096 AC_CHECK_LIB([microhttpd], [MHD_get_fdset2],
1097 [AC_MSG_CHECKING([for libmicrohttpd >= 0.9.42])
1098 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
1099 #include "$native_srcdir/src/include/platform.h"
1100 #include <microhttpd.h>
1101 #if (MHD_VERSION < 0x0094200)
1102 #error needs at least version 0.9.42
1104 int main () { return 0; }
1108 [AC_MSG_RESULT(failed)])]),
1109 [],[#include "$native_srcdir/src/include/platform.h"
1110 #include <microhttpd.h>]),,
1111 [#include "$native_srcdir/src/include/platform.h"])
1114 LDFLAGS="-L$with_microhttpd/lib $LDFLAGS"
1115 CPPFLAGS="-I$with_microhttpd/include $CPPFLAGS"
1116 AC_CHECK_HEADERS(microhttpd.h,
1117 AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
1118 AC_CHECK_LIB([microhttpd], [MHD_get_fdset2],
1119 EXT_LIB_PATH="-L$with_microhttpd/lib $EXT_LIB_PATH"
1120 [AC_MSG_CHECKING([for libmicrohttpd >= 0.9.42])
1121 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
1122 #include "$native_srcdir/src/include/platform.h"
1123 #include <microhttpd.h>
1124 #if (MHD_VERSION < 0x0094200)
1125 #error needs at least version 0.9.42
1127 int main () { return 0; }
1131 [AC_MSG_RESULT(failed)])]),
1132 [],[#include "$native_srcdir/src/include/platform.h"
1133 #include <microhttpd.h>]),,
1134 [#include "$native_srcdir/src/include/platform.h"])
1138 [AC_MSG_RESULT([--with-microhttpd not specified])
1139 AC_CHECK_HEADERS([microhttpd.h],
1140 AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
1141 AC_CHECK_LIB([microhttpd], [MHD_get_fdset2],
1142 [AC_MSG_CHECKING([for libmicrohttpd >= 0.9.42])
1143 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
1144 #include "$native_srcdir/src/include/platform.h"
1145 #include <microhttpd.h>
1146 #if (MHD_VERSION < 0x0094200)
1147 #error needs at least version 0.9.42
1152 [AC_MSG_RESULT(failed)])]),
1153 [],[#include "$native_srcdir/src/include/platform.h"
1154 #include <microhttpd.h>]),,
1155 [#include "$native_srcdir/src/include/platform.h"])])
1156 AM_CONDITIONAL(HAVE_MHD, test x$lmhd = x1)
1157 AC_DEFINE_UNQUOTED([HAVE_MHD], $lmhd, [We have libmicrohttpd])
1159 AM_CONDITIONAL(HAVE_JSON, [test x$jansson = x1])
1164 # check for python & pexpect (used for some testcases only)
1165 AM_PATH_PYTHON([2.6],, [:])
1166 AM_CONDITIONAL([HAVE_PYTHON], [test "$PYTHON" != :])
1169 AM_GNU_GETTEXT([external])
1170 AM_GNU_GETTEXT_VERSION([0.18.1])
1172 # Checks for standard typedefs, structures, and compiler characteristics.
1181 AC_CHECK_MEMBER([struct sockaddr_in.sin_len],
1182 [ AC_DEFINE(HAVE_SOCKADDR_IN_SIN_LEN, 1, [Do we have sockaddr_in.sin_len?])
1186 #include <sys/types.h>
1187 #include <sys/socket.h>
1188 #include <netinet/in.h>
1191 AC_CHECK_MEMBER([struct sockaddr_un.sun_len],
1192 [ AC_DEFINE(HAVE_SOCKADDR_UN_SUN_LEN, 1, [Do we have sockaddr_un.sun_len?])
1196 #include <sys/types.h>
1197 #include <sys/socket.h>
1203 # Checks for library functions.
1204 AC_FUNC_CLOSEDIR_VOID
1206 AC_PROG_GCC_TRADITIONAL
1208 AC_FUNC_SELECT_ARGTYPES
1218 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])
1224 GN_LIBINTL="$LTLIBINTL"
1225 AC_ARG_ENABLE(framework, [ --enable-framework enable Mac OS X framework build helpers],enable_framework_build=$enableval)
1226 AM_CONDITIONAL(WANT_FRAMEWORK, test x$enable_framework_build = xyes)
1227 if test x$enable_framework_build = xyes
1229 AC_DEFINE([FRAMEWORK_BUILD], 1, [Build a Mac OS X Framework])
1230 GN_INTLINCL='-I$(top_srcdir)/src/intlemu'
1231 GN_LIBINTL='$(top_builddir)/src/intlemu/libintlemu.la -framework CoreFoundation'
1232 AC_LIB_APPENDTOVAR([CPPFLAGS], [$GN_INTLINCL])
1235 GN_LIB_LDFLAGS="-export-dynamic -no-undefined"
1236 GN_PLUGIN_LDFLAGS="-export-dynamic -avoid-version -module -no-undefined"
1238 AC_SUBST(GN_LIB_LDFLAGS)
1239 AC_SUBST(GN_PLUGIN_LDFLAGS)
1240 AC_SUBST(GN_INTLINCL)
1241 AC_SUBST(GN_LIBINTL)
1246 AC_SUBST(EXT_LIB_PATH)
1251 AC_SUBST(EXT_LIB_PATH)
1255 AC_MSG_CHECKING(for sudo)
1257 [ --with-sudo=PATH path to sudo binary (or just yes)],
1258 [AC_MSG_RESULT("$with_sudo")
1267 SUDO_BINARY=$with_sudo
1271 [AC_MSG_RESULT([no])])
1272 AC_SUBST(SUDO_BINARY)
1273 AM_CONDITIONAL([HAVE_SUDO], [test "x$SUDO_BINARY" != "x" -o -w /])
1276 # test for gnunetdns group name
1277 GNUNETDNS_GROUP=gnunetdns
1278 AC_MSG_CHECKING(for gnunetdns group name)
1279 AC_ARG_WITH(gnunetdns,
1280 [ --with-gnunetdns=GRPNAME name for gnunetdns group],
1281 [AC_MSG_RESULT("$with_gnunetdns")
1282 case $with_gnunetdns in
1284 GNUNETDNS_GROUP=gnunet
1287 GNUNETDNS_GROUP=gnunetdns
1290 GNUNETDNS_GROUP=$with_gnunetdns
1294 [AC_MSG_RESULT([gnunetdns])])
1295 AC_SUBST(GNUNETDNS_GROUP)
1302 AC_MSG_CHECKING(for gnutls)
1304 [ --with-gnutls=PFX base of gnutls installation],
1305 [AC_MSG_RESULT([$with_gnutls])
1306 case $with_gnutls in
1310 AC_CHECK_HEADERS([gnutls/abstract.h],
1311 AC_CHECK_LIB([gnutls], [gnutls_priority_set],
1313 AC_CHECK_HEADERS([gnutls/dane.h],
1314 AC_CHECK_LIB([gnutls-dane], [dane_verify_crt_raw],
1318 LDFLAGS="-L$with_gnutls/lib $LDFLAGS"
1319 CPPFLAGS="-I$with_gnutls/include $CPPFLAGS"
1320 AC_CHECK_HEADERS([gnutls/abstract.h],
1321 AC_CHECK_LIB([gnutls], [gnutls_priority_set],
1322 EXT_LIB_PATH="-L$with_gnutls/lib $EXT_LIB_PATH"
1324 AC_CHECK_HEADERS([gnutls/dane.h],
1325 AC_CHECK_LIB([gnutls-dane], [dane_verify_crt_raw],
1330 [AC_MSG_RESULT([--with-gnutls not specified])
1331 AC_CHECK_HEADERS([gnutls/abstract.h],
1332 AC_CHECK_LIB([gnutls], [gnutls_priority_set],
1334 AC_CHECK_HEADERS([gnutls/dane.h],
1335 AC_CHECK_LIB([gnutls-dane], [dane_verify_crt_raw],
1338 AM_CONDITIONAL(HAVE_GNUTLS, test x$gnutls = xtrue)
1339 AC_DEFINE_UNQUOTED([HAVE_GNUTLS], $gnutls, [We have GnuTLS])
1340 AM_CONDITIONAL(HAVE_GNUTLS_DANE, test x$gnutls_dane = x1)
1341 AC_DEFINE_UNQUOTED([HAVE_GNUTLS_DANE], $gnutls_dane, [We have GnuTLS with DANE support])
1344 # Test if we are building for superMUC
1345 AC_MSG_CHECKING(if GNUnet is being configured to run on the SuperMUC)
1346 AC_ARG_ENABLE([supermuc],
1347 [AS_HELP_STRING([--enable-supermuc],
1348 [build GNUnet with support to run on the SuperMUC (default is NO)])],
1349 [if test "x$enable_supermuc" = "xno"
1356 enable_supermuc=no])
1357 AC_MSG_RESULT($enable_SUPERMUC)
1358 AM_CONDITIONAL([ENABLE_SUPERMUC], [test "x$supermuc" = "x1"])
1359 AC_DEFINE_UNQUOTED([ENABLE_SUPERMUC], [$supermuc], [Build with support for SuperMUC])
1361 # Check if NSE has to send timestamp information to testbed logger for
1362 # generating histogram of messages received
1363 AC_MSG_CHECKING(if NSE has to send timestamp information to testbed logger)
1364 AC_ARG_ENABLE([nse-histogram],
1365 [AS_HELP_STRING([--enable-nse-histogram],
1366 [have NSE send timestamp information to testbed logger for generating
1367 histogram of received messages. NOT useful for production (default is
1369 [if test "x$enableval" = "xno"
1376 enable_nse_histogram=no])
1377 AC_MSG_RESULT($enable_nse_histogram)
1378 AM_CONDITIONAL([ENABLE_NSE_HISTOGRAM], [test "x$nse_histogram" = "x1"])
1379 AC_DEFINE_UNQUOTED([ENABLE_NSE_HISTOGRAM], [$nse_histogram],
1380 [have NSE send timestamp information to testbed logger])
1382 # should 'make check' run tests?
1383 AC_MSG_CHECKING(whether to run tests)
1384 AC_ARG_ENABLE([testruns],
1385 [AS_HELP_STRING([--disable-testruns], [disable running tests on make check (default is YES)])],
1386 [enable_tests_run=${enableval}],
1387 [enable_tests_run=yes])
1388 AC_MSG_RESULT($enable_test_run)
1389 AM_CONDITIONAL([ENABLE_TEST_RUN], [test "x$enable_tests_run" = "xyes"])
1392 # should monkey be used when running (certain) services?
1393 AC_MSG_CHECKING(whether to run with monkey)
1394 AC_ARG_ENABLE([monkey],
1395 [AS_HELP_STRING([--enable-monkey], [enable running with monkey])],
1396 [enable_monkey=${enableval}],
1398 AC_MSG_RESULT($enable_monkey)
1399 AM_CONDITIONAL([ENABLE_MONKEY], [test "x$enable_monkey" = "xyes"])
1400 if test "x$enable_monkey" = "xyes"
1402 MONKEYPREFIX="pathologist -d $(eval echo ${datarootdir}/gnunet/gnunet.sqlite) -p 30 --"
1406 AC_SUBST(MONKEYPREFIX)
1409 AC_MSG_CHECKING([whether to compile in benchmarks (currently for http and crypto)])
1410 AC_ARG_ENABLE([benchmark],
1411 [AS_HELP_STRING([--enable-benchmark], [enable benchmarking])],
1412 [enable_benchmark=${enableval}],
1413 [enable_benchmark=no])
1414 AC_MSG_RESULT($enable_benchmark)
1415 AS_IF([test "x$enable_benchmark" = "xyes"],
1416 [AC_DEFINE_UNQUOTED(ENABLE_BENCHMARK,1,[Benchmarks are enabled])])
1417 AM_CONDITIONAL([ENABLE_BENCHMARK], [test "x$enable_benchmark" = "xyes"])
1420 # should expensive tests be run?
1421 AC_MSG_CHECKING(whether to run expensive tests)
1422 AC_ARG_ENABLE([expensivetests],
1423 [AS_HELP_STRING([--enable-expensivetests], [enable running expensive testcases])],
1424 [enable_expensive=${enableval}],
1425 [enable_expensive=no])
1426 AC_MSG_RESULT($enable_expensive)
1427 AM_CONDITIONAL([HAVE_EXPENSIVE_TESTS], [test "x$enable_expensive" = "xyes"])
1429 # should ports be open for Java services?
1430 AC_MSG_CHECKING(whether to enable ports for gnunet-java)
1431 AC_ARG_ENABLE([javaports],
1432 [AS_HELP_STRING([--enable-javaports], [use non-zero ports for services with Java bindings (default is NO)])],
1433 [enable_java_ports=${enableval}],
1434 [enable_java_ports=no])
1435 AC_MSG_RESULT($enable_java_ports)
1436 if test "x$enable_java_ports" = "xyes"
1440 JAVAPORT="$UNIXONLY"
1444 # should benchmarks be run?
1445 AC_MSG_CHECKING(whether to run benchmarks during make check)
1446 AC_ARG_ENABLE([benchmarks],
1447 [AS_HELP_STRING([--enable-benchmarks], [enable running benchmarks during make check])],
1448 [enable_benchmarks=${enableval}],
1449 [enable_benchmarks=no])
1450 AC_MSG_RESULT($enable_benchmarks)
1451 AM_CONDITIONAL([HAVE_BENCHMARKS], [test "x$enable_benchmarks" = "xyes"])
1453 # should gnunet-testing be compiled
1454 AC_MSG_CHECKING(wether to compile gnunet-testing)
1455 AC_ARG_ENABLE([testing],
1456 [AS_HELP_STRING([--disable-testing], [do not build gnunet-testing])],
1457 [enable_testing=${enableval}],
1458 [enable_testing=yes])
1459 AC_MSG_RESULT($enable_testing)
1460 AM_CONDITIONAL([HAVE_TESTING], [test "x$enable_testing" = "xyes"])
1462 # should experimental code be compiled (code that may not yet compile)?
1463 AC_MSG_CHECKING(whether to compile experimental code)
1464 AC_ARG_ENABLE([experimental],
1465 [AS_HELP_STRING([--enable-experimental], [enable compiling experimental code])],
1466 [enable_experimental=${enableval}],
1467 [enable_experimental=no])
1468 AC_MSG_RESULT($enable_experimental)
1469 AM_CONDITIONAL([HAVE_EXPERIMENTAL], [test "x$enable_experimental" = "xyes"])
1471 # should malicious code be compiled (should only be used for testing)?
1472 AC_MSG_CHECKING(whether to compile malicious code)
1473 AC_ARG_ENABLE([malicious],
1474 [AS_HELP_STRING([--enable-malicious], [enable compiling malicious code])],
1475 [if test "x$enableval" = "xno"
1482 enable_malicious=no])
1483 AC_MSG_RESULT($enable_malicious)
1484 AM_CONDITIONAL([ENABLE_MALICIOUS], [test 1=$malicious])
1485 AC_DEFINE_UNQUOTED([ENABLE_MALICIOUS], [$malicious],
1486 [enable compilation of malicious code])
1488 # should services be started on demand when needed? Some services may choose to
1489 # never start by default and it is up to the service/module developer to decide
1490 # by having "START_ON_DEMAND = NO" instead of "START_ON_DEMAND = @START_ON_DEMAND@"
1491 # in the service/module's conf.in file.
1492 # See also IMMEDIATE_START for an unconditional immediate start.
1493 START_ON_DEMAND="YES"
1494 AC_MSG_CHECKING(whether to start peer's services on demand by default)
1495 AC_ARG_ENABLE([autostart],
1496 [AS_HELP_STRING([--disable-autostart], [do not start peer's services by default])],
1497 [enable_autostart=${enableval}
1498 if test "x$enable_autostart" == "xno"
1500 START_ON_DEMAND="NO"
1503 [enable_autostart=yes])
1504 AC_MSG_RESULT($enable_autostart)
1505 #AM_CONDITIONAL([HAVE_START_ON_DEMAND], [test "x$enable_autostart" = "xyes"])
1506 AC_SUBST(START_ON_DEMAND)
1508 # should memory statistics be kept (very expensive CPU-wise!)
1509 AC_MSG_CHECKING(whether to create expensive statistics on memory use)
1510 AC_ARG_ENABLE([heapstats],
1511 [AS_HELP_STRING([--enable-heapstats], [enable expensive heap statistics])],
1512 [enable_heapstats=1],
1513 [enable_heapstats=0])
1514 AC_MSG_RESULT($enable_heapstats)
1515 AC_DEFINE_UNQUOTED([ENABLE_HEAP_STATISTICS],$enable_heapstats,[enable expensive heap statistics])
1517 # should code be enabled that works around missing OS functionality on Windows?
1518 # used for test cases
1519 if test $build_target = "mingw"
1525 [#include <ws2tcpip.h>
1527 int s = socket (0, 0, 0);])
1529 AC_DEFINE_UNQUOTED([HAVE_SOCKET],1,[Define this if socket() is available])
1531 AC_DEFINE_UNQUOTED([HAVE_SOCKET],0,[Define this if socket() is available])
1536 [#include <ws2tcpip.h>
1538 int s = select (0, NULL, NULL, NULL, NULL);])
1540 AC_DEFINE_UNQUOTED([HAVE_SELECT],1,[Define this if select() is available])
1542 AC_DEFINE_UNQUOTED([HAVE_SELECT],0,[Define this if select() is available])
1547 [#include <ws2tcpip.h>
1550 char *s = inet_ntoa (i);])
1552 AC_DEFINE_UNQUOTED([HAVE_INET_NTOA],1,[Define this if inet_ntoa() is available])
1554 AC_DEFINE_UNQUOTED([HAVE_INET_NTOA],0,[Define this if inet_ntoa() is available])
1559 [#include <ws2tcpip.h>
1561 int s = getnameinfo (NULL, 0, NULL, 0, NULL, 0, 0);])
1563 AC_DEFINE_UNQUOTED([HAVE_GETNAMEINFO],1,[Define this if getnameinfo() is available])
1565 AC_DEFINE_UNQUOTED([HAVE_GETNAMEINFO],0,[Define this if getnameinfo() is available])
1570 [#include <ws2tcpip.h>
1572 int s = gethostname (NULL, 0);])
1574 AC_DEFINE_UNQUOTED([HAVE_GETHOSTNAME],1,[Define this if gethostname() is available])
1576 AC_DEFINE_UNQUOTED([HAVE_GETHOSTNAME],0,[Define this if gethostname() is available])
1581 [#include <ws2tcpip.h>
1583 void *s = gethostbyname (NULL);])
1585 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYNAME],1,[Define this if gethostbyname() is available])
1587 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYNAME],0,[Define this if gethostbyname() is available])
1592 [#include <ws2tcpip.h>
1594 void *s = gethostbyaddr (NULL, 0, 0);])
1596 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYADDR],1,[Define this if gethostbyaddr() is available])
1598 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYADDR],0,[Define this if gethostbyaddr() is available])
1603 [#include <ws2tcpip.h>
1605 int s = getaddrinfo (NULL, NULL, NULL, NULL);])
1607 AC_DEFINE_UNQUOTED([HAVE_GETADDRINFO],1,[Define this if getaddrinfo() is available])
1609 AC_DEFINE_UNQUOTED([HAVE_GETADDRINFO],0,[Define this if getaddrinfo() is available])
1613 AC_MSG_CHECKING(whether to enable windows workarounds)
1614 AC_ARG_ENABLE([windows_workarounds],
1615 [AS_HELP_STRING([--enable-windows_workarounds], [enable workarounds used on Windows (only useful for test cases)])],
1616 [enable_workarounds=${enableval}],
1617 [enable_workarounds=no])
1618 AC_MSG_RESULT($enable_workarounds)
1619 if test x$enable_windows_workarounds = "xyes"
1626 AC_DEFINE_UNQUOTED([ENABLE_WINDOWS_WORKAROUNDS], $workarounds, [enable workarounds used on Windows (only useful for test cases)])
1629 AC_MSG_CHECKING(whether to compile with support for code coverage analysis)
1630 AC_ARG_ENABLE([coverage],
1631 AS_HELP_STRING([--enable-coverage],
1632 [compile the library with code coverage support]),
1633 [use_gcov=${enableval}],
1635 AC_MSG_RESULT($use_gcov)
1636 AM_CONDITIONAL([USE_COVERAGE], [test "x$use_gcov" = "xyes"])
1640 # TODO: git blame says this predates our switch to git. git-svn should be adjusted to simply git, or
1641 # an external script that does the job.
1642 AC_PATH_PROG(svnversioncommand, svnversion)
1643 AC_PATH_PROG(gitcommand, git)
1644 AC_MSG_CHECKING(for source being under a VCS)
1647 AS_IF([test ! "X$svnversioncommand" = "X"],
1649 svn_version=$(cd $srcdir ; $svnversioncommand -n 2>/dev/null)
1651 AS_IF([test ! "X$gitcommand" = "X"],
1653 gitsvn_version=$(cd $srcdir ; git log -1 2>/dev/null | grep "git-svn-id" | sed -e 's/.*@\([[0-9]]\+\) .*/\1/')
1655 AS_IF([test "X$svn_version" = "X" -o "X$svn_version" = "Xexported" -o "X$svn_version" = "XUnversioned directory"],
1657 AS_IF([test "X$gitsvn_version" = "X"],
1660 vcs_version="\"release\""
1663 vcs_name="yes, git-svn"
1664 vcs_version="\"svn-r$gitsvn_version\""
1669 vcs_version="\"svn-r$svn_version\""
1671 AC_MSG_RESULT($vcs_name)
1673 AC_MSG_CHECKING(VCS version)
1674 AC_MSG_RESULT($vcs_version)
1675 AC_DEFINE_UNQUOTED(VCS_VERSION, [$vcs_version], [VCS revision/hash or tarball version])
1682 doc/doxygen/Makefile
1683 doc/documentation/Makefile
1691 src/ats-tool/Makefile
1692 src/ats-tests/Makefile
1693 src/auction/Makefile
1696 src/cadet/cadet.conf
1699 src/consensus/Makefile
1700 src/consensus/consensus.conf
1701 src/conversation/Makefile
1702 src/conversation/conversation.conf
1704 src/datacache/Makefile
1705 src/datastore/Makefile
1706 src/datastore/datastore.conf
1712 src/fragmentation/Makefile
1717 src/gns/nss/Makefile
1718 src/gnsrecord/Makefile
1720 src/identity/Makefile
1721 src/identity/identity.conf
1722 src/credential/Makefile
1723 src/credential/credential.conf
1724 src/include/Makefile
1725 src/integration-tests/Makefile
1727 src/jsonapi/Makefile
1728 src/hostlist/Makefile
1729 src/multicast/Makefile
1730 src/multicast/multicast.conf
1733 src/namecache/Makefile
1734 src/namecache/namecache.conf
1735 src/namestore/Makefile
1736 src/namestore/namestore.conf
1739 src/nat-auto/Makefile
1740 src/nat-auto/nat-auto.conf
1743 src/peerinfo/Makefile
1744 src/peerinfo/peerinfo.conf
1745 src/peerinfo-tool/Makefile
1746 src/peerstore/Makefile
1747 src/peerstore/peerstore.conf
1749 src/psycutil/Makefile
1752 src/psycstore/Makefile
1753 src/psycstore/psycstore.conf
1756 src/regex/regex.conf
1757 src/revocation/Makefile
1758 src/revocation/revocation.conf
1761 src/secretsharing/Makefile
1762 src/secretsharing/secretsharing.conf
1763 src/scalarproduct/Makefile
1764 src/scalarproduct/scalarproduct.conf
1768 src/social/social.conf
1770 src/statistics/Makefile
1771 src/statistics/statistics.conf
1772 src/template/Makefile
1773 src/testbed/Makefile
1774 src/testbed/testbed.conf
1775 src/testbed-logger/Makefile
1776 src/testbed-logger/testbed-logger.conf
1777 src/testing/Makefile
1778 src/topology/Makefile
1779 src/transport/Makefile
1780 src/transport/transport.conf
1782 src/util/resolver.conf
1785 src/zonemaster/Makefile
1786 src/zonemaster/zonemaster.conf
1788 src/rest-plugins/Makefile
1790 src/reclaim-attribute/Makefile
1791 src/reclaim/Makefile
1793 pkgconfig/gnunetarm.pc
1794 pkgconfig/gnunetats.pc
1795 pkgconfig/gnunetblock.pc
1796 pkgconfig/gnunetcadet.pc
1797 pkgconfig/gnunetconsensus.pc
1798 pkgconfig/gnunetconversation.pc
1799 pkgconfig/gnunetcore.pc
1800 pkgconfig/gnunetdatacache.pc
1801 pkgconfig/gnunetdatastore.pc
1802 pkgconfig/gnunetdht.pc
1803 pkgconfig/gnunetdns.pc
1804 pkgconfig/gnunetdv.pc
1805 pkgconfig/gnunetenv.pc
1806 pkgconfig/gnunetfragmentation.pc
1807 pkgconfig/gnunetfs.pc
1808 pkgconfig/gnunetgns.pc
1809 pkgconfig/gnunethello.pc
1810 pkgconfig/gnunetidentity.pc
1811 pkgconfig/gnunetmicrophone.pc
1812 pkgconfig/gnunetmulticast.pc
1813 pkgconfig/gnunetmysql.pc
1814 pkgconfig/gnunetnamestore.pc
1815 pkgconfig/gnunetnat.pc
1816 pkgconfig/gnunetnse.pc
1817 pkgconfig/gnunetpeerinfo.pc
1818 pkgconfig/gnunetpq.pc
1819 pkgconfig/gnunetpsyc.pc
1820 pkgconfig/gnunetpsycstore.pc
1821 pkgconfig/gnunetregex.pc
1822 pkgconfig/gnunetrevocation.pc
1823 pkgconfig/gnunetrps.pc
1824 pkgconfig/gnunetscalarproduct.pc
1825 pkgconfig/gnunetset.pc
1826 pkgconfig/gnunetsocial.pc
1827 pkgconfig/gnunetspeaker.pc
1828 pkgconfig/gnunetstatistics.pc
1829 pkgconfig/gnunettestbed.pc
1830 pkgconfig/gnunettesting.pc
1831 pkgconfig/gnunettransport.pc
1832 pkgconfig/gnunetutil.pc
1833 pkgconfig/gnunetvpn.pc
1839 # warn user if mysql found but not used due to version
1840 if test "$mysqlfail" = "true"
1842 AC_MSG_NOTICE([WARNING: MySQL found, but too old. MySQL support will not be compiled.])
1846 if test "x$sqlite" = "x0"
1848 AC_MSG_ERROR([ERROR: sqlite3 not found, but sqlite3 is required.])
1852 if test "$gnurl" = "0"
1854 if test "x$curl" = "xfalse"
1856 AC_MSG_NOTICE([WARNING: libgnurl not found. http client support will not be compiled.])
1857 AC_MSG_WARN([ERROR: libgnurl not found. hostlist daemon will not be compiled, and you probably WANT the hostlist daemon])
1859 AC_MSG_NOTICE([WARNING: libgnurl not found, trying to use libcurl-gnutls instead.])
1865 if test "x$bluetooth" = "x0"
1867 AC_MSG_NOTICE([WARNING: bluetooth library not found. bluetooth support will not be compiled.])
1871 if test "x$jansson" = "x0"
1873 AC_MSG_NOTICE([WARNING: jansson library not found. json support will not be compiled.])
1877 # FIXME: `some modules' -> be more specific which exact modules.
1880 # warn user if iptables is not found
1881 if test "$VAR_IPTABLES_BINARY" = "false"
1883 AC_MSG_NOTICE([WARNING: iptables not found. some modules may not have full functionality.])
1886 # warn user if ifconfig is not found
1887 if test "$VAR_IFCONFIG_BINARY" = "false"
1889 AC_MSG_NOTICE([WARNING: ifconfig not found. some modules may not have full functionality.])
1892 # warn user if upnpc binary is not found
1893 if test "$VAR_UPNPC_BINARY" = "false"
1895 AC_MSG_NOTICE([WARNING: upnpc binary not found. some modules may not have full functionality.])
1899 if test x$gnutls != xtrue
1901 AC_MSG_NOTICE([WARNING: GnuTLS not found, gnunet-gns-proxy will not be built])
1903 if test "x$gnutls_dane" != "x1"
1905 AC_MSG_NOTICE([WARNING: GnuTLS has no DANE support, DANE validation will not be possible])
1910 if test "x$enable_java_ports" = "xyes"
1912 AC_MSG_NOTICE([NOTICE: Opening ports for gnunet-java bindings by default.])
1916 if test "x$lmhd" != "x1"
1918 AC_MSG_NOTICE([WARNING: libmicrohttpd not found, http transport will not be installed.])
1922 if test "x$conversation_backend" = "xnone"
1924 if test "x$pulse" != "x1"
1926 AC_MSG_NOTICE([WARNING: libpulse(audio) not found, conversation will not be built.])
1928 if test "x$opus" != "x1"
1930 AC_MSG_NOTICE([WARNING: libopus not found, conversation will not be built.])
1932 if test "x$gst" != "x1"
1934 AC_MSG_NOTICE([WARNING: GStreamer not found, conversation will not be built.])
1938 if test "$extractor" != 1
1940 AC_MSG_WARN([ERROR: libextractor not found, but various file-sharing functions require it])
1943 AC_MSG_NOTICE([NOTICE: Database support is set to MySQL: $mysql, SQLite: $sqlite, Postgres: $postgres])
1945 if test "$enable_framework_build" = "yes"
1947 AC_MSG_NOTICE([Mac OS X framework build enabled.])
1950 AC_MSG_NOTICE([********************************************
1951 Please make sure NOW that you have created a user and group 'gnunet'
1952 and additionally a group 'gnunetdns'. On Debian and Ubuntu GNU/Linux, type:
1954 adduser --system --group --disabled-login --home /var/lib/gnunet gnunet
1956 Make sure that '/var/lib/gnunet' is owned (and writable) by user
1957 'gnunet'. Then, you can compile GNUnet with
1960 After that, run (if necessary as 'root')
1962 to install everything.
1964 Each GNUnet user should be added to the 'gnunet' group (may
1965 require fresh login to come into effect):
1966 adduser USERNAME gnunet
1967 (run the above command as root once for each of your users, replacing
1968 "USERNAME" with the respective login names). If you have a global IP
1969 address, no further configuration is required.
1971 For more detailed setup instructions, see https://gnunet.org/installation
1973 Optionally, download and compile gnunet-gtk to get a GUI for
1974 file-sharing and configuration. This is particularly recommended
1975 if your network setup is non-trivial, as gnunet-setup can be
1976 used to test in the GUI if your network configuration is working.
1977 gnunet-setup should be run as the "gnunet" user under X. As it
1978 does very little with the network, running it as "root" is likely
1979 also harmless. You can also run it as a normal user, but then
1980 you have to copy ~/.gnunet/gnunet.conf" over to the "gnunet" user's
1981 home directory in the end.
1983 Once you have configured your peer, run (as the 'gnunet' user)
1985 to start the peer. You can then run the various GNUnet-tools as
1986 your "normal" user (who should only be in the group 'gnunet').
1987 ********************************************])