1 # This file is part of GNUnet.
2 # (C) 2001--2014 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., 59 Temple Place - Suite 330,
17 # Boston, MA 02111-1307, 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 if test "$enable_shared" = "no"
55 AC_MSG_ERROR([GNUnet only works with shared libraries. Sorry.])
58 CFLAGS="-Wall $CFLAGS"
59 # use '-fno-strict-aliasing', but only if the compiler can take it
60 if gcc -fno-strict-aliasing -S -o /dev/null -xc /dev/null >/dev/null 2>&1;
62 CFLAGS="-fno-strict-aliasing $CFLAGS"
65 # Use Linux interface name unless the OS has a different preference
66 DEFAULT_INTERFACE="\"eth0\""
68 funcstocheck="getnameinfo gethostname gethostbyname gethostbyaddr getaddrinfo"
70 # Srcdir in a form that native compiler understands (i.e. DOS path on W32)
75 *darwin* | *rhapsody* | *macosx*)
76 AC_DEFINE_UNQUOTED(DARWIN,1,[This is an Apple Darwin system])
77 CPPFLAGS="-D_APPLE_C_SOURCE $CPPFLAGS"
78 CFLAGS="-fno-common $CFLAGS"
79 AC_MSG_WARN([The VPN application cannot be compiled on your OS])
81 DEFAULT_INTERFACE="\"en0\""
87 AC_DEFINE_UNQUOTED(LINUX,1,[This is a Linux kernel])
95 AC_DEFINE_UNQUOTED(SOMEBSD,1,[This is a BSD system])
96 AC_DEFINE_UNQUOTED(FREEBSD,1,[This is a FreeBSD system])
97 CFLAGS="-D_THREAD_SAFE $CFLAGS"
98 build_target="freebsd"
104 AC_DEFINE_UNQUOTED(SOMEBSD,1,[This is a BSD system])
105 AC_DEFINE_UNQUOTED(OPENBSD,1,[This is an OpenBSD system])
106 LIBS=`echo $LIBS | sed -e "s/-ldl//"`
107 build_target="openbsd"
113 AC_DEFINE_UNQUOTED(SOMEBSD,1,[This is a BSD system])
114 AC_DEFINE_UNQUOTED(NETBSD,1,[This is a NetBSD system])
120 AC_DEFINE_UNQUOTED(SOLARIS,1,[This is a Solaris system])
121 AC_DEFINE_UNQUOTED(_REENTRANT,1,[Need with solaris or errno doesnt work])
122 AC_CHECK_LIB(resolv, res_init)
123 AC_CHECK_LIB(rt, nanosleep)
124 build_target="solaris"
130 AC_DEFINE_UNQUOTED(LINUX,1,[This is a Linux kernel])
131 CFLAGS="-D_REENTRANT -fPIC -pipe $CFLAGS"
138 AC_DEFINE_UNQUOTED(CYGWIN,1,[This is a Cygwin system])
139 AC_DEFINE_UNQUOTED(WINDOWS,1,[This is a Windows system])
140 AC_CHECK_LIB(intl, gettext)
141 CFLAGS="-mms-bitfields $CFLAGS"
142 build_target="cygwin"
149 AC_DEFINE_UNQUOTED(MINGW,1,[This is a MinGW system])
150 AC_DEFINE_UNQUOTED(WINDOWS,1,[This is a Windows system])
151 AC_DEFINE_UNQUOTED(_WIN32,1,[This is a Windows system])
152 AC_CHECK_LIB(intl, gettext)
153 LDFLAGS="$LDFLAGS -Wl,--export-all-symbols"
154 LIBS="$LIBS -lws2_32 -lplibc -lgnurx -lole32"
155 CFLAGS="-mms-bitfields $CFLAGS"
156 CPPFLAGS="-D_WIN32_WINNT=0x0501 -DHAVE_STAT64=1 -D__USE_MINGW_ANSI_STDIO=1 $CPPFLAGS"
163 native_srcdir=$(cd $srcdir; pwd -W)
166 AC_DEFINE_UNQUOTED(GNU,1,[This is a GNU system])
171 AC_MSG_RESULT(Unrecognised OS $host_os)
172 AC_DEFINE_UNQUOTED(OTHEROS,1,[Some strange OS])
176 AC_DEFINE_UNQUOTED([GNUNET_DEFAULT_INTERFACE], $DEFAULT_INTERFACE, [This should be the default choice for the name of the first network interface])
177 AC_SUBST(DEFAULT_INTERFACE)
179 # Disable TCP-based IPC on systems that support UNIX domain
180 # sockets in default configuratin:
184 AC_MSG_CHECKING([for build target])
185 AM_CONDITIONAL(DARWIN, test "$build_target" = "darwin")
186 AM_CONDITIONAL(CYGWIN, test "$build_target" = "cygwin")
187 AM_CONDITIONAL(MINGW, test "$build_target" = "mingw")
188 AM_CONDITIONAL(SOLARIS, test "$build_target" = "solaris")
189 AM_CONDITIONAL(XFREEBSD, test "$build_target" = "freebsd")
190 AM_CONDITIONAL(OPENBSD, test "$build_target" = "openbsd")
191 AM_CONDITIONAL(LINUX, test "$build_target" = "linux")
192 AM_CONDITIONAL(GNU, test "$build_target" = "gnu")
194 AC_MSG_RESULT([$build_target])
195 AC_SUBST(build_target)
196 AM_CONDITIONAL([am__fastdepOBJC], false)
197 AC_UNALIGNED_64_ACCESS
199 # some other checks for standard libs
200 AC_SEARCH_LIBS([gethostbyname], [nsl ws2_32])
201 AC_CHECK_LIB(socket, socket)
203 AC_CHECK_LIB(c, getloadavg, AC_DEFINE(HAVE_GETLOADAVG,1,[getloadavg supported]))
206 AC_CHECK_MEMBER(struct tm.tm_gmtoff,
207 [AC_DEFINE(HAVE_TM_GMTOFF, 1,
208 [Define if struct tm has the tm_gmtoff member.])],
212 AC_CHECK_DECLS([_stati64])
214 # 'save' libs; only those libs found so far will be
215 # linked against _everywhere_. For the others, we
216 # will be more selective!
219 # tests only run on Windows
220 if test "x$build_target" = "xmingw"
222 AC_CHECK_LIB(plibc, plibc_init, [], [AC_MSG_ERROR([GNUnet requires PlibC on Windows])])
223 AC_CHECK_LIB(gnurx, regexec, [], [AC_MSG_ERROR([GNUnet requires libgnurx on Windows])])
229 NEED_LIBGCRYPT_VERSION=1.6.0
232 AM_PATH_LIBGCRYPT("$NEED_LIBGCRYPT_API:$NEED_LIBGCRYPT_VERSION", gcrypt=1)
233 AC_CHECK_DECLS([gcry_mpi_set_opaque_copy], [], [], [[#include <gcrypt.h>]])
239 *** You need libgcrypt to build this program.
240 ** This library is for example available at
241 *** ftp://ftp.gnupg.org/gcrypt/libgcrypt/
242 *** (at least version $NEED_LIBGCRYPT_VERSION (API $NEED_LIBGCRYPT_API)
246 AC_DEFINE_UNQUOTED([NEED_LIBGCRYPT_VERSION], "$NEED_LIBGCRYPT_VERSION", [required libgcrypt version])
248 # Adam shostack suggests the following for Windows:
249 # -D_FORTIFY_SOURCE=2 -fstack-protector-all
250 AC_ARG_ENABLE(gcc-hardening,
251 AS_HELP_STRING(--enable-gcc-hardening, enable compiler security checks),
252 [if test x$enableval = xyes; then
253 CFLAGS="$CFLAGS -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fstack-protector-all"
254 CFLAGS="$CFLAGS -fwrapv -fPIE -Wstack-protector"
255 CFLAGS="$CFLAGS --param ssp-buffer-size=1"
256 LDFLAGS="$LDFLAGS -pie"
260 # Linker hardening options
261 # Currently these options are ELF specific - you can't use this with MacOSX
262 AC_ARG_ENABLE(linker-hardening,
263 AS_HELP_STRING(--enable-linker-hardening, enable linker security fixups),
264 [if test x$enableval = xyes; then
265 LDFLAGS="$LDFLAGS -z relro -z now"
269 extra_logging=GNUNET_NO
270 AC_ARG_ENABLE([logging],
271 AS_HELP_STRING([--enable-logging@<:@=value@:>@],[Enable logging calls. Possible values: yes,no,verbose,veryverbose ('yes' is the default)]),
272 [AS_IF([test "x$enableval" = "xyes"], [],
273 [test "x$enableval" = "xno"], [AC_DEFINE([GNUNET_CULL_LOGGING],[],[Define to cull all logging calls])],
274 [test "x$enableval" = "xverbose"], [extra_logging=GNUNET_YES]
275 [test "x$enableval" = "xveryverbose"], [extra_logging=\(GNUNET_YES+1\)])
277 AC_DEFINE_UNQUOTED([GNUNET_EXTRA_LOGGING],[$extra_logging],[1 if extra logging is enabled, 2 for very verbose extra logging, 0 otherwise])
279 # should memory poisoning be enabled?
280 AC_MSG_CHECKING(whether to poison freed memory)
281 AC_ARG_ENABLE([poisoning],
282 [AS_HELP_STRING([--enable-poisoning], [enable poisoning of freed memory (good for debugging)])],
283 [enable_poisoning=${enableval}],
285 if test "x$extra_logging" != "xGNUNET_NO"; then
286 enable_poisoning="defaults to yes (extra logging is enabled)"
291 AC_MSG_RESULT($enable_poisoning)
292 if test ! "x$enable_poisoning" = "xno"; then
297 AC_DEFINE_UNQUOTED([ENABLE_POISONING],[$enable_poisoning],[1 if freed memory should be poisoned, 0 otherwise])
299 if test $build = $target
301 AC_MSG_CHECKING([for working HMAC])
303 LIBS="$LIBS $LIBGCRYPT_LIBS"
304 CFLAGS="$CFLAGS $LIBGCRYPT_CFLAGS"
306 [AC_LANG_PROGRAM([#include <gcrypt.h>
307 #include <stdio.h>], [[
310 unsigned char data[] = { 0xbf, 0x16, 0x6e, 0x46, 0x3a, 0x6c, 0xf3, 0x93, 0xa7, 0x72,
311 0x11, 0xa1, 0xdc, 0x0b, 0x07, 0xdb, 0x1a, 0x5e, 0xd9, 0xb9, 0x81, 0xbe,
312 0xea, 0xe4, 0x31, 0x5f, 0x24, 0xff, 0xfe, 0x50, 0x8a, 0xde };
313 unsigned char key[] = { 0xfc, 0x62, 0x76, 0x35 };
314 unsigned char result[] = {0xa2, 0xb, 0x1, 0xd9, 0xc0, 0x8b, 0x5a, 0x12, 0x80,
315 0xd5, 0x50, 0x12, 0x8e, 0xd0, 0x5b, 0xb6, 0x5c, 0x87, 0x24, 0xe2, 0xd0,
316 0xd2, 0xaf, 0x63, 0xae, 0xd1, 0xd6, 0x64, 0x14, 0xe3, 0x6e, 0x61, 0x5b,
317 0xd, 0xba, 0x17, 0x7d, 0xd3, 0x10, 0xb1, 0x37, 0x41, 0x91, 0x7d, 0xeb,
318 0x1, 0x4d, 0x71, 0xe8, 0x59, 0x71, 0x42, 0x8e, 0xd6, 0xf3, 0x29, 0x3b,
319 0x90, 0xf2, 0xd1, 0xaf, 0x65, 0x1e, 0xb3};
321 if (!gcry_check_version (GCRYPT_VERSION))
323 fprintf (stderr, "Version mismatch %s <-> %s \n", gcry_check_version (NULL), GCRYPT_VERSION);
327 gcry_control (GCRYCTL_DISABLE_SECMEM, 0);
328 gcry_control (GCRYCTL_INITIALIZATION_FINISHED, 0);
330 if (gcry_md_open(&mac, GCRY_MD_SHA512, GCRY_MD_FLAG_HMAC) != GPG_ERR_NO_ERROR)
332 fprintf (stderr, "gcry_md_open error\n");
336 gcry_md_setkey (mac, key, sizeof (key));
337 gcry_md_write (mac, data, sizeof (data));
339 if (memcmp(gcry_md_read (mac, 0), result, gcry_md_get_algo_dlen (gcry_md_get_algo (mac))) != 0)
341 fprintf (stderr, "memcmp error\n");
349 [AC_MSG_RESULT([yes])],
354 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.])
358 AC_MSG_FAILURE([HMAC test failed])
362 AC_MSG_FAILURE([libgcrypt header version does not match library version])
366 fi # $build = $target
368 # check for bluetooth library
370 AC_CHECK_LIB(bluetooth, ba2str,[AC_CHECK_HEADER([bluetooth/bluetooth.h],bluetooth=1)])
371 if test "$bluetooth" = 1
373 AM_CONDITIONAL(HAVE_LIBBLUETOOTH, true)
374 AC_DEFINE([HAVE_LIBBLUETOOTH],[1],[Have bluetooth library])
376 AM_CONDITIONAL(HAVE_LIBBLUETOOTH, false)
378 if test "$build_target" = "mingw"
383 # check for libpulse(audio) library
385 AC_CHECK_LIB(pulse,pa_stream_peek,
386 [AC_CHECK_HEADER([pulse/simple.h],pulse=1)])
389 AC_DEFINE([HAVE_PULSE],[1],[Have libpulse(audio) library])
391 if test "$build_target" = "mingw"
396 # check for libopus(audio) library
398 AC_CHECK_LIB(opus,opus_decode_float,
399 [AC_CHECK_HEADER([opus/opus.h],
400 [AC_CHECK_DECL([OPUS_SET_GAIN],[opus=1],[],[[#include <opus/opus.h>]]
406 AC_DEFINE([HAVE_OPUS],[1],[Have libopus library])
410 AC_CHECK_LIB(ogg, ogg_stream_flush_fill,
411 [AC_CHECK_HEADERS([ogg/ogg.h],
412 AM_CONDITIONAL(HAVE_OGG, true)
414 AC_DEFINE(HAVE_OGG,1,[Have ogg]),
415 AM_CONDITIONAL(HAVE_OGG, false)
417 AC_DEFINE(HAVE_OGG,0,[lacking ogg]))],
418 AM_CONDITIONAL(HAVE_OGG, false)
426 [glib-2.0 gobject-2.0 gstreamer-1.0 gstreamer-app-1.0 gstreamer-audio-1.0],
432 AC_MSG_RESULT(not found)
436 if test "x$pulse" != "x1" -o "x$opus" != "x1" -o "x$ogg" != "x1"
438 if test "x$gst" != "x1"
440 conversation_backend=none
441 AM_CONDITIONAL(BUILD_PULSE_HELPERS, false)
442 AM_CONDITIONAL(BUILD_GST_HELPERS, false)
444 conversation_backend=gst
445 AM_CONDITIONAL(BUILD_PULSE_HELPERS, false)
446 AM_CONDITIONAL(BUILD_GST_HELPERS, true)
449 conversation_backend=pulse
450 AM_CONDITIONAL(BUILD_PULSE_HELPERS, true)
451 AM_CONDITIONAL(BUILD_GST_HELPERS, false)
455 LIBGNURL_CHECK_CONFIG(,7.34.0,gnurl=1,gnurl=0)
458 AM_CONDITIONAL(HAVE_LIBGNURL, true)
459 AC_DEFINE([HAVE_LIBGNURL],[1],[Have libgnurl])
461 AM_CONDITIONAL(HAVE_LIBGNURL, false)
465 LIBCURL_CHECK_CONFIG(,7.34.0,[curl=true],[curl=false])
466 if test "x$curl" = xtrue
468 AC_CHECK_HEADERS([curl/curl.h],
469 AC_CHECK_DECLS(CURLINFO_TLS_SESSION,[curl=true],[curl=false],[[#include <curl/curl.h>]]),
471 # need libcurl-gnutls.so, everything else is not acceptable
472 AC_CHECK_LIB([curl-gnutls],[curl_easy_getinfo],,[curl=false])
473 # cURL must support CURLINFO_TLS_SESSION, version >= 7.34
476 if test x$curl = xfalse
478 AM_CONDITIONAL(HAVE_LIBCURL, false)
479 AC_MSG_WARN([GNUnet requires libcurl-gnutls >= 7.34])
481 AM_CONDITIONAL(HAVE_LIBCURL, true)
482 AC_DEFINE([HAVE_LIBCURL],[1],[Have CURL])
487 AC_MSG_CHECKING([if Libidn can be used])
488 AC_ARG_WITH(libidn, AC_HELP_STRING([--with-libidn=[DIR]],
489 [Support IDN (needs GNU Libidn)]),
490 libidn=$withval, libidn=yes)
491 if test "$libidn" != "no"; then
492 if test "$libidn" != "yes"; then
493 LDFLAGS="${LDFLAGS} -L$libidn/lib"
494 CPPFLAGS="${CPPFLAGS} -I$libidn/include"
498 AC_CHECK_HEADER(idna.h,
499 AC_CHECK_LIB(idn, stringprep_check_version,
500 [libidn=yes LIBS="${LIBS} -lidn"], []), [])
501 if test "$libidn" != "yes"; then
502 AC_MSG_FAILURE([GNUnet requires libidn.
503 libidn-1.13 should be sufficient, newer versions work too.])
505 AC_MSG_RESULT($libidn)
511 AC_CHECK_HEADERS([glpk.h],[glpk=true],[gplk=false])
512 # GLPK must support glpk_init_env, version >= 4.43
513 AC_CHECK_LIB([glpk],[glp_init_env],,[gplk=false])
514 # GLPK must support atm MLP presolving, version >= 4.32
515 AC_CHECK_MEMBERS(glp_iocp.presolve,,[gplk=false],[[#include <glpk.h>]])
516 if test x$gplk = xfalse
518 AM_CONDITIONAL(HAVE_LIBGLPK, false)
519 AC_MSG_WARN([GNUnet requires GLPK >= 4.32])
521 AM_CONDITIONAL(HAVE_LIBGLPK, true)
522 AC_DEFINE([HAVE_LIBGLPK],[1],[Have GLPK])
527 AC_CHECK_HEADERS([nss.h],[nss=true],[nss=false])
528 if test x$nss = xfalse
530 AM_CONDITIONAL(HAVE_GLIBCNSS, false)
531 AC_MSG_WARN([No GNU libc nss header, will not build NSS plugin])
533 AM_CONDITIONAL(HAVE_GLIBCNSS, true)
538 # test for kvm and kstat (for CPU stats under BSD/Solaris)
539 AC_CHECK_LIB([kvm],[kvm_open])
540 AC_CHECK_LIB([kstat],[kstat_open])
542 # test for libextractor
544 AC_MSG_CHECKING(for libextractor)
545 AC_ARG_WITH(extractor,
546 [ --with-extractor=PFX base of libextractor installation],
547 [AC_MSG_RESULT([$with_extractor])
548 case $with_extractor in
552 AC_CHECK_HEADERS(extractor.h,
553 AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
557 LDFLAGS="-L$with_extractor/lib $LDFLAGS"
558 CPPFLAGS="-I$with_extractor/include $CPPFLAGS"
559 AC_CHECK_HEADERS(extractor.h,
560 AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
561 EXT_LIB_PATH="-L$with_extractor/lib $EXT_LIB_PATH"
566 [AC_MSG_RESULT([--with-extractor not specified])
567 AC_CHECK_HEADERS(extractor.h,
568 AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
570 if test "$extractor" != 1
572 AC_MSG_ERROR([GNUnet requires libextractor])
577 # Check for libltdl header (#2999)
579 AC_MSG_CHECKING(for libltdl)
581 [ --with-ltdl=PFX base of libltdl installation],
582 [AC_MSG_RESULT([$with_ltdl])
587 AC_CHECK_HEADERS(ltdl.h,
588 AC_CHECK_LIB([ltdl], [lt_dlopenext],
592 LDFLAGS="-L$with_ltdl/lib $LDFLAGS"
593 CPPFLAGS="-I$with_ltdl/include $CPPFLAGS"
594 AC_CHECK_HEADERS(ltdl.h,
595 AC_CHECK_LIB([ltdl], [lt_dlopenext],
596 EXT_LIB_PATH="-L$with_ltdl/lib $EXT_LIB_PATH"
601 [AC_MSG_RESULT([--with-ltdl not specified])
602 AC_CHECK_HEADERS(ltdl.h,
603 AC_CHECK_LIB([ltdl], [lt_dlopenext],
607 AC_MSG_RESULT([libltdl found])
609 AC_MSG_ERROR([GNUnet requires libltdl (from GNU libtool), try installing libltdl-dev])
614 # test for libunistring
616 if test $HAVE_LIBUNISTRING != yes; then
617 AC_MSG_ERROR([GNUnet requires libunistring])
619 if test $gl_libunistring_hexversion -le 2305; then
620 AC_MSG_ERROR([GNUnet requires libunistring >= 0.9.1.1])
627 # Checks for standard header files.
631 # Check for headers that are ALWAYS required
632 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]))
636 # Checks for headers that are only required on some systems or opional (and where we do NOT abort if they are not there)
637 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])
639 # FreeBSD requires something more funky for netinet/in_systm.h and netinet/ip.h...
640 AC_CHECK_HEADERS([sys/types.h netinet/in_systm.h netinet/in.h netinet/ip.h],,,
641 [#ifdef HAVE_SYS_TYPES_H
642 #include <sys/types.h>
644 #ifdef HAVE_NETINET_IN_SYSTM_H
645 #include <netinet/in_systm.h>
647 #ifdef HAVE_NETINET_IN_H
648 #include <netinet/in.h>
652 SAVE_LDFLAGS=$LDFLAGS
653 SAVE_CPPFLAGS=$CPPFLAGS
657 AC_MSG_CHECKING(for SQLite)
659 [ --with-sqlite=PFX base of SQLite installation],
660 [AC_MSG_RESULT("$with_sqlite")
665 AC_CHECK_HEADERS(sqlite3.h,
669 LDFLAGS="-L$with_sqlite/lib $LDFLAGS"
670 CPPFLAGS="-I$with_sqlite/include $CPPFLAGS"
671 AC_CHECK_HEADERS(sqlite3.h,
672 EXT_LIB_PATH="-L$with_sqlite/lib $EXT_LIB_PATH"
673 SQLITE_LDFLAGS="-L$with_sqlite/lib"
674 SQLITE_CPPFLAGS="-I$with_sqlite/include"
676 LDFLAGS=$SAVE_LDFLAGS
677 CPPFLAGS=$SAVE_CPPFLAGS
681 [AC_MSG_RESULT([--with-sqlite not specified])
682 AC_CHECK_HEADERS(sqlite3.h, sqlite=true)])
683 AM_CONDITIONAL(HAVE_SQLITE, test x$sqlite = xtrue)
684 AC_SUBST(SQLITE_CPPFLAGS)
685 AC_SUBST(SQLITE_LDFLAGS)
689 AX_LIB_POSTGRESQL([])
690 if test "$found_postgresql" = "yes"; then
693 AM_CONDITIONAL(HAVE_POSTGRESQL, test x$postgres = xtrue)
696 SAVE_LDFLAGS=$LDFLAGS
697 SAVE_CPPFLAGS=$CPPFLAGS
699 [ --with-zlib[[=DIR]] use libz in DIR],
700 [AS_IF([test "$withval" = "no"],
701 [AC_MSG_ERROR([GNUnet requires zlib])],
702 [test "$withval" != "yes"],
705 CPPFLAGS="${CPPFLAGS} -I$withval/include"
706 LDFLAGS="${LDFLAGS} -L$withval/lib"
709 AC_CHECK_HEADER(zlib.h,
711 [AC_MSG_ERROR([GNUnet requires zlib])])
712 AC_CHECK_LIB(z, compress2,
714 AC_DEFINE([HAVE_ZLIB], [], [Have compression library])
715 if test "x${Z_DIR}" != "x"; then
716 Z_CFLAGS="-I${Z_DIR}/include"
717 Z_LIBS="-L${Z_DIR}/lib -lz"
721 [AC_MSG_ERROR([GNUnet requires zlib])])
725 LDFLAGS=$SAVE_LDFLAGS
726 CPPFLAGS=$SAVE_CPPFLAGS
729 AC_CHECK_TYPES([sigset_t, off_t], [], [], [#include <sys/types.h>])
730 AC_CHECK_TYPES([size_t], [], [], [#include <stdio.h>])
732 if test "$build_target" = "mingw"
734 CYGWIN_MYSQL_MAGIC="#include <mysql/my_global.h>"
740 SAVE_LDFLAGS=$LDFLAGS
741 SAVE_CPPFLAGS=$CPPFLAGS
742 AC_MSG_CHECKING(for mysql)
744 [ --with-mysql=PFX base of MySQL installation],
745 [AC_MSG_RESULT("$with_mysql")
746 if test "$with_mysql" != "no"
748 if test "$with_mysql" != "yes"
750 LDFLAGS="-L$with_mysql/lib -L$with_mysql/lib/mysql $LDFLAGS $ZLIBS"
751 CPPFLAGS="-I$with_mysql/include $CPPFLAGS"
753 AC_CHECK_HEADERS(mysql/mysql.h,
754 AC_CHECK_LIB(mysqlclient, mysql_init,
755 MYSQL_LDFLAGS="-L$with_mysql/lib -L$with_mysql/lib/mysql"
756 MYSQL_CPPFLAGS="-I$with_mysql/include"
758 mysql=true), [], [$CYGWIN_MYSQL_MAGIC])
761 [AC_MSG_RESULT([--with-mysql not specified])
762 if test -d "/usr/lib64/mysql"; then
763 MYSQL_LIBDIR="/usr/lib64/mysql"
764 elif test -d "/usr/lib/mysql"; then
765 MYSQL_LIBDIR="/usr/lib/mysql"
767 MYSQL_LIBDIR="/usr/lib"
769 LDFLAGS="-L$MYSQL_LIBDIR $LDFLAGS $ZLIBS"
770 AC_CHECK_LIB(mysqlclient, mysql_init,
771 [AC_CHECK_HEADERS(mysql/mysql.h,
772 MYSQL_LDFLAGS="-L$MYSQL_LIBDIR"
775 , [], [$CYGWIN_MYSQL_MAGIC])])
778 AC_SUBST(MYSQL_LDFLAGS)
779 AC_SUBST(MYSQL_CPPFLAGS)
781 # additional version check for mysql
782 AC_ARG_ENABLE(mysql-version-check, [ --disable-mysql-version-check do not check MySQL version],, enable_mysql_version_check=yes)
783 if test "$mysql" = "true" -a "x$enable_mysql_version_check" = "xyes"
785 AC_MSG_CHECKING(mysql version)
786 AC_RUN_IFELSE([AC_LANG_PROGRAM(
787 [[$CYGWIN_MYSQL_MAGIC
788 #include <mysql/mysql.h>]],
789 [[if (MYSQL_VERSION_ID < 40100)
794 ],mysql=true,mysql=false)
795 if test "$mysql" = "false"
798 AC_MSG_RESULT([fail, >= 4.1 required])
803 AM_CONDITIONAL(HAVE_MYSQL, test x$mysql = xtrue)
804 AM_CONDITIONAL(HAVE_MYSQLE, test "0" = "1")
807 LDFLAGS=$SAVE_LDFLAGS
808 CPPFLAGS=$SAVE_CPPFLAGS
810 if test "$sqlite" = 0 -a "$mysql" = 0
812 AC_MSG_ERROR([GNUnet requires SQLite or MySQL])
817 AC_MSG_CHECKING([for libmicrohttpd])
818 AC_ARG_WITH(microhttpd,
819 [ --with-microhttpd=PFX base of libmicrohttpd installation],
820 [AC_MSG_RESULT([$with_microhttpd])
821 case $with_microhttpd in
825 AC_CHECK_HEADERS([microhttpd.h],
826 AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
827 AC_CHECK_LIB([microhttpd], [MHD_start_daemon],
828 [AC_MSG_CHECKING([for libmicrohttpd >= 0.9.32])
829 AC_RUN_IFELSE([AC_LANG_SOURCE([
830 #include "$native_srcdir/src/include/platform.h"
831 #include <microhttpd.h>
832 int main () { return MHD_VERSION >= 0x0093200 ? 0 : 1; }
835 lmhd=1],[AC_MSG_RESULT(failed)],lmhd=1)]),
836 [],[#include "$native_srcdir/src/include/platform.h"
837 #include <microhttpd.h>]),,
838 [#include "$native_srcdir/src/include/platform.h"])
841 LDFLAGS="-L$with_microhttpd/lib $LDFLAGS"
842 CPPFLAGS="-I$with_microhttpd/include $CPPFLAGS"
843 AC_CHECK_HEADERS(microhttpd.h,
844 AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
845 AC_CHECK_LIB([microhttpd], [MHD_start_daemon],
846 EXT_LIB_PATH="-L$with_microhttpd/lib $EXT_LIB_PATH"
847 [AC_MSG_CHECKING([for libmicrohttpd >= 0.9.32])
848 AC_RUN_IFELSE([AC_LANG_SOURCE([
849 #include "$native_srcdir/src/include/platform.h"
850 #include <microhttpd.h>
851 int main () { return MHD_VERSION >= 0x0093200 ? 0 : 1; }
854 lmhd=1],[AC_MSG_RESULT(failed)],lmhd=1)]),
855 [],[#include "$native_srcdir/src/include/platform.h"
856 #include <microhttpd.h>]),,
857 [#include "$native_srcdir/src/include/platform.h"])
861 [AC_MSG_RESULT([--with-microhttpd not specified])
862 AC_CHECK_HEADERS([microhttpd.h],
863 AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
864 AC_CHECK_LIB([microhttpd], [MHD_start_daemon],
865 [AC_MSG_CHECKING([for libmicrohttpd >= 0.9.32])
866 AC_RUN_IFELSE([AC_LANG_SOURCE([
867 #include "$native_srcdir/src/include/platform.h"
868 #include <microhttpd.h>
869 int main () { return MHD_VERSION >= 0x0093200 ? 0 : 1; }
872 lmhd=1],[AC_MSG_RESULT(failed)],lmhd=1)]),
873 [],[#include "$native_srcdir/src/include/platform.h"
874 #include <microhttpd.h>]),,
875 [#include "$native_srcdir/src/include/platform.h"])])
876 AM_CONDITIONAL(HAVE_MHD, test x$lmhd = x1)
877 AC_DEFINE_UNQUOTED([HAVE_MHD], $lmhd, [We have libmicrohttpd])
883 # check for python & pexpect (used for some testcases only)
884 AM_PATH_PYTHON([2.6],, [:])
885 AM_CONDITIONAL([HAVE_PYTHON], [test "$PYTHON" != :])
888 AM_GNU_GETTEXT([external])
889 AM_GNU_GETTEXT_VERSION([0.16.1])
894 # Checks for standard typedefs, structures, and compiler characteristics.
903 AC_CHECK_MEMBER([struct sockaddr_in.sin_len],
904 [ AC_DEFINE(HAVE_SOCKADDR_IN_SIN_LEN, 1, [Do we have sockaddr_in.sin_len?])
908 #include <sys/types.h>
909 #include <sys/socket.h>
910 #include <netinet/in.h>
915 # Checks for library functions.
916 AC_FUNC_CLOSEDIR_VOID
918 AC_PROG_GCC_TRADITIONAL
920 AC_FUNC_SELECT_ARGTYPES
930 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])
936 GN_LIBINTL="$LTLIBINTL"
937 AC_ARG_ENABLE(framework, [ --enable-framework enable Mac OS X framework build helpers],enable_framework_build=$enableval)
938 AM_CONDITIONAL(WANT_FRAMEWORK, test x$enable_framework_build = xyes)
939 if test x$enable_framework_build = xyes
941 AC_DEFINE([FRAMEWORK_BUILD], 1, [Build a Mac OS X Framework])
942 GN_INTLINCL='-I$(top_srcdir)/src/intlemu'
943 GN_LIBINTL='$(top_builddir)/src/intlemu/libintlemu.la -framework CoreFoundation'
944 AC_LIB_APPENDTOVAR([CPPFLAGS], [$GN_INTLINCL])
947 GN_LIB_LDFLAGS="-export-dynamic -no-undefined"
948 GN_PLUGIN_LDFLAGS="-export-dynamic -avoid-version -module -no-undefined"
950 AC_SUBST(GN_LIB_LDFLAGS)
951 AC_SUBST(GN_PLUGIN_LDFLAGS)
952 AC_SUBST(GN_INTLINCL)
958 AC_SUBST(EXT_LIB_PATH)
963 AC_SUBST(EXT_LIB_PATH)
967 AC_MSG_CHECKING(for sudo)
969 [ --with-sudo=PATH path to sudo binary (or just yes)],
970 [AC_MSG_RESULT("$with_sudo")
979 SUDO_BINARY=$with_sudo
983 [AC_MSG_RESULT([no])])
984 AC_SUBST(SUDO_BINARY)
985 AM_CONDITIONAL([HAVE_SUDO], [test "x$SUDO_BINARY" != "x" -o -w /])
989 AC_MSG_CHECKING(with nssdir)
991 [ --with-nssdir=PATH where to install NSS plugins],
992 [AC_MSG_RESULT("$with_nssdir")
1003 NSS_DIR=$with_nssdir
1009 if test "x$SUDO_BINARY" != "x" -o -w /
1013 AC_MSG_RESULT([yes, to /lib])
1021 AM_CONDITIONAL([INSTALL_NSS], [test "x$install_nss" != "x0"])
1023 # test for gnunetdns group name
1024 GNUNETDNS_GROUP=gnunetdns
1025 AC_MSG_CHECKING(for gnunetdns group name)
1026 AC_ARG_WITH(gnunetdns,
1027 [ --with-gnunetdns=GRPNAME name for gnunetdns group],
1028 [AC_MSG_RESULT("$with_gnunetdns")
1029 case $with_gnunetdns in
1031 GNUNETDNS_GROUP=gnunet
1034 GNUNETDNS_GROUP=gnunetdns
1037 GNUNETDNS_GROUP=$with_gnunetdns
1041 [AC_MSG_RESULT([gnunetdns])])
1042 AC_SUBST(GNUNETDNS_GROUP)
1049 AC_MSG_CHECKING(for gnutls)
1051 [ --with-gnutls=PFX base of gnutls installation],
1052 [AC_MSG_RESULT([$with_gnutls])
1053 case $with_gnutls in
1057 AC_CHECK_HEADERS([gnutls/abstract.h],
1058 AC_CHECK_LIB([gnutls], [gnutls_priority_set],
1060 AC_CHECK_HEADERS([gnutls/dane.h],
1061 AC_CHECK_LIB([gnutls-dane], [dane_verify_crt_raw],
1065 LDFLAGS="-L$with_gnutls/lib $LDFLAGS"
1066 CPPFLAGS="-I$with_gnutls/include $CPPFLAGS"
1067 AC_CHECK_HEADERS([gnutls/abstract.h],
1068 AC_CHECK_LIB([gnutls], [gnutls_priority_set],
1069 EXT_LIB_PATH="-L$with_gnutls/lib $EXT_LIB_PATH"
1071 AC_CHECK_HEADERS([gnutls/dane.h],
1072 AC_CHECK_LIB([gnutls-dane], [dane_verify_crt_raw],
1077 [AC_MSG_RESULT([--with-gnutls not specified])
1078 AC_CHECK_HEADERS([gnutls/abstract.h],
1079 AC_CHECK_LIB([gnutls], [gnutls_priority_set],
1081 AC_CHECK_HEADERS([gnutls/dane.h],
1082 AC_CHECK_LIB([gnutls-dane], [dane_verify_crt_raw],
1085 AM_CONDITIONAL(HAVE_GNUTLS, test x$gnutls = xtrue)
1086 AC_DEFINE_UNQUOTED([HAVE_GNUTLS], $gnutls, [We have GnuTLS])
1088 AM_CONDITIONAL(HAVE_GNUTLS_DANE, test x$gnutls_dane = x1)
1089 AC_DEFINE_UNQUOTED([HAVE_GNUTLS_DANE], $gnutls_dane, [We have GnuTLS with DANE support])
1092 # Test if we are building for superMUC
1093 AC_MSG_CHECKING(if GNUnet is being configured to run on the SuperMUC)
1094 AC_ARG_ENABLE([supermuc],
1095 [AS_HELP_STRING([--enable-supermuc],
1096 [build GNUnet with support to run on the SuperMUC (default is NO)])],
1097 [if test "x$enable_supermuc" = "xno"
1104 enable_supermuc=no])
1105 AC_MSG_RESULT($enable_SUPERMUC)
1106 AM_CONDITIONAL([ENABLE_SUPERMUC], [test "x$supermuc" = "x1"])
1107 AC_DEFINE_UNQUOTED([ENABLE_SUPERMUC], [$supermuc], [Build with support for SuperMUC])
1109 # Check if NSE has to send timestamp information to testbed logger for
1110 # generating histogram of messages received
1111 AC_MSG_CHECKING(if NSE has to send timestamp information to testbed logger)
1112 AC_ARG_ENABLE([nse-histogram],
1113 [AS_HELP_STRING([--enable-nse-histogram],
1114 [have NSE send timestamp information to testbed logger for generating
1115 histogram of received messages. NOT useful for production (default is
1117 [if test "x$enableval" = "xno"
1124 enable_nse_histogram=no])
1125 AC_MSG_RESULT($enable_nse_histogram)
1126 AM_CONDITIONAL([ENABLE_NSE_HISTOGRAM], [test "x$nse_histogram" = "x1"])
1127 AC_DEFINE_UNQUOTED([ENABLE_NSE_HISTOGRAM], [$nse_histogram],
1128 [have NSE send timestamp information to testbed logger])
1130 # should 'make check' run tests?
1131 AC_MSG_CHECKING(whether to run tests)
1132 AC_ARG_ENABLE([testruns],
1133 [AS_HELP_STRING([--disable-testruns], [disable running tests on make check (default is YES)])],
1134 [enable_tests_run=${enableval}],
1135 [enable_tests_run=yes])
1136 AC_MSG_RESULT($enable_test_run)
1137 AM_CONDITIONAL([ENABLE_TEST_RUN], [test "x$enable_tests_run" = "xyes"])
1140 # should monkey be used when running (certain) services?
1141 AC_MSG_CHECKING(whether to run with monkey)
1142 AC_ARG_ENABLE([monkey],
1143 [AS_HELP_STRING([--enable-monkey], [enable running with monkey])],
1144 [enable_monkey=${enableval}],
1146 AC_MSG_RESULT($enable_monkey)
1147 AM_CONDITIONAL([ENABLE_MONKEY], [test "x$enable_monkey" = "xyes"])
1148 if test "x$enable_monkey" = "xyes"
1150 MONKEYPREFIX="pathologist -d $(eval echo ${datarootdir}/gnunet/gnunet.sqlite) -p 30 --"
1154 AC_SUBST(MONKEYPREFIX)
1157 # should expensive tests be run?
1158 AC_MSG_CHECKING(whether to run expensive tests)
1159 AC_ARG_ENABLE([expensivetests],
1160 [AS_HELP_STRING([--enable-expensivetests], [enable running expensive testcases])],
1161 [enable_expensive=${enableval}],
1162 [enable_expensive=no])
1163 AC_MSG_RESULT($enable_expensive)
1164 AM_CONDITIONAL([HAVE_EXPENSIVE_TESTS], [test "x$enable_expensive" = "xyes"])
1166 # should ports be open for Java services?
1167 AC_MSG_CHECKING(whether to enable ports for gnunet-java)
1168 AC_ARG_ENABLE([javaports],
1169 [AS_HELP_STRING([--enable-javaports], [use non-zero ports for services with Java bindings (default is NO)])],
1170 [enable_java_ports=${enableval}],
1171 [enable_java_ports=no])
1172 AC_MSG_RESULT($enable_java_ports)
1173 if test "x$enable_java_ports" = "xyes"
1177 JAVAPORT="$UNIXONLY"
1181 # should benchmarks be run?
1182 AC_MSG_CHECKING(whether to run benchmarks during make check)
1183 AC_ARG_ENABLE([benchmarks],
1184 [AS_HELP_STRING([--enable-benchmarks], [enable running benchmarks during make check])],
1185 [enable_benchmarks=${enableval}],
1186 [enable_benchmarks=no])
1187 AC_MSG_RESULT($enable_benchmarks)
1188 AM_CONDITIONAL([HAVE_BENCHMARKS], [test "x$enable_benchmarks" = "xyes"])
1190 # should gnunet-testing be compiled
1191 AC_MSG_CHECKING(wether to compile gnunet-testing)
1192 AC_ARG_ENABLE([testing],
1193 [AS_HELP_STRING([--disable-testing], [do not build gnunet-testing])],
1194 [enable_testing=${enableval}],
1195 [enable_testing=yes])
1196 AC_MSG_RESULT($enable_testing)
1197 AM_CONDITIONAL([HAVE_TESTING], [test "x$enable_testing" = "xyes"])
1199 # should experimental code be compiled (code that may not yet compile)?
1200 AC_MSG_CHECKING(whether to compile experimental code)
1201 AC_ARG_ENABLE([experimental],
1202 [AS_HELP_STRING([--enable-experimental], [enable compiling experimental code])],
1203 [enable_experimental=${enableval}],
1204 [enable_experimental=no])
1205 AC_MSG_RESULT($enable_experimental)
1206 AM_CONDITIONAL([HAVE_EXPERIMENTAL], [test "x$enable_experimental" = "xyes"])
1208 # should malicious code be compiled (should only be used for testing)?
1209 AC_MSG_CHECKING(whether to compile malicious code)
1210 AC_ARG_ENABLE([malicious],
1211 [AS_HELP_STRING([--enable-malicious], [enable compiling malicious code])],
1212 [if test "x$enableval" = "xno"
1219 enable_malicious=no])
1220 AC_MSG_RESULT($enable_malicious)
1221 AM_CONDITIONAL([ENABLE_MALICIOUS], [1=$malicious])
1222 AC_DEFINE_UNQUOTED([ENABLE_MALICIOUS], [$malicious],
1223 [enable compilation of malicious code])
1225 # should services be started by default when a peer starts? Some services may
1226 # choose to never start by default and it is upto the service/module developer to
1227 # decide it by having "AUTOSTART = NO" instead of "AUTOSTART = @AUTOSTART" in
1228 # the service/module's conf.in file.
1230 AC_MSG_CHECKING(whether to auto-start peer's services by default)
1231 AC_ARG_ENABLE([autostart],
1232 [AS_HELP_STRING([--disable-autostart], [do not start peer's services by default])],
1233 [enable_autostart=${enableval}
1234 if test "x$enable_autostart" == "xno"
1239 [enable_autostart=yes])
1240 AC_MSG_RESULT($enable_autostart)
1241 #AM_CONDITIONAL([HAVE_AUTOSTART], [test "x$enable_autostart" = "xyes"])
1244 # should memory statistics be kept (very expensive CPU-wise!)
1245 AC_MSG_CHECKING(whether to create expensive statistics on memory use)
1246 AC_ARG_ENABLE([heapstats],
1247 [AS_HELP_STRING([--enable-heapstats], [enable expensive heap statistics])],
1248 [enable_heapstats=1],
1249 [enable_heapstats=0])
1250 AC_MSG_RESULT($enable_heapstats)
1251 AC_DEFINE_UNQUOTED([ENABLE_HEAP_STATISTICS],$enable_heapstats,[enable expensive heap statistics])
1253 # should code be enabled that works around missing OS functionality on Windows?
1254 # used for test cases
1255 if test $build_target = "mingw"
1261 [#include <ws2tcpip.h>
1263 int s = socket (0, 0, 0);])
1265 AC_DEFINE_UNQUOTED([HAVE_SOCKET],1,[Define this if socket() is available])
1267 AC_DEFINE_UNQUOTED([HAVE_SOCKET],0,[Define this if socket() is available])
1272 [#include <ws2tcpip.h>
1274 int s = select (0, NULL, NULL, NULL, NULL);])
1276 AC_DEFINE_UNQUOTED([HAVE_SELECT],1,[Define this if select() is available])
1278 AC_DEFINE_UNQUOTED([HAVE_SELECT],0,[Define this if select() is available])
1283 [#include <ws2tcpip.h>
1286 char *s = inet_ntoa (i);])
1288 AC_DEFINE_UNQUOTED([HAVE_INET_NTOA],1,[Define this if inet_ntoa() is available])
1290 AC_DEFINE_UNQUOTED([HAVE_INET_NTOA],0,[Define this if inet_ntoa() is available])
1295 [#include <ws2tcpip.h>
1297 int s = getnameinfo (NULL, 0, NULL, 0, NULL, 0, 0);])
1299 AC_DEFINE_UNQUOTED([HAVE_GETNAMEINFO],1,[Define this if getnameinfo() is available])
1301 AC_DEFINE_UNQUOTED([HAVE_GETNAMEINFO],0,[Define this if getnameinfo() is available])
1306 [#include <ws2tcpip.h>
1308 int s = gethostname (NULL, 0);])
1310 AC_DEFINE_UNQUOTED([HAVE_GETHOSTNAME],1,[Define this if gethostname() is available])
1312 AC_DEFINE_UNQUOTED([HAVE_GETHOSTNAME],0,[Define this if gethostname() is available])
1317 [#include <ws2tcpip.h>
1319 void *s = gethostbyname (NULL);])
1321 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYNAME],1,[Define this if gethostbyname() is available])
1323 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYNAME],0,[Define this if gethostbyname() is available])
1328 [#include <ws2tcpip.h>
1330 void *s = gethostbyaddr (NULL, 0, 0);])
1332 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYADDR],1,[Define this if gethostbyaddr() is available])
1334 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYADDR],0,[Define this if gethostbyaddr() is available])
1339 [#include <ws2tcpip.h>
1341 int s = getaddrinfo (NULL, NULL, NULL, NULL);])
1343 AC_DEFINE_UNQUOTED([HAVE_GETADDRINFO],1,[Define this if getaddrinfo() is available])
1345 AC_DEFINE_UNQUOTED([HAVE_GETADDRINFO],1,[Define this if getaddrinfo() is available])
1349 AC_MSG_CHECKING(whether to enable windows workarounds)
1350 AC_ARG_ENABLE([windows_workarounds],
1351 [AS_HELP_STRING([--enable-windows_workarounds], [enable workarounds used on Windows (only useful for test cases)])],
1352 [enable_workarounds=${enableval}],
1353 [enable_workarounds=no])
1354 AC_MSG_RESULT($enable_workarounds)
1355 if test x$enable_windows_workarounds = "xyes"
1362 AC_DEFINE_UNQUOTED([ENABLE_WINDOWS_WORKAROUNDS], $workarounds, [enable workarounds used on Windows (only useful for test cases)])
1365 AC_MSG_CHECKING(whether to compile with support for code coverage analysis)
1366 AC_ARG_ENABLE([coverage],
1367 AS_HELP_STRING([--enable-coverage],
1368 [compile the library with code coverage support]),
1369 [use_gcov=${enableval}],
1371 AC_MSG_RESULT($use_gcov)
1372 AM_CONDITIONAL([USE_COVERAGE], [test "x$use_gcov" = "xyes"])
1376 AC_PATH_PROG(svnversioncommand, svnversion)
1377 AC_PATH_PROG(gitcommand, git)
1378 AC_MSG_CHECKING(for source being under a VCS)
1381 AS_IF([test ! "X$svnversioncommand" = "X"],
1383 svn_version=$(cd $srcdir ; $svnversioncommand -n 2>/dev/null)
1385 AS_IF([test ! "X$gitcommand" = "X"],
1387 gitsvn_version=$(cd $srcdir ; git log -1 2>/dev/null | grep "git-svn-id" | sed -e 's/.*@\([[0-9]]\+\) .*/\1/')
1389 AS_IF([test "X$svn_version" = "X" -o "X$svn_version" = "Xexported" -o "X$svn_version" = "XUnversioned directory"],
1391 AS_IF([test "X$gitsvn_version" = "X"],
1394 vcs_version="\"release\""
1397 vcs_name="yes, git-svn"
1398 vcs_version="\"svn-r$gitsvn_version\""
1403 vcs_version="\"svn-r$svn_version\""
1405 AC_MSG_RESULT($vcs_name)
1407 AC_MSG_CHECKING(VCS version)
1408 AC_MSG_RESULT($vcs_version)
1409 AC_DEFINE_UNQUOTED(VCS_VERSION, [$vcs_version], [VCS revision/hash or tarball version])
1416 doc/doxygen/Makefile
1424 src/ats-tool/Makefile
1425 src/ats-tests/Makefile
1428 src/cadet/cadet.conf
1431 src/consensus/Makefile
1432 src/consensus/consensus.conf
1433 src/conversation/Makefile
1434 src/conversation/conversation.conf
1435 src/datacache/Makefile
1436 src/datastore/Makefile
1437 src/datastore/datastore.conf
1446 src/experimentation/Makefile
1447 src/experimentation/experimentation.conf
1448 src/fragmentation/Makefile
1453 src/gns/nss/Makefile
1454 src/gnsrecord/Makefile
1456 src/identity/Makefile
1457 src/identity/identity.conf
1458 src/include/Makefile
1459 src/integration-tests/Makefile
1460 src/hostlist/Makefile
1461 src/multicast/Makefile
1462 src/multicast/multicast.conf
1464 src/namecache/Makefile
1465 src/namecache/namecache.conf
1466 src/namestore/Makefile
1467 src/namestore/namestore.conf
1471 src/peerinfo/Makefile
1472 src/peerinfo/peerinfo.conf
1473 src/peerinfo-tool/Makefile
1474 src/peerstore/Makefile
1475 src/peerstore/peerstore.conf
1476 src/postgres/Makefile
1479 src/psycstore/Makefile
1480 src/psycstore/psycstore.conf
1483 src/regex/regex.conf
1484 src/revocation/Makefile
1485 src/revocation/revocation.conf
1486 src/secretsharing/Makefile
1487 src/secretsharing/secretsharing.conf
1489 src/sensor/sensor.conf
1490 src/sensordashboard/Makefile
1491 src/sensordashboard/sensordashboard.conf
1492 src/scalarproduct/Makefile
1493 src/scalarproduct/scalarproduct.conf
1497 src/social/social.conf
1498 src/statistics/Makefile
1499 src/statistics/statistics.conf
1500 src/template/Makefile
1501 src/testbed/Makefile
1502 src/testbed/testbed.conf
1503 src/testing/Makefile
1504 src/topology/Makefile
1505 src/transport/Makefile
1506 src/transport/transport.conf
1509 src/util/resolver.conf
1513 pkgconfig/gnunetarm.pc
1514 pkgconfig/gnunetats.pc
1515 pkgconfig/gnunetblock.pc
1516 pkgconfig/gnunetcadet.pc
1517 pkgconfig/gnunetconsensus.pc
1518 pkgconfig/gnunetconversation.pc
1519 pkgconfig/gnunetcore.pc
1520 pkgconfig/gnunetdatacache.pc
1521 pkgconfig/gnunetdatastore.pc
1522 pkgconfig/gnunetdht.pc
1523 pkgconfig/gnunetdns.pc
1524 pkgconfig/gnunetdnsparser.pc
1525 pkgconfig/gnunetdnsstub.pc
1526 pkgconfig/gnunetdv.pc
1527 pkgconfig/gnunetenv.pc
1528 pkgconfig/gnunetfragmentation.pc
1529 pkgconfig/gnunetfs.pc
1530 pkgconfig/gnunetgns.pc
1531 pkgconfig/gnunethello.pc
1532 pkgconfig/gnunetidentity.pc
1533 pkgconfig/gnunetmicrophone.pc
1534 pkgconfig/gnunetmulticast.pc
1535 pkgconfig/gnunetmysql.pc
1536 pkgconfig/gnunetnamestore.pc
1537 pkgconfig/gnunetnat.pc
1538 pkgconfig/gnunetnse.pc
1539 pkgconfig/gnunetpeerinfo.pc
1540 pkgconfig/gnunetpostgres.pc
1541 pkgconfig/gnunetpsyc.pc
1542 pkgconfig/gnunetpsycstore.pc
1543 pkgconfig/gnunetregex.pc
1544 pkgconfig/gnunetrevocation.pc
1545 pkgconfig/gnunetscalarproduct.pc
1546 pkgconfig/gnunetset.pc
1547 pkgconfig/gnunetsocial.pc
1548 pkgconfig/gnunetspeaker.pc
1549 pkgconfig/gnunetstatistics.pc
1550 pkgconfig/gnunettestbed.pc
1551 pkgconfig/gnunettesting.pc
1552 pkgconfig/gnunettransport.pc
1553 pkgconfig/gnunettun.pc
1554 pkgconfig/gnunetutil.pc
1555 pkgconfig/gnunetvpn.pc
1561 # warn user if mysql found but not used due to version
1562 if test "$mysqlfail" = "true"
1564 AC_MSG_NOTICE([NOTICE: MySQL found, but too old. MySQL support will not be compiled.])
1568 if test "x$sqlite" = "x0"
1570 AC_MSG_ERROR([ERROR: sqlite3 not found, but sqlite3 is required.])
1574 if test "x$gnurl" = "x0"
1576 if test "x$curl" = "x0"
1578 AC_MSG_NOTICE([NOTICE: libgnurl not found. http client support will not be compiled.])
1579 AC_MSG_WARN([ERROR: libgnurl not found. hostlist daemon will not be compiled, and you probably WANT the hostlist daemon])
1581 AC_MSG_NOTICE([WARNING: libgnurl not found, trying to use libcurl-gnutls instead.])
1587 if test "x$bluetooth" = "x0"
1589 AC_MSG_NOTICE([NOTICE: bluetooth library not found. bluetooth support will not be compiled.])
1593 if test x$gnutls != xtrue
1595 AC_MSG_NOTICE([NOTICE: GnuTLS not found, gnunet-gns-proxy will not be built])
1597 if test "x$gnutls_dane" != "x1"
1599 AC_MSG_NOTICE([NOTICE: GnuTLS has no DANE support, DANE validation will not be possible])
1604 if test "x$enable_java_ports" = "xyes"
1606 AC_MSG_NOTICE([NOTICE: opening ports for gnunet-java bindings by default.])
1610 if test "x$lmhd" != "x1"
1612 AC_MSG_NOTICE([NOTICE: libmicrohttpd not found, http transport will not be installed.])
1616 if test "x$conversation_backend" == "xnone"
1618 if test "x$pulse" != "x1"
1620 AC_MSG_NOTICE([NOTICE: libpulse(audio) not found, conversation will not be built.])
1622 if test "x$opus" != "x1"
1624 AC_MSG_NOTICE([NOTICE: libopus not found, conversation will not be built.])
1626 if test "x$gst" != "x1"
1628 AC_MSG_NOTICE([NOTICE: GStreamer not found, conversation will not be built.])
1633 AC_MSG_NOTICE([NOTICE: Database support is set to MySQL: $mysql, SQLite: $sqlite, Postgres: $postgres])
1635 if test "$enable_framework_build" = "yes"
1637 AC_MSG_NOTICE([NOTICE: Mac OS X framework build enabled.])
1640 if test "x$SUDO_BINARY" = "x" -a ! -w /
1642 AC_MSG_NOTICE([NOTICE: --with-sudo not specified and not running as 'root', will not install GNS NSS library])
1646 AC_MSG_NOTICE([********************************************
1647 Please make sure NOW that you have created a user and group 'gnunet'
1648 and additionally a group 'gnunetdns':
1652 Make sure that '/var/lib/gnunet' is owned (and writable) by user
1653 'gnunet'. Then, you can compile GNUnet with
1656 After that, run (if necessary as 'root')
1658 to install everything.
1660 Each GNUnet user should be added to the 'gnunet' group (may
1661 require fresh login to come into effect):
1662 adduser USERNAME gnunet
1663 (run the above command as root once for each of your users, replacing
1664 "USERNAME" with the respective login names). If you have a global IP
1665 address, no further configuration is required.
1667 Optionally, download and compile gnunet-gtk to get a GUI for
1668 file-sharing and configuration. This is particularly recommended
1669 if your network setup is non-trivial, as gnunet-setup can be
1670 used to test in the GUI if your network configuration is working.
1671 gnunet-setup should be run as the "gnunet" user under X. As it
1672 does very little with the network, running it as "root" is likely
1673 also harmless. You can also run it as a normal user, but then
1674 you have to copy ~/.gnunet/gnunet.conf" over to the "gnunet" user's
1675 home directory in the end.
1677 Once you have configured your peer, run (as the 'gnunet' user)
1679 to start the peer. You can then run the various GNUnet-tools as
1680 your "normal" user (who should only be in the group 'gnunet').
1681 ********************************************])