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 # should the build process be building only the documentation?
692 AC_MSG_CHECKING(whether to build only documentation)
693 AC_ARG_ENABLE([documentation-only],
694 [AS_HELP_STRING([--enable-documentation-only], [build only the documentation])],
695 [documentation_only=${enableval}],
696 [documentation_only=no])
697 AC_MSG_RESULT($documentation_only)
698 if test "x$documentation_only" = "xyes"
700 AM_CONDITIONAL([DOCUMENTATION_ONLY],true)
701 AC_DEFINE([DOCUMENTATION_ONLY],[1],[Building only the documentation])
703 AM_CONDITIONAL([DOCUMENTATION_ONLY],false)
704 AC_DEFINE([DOCUMENTATION_ONLY],[0],[Not building only the documentation])
707 # should the build process be restricted to the code required
708 # for GNU Taler wallets?
709 AC_MSG_CHECKING(whether to compile GNU Taler Wallet library ONLY)
710 AC_ARG_ENABLE([taler-wallet],
711 [AS_HELP_STRING([--enable-taler-wallet], [only compile for Taler wallet])],
712 [taler_only=${enableval}],
714 AC_MSG_RESULT($taler_only)
715 if test "x$taler_only" = "xyes"
717 AM_CONDITIONAL([TALER_ONLY],true)
718 AC_DEFINE([TALER_WALLET_ONLY],[1],[Compiling for Taler wallet])
720 AM_CONDITIONAL([TALER_ONLY],false)
721 AC_DEFINE([TALER_WALLET_ONLY],[0],[Canonical compilation])
724 # test for libextractor
726 AC_MSG_CHECKING(for libextractor)
727 AC_ARG_WITH(extractor,
728 [ --with-extractor=PFX base of libextractor installation],
729 [AC_MSG_RESULT([$with_extractor])
730 case $with_extractor in
734 AC_CHECK_HEADERS(extractor.h,
735 AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
739 LDFLAGS="-L$with_extractor/lib $LDFLAGS"
740 CPPFLAGS="-I$with_extractor/include $CPPFLAGS"
741 AC_CHECK_HEADERS(extractor.h,
742 AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
743 EXT_LIB_PATH="-L$with_extractor/lib $EXT_LIB_PATH"
748 [AC_MSG_RESULT([--with-extractor not specified])
749 AC_CHECK_HEADERS(extractor.h,
750 AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
755 if test "$extractor" != 1
757 AM_CONDITIONAL(HAVE_LIBEXTRACTOR, false)
758 AC_DEFINE([HAVE_LIBEXTRACTOR],[0],[Lacking libextractor])
760 AM_CONDITIONAL(HAVE_LIBEXTRACTOR, true)
761 AC_DEFINE([HAVE_LIBEXTRACTOR],[1],[Have libextractor])
765 if test "$taler_only" != yes
768 # Check for libltdl header (#2999)
770 AC_MSG_CHECKING(for libltdl)
772 [ --with-ltdl=PFX base of libltdl installation],
773 [AC_MSG_RESULT([$with_ltdl])
778 AC_CHECK_HEADERS(ltdl.h,
779 AC_CHECK_LIB([ltdl], [lt_dlopenext],
783 LDFLAGS="-L$with_ltdl/lib $LDFLAGS"
784 CPPFLAGS="-I$with_ltdl/include $CPPFLAGS"
785 AC_CHECK_HEADERS(ltdl.h,
786 AC_CHECK_LIB([ltdl], [lt_dlopenext],
787 EXT_LIB_PATH="-L$with_ltdl/lib $EXT_LIB_PATH"
792 [AC_MSG_RESULT([--with-ltdl not specified])
793 AC_CHECK_HEADERS(ltdl.h,
794 AC_CHECK_LIB([ltdl], [lt_dlopenext],
798 AC_MSG_RESULT([libltdl found])
800 AC_MSG_ERROR([GNUnet requires libltdl (from GNU libtool), try installing libltdl-dev])
807 AC_MSG_CHECKING([if Libidn can be used])
808 AC_ARG_WITH(libidn, AC_HELP_STRING([--with-libidn=[DIR]],
809 [Support IDN (needs GNU Libidn)]),
810 libidn=$withval, libidn=yes)
811 if test "$libidn" != "no"; then
812 if test "$libidn" != "yes"; then
813 LDFLAGS="${LDFLAGS} -L$libidn/lib"
814 CPPFLAGS="${CPPFLAGS} -I$libidn/include"
818 AC_CHECK_HEADER(idna.h,
819 AC_CHECK_LIB(idn, stringprep_check_version,
820 [libidn=yes LIBS="${LIBS} -lidn"], []), [])
821 if test "$libidn" != "yes"; then
822 AC_MSG_FAILURE([GNUnet requires libidn.
823 libidn-1.13 should be sufficient, newer versions work too.])
825 AC_MSG_RESULT($libidn)
829 SAVE_LDFLAGS=$LDFLAGS
830 SAVE_CPPFLAGS=$CPPFLAGS
832 [ --with-zlib[[=DIR]] use libz in DIR],
833 [AS_IF([test "$withval" = "no"],
834 [AC_MSG_ERROR([GNUnet requires zlib])],
835 [test "$withval" != "yes"],
838 CPPFLAGS="${CPPFLAGS} -I$withval/include"
839 LDFLAGS="${LDFLAGS} -L$withval/lib"
842 AC_CHECK_HEADER(zlib.h,
844 [AC_MSG_ERROR([GNUnet requires zlib])])
845 AC_CHECK_LIB(z, compress2,
847 AC_DEFINE([HAVE_ZLIB], [], [Have compression library])
848 if test "x${Z_DIR}" != "x"; then
849 Z_CFLAGS="-I${Z_DIR}/include"
850 Z_LIBS="-L${Z_DIR}/lib -lz"
854 [AC_MSG_ERROR([GNUnet requires zlib])])
858 if test "$enable_shared" = "no"
860 AC_MSG_ERROR([GNUnet only works with shared libraries. Sorry.])
874 # test for libunistring
876 if test $HAVE_LIBUNISTRING != yes; then
877 AC_MSG_ERROR([GNUnet requires libunistring])
879 # under emscripten, $gl_libunistring_hexversion is undefined
880 if test "$taler_only" != yes; then
881 if test "x$gl_libunistring_hexversion" = "x" || test "$gl_libunistring_hexversion" -le 2305; then
882 AC_MSG_ERROR([GNUnet requires libunistring >= 0.9.1.1])
885 AC_CHECK_HEADERS([unistr.h],,AC_MSG_ERROR([Compiling GNUnet requires unistr.h (from libunistring) to be installed]))
892 # Checks for standard header files.
896 # Check for headers that are ALWAYS required
897 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]))
901 # Checks for headers that are only required on some systems or opional (and where we do NOT abort if they are not there)
902 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])
904 # FreeBSD requires something more funky for netinet/in_systm.h and netinet/ip.h...
905 AC_CHECK_HEADERS([sys/types.h netinet/in_systm.h netinet/in.h netinet/ip.h],,,
906 [#ifdef HAVE_SYS_TYPES_H
907 #include <sys/types.h>
909 #ifdef HAVE_NETINET_IN_SYSTM_H
910 #include <netinet/in_systm.h>
912 #ifdef HAVE_NETINET_IN_H
913 #include <netinet/in.h>
917 SAVE_LDFLAGS=$LDFLAGS
918 SAVE_CPPFLAGS=$CPPFLAGS
922 AC_MSG_CHECKING(for SQLite)
924 [ --with-sqlite=PFX base of SQLite installation],
925 [AC_MSG_RESULT("$with_sqlite")
930 AC_CHECK_HEADERS(sqlite3.h,
934 LDFLAGS="-L$with_sqlite/lib $LDFLAGS"
935 CPPFLAGS="-I$with_sqlite/include $CPPFLAGS"
936 AC_CHECK_HEADERS(sqlite3.h,
937 EXT_LIB_PATH="-L$with_sqlite/lib $EXT_LIB_PATH"
938 SQLITE_LDFLAGS="-L$with_sqlite/lib"
939 SQLITE_CPPFLAGS="-I$with_sqlite/include"
941 LDFLAGS=$SAVE_LDFLAGS
942 CPPFLAGS=$SAVE_CPPFLAGS
946 [AC_MSG_RESULT([--with-sqlite not specified])
947 AC_CHECK_HEADERS(sqlite3.h, sqlite=true)])
948 AM_CONDITIONAL(HAVE_SQLITE, test x$sqlite = xtrue)
949 AC_SUBST(SQLITE_CPPFLAGS)
950 AC_SUBST(SQLITE_LDFLAGS)
952 LDFLAGS=$SAVE_LDFLAGS
953 CPPFLAGS=$SAVE_CPPFLAGS
957 # even running the check for postgres breaks emscripten ...
958 if test "$taler_only" != yes; then
959 AX_LIB_POSTGRESQL([9.5])
960 if test "x$found_postgresql" = "xyes"; then
961 CPPFLAGS="$CPPFLAGS $POSTGRESQL_CPPFLAGS"
962 AC_CHECK_HEADERS([libpq-fe.h],
966 AM_CONDITIONAL(HAVE_POSTGRESQL, test x$postgres = xtrue)
969 LDFLAGS=$SAVE_LDFLAGS
970 CPPFLAGS=$SAVE_CPPFLAGS
973 AC_CHECK_TYPES([sigset_t, off_t], [], [], [#include <sys/types.h>])
974 AC_CHECK_TYPES([size_t], [], [], [#include <stdio.h>])
976 if test "$build_target" = "mingw"
978 CYGWIN_MYSQL_MAGIC="#include <mysql/my_global.h>"
984 SAVE_LDFLAGS=$LDFLAGS
985 SAVE_CPPFLAGS=$CPPFLAGS
986 AC_MSG_CHECKING(for mysql)
988 [ --with-mysql=PFX base of MySQL installation],
989 [AC_MSG_RESULT([$with_mysql])
994 AC_CHECK_HEADERS(mysql/mysql.h,
995 AC_CHECK_LIB(mysqlclient, mysql_init,
997 mysql=true), [], [$CYGWIN_MYSQL_MAGIC])
1000 LDFLAGS="-L$with_mysql/lib -L$with_mysql/lib/mysql $LDFLAGS $ZLIBS"
1001 CPPFLAGS="-I$with_mysql/include $CPPFLAGS"
1002 AC_CHECK_HEADERS(mysql/mysql.h,
1003 AC_CHECK_LIB(mysqlclient, mysql_init,
1004 MYSQL_LDFLAGS="-L$with_mysql/lib -L$with_mysql/lib/mysql"
1005 MYSQL_CPPFLAGS="-I$with_mysql/include"
1007 mysql=true), [], [$CYGWIN_MYSQL_MAGIC])
1011 [AC_MSG_RESULT([--with-mysql not specified])
1012 if test -d "/usr/lib64/mysql"; then
1013 MYSQL_LIBDIR="/usr/lib64/mysql"
1014 elif test -d "/usr/lib/mysql"; then
1015 MYSQL_LIBDIR="/usr/lib/mysql"
1017 MYSQL_LIBDIR="/usr/lib"
1019 LDFLAGS="-L$MYSQL_LIBDIR $LDFLAGS $ZLIBS"
1020 AC_CHECK_LIB(mysqlclient, mysql_init,
1021 [AC_CHECK_HEADERS(mysql/mysql.h,
1022 MYSQL_LDFLAGS="-L$MYSQL_LIBDIR"
1025 , [], [$CYGWIN_MYSQL_MAGIC])])
1028 AC_SUBST(MYSQL_LDFLAGS)
1029 AC_SUBST(MYSQL_CPPFLAGS)
1031 # additional version check for mysql
1032 AC_ARG_ENABLE(mysql-version-check, [ --disable-mysql-version-check do not check MySQL version],, enable_mysql_version_check=yes)
1033 if test "$mysql" = "true" -a "x$enable_mysql_version_check" = "xyes"
1035 AC_MSG_CHECKING(mysql version)
1036 AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
1037 [[$CYGWIN_MYSQL_MAGIC
1038 #include <mysql/mysql.h>]],
1040 #if (MYSQL_VERSION_ID < 40100)
1041 #error needs at least version >= 4.1
1043 int main () { return 0; }
1045 ],mysql=true,mysql=false)
1046 if test "$mysql" = "false"
1049 AC_MSG_RESULT([fail, >= 4.1 required])
1054 AM_CONDITIONAL(HAVE_MYSQL, test x$mysql = xtrue)
1055 AM_CONDITIONAL(HAVE_MYSQLE, test "0" = "1")
1058 LDFLAGS=$SAVE_LDFLAGS
1059 CPPFLAGS=$SAVE_CPPFLAGS
1061 if test "$sqlite" = 0 -a "$mysql" = 0
1063 AC_MSG_ERROR([GNUnet requires SQLite or MySQL])
1068 AC_MSG_CHECKING([for libmicrohttpd])
1069 AC_ARG_WITH(microhttpd,
1070 [ --with-microhttpd=PFX base of libmicrohttpd installation],
1071 [AC_MSG_RESULT([$with_microhttpd])
1072 case $with_microhttpd in
1076 AC_CHECK_HEADERS([microhttpd.h],
1077 AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
1078 AC_CHECK_LIB([microhttpd], [MHD_get_fdset2],
1079 [AC_MSG_CHECKING([for libmicrohttpd >= 0.9.42])
1080 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
1081 #include "$native_srcdir/src/include/platform.h"
1082 #include <microhttpd.h>
1083 #if (MHD_VERSION < 0x0094200)
1084 #error needs at least version 0.9.42
1086 int main () { return 0; }
1090 [AC_MSG_RESULT(failed)])]),
1091 [],[#include "$native_srcdir/src/include/platform.h"
1092 #include <microhttpd.h>]),,
1093 [#include "$native_srcdir/src/include/platform.h"])
1096 LDFLAGS="-L$with_microhttpd/lib $LDFLAGS"
1097 CPPFLAGS="-I$with_microhttpd/include $CPPFLAGS"
1098 AC_CHECK_HEADERS(microhttpd.h,
1099 AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
1100 AC_CHECK_LIB([microhttpd], [MHD_get_fdset2],
1101 EXT_LIB_PATH="-L$with_microhttpd/lib $EXT_LIB_PATH"
1102 [AC_MSG_CHECKING([for libmicrohttpd >= 0.9.42])
1103 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
1104 #include "$native_srcdir/src/include/platform.h"
1105 #include <microhttpd.h>
1106 #if (MHD_VERSION < 0x0094200)
1107 #error needs at least version 0.9.42
1109 int main () { return 0; }
1113 [AC_MSG_RESULT(failed)])]),
1114 [],[#include "$native_srcdir/src/include/platform.h"
1115 #include <microhttpd.h>]),,
1116 [#include "$native_srcdir/src/include/platform.h"])
1120 [AC_MSG_RESULT([--with-microhttpd not specified])
1121 AC_CHECK_HEADERS([microhttpd.h],
1122 AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
1123 AC_CHECK_LIB([microhttpd], [MHD_get_fdset2],
1124 [AC_MSG_CHECKING([for libmicrohttpd >= 0.9.42])
1125 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
1126 #include "$native_srcdir/src/include/platform.h"
1127 #include <microhttpd.h>
1128 #if (MHD_VERSION < 0x0094200)
1129 #error needs at least version 0.9.42
1134 [AC_MSG_RESULT(failed)])]),
1135 [],[#include "$native_srcdir/src/include/platform.h"
1136 #include <microhttpd.h>]),,
1137 [#include "$native_srcdir/src/include/platform.h"])])
1138 AM_CONDITIONAL(HAVE_MHD, test x$lmhd = x1)
1139 AC_DEFINE_UNQUOTED([HAVE_MHD], $lmhd, [We have libmicrohttpd])
1141 AM_CONDITIONAL(HAVE_JSON, [test x$jansson = x1])
1146 # check for python & pexpect (used for some testcases only)
1147 AM_PATH_PYTHON([2.6],, [:])
1148 AM_CONDITIONAL([HAVE_PYTHON], [test "$PYTHON" != :])
1151 AM_GNU_GETTEXT([external])
1152 AM_GNU_GETTEXT_VERSION([0.18.1])
1154 # Checks for standard typedefs, structures, and compiler characteristics.
1163 AC_CHECK_MEMBER([struct sockaddr_in.sin_len],
1164 [ AC_DEFINE(HAVE_SOCKADDR_IN_SIN_LEN, 1, [Do we have sockaddr_in.sin_len?])
1168 #include <sys/types.h>
1169 #include <sys/socket.h>
1170 #include <netinet/in.h>
1173 AC_CHECK_MEMBER([struct sockaddr_un.sun_len],
1174 [ AC_DEFINE(HAVE_SOCKADDR_UN_SUN_LEN, 1, [Do we have sockaddr_un.sun_len?])
1178 #include <sys/types.h>
1179 #include <sys/socket.h>
1185 # Checks for library functions.
1186 AC_FUNC_CLOSEDIR_VOID
1188 AC_PROG_GCC_TRADITIONAL
1190 AC_FUNC_SELECT_ARGTYPES
1200 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])
1206 GN_LIBINTL="$LTLIBINTL"
1207 AC_ARG_ENABLE(framework, [ --enable-framework enable Mac OS X framework build helpers],enable_framework_build=$enableval)
1208 AM_CONDITIONAL(WANT_FRAMEWORK, test x$enable_framework_build = xyes)
1209 if test x$enable_framework_build = xyes
1211 AC_DEFINE([FRAMEWORK_BUILD], 1, [Build a Mac OS X Framework])
1212 GN_INTLINCL='-I$(top_srcdir)/src/intlemu'
1213 GN_LIBINTL='$(top_builddir)/src/intlemu/libintlemu.la -framework CoreFoundation'
1214 AC_LIB_APPENDTOVAR([CPPFLAGS], [$GN_INTLINCL])
1217 GN_LIB_LDFLAGS="-export-dynamic -no-undefined"
1218 GN_PLUGIN_LDFLAGS="-export-dynamic -avoid-version -module -no-undefined"
1220 AC_SUBST(GN_LIB_LDFLAGS)
1221 AC_SUBST(GN_PLUGIN_LDFLAGS)
1222 AC_SUBST(GN_INTLINCL)
1223 AC_SUBST(GN_LIBINTL)
1228 AC_SUBST(EXT_LIB_PATH)
1233 AC_SUBST(EXT_LIB_PATH)
1237 AC_MSG_CHECKING(for sudo)
1239 [ --with-sudo=PATH path to sudo binary (or just yes)],
1240 [AC_MSG_RESULT("$with_sudo")
1249 SUDO_BINARY=$with_sudo
1253 [AC_MSG_RESULT([no])])
1254 AC_SUBST(SUDO_BINARY)
1255 AM_CONDITIONAL([HAVE_SUDO], [test "x$SUDO_BINARY" != "x" -o -w /])
1258 # test for gnunetdns group name
1259 GNUNETDNS_GROUP=gnunetdns
1260 AC_MSG_CHECKING(for gnunetdns group name)
1261 AC_ARG_WITH(gnunetdns,
1262 [ --with-gnunetdns=GRPNAME name for gnunetdns group],
1263 [AC_MSG_RESULT("$with_gnunetdns")
1264 case $with_gnunetdns in
1266 GNUNETDNS_GROUP=gnunet
1269 GNUNETDNS_GROUP=gnunetdns
1272 GNUNETDNS_GROUP=$with_gnunetdns
1276 [AC_MSG_RESULT([gnunetdns])])
1277 AC_SUBST(GNUNETDNS_GROUP)
1284 AC_MSG_CHECKING(for gnutls)
1286 [ --with-gnutls=PFX base of gnutls installation],
1287 [AC_MSG_RESULT([$with_gnutls])
1288 case $with_gnutls in
1292 AC_CHECK_HEADERS([gnutls/abstract.h],
1293 AC_CHECK_LIB([gnutls], [gnutls_priority_set],
1295 AC_CHECK_HEADERS([gnutls/dane.h],
1296 AC_CHECK_LIB([gnutls-dane], [dane_verify_crt_raw],
1300 LDFLAGS="-L$with_gnutls/lib $LDFLAGS"
1301 CPPFLAGS="-I$with_gnutls/include $CPPFLAGS"
1302 AC_CHECK_HEADERS([gnutls/abstract.h],
1303 AC_CHECK_LIB([gnutls], [gnutls_priority_set],
1304 EXT_LIB_PATH="-L$with_gnutls/lib $EXT_LIB_PATH"
1306 AC_CHECK_HEADERS([gnutls/dane.h],
1307 AC_CHECK_LIB([gnutls-dane], [dane_verify_crt_raw],
1312 [AC_MSG_RESULT([--with-gnutls not specified])
1313 AC_CHECK_HEADERS([gnutls/abstract.h],
1314 AC_CHECK_LIB([gnutls], [gnutls_priority_set],
1316 AC_CHECK_HEADERS([gnutls/dane.h],
1317 AC_CHECK_LIB([gnutls-dane], [dane_verify_crt_raw],
1320 AM_CONDITIONAL(HAVE_GNUTLS, test x$gnutls = xtrue)
1321 AC_DEFINE_UNQUOTED([HAVE_GNUTLS], $gnutls, [We have GnuTLS])
1322 AM_CONDITIONAL(HAVE_GNUTLS_DANE, test x$gnutls_dane = x1)
1323 AC_DEFINE_UNQUOTED([HAVE_GNUTLS_DANE], $gnutls_dane, [We have GnuTLS with DANE support])
1326 # Test if we are building for superMUC
1327 AC_MSG_CHECKING(if GNUnet is being configured to run on the SuperMUC)
1328 AC_ARG_ENABLE([supermuc],
1329 [AS_HELP_STRING([--enable-supermuc],
1330 [build GNUnet with support to run on the SuperMUC (default is NO)])],
1331 [if test "x$enable_supermuc" = "xno"
1338 enable_supermuc=no])
1339 AC_MSG_RESULT($enable_SUPERMUC)
1340 AM_CONDITIONAL([ENABLE_SUPERMUC], [test "x$supermuc" = "x1"])
1341 AC_DEFINE_UNQUOTED([ENABLE_SUPERMUC], [$supermuc], [Build with support for SuperMUC])
1343 # Check if NSE has to send timestamp information to testbed logger for
1344 # generating histogram of messages received
1345 AC_MSG_CHECKING(if NSE has to send timestamp information to testbed logger)
1346 AC_ARG_ENABLE([nse-histogram],
1347 [AS_HELP_STRING([--enable-nse-histogram],
1348 [have NSE send timestamp information to testbed logger for generating
1349 histogram of received messages. NOT useful for production (default is
1351 [if test "x$enableval" = "xno"
1358 enable_nse_histogram=no])
1359 AC_MSG_RESULT($enable_nse_histogram)
1360 AM_CONDITIONAL([ENABLE_NSE_HISTOGRAM], [test "x$nse_histogram" = "x1"])
1361 AC_DEFINE_UNQUOTED([ENABLE_NSE_HISTOGRAM], [$nse_histogram],
1362 [have NSE send timestamp information to testbed logger])
1364 # should 'make check' run tests?
1365 AC_MSG_CHECKING(whether to run tests)
1366 AC_ARG_ENABLE([testruns],
1367 [AS_HELP_STRING([--disable-testruns], [disable running tests on make check (default is YES)])],
1368 [enable_tests_run=${enableval}],
1369 [enable_tests_run=yes])
1370 AC_MSG_RESULT($enable_test_run)
1371 AM_CONDITIONAL([ENABLE_TEST_RUN], [test "x$enable_tests_run" = "xyes"])
1374 # should monkey be used when running (certain) services?
1375 AC_MSG_CHECKING(whether to run with monkey)
1376 AC_ARG_ENABLE([monkey],
1377 [AS_HELP_STRING([--enable-monkey], [enable running with monkey])],
1378 [enable_monkey=${enableval}],
1380 AC_MSG_RESULT($enable_monkey)
1381 AM_CONDITIONAL([ENABLE_MONKEY], [test "x$enable_monkey" = "xyes"])
1382 if test "x$enable_monkey" = "xyes"
1384 MONKEYPREFIX="pathologist -d $(eval echo ${datarootdir}/gnunet/gnunet.sqlite) -p 30 --"
1388 AC_SUBST(MONKEYPREFIX)
1391 # should expensive tests be run?
1392 AC_MSG_CHECKING(whether to run expensive tests)
1393 AC_ARG_ENABLE([expensivetests],
1394 [AS_HELP_STRING([--enable-expensivetests], [enable running expensive testcases])],
1395 [enable_expensive=${enableval}],
1396 [enable_expensive=no])
1397 AC_MSG_RESULT($enable_expensive)
1398 AM_CONDITIONAL([HAVE_EXPENSIVE_TESTS], [test "x$enable_expensive" = "xyes"])
1400 # should ports be open for Java services?
1401 AC_MSG_CHECKING(whether to enable ports for gnunet-java)
1402 AC_ARG_ENABLE([javaports],
1403 [AS_HELP_STRING([--enable-javaports], [use non-zero ports for services with Java bindings (default is NO)])],
1404 [enable_java_ports=${enableval}],
1405 [enable_java_ports=no])
1406 AC_MSG_RESULT($enable_java_ports)
1407 if test "x$enable_java_ports" = "xyes"
1411 JAVAPORT="$UNIXONLY"
1415 # should benchmarks be run?
1416 AC_MSG_CHECKING(whether to run benchmarks during make check)
1417 AC_ARG_ENABLE([benchmarks],
1418 [AS_HELP_STRING([--enable-benchmarks], [enable running benchmarks during make check])],
1419 [enable_benchmarks=${enableval}],
1420 [enable_benchmarks=no])
1421 AC_MSG_RESULT($enable_benchmarks)
1422 AM_CONDITIONAL([HAVE_BENCHMARKS], [test "x$enable_benchmarks" = "xyes"])
1424 # should gnunet-testing be compiled
1425 AC_MSG_CHECKING(wether to compile gnunet-testing)
1426 AC_ARG_ENABLE([testing],
1427 [AS_HELP_STRING([--disable-testing], [do not build gnunet-testing])],
1428 [enable_testing=${enableval}],
1429 [enable_testing=yes])
1430 AC_MSG_RESULT($enable_testing)
1431 AM_CONDITIONAL([HAVE_TESTING], [test "x$enable_testing" = "xyes"])
1433 # should experimental code be compiled (code that may not yet compile)?
1434 AC_MSG_CHECKING(whether to compile experimental code)
1435 AC_ARG_ENABLE([experimental],
1436 [AS_HELP_STRING([--enable-experimental], [enable compiling experimental code])],
1437 [enable_experimental=${enableval}],
1438 [enable_experimental=no])
1439 AC_MSG_RESULT($enable_experimental)
1440 AM_CONDITIONAL([HAVE_EXPERIMENTAL], [test "x$enable_experimental" = "xyes"])
1442 # should malicious code be compiled (should only be used for testing)?
1443 AC_MSG_CHECKING(whether to compile malicious code)
1444 AC_ARG_ENABLE([malicious],
1445 [AS_HELP_STRING([--enable-malicious], [enable compiling malicious code])],
1446 [if test "x$enableval" = "xno"
1453 enable_malicious=no])
1454 AC_MSG_RESULT($enable_malicious)
1455 AM_CONDITIONAL([ENABLE_MALICIOUS], [test 1=$malicious])
1456 AC_DEFINE_UNQUOTED([ENABLE_MALICIOUS], [$malicious],
1457 [enable compilation of malicious code])
1459 # should services be started on demand when needed? Some services may choose to
1460 # never start by default and it is up to the service/module developer to decide
1461 # by having "START_ON_DEMAND = NO" instead of "START_ON_DEMAND = @START_ON_DEMAND@"
1462 # in the service/module's conf.in file.
1463 # See also IMMEDIATE_START for an unconditional immediate start.
1464 START_ON_DEMAND="YES"
1465 AC_MSG_CHECKING(whether to start peer's services on demand by default)
1466 AC_ARG_ENABLE([autostart],
1467 [AS_HELP_STRING([--disable-autostart], [do not start peer's services by default])],
1468 [enable_autostart=${enableval}
1469 if test "x$enable_autostart" == "xno"
1471 START_ON_DEMAND="NO"
1474 [enable_autostart=yes])
1475 AC_MSG_RESULT($enable_autostart)
1476 #AM_CONDITIONAL([HAVE_START_ON_DEMAND], [test "x$enable_autostart" = "xyes"])
1477 AC_SUBST(START_ON_DEMAND)
1479 # should memory statistics be kept (very expensive CPU-wise!)
1480 AC_MSG_CHECKING(whether to create expensive statistics on memory use)
1481 AC_ARG_ENABLE([heapstats],
1482 [AS_HELP_STRING([--enable-heapstats], [enable expensive heap statistics])],
1483 [enable_heapstats=1],
1484 [enable_heapstats=0])
1485 AC_MSG_RESULT($enable_heapstats)
1486 AC_DEFINE_UNQUOTED([ENABLE_HEAP_STATISTICS],$enable_heapstats,[enable expensive heap statistics])
1488 # should code be enabled that works around missing OS functionality on Windows?
1489 # used for test cases
1490 if test $build_target = "mingw"
1496 [#include <ws2tcpip.h>
1498 int s = socket (0, 0, 0);])
1500 AC_DEFINE_UNQUOTED([HAVE_SOCKET],1,[Define this if socket() is available])
1502 AC_DEFINE_UNQUOTED([HAVE_SOCKET],0,[Define this if socket() is available])
1507 [#include <ws2tcpip.h>
1509 int s = select (0, NULL, NULL, NULL, NULL);])
1511 AC_DEFINE_UNQUOTED([HAVE_SELECT],1,[Define this if select() is available])
1513 AC_DEFINE_UNQUOTED([HAVE_SELECT],0,[Define this if select() is available])
1518 [#include <ws2tcpip.h>
1521 char *s = inet_ntoa (i);])
1523 AC_DEFINE_UNQUOTED([HAVE_INET_NTOA],1,[Define this if inet_ntoa() is available])
1525 AC_DEFINE_UNQUOTED([HAVE_INET_NTOA],0,[Define this if inet_ntoa() is available])
1530 [#include <ws2tcpip.h>
1532 int s = getnameinfo (NULL, 0, NULL, 0, NULL, 0, 0);])
1534 AC_DEFINE_UNQUOTED([HAVE_GETNAMEINFO],1,[Define this if getnameinfo() is available])
1536 AC_DEFINE_UNQUOTED([HAVE_GETNAMEINFO],0,[Define this if getnameinfo() is available])
1541 [#include <ws2tcpip.h>
1543 int s = gethostname (NULL, 0);])
1545 AC_DEFINE_UNQUOTED([HAVE_GETHOSTNAME],1,[Define this if gethostname() is available])
1547 AC_DEFINE_UNQUOTED([HAVE_GETHOSTNAME],0,[Define this if gethostname() is available])
1552 [#include <ws2tcpip.h>
1554 void *s = gethostbyname (NULL);])
1556 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYNAME],1,[Define this if gethostbyname() is available])
1558 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYNAME],0,[Define this if gethostbyname() is available])
1563 [#include <ws2tcpip.h>
1565 void *s = gethostbyaddr (NULL, 0, 0);])
1567 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYADDR],1,[Define this if gethostbyaddr() is available])
1569 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYADDR],0,[Define this if gethostbyaddr() is available])
1574 [#include <ws2tcpip.h>
1576 int s = getaddrinfo (NULL, NULL, NULL, NULL);])
1578 AC_DEFINE_UNQUOTED([HAVE_GETADDRINFO],1,[Define this if getaddrinfo() is available])
1580 AC_DEFINE_UNQUOTED([HAVE_GETADDRINFO],0,[Define this if getaddrinfo() is available])
1584 AC_MSG_CHECKING(whether to enable windows workarounds)
1585 AC_ARG_ENABLE([windows_workarounds],
1586 [AS_HELP_STRING([--enable-windows_workarounds], [enable workarounds used on Windows (only useful for test cases)])],
1587 [enable_workarounds=${enableval}],
1588 [enable_workarounds=no])
1589 AC_MSG_RESULT($enable_workarounds)
1590 if test x$enable_windows_workarounds = "xyes"
1597 AC_DEFINE_UNQUOTED([ENABLE_WINDOWS_WORKAROUNDS], $workarounds, [enable workarounds used on Windows (only useful for test cases)])
1600 AC_MSG_CHECKING(whether to compile with support for code coverage analysis)
1601 AC_ARG_ENABLE([coverage],
1602 AS_HELP_STRING([--enable-coverage],
1603 [compile the library with code coverage support]),
1604 [use_gcov=${enableval}],
1606 AC_MSG_RESULT($use_gcov)
1607 AM_CONDITIONAL([USE_COVERAGE], [test "x$use_gcov" = "xyes"])
1611 # TODO: git blame says this predates our switch to git. git-svn should be adjusted to simply git, or
1612 # an external script that does the job.
1613 AC_PATH_PROG(svnversioncommand, svnversion)
1614 AC_PATH_PROG(gitcommand, git)
1615 AC_MSG_CHECKING(for source being under a VCS)
1618 AS_IF([test ! "X$svnversioncommand" = "X"],
1620 svn_version=$(cd $srcdir ; $svnversioncommand -n 2>/dev/null)
1622 AS_IF([test ! "X$gitcommand" = "X"],
1624 gitsvn_version=$(cd $srcdir ; git log -1 2>/dev/null | grep "git-svn-id" | sed -e 's/.*@\([[0-9]]\+\) .*/\1/')
1626 AS_IF([test "X$svn_version" = "X" -o "X$svn_version" = "Xexported" -o "X$svn_version" = "XUnversioned directory"],
1628 AS_IF([test "X$gitsvn_version" = "X"],
1631 vcs_version="\"release\""
1634 vcs_name="yes, git-svn"
1635 vcs_version="\"svn-r$gitsvn_version\""
1640 vcs_version="\"svn-r$svn_version\""
1642 AC_MSG_RESULT($vcs_name)
1644 AC_MSG_CHECKING(VCS version)
1645 AC_MSG_RESULT($vcs_version)
1646 AC_DEFINE_UNQUOTED(VCS_VERSION, [$vcs_version], [VCS revision/hash or tarball version])
1653 doc/doxygen/Makefile
1654 doc/documentation/Makefile
1662 src/ats-tool/Makefile
1663 src/ats-tests/Makefile
1664 src/auction/Makefile
1667 src/cadet/cadet.conf
1670 src/consensus/Makefile
1671 src/consensus/consensus.conf
1672 src/conversation/Makefile
1673 src/conversation/conversation.conf
1675 src/datacache/Makefile
1676 src/datastore/Makefile
1677 src/datastore/datastore.conf
1683 src/fragmentation/Makefile
1688 src/gns/nss/Makefile
1689 src/gnsrecord/Makefile
1691 src/identity/Makefile
1692 src/identity/identity.conf
1693 src/credential/Makefile
1694 src/credential/credential.conf
1695 src/include/Makefile
1696 src/integration-tests/Makefile
1698 src/jsonapi/Makefile
1699 src/hostlist/Makefile
1700 src/multicast/Makefile
1701 src/multicast/multicast.conf
1704 src/namecache/Makefile
1705 src/namecache/namecache.conf
1706 src/namestore/Makefile
1707 src/namestore/namestore.conf
1710 src/nat-auto/Makefile
1711 src/nat-auto/nat-auto.conf
1714 src/peerinfo/Makefile
1715 src/peerinfo/peerinfo.conf
1716 src/peerinfo-tool/Makefile
1717 src/peerstore/Makefile
1718 src/peerstore/peerstore.conf
1720 src/psycutil/Makefile
1723 src/psycstore/Makefile
1724 src/psycstore/psycstore.conf
1727 src/regex/regex.conf
1728 src/revocation/Makefile
1729 src/revocation/revocation.conf
1732 src/secretsharing/Makefile
1733 src/secretsharing/secretsharing.conf
1734 src/scalarproduct/Makefile
1735 src/scalarproduct/scalarproduct.conf
1739 src/social/social.conf
1741 src/statistics/Makefile
1742 src/statistics/statistics.conf
1743 src/template/Makefile
1744 src/testbed/Makefile
1745 src/testbed/testbed.conf
1746 src/testbed-logger/Makefile
1747 src/testbed-logger/testbed-logger.conf
1748 src/testing/Makefile
1749 src/topology/Makefile
1750 src/transport/Makefile
1751 src/transport/transport.conf
1753 src/util/resolver.conf
1756 src/zonemaster/Makefile
1757 src/zonemaster/zonemaster.conf
1759 src/rest-plugins/Makefile
1761 src/reclaim-attribute/Makefile
1762 src/reclaim/Makefile
1764 pkgconfig/gnunetarm.pc
1765 pkgconfig/gnunetats.pc
1766 pkgconfig/gnunetblock.pc
1767 pkgconfig/gnunetcadet.pc
1768 pkgconfig/gnunetconsensus.pc
1769 pkgconfig/gnunetconversation.pc
1770 pkgconfig/gnunetcore.pc
1771 pkgconfig/gnunetdatacache.pc
1772 pkgconfig/gnunetdatastore.pc
1773 pkgconfig/gnunetdht.pc
1774 pkgconfig/gnunetdns.pc
1775 pkgconfig/gnunetdv.pc
1776 pkgconfig/gnunetenv.pc
1777 pkgconfig/gnunetfragmentation.pc
1778 pkgconfig/gnunetfs.pc
1779 pkgconfig/gnunetgns.pc
1780 pkgconfig/gnunethello.pc
1781 pkgconfig/gnunetidentity.pc
1782 pkgconfig/gnunetmicrophone.pc
1783 pkgconfig/gnunetmulticast.pc
1784 pkgconfig/gnunetmysql.pc
1785 pkgconfig/gnunetnamestore.pc
1786 pkgconfig/gnunetnat.pc
1787 pkgconfig/gnunetnse.pc
1788 pkgconfig/gnunetpeerinfo.pc
1789 pkgconfig/gnunetpq.pc
1790 pkgconfig/gnunetpsyc.pc
1791 pkgconfig/gnunetpsycstore.pc
1792 pkgconfig/gnunetregex.pc
1793 pkgconfig/gnunetrevocation.pc
1794 pkgconfig/gnunetrps.pc
1795 pkgconfig/gnunetscalarproduct.pc
1796 pkgconfig/gnunetset.pc
1797 pkgconfig/gnunetsocial.pc
1798 pkgconfig/gnunetspeaker.pc
1799 pkgconfig/gnunetstatistics.pc
1800 pkgconfig/gnunettestbed.pc
1801 pkgconfig/gnunettesting.pc
1802 pkgconfig/gnunettransport.pc
1803 pkgconfig/gnunetutil.pc
1804 pkgconfig/gnunetvpn.pc
1810 # warn user if mysql found but not used due to version
1811 if test "$mysqlfail" = "true"
1813 AC_MSG_NOTICE([WARNING: MySQL found, but too old. MySQL support will not be compiled.])
1817 if test "x$sqlite" = "x0"
1819 AC_MSG_ERROR([ERROR: sqlite3 not found, but sqlite3 is required.])
1823 if test "$gnurl" = "0"
1825 if test "x$curl" = "xfalse"
1827 AC_MSG_NOTICE([WARNING: libgnurl not found. http client support will not be compiled.])
1828 AC_MSG_WARN([ERROR: libgnurl not found. hostlist daemon will not be compiled, and you probably WANT the hostlist daemon])
1830 AC_MSG_NOTICE([WARNING: libgnurl not found, trying to use libcurl-gnutls instead.])
1836 if test "x$bluetooth" = "x0"
1838 AC_MSG_NOTICE([WARNING: bluetooth library not found. bluetooth support will not be compiled.])
1842 if test "x$jansson" = "x0"
1844 AC_MSG_NOTICE([WARNING: jansson library not found. json support will not be compiled.])
1848 # FIXME: `some modules' -> be more specific which exact modules.
1851 # warn user if iptables is not found
1852 if test "$VAR_IPTABLES_BINARY" = "false"
1854 AC_MSG_NOTICE([WARNING: iptables not found. some modules may not have full functionality.])
1857 # warn user if ifconfig is not found
1858 if test "$VAR_IFCONFIG_BINARY" = "false"
1860 AC_MSG_NOTICE([WARNING: ifconfig not found. some modules may not have full functionality.])
1863 # warn user if upnpc binary is not found
1864 if test "$VAR_UPNPC_BINARY" = "false"
1866 AC_MSG_NOTICE([WARNING: upnpc binary not found. some modules may not have full functionality.])
1870 if test x$gnutls != xtrue
1872 AC_MSG_NOTICE([WARNING: GnuTLS not found, gnunet-gns-proxy will not be built])
1874 if test "x$gnutls_dane" != "x1"
1876 AC_MSG_NOTICE([WARNING: GnuTLS has no DANE support, DANE validation will not be possible])
1881 if test "x$enable_java_ports" = "xyes"
1883 AC_MSG_NOTICE([NOTICE: Opening ports for gnunet-java bindings by default.])
1887 if test "x$lmhd" != "x1"
1889 AC_MSG_NOTICE([WARNING: libmicrohttpd not found, http transport will not be installed.])
1893 if test "x$conversation_backend" = "xnone"
1895 if test "x$pulse" != "x1"
1897 AC_MSG_NOTICE([WARNING: libpulse(audio) not found, conversation will not be built.])
1899 if test "x$opus" != "x1"
1901 AC_MSG_NOTICE([WARNING: libopus not found, conversation will not be built.])
1903 if test "x$gst" != "x1"
1905 AC_MSG_NOTICE([WARNING: GStreamer not found, conversation will not be built.])
1909 if test "$extractor" != 1
1911 AC_MSG_WARN([ERROR: libextractor not found, but various file-sharing functions require it])
1914 AC_MSG_NOTICE([NOTICE: Database support is set to MySQL: $mysql, SQLite: $sqlite, Postgres: $postgres])
1916 if test "$enable_framework_build" = "yes"
1918 AC_MSG_NOTICE([Mac OS X framework build enabled.])
1921 AC_MSG_NOTICE([********************************************
1922 Please make sure NOW that you have created a user and group 'gnunet'
1923 and additionally a group 'gnunetdns'. On Debian and Ubuntu GNU/Linux, type:
1925 adduser --system --group --disabled-login --home /var/lib/gnunet gnunet
1927 Make sure that '/var/lib/gnunet' is owned (and writable) by user
1928 'gnunet'. Then, you can compile GNUnet with
1931 After that, run (if necessary as 'root')
1933 to install everything.
1935 Each GNUnet user should be added to the 'gnunet' group (may
1936 require fresh login to come into effect):
1937 adduser USERNAME gnunet
1938 (run the above command as root once for each of your users, replacing
1939 "USERNAME" with the respective login names). If you have a global IP
1940 address, no further configuration is required.
1942 For more detailed setup instructions, see https://gnunet.org/installation
1944 Optionally, download and compile gnunet-gtk to get a GUI for
1945 file-sharing and configuration. This is particularly recommended
1946 if your network setup is non-trivial, as gnunet-setup can be
1947 used to test in the GUI if your network configuration is working.
1948 gnunet-setup should be run as the "gnunet" user under X. As it
1949 does very little with the network, running it as "root" is likely
1950 also harmless. You can also run it as a normal user, but then
1951 you have to copy ~/.gnunet/gnunet.conf" over to the "gnunet" user's
1952 home directory in the end.
1954 Once you have configured your peer, run (as the 'gnunet' user)
1956 to start the peer. You can then run the various GNUnet-tools as
1957 your "normal" user (who should only be in the group 'gnunet').
1958 ********************************************])