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])
224 AM_PATH_LIBGCRYPT(1.2.0, gcrypt=1)
225 AC_CHECK_DECLS([gcry_mpi_lshift], [], [], [[#include <gcrypt.h>]])
229 AC_MSG_ERROR([GNUnet needs libgcrypt])
232 # Adam shostack suggests the following for Windows:
233 # -D_FORTIFY_SOURCE=2 -fstack-protector-all
234 AC_ARG_ENABLE(gcc-hardening,
235 AS_HELP_STRING(--enable-gcc-hardening, enable compiler security checks),
236 [if test x$enableval = xyes; then
237 CFLAGS="$CFLAGS -D_FORTIFY_SOURCE=2 -fstack-protector-all"
238 CFLAGS="$CFLAGS -fwrapv -fPIE -Wstack-protector"
239 CFLAGS="$CFLAGS --param ssp-buffer-size=1"
240 LDFLAGS="$LDFLAGS -pie"
244 # Linker hardening options
245 # Currently these options are ELF specific - you can't use this with MacOSX
246 AC_ARG_ENABLE(linker-hardening,
247 AS_HELP_STRING(--enable-linker-hardening, enable linker security fixups),
248 [if test x$enableval = xyes; then
249 LDFLAGS="$LDFLAGS -z relro -z now"
253 extra_logging=GNUNET_NO
254 AC_ARG_ENABLE([logging],
255 AS_HELP_STRING([--enable-logging@<:@=value@:>@],[Enable logging calls. Possible values: yes,no,verbose,veryverbose ('yes' is the default)]),
256 [AS_IF([test "x$enableval" = "xyes"], [],
257 [test "x$enableval" = "xno"], [AC_DEFINE([GNUNET_CULL_LOGGING],[],[Define to cull all logging calls])],
258 [test "x$enableval" = "xverbose"], [extra_logging=GNUNET_YES]
259 [test "x$enableval" = "xveryverbose"], [extra_logging=\(GNUNET_YES+1\)])
261 AC_DEFINE_UNQUOTED([GNUNET_EXTRA_LOGGING],[$extra_logging],[1 if extra logging is enabled, 2 for very verbose extra logging, 0 otherwise])
263 # should memory poisoning be enabled?
264 AC_MSG_CHECKING(whether to poison freed memory)
265 AC_ARG_ENABLE([poisoning],
266 [AS_HELP_STRING([--enable-poisoning], [enable poisoning of freed memory (good for debugging)])],
267 [enable_poisoning=${enableval}],
269 if test "x$extra_logging" != "xGNUNET_NO"; then
270 enable_poisoning="defaults to yes (extra logging is enabled)"
275 AC_MSG_RESULT($enable_poisoning)
276 if test ! "x$enable_poisoning" = "xno"; then
281 AC_DEFINE_UNQUOTED([ENABLE_POISONING],[$enable_poisoning],[1 if freed memory should be poisoned, 0 otherwise])
283 if test $build = $target
285 AC_MSG_CHECKING([for working HMAC])
287 LIBS="$LIBS $LIBGCRYPT_LIBS"
288 CFLAGS="$CFLAGS $LIBGCRYPT_CFLAGS"
290 [AC_LANG_PROGRAM([#include <gcrypt.h>
291 #include <stdio.h>], [[
294 unsigned char data[] = { 0xbf, 0x16, 0x6e, 0x46, 0x3a, 0x6c, 0xf3, 0x93, 0xa7, 0x72,
295 0x11, 0xa1, 0xdc, 0x0b, 0x07, 0xdb, 0x1a, 0x5e, 0xd9, 0xb9, 0x81, 0xbe,
296 0xea, 0xe4, 0x31, 0x5f, 0x24, 0xff, 0xfe, 0x50, 0x8a, 0xde };
297 unsigned char key[] = { 0xfc, 0x62, 0x76, 0x35 };
298 unsigned char result[] = {0xa2, 0xb, 0x1, 0xd9, 0xc0, 0x8b, 0x5a, 0x12, 0x80,
299 0xd5, 0x50, 0x12, 0x8e, 0xd0, 0x5b, 0xb6, 0x5c, 0x87, 0x24, 0xe2, 0xd0,
300 0xd2, 0xaf, 0x63, 0xae, 0xd1, 0xd6, 0x64, 0x14, 0xe3, 0x6e, 0x61, 0x5b,
301 0xd, 0xba, 0x17, 0x7d, 0xd3, 0x10, 0xb1, 0x37, 0x41, 0x91, 0x7d, 0xeb,
302 0x1, 0x4d, 0x71, 0xe8, 0x59, 0x71, 0x42, 0x8e, 0xd6, 0xf3, 0x29, 0x3b,
303 0x90, 0xf2, 0xd1, 0xaf, 0x65, 0x1e, 0xb3};
305 if (!gcry_check_version (GCRYPT_VERSION))
307 fprintf (stderr, "Version mismatch %s <-> %s \n", gcry_check_version (NULL), GCRYPT_VERSION);
311 gcry_control (GCRYCTL_DISABLE_SECMEM, 0);
312 gcry_control (GCRYCTL_INITIALIZATION_FINISHED, 0);
314 if (gcry_md_open(&mac, GCRY_MD_SHA512, GCRY_MD_FLAG_HMAC) != GPG_ERR_NO_ERROR)
316 fprintf (stderr, "gcry_md_open error\n");
320 gcry_md_setkey (mac, key, sizeof (key));
321 gcry_md_write (mac, data, sizeof (data));
323 if (memcmp(gcry_md_read (mac, 0), result, gcry_md_get_algo_dlen (gcry_md_get_algo (mac))) != 0)
325 fprintf (stderr, "memcmp error\n");
333 [AC_MSG_RESULT([yes])],
338 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.])
342 AC_MSG_FAILURE([HMAC test failed])
346 AC_MSG_FAILURE([libgcrypt header version does not match library version])
350 fi # $build = $target
353 LIBCURL_CHECK_CONFIG(,7.21.3,curl=1,curl=0)
356 AM_CONDITIONAL(HAVE_LIBCURL, true)
357 AC_DEFINE([HAVE_LIBCURL],[1],[Have libcurl])
359 AM_CONDITIONAL(HAVE_LIBCURL, false)
365 AC_CHECK_HEADERS([glpk.h],[glpk=true],[gplk=false])
366 AC_CHECK_LIB([glpk],[glp_create_prob],,[gplk=false])
367 # GLPK must support atm MLP presolving, version >= 4.32
368 AC_CHECK_MEMBERS(glp_iocp.presolve,,[gplk=false],[[#include <glpk.h>]])
369 if test x$gplk = xfalse
371 AM_CONDITIONAL(HAVE_LIBGLPK, false)
372 AC_MSG_WARN([GNUnet requires GLPK >= 4.32])
374 AM_CONDITIONAL(HAVE_LIBGLPK, true)
375 AC_DEFINE([HAVE_LIBGLPK],[1],[Have GLPK])
380 AC_CHECK_HEADERS([nss.h],[nss=true],[nss=false])
381 if test x$nss = xfalse
383 AM_CONDITIONAL(HAVE_GLIBCNSS, false)
384 AC_MSG_WARN([No GNU libc nss header, will not build NSS plugin])
386 AM_CONDITIONAL(HAVE_GLIBCNSS, true)
391 # test for kvm and kstat (for CPU stats under BSD/Solaris)
392 AC_CHECK_LIB([kvm],[kvm_open])
393 AC_CHECK_LIB([kstat],[kstat_open])
395 # test for libextractor
397 AC_MSG_CHECKING(for libextractor)
398 AC_ARG_WITH(extractor,
399 [ --with-extractor=PFX base of libextractor installation],
400 [AC_MSG_RESULT([$with_extractor])
401 case $with_extractor in
405 AC_CHECK_HEADERS(extractor.h,
406 AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
410 LDFLAGS="-L$with_extractor/lib $LDFLAGS"
411 CPPFLAGS="-I$with_extractor/include $CPPFLAGS"
412 AC_CHECK_HEADERS(extractor.h,
413 AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
414 EXT_LIB_PATH="-L$with_extractor/lib $EXT_LIB_PATH"
419 [AC_MSG_RESULT([--with-extractor not specified])
420 AC_CHECK_HEADERS(extractor.h,
421 AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
423 if test "$extractor" != 1
425 AC_MSG_ERROR([GNUnet requires libextractor])
430 # test for libunistring
432 if test $HAVE_LIBUNISTRING != yes; then
433 AC_MSG_ERROR([GNUnet requires libunistring])
435 if test $gl_libunistring_hexversion -le 2305; then
436 AC_MSG_ERROR([GNUnet requires libunistring >= 0.9.1.1])
443 # Checks for standard header files.
447 # Check for headers that are ALWAYS required
448 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]))
450 # Checks for headers that are only required on some systems or opional (and where we do NOT abort if they are not there)
451 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])
453 SAVE_LDFLAGS=$LDFLAGS
454 SAVE_CPPFLAGS=$CPPFLAGS
458 AC_MSG_CHECKING(for SQLite)
460 [ --with-sqlite=PFX base of SQLite installation],
461 [AC_MSG_RESULT("$with_sqlite")
466 AC_CHECK_HEADERS(sqlite3.h,
470 LDFLAGS="-L$with_sqlite/lib $LDFLAGS"
471 CPPFLAGS="-I$with_sqlite/include $CPPFLAGS"
472 AC_CHECK_HEADERS(sqlite3.h,
473 EXT_LIB_PATH="-L$with_sqlite/lib $EXT_LIB_PATH"
474 SQLITE_LDFLAGS="-L$with_sqlite/lib"
475 SQLITE_CPPFLAGS="-I$with_sqlite/include"
477 LDFLAGS=$SAVE_LDFLAGS
478 CPPFLAGS=$SAVE_CPPFLAGS
482 [AC_MSG_RESULT([--with-sqlite not specified])
483 AC_CHECK_HEADERS(sqlite3.h, sqlite=true)])
484 AM_CONDITIONAL(HAVE_SQLITE, test x$sqlite = xtrue)
485 AC_SUBST(SQLITE_CPPFLAGS)
486 AC_SUBST(SQLITE_LDFLAGS)
490 AC_MSG_CHECKING(for postgres)
491 AC_ARG_WITH(postgres,
492 [ --with-postgres=PFX base of postgres installation],
493 [AC_MSG_RESULT("$with_postgres")
494 case $with_postgres in
498 AC_CHECK_HEADERS(postgresql/libpq-fe.h,
502 LDFLAGS="-L$with_postgres/lib $LDFLAGS"
503 CPPFLAGS="-I$with_postgres/include $CPPFLAGS"
504 AC_CHECK_HEADERS(postgresql/libpq-fe.h,
505 EXT_LIB_PATH="-L$with_postgres/lib $EXT_LIB_PATH"
506 POSTGRES_LDFLAGS="-L$with_postgres/lib"
507 POSTGRES_CPPFLAGS="-I$with_postgres/include"
509 LDFLAGS=$SAVE_LDFLAGS
510 CPPFLAGS=$SAVE_CPPFLAGS
514 [AC_MSG_RESULT([--with-postgres not specified])
515 AC_CHECK_HEADERS(postgresql/libpq-fe.h, postgres=true)])
516 AM_CONDITIONAL(HAVE_POSTGRES, test x$postgres = xtrue)
517 AC_SUBST(POSTGRES_CPPFLAGS)
518 AC_SUBST(POSTGRES_LDFLAGS)
520 # test for libz (maybe required for linking mysql)
522 AC_CHECK_LIB(z, compress,,zlib=0)
523 AM_CONDITIONAL(HAVE_ZLIB, test x$zlib = x1)
526 AC_MSG_ERROR([GNUnet requires zlib])
530 AC_CHECK_TYPES([sigset_t, off_t], [], [], [#include <sys/types.h>])
531 AC_CHECK_TYPES([size_t], [], [], [#include <stdio.h>])
533 if test "$build_target" = "mingw"
535 CYGWIN_MYSQL_MAGIC="#include <mysql/my_global.h>"
541 SAVE_LDFLAGS=$LDFLAGS
542 SAVE_CPPFLAGS=$CPPFLAGS
543 AC_MSG_CHECKING(for mysql)
545 [ --with-mysql=PFX base of MySQL installation],
546 [AC_MSG_RESULT("$with_mysql")
547 if test "$with_mysql" != "no"
549 if test "$with_mysql" != "yes"
551 LDFLAGS="-L$with_mysql/lib -L$with_mysql/lib/mysql $LDFLAGS $ZLIBS"
552 CPPFLAGS="-I$with_mysql/include $CPPFLAGS"
554 AC_CHECK_HEADERS(mysql/mysql.h,
555 AC_CHECK_LIB(mysqlclient, mysql_init,
556 MYSQL_LDFLAGS="-L$with_mysql/lib -L$with_mysql/lib/mysql"
557 MYSQL_CPPFLAGS="-I$with_mysql/include"
559 mysql=true), [], [$CYGWIN_MYSQL_MAGIC])
562 [AC_MSG_RESULT([--with-mysql not specified])
563 LDFLAGS="-L/usr/lib/mysql $LDFLAGS $ZLIBS"
564 AC_CHECK_LIB(mysqlclient, mysql_init,
565 [AC_CHECK_HEADERS(mysql/mysql.h,
566 MYSQL_LDFLAGS="-L/usr/lib/mysql"
569 , [], [$CYGWIN_MYSQL_MAGIC])])
572 AC_SUBST(MYSQL_LDFLAGS)
573 AC_SUBST(MYSQL_CPPFLAGS)
575 # additional version check for mysql
576 AC_ARG_ENABLE(mysql-version-check, [ --disable-mysql-version-check do not check MySQL version],, enable_mysql_version_check=yes)
577 if test "$mysql" = "true" -a "x$enable_mysql_version_check" = "xyes"
579 AC_MSG_CHECKING(mysql version)
580 AC_RUN_IFELSE([AC_LANG_PROGRAM(
581 [[$CYGWIN_MYSQL_MAGIC
582 #include <mysql/mysql.h>]],
583 [[if (MYSQL_VERSION_ID < 40100)
588 ],mysql=true,mysql=false)
589 if test "$mysql" = "false"
592 AC_MSG_RESULT([fail, >= 4.1 required])
597 AM_CONDITIONAL(HAVE_MYSQL, test x$mysql = xtrue)
598 AM_CONDITIONAL(HAVE_MYSQLE, test "0" = "1")
601 LDFLAGS=$SAVE_LDFLAGS
602 CPPFLAGS=$SAVE_CPPFLAGS
604 if test "$sqlite" = 0 -a "$mysql" = 0
606 AC_MSG_ERROR([GNUnet requires SQLite or MySQL])
611 AC_MSG_CHECKING([for libmicrohttpd])
612 AC_ARG_WITH(microhttpd,
613 [ --with-microhttpd=PFX base of libmicrohttpd installation],
614 [AC_MSG_RESULT([$with_microhttpd])
615 case $with_microhttpd in
619 AC_CHECK_HEADERS([microhttpd.h],
620 AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
621 AC_CHECK_LIB([microhttpd], [MHD_start_daemon],
622 [AC_MSG_CHECKING([for libmicrohttpd >= 0.9.18])
624 #include "$native_srcdir/src/include/platform.h"
625 #include <microhttpd.h>
626 int main () { return MHD_VERSION >= 0x0091200 ? 0 : 1; }
629 lmhd=1],[AC_MSG_RESULT(failed)],lmhd=1)]),
630 [],[#include "$native_srcdir/src/include/platform.h"
631 #include <microhttpd.h>]),,
632 [#include "$native_srcdir/src/include/platform.h"])
635 LDFLAGS="-L$with_microhttpd/lib $LDFLAGS"
636 CPPFLAGS="-I$with_microhttpd/include $CPPFLAGS"
637 AC_CHECK_HEADERS(microhttpd.h,
638 AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
639 AC_CHECK_LIB([microhttpd], [MHD_start_daemon],
640 EXT_LIB_PATH="-L$with_microhttpd/lib $EXT_LIB_PATH"
641 [AC_MSG_CHECKING([for libmicrohttpd >= 0.9.18])
643 #include "$native_srcdir/src/include/platform.h"
644 #include <microhttpd.h>
645 int main () { return MHD_VERSION >= 0x0091200 ? 0 : 1; }
648 lmhd=1],[AC_MSG_RESULT(failed)],lmhd=1)]),
649 [],[#include "$native_srcdir/src/include/platform.h"
650 #include <microhttpd.h>]),,
651 [#include "$native_srcdir/src/include/platform.h"])
655 [AC_MSG_RESULT([--with-microhttpd not specified])
656 AC_CHECK_HEADERS([microhttpd.h],
657 AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
658 AC_CHECK_LIB([microhttpd], [MHD_start_daemon],
659 [AC_MSG_CHECKING([for libmicrohttpd >= 0.9.18])
661 #include "$native_srcdir/src/include/platform.h"
662 #include <microhttpd.h>
663 int main () { return MHD_VERSION >= 0x0091200 ? 0 : 1; }
666 lmhd=1],[AC_MSG_RESULT(failed)],lmhd=1)]),
667 [],[#include "$native_srcdir/src/include/platform.h"
668 #include <microhttpd.h>]),,
669 [#include "$native_srcdir/src/include/platform.h"])])
670 AM_CONDITIONAL(HAVE_MHD, test x$lmhd = x1)
671 AC_DEFINE_UNQUOTED([HAVE_MHD], $lmhd, [We have libmicrohttpd])
677 # check for python & pexpect (used for some testcases only)
678 AM_PATH_PYTHON([2.6],, [:])
679 AM_CONDITIONAL([HAVE_PYTHON], [test "$PYTHON" != :])
682 AM_GNU_GETTEXT([external])
683 AM_GNU_GETTEXT_VERSION([0.16.1])
688 # Checks for standard typedefs, structures, and compiler characteristics.
697 AC_CHECK_MEMBER([struct sockaddr_in.sin_len],
698 [ AC_DEFINE(HAVE_SOCKADDR_IN_SIN_LEN, 1, [Do we have sockaddr_in.sin_len?])
702 #include <sys/types.h>
703 #include <sys/socket.h>
704 #include <netinet/in.h>
709 # Checks for library functions.
710 AC_FUNC_CLOSEDIR_VOID
712 AC_PROG_GCC_TRADITIONAL
714 AC_FUNC_SELECT_ARGTYPES
724 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])
729 gn_user_home_dir="~/.gnunet"
730 AC_ARG_WITH(user-home-dir,
732 [--with-user-home-dir=DIR],
733 [default user home directory (~/.gnunet)]),
734 [gn_user_home_dir=$withval])
735 AC_SUBST(GN_USER_HOME_DIR, $gn_user_home_dir)
736 gn_daemon_home_dir="/var/lib/gnunet"
737 AC_ARG_WITH(daemon-home-dir,
739 [--with-daemon-home-dir=DIR],
740 [default daemon home directory (/var/lib/gnunet)]),
741 [gn_daemon_home_dir=$withval])
742 AC_SUBST(GN_DAEMON_HOME_DIR, $gn_daemon_home_dir)
743 gn_daemon_config_dir="/etc"
744 AC_ARG_WITH(daemon-config-dir,
746 [--with-daemon-config-dir=DIR],
747 [default daemon config directory (/etc)]),
748 [gn_daemon_config_dir=$withval])
749 AC_SUBST(GN_DAEMON_CONFIG_DIR, $gn_daemon_config_dir)
752 GN_LIBINTL="$LTLIBINTL"
753 AC_ARG_ENABLE(framework, [ --enable-framework enable Mac OS X framework build helpers],enable_framework_build=$enableval)
754 AM_CONDITIONAL(WANT_FRAMEWORK, test x$enable_framework_build = xyes)
755 if test x$enable_framework_build = xyes
757 AC_DEFINE([FRAMEWORK_BUILD], 1, [Build a Mac OS X Framework])
758 GN_INTLINCL='-I$(top_srcdir)/src/intlemu'
759 GN_LIBINTL='$(top_builddir)/src/intlemu/libintlemu.la -framework CoreFoundation'
760 AC_LIB_APPENDTOVAR([CPPFLAGS], [$GN_INTLINCL])
763 GN_LIB_LDFLAGS="-export-dynamic -no-undefined"
764 GN_PLUGIN_LDFLAGS="-export-dynamic -avoid-version -module -no-undefined"
766 AC_SUBST(GN_LIB_LDFLAGS)
767 AC_SUBST(GN_PLUGIN_LDFLAGS)
768 AC_SUBST(GN_INTLINCL)
774 AC_SUBST(EXT_LIB_PATH)
779 AC_SUBST(EXT_LIB_PATH)
783 AC_MSG_CHECKING(for sudo)
785 [ --with-sudo=PATH path to sudo binary (or just yes)],
786 [AC_MSG_RESULT("$with_sudo")
795 SUDO_BINARY=$with_sudo
799 [AC_MSG_RESULT([no])])
800 AC_SUBST(SUDO_BINARY)
801 AM_CONDITIONAL([HAVE_SUDO], [test "x$SUDO_BINARY" != "x" -o -w /])
803 # test for gnunetdns group name
804 GNUNETDNS_GROUP=gnunetdns
805 AC_MSG_CHECKING(for gnunetdns group name)
806 AC_ARG_WITH(gnunetdns,
807 [ --with-gnunetdns=GRPNAME name for gnunetdns group],
808 [AC_MSG_RESULT("$with_gnunetdns")
809 case $with_gnunetdns in
811 GNUNETDNS_GROUP=gnunet
814 GNUNETDNS_GROUP=gnunetdns
817 GNUNETDNS_GROUP=$with_gnunetdns
821 [AC_MSG_RESULT([gnunetdns])])
822 AC_SUBST(GNUNETDNS_GROUP)
828 AC_MSG_CHECKING(for gnutls)
830 [ --with-gnutls=PFX base of gnutls installation],
831 [AC_MSG_RESULT([$with_gnutls])
836 AC_CHECK_HEADERS([gnutls/abstract.h],
837 AC_CHECK_LIB([gnutls], [gnutls_priority_set],
841 LDFLAGS="-L$with_gnutls/lib $LDFLAGS"
842 CPPFLAGS="-I$with_gnutls/include $CPPFLAGS"
843 AC_CHECK_HEADERS([gnutls/abstract.h],
844 AC_CHECK_LIB([gnutls], [gnutls_priority_set],
845 EXT_LIB_PATH="-L$with_gnutls/lib $EXT_LIB_PATH"
850 [AC_MSG_RESULT([--with-gnutls not specified])
851 AC_CHECK_HEADERS([gnutls/abstract.h],
852 AC_CHECK_LIB([gnutls], [gnutls_priority_set],
854 AM_CONDITIONAL(HAVE_GNUTLS, test x$gnutls = xtrue)
855 AC_DEFINE_UNQUOTED([HAVE_GNUTLS], $gnutls, [We have gnutls])
859 # should 'make check' run tests?
860 AC_MSG_CHECKING(whether to run tests)
861 AC_ARG_ENABLE([testruns],
862 [AS_HELP_STRING([--disable-testruns], [disable running tests on make check (default is YES)])],
863 [enable_tests_run=${enableval}],
864 [enable_tests_run=yes])
865 AC_MSG_RESULT($enable_test_run)
866 AM_CONDITIONAL([ENABLE_TEST_RUN], [test "x$enable_tests_run" = "xyes"])
869 # should monkey be used when running (certain) services?
870 AC_MSG_CHECKING(whether to run with monkey)
871 AC_ARG_ENABLE([monkey],
872 [AS_HELP_STRING([--enable-monkey], [enable running with monkey])],
873 [enable_monkey=${enableval}],
875 AC_MSG_RESULT($enable_monkey)
876 AM_CONDITIONAL([ENABLE_MONKEY], [test "x$enable_monkey" = "xyes"])
877 if test "x$enable_monkey" = "xyes"
879 MONKEYPREFIX="monkey"
883 AC_SUBST(MONKEYPREFIX)
886 # should expensive tests be run?
887 AC_MSG_CHECKING(whether to run expensive tests)
888 AC_ARG_ENABLE([expensivetests],
889 [AS_HELP_STRING([--enable-expensivetests], [enable running expensive testcases])],
890 [enable_expensive=${enableval}],
891 [enable_expensive=no])
892 AC_MSG_RESULT($enable_expensive)
893 AM_CONDITIONAL([HAVE_EXPENSIVE_TESTS], [test "x$enable_expensive" = "xyes"])
895 # should ports be open for Java services?
896 AC_MSG_CHECKING(whether to enable ports for gnunet-java)
897 AC_ARG_ENABLE([javaports],
898 [AS_HELP_STRING([--enable-javaports], [use non-zero ports for services with Java bindings (default is NO)])],
899 [enable_java_ports=${enableval}],
900 [enable_java_ports=no])
901 AC_MSG_RESULT($enable_java_ports)
902 if test "x$enable_java_ports" = "xyes"
910 # should benchmarks be run?
911 AC_MSG_CHECKING(whether to run benchmarks during make check)
912 AC_ARG_ENABLE([benchmarks],
913 [AS_HELP_STRING([--enable-benchmarks], [enable running benchmarks during make check])],
914 [enable_benchmarks=${enableval}],
915 [enable_benchmarks=no])
916 AC_MSG_RESULT($enable_benchmarks)
917 AM_CONDITIONAL([HAVE_BENCHMARKS], [test "x$enable_benchmarks" = "xyes"])
919 # should experimental code be compiled (code that may not yet compile)?
920 AC_MSG_CHECKING(whether to compile experimental code)
921 AC_ARG_ENABLE([experimental],
922 [AS_HELP_STRING([--enable-experimental], [enable compiling experimental code])],
923 [enable_experimental=${enableval}],
924 [enable_experimental=no])
925 AC_MSG_RESULT($enable_experimental)
926 AM_CONDITIONAL([HAVE_EXPERIMENTAL], [test "x$enable_experimental" = "xyes"])
928 # should code be enabled that works around missing OS functionality on Windows?
929 # used for test cases
930 if test $build_target = "mingw"
936 [#include <ws2tcpip.h>
938 int s = socket (0, 0, 0);])
940 AC_DEFINE_UNQUOTED([HAVE_SOCKET],1,[Define this if socket() is available])
942 AC_DEFINE_UNQUOTED([HAVE_SOCKET],0,[Define this if socket() is available])
947 [#include <ws2tcpip.h>
949 int s = select (0, NULL, NULL, NULL, NULL);])
951 AC_DEFINE_UNQUOTED([HAVE_SELECT],1,[Define this if select() is available])
953 AC_DEFINE_UNQUOTED([HAVE_SELECT],0,[Define this if select() is available])
958 [#include <ws2tcpip.h>
961 char *s = inet_ntoa (i);])
963 AC_DEFINE_UNQUOTED([HAVE_INET_NTOA],1,[Define this if inet_ntoa() is available])
965 AC_DEFINE_UNQUOTED([HAVE_INET_NTOA],0,[Define this if inet_ntoa() is available])
970 [#include <ws2tcpip.h>
972 int s = getnameinfo (NULL, 0, NULL, 0, NULL, 0, 0);])
974 AC_DEFINE_UNQUOTED([HAVE_GETNAMEINFO],1,[Define this if getnameinfo() is available])
976 AC_DEFINE_UNQUOTED([HAVE_GETNAMEINFO],0,[Define this if getnameinfo() is available])
981 [#include <ws2tcpip.h>
983 int s = gethostname (NULL, 0);])
985 AC_DEFINE_UNQUOTED([HAVE_GETHOSTNAME],1,[Define this if gethostname() is available])
987 AC_DEFINE_UNQUOTED([HAVE_GETHOSTNAME],0,[Define this if gethostname() is available])
992 [#include <ws2tcpip.h>
994 void *s = gethostbyname (NULL);])
996 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYNAME],1,[Define this if gethostbyname() is available])
998 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYNAME],0,[Define this if gethostbyname() is available])
1003 [#include <ws2tcpip.h>
1005 void *s = gethostbyaddr (NULL, 0, 0);])
1007 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYADDR],1,[Define this if gethostbyaddr() is available])
1009 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYADDR],0,[Define this if gethostbyaddr() is available])
1014 [#include <ws2tcpip.h>
1016 int s = getaddrinfo (NULL, NULL, NULL, NULL);])
1018 AC_DEFINE_UNQUOTED([HAVE_GETADDRINFO],1,[Define this if getaddrinfo() is available])
1020 AC_DEFINE_UNQUOTED([HAVE_GETADDRINFO],1,[Define this if getaddrinfo() is available])
1024 AC_MSG_CHECKING(whether to enable windows workarounds)
1025 AC_ARG_ENABLE([windows_workarounds],
1026 [AS_HELP_STRING([--enable-windows_workarounds], [enable workarounds used on Windows (only useful for test cases)])],
1027 [enable_workarounds=${enableval}],
1028 [enable_workarounds=no])
1029 AC_MSG_RESULT($enable_workarounds)
1030 if test x$enable_windows_workarounds = "xyes"
1037 AC_DEFINE_UNQUOTED([ENABLE_WINDOWS_WORKAROUNDS], $workarounds, [enable workarounds used on Windows (only useful for test cases)])
1040 AC_MSG_CHECKING(whether to compile with support for code coverage analysis)
1041 AC_ARG_ENABLE([coverage],
1042 AS_HELP_STRING([--enable-coverage],
1043 [compile the library with code coverage support]),
1044 [use_gcov=${enableval}],
1046 AC_MSG_RESULT($use_gcov)
1047 AM_CONDITIONAL([USE_COVERAGE], [test "x$use_gcov" = "xyes"])
1067 src/datacache/Makefile
1068 src/datastore/Makefile
1069 src/datastore/datastore.conf
1077 src/fragmentation/Makefile
1082 src/gns/nss/Makefile
1084 src/include/Makefile
1085 src/include/gnunet_directories.h
1086 src/hostlist/Makefile
1087 src/lockmanager/Makefile
1088 src/lockmanager/lockmanager.conf
1092 src/namestore/Makefile
1093 src/namestore/namestore.conf
1097 src/peerinfo/Makefile
1098 src/peerinfo/peerinfo.conf
1099 src/peerinfo-tool/Makefile
1100 src/postgres/Makefile
1103 src/statistics/Makefile
1104 src/statistics/statistics.conf
1106 src/template/Makefile
1107 src/testbed/Makefile
1108 src/testbed/testbed.conf
1109 src/testing/Makefile
1110 src/testing_old/Makefile
1111 src/topology/Makefile
1112 src/transport/Makefile
1113 src/transport/transport.conf
1116 src/util/resolver.conf
1119 src/integration-tests/Makefile
1121 pkgconfig/gnunetarm.pc
1122 pkgconfig/gnunetblock.pc
1123 pkgconfig/gnunetcore.pc
1124 pkgconfig/gnunetdatacache.pc
1125 pkgconfig/gnunetdatastore.pc
1126 pkgconfig/gnunetdht.pc
1127 pkgconfig/gnunetdhtlog.pc
1128 pkgconfig/gnunetdv.pc
1129 pkgconfig/gnunetfragmentation.pc
1130 pkgconfig/gnunetfs.pc
1131 pkgconfig/gnunethello.pc
1132 pkgconfig/gnunetnat.pc
1133 pkgconfig/gnunetnse.pc
1134 pkgconfig/gnunetpeerinfo.pc
1135 pkgconfig/gnunetregex.pc
1136 pkgconfig/gnunetstatistics.pc
1137 pkgconfig/gnunettesting.pc
1138 pkgconfig/gnunettransport.pc
1139 pkgconfig/gnunetutil.pc
1145 # warn user if mysql found but not used due to version
1146 if test "$mysqlfail" = "true"
1148 AC_MSG_NOTICE([NOTICE: MySQL found, but too old. MySQL support will not be compiled.])
1152 if test "x$sqlite" = "x0"
1154 AC_MSG_NOTICE([NOTICE: sqlite not found. sqLite support will not be compiled.])
1158 if test "x$curl" = "x0"
1160 AC_MSG_NOTICE([NOTICE: libcurl not found. http client support will not be compiled.])
1164 if test x$gnutls != xtrue
1166 AC_MSG_NOTICE([NOTICE: gnutls not found, gnunet-gns-proxy will not be built])
1170 if test "x$enable_java_ports" = "xyes"
1172 AC_MSG_NOTICE([NOTICE: opening ports for gnunet-java bindings by default.])
1175 if test "x$lmhd" != "x1"
1177 AC_MSG_NOTICE([NOTICE: libmicrohttpd not found, http transport will not be installed.])
1180 AC_MSG_NOTICE([NOTICE: Database support is set to MySQL: $mysql, SQLite: $sqlite, Postgres: $postgres])
1182 if test "$enable_framework_build" = "yes"
1184 AC_MSG_NOTICE([NOTICE: Mac OS X framework build enabled.])
1187 if test "x$SUDO_BINARY" = "x" -a ! -w /
1189 AC_MSG_NOTICE([NOTICE: --with-sudo not specified and not running as 'root', will not install GNS NSS library])
1193 AC_MSG_NOTICE([********************************************
1194 Please make sure that you have created a user and group 'gnunet'
1195 and additionally a group 'gnunetdns'. Make sure that '/var/lib/gnunet'
1196 is owned (and writable) by user 'gnunet'. Then, you can compile GNUnet
1199 After that, run (if necessary as 'root')
1201 to install everything.
1202 Then, in order to start your peer, run as the 'gnunet' user
1203 mkdir ~gnunet/.gnunet/
1204 touch ~gnunet/.gnunet/gnunet.conf
1207 Each GNUnet user should also be added to the 'gnunet' group (may
1208 require fresh login to come into effect) and create an (at least
1209 initially) empty configuration file:
1210 mkdir $HOME/.gnunet/
1211 touch $HOME/.gnunet/gnunet.conf
1213 Optionally, download and compile:
1214 - gnunet-gtk to get a GUI for file-sharing and configuration.
1215 ********************************************])