1 # This file is part of GNUnet.
2 # (C) 2001--2015 Christian Grothoff (and other contributing authors)
4 # GNUnet is free software; you can redistribute it and/or modify
5 # it under the terms of the GNU General Public License as published
6 # by the Free Software Foundation; either version 3, or (at your
7 # 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 # General Public License for more details.
14 # You should have received a copy of the GNU General Public License
15 # along with GNUnet; see the file COPYING. If not, write to the
16 # Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17 # Boston, MA 02110-1301, USA.
20 # Process this file with autoconf to produce a configure script.
24 # Checks for programs.
25 AC_INIT([gnunet], [0.10.1], [bug-gnunet@gnu.org])
32 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
33 AC_CONFIG_HEADERS([gnunet_config.h])
34 AH_TOP([#define _GNU_SOURCE 1])
35 AC_CONFIG_MACRO_DIR([m4])
45 LT_INIT([disable-static dlopen win32-dll])
53 CFLAGS="-Wall $CFLAGS"
54 # use '-fno-strict-aliasing', but only if the compiler can take it
55 if gcc -fno-strict-aliasing -S -o /dev/null -xc /dev/null >/dev/null 2>&1;
57 CFLAGS="-fno-strict-aliasing $CFLAGS"
60 # Use Linux interface name unless the OS has a different preference
61 DEFAULT_INTERFACE="\"eth0\""
63 funcstocheck="getnameinfo gethostname gethostbyname gethostbyaddr getaddrinfo"
65 # Srcdir in a form that native compiler understands (i.e. DOS path on W32)
70 *darwin* | *rhapsody* | *macosx*)
71 AC_DEFINE_UNQUOTED(DARWIN,1,[This is an Apple Darwin system])
72 CPPFLAGS="-D_APPLE_C_SOURCE $CPPFLAGS"
73 CFLAGS="-fno-common $CFLAGS"
74 AC_MSG_WARN([The VPN application cannot be compiled on your OS])
76 DEFAULT_INTERFACE="\"en0\""
82 AC_DEFINE_UNQUOTED(LINUX,1,[This is a Linux kernel])
90 AC_DEFINE_UNQUOTED(SOMEBSD,1,[This is a BSD system])
91 AC_DEFINE_UNQUOTED(FREEBSD,1,[This is a FreeBSD system])
92 CFLAGS="-D_THREAD_SAFE $CFLAGS"
93 build_target="freebsd"
99 AC_DEFINE_UNQUOTED(SOMEBSD,1,[This is a BSD system])
100 AC_DEFINE_UNQUOTED(OPENBSD,1,[This is an OpenBSD system])
101 LIBS=`echo $LIBS | sed -e "s/-ldl//"`
102 build_target="openbsd"
108 AC_DEFINE_UNQUOTED(SOMEBSD,1,[This is a BSD system])
109 AC_DEFINE_UNQUOTED(NETBSD,1,[This is a NetBSD system])
115 AC_DEFINE_UNQUOTED(SOLARIS,1,[This is a Solaris system])
116 AC_DEFINE_UNQUOTED(_REENTRANT,1,[Need with solaris or errno doesnt work])
117 AC_CHECK_LIB(resolv, res_init)
118 AC_CHECK_LIB(rt, nanosleep)
119 build_target="solaris"
125 AC_DEFINE_UNQUOTED(LINUX,1,[This is a Linux kernel])
126 CFLAGS="-D_REENTRANT -fPIC -pipe $CFLAGS"
133 AC_DEFINE_UNQUOTED(CYGWIN,1,[This is a Cygwin system])
134 AC_DEFINE_UNQUOTED(WINDOWS,1,[This is a Windows system])
135 AC_CHECK_LIB(intl, gettext)
136 CFLAGS="-mms-bitfields $CFLAGS"
137 build_target="cygwin"
144 AC_DEFINE_UNQUOTED(MINGW,1,[This is a MinGW system])
145 AC_DEFINE_UNQUOTED(WINDOWS,1,[This is a Windows system])
146 AC_DEFINE_UNQUOTED(_WIN32,1,[This is a Windows system])
147 AC_CHECK_LIB(intl, gettext)
148 LDFLAGS="$LDFLAGS -Wl,--export-all-symbols"
149 LIBS="$LIBS -lws2_32 -lplibc -lgnurx -lole32"
150 CFLAGS="-mms-bitfields $CFLAGS"
151 CPPFLAGS="-D_WIN32_WINNT=0x0501 -DHAVE_STAT64=1 -D__USE_MINGW_ANSI_STDIO=1 $CPPFLAGS"
158 native_srcdir=$(cd $srcdir; pwd -W)
161 AC_DEFINE_UNQUOTED(GNU,1,[This is a GNU system])
166 AC_MSG_RESULT(Unrecognised OS $host_os)
167 AC_DEFINE_UNQUOTED(OTHEROS,1,[Some strange OS])
171 AC_DEFINE_UNQUOTED([GNUNET_DEFAULT_INTERFACE], $DEFAULT_INTERFACE, [This should be the default choice for the name of the first network interface])
172 AC_SUBST(DEFAULT_INTERFACE)
174 # Disable TCP-based IPC on systems that support UNIX domain
175 # sockets in default configuratin:
179 AC_MSG_CHECKING([for build target])
180 AM_CONDITIONAL(DARWIN, test "$build_target" = "darwin")
181 AM_CONDITIONAL(CYGWIN, test "$build_target" = "cygwin")
182 AM_CONDITIONAL(MINGW, test "$build_target" = "mingw")
183 AM_CONDITIONAL(SOLARIS, test "$build_target" = "solaris")
184 AM_CONDITIONAL(XFREEBSD, test "$build_target" = "freebsd")
185 AM_CONDITIONAL(OPENBSD, test "$build_target" = "openbsd")
186 AM_CONDITIONAL(LINUX, test "$build_target" = "linux")
187 AM_CONDITIONAL(GNU, test "$build_target" = "gnu")
189 AC_MSG_RESULT([$build_target])
190 AC_SUBST(build_target)
191 AM_CONDITIONAL([am__fastdepOBJC], false)
192 AC_UNALIGNED_64_ACCESS
194 # some other checks for standard libs
195 AC_SEARCH_LIBS([gethostbyname], [nsl ws2_32])
196 AC_CHECK_LIB(socket, socket)
198 AC_CHECK_LIB(c, getloadavg, AC_DEFINE(HAVE_GETLOADAVG,1,[getloadavg supported]))
200 AC_CHECK_PROG(VAR_GETOPT_BINARY, getopt, true, false)
201 AM_CONDITIONAL(HAVE_GETOPT_BINARY, $VAR_GETOPT_BINARY)
203 AC_CHECK_PROG(VAR_SSH_BINARY,ssh,true,false)
204 AM_CONDITIONAL(HAVE_SSH_BINARY, $VAR_SSH_BINARY)
207 AC_CHECK_MEMBER(struct tm.tm_gmtoff,
208 [AC_DEFINE(HAVE_TM_GMTOFF, 1,
209 [Define if struct tm has the tm_gmtoff member.])],
213 AC_CHECK_DECLS([_stati64])
215 # 'save' libs; only those libs found so far will be
216 # linked against _everywhere_. For the others, we
217 # will be more selective!
220 # tests only run on Windows
221 if test "x$build_target" = "xmingw"
223 AC_CHECK_LIB(plibc, plibc_init, [], [AC_MSG_ERROR([GNUnet requires PlibC on Windows])])
224 AC_CHECK_LIB(gnurx, regexec, [], [AC_MSG_ERROR([GNUnet requires libgnurx on Windows])])
230 NEED_LIBGCRYPT_VERSION=1.6.0
233 AM_PATH_LIBGCRYPT("$NEED_LIBGCRYPT_API:$NEED_LIBGCRYPT_VERSION", gcrypt=1)
234 AC_CHECK_DECLS([gcry_mpi_set_opaque_copy], [], [], [[#include <gcrypt.h>]])
240 *** You need libgcrypt to build this program.
241 ** This library is for example available at
242 *** ftp://ftp.gnupg.org/gcrypt/libgcrypt/
243 *** (at least version $NEED_LIBGCRYPT_VERSION (API $NEED_LIBGCRYPT_API)
247 AC_DEFINE_UNQUOTED([NEED_LIBGCRYPT_VERSION], "$NEED_LIBGCRYPT_VERSION", [required libgcrypt version])
249 # Adam shostack suggests the following for Windows:
250 # -D_FORTIFY_SOURCE=2 -fstack-protector-all
251 AC_ARG_ENABLE(gcc-hardening,
252 AS_HELP_STRING(--enable-gcc-hardening, enable compiler security checks),
253 [if test x$enableval = xyes; then
254 CFLAGS="$CFLAGS -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fstack-protector-all"
255 CFLAGS="$CFLAGS -fwrapv -fPIE -Wstack-protector"
256 CFLAGS="$CFLAGS --param ssp-buffer-size=1"
257 LDFLAGS="$LDFLAGS -pie"
261 # Linker hardening options
262 # Currently these options are ELF specific - you can't use this with MacOSX
263 AC_ARG_ENABLE(linker-hardening,
264 AS_HELP_STRING(--enable-linker-hardening, enable linker security fixups),
265 [if test x$enableval = xyes; then
266 LDFLAGS="$LDFLAGS -z relro -z now"
270 extra_logging=GNUNET_NO
271 AC_ARG_ENABLE([logging],
272 AS_HELP_STRING([--enable-logging@<:@=value@:>@],[Enable logging calls. Possible values: yes,no,verbose,veryverbose ('yes' is the default)]),
273 [AS_IF([test "x$enableval" = "xyes"], [],
274 [test "x$enableval" = "xno"], [AC_DEFINE([GNUNET_CULL_LOGGING],[],[Define to cull all logging calls])],
275 [test "x$enableval" = "xverbose"], [extra_logging=GNUNET_YES]
276 [test "x$enableval" = "xveryverbose"], [extra_logging=\(GNUNET_YES+1\)])
278 AC_DEFINE_UNQUOTED([GNUNET_EXTRA_LOGGING],[$extra_logging],[1 if extra logging is enabled, 2 for very verbose extra logging, 0 otherwise])
280 # should memory poisoning be enabled?
281 AC_MSG_CHECKING(whether to poison freed memory)
282 AC_ARG_ENABLE([poisoning],
283 [AS_HELP_STRING([--enable-poisoning], [enable poisoning of freed memory (good for debugging)])],
284 [enable_poisoning=${enableval}],
286 if test "x$extra_logging" != "xGNUNET_NO"; then
287 enable_poisoning="defaults to yes (extra logging is enabled)"
292 AC_MSG_RESULT($enable_poisoning)
293 if test ! "x$enable_poisoning" = "xno"; then
298 AC_DEFINE_UNQUOTED([ENABLE_POISONING],[$enable_poisoning],[1 if freed memory should be poisoned, 0 otherwise])
300 if test $build = $target
302 AC_MSG_CHECKING([for working HMAC])
304 LIBS="$LIBS $LIBGCRYPT_LIBS"
305 CFLAGS="$CFLAGS $LIBGCRYPT_CFLAGS"
307 [AC_LANG_PROGRAM([#include <gcrypt.h>
308 #include <stdio.h>], [[
311 unsigned char data[] = { 0xbf, 0x16, 0x6e, 0x46, 0x3a, 0x6c, 0xf3, 0x93, 0xa7, 0x72,
312 0x11, 0xa1, 0xdc, 0x0b, 0x07, 0xdb, 0x1a, 0x5e, 0xd9, 0xb9, 0x81, 0xbe,
313 0xea, 0xe4, 0x31, 0x5f, 0x24, 0xff, 0xfe, 0x50, 0x8a, 0xde };
314 unsigned char key[] = { 0xfc, 0x62, 0x76, 0x35 };
315 unsigned char result[] = {0xa2, 0xb, 0x1, 0xd9, 0xc0, 0x8b, 0x5a, 0x12, 0x80,
316 0xd5, 0x50, 0x12, 0x8e, 0xd0, 0x5b, 0xb6, 0x5c, 0x87, 0x24, 0xe2, 0xd0,
317 0xd2, 0xaf, 0x63, 0xae, 0xd1, 0xd6, 0x64, 0x14, 0xe3, 0x6e, 0x61, 0x5b,
318 0xd, 0xba, 0x17, 0x7d, 0xd3, 0x10, 0xb1, 0x37, 0x41, 0x91, 0x7d, 0xeb,
319 0x1, 0x4d, 0x71, 0xe8, 0x59, 0x71, 0x42, 0x8e, 0xd6, 0xf3, 0x29, 0x3b,
320 0x90, 0xf2, 0xd1, 0xaf, 0x65, 0x1e, 0xb3};
322 if (!gcry_check_version (GCRYPT_VERSION))
324 fprintf (stderr, "Version mismatch %s <-> %s \n", gcry_check_version (NULL), GCRYPT_VERSION);
328 gcry_control (GCRYCTL_DISABLE_SECMEM, 0);
329 gcry_control (GCRYCTL_INITIALIZATION_FINISHED, 0);
331 if (gcry_md_open(&mac, GCRY_MD_SHA512, GCRY_MD_FLAG_HMAC) != GPG_ERR_NO_ERROR)
333 fprintf (stderr, "gcry_md_open error\n");
337 gcry_md_setkey (mac, key, sizeof (key));
338 gcry_md_write (mac, data, sizeof (data));
340 if (memcmp(gcry_md_read (mac, 0), result, gcry_md_get_algo_dlen (gcry_md_get_algo (mac))) != 0)
342 fprintf (stderr, "memcmp error\n");
350 [AC_MSG_RESULT([yes])],
355 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.])
359 AC_MSG_FAILURE([HMAC test failed])
363 AC_MSG_FAILURE([libgcrypt header version does not match library version])
366 [AC_MSG_RESULT([cross compiling, test skipped])])
368 fi # $build = $target
370 # check for bluetooth library
372 AC_CHECK_LIB(bluetooth, ba2str,[AC_CHECK_HEADER([bluetooth/bluetooth.h],bluetooth=1)])
373 if test "$build_target" = "mingw"
377 AM_CONDITIONAL(HAVE_LIBBLUETOOTH, [test "$bluetooth" = 1])
378 if test "$bluetooth" = 1
380 AC_DEFINE([HAVE_LIBBLUETOOTH],[1],[Have bluetooth library])
382 AC_DEFINE([HAVE_LIBBLUETOOTH],[0],[Lacking bluetooth library])
386 # check for libpulse(audio) library
388 AC_CHECK_LIB(pulse,pa_stream_peek,
389 [AC_CHECK_HEADER([pulse/simple.h],pulse=1)])
390 if test "$build_target" = "mingw"
396 AC_DEFINE([HAVE_PULSE],[1],[Have libpulse(audio) library])
399 # check for libopus(audio) library
401 AC_CHECK_LIB(opus,opus_decode_float,
402 [AC_CHECK_HEADER([opus/opus.h],
403 [AC_CHECK_DECL([OPUS_SET_GAIN],[opus=1],[],[[#include <opus/opus.h>]]
409 AC_DEFINE([HAVE_OPUS],[1],[Have libopus library])
413 AC_CHECK_LIB(ogg, ogg_stream_flush_fill,
414 [AC_CHECK_HEADERS([ogg/ogg.h],
415 AM_CONDITIONAL(HAVE_OGG, true)
417 AC_DEFINE(HAVE_OGG,1,[Have ogg]),
418 AM_CONDITIONAL(HAVE_OGG, false)
420 AC_DEFINE(HAVE_OGG,0,[lacking ogg]))],
421 AM_CONDITIONAL(HAVE_OGG, false)
429 [glib-2.0 gobject-2.0 gstreamer-1.0 gstreamer-app-1.0 gstreamer-audio-1.0],
435 AC_MSG_RESULT(not found)
439 if test "x$pulse" != "x1" -o "x$opus" != "x1" -o "x$ogg" != "x1"
441 if test "x$gst" != "x1"
443 conversation_backend=none
444 AM_CONDITIONAL(BUILD_PULSE_HELPERS, false)
445 AM_CONDITIONAL(BUILD_GST_HELPERS, false)
447 conversation_backend=gst
448 AM_CONDITIONAL(BUILD_PULSE_HELPERS, false)
449 AM_CONDITIONAL(BUILD_GST_HELPERS, true)
452 conversation_backend=pulse
453 AM_CONDITIONAL(BUILD_PULSE_HELPERS, true)
454 AM_CONDITIONAL(BUILD_GST_HELPERS, false)
458 LIBGNURL_CHECK_CONFIG(,7.34.0,gnurl=1,gnurl=0)
461 AM_CONDITIONAL(HAVE_LIBGNURL, true)
462 AC_DEFINE([HAVE_LIBGNURL],[1],[Have libgnurl])
464 AM_CONDITIONAL(HAVE_LIBGNURL, false)
465 AC_DEFINE([HAVE_LIBGNURL],[0],[Lacking libgnurl])
468 SAVE_CPPFLAGS=$CPPFLAGS
469 CPPFLAGS="$LIBGNURL_CPPFLAGS $LIBCURL_CPPFLAGS $CPPFLAGS"
470 LIBS="$LIBGNURL $LIBCURL $LIBS"
473 LIBCURL_CHECK_CONFIG(,7.34.0,[curl=true],[curl=false])
474 if test "x$curl" = xtrue
477 AC_CHECK_HEADERS([curl/curl.h],
478 AC_CHECK_DECLS(CURLINFO_TLS_SESSION,[curl=true],[curl=false],[[#include <curl/curl.h>]]),
480 AC_CHECK_HEADERS([gnurl/curl.h],
481 AC_CHECK_DECLS(CURLINFO_TLS_SESSION,[curl=true],,[[#include <gnurl/curl.h>]]))
482 # need libcurl-gnutls.so, everything else is not acceptable
483 AC_CHECK_LIB([curl-gnutls],[curl_easy_getinfo],,[curl=false])
484 # cURL must support CURLINFO_TLS_SESSION, version >= 7.34
487 # Check for curl/curl.h and gnurl/curl.h so we can use #ifdef
488 # HAVE_CURL_CURL_H later (the above LIBCURL_CHECK_CONFIG accepted
489 # *either* header set).
490 AC_CHECK_HEADERS([curl/curl.h],,
492 AC_CHECK_HEADERS([gnurl/curl.h],,
497 if test x$curl = xfalse
499 AM_CONDITIONAL(HAVE_LIBCURL, false)
502 AC_MSG_WARN([GNUnet requires libcurl-gnutls or gnurl >= 7.34])
505 AM_CONDITIONAL(HAVE_LIBCURL, true)
506 AC_DEFINE([HAVE_LIBCURL],[1],[Have CURL])
510 # restore LIBS & CPPFLAGS
512 CPPFLAGS=$SAVE_CPPFLAGS
514 AC_CHECK_HEADERS([glpk.h],[glpk=true],[gplk=false])
515 # GLPK must support glpk_init_env, version >= 4.43
516 AC_CHECK_LIB([glpk],[glp_init_env],,[gplk=false])
517 # GLPK must support atm MLP presolving, version >= 4.32
518 AC_CHECK_MEMBERS(glp_iocp.presolve,,[gplk=false],[[#include <glpk.h>]])
519 if test x$gplk = xfalse
521 AM_CONDITIONAL(HAVE_LIBGLPK, false)
522 AC_MSG_WARN([GNUnet requires GLPK >= 4.32])
524 AM_CONDITIONAL(HAVE_LIBGLPK, true)
525 AC_DEFINE([HAVE_LIBGLPK],[1],[Have GLPK])
530 AC_CHECK_HEADERS([nss.h],[nss=true],[nss=false])
531 if test x$nss = xfalse
533 AM_CONDITIONAL(HAVE_GLIBCNSS, false)
534 AC_MSG_WARN([No GNU libc nss header, will not build NSS plugin])
536 AM_CONDITIONAL(HAVE_GLIBCNSS, true)
541 # test for kvm and kstat (for CPU stats under BSD/Solaris)
542 AC_CHECK_LIB([kvm],[kvm_open])
543 AC_CHECK_LIB([kstat],[kstat_open])
546 # should the build process be restricted to the code required
547 # for GNU Taler wallets?
548 AC_MSG_CHECKING(whether to compile GNU Taler Wallet library ONLY)
549 AC_ARG_ENABLE([taler-wallet],
550 [AS_HELP_STRING([--enable-taler-wallet], [only compile for Taler wallet])],
551 [taler_only=${enableval}],
553 AC_MSG_RESULT($taler_only)
554 AM_CONDITIONAL([TALER_ONLY], [test "x$taler_only" = "xyes"])
556 # test for libextractor
558 AC_MSG_CHECKING(for libextractor)
559 AC_ARG_WITH(extractor,
560 [ --with-extractor=PFX base of libextractor installation],
561 [AC_MSG_RESULT([$with_extractor])
562 case $with_extractor in
566 AC_CHECK_HEADERS(extractor.h,
567 AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
571 LDFLAGS="-L$with_extractor/lib $LDFLAGS"
572 CPPFLAGS="-I$with_extractor/include $CPPFLAGS"
573 AC_CHECK_HEADERS(extractor.h,
574 AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
575 EXT_LIB_PATH="-L$with_extractor/lib $EXT_LIB_PATH"
580 [AC_MSG_RESULT([--with-extractor not specified])
581 AC_CHECK_HEADERS(extractor.h,
582 AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
587 if test "$extractor" != 1
589 AM_CONDITIONAL(HAVE_LIBEXTRACTOR, false)
590 AC_DEFINE([HAVE_LIBEXTRACTOR],[0],[Lacking libextractor])
592 AM_CONDITIONAL(HAVE_LIBEXTRACTOR, true)
593 AC_DEFINE([HAVE_LIBEXTRACTOR],[1],[Have libextractor])
597 if test "$taler_only" != yes
600 # Check for libltdl header (#2999)
602 AC_MSG_CHECKING(for libltdl)
604 [ --with-ltdl=PFX base of libltdl installation],
605 [AC_MSG_RESULT([$with_ltdl])
610 AC_CHECK_HEADERS(ltdl.h,
611 AC_CHECK_LIB([ltdl], [lt_dlopenext],
615 LDFLAGS="-L$with_ltdl/lib $LDFLAGS"
616 CPPFLAGS="-I$with_ltdl/include $CPPFLAGS"
617 AC_CHECK_HEADERS(ltdl.h,
618 AC_CHECK_LIB([ltdl], [lt_dlopenext],
619 EXT_LIB_PATH="-L$with_ltdl/lib $EXT_LIB_PATH"
624 [AC_MSG_RESULT([--with-ltdl not specified])
625 AC_CHECK_HEADERS(ltdl.h,
626 AC_CHECK_LIB([ltdl], [lt_dlopenext],
630 AC_MSG_RESULT([libltdl found])
632 AC_MSG_ERROR([GNUnet requires libltdl (from GNU libtool), try installing libltdl-dev])
639 AC_MSG_CHECKING([if Libidn can be used])
640 AC_ARG_WITH(libidn, AC_HELP_STRING([--with-libidn=[DIR]],
641 [Support IDN (needs GNU Libidn)]),
642 libidn=$withval, libidn=yes)
643 if test "$libidn" != "no"; then
644 if test "$libidn" != "yes"; then
645 LDFLAGS="${LDFLAGS} -L$libidn/lib"
646 CPPFLAGS="${CPPFLAGS} -I$libidn/include"
650 AC_CHECK_HEADER(idna.h,
651 AC_CHECK_LIB(idn, stringprep_check_version,
652 [libidn=yes LIBS="${LIBS} -lidn"], []), [])
653 if test "$libidn" != "yes"; then
654 AC_MSG_FAILURE([GNUnet requires libidn.
655 libidn-1.13 should be sufficient, newer versions work too.])
657 AC_MSG_RESULT($libidn)
661 SAVE_LDFLAGS=$LDFLAGS
662 SAVE_CPPFLAGS=$CPPFLAGS
664 [ --with-zlib[[=DIR]] use libz in DIR],
665 [AS_IF([test "$withval" = "no"],
666 [AC_MSG_ERROR([GNUnet requires zlib])],
667 [test "$withval" != "yes"],
670 CPPFLAGS="${CPPFLAGS} -I$withval/include"
671 LDFLAGS="${LDFLAGS} -L$withval/lib"
674 AC_CHECK_HEADER(zlib.h,
676 [AC_MSG_ERROR([GNUnet requires zlib])])
677 AC_CHECK_LIB(z, compress2,
679 AC_DEFINE([HAVE_ZLIB], [], [Have compression library])
680 if test "x${Z_DIR}" != "x"; then
681 Z_CFLAGS="-I${Z_DIR}/include"
682 Z_LIBS="-L${Z_DIR}/lib -lz"
686 [AC_MSG_ERROR([GNUnet requires zlib])])
690 if test "$enable_shared" = "no"
692 AC_MSG_ERROR([GNUnet only works with shared libraries. Sorry.])
706 # test for libunistring
708 if test $HAVE_LIBUNISTRING != yes; then
709 AC_MSG_ERROR([GNUnet requires libunistring])
711 if test $gl_libunistring_hexversion -le 2305; then
712 AC_MSG_ERROR([GNUnet requires libunistring >= 0.9.1.1])
719 # Checks for standard header files.
723 # Check for headers that are ALWAYS required
724 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]))
728 # Checks for headers that are only required on some systems or opional (and where we do NOT abort if they are not there)
729 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])
731 # FreeBSD requires something more funky for netinet/in_systm.h and netinet/ip.h...
732 AC_CHECK_HEADERS([sys/types.h netinet/in_systm.h netinet/in.h netinet/ip.h],,,
733 [#ifdef HAVE_SYS_TYPES_H
734 #include <sys/types.h>
736 #ifdef HAVE_NETINET_IN_SYSTM_H
737 #include <netinet/in_systm.h>
739 #ifdef HAVE_NETINET_IN_H
740 #include <netinet/in.h>
744 SAVE_LDFLAGS=$LDFLAGS
745 SAVE_CPPFLAGS=$CPPFLAGS
749 AC_MSG_CHECKING(for SQLite)
751 [ --with-sqlite=PFX base of SQLite installation],
752 [AC_MSG_RESULT("$with_sqlite")
757 AC_CHECK_HEADERS(sqlite3.h,
761 LDFLAGS="-L$with_sqlite/lib $LDFLAGS"
762 CPPFLAGS="-I$with_sqlite/include $CPPFLAGS"
763 AC_CHECK_HEADERS(sqlite3.h,
764 EXT_LIB_PATH="-L$with_sqlite/lib $EXT_LIB_PATH"
765 SQLITE_LDFLAGS="-L$with_sqlite/lib"
766 SQLITE_CPPFLAGS="-I$with_sqlite/include"
768 LDFLAGS=$SAVE_LDFLAGS
769 CPPFLAGS=$SAVE_CPPFLAGS
773 [AC_MSG_RESULT([--with-sqlite not specified])
774 AC_CHECK_HEADERS(sqlite3.h, sqlite=true)])
775 AM_CONDITIONAL(HAVE_SQLITE, test x$sqlite = xtrue)
776 AC_SUBST(SQLITE_CPPFLAGS)
777 AC_SUBST(SQLITE_LDFLAGS)
781 AX_LIB_POSTGRESQL([])
782 if test "$found_postgresql" = "yes"; then
783 CPPFLAGS="$CPPFLAGS $POSTGRESQL_CPPFLAGS"
784 AC_CHECK_HEADERS([libpq-fe.h],
788 AM_CONDITIONAL(HAVE_POSTGRESQL, test x$postgres = xtrue)
791 LDFLAGS=$SAVE_LDFLAGS
792 CPPFLAGS=$SAVE_CPPFLAGS
795 AC_CHECK_TYPES([sigset_t, off_t], [], [], [#include <sys/types.h>])
796 AC_CHECK_TYPES([size_t], [], [], [#include <stdio.h>])
798 if test "$build_target" = "mingw"
800 CYGWIN_MYSQL_MAGIC="#include <mysql/my_global.h>"
806 SAVE_LDFLAGS=$LDFLAGS
807 SAVE_CPPFLAGS=$CPPFLAGS
808 AC_MSG_CHECKING(for mysql)
810 [ --with-mysql=PFX base of MySQL installation],
811 [AC_MSG_RESULT("$with_mysql")
812 if test "$with_mysql" != "no"
814 if test "$with_mysql" != "yes"
816 LDFLAGS="-L$with_mysql/lib -L$with_mysql/lib/mysql $LDFLAGS $ZLIBS"
817 CPPFLAGS="-I$with_mysql/include $CPPFLAGS"
819 AC_CHECK_HEADERS(mysql/mysql.h,
820 AC_CHECK_LIB(mysqlclient, mysql_init,
821 MYSQL_LDFLAGS="-L$with_mysql/lib -L$with_mysql/lib/mysql"
822 MYSQL_CPPFLAGS="-I$with_mysql/include"
824 mysql=true), [], [$CYGWIN_MYSQL_MAGIC])
827 [AC_MSG_RESULT([--with-mysql not specified])
828 if test -d "/usr/lib64/mysql"; then
829 MYSQL_LIBDIR="/usr/lib64/mysql"
830 elif test -d "/usr/lib/mysql"; then
831 MYSQL_LIBDIR="/usr/lib/mysql"
833 MYSQL_LIBDIR="/usr/lib"
835 LDFLAGS="-L$MYSQL_LIBDIR $LDFLAGS $ZLIBS"
836 AC_CHECK_LIB(mysqlclient, mysql_init,
837 [AC_CHECK_HEADERS(mysql/mysql.h,
838 MYSQL_LDFLAGS="-L$MYSQL_LIBDIR"
841 , [], [$CYGWIN_MYSQL_MAGIC])])
844 AC_SUBST(MYSQL_LDFLAGS)
845 AC_SUBST(MYSQL_CPPFLAGS)
847 # additional version check for mysql
848 AC_ARG_ENABLE(mysql-version-check, [ --disable-mysql-version-check do not check MySQL version],, enable_mysql_version_check=yes)
849 if test "$mysql" = "true" -a "x$enable_mysql_version_check" = "xyes"
851 AC_MSG_CHECKING(mysql version)
852 AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
853 [[$CYGWIN_MYSQL_MAGIC
854 #include <mysql/mysql.h>]],
856 #if (MYSQL_VERSION_ID < 40100)
857 #error needs at least version >= 4.1
859 int main () { return 0; }
861 ],mysql=true,mysql=false)
862 if test "$mysql" = "false"
865 AC_MSG_RESULT([fail, >= 4.1 required])
870 AM_CONDITIONAL(HAVE_MYSQL, test x$mysql = xtrue)
871 AM_CONDITIONAL(HAVE_MYSQLE, test "0" = "1")
874 LDFLAGS=$SAVE_LDFLAGS
875 CPPFLAGS=$SAVE_CPPFLAGS
877 if test "$sqlite" = 0 -a "$mysql" = 0
879 AC_MSG_ERROR([GNUnet requires SQLite or MySQL])
884 AC_MSG_CHECKING([for libmicrohttpd])
885 AC_ARG_WITH(microhttpd,
886 [ --with-microhttpd=PFX base of libmicrohttpd installation],
887 [AC_MSG_RESULT([$with_microhttpd])
888 case $with_microhttpd in
892 AC_CHECK_HEADERS([microhttpd.h],
893 AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
894 AC_CHECK_LIB([microhttpd], [MHD_get_fdset2],
895 [AC_MSG_CHECKING([for libmicrohttpd >= 0.9.42])
896 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
897 #include "$native_srcdir/src/include/platform.h"
898 #include <microhttpd.h>
899 #if (MHD_VERSION < 0x0094200)
900 #error needs at least version 0.9.42
902 int main () { return 0; }
906 [AC_MSG_RESULT(failed)])]),
907 [],[#include "$native_srcdir/src/include/platform.h"
908 #include <microhttpd.h>]),,
909 [#include "$native_srcdir/src/include/platform.h"])
912 LDFLAGS="-L$with_microhttpd/lib $LDFLAGS"
913 CPPFLAGS="-I$with_microhttpd/include $CPPFLAGS"
914 AC_CHECK_HEADERS(microhttpd.h,
915 AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
916 AC_CHECK_LIB([microhttpd], [MHD_get_fdset2],
917 EXT_LIB_PATH="-L$with_microhttpd/lib $EXT_LIB_PATH"
918 [AC_MSG_CHECKING([for libmicrohttpd >= 0.9.42])
919 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
920 #include "$native_srcdir/src/include/platform.h"
921 #include <microhttpd.h>
922 #if (MHD_VERSION < 0x0094200)
923 #error needs at least version 0.9.42
925 int main () { return 0; }
929 [AC_MSG_RESULT(failed)])]),
930 [],[#include "$native_srcdir/src/include/platform.h"
931 #include <microhttpd.h>]),,
932 [#include "$native_srcdir/src/include/platform.h"])
936 [AC_MSG_RESULT([--with-microhttpd not specified])
937 AC_CHECK_HEADERS([microhttpd.h],
938 AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
939 AC_CHECK_LIB([microhttpd], [MHD_get_fdset2],
940 [AC_MSG_CHECKING([for libmicrohttpd >= 0.9.42])
941 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
942 #include "$native_srcdir/src/include/platform.h"
943 #include <microhttpd.h>
944 #if (MHD_VERSION < 0x0094200)
945 #error needs at least version 0.9.42
950 [AC_MSG_RESULT(failed)])]),
951 [],[#include "$native_srcdir/src/include/platform.h"
952 #include <microhttpd.h>]),,
953 [#include "$native_srcdir/src/include/platform.h"])])
954 AM_CONDITIONAL(HAVE_MHD, test x$lmhd = x1)
955 AC_DEFINE_UNQUOTED([HAVE_MHD], $lmhd, [We have libmicrohttpd])
961 # check for python & pexpect (used for some testcases only)
962 AM_PATH_PYTHON([2.6],, [:])
963 AM_CONDITIONAL([HAVE_PYTHON], [test "$PYTHON" != :])
966 AM_GNU_GETTEXT([external])
967 AM_GNU_GETTEXT_VERSION([0.18.1])
969 # Checks for standard typedefs, structures, and compiler characteristics.
978 AC_CHECK_MEMBER([struct sockaddr_in.sin_len],
979 [ AC_DEFINE(HAVE_SOCKADDR_IN_SIN_LEN, 1, [Do we have sockaddr_in.sin_len?])
983 #include <sys/types.h>
984 #include <sys/socket.h>
985 #include <netinet/in.h>
990 # Checks for library functions.
991 AC_FUNC_CLOSEDIR_VOID
993 AC_PROG_GCC_TRADITIONAL
995 AC_FUNC_SELECT_ARGTYPES
1005 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])
1011 GN_LIBINTL="$LTLIBINTL"
1012 AC_ARG_ENABLE(framework, [ --enable-framework enable Mac OS X framework build helpers],enable_framework_build=$enableval)
1013 AM_CONDITIONAL(WANT_FRAMEWORK, test x$enable_framework_build = xyes)
1014 if test x$enable_framework_build = xyes
1016 AC_DEFINE([FRAMEWORK_BUILD], 1, [Build a Mac OS X Framework])
1017 GN_INTLINCL='-I$(top_srcdir)/src/intlemu'
1018 GN_LIBINTL='$(top_builddir)/src/intlemu/libintlemu.la -framework CoreFoundation'
1019 AC_LIB_APPENDTOVAR([CPPFLAGS], [$GN_INTLINCL])
1022 GN_LIB_LDFLAGS="-export-dynamic -no-undefined"
1023 GN_PLUGIN_LDFLAGS="-export-dynamic -avoid-version -module -no-undefined"
1025 AC_SUBST(GN_LIB_LDFLAGS)
1026 AC_SUBST(GN_PLUGIN_LDFLAGS)
1027 AC_SUBST(GN_INTLINCL)
1028 AC_SUBST(GN_LIBINTL)
1033 AC_SUBST(EXT_LIB_PATH)
1038 AC_SUBST(EXT_LIB_PATH)
1042 AC_MSG_CHECKING(for sudo)
1044 [ --with-sudo=PATH path to sudo binary (or just yes)],
1045 [AC_MSG_RESULT("$with_sudo")
1054 SUDO_BINARY=$with_sudo
1058 [AC_MSG_RESULT([no])])
1059 AC_SUBST(SUDO_BINARY)
1060 AM_CONDITIONAL([HAVE_SUDO], [test "x$SUDO_BINARY" != "x" -o -w /])
1064 AC_MSG_CHECKING(with nssdir)
1066 [ --with-nssdir=PATH where to install NSS plugins],
1067 [AC_MSG_RESULT("$with_nssdir")
1068 case $with_nssdir in
1078 NSS_DIR=$with_nssdir
1084 if test "x$SUDO_BINARY" != "x" -o -w /
1088 AC_MSG_RESULT([yes, to /lib])
1096 AM_CONDITIONAL([INSTALL_NSS], [test "x$install_nss" != "x0"])
1098 # test for gnunetdns group name
1099 GNUNETDNS_GROUP=gnunetdns
1100 AC_MSG_CHECKING(for gnunetdns group name)
1101 AC_ARG_WITH(gnunetdns,
1102 [ --with-gnunetdns=GRPNAME name for gnunetdns group],
1103 [AC_MSG_RESULT("$with_gnunetdns")
1104 case $with_gnunetdns in
1106 GNUNETDNS_GROUP=gnunet
1109 GNUNETDNS_GROUP=gnunetdns
1112 GNUNETDNS_GROUP=$with_gnunetdns
1116 [AC_MSG_RESULT([gnunetdns])])
1117 AC_SUBST(GNUNETDNS_GROUP)
1124 AC_MSG_CHECKING(for gnutls)
1126 [ --with-gnutls=PFX base of gnutls installation],
1127 [AC_MSG_RESULT([$with_gnutls])
1128 case $with_gnutls in
1132 AC_CHECK_HEADERS([gnutls/abstract.h],
1133 AC_CHECK_LIB([gnutls], [gnutls_priority_set],
1135 AC_CHECK_HEADERS([gnutls/dane.h],
1136 AC_CHECK_LIB([gnutls-dane], [dane_verify_crt_raw],
1140 LDFLAGS="-L$with_gnutls/lib $LDFLAGS"
1141 CPPFLAGS="-I$with_gnutls/include $CPPFLAGS"
1142 AC_CHECK_HEADERS([gnutls/abstract.h],
1143 AC_CHECK_LIB([gnutls], [gnutls_priority_set],
1144 EXT_LIB_PATH="-L$with_gnutls/lib $EXT_LIB_PATH"
1146 AC_CHECK_HEADERS([gnutls/dane.h],
1147 AC_CHECK_LIB([gnutls-dane], [dane_verify_crt_raw],
1152 [AC_MSG_RESULT([--with-gnutls not specified])
1153 AC_CHECK_HEADERS([gnutls/abstract.h],
1154 AC_CHECK_LIB([gnutls], [gnutls_priority_set],
1156 AC_CHECK_HEADERS([gnutls/dane.h],
1157 AC_CHECK_LIB([gnutls-dane], [dane_verify_crt_raw],
1160 AM_CONDITIONAL(HAVE_GNUTLS, test x$gnutls = xtrue)
1161 AC_DEFINE_UNQUOTED([HAVE_GNUTLS], $gnutls, [We have GnuTLS])
1162 AM_CONDITIONAL(HAVE_GNUTLS_DANE, test x$gnutls_dane = x1)
1163 AC_DEFINE_UNQUOTED([HAVE_GNUTLS_DANE], $gnutls_dane, [We have GnuTLS with DANE support])
1166 # Test if we are building for superMUC
1167 AC_MSG_CHECKING(if GNUnet is being configured to run on the SuperMUC)
1168 AC_ARG_ENABLE([supermuc],
1169 [AS_HELP_STRING([--enable-supermuc],
1170 [build GNUnet with support to run on the SuperMUC (default is NO)])],
1171 [if test "x$enable_supermuc" = "xno"
1178 enable_supermuc=no])
1179 AC_MSG_RESULT($enable_SUPERMUC)
1180 AM_CONDITIONAL([ENABLE_SUPERMUC], [test "x$supermuc" = "x1"])
1181 AC_DEFINE_UNQUOTED([ENABLE_SUPERMUC], [$supermuc], [Build with support for SuperMUC])
1183 # Check if NSE has to send timestamp information to testbed logger for
1184 # generating histogram of messages received
1185 AC_MSG_CHECKING(if NSE has to send timestamp information to testbed logger)
1186 AC_ARG_ENABLE([nse-histogram],
1187 [AS_HELP_STRING([--enable-nse-histogram],
1188 [have NSE send timestamp information to testbed logger for generating
1189 histogram of received messages. NOT useful for production (default is
1191 [if test "x$enableval" = "xno"
1198 enable_nse_histogram=no])
1199 AC_MSG_RESULT($enable_nse_histogram)
1200 AM_CONDITIONAL([ENABLE_NSE_HISTOGRAM], [test "x$nse_histogram" = "x1"])
1201 AC_DEFINE_UNQUOTED([ENABLE_NSE_HISTOGRAM], [$nse_histogram],
1202 [have NSE send timestamp information to testbed logger])
1204 # should 'make check' run tests?
1205 AC_MSG_CHECKING(whether to run tests)
1206 AC_ARG_ENABLE([testruns],
1207 [AS_HELP_STRING([--disable-testruns], [disable running tests on make check (default is YES)])],
1208 [enable_tests_run=${enableval}],
1209 [enable_tests_run=yes])
1210 AC_MSG_RESULT($enable_test_run)
1211 AM_CONDITIONAL([ENABLE_TEST_RUN], [test "x$enable_tests_run" = "xyes"])
1214 # should monkey be used when running (certain) services?
1215 AC_MSG_CHECKING(whether to run with monkey)
1216 AC_ARG_ENABLE([monkey],
1217 [AS_HELP_STRING([--enable-monkey], [enable running with monkey])],
1218 [enable_monkey=${enableval}],
1220 AC_MSG_RESULT($enable_monkey)
1221 AM_CONDITIONAL([ENABLE_MONKEY], [test "x$enable_monkey" = "xyes"])
1222 if test "x$enable_monkey" = "xyes"
1224 MONKEYPREFIX="pathologist -d $(eval echo ${datarootdir}/gnunet/gnunet.sqlite) -p 30 --"
1228 AC_SUBST(MONKEYPREFIX)
1231 # should expensive tests be run?
1232 AC_MSG_CHECKING(whether to run expensive tests)
1233 AC_ARG_ENABLE([expensivetests],
1234 [AS_HELP_STRING([--enable-expensivetests], [enable running expensive testcases])],
1235 [enable_expensive=${enableval}],
1236 [enable_expensive=no])
1237 AC_MSG_RESULT($enable_expensive)
1238 AM_CONDITIONAL([HAVE_EXPENSIVE_TESTS], [test "x$enable_expensive" = "xyes"])
1240 # should ports be open for Java services?
1241 AC_MSG_CHECKING(whether to enable ports for gnunet-java)
1242 AC_ARG_ENABLE([javaports],
1243 [AS_HELP_STRING([--enable-javaports], [use non-zero ports for services with Java bindings (default is NO)])],
1244 [enable_java_ports=${enableval}],
1245 [enable_java_ports=no])
1246 AC_MSG_RESULT($enable_java_ports)
1247 if test "x$enable_java_ports" = "xyes"
1251 JAVAPORT="$UNIXONLY"
1255 # should benchmarks be run?
1256 AC_MSG_CHECKING(whether to run benchmarks during make check)
1257 AC_ARG_ENABLE([benchmarks],
1258 [AS_HELP_STRING([--enable-benchmarks], [enable running benchmarks during make check])],
1259 [enable_benchmarks=${enableval}],
1260 [enable_benchmarks=no])
1261 AC_MSG_RESULT($enable_benchmarks)
1262 AM_CONDITIONAL([HAVE_BENCHMARKS], [test "x$enable_benchmarks" = "xyes"])
1264 # should gnunet-testing be compiled
1265 AC_MSG_CHECKING(wether to compile gnunet-testing)
1266 AC_ARG_ENABLE([testing],
1267 [AS_HELP_STRING([--disable-testing], [do not build gnunet-testing])],
1268 [enable_testing=${enableval}],
1269 [enable_testing=yes])
1270 AC_MSG_RESULT($enable_testing)
1271 AM_CONDITIONAL([HAVE_TESTING], [test "x$enable_testing" = "xyes"])
1273 # should experimental code be compiled (code that may not yet compile)?
1274 AC_MSG_CHECKING(whether to compile experimental code)
1275 AC_ARG_ENABLE([experimental],
1276 [AS_HELP_STRING([--enable-experimental], [enable compiling experimental code])],
1277 [enable_experimental=${enableval}],
1278 [enable_experimental=no])
1279 AC_MSG_RESULT($enable_experimental)
1280 AM_CONDITIONAL([HAVE_EXPERIMENTAL], [test "x$enable_experimental" = "xyes"])
1282 # FTBFS right now...
1283 AC_MSG_CHECKING(whether to compile ATS test code)
1284 AC_ARG_ENABLE([wachs],
1285 [AS_HELP_STRING([--enable-wachs], [enable compiling ATS test code])],
1286 [enable_wachs=${enableval}],
1288 AC_MSG_RESULT($enable_wachs)
1289 AM_CONDITIONAL([HAVE_WACHS], [test "x$enable_wachs" = "xyes"])
1292 AC_MSG_CHECKING(whether to compile REST API)
1293 AC_ARG_ENABLE([rest],
1294 [AS_HELP_STRING([--enable-rest], [enable REST])],
1295 [enable_rest=${enableval}],
1297 AC_MSG_RESULT($enable_rest)
1298 AM_CONDITIONAL([HAVE_REST], [test "x$enable_rest" = "xyes"])
1300 # should malicious code be compiled (should only be used for testing)?
1301 AC_MSG_CHECKING(whether to compile malicious code)
1302 AC_ARG_ENABLE([malicious],
1303 [AS_HELP_STRING([--enable-malicious], [enable compiling malicious code])],
1304 [if test "x$enableval" = "xno"
1311 enable_malicious=no])
1312 AC_MSG_RESULT($enable_malicious)
1313 AM_CONDITIONAL([ENABLE_MALICIOUS], [test 1=$malicious])
1314 AC_DEFINE_UNQUOTED([ENABLE_MALICIOUS], [$malicious],
1315 [enable compilation of malicious code])
1317 # should services be started by default when a peer starts? Some services may
1318 # choose to never start by default and it is upto the service/module developer to
1319 # decide it by having "AUTOSTART = NO" instead of "AUTOSTART = @AUTOSTART@" in
1320 # the service/module's conf.in file.
1322 AC_MSG_CHECKING(whether to auto-start peer's services by default)
1323 AC_ARG_ENABLE([autostart],
1324 [AS_HELP_STRING([--disable-autostart], [do not start peer's services by default])],
1325 [enable_autostart=${enableval}
1326 if test "x$enable_autostart" == "xno"
1331 [enable_autostart=yes])
1332 AC_MSG_RESULT($enable_autostart)
1333 #AM_CONDITIONAL([HAVE_AUTOSTART], [test "x$enable_autostart" = "xyes"])
1336 # should memory statistics be kept (very expensive CPU-wise!)
1337 AC_MSG_CHECKING(whether to create expensive statistics on memory use)
1338 AC_ARG_ENABLE([heapstats],
1339 [AS_HELP_STRING([--enable-heapstats], [enable expensive heap statistics])],
1340 [enable_heapstats=1],
1341 [enable_heapstats=0])
1342 AC_MSG_RESULT($enable_heapstats)
1343 AC_DEFINE_UNQUOTED([ENABLE_HEAP_STATISTICS],$enable_heapstats,[enable expensive heap statistics])
1345 # should code be enabled that works around missing OS functionality on Windows?
1346 # used for test cases
1347 if test $build_target = "mingw"
1353 [#include <ws2tcpip.h>
1355 int s = socket (0, 0, 0);])
1357 AC_DEFINE_UNQUOTED([HAVE_SOCKET],1,[Define this if socket() is available])
1359 AC_DEFINE_UNQUOTED([HAVE_SOCKET],0,[Define this if socket() is available])
1364 [#include <ws2tcpip.h>
1366 int s = select (0, NULL, NULL, NULL, NULL);])
1368 AC_DEFINE_UNQUOTED([HAVE_SELECT],1,[Define this if select() is available])
1370 AC_DEFINE_UNQUOTED([HAVE_SELECT],0,[Define this if select() is available])
1375 [#include <ws2tcpip.h>
1378 char *s = inet_ntoa (i);])
1380 AC_DEFINE_UNQUOTED([HAVE_INET_NTOA],1,[Define this if inet_ntoa() is available])
1382 AC_DEFINE_UNQUOTED([HAVE_INET_NTOA],0,[Define this if inet_ntoa() is available])
1387 [#include <ws2tcpip.h>
1389 int s = getnameinfo (NULL, 0, NULL, 0, NULL, 0, 0);])
1391 AC_DEFINE_UNQUOTED([HAVE_GETNAMEINFO],1,[Define this if getnameinfo() is available])
1393 AC_DEFINE_UNQUOTED([HAVE_GETNAMEINFO],0,[Define this if getnameinfo() is available])
1398 [#include <ws2tcpip.h>
1400 int s = gethostname (NULL, 0);])
1402 AC_DEFINE_UNQUOTED([HAVE_GETHOSTNAME],1,[Define this if gethostname() is available])
1404 AC_DEFINE_UNQUOTED([HAVE_GETHOSTNAME],0,[Define this if gethostname() is available])
1409 [#include <ws2tcpip.h>
1411 void *s = gethostbyname (NULL);])
1413 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYNAME],1,[Define this if gethostbyname() is available])
1415 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYNAME],0,[Define this if gethostbyname() is available])
1420 [#include <ws2tcpip.h>
1422 void *s = gethostbyaddr (NULL, 0, 0);])
1424 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYADDR],1,[Define this if gethostbyaddr() is available])
1426 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYADDR],0,[Define this if gethostbyaddr() is available])
1431 [#include <ws2tcpip.h>
1433 int s = getaddrinfo (NULL, NULL, NULL, NULL);])
1435 AC_DEFINE_UNQUOTED([HAVE_GETADDRINFO],1,[Define this if getaddrinfo() is available])
1437 AC_DEFINE_UNQUOTED([HAVE_GETADDRINFO],1,[Define this if getaddrinfo() is available])
1441 AC_MSG_CHECKING(whether to enable windows workarounds)
1442 AC_ARG_ENABLE([windows_workarounds],
1443 [AS_HELP_STRING([--enable-windows_workarounds], [enable workarounds used on Windows (only useful for test cases)])],
1444 [enable_workarounds=${enableval}],
1445 [enable_workarounds=no])
1446 AC_MSG_RESULT($enable_workarounds)
1447 if test x$enable_windows_workarounds = "xyes"
1454 AC_DEFINE_UNQUOTED([ENABLE_WINDOWS_WORKAROUNDS], $workarounds, [enable workarounds used on Windows (only useful for test cases)])
1457 AC_MSG_CHECKING(whether to compile with support for code coverage analysis)
1458 AC_ARG_ENABLE([coverage],
1459 AS_HELP_STRING([--enable-coverage],
1460 [compile the library with code coverage support]),
1461 [use_gcov=${enableval}],
1463 AC_MSG_RESULT($use_gcov)
1464 AM_CONDITIONAL([USE_COVERAGE], [test "x$use_gcov" = "xyes"])
1468 AC_PATH_PROG(svnversioncommand, svnversion)
1469 AC_PATH_PROG(gitcommand, git)
1470 AC_MSG_CHECKING(for source being under a VCS)
1473 AS_IF([test ! "X$svnversioncommand" = "X"],
1475 svn_version=$(cd $srcdir ; $svnversioncommand -n 2>/dev/null)
1477 AS_IF([test ! "X$gitcommand" = "X"],
1479 gitsvn_version=$(cd $srcdir ; git log -1 2>/dev/null | grep "git-svn-id" | sed -e 's/.*@\([[0-9]]\+\) .*/\1/')
1481 AS_IF([test "X$svn_version" = "X" -o "X$svn_version" = "Xexported" -o "X$svn_version" = "XUnversioned directory"],
1483 AS_IF([test "X$gitsvn_version" = "X"],
1486 vcs_version="\"release\""
1489 vcs_name="yes, git-svn"
1490 vcs_version="\"svn-r$gitsvn_version\""
1495 vcs_version="\"svn-r$svn_version\""
1497 AC_MSG_RESULT($vcs_name)
1499 AC_MSG_CHECKING(VCS version)
1500 AC_MSG_RESULT($vcs_version)
1501 AC_DEFINE_UNQUOTED(VCS_VERSION, [$vcs_version], [VCS revision/hash or tarball version])
1508 doc/doxygen/Makefile
1516 src/ats-tool/Makefile
1517 src/ats-tests/Makefile
1520 src/cadet/cadet.conf
1523 src/consensus/Makefile
1524 src/consensus/consensus.conf
1525 src/conversation/Makefile
1526 src/conversation/conversation.conf
1527 src/datacache/Makefile
1528 src/datastore/Makefile
1529 src/datastore/datastore.conf
1538 src/fragmentation/Makefile
1543 src/gns/nss/Makefile
1544 src/gnsrecord/Makefile
1546 src/identity/Makefile
1547 src/identity/identity.conf
1548 src/include/Makefile
1549 src/integration-tests/Makefile
1550 src/hostlist/Makefile
1551 src/multicast/Makefile
1552 src/multicast/multicast.conf
1554 src/namecache/Makefile
1555 src/namecache/namecache.conf
1556 src/namestore/Makefile
1557 src/namestore/namestore.conf
1561 src/peerinfo/Makefile
1562 src/peerinfo/peerinfo.conf
1563 src/peerinfo-tool/Makefile
1564 src/peerstore/Makefile
1565 src/peerstore/peerstore.conf
1566 src/postgres/Makefile
1569 src/psycstore/Makefile
1570 src/psycstore/psycstore.conf
1573 src/regex/regex.conf
1574 src/revocation/Makefile
1575 src/revocation/revocation.conf
1578 src/secretsharing/Makefile
1579 src/secretsharing/secretsharing.conf
1581 src/sensor/sensor.conf
1582 src/sensordashboard/Makefile
1583 src/sensordashboard/sensordashboard.conf
1584 src/scalarproduct/Makefile
1585 src/scalarproduct/scalarproduct.conf
1589 src/social/social.conf
1590 src/statistics/Makefile
1591 src/statistics/statistics.conf
1592 src/template/Makefile
1593 src/testbed/Makefile
1594 src/testbed/testbed.conf
1595 src/testing/Makefile
1596 src/topology/Makefile
1597 src/transport/Makefile
1598 src/transport/transport.conf
1601 src/util/resolver.conf
1606 pkgconfig/gnunetarm.pc
1607 pkgconfig/gnunetats.pc
1608 pkgconfig/gnunetblock.pc
1609 pkgconfig/gnunetcadet.pc
1610 pkgconfig/gnunetconsensus.pc
1611 pkgconfig/gnunetconversation.pc
1612 pkgconfig/gnunetcore.pc
1613 pkgconfig/gnunetdatacache.pc
1614 pkgconfig/gnunetdatastore.pc
1615 pkgconfig/gnunetdht.pc
1616 pkgconfig/gnunetdns.pc
1617 pkgconfig/gnunetdnsparser.pc
1618 pkgconfig/gnunetdnsstub.pc
1619 pkgconfig/gnunetdv.pc
1620 pkgconfig/gnunetenv.pc
1621 pkgconfig/gnunetfragmentation.pc
1622 pkgconfig/gnunetfs.pc
1623 pkgconfig/gnunetgns.pc
1624 pkgconfig/gnunethello.pc
1625 pkgconfig/gnunetidentity.pc
1626 pkgconfig/gnunetmicrophone.pc
1627 pkgconfig/gnunetmulticast.pc
1628 pkgconfig/gnunetmysql.pc
1629 pkgconfig/gnunetnamestore.pc
1630 pkgconfig/gnunetnat.pc
1631 pkgconfig/gnunetnse.pc
1632 pkgconfig/gnunetpeerinfo.pc
1633 pkgconfig/gnunetpostgres.pc
1634 pkgconfig/gnunetpsyc.pc
1635 pkgconfig/gnunetpsycstore.pc
1636 pkgconfig/gnunetregex.pc
1637 pkgconfig/gnunetrevocation.pc
1638 pkgconfig/gnunetrps.pc
1639 pkgconfig/gnunetscalarproduct.pc
1640 pkgconfig/gnunetset.pc
1641 pkgconfig/gnunetsocial.pc
1642 pkgconfig/gnunetspeaker.pc
1643 pkgconfig/gnunetstatistics.pc
1644 pkgconfig/gnunettestbed.pc
1645 pkgconfig/gnunettesting.pc
1646 pkgconfig/gnunettransport.pc
1647 pkgconfig/gnunettun.pc
1648 pkgconfig/gnunetutil.pc
1649 pkgconfig/gnunetvpn.pc
1655 # warn user if mysql found but not used due to version
1656 if test "$mysqlfail" = "true"
1658 AC_MSG_NOTICE([NOTICE: MySQL found, but too old. MySQL support will not be compiled.])
1662 if test "x$sqlite" = "x0"
1664 AC_MSG_ERROR([ERROR: sqlite3 not found, but sqlite3 is required.])
1668 if test "$gnurl" = "0"
1670 if test "x$curl" = "xfalse"
1672 AC_MSG_NOTICE([NOTICE: libgnurl not found. http client support will not be compiled.])
1673 AC_MSG_WARN([ERROR: libgnurl not found. hostlist daemon will not be compiled, and you probably WANT the hostlist daemon])
1675 AC_MSG_NOTICE([WARNING: libgnurl not found, trying to use libcurl-gnutls instead.])
1681 if test "x$bluetooth" = "x0"
1683 AC_MSG_NOTICE([NOTICE: bluetooth library not found. bluetooth support will not be compiled.])
1687 if test x$gnutls != xtrue
1689 AC_MSG_NOTICE([NOTICE: GnuTLS not found, gnunet-gns-proxy will not be built])
1691 if test "x$gnutls_dane" != "x1"
1693 AC_MSG_NOTICE([NOTICE: GnuTLS has no DANE support, DANE validation will not be possible])
1698 if test "x$enable_java_ports" = "xyes"
1700 AC_MSG_NOTICE([NOTICE: opening ports for gnunet-java bindings by default.])
1704 if test "x$lmhd" != "x1"
1706 AC_MSG_NOTICE([NOTICE: libmicrohttpd not found, http transport will not be installed.])
1710 if test "x$conversation_backend" = "xnone"
1712 if test "x$pulse" != "x1"
1714 AC_MSG_NOTICE([NOTICE: libpulse(audio) not found, conversation will not be built.])
1716 if test "x$opus" != "x1"
1718 AC_MSG_NOTICE([NOTICE: libopus not found, conversation will not be built.])
1720 if test "x$gst" != "x1"
1722 AC_MSG_NOTICE([NOTICE: GStreamer not found, conversation will not be built.])
1726 if test "$extractor" != 1
1728 AC_MSG_WARN([NOTICE: libextractor not found, but various file-sharing functions require it])
1731 AC_MSG_NOTICE([NOTICE: Database support is set to MySQL: $mysql, SQLite: $sqlite, Postgres: $postgres])
1733 if test "$enable_framework_build" = "yes"
1735 AC_MSG_NOTICE([NOTICE: Mac OS X framework build enabled.])
1738 if test "x$SUDO_BINARY" = "x" -a ! -w /
1740 AC_MSG_NOTICE([NOTICE: --with-sudo not specified and not running as 'root', will not install GNS NSS library])
1744 AC_MSG_NOTICE([********************************************
1745 Please make sure NOW that you have created a user and group 'gnunet'
1746 and additionally a group 'gnunetdns':
1750 Make sure that '/var/lib/gnunet' is owned (and writable) by user
1751 'gnunet'. Then, you can compile GNUnet with
1754 After that, run (if necessary as 'root')
1756 to install everything.
1758 Each GNUnet user should be added to the 'gnunet' group (may
1759 require fresh login to come into effect):
1760 adduser USERNAME gnunet
1761 (run the above command as root once for each of your users, replacing
1762 "USERNAME" with the respective login names). If you have a global IP
1763 address, no further configuration is required.
1765 Optionally, download and compile gnunet-gtk to get a GUI for
1766 file-sharing and configuration. This is particularly recommended
1767 if your network setup is non-trivial, as gnunet-setup can be
1768 used to test in the GUI if your network configuration is working.
1769 gnunet-setup should be run as the "gnunet" user under X. As it
1770 does very little with the network, running it as "root" is likely
1771 also harmless. You can also run it as a normal user, but then
1772 you have to copy ~/.gnunet/gnunet.conf" over to the "gnunet" user's
1773 home directory in the end.
1775 Once you have configured your peer, run (as the 'gnunet' user)
1777 to start the peer. You can then run the various GNUnet-tools as
1778 your "normal" user (who should only be in the group 'gnunet').
1779 ********************************************])