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 AC_MSG_CHECKING([whether to compile in benchmarks (currently for http and crypto)])
1392 AC_ARG_ENABLE([benchmark],
1393 [AS_HELP_STRING([--enable-benchmark], [enable benchmarking])],
1394 [enable_benchmark=${enableval}],
1395 [enable_benchmark=no])
1396 AC_MSG_RESULT($enable_benchmark)
1397 AS_IF([test "x$enable_benchmark" = "xyes"],
1398 [AC_DEFINE_UNQUOTED(ENABLE_BENCHMARK,1,[Benchmarks are enabled])])
1399 AM_CONDITIONAL([ENABLE_BENCHMARK], [test "x$enable_benchmark" = "xyes"])
1402 # should expensive tests be run?
1403 AC_MSG_CHECKING(whether to run expensive tests)
1404 AC_ARG_ENABLE([expensivetests],
1405 [AS_HELP_STRING([--enable-expensivetests], [enable running expensive testcases])],
1406 [enable_expensive=${enableval}],
1407 [enable_expensive=no])
1408 AC_MSG_RESULT($enable_expensive)
1409 AM_CONDITIONAL([HAVE_EXPENSIVE_TESTS], [test "x$enable_expensive" = "xyes"])
1411 # should ports be open for Java services?
1412 AC_MSG_CHECKING(whether to enable ports for gnunet-java)
1413 AC_ARG_ENABLE([javaports],
1414 [AS_HELP_STRING([--enable-javaports], [use non-zero ports for services with Java bindings (default is NO)])],
1415 [enable_java_ports=${enableval}],
1416 [enable_java_ports=no])
1417 AC_MSG_RESULT($enable_java_ports)
1418 if test "x$enable_java_ports" = "xyes"
1422 JAVAPORT="$UNIXONLY"
1426 # should benchmarks be run?
1427 AC_MSG_CHECKING(whether to run benchmarks during make check)
1428 AC_ARG_ENABLE([benchmarks],
1429 [AS_HELP_STRING([--enable-benchmarks], [enable running benchmarks during make check])],
1430 [enable_benchmarks=${enableval}],
1431 [enable_benchmarks=no])
1432 AC_MSG_RESULT($enable_benchmarks)
1433 AM_CONDITIONAL([HAVE_BENCHMARKS], [test "x$enable_benchmarks" = "xyes"])
1435 # should gnunet-testing be compiled
1436 AC_MSG_CHECKING(wether to compile gnunet-testing)
1437 AC_ARG_ENABLE([testing],
1438 [AS_HELP_STRING([--disable-testing], [do not build gnunet-testing])],
1439 [enable_testing=${enableval}],
1440 [enable_testing=yes])
1441 AC_MSG_RESULT($enable_testing)
1442 AM_CONDITIONAL([HAVE_TESTING], [test "x$enable_testing" = "xyes"])
1444 # should experimental code be compiled (code that may not yet compile)?
1445 AC_MSG_CHECKING(whether to compile experimental code)
1446 AC_ARG_ENABLE([experimental],
1447 [AS_HELP_STRING([--enable-experimental], [enable compiling experimental code])],
1448 [enable_experimental=${enableval}],
1449 [enable_experimental=no])
1450 AC_MSG_RESULT($enable_experimental)
1451 AM_CONDITIONAL([HAVE_EXPERIMENTAL], [test "x$enable_experimental" = "xyes"])
1453 # should malicious code be compiled (should only be used for testing)?
1454 AC_MSG_CHECKING(whether to compile malicious code)
1455 AC_ARG_ENABLE([malicious],
1456 [AS_HELP_STRING([--enable-malicious], [enable compiling malicious code])],
1457 [if test "x$enableval" = "xno"
1464 enable_malicious=no])
1465 AC_MSG_RESULT($enable_malicious)
1466 AM_CONDITIONAL([ENABLE_MALICIOUS], [test 1=$malicious])
1467 AC_DEFINE_UNQUOTED([ENABLE_MALICIOUS], [$malicious],
1468 [enable compilation of malicious code])
1470 # should services be started on demand when needed? Some services may choose to
1471 # never start by default and it is up to the service/module developer to decide
1472 # by having "START_ON_DEMAND = NO" instead of "START_ON_DEMAND = @START_ON_DEMAND@"
1473 # in the service/module's conf.in file.
1474 # See also IMMEDIATE_START for an unconditional immediate start.
1475 START_ON_DEMAND="YES"
1476 AC_MSG_CHECKING(whether to start peer's services on demand by default)
1477 AC_ARG_ENABLE([autostart],
1478 [AS_HELP_STRING([--disable-autostart], [do not start peer's services by default])],
1479 [enable_autostart=${enableval}
1480 if test "x$enable_autostart" == "xno"
1482 START_ON_DEMAND="NO"
1485 [enable_autostart=yes])
1486 AC_MSG_RESULT($enable_autostart)
1487 #AM_CONDITIONAL([HAVE_START_ON_DEMAND], [test "x$enable_autostart" = "xyes"])
1488 AC_SUBST(START_ON_DEMAND)
1490 # should memory statistics be kept (very expensive CPU-wise!)
1491 AC_MSG_CHECKING(whether to create expensive statistics on memory use)
1492 AC_ARG_ENABLE([heapstats],
1493 [AS_HELP_STRING([--enable-heapstats], [enable expensive heap statistics])],
1494 [enable_heapstats=1],
1495 [enable_heapstats=0])
1496 AC_MSG_RESULT($enable_heapstats)
1497 AC_DEFINE_UNQUOTED([ENABLE_HEAP_STATISTICS],$enable_heapstats,[enable expensive heap statistics])
1499 # should code be enabled that works around missing OS functionality on Windows?
1500 # used for test cases
1501 if test $build_target = "mingw"
1507 [#include <ws2tcpip.h>
1509 int s = socket (0, 0, 0);])
1511 AC_DEFINE_UNQUOTED([HAVE_SOCKET],1,[Define this if socket() is available])
1513 AC_DEFINE_UNQUOTED([HAVE_SOCKET],0,[Define this if socket() is available])
1518 [#include <ws2tcpip.h>
1520 int s = select (0, NULL, NULL, NULL, NULL);])
1522 AC_DEFINE_UNQUOTED([HAVE_SELECT],1,[Define this if select() is available])
1524 AC_DEFINE_UNQUOTED([HAVE_SELECT],0,[Define this if select() is available])
1529 [#include <ws2tcpip.h>
1532 char *s = inet_ntoa (i);])
1534 AC_DEFINE_UNQUOTED([HAVE_INET_NTOA],1,[Define this if inet_ntoa() is available])
1536 AC_DEFINE_UNQUOTED([HAVE_INET_NTOA],0,[Define this if inet_ntoa() is available])
1541 [#include <ws2tcpip.h>
1543 int s = getnameinfo (NULL, 0, NULL, 0, NULL, 0, 0);])
1545 AC_DEFINE_UNQUOTED([HAVE_GETNAMEINFO],1,[Define this if getnameinfo() is available])
1547 AC_DEFINE_UNQUOTED([HAVE_GETNAMEINFO],0,[Define this if getnameinfo() is available])
1552 [#include <ws2tcpip.h>
1554 int s = gethostname (NULL, 0);])
1556 AC_DEFINE_UNQUOTED([HAVE_GETHOSTNAME],1,[Define this if gethostname() is available])
1558 AC_DEFINE_UNQUOTED([HAVE_GETHOSTNAME],0,[Define this if gethostname() is available])
1563 [#include <ws2tcpip.h>
1565 void *s = gethostbyname (NULL);])
1567 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYNAME],1,[Define this if gethostbyname() is available])
1569 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYNAME],0,[Define this if gethostbyname() is available])
1574 [#include <ws2tcpip.h>
1576 void *s = gethostbyaddr (NULL, 0, 0);])
1578 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYADDR],1,[Define this if gethostbyaddr() is available])
1580 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYADDR],0,[Define this if gethostbyaddr() is available])
1585 [#include <ws2tcpip.h>
1587 int s = getaddrinfo (NULL, NULL, NULL, NULL);])
1589 AC_DEFINE_UNQUOTED([HAVE_GETADDRINFO],1,[Define this if getaddrinfo() is available])
1591 AC_DEFINE_UNQUOTED([HAVE_GETADDRINFO],0,[Define this if getaddrinfo() is available])
1595 AC_MSG_CHECKING(whether to enable windows workarounds)
1596 AC_ARG_ENABLE([windows_workarounds],
1597 [AS_HELP_STRING([--enable-windows_workarounds], [enable workarounds used on Windows (only useful for test cases)])],
1598 [enable_workarounds=${enableval}],
1599 [enable_workarounds=no])
1600 AC_MSG_RESULT($enable_workarounds)
1601 if test x$enable_windows_workarounds = "xyes"
1608 AC_DEFINE_UNQUOTED([ENABLE_WINDOWS_WORKAROUNDS], $workarounds, [enable workarounds used on Windows (only useful for test cases)])
1611 AC_MSG_CHECKING(whether to compile with support for code coverage analysis)
1612 AC_ARG_ENABLE([coverage],
1613 AS_HELP_STRING([--enable-coverage],
1614 [compile the library with code coverage support]),
1615 [use_gcov=${enableval}],
1617 AC_MSG_RESULT($use_gcov)
1618 AM_CONDITIONAL([USE_COVERAGE], [test "x$use_gcov" = "xyes"])
1622 # TODO: git blame says this predates our switch to git. git-svn should be adjusted to simply git, or
1623 # an external script that does the job.
1624 AC_PATH_PROG(svnversioncommand, svnversion)
1625 AC_PATH_PROG(gitcommand, git)
1626 AC_MSG_CHECKING(for source being under a VCS)
1629 AS_IF([test ! "X$svnversioncommand" = "X"],
1631 svn_version=$(cd $srcdir ; $svnversioncommand -n 2>/dev/null)
1633 AS_IF([test ! "X$gitcommand" = "X"],
1635 gitsvn_version=$(cd $srcdir ; git log -1 2>/dev/null | grep "git-svn-id" | sed -e 's/.*@\([[0-9]]\+\) .*/\1/')
1637 AS_IF([test "X$svn_version" = "X" -o "X$svn_version" = "Xexported" -o "X$svn_version" = "XUnversioned directory"],
1639 AS_IF([test "X$gitsvn_version" = "X"],
1642 vcs_version="\"release\""
1645 vcs_name="yes, git-svn"
1646 vcs_version="\"svn-r$gitsvn_version\""
1651 vcs_version="\"svn-r$svn_version\""
1653 AC_MSG_RESULT($vcs_name)
1655 AC_MSG_CHECKING(VCS version)
1656 AC_MSG_RESULT($vcs_version)
1657 AC_DEFINE_UNQUOTED(VCS_VERSION, [$vcs_version], [VCS revision/hash or tarball version])
1664 doc/doxygen/Makefile
1665 doc/documentation/Makefile
1673 src/ats-tool/Makefile
1674 src/ats-tests/Makefile
1675 src/auction/Makefile
1678 src/cadet/cadet.conf
1681 src/consensus/Makefile
1682 src/consensus/consensus.conf
1683 src/conversation/Makefile
1684 src/conversation/conversation.conf
1686 src/datacache/Makefile
1687 src/datastore/Makefile
1688 src/datastore/datastore.conf
1694 src/fragmentation/Makefile
1699 src/gns/nss/Makefile
1700 src/gnsrecord/Makefile
1702 src/identity/Makefile
1703 src/identity/identity.conf
1704 src/credential/Makefile
1705 src/credential/credential.conf
1706 src/include/Makefile
1707 src/integration-tests/Makefile
1709 src/jsonapi/Makefile
1710 src/hostlist/Makefile
1711 src/multicast/Makefile
1712 src/multicast/multicast.conf
1715 src/namecache/Makefile
1716 src/namecache/namecache.conf
1717 src/namestore/Makefile
1718 src/namestore/namestore.conf
1721 src/nat-auto/Makefile
1722 src/nat-auto/nat-auto.conf
1725 src/peerinfo/Makefile
1726 src/peerinfo/peerinfo.conf
1727 src/peerinfo-tool/Makefile
1728 src/peerstore/Makefile
1729 src/peerstore/peerstore.conf
1731 src/psycutil/Makefile
1734 src/psycstore/Makefile
1735 src/psycstore/psycstore.conf
1738 src/regex/regex.conf
1739 src/revocation/Makefile
1740 src/revocation/revocation.conf
1743 src/secretsharing/Makefile
1744 src/secretsharing/secretsharing.conf
1745 src/scalarproduct/Makefile
1746 src/scalarproduct/scalarproduct.conf
1750 src/social/social.conf
1752 src/statistics/Makefile
1753 src/statistics/statistics.conf
1754 src/template/Makefile
1755 src/testbed/Makefile
1756 src/testbed/testbed.conf
1757 src/testbed-logger/Makefile
1758 src/testbed-logger/testbed-logger.conf
1759 src/testing/Makefile
1760 src/topology/Makefile
1761 src/transport/Makefile
1762 src/transport/transport.conf
1764 src/util/resolver.conf
1767 src/zonemaster/Makefile
1768 src/zonemaster/zonemaster.conf
1770 src/rest-plugins/Makefile
1772 src/reclaim-attribute/Makefile
1773 src/reclaim/Makefile
1775 pkgconfig/gnunetarm.pc
1776 pkgconfig/gnunetats.pc
1777 pkgconfig/gnunetblock.pc
1778 pkgconfig/gnunetcadet.pc
1779 pkgconfig/gnunetconsensus.pc
1780 pkgconfig/gnunetconversation.pc
1781 pkgconfig/gnunetcore.pc
1782 pkgconfig/gnunetdatacache.pc
1783 pkgconfig/gnunetdatastore.pc
1784 pkgconfig/gnunetdht.pc
1785 pkgconfig/gnunetdns.pc
1786 pkgconfig/gnunetdv.pc
1787 pkgconfig/gnunetenv.pc
1788 pkgconfig/gnunetfragmentation.pc
1789 pkgconfig/gnunetfs.pc
1790 pkgconfig/gnunetgns.pc
1791 pkgconfig/gnunethello.pc
1792 pkgconfig/gnunetidentity.pc
1793 pkgconfig/gnunetmicrophone.pc
1794 pkgconfig/gnunetmulticast.pc
1795 pkgconfig/gnunetmysql.pc
1796 pkgconfig/gnunetnamestore.pc
1797 pkgconfig/gnunetnat.pc
1798 pkgconfig/gnunetnse.pc
1799 pkgconfig/gnunetpeerinfo.pc
1800 pkgconfig/gnunetpq.pc
1801 pkgconfig/gnunetpsyc.pc
1802 pkgconfig/gnunetpsycstore.pc
1803 pkgconfig/gnunetregex.pc
1804 pkgconfig/gnunetrevocation.pc
1805 pkgconfig/gnunetrps.pc
1806 pkgconfig/gnunetscalarproduct.pc
1807 pkgconfig/gnunetset.pc
1808 pkgconfig/gnunetsocial.pc
1809 pkgconfig/gnunetspeaker.pc
1810 pkgconfig/gnunetstatistics.pc
1811 pkgconfig/gnunettestbed.pc
1812 pkgconfig/gnunettesting.pc
1813 pkgconfig/gnunettransport.pc
1814 pkgconfig/gnunetutil.pc
1815 pkgconfig/gnunetvpn.pc
1821 # warn user if mysql found but not used due to version
1822 if test "$mysqlfail" = "true"
1824 AC_MSG_NOTICE([WARNING: MySQL found, but too old. MySQL support will not be compiled.])
1828 if test "x$sqlite" = "x0"
1830 AC_MSG_ERROR([ERROR: sqlite3 not found, but sqlite3 is required.])
1834 if test "$gnurl" = "0"
1836 if test "x$curl" = "xfalse"
1838 AC_MSG_NOTICE([WARNING: libgnurl not found. http client support will not be compiled.])
1839 AC_MSG_WARN([ERROR: libgnurl not found. hostlist daemon will not be compiled, and you probably WANT the hostlist daemon])
1841 AC_MSG_NOTICE([WARNING: libgnurl not found, trying to use libcurl-gnutls instead.])
1847 if test "x$bluetooth" = "x0"
1849 AC_MSG_NOTICE([WARNING: bluetooth library not found. bluetooth support will not be compiled.])
1853 if test "x$jansson" = "x0"
1855 AC_MSG_NOTICE([WARNING: jansson library not found. json support will not be compiled.])
1859 # FIXME: `some modules' -> be more specific which exact modules.
1862 # warn user if iptables is not found
1863 if test "$VAR_IPTABLES_BINARY" = "false"
1865 AC_MSG_NOTICE([WARNING: iptables not found. some modules may not have full functionality.])
1868 # warn user if ifconfig is not found
1869 if test "$VAR_IFCONFIG_BINARY" = "false"
1871 AC_MSG_NOTICE([WARNING: ifconfig not found. some modules may not have full functionality.])
1874 # warn user if upnpc binary is not found
1875 if test "$VAR_UPNPC_BINARY" = "false"
1877 AC_MSG_NOTICE([WARNING: upnpc binary not found. some modules may not have full functionality.])
1881 if test x$gnutls != xtrue
1883 AC_MSG_NOTICE([WARNING: GnuTLS not found, gnunet-gns-proxy will not be built])
1885 if test "x$gnutls_dane" != "x1"
1887 AC_MSG_NOTICE([WARNING: GnuTLS has no DANE support, DANE validation will not be possible])
1892 if test "x$enable_java_ports" = "xyes"
1894 AC_MSG_NOTICE([NOTICE: Opening ports for gnunet-java bindings by default.])
1898 if test "x$lmhd" != "x1"
1900 AC_MSG_NOTICE([WARNING: libmicrohttpd not found, http transport will not be installed.])
1904 if test "x$conversation_backend" = "xnone"
1906 if test "x$pulse" != "x1"
1908 AC_MSG_NOTICE([WARNING: libpulse(audio) not found, conversation will not be built.])
1910 if test "x$opus" != "x1"
1912 AC_MSG_NOTICE([WARNING: libopus not found, conversation will not be built.])
1914 if test "x$gst" != "x1"
1916 AC_MSG_NOTICE([WARNING: GStreamer not found, conversation will not be built.])
1920 if test "$extractor" != 1
1922 AC_MSG_WARN([ERROR: libextractor not found, but various file-sharing functions require it])
1925 AC_MSG_NOTICE([NOTICE: Database support is set to MySQL: $mysql, SQLite: $sqlite, Postgres: $postgres])
1927 if test "$enable_framework_build" = "yes"
1929 AC_MSG_NOTICE([Mac OS X framework build enabled.])
1932 AC_MSG_NOTICE([********************************************
1933 Please make sure NOW that you have created a user and group 'gnunet'
1934 and additionally a group 'gnunetdns'. On Debian and Ubuntu GNU/Linux, type:
1936 adduser --system --group --disabled-login --home /var/lib/gnunet gnunet
1938 Make sure that '/var/lib/gnunet' is owned (and writable) by user
1939 'gnunet'. Then, you can compile GNUnet with
1942 After that, run (if necessary as 'root')
1944 to install everything.
1946 Each GNUnet user should be added to the 'gnunet' group (may
1947 require fresh login to come into effect):
1948 adduser USERNAME gnunet
1949 (run the above command as root once for each of your users, replacing
1950 "USERNAME" with the respective login names). If you have a global IP
1951 address, no further configuration is required.
1953 For more detailed setup instructions, see https://gnunet.org/installation
1955 Optionally, download and compile gnunet-gtk to get a GUI for
1956 file-sharing and configuration. This is particularly recommended
1957 if your network setup is non-trivial, as gnunet-setup can be
1958 used to test in the GUI if your network configuration is working.
1959 gnunet-setup should be run as the "gnunet" user under X. As it
1960 does very little with the network, running it as "root" is likely
1961 also harmless. You can also run it as a normal user, but then
1962 you have to copy ~/.gnunet/gnunet.conf" over to the "gnunet" user's
1963 home directory in the end.
1965 Once you have configured your peer, run (as the 'gnunet' user)
1967 to start the peer. You can then run the various GNUnet-tools as
1968 your "normal" user (who should only be in the group 'gnunet').
1969 ********************************************])