1 # This file is part of GNUnet.
2 # (C) 2001--2012 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 2, 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.9.3],[bug-gnunet@gnu.org])
31 AM_INIT_AUTOMAKE([gnunet], [0.9.3])
32 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
33 AC_CONFIG_HEADERS([gnunet_config.h])
34 AH_TOP([#define _GNU_SOURCE 1])
45 LT_INIT([disable-static dlopen win32-dll])
56 if test "$enable_shared" = "no"
58 AC_MSG_ERROR([GNUnet only works with shared libraries. Sorry.])
61 CFLAGS="-Wall $CFLAGS"
62 # use '-fno-strict-aliasing', but only if the compiler can take it
63 if gcc -fno-strict-aliasing -S -o /dev/null -xc /dev/null >/dev/null 2>&1;
65 CFLAGS="-fno-strict-aliasing $CFLAGS"
68 # Use Linux interface name unless the OS has a different preference
69 DEFAULT_INTERFACE="\"eth0\""
71 funcstocheck="getnameinfo gethostname gethostbyname gethostbyaddr getaddrinfo"
73 # Srcdir in a form that native compiler understands (i.e. DOS path on W32)
78 *darwin* | *rhapsody* | *macosx*)
79 AC_DEFINE_UNQUOTED(DARWIN,1,[This is an Apple Darwin system])
80 CPPFLAGS="-D_APPLE_C_SOURCE $CPPFLAGS"
81 CFLAGS="-no-cpp-precomp -fno-common $CFLAGS"
82 AC_MSG_WARN([The VPN application cannot be compiled on your OS])
84 DEFAULT_INTERFACE="\"en0\""
90 AC_DEFINE_UNQUOTED(LINUX,1,[This is a Linux kernel])
98 AC_DEFINE_UNQUOTED(SOMEBSD,1,[This is a BSD system])
99 AC_DEFINE_UNQUOTED(FREEBSD,1,[This is a FreeBSD system])
100 CFLAGS="-D_THREAD_SAFE $CFLAGS"
101 build_target="freebsd"
107 AC_DEFINE_UNQUOTED(SOMEBSD,1,[This is a BSD system])
108 AC_DEFINE_UNQUOTED(OPENBSD,1,[This is an OpenBSD system])
109 LIBS=`echo $LIBS | sed -e "s/-ldl//"`
110 build_target="openbsd"
116 AC_DEFINE_UNQUOTED(SOMEBSD,1,[This is a BSD system])
117 AC_DEFINE_UNQUOTED(NETBSD,1,[This is a NetBSD system])
123 AC_DEFINE_UNQUOTED(SOLARIS,1,[This is a Solaris system])
124 AC_DEFINE_UNQUOTED(_REENTRANT,1,[Need with solaris or errno doesnt work])
125 AC_CHECK_LIB(resolv, res_init)
126 AC_CHECK_LIB(rt, nanosleep)
127 build_target="solaris"
133 AC_DEFINE_UNQUOTED(LINUX,1,[This is a Linux kernel])
134 CFLAGS="-D_REENTRANT -fPIC -pipe $CFLAGS"
141 AC_DEFINE_UNQUOTED(CYGWIN,1,[This is a Cygwin system])
142 AC_DEFINE_UNQUOTED(WINDOWS,1,[This is a Windows system])
143 AC_CHECK_LIB(intl, gettext)
144 LDFLAGS="$LDFLAGS -no-undefined"
145 CFLAGS="-mms-bitfields $CFLAGS"
146 build_target="cygwin"
153 AC_DEFINE_UNQUOTED(MINGW,1,[This is a MinGW system])
154 AC_DEFINE_UNQUOTED(WINDOWS,1,[This is a Windows system])
155 AC_DEFINE_UNQUOTED(_WIN32,1,[This is a Windows system])
156 AC_CHECK_LIB(intl, gettext)
157 LDFLAGS="$LDFLAGS -Wl,-no-undefined -Wl,--export-all-symbols"
158 LIBS="$LIBS -lws2_32 -lplibc -lgnurx -lole32"
159 CFLAGS="-mms-bitfields $CFLAGS"
160 CPPFLAGS="-D_WIN32_WINNT=0x0501 -DHAVE_STAT64=1 $CPPFLAGS"
167 native_srcdir=$(cd $srcdir; pwd -W)
170 AC_DEFINE_UNQUOTED(GNU,1,[This is a GNU system])
175 AC_MSG_RESULT(Unrecognised OS $host_os)
176 AC_DEFINE_UNQUOTED(OTHEROS,1,[Some strange OS])
180 AC_DEFINE_UNQUOTED([GNUNET_DEFAULT_INTERFACE], $DEFAULT_INTERFACE, [This should be the default choice for the name of the first network interface])
181 AC_SUBST(DEFAULT_INTERFACE)
183 # Disable TCP-based IPC on systems that support UNIX domain
184 # sockets in default configuratin:
188 AC_MSG_CHECKING([for build target])
189 AM_CONDITIONAL(DARWIN, test "$build_target" = "darwin")
190 AM_CONDITIONAL(CYGWIN, test "$build_target" = "cygwin")
191 AM_CONDITIONAL(MINGW, test "$build_target" = "mingw")
192 AM_CONDITIONAL(SOLARIS, test "$build_target" = "solaris")
193 AM_CONDITIONAL(XFREEBSD, test "$build_target" = "freebsd")
194 AM_CONDITIONAL(OPENBSD, test "$build_target" = "openbsd")
195 AM_CONDITIONAL(LINUX, test "$build_target" = "linux")
196 AM_CONDITIONAL(GNU, test "$build_target" = "gnu")
198 AC_MSG_RESULT([$build_target])
199 AC_SUBST(build_target)
200 AM_CONDITIONAL([am__fastdepOBJC], false)
201 AC_UNALIGNED_64_ACCESS
203 # some other checks for standard libs
204 AC_SEARCH_LIBS([gethostbyname], [nsl ws2_32])
205 AC_CHECK_LIB(socket, socket)
207 AC_CHECK_LIB(c, getloadavg, AC_DEFINE(HAVE_GETLOADAVG,1,[getloadavg supported]))
209 # 'save' libs; only those libs found so far will be
210 # linked against _everywhere_. For the others, we
211 # will be more selective!
214 # libgnurx (regex library for W32)
216 AC_CHECK_LIB(gnurx, regexec, gnurx=1)
217 if test "x$gnurx" = "x0" -a "x$build_target" = "xmingw"
219 AC_MSG_ERROR([on W32 GNUnet needs libgnurx])
225 NEED_LIBGCRYPT_VERSION=1.4.2
228 AM_PATH_LIBGCRYPT("$NEED_LIBGCRYPT_API:$NEED_LIBGCRYPT_VERSION", gcrypt=1)
229 AC_CHECK_DECLS([gcry_mpi_lshift], [], [], [[#include <gcrypt.h>]])
235 *** You need libgcrypt to build this program.
236 ** This library is for example available at
237 *** ftp://ftp.gnupg.org/gcrypt/libgcrypt/
238 *** (at least version $NEED_LIBGCRYPT_VERSION (API $NEED_LIBGCRYPT_API)
242 AC_DEFINE_UNQUOTED([NEED_LIBGCRYPT_VERSION], "$NEED_LIBGCRYPT_VERSION", [required libgcrypt version])
244 # Adam shostack suggests the following for Windows:
245 # -D_FORTIFY_SOURCE=2 -fstack-protector-all
246 AC_ARG_ENABLE(gcc-hardening,
247 AS_HELP_STRING(--enable-gcc-hardening, enable compiler security checks),
248 [if test x$enableval = xyes; then
249 CFLAGS="$CFLAGS -D_FORTIFY_SOURCE=2 -fstack-protector-all"
250 CFLAGS="$CFLAGS -fwrapv -fPIE -Wstack-protector"
251 CFLAGS="$CFLAGS --param ssp-buffer-size=1"
252 LDFLAGS="$LDFLAGS -pie"
256 # Linker hardening options
257 # Currently these options are ELF specific - you can't use this with MacOSX
258 AC_ARG_ENABLE(linker-hardening,
259 AS_HELP_STRING(--enable-linker-hardening, enable linker security fixups),
260 [if test x$enableval = xyes; then
261 LDFLAGS="$LDFLAGS -z relro -z now"
265 extra_logging=GNUNET_NO
266 AC_ARG_ENABLE([logging],
267 AS_HELP_STRING([--enable-logging@<:@=value@:>@],[Enable logging calls. Possible values: yes,no,verbose,veryverbose ('yes' is the default)]),
268 [AS_IF([test "x$enableval" = "xyes"], [],
269 [test "x$enableval" = "xno"], [AC_DEFINE([GNUNET_CULL_LOGGING],[],[Define to cull all logging calls])],
270 [test "x$enableval" = "xverbose"], [extra_logging=GNUNET_YES]
271 [test "x$enableval" = "xveryverbose"], [extra_logging=\(GNUNET_YES+1\)])
273 AC_DEFINE_UNQUOTED([GNUNET_EXTRA_LOGGING],[$extra_logging],[1 if extra logging is enabled, 2 for very verbose extra logging, 0 otherwise])
275 # should memory poisoning be enabled?
276 AC_MSG_CHECKING(whether to poison freed memory)
277 AC_ARG_ENABLE([poisoning],
278 [AS_HELP_STRING([--enable-poisoning], [enable poisoning of freed memory (good for debugging)])],
279 [enable_poisoning=${enableval}],
281 if test "x$extra_logging" != "xGNUNET_NO"; then
282 enable_poisoning="defaults to yes (extra logging is enabled)"
287 AC_MSG_RESULT($enable_poisoning)
288 if test ! "x$enable_poisoning" = "xno"; then
293 AC_DEFINE_UNQUOTED([ENABLE_POISONING],[$enable_poisoning],[1 if freed memory should be poisoned, 0 otherwise])
295 if test $build = $target
297 AC_MSG_CHECKING([for working HMAC])
299 LIBS="$LIBS $LIBGCRYPT_LIBS"
300 CFLAGS="$CFLAGS $LIBGCRYPT_CFLAGS"
302 [AC_LANG_PROGRAM([#include <gcrypt.h>
303 #include <stdio.h>], [[
306 unsigned char data[] = { 0xbf, 0x16, 0x6e, 0x46, 0x3a, 0x6c, 0xf3, 0x93, 0xa7, 0x72,
307 0x11, 0xa1, 0xdc, 0x0b, 0x07, 0xdb, 0x1a, 0x5e, 0xd9, 0xb9, 0x81, 0xbe,
308 0xea, 0xe4, 0x31, 0x5f, 0x24, 0xff, 0xfe, 0x50, 0x8a, 0xde };
309 unsigned char key[] = { 0xfc, 0x62, 0x76, 0x35 };
310 unsigned char result[] = {0xa2, 0xb, 0x1, 0xd9, 0xc0, 0x8b, 0x5a, 0x12, 0x80,
311 0xd5, 0x50, 0x12, 0x8e, 0xd0, 0x5b, 0xb6, 0x5c, 0x87, 0x24, 0xe2, 0xd0,
312 0xd2, 0xaf, 0x63, 0xae, 0xd1, 0xd6, 0x64, 0x14, 0xe3, 0x6e, 0x61, 0x5b,
313 0xd, 0xba, 0x17, 0x7d, 0xd3, 0x10, 0xb1, 0x37, 0x41, 0x91, 0x7d, 0xeb,
314 0x1, 0x4d, 0x71, 0xe8, 0x59, 0x71, 0x42, 0x8e, 0xd6, 0xf3, 0x29, 0x3b,
315 0x90, 0xf2, 0xd1, 0xaf, 0x65, 0x1e, 0xb3};
317 if (!gcry_check_version (GCRYPT_VERSION))
319 fprintf (stderr, "Version mismatch %s <-> %s \n", gcry_check_version (NULL), GCRYPT_VERSION);
323 gcry_control (GCRYCTL_DISABLE_SECMEM, 0);
324 gcry_control (GCRYCTL_INITIALIZATION_FINISHED, 0);
326 if (gcry_md_open(&mac, GCRY_MD_SHA512, GCRY_MD_FLAG_HMAC) != GPG_ERR_NO_ERROR)
328 fprintf (stderr, "gcry_md_open error\n");
332 gcry_md_setkey (mac, key, sizeof (key));
333 gcry_md_write (mac, data, sizeof (data));
335 if (memcmp(gcry_md_read (mac, 0), result, gcry_md_get_algo_dlen (gcry_md_get_algo (mac))) != 0)
337 fprintf (stderr, "memcmp error\n");
345 [AC_MSG_RESULT([yes])],
350 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.])
354 AC_MSG_FAILURE([HMAC test failed])
358 AC_MSG_FAILURE([libgcrypt header version does not match library version])
362 fi # $build = $target
365 LIBCURL_CHECK_CONFIG(,7.21.3,curl=1,curl=0)
368 AM_CONDITIONAL(HAVE_LIBCURL, true)
369 AC_DEFINE([HAVE_LIBCURL],[1],[Have libcurl])
371 AM_CONDITIONAL(HAVE_LIBCURL, false)
377 AC_CHECK_HEADERS([glpk.h],[glpk=true],[gplk=false])
378 AC_CHECK_LIB([glpk],[glp_create_prob],,[gplk=false])
379 # GLPK must support atm MLP presolving, version >= 4.32
380 AC_CHECK_MEMBERS(glp_iocp.presolve,,[gplk=false],[[#include <glpk.h>]])
381 if test x$gplk = xfalse
383 AM_CONDITIONAL(HAVE_LIBGLPK, false)
384 AC_MSG_WARN([GNUnet requires GLPK >= 4.32])
386 AM_CONDITIONAL(HAVE_LIBGLPK, true)
387 AC_DEFINE([HAVE_LIBGLPK],[1],[Have GLPK])
392 AC_CHECK_HEADERS([nss.h],[nss=true],[nss=false])
393 if test x$nss = xfalse
395 AM_CONDITIONAL(HAVE_GLIBCNSS, false)
396 AC_MSG_WARN([No GNU libc nss header, will not build NSS plugin])
398 AM_CONDITIONAL(HAVE_GLIBCNSS, true)
403 # test for kvm and kstat (for CPU stats under BSD/Solaris)
404 AC_CHECK_LIB([kvm],[kvm_open])
405 AC_CHECK_LIB([kstat],[kstat_open])
407 # test for libextractor
409 AC_MSG_CHECKING(for libextractor)
410 AC_ARG_WITH(extractor,
411 [ --with-extractor=PFX base of libextractor installation],
412 [AC_MSG_RESULT([$with_extractor])
413 case $with_extractor in
417 AC_CHECK_HEADERS(extractor.h,
418 AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
422 LDFLAGS="-L$with_extractor/lib $LDFLAGS"
423 CPPFLAGS="-I$with_extractor/include $CPPFLAGS"
424 AC_CHECK_HEADERS(extractor.h,
425 AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
426 EXT_LIB_PATH="-L$with_extractor/lib $EXT_LIB_PATH"
431 [AC_MSG_RESULT([--with-extractor not specified])
432 AC_CHECK_HEADERS(extractor.h,
433 AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
435 if test "$extractor" != 1
437 AC_MSG_ERROR([GNUnet requires libextractor])
442 # test for libunistring
444 if test $HAVE_LIBUNISTRING != yes; then
445 AC_MSG_ERROR([GNUnet requires libunistring])
447 if test $gl_libunistring_hexversion -le 2305; then
448 AC_MSG_ERROR([GNUnet requires libunistring >= 0.9.1.1])
455 # Checks for standard header files.
459 # Check for headers that are ALWAYS required
460 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]))
462 # Checks for headers that are only required on some systems or opional (and where we do NOT abort if they are not there)
463 AC_CHECK_HEADERS([malloc.h malloc/malloc.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 netinet/in_systm.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 endian.h sys/endian.h execinfo.h])
465 SAVE_LDFLAGS=$LDFLAGS
466 SAVE_CPPFLAGS=$CPPFLAGS
470 AC_MSG_CHECKING(for SQLite)
472 [ --with-sqlite=PFX base of SQLite installation],
473 [AC_MSG_RESULT("$with_sqlite")
478 AC_CHECK_HEADERS(sqlite3.h,
482 LDFLAGS="-L$with_sqlite/lib $LDFLAGS"
483 CPPFLAGS="-I$with_sqlite/include $CPPFLAGS"
484 AC_CHECK_HEADERS(sqlite3.h,
485 EXT_LIB_PATH="-L$with_sqlite/lib $EXT_LIB_PATH"
486 SQLITE_LDFLAGS="-L$with_sqlite/lib"
487 SQLITE_CPPFLAGS="-I$with_sqlite/include"
489 LDFLAGS=$SAVE_LDFLAGS
490 CPPFLAGS=$SAVE_CPPFLAGS
494 [AC_MSG_RESULT([--with-sqlite not specified])
495 AC_CHECK_HEADERS(sqlite3.h, sqlite=true)])
496 AM_CONDITIONAL(HAVE_SQLITE, test x$sqlite = xtrue)
497 AC_SUBST(SQLITE_CPPFLAGS)
498 AC_SUBST(SQLITE_LDFLAGS)
502 AC_MSG_CHECKING(for postgres)
503 AC_ARG_WITH(postgres,
504 [ --with-postgres=PFX base of postgres installation],
505 [AC_MSG_RESULT("$with_postgres")
506 case $with_postgres in
510 AC_CHECK_HEADERS(postgresql/libpq-fe.h,
514 LDFLAGS="-L$with_postgres/lib $LDFLAGS"
515 CPPFLAGS="-I$with_postgres/include $CPPFLAGS"
516 AC_CHECK_HEADERS(postgresql/libpq-fe.h,
517 EXT_LIB_PATH="-L$with_postgres/lib $EXT_LIB_PATH"
518 POSTGRES_LDFLAGS="-L$with_postgres/lib"
519 POSTGRES_CPPFLAGS="-I$with_postgres/include"
521 LDFLAGS=$SAVE_LDFLAGS
522 CPPFLAGS=$SAVE_CPPFLAGS
526 [AC_MSG_RESULT([--with-postgres not specified])
527 AC_CHECK_HEADERS(postgresql/libpq-fe.h, postgres=true)])
528 AM_CONDITIONAL(HAVE_POSTGRES, test x$postgres = xtrue)
529 AC_SUBST(POSTGRES_CPPFLAGS)
530 AC_SUBST(POSTGRES_LDFLAGS)
532 # test for libz (maybe required for linking mysql)
534 AC_CHECK_LIB(z, compress,,zlib=0)
535 AM_CONDITIONAL(HAVE_ZLIB, test x$zlib = x1)
538 AC_MSG_ERROR([GNUnet requires zlib])
542 AC_CHECK_TYPES([sigset_t, off_t], [], [], [#include <sys/types.h>])
543 AC_CHECK_TYPES([size_t], [], [], [#include <stdio.h>])
545 if test "$build_target" = "mingw"
547 CYGWIN_MYSQL_MAGIC="#include <mysql/my_global.h>"
553 SAVE_LDFLAGS=$LDFLAGS
554 SAVE_CPPFLAGS=$CPPFLAGS
555 AC_MSG_CHECKING(for mysql)
557 [ --with-mysql=PFX base of MySQL installation],
558 [AC_MSG_RESULT("$with_mysql")
559 if test "$with_mysql" != "no"
561 if test "$with_mysql" != "yes"
563 LDFLAGS="-L$with_mysql/lib -L$with_mysql/lib/mysql $LDFLAGS $ZLIBS"
564 CPPFLAGS="-I$with_mysql/include $CPPFLAGS"
566 AC_CHECK_HEADERS(mysql/mysql.h,
567 AC_CHECK_LIB(mysqlclient, mysql_init,
568 MYSQL_LDFLAGS="-L$with_mysql/lib -L$with_mysql/lib/mysql"
569 MYSQL_CPPFLAGS="-I$with_mysql/include"
571 mysql=true), [], [$CYGWIN_MYSQL_MAGIC])
574 [AC_MSG_RESULT([--with-mysql not specified])
575 LDFLAGS="-L/usr/lib/mysql $LDFLAGS $ZLIBS"
576 AC_CHECK_LIB(mysqlclient, mysql_init,
577 [AC_CHECK_HEADERS(mysql/mysql.h,
578 MYSQL_LDFLAGS="-L/usr/lib/mysql"
581 , [], [$CYGWIN_MYSQL_MAGIC])])
584 AC_SUBST(MYSQL_LDFLAGS)
585 AC_SUBST(MYSQL_CPPFLAGS)
587 # additional version check for mysql
588 AC_ARG_ENABLE(mysql-version-check, [ --disable-mysql-version-check do not check MySQL version],, enable_mysql_version_check=yes)
589 if test "$mysql" = "true" -a "x$enable_mysql_version_check" = "xyes"
591 AC_MSG_CHECKING(mysql version)
592 AC_RUN_IFELSE([AC_LANG_PROGRAM(
593 [[$CYGWIN_MYSQL_MAGIC
594 #include <mysql/mysql.h>]],
595 [[if (MYSQL_VERSION_ID < 40100)
600 ],mysql=true,mysql=false)
601 if test "$mysql" = "false"
604 AC_MSG_RESULT([fail, >= 4.1 required])
609 AM_CONDITIONAL(HAVE_MYSQL, test x$mysql = xtrue)
610 AM_CONDITIONAL(HAVE_MYSQLE, test "0" = "1")
613 LDFLAGS=$SAVE_LDFLAGS
614 CPPFLAGS=$SAVE_CPPFLAGS
616 if test "$sqlite" = 0 -a "$mysql" = 0
618 AC_MSG_ERROR([GNUnet requires SQLite or MySQL])
623 AC_MSG_CHECKING([for libmicrohttpd])
624 AC_ARG_WITH(microhttpd,
625 [ --with-microhttpd=PFX base of libmicrohttpd installation],
626 [AC_MSG_RESULT([$with_microhttpd])
627 case $with_microhttpd in
631 AC_CHECK_HEADERS([microhttpd.h],
632 AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
633 AC_CHECK_LIB([microhttpd], [MHD_start_daemon],
634 [AC_MSG_CHECKING([for libmicrohttpd >= 0.9.18])
636 #include "$native_srcdir/src/include/platform.h"
637 #include <microhttpd.h>
638 int main () { return MHD_VERSION >= 0x0091200 ? 0 : 1; }
641 lmhd=1],[AC_MSG_RESULT(failed)],lmhd=1)]),
642 [],[#include "$native_srcdir/src/include/platform.h"
643 #include <microhttpd.h>]),,
644 [#include "$native_srcdir/src/include/platform.h"])
647 LDFLAGS="-L$with_microhttpd/lib $LDFLAGS"
648 CPPFLAGS="-I$with_microhttpd/include $CPPFLAGS"
649 AC_CHECK_HEADERS(microhttpd.h,
650 AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
651 AC_CHECK_LIB([microhttpd], [MHD_start_daemon],
652 EXT_LIB_PATH="-L$with_microhttpd/lib $EXT_LIB_PATH"
653 [AC_MSG_CHECKING([for libmicrohttpd >= 0.9.18])
655 #include "$native_srcdir/src/include/platform.h"
656 #include <microhttpd.h>
657 int main () { return MHD_VERSION >= 0x0091200 ? 0 : 1; }
660 lmhd=1],[AC_MSG_RESULT(failed)],lmhd=1)]),
661 [],[#include "$native_srcdir/src/include/platform.h"
662 #include <microhttpd.h>]),,
663 [#include "$native_srcdir/src/include/platform.h"])
667 [AC_MSG_RESULT([--with-microhttpd not specified])
668 AC_CHECK_HEADERS([microhttpd.h],
669 AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
670 AC_CHECK_LIB([microhttpd], [MHD_start_daemon],
671 [AC_MSG_CHECKING([for libmicrohttpd >= 0.9.18])
673 #include "$native_srcdir/src/include/platform.h"
674 #include <microhttpd.h>
675 int main () { return MHD_VERSION >= 0x0091200 ? 0 : 1; }
678 lmhd=1],[AC_MSG_RESULT(failed)],lmhd=1)]),
679 [],[#include "$native_srcdir/src/include/platform.h"
680 #include <microhttpd.h>]),,
681 [#include "$native_srcdir/src/include/platform.h"])])
682 AM_CONDITIONAL(HAVE_MHD, test x$lmhd = x1)
683 AC_DEFINE_UNQUOTED([HAVE_MHD], $lmhd, [We have libmicrohttpd])
689 # check for python & pexpect (used for some testcases only)
690 AM_PATH_PYTHON([2.6],, [:])
691 AM_CONDITIONAL([HAVE_PYTHON], [test "$PYTHON" != :])
694 AM_GNU_GETTEXT([external])
695 AM_GNU_GETTEXT_VERSION([0.16.1])
700 # Checks for standard typedefs, structures, and compiler characteristics.
709 AC_CHECK_MEMBER([struct sockaddr_in.sin_len],
710 [ AC_DEFINE(HAVE_SOCKADDR_IN_SIN_LEN, 1, [Do we have sockaddr_in.sin_len?])
714 #include <sys/types.h>
715 #include <sys/socket.h>
716 #include <netinet/in.h>
721 # Checks for library functions.
722 AC_FUNC_CLOSEDIR_VOID
724 AC_PROG_GCC_TRADITIONAL
726 AC_FUNC_SELECT_ARGTYPES
736 AC_CHECK_FUNCS([atoll stat64 strnlen mremap setrlimit sysconf initgroups strndup gethostbyname2 getpeerucred getpeereid setresuid $funcstocheck getifaddrs freeifaddrs getresgid mallinfo malloc_size malloc_usable_size getrusage])
741 gn_user_home_dir="~/.gnunet"
742 AC_ARG_WITH(user-home-dir,
744 [--with-user-home-dir=DIR],
745 [default user home directory (~/.gnunet)]),
746 [gn_user_home_dir=$withval])
747 AC_SUBST(GN_USER_HOME_DIR, $gn_user_home_dir)
748 gn_daemon_home_dir="/var/lib/gnunet"
749 AC_ARG_WITH(daemon-home-dir,
751 [--with-daemon-home-dir=DIR],
752 [default daemon home directory (/var/lib/gnunet)]),
753 [gn_daemon_home_dir=$withval])
754 AC_SUBST(GN_DAEMON_HOME_DIR, $gn_daemon_home_dir)
755 gn_daemon_config_dir="/etc"
756 AC_ARG_WITH(daemon-config-dir,
758 [--with-daemon-config-dir=DIR],
759 [default daemon config directory (/etc)]),
760 [gn_daemon_config_dir=$withval])
761 AC_SUBST(GN_DAEMON_CONFIG_DIR, $gn_daemon_config_dir)
764 GN_LIBINTL="$LTLIBINTL"
765 AC_ARG_ENABLE(framework, [ --enable-framework enable Mac OS X framework build helpers],enable_framework_build=$enableval)
766 AM_CONDITIONAL(WANT_FRAMEWORK, test x$enable_framework_build = xyes)
767 if test x$enable_framework_build = xyes
769 AC_DEFINE([FRAMEWORK_BUILD], 1, [Build a Mac OS X Framework])
770 GN_INTLINCL='-I$(top_srcdir)/src/intlemu'
771 GN_LIBINTL='$(top_builddir)/src/intlemu/libintlemu.la -framework CoreFoundation'
772 AC_LIB_APPENDTOVAR([CPPFLAGS], [$GN_INTLINCL])
775 GN_LIB_LDFLAGS="-export-dynamic -no-undefined"
776 GN_PLUGIN_LDFLAGS="-export-dynamic -avoid-version -module -no-undefined"
778 AC_SUBST(GN_LIB_LDFLAGS)
779 AC_SUBST(GN_PLUGIN_LDFLAGS)
780 AC_SUBST(GN_INTLINCL)
786 AC_SUBST(EXT_LIB_PATH)
791 AC_SUBST(EXT_LIB_PATH)
795 AC_MSG_CHECKING(for sudo)
797 [ --with-sudo=PATH path to sudo binary (or just yes)],
798 [AC_MSG_RESULT("$with_sudo")
807 SUDO_BINARY=$with_sudo
811 [AC_MSG_RESULT([no])])
812 AC_SUBST(SUDO_BINARY)
813 AM_CONDITIONAL([HAVE_SUDO], [test "x$SUDO_BINARY" != "x" -o -w /])
817 AC_MSG_CHECKING(with nssdir)
819 [ --with-nssdir=PATH where to install NSS plugins],
820 [AC_MSG_RESULT("$with_nssdir")
837 if test "x$SUDO_BINARY" != "x" -o -w /
841 AC_MSG_RESULT([yes, to /lib])
849 AM_CONDITIONAL([INSTALL_NSS], [test "x$install_nss" != "x0"])
851 # test for gnunetdns group name
852 GNUNETDNS_GROUP=gnunetdns
853 AC_MSG_CHECKING(for gnunetdns group name)
854 AC_ARG_WITH(gnunetdns,
855 [ --with-gnunetdns=GRPNAME name for gnunetdns group],
856 [AC_MSG_RESULT("$with_gnunetdns")
857 case $with_gnunetdns in
859 GNUNETDNS_GROUP=gnunet
862 GNUNETDNS_GROUP=gnunetdns
865 GNUNETDNS_GROUP=$with_gnunetdns
869 [AC_MSG_RESULT([gnunetdns])])
870 AC_SUBST(GNUNETDNS_GROUP)
876 AC_MSG_CHECKING(for gnutls)
878 [ --with-gnutls=PFX base of gnutls installation],
879 [AC_MSG_RESULT([$with_gnutls])
884 AC_CHECK_HEADERS([gnutls/abstract.h],
885 AC_CHECK_LIB([gnutls], [gnutls_priority_set],
889 LDFLAGS="-L$with_gnutls/lib $LDFLAGS"
890 CPPFLAGS="-I$with_gnutls/include $CPPFLAGS"
891 AC_CHECK_HEADERS([gnutls/abstract.h],
892 AC_CHECK_LIB([gnutls], [gnutls_priority_set],
893 EXT_LIB_PATH="-L$with_gnutls/lib $EXT_LIB_PATH"
898 [AC_MSG_RESULT([--with-gnutls not specified])
899 AC_CHECK_HEADERS([gnutls/abstract.h],
900 AC_CHECK_LIB([gnutls], [gnutls_priority_set],
902 AM_CONDITIONAL(HAVE_GNUTLS, test x$gnutls = xtrue)
903 AC_DEFINE_UNQUOTED([HAVE_GNUTLS], $gnutls, [We have gnutls])
907 # should 'make check' run tests?
908 AC_MSG_CHECKING(whether to run tests)
909 AC_ARG_ENABLE([testruns],
910 [AS_HELP_STRING([--disable-testruns], [disable running tests on make check (default is YES)])],
911 [enable_tests_run=${enableval}],
912 [enable_tests_run=yes])
913 AC_MSG_RESULT($enable_test_run)
914 AM_CONDITIONAL([ENABLE_TEST_RUN], [test "x$enable_tests_run" = "xyes"])
917 # should monkey be used when running (certain) services?
918 AC_MSG_CHECKING(whether to run with monkey)
919 AC_ARG_ENABLE([monkey],
920 [AS_HELP_STRING([--enable-monkey], [enable running with monkey])],
921 [enable_monkey=${enableval}],
923 AC_MSG_RESULT($enable_monkey)
924 AM_CONDITIONAL([ENABLE_MONKEY], [test "x$enable_monkey" = "xyes"])
925 if test "x$enable_monkey" = "xyes"
927 MONKEYPREFIX="monkey"
931 AC_SUBST(MONKEYPREFIX)
934 # should expensive tests be run?
935 AC_MSG_CHECKING(whether to run expensive tests)
936 AC_ARG_ENABLE([expensivetests],
937 [AS_HELP_STRING([--enable-expensivetests], [enable running expensive testcases])],
938 [enable_expensive=${enableval}],
939 [enable_expensive=no])
940 AC_MSG_RESULT($enable_expensive)
941 AM_CONDITIONAL([HAVE_EXPENSIVE_TESTS], [test "x$enable_expensive" = "xyes"])
943 # should ports be open for Java services?
944 AC_MSG_CHECKING(whether to enable ports for gnunet-java)
945 AC_ARG_ENABLE([javaports],
946 [AS_HELP_STRING([--enable-javaports], [use non-zero ports for services with Java bindings (default is NO)])],
947 [enable_java_ports=${enableval}],
948 [enable_java_ports=no])
949 AC_MSG_RESULT($enable_java_ports)
950 if test "x$enable_java_ports" = "xyes"
958 # should benchmarks be run?
959 AC_MSG_CHECKING(whether to run benchmarks during make check)
960 AC_ARG_ENABLE([benchmarks],
961 [AS_HELP_STRING([--enable-benchmarks], [enable running benchmarks during make check])],
962 [enable_benchmarks=${enableval}],
963 [enable_benchmarks=no])
964 AC_MSG_RESULT($enable_benchmarks)
965 AM_CONDITIONAL([HAVE_BENCHMARKS], [test "x$enable_benchmarks" = "xyes"])
967 # should experimental code be compiled (code that may not yet compile)?
968 AC_MSG_CHECKING(whether to compile experimental code)
969 AC_ARG_ENABLE([experimental],
970 [AS_HELP_STRING([--enable-experimental], [enable compiling experimental code])],
971 [enable_experimental=${enableval}],
972 [enable_experimental=no])
973 AC_MSG_RESULT($enable_experimental)
974 AM_CONDITIONAL([HAVE_EXPERIMENTAL], [test "x$enable_experimental" = "xyes"])
976 # should code be enabled that works around missing OS functionality on Windows?
977 # used for test cases
978 if test $build_target = "mingw"
984 [#include <ws2tcpip.h>
986 int s = socket (0, 0, 0);])
988 AC_DEFINE_UNQUOTED([HAVE_SOCKET],1,[Define this if socket() is available])
990 AC_DEFINE_UNQUOTED([HAVE_SOCKET],0,[Define this if socket() is available])
995 [#include <ws2tcpip.h>
997 int s = select (0, NULL, NULL, NULL, NULL);])
999 AC_DEFINE_UNQUOTED([HAVE_SELECT],1,[Define this if select() is available])
1001 AC_DEFINE_UNQUOTED([HAVE_SELECT],0,[Define this if select() is available])
1006 [#include <ws2tcpip.h>
1009 char *s = inet_ntoa (i);])
1011 AC_DEFINE_UNQUOTED([HAVE_INET_NTOA],1,[Define this if inet_ntoa() is available])
1013 AC_DEFINE_UNQUOTED([HAVE_INET_NTOA],0,[Define this if inet_ntoa() is available])
1018 [#include <ws2tcpip.h>
1020 int s = getnameinfo (NULL, 0, NULL, 0, NULL, 0, 0);])
1022 AC_DEFINE_UNQUOTED([HAVE_GETNAMEINFO],1,[Define this if getnameinfo() is available])
1024 AC_DEFINE_UNQUOTED([HAVE_GETNAMEINFO],0,[Define this if getnameinfo() is available])
1029 [#include <ws2tcpip.h>
1031 int s = gethostname (NULL, 0);])
1033 AC_DEFINE_UNQUOTED([HAVE_GETHOSTNAME],1,[Define this if gethostname() is available])
1035 AC_DEFINE_UNQUOTED([HAVE_GETHOSTNAME],0,[Define this if gethostname() is available])
1040 [#include <ws2tcpip.h>
1042 void *s = gethostbyname (NULL);])
1044 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYNAME],1,[Define this if gethostbyname() is available])
1046 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYNAME],0,[Define this if gethostbyname() is available])
1051 [#include <ws2tcpip.h>
1053 void *s = gethostbyaddr (NULL, 0, 0);])
1055 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYADDR],1,[Define this if gethostbyaddr() is available])
1057 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYADDR],0,[Define this if gethostbyaddr() is available])
1062 [#include <ws2tcpip.h>
1064 int s = getaddrinfo (NULL, NULL, NULL, NULL);])
1066 AC_DEFINE_UNQUOTED([HAVE_GETADDRINFO],1,[Define this if getaddrinfo() is available])
1068 AC_DEFINE_UNQUOTED([HAVE_GETADDRINFO],1,[Define this if getaddrinfo() is available])
1072 AC_MSG_CHECKING(whether to enable windows workarounds)
1073 AC_ARG_ENABLE([windows_workarounds],
1074 [AS_HELP_STRING([--enable-windows_workarounds], [enable workarounds used on Windows (only useful for test cases)])],
1075 [enable_workarounds=${enableval}],
1076 [enable_workarounds=no])
1077 AC_MSG_RESULT($enable_workarounds)
1078 if test x$enable_windows_workarounds = "xyes"
1085 AC_DEFINE_UNQUOTED([ENABLE_WINDOWS_WORKAROUNDS], $workarounds, [enable workarounds used on Windows (only useful for test cases)])
1088 AC_MSG_CHECKING(whether to compile with support for code coverage analysis)
1089 AC_ARG_ENABLE([coverage],
1090 AS_HELP_STRING([--enable-coverage],
1091 [compile the library with code coverage support]),
1092 [use_gcov=${enableval}],
1094 AC_MSG_RESULT($use_gcov)
1095 AM_CONDITIONAL([USE_COVERAGE], [test "x$use_gcov" = "xyes"])
1115 src/datacache/Makefile
1116 src/datastore/Makefile
1117 src/datastore/datastore.conf
1125 src/fragmentation/Makefile
1130 src/gns/nss/Makefile
1132 src/include/Makefile
1133 src/include/gnunet_directories.h
1134 src/hostlist/Makefile
1135 src/lockmanager/Makefile
1136 src/lockmanager/lockmanager.conf
1140 src/namestore/Makefile
1141 src/namestore/namestore.conf
1145 src/peerinfo/Makefile
1146 src/peerinfo/peerinfo.conf
1147 src/peerinfo-tool/Makefile
1148 src/postgres/Makefile
1151 src/statistics/Makefile
1152 src/statistics/statistics.conf
1154 src/template/Makefile
1155 src/testbed/Makefile
1156 src/testbed/testbed.conf
1157 src/testing/Makefile
1158 src/testing_old/Makefile
1159 src/topology/Makefile
1160 src/transport/Makefile
1161 src/transport/transport.conf
1164 src/util/resolver.conf
1167 src/integration-tests/Makefile
1169 pkgconfig/gnunetarm.pc
1170 pkgconfig/gnunetblock.pc
1171 pkgconfig/gnunetcore.pc
1172 pkgconfig/gnunetdatacache.pc
1173 pkgconfig/gnunetdatastore.pc
1174 pkgconfig/gnunetdht.pc
1175 pkgconfig/gnunetdhtlog.pc
1176 pkgconfig/gnunetdv.pc
1177 pkgconfig/gnunetfragmentation.pc
1178 pkgconfig/gnunetfs.pc
1179 pkgconfig/gnunethello.pc
1180 pkgconfig/gnunetnat.pc
1181 pkgconfig/gnunetnse.pc
1182 pkgconfig/gnunetpeerinfo.pc
1183 pkgconfig/gnunetregex.pc
1184 pkgconfig/gnunetstatistics.pc
1185 pkgconfig/gnunettesting.pc
1186 pkgconfig/gnunettransport.pc
1187 pkgconfig/gnunetutil.pc
1193 # warn user if mysql found but not used due to version
1194 if test "$mysqlfail" = "true"
1196 AC_MSG_NOTICE([NOTICE: MySQL found, but too old. MySQL support will not be compiled.])
1200 if test "x$sqlite" = "x0"
1202 AC_MSG_NOTICE([NOTICE: sqlite not found. sqLite support will not be compiled.])
1206 if test "x$curl" = "x0"
1208 AC_MSG_NOTICE([NOTICE: libcurl not found. http client support will not be compiled.])
1212 if test x$gnutls != xtrue
1214 AC_MSG_NOTICE([NOTICE: gnutls not found, gnunet-gns-proxy will not be built])
1218 if test "x$enable_java_ports" = "xyes"
1220 AC_MSG_NOTICE([NOTICE: opening ports for gnunet-java bindings by default.])
1223 if test "x$lmhd" != "x1"
1225 AC_MSG_NOTICE([NOTICE: libmicrohttpd not found, http transport will not be installed.])
1228 AC_MSG_NOTICE([NOTICE: Database support is set to MySQL: $mysql, SQLite: $sqlite, Postgres: $postgres])
1230 if test "$enable_framework_build" = "yes"
1232 AC_MSG_NOTICE([NOTICE: Mac OS X framework build enabled.])
1235 if test "x$SUDO_BINARY" = "x" -a ! -w /
1237 AC_MSG_NOTICE([NOTICE: --with-sudo not specified and not running as 'root', will not install GNS NSS library])
1241 AC_MSG_NOTICE([********************************************
1242 Please make sure NOW that you have created a user and group 'gnunet'
1243 and additionally a group 'gnunetdns':
1247 Make sure that '/var/lib/gnunet' is owned (and writable) by user
1248 'gnunet'. Then, you can compile GNUnet with
1251 After that, run (if necessary as 'root')
1253 to install everything.
1255 Each GNUnet user should be added to the 'gnunet' group (may
1256 require fresh login to come into effect):
1257 adduser $USERNAME gnunet
1258 (run the above command as root once for each of your users, replacing
1259 "$USERNAME" with the respective login names). If you have a global IP
1260 address, no further configuration is required.
1262 Optionally, download and compile gnunet-gtk to get a GUI for
1263 file-sharing and configuration. This is particularly recommended
1264 if your network setup is non-trivial, as gnunet-setup can be
1265 used to test in the GUI if your network configuration is working.
1266 gnunet-setup should be run as the "gnunet" user under X. As it
1267 does very little with the network, running it as "root" is likely
1268 also harmless. You can also run it as a normal user, but then
1269 you have to copy ~/.gnunet/gnunet.conf" over to the "gnunet" user's
1270 home directory in the end.
1272 Once you have configured your peer, run (as the 'gnunet' user)
1274 to start the peer. You can then run the various GNUnet-tools as
1275 your "normal" user (who should only be in the group 'gnunet').
1276 ********************************************])