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"
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="-no-cpp-precomp -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 LDFLAGS="$LDFLAGS -no-undefined"
142 CFLAGS="-mms-bitfields $CFLAGS"
143 build_target="cygwin"
150 AC_DEFINE_UNQUOTED(MINGW,1,[This is a MinGW system])
151 AC_DEFINE_UNQUOTED(WINDOWS,1,[This is a Windows system])
152 AC_DEFINE_UNQUOTED(_WIN32,1,[This is a Windows system])
153 AC_CHECK_LIB(intl, gettext)
154 LDFLAGS="$LDFLAGS -Wl,-no-undefined -Wl,--export-all-symbols"
155 LIBS="$LIBS -lws2_32 -lplibc -lgnurx -lole32"
156 CFLAGS="-mms-bitfields $CFLAGS"
157 CPPFLAGS="-D_WIN32_WINNT=0x0501 -DHAVE_STAT64=1 $CPPFLAGS"
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]))
205 # 'save' libs; only those libs found so far will be
206 # linked against _everywhere_. For the others, we
207 # will be more selective!
210 # libgnurx (regex library for W32)
212 AC_CHECK_LIB(gnurx, regexec, gnurx=1)
213 if test "x$gnurx" = "x0" -a "x$build_target" = "xmingw"
215 AC_MSG_ERROR([on W32 GNUnet needs libgnurx])
220 AM_PATH_LIBGCRYPT(1.2.0, gcrypt=1)
221 AC_CHECK_DECLS([gcry_mpi_lshift], [], [], [[#include <gcrypt.h>]])
225 AC_MSG_ERROR([GNUnet needs libgcrypt])
228 # Adam shostack suggests the following for Windows:
229 # -D_FORTIFY_SOURCE=2 -fstack-protector-all
230 AC_ARG_ENABLE(gcc-hardening,
231 AS_HELP_STRING(--enable-gcc-hardening, enable compiler security checks),
232 [if test x$enableval = xyes; then
233 CFLAGS="$CFLAGS -D_FORTIFY_SOURCE=2 -fstack-protector-all"
234 CFLAGS="$CFLAGS -fwrapv -fPIE -Wstack-protector"
235 CFLAGS="$CFLAGS --param ssp-buffer-size=1"
236 LDFLAGS="$LDFLAGS -pie"
240 # Linker hardening options
241 # Currently these options are ELF specific - you can't use this with MacOSX
242 AC_ARG_ENABLE(linker-hardening,
243 AS_HELP_STRING(--enable-linker-hardening, enable linker security fixups),
244 [if test x$enableval = xyes; then
245 LDFLAGS="$LDFLAGS -z relro -z now"
249 extra_logging=GNUNET_NO
250 AC_ARG_ENABLE([logging],
251 AS_HELP_STRING([--enable-logging@<:@=value@:>@],[Enable logging calls. Possible values: yes,no,verbose,veryverbose ('yes' is the default)]),
252 [AS_IF([test "x$enableval" = "xyes"], [],
253 [test "x$enableval" = "xno"], [AC_DEFINE([GNUNET_CULL_LOGGING],[],[Define to cull all logging calls])],
254 [test "x$enableval" = "xverbose"], [extra_logging=GNUNET_YES]
255 [test "x$enableval" = "xveryverbose"], [extra_logging=\(GNUNET_YES+1\)])
257 AC_DEFINE_UNQUOTED([GNUNET_EXTRA_LOGGING],[$extra_logging],[1 if extra logging is enabled, 2 for very verbose extra logging, 0 otherwise])
259 # should memory poisoning be enabled?
260 AC_MSG_CHECKING(whether to poison freed memory)
261 AC_ARG_ENABLE([poisoning],
262 [AS_HELP_STRING([--enable-poisoning], [enable poisoning of freed memory (good for debugging)])],
263 [enable_poisoning=${enableval}],
265 if test "x$extra_logging" != "xGNUNET_NO"; then
266 enable_poisoning="defaults to yes (extra logging is enabled)"
271 AC_MSG_RESULT($enable_poisoning)
272 if test ! "x$enable_poisoning" = "xno"; then
277 AC_DEFINE_UNQUOTED([ENABLE_POISONING],[$enable_poisoning],[1 if freed memory should be poisoned, 0 otherwise])
279 if test $build = $target
281 AC_MSG_CHECKING([for working HMAC])
283 LIBS="$LIBS $LIBGCRYPT_LIBS"
284 CFLAGS="$CFLAGS $LIBGCRYPT_CFLAGS"
286 [AC_LANG_PROGRAM([#include <gcrypt.h>
287 #include <stdio.h>], [[
290 unsigned char data[] = { 0xbf, 0x16, 0x6e, 0x46, 0x3a, 0x6c, 0xf3, 0x93, 0xa7, 0x72,
291 0x11, 0xa1, 0xdc, 0x0b, 0x07, 0xdb, 0x1a, 0x5e, 0xd9, 0xb9, 0x81, 0xbe,
292 0xea, 0xe4, 0x31, 0x5f, 0x24, 0xff, 0xfe, 0x50, 0x8a, 0xde };
293 unsigned char key[] = { 0xfc, 0x62, 0x76, 0x35 };
294 unsigned char result[] = {0xa2, 0xb, 0x1, 0xd9, 0xc0, 0x8b, 0x5a, 0x12, 0x80,
295 0xd5, 0x50, 0x12, 0x8e, 0xd0, 0x5b, 0xb6, 0x5c, 0x87, 0x24, 0xe2, 0xd0,
296 0xd2, 0xaf, 0x63, 0xae, 0xd1, 0xd6, 0x64, 0x14, 0xe3, 0x6e, 0x61, 0x5b,
297 0xd, 0xba, 0x17, 0x7d, 0xd3, 0x10, 0xb1, 0x37, 0x41, 0x91, 0x7d, 0xeb,
298 0x1, 0x4d, 0x71, 0xe8, 0x59, 0x71, 0x42, 0x8e, 0xd6, 0xf3, 0x29, 0x3b,
299 0x90, 0xf2, 0xd1, 0xaf, 0x65, 0x1e, 0xb3};
301 if (!gcry_check_version (GCRYPT_VERSION))
303 fprintf (stderr, "Version mismatch %s <-> %s \n", gcry_check_version (NULL), GCRYPT_VERSION);
307 gcry_control (GCRYCTL_DISABLE_SECMEM, 0);
308 gcry_control (GCRYCTL_INITIALIZATION_FINISHED, 0);
310 if (gcry_md_open(&mac, GCRY_MD_SHA512, GCRY_MD_FLAG_HMAC) != GPG_ERR_NO_ERROR)
312 fprintf (stderr, "gcry_md_open error\n");
316 gcry_md_setkey (mac, key, sizeof (key));
317 gcry_md_write (mac, data, sizeof (data));
319 if (memcmp(gcry_md_read (mac, 0), result, gcry_md_get_algo_dlen (gcry_md_get_algo (mac))) != 0)
321 fprintf (stderr, "memcmp error\n");
329 [AC_MSG_RESULT([yes])],
334 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.])
338 AC_MSG_FAILURE([HMAC test failed])
342 AC_MSG_FAILURE([libgcrypt header version does not match library version])
346 fi # $build = $target
349 LIBCURL_CHECK_CONFIG(,7.21.3,curl=1,curl=0)
352 AM_CONDITIONAL(HAVE_LIBCURL, true)
353 AC_DEFINE([HAVE_LIBCURL],[1],[Have libcurl])
355 AM_CONDITIONAL(HAVE_LIBCURL, false)
361 AC_CHECK_HEADERS([glpk.h],[glpk=true],[gplk=false])
362 AC_CHECK_LIB([glpk],[glp_create_prob],,[gplk=false])
363 # GLPK must support atm MLP presolving, version >= 4.32
364 AC_CHECK_MEMBERS(glp_iocp.presolve,,[gplk=false],[[#include <glpk.h>]])
365 if test x$gplk = xfalse
367 AM_CONDITIONAL(HAVE_LIBGLPK, false)
368 AC_MSG_WARN([GNUnet requires GLPK >= 4.32])
370 AM_CONDITIONAL(HAVE_LIBGLPK, true)
371 AC_DEFINE([HAVE_LIBGLPK],[1],[Have GLPK])
376 AC_CHECK_HEADERS([nss.h],[nss=true],[nss=false])
377 if test x$nss = xfalse
379 AM_CONDITIONAL(HAVE_GLIBCNSS, false)
380 AC_MSG_WARN([No GNU libc nss header, will not build NSS plugin])
382 AM_CONDITIONAL(HAVE_GLIBCNSS, true)
387 # test for kvm and kstat (for CPU stats under BSD/Solaris)
388 AC_CHECK_LIB([kvm],[kvm_open])
389 AC_CHECK_LIB([kstat],[kstat_open])
391 # test for libextractor
393 AC_MSG_CHECKING(for libextractor)
394 AC_ARG_WITH(extractor,
395 [ --with-extractor=PFX base of libextractor installation],
396 [AC_MSG_RESULT([$with_extractor])
397 case $with_extractor in
401 AC_CHECK_HEADERS(extractor.h,
402 AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
406 LDFLAGS="-L$with_extractor/lib $LDFLAGS"
407 CPPFLAGS="-I$with_extractor/include $CPPFLAGS"
408 AC_CHECK_HEADERS(extractor.h,
409 AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
410 EXT_LIB_PATH="-L$with_extractor/lib $EXT_LIB_PATH"
415 [AC_MSG_RESULT([--with-extractor not specified])
416 AC_CHECK_HEADERS(extractor.h,
417 AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
419 if test "$extractor" != 1
421 AC_MSG_ERROR([GNUnet requires libextractor])
426 # test for libunistring
428 if test $HAVE_LIBUNISTRING != yes; then
429 AC_MSG_ERROR([GNUnet requires libunistring])
431 if test $gl_libunistring_hexversion -le 2305; then
432 AC_MSG_ERROR([GNUnet requires libunistring >= 0.9.1.1])
439 # Checks for standard header files.
443 # Check for headers that are ALWAYS required
444 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]))
446 # Checks for headers that are only required on some systems or opional (and where we do NOT abort if they are not there)
447 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])
449 SAVE_LDFLAGS=$LDFLAGS
450 SAVE_CPPFLAGS=$CPPFLAGS
454 AC_MSG_CHECKING(for SQLite)
456 [ --with-sqlite=PFX base of SQLite installation],
457 [AC_MSG_RESULT("$with_sqlite")
462 AC_CHECK_HEADERS(sqlite3.h,
466 LDFLAGS="-L$with_sqlite/lib $LDFLAGS"
467 CPPFLAGS="-I$with_sqlite/include $CPPFLAGS"
468 AC_CHECK_HEADERS(sqlite3.h,
469 EXT_LIB_PATH="-L$with_sqlite/lib $EXT_LIB_PATH"
470 SQLITE_LDFLAGS="-L$with_sqlite/lib"
471 SQLITE_CPPFLAGS="-I$with_sqlite/include"
473 LDFLAGS=$SAVE_LDFLAGS
474 CPPFLAGS=$SAVE_CPPFLAGS
478 [AC_MSG_RESULT([--with-sqlite not specified])
479 AC_CHECK_HEADERS(sqlite3.h, sqlite=true)])
480 AM_CONDITIONAL(HAVE_SQLITE, test x$sqlite = xtrue)
481 AC_SUBST(SQLITE_CPPFLAGS)
482 AC_SUBST(SQLITE_LDFLAGS)
486 AC_MSG_CHECKING(for postgres)
487 AC_ARG_WITH(postgres,
488 [ --with-postgres=PFX base of postgres installation],
489 [AC_MSG_RESULT("$with_postgres")
490 case $with_postgres in
494 AC_CHECK_HEADERS(postgresql/libpq-fe.h,
498 LDFLAGS="-L$with_postgres/lib $LDFLAGS"
499 CPPFLAGS="-I$with_postgres/include $CPPFLAGS"
500 AC_CHECK_HEADERS(postgresql/libpq-fe.h,
501 EXT_LIB_PATH="-L$with_postgres/lib $EXT_LIB_PATH"
502 POSTGRES_LDFLAGS="-L$with_postgres/lib"
503 POSTGRES_CPPFLAGS="-I$with_postgres/include"
505 LDFLAGS=$SAVE_LDFLAGS
506 CPPFLAGS=$SAVE_CPPFLAGS
510 [AC_MSG_RESULT([--with-postgres not specified])
511 AC_CHECK_HEADERS(postgresql/libpq-fe.h, postgres=true)])
512 AM_CONDITIONAL(HAVE_POSTGRES, test x$postgres = xtrue)
513 AC_SUBST(POSTGRES_CPPFLAGS)
514 AC_SUBST(POSTGRES_LDFLAGS)
516 # test for libz (maybe required for linking mysql)
518 AC_CHECK_LIB(z, compress,,zlib=0)
519 AM_CONDITIONAL(HAVE_ZLIB, test x$zlib = x1)
522 AC_MSG_ERROR([GNUnet requires zlib])
526 AC_CHECK_TYPES([sigset_t, off_t], [], [], [#include <sys/types.h>])
527 AC_CHECK_TYPES([size_t], [], [], [#include <stdio.h>])
529 if test "$build_target" = "mingw"
531 CYGWIN_MYSQL_MAGIC="#include <mysql/my_global.h>"
537 SAVE_LDFLAGS=$LDFLAGS
538 SAVE_CPPFLAGS=$CPPFLAGS
539 AC_MSG_CHECKING(for mysql)
541 [ --with-mysql=PFX base of MySQL installation],
542 [AC_MSG_RESULT("$with_mysql")
543 if test "$with_mysql" != "no"
545 if test "$with_mysql" != "yes"
547 LDFLAGS="-L$with_mysql/lib -L$with_mysql/lib/mysql $LDFLAGS $ZLIBS"
548 CPPFLAGS="-I$with_mysql/include $CPPFLAGS"
550 AC_CHECK_HEADERS(mysql/mysql.h,
551 AC_CHECK_LIB(mysqlclient, mysql_init,
552 MYSQL_LDFLAGS="-L$with_mysql/lib -L$with_mysql/lib/mysql"
553 MYSQL_CPPFLAGS="-I$with_mysql/include"
555 mysql=true), [], [$CYGWIN_MYSQL_MAGIC])
558 [AC_MSG_RESULT([--with-mysql not specified])
559 LDFLAGS="-L/usr/lib/mysql $LDFLAGS $ZLIBS"
560 AC_CHECK_LIB(mysqlclient, mysql_init,
561 [AC_CHECK_HEADERS(mysql/mysql.h,
562 MYSQL_LDFLAGS="-L/usr/lib/mysql"
565 , [], [$CYGWIN_MYSQL_MAGIC])])
568 AC_SUBST(MYSQL_LDFLAGS)
569 AC_SUBST(MYSQL_CPPFLAGS)
571 # additional version check for mysql
572 AC_ARG_ENABLE(mysql-version-check, [ --disable-mysql-version-check do not check MySQL version],, enable_mysql_version_check=yes)
573 if test "$mysql" = "true" -a "x$enable_mysql_version_check" = "xyes"
575 AC_MSG_CHECKING(mysql version)
576 AC_RUN_IFELSE([AC_LANG_PROGRAM(
577 [[$CYGWIN_MYSQL_MAGIC
578 #include <mysql/mysql.h>]],
579 [[if (MYSQL_VERSION_ID < 40100)
584 ],mysql=true,mysql=false)
585 if test "$mysql" = "false"
588 AC_MSG_RESULT([fail, >= 4.1 required])
593 AM_CONDITIONAL(HAVE_MYSQL, test x$mysql = xtrue)
594 AM_CONDITIONAL(HAVE_MYSQLE, test "0" = "1")
597 LDFLAGS=$SAVE_LDFLAGS
598 CPPFLAGS=$SAVE_CPPFLAGS
600 if test "$sqlite" = 0 -a "$mysql" = 0
602 AC_MSG_ERROR([GNUnet requires SQLite or MySQL])
607 AC_MSG_CHECKING([for libmicrohttpd])
608 AC_ARG_WITH(microhttpd,
609 [ --with-microhttpd=PFX base of libmicrohttpd installation],
610 [AC_MSG_RESULT([$with_microhttpd])
611 case $with_microhttpd in
615 AC_CHECK_HEADERS([microhttpd.h],
616 AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
617 AC_CHECK_LIB([microhttpd], [MHD_start_daemon],
618 [AC_MSG_CHECKING([for libmicrohttpd >= 0.9.18])
620 #include "$srcdir/src/include/platform.h"
621 #include <microhttpd.h>
622 int main () { return MHD_VERSION >= 0x0091200 ? 0 : 1; }
625 lmhd=1],[AC_MSG_RESULT(failed)],lmhd=1)]),
626 [],[#include "$srcdir/src/include/platform.h"
627 #include <microhttpd.h>]),,
628 [#include "$srcdir/src/include/platform.h"])
631 LDFLAGS="-L$with_microhttpd/lib $LDFLAGS"
632 CPPFLAGS="-I$with_microhttpd/include $CPPFLAGS"
633 AC_CHECK_HEADERS(microhttpd.h,
634 AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
635 AC_CHECK_LIB([microhttpd], [MHD_start_daemon],
636 EXT_LIB_PATH="-L$with_microhttpd/lib $EXT_LIB_PATH"
637 [AC_MSG_CHECKING([for libmicrohttpd >= 0.9.18])
639 #include "$srcdir/src/include/platform.h"
640 #include <microhttpd.h>
641 int main () { return MHD_VERSION >= 0x0091200 ? 0 : 1; }
644 lmhd=1],[AC_MSG_RESULT(failed)],lmhd=1)]),
645 [],[#include "$srcdir/src/include/platform.h"
646 #include <microhttpd.h>]),,
647 [#include "$srcdir/src/include/platform.h"])
651 [AC_MSG_RESULT([--with-microhttpd not specified])
652 AC_CHECK_HEADERS([microhttpd.h],
653 AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
654 AC_CHECK_LIB([microhttpd], [MHD_start_daemon],
655 [AC_MSG_CHECKING([for libmicrohttpd >= 0.9.18])
657 #include "$srcdir/src/include/platform.h"
658 #include <microhttpd.h>
659 int main () { return MHD_VERSION >= 0x0091200 ? 0 : 1; }
662 lmhd=1],[AC_MSG_RESULT(failed)],lmhd=1)]),
663 [],[#include "$srcdir/src/include/platform.h"
664 #include <microhttpd.h>]),,
665 [#include "$srcdir/src/include/platform.h"])])
666 AM_CONDITIONAL(HAVE_MHD, test x$lmhd = x1)
667 AC_DEFINE_UNQUOTED([HAVE_MHD], $lmhd, [We have libmicrohttpd])
673 # check for python & pexpect (used for some testcases only)
674 AM_PATH_PYTHON([2.6],, [:])
675 AM_CONDITIONAL([HAVE_PYTHON], [test "$PYTHON" != :])
678 AM_GNU_GETTEXT([external])
679 AM_GNU_GETTEXT_VERSION([0.16.1])
684 # Checks for standard typedefs, structures, and compiler characteristics.
693 AC_CHECK_MEMBER([struct sockaddr_in.sin_len],
694 [ AC_DEFINE(HAVE_SOCKADDR_IN_SIN_LEN, 1, [Do we have sockaddr_in.sin_len?])
698 #include <sys/types.h>
699 #include <sys/socket.h>
700 #include <netinet/in.h>
705 # Checks for library functions.
706 AC_FUNC_CLOSEDIR_VOID
708 AC_PROG_GCC_TRADITIONAL
710 AC_FUNC_SELECT_ARGTYPES
720 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])
725 gn_user_home_dir="~/.gnunet"
726 AC_ARG_WITH(user-home-dir,
728 [--with-user-home-dir=DIR],
729 [default user home directory (~/.gnunet)]),
730 [gn_user_home_dir=$withval])
731 AC_SUBST(GN_USER_HOME_DIR, $gn_user_home_dir)
732 gn_daemon_home_dir="/var/lib/gnunet"
733 AC_ARG_WITH(daemon-home-dir,
735 [--with-daemon-home-dir=DIR],
736 [default daemon home directory (/var/lib/gnunet)]),
737 [gn_daemon_home_dir=$withval])
738 AC_SUBST(GN_DAEMON_HOME_DIR, $gn_daemon_home_dir)
739 gn_daemon_config_dir="/etc"
740 AC_ARG_WITH(daemon-config-dir,
742 [--with-daemon-config-dir=DIR],
743 [default daemon config directory (/etc)]),
744 [gn_daemon_config_dir=$withval])
745 AC_SUBST(GN_DAEMON_CONFIG_DIR, $gn_daemon_config_dir)
748 GN_LIBINTL="$LTLIBINTL"
749 AC_ARG_ENABLE(framework, [ --enable-framework enable Mac OS X framework build helpers],enable_framework_build=$enableval)
750 AM_CONDITIONAL(WANT_FRAMEWORK, test x$enable_framework_build = xyes)
751 if test x$enable_framework_build = xyes
753 AC_DEFINE([FRAMEWORK_BUILD], 1, [Build a Mac OS X Framework])
754 GN_INTLINCL='-I$(top_srcdir)/src/intlemu'
755 GN_LIBINTL='$(top_builddir)/src/intlemu/libintlemu.la -framework CoreFoundation'
756 AC_LIB_APPENDTOVAR([CPPFLAGS], [$GN_INTLINCL])
759 GN_LIB_LDFLAGS="-export-dynamic -no-undefined"
760 GN_PLUGIN_LDFLAGS="-export-dynamic -avoid-version -module -no-undefined"
762 AC_SUBST(GN_LIB_LDFLAGS)
763 AC_SUBST(GN_PLUGIN_LDFLAGS)
764 AC_SUBST(GN_INTLINCL)
770 AC_SUBST(EXT_LIB_PATH)
775 AC_SUBST(EXT_LIB_PATH)
779 AC_MSG_CHECKING(for sudo)
781 [ --with-sudo=PATH path to sudo binary (or just yes)],
782 [AC_MSG_RESULT("$with_sudo")
791 SUDO_BINARY=$with_sudo
795 [AC_MSG_RESULT([no])])
796 AC_SUBST(SUDO_BINARY)
797 AM_CONDITIONAL([HAVE_SUDO], [test "x$SUDO_BINARY" != "x" -o -w /])
799 # test for gnunetdns group name
800 GNUNETDNS_GROUP=gnunetdns
801 AC_MSG_CHECKING(for gnunetdns group name)
802 AC_ARG_WITH(gnunetdns,
803 [ --with-gnunetdns=GRPNAME name for gnunetdns group],
804 [AC_MSG_RESULT("$with_gnunetdns")
805 case $with_gnunetdns in
807 GNUNETDNS_GROUP=gnunet
810 GNUNETDNS_GROUP=gnunetdns
813 GNUNETDNS_GROUP=$with_gnunetdns
817 [AC_MSG_RESULT([gnunetdns])])
818 AC_SUBST(GNUNETDNS_GROUP)
824 AC_MSG_CHECKING(for gnutls)
826 [ --with-gnutls=PFX base of gnutls installation],
827 [AC_MSG_RESULT([$with_gnutls])
832 AC_CHECK_HEADERS([gnutls/abstract.h],
833 AC_CHECK_LIB([gnutls], [gnutls_priority_set],
837 LDFLAGS="-L$with_gnutls/lib $LDFLAGS"
838 CPPFLAGS="-I$with_gnutls/include $CPPFLAGS"
839 AC_CHECK_HEADERS([gnutls/abstract.h],
840 AC_CHECK_LIB([gnutls], [gnutls_priority_set],
841 EXT_LIB_PATH="-L$with_gnutls/lib $EXT_LIB_PATH"
846 [AC_MSG_RESULT([--with-gnutls not specified])
847 AC_CHECK_HEADERS([gnutls/abstract.h],
848 AC_CHECK_LIB([gnutls], [gnutls_priority_set],
850 AM_CONDITIONAL(HAVE_GNUTLS, test x$gnutls = xtrue)
851 AC_DEFINE_UNQUOTED([HAVE_GNUTLS], $gnutls, [We have gnutls])
855 # should 'make check' run tests?
856 AC_MSG_CHECKING(whether to run tests)
857 AC_ARG_ENABLE([testruns],
858 [AS_HELP_STRING([--disable-testruns], [disable running tests on make check (default is YES)])],
859 [enable_tests_run=${enableval}],
860 [enable_tests_run=yes])
861 AC_MSG_RESULT($enable_test_run)
862 AM_CONDITIONAL([ENABLE_TEST_RUN], [test "x$enable_tests_run" = "xyes"])
865 # should monkey be used when running (certain) services?
866 AC_MSG_CHECKING(whether to run with monkey)
867 AC_ARG_ENABLE([monkey],
868 [AS_HELP_STRING([--enable-monkey], [enable running with monkey])],
869 [enable_monkey=${enableval}],
871 AC_MSG_RESULT($enable_monkey)
872 AM_CONDITIONAL([ENABLE_MONKEY], [test "x$enable_monkey" = "xyes"])
873 if test "x$enable_monkey" = "xyes"
875 MONKEYPREFIX="monkey"
879 AC_SUBST(MONKEYPREFIX)
882 # should expensive tests be run?
883 AC_MSG_CHECKING(whether to run expensive tests)
884 AC_ARG_ENABLE([expensivetests],
885 [AS_HELP_STRING([--enable-expensivetests], [enable running expensive testcases])],
886 [enable_expensive=${enableval}],
887 [enable_expensive=no])
888 AC_MSG_RESULT($enable_expensive)
889 AM_CONDITIONAL([HAVE_EXPENSIVE_TESTS], [test "x$enable_expensive" = "xyes"])
891 # should ports be open for Java services?
892 AC_MSG_CHECKING(whether to enable ports for gnunet-java)
893 AC_ARG_ENABLE([javaports],
894 [AS_HELP_STRING([--enable-javaports], [use non-zero ports for services with Java bindings (default is NO)])],
895 [enable_java_ports=${enableval}],
896 [enable_java_ports=no])
897 AC_MSG_RESULT($enable_java_ports)
898 if test "x$enable_java_ports" = "xyes"
906 # should benchmarks be run?
907 AC_MSG_CHECKING(whether to run benchmarks during make check)
908 AC_ARG_ENABLE([benchmarks],
909 [AS_HELP_STRING([--enable-benchmarks], [enable running benchmarks during make check])],
910 [enable_benchmarks=${enableval}],
911 [enable_benchmarks=no])
912 AC_MSG_RESULT($enable_benchmarks)
913 AM_CONDITIONAL([HAVE_BENCHMARKS], [test "x$enable_benchmarks" = "xyes"])
915 # should experimental code be compiled (code that may not yet compile)?
916 AC_MSG_CHECKING(whether to compile experimental code)
917 AC_ARG_ENABLE([experimental],
918 [AS_HELP_STRING([--enable-experimental], [enable compiling experimental code])],
919 [enable_experimental=${enableval}],
920 [enable_experimental=no])
921 AC_MSG_RESULT($enable_experimental)
922 AM_CONDITIONAL([HAVE_EXPERIMENTAL], [test "x$enable_experimental" = "xyes"])
924 # should code be enabled that works around missing OS functionality on Windows?
925 # used for test cases
926 if test $build_target = "mingw"
932 [#include <ws2tcpip.h>
934 int s = socket (0, 0, 0);])
936 AC_DEFINE_UNQUOTED([HAVE_SOCKET],1,[Define this if socket() is available])
938 AC_DEFINE_UNQUOTED([HAVE_SOCKET],0,[Define this if socket() is available])
943 [#include <ws2tcpip.h>
945 int s = select (0, NULL, NULL, NULL, NULL);])
947 AC_DEFINE_UNQUOTED([HAVE_SELECT],1,[Define this if select() is available])
949 AC_DEFINE_UNQUOTED([HAVE_SELECT],0,[Define this if select() is available])
954 [#include <ws2tcpip.h>
957 char *s = inet_ntoa (i);])
959 AC_DEFINE_UNQUOTED([HAVE_INET_NTOA],1,[Define this if inet_ntoa() is available])
961 AC_DEFINE_UNQUOTED([HAVE_INET_NTOA],0,[Define this if inet_ntoa() is available])
966 [#include <ws2tcpip.h>
968 int s = getnameinfo (NULL, 0, NULL, 0, NULL, 0, 0);])
970 AC_DEFINE_UNQUOTED([HAVE_GETNAMEINFO],1,[Define this if getnameinfo() is available])
972 AC_DEFINE_UNQUOTED([HAVE_GETNAMEINFO],0,[Define this if getnameinfo() is available])
977 [#include <ws2tcpip.h>
979 int s = gethostname (NULL, 0);])
981 AC_DEFINE_UNQUOTED([HAVE_GETHOSTNAME],1,[Define this if gethostname() is available])
983 AC_DEFINE_UNQUOTED([HAVE_GETHOSTNAME],0,[Define this if gethostname() is available])
988 [#include <ws2tcpip.h>
990 void *s = gethostbyname (NULL);])
992 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYNAME],1,[Define this if gethostbyname() is available])
994 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYNAME],0,[Define this if gethostbyname() is available])
999 [#include <ws2tcpip.h>
1001 void *s = gethostbyaddr (NULL, 0, 0);])
1003 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYADDR],1,[Define this if gethostbyaddr() is available])
1005 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYADDR],0,[Define this if gethostbyaddr() is available])
1010 [#include <ws2tcpip.h>
1012 int s = getaddrinfo (NULL, NULL, NULL, NULL);])
1014 AC_DEFINE_UNQUOTED([HAVE_GETADDRINFO],1,[Define this if getaddrinfo() is available])
1016 AC_DEFINE_UNQUOTED([HAVE_GETADDRINFO],1,[Define this if getaddrinfo() is available])
1020 AC_MSG_CHECKING(whether to enable windows workarounds)
1021 AC_ARG_ENABLE([windows_workarounds],
1022 [AS_HELP_STRING([--enable-windows_workarounds], [enable workarounds used on Windows (only useful for test cases)])],
1023 [enable_workarounds=${enableval}],
1024 [enable_workarounds=no])
1025 AC_MSG_RESULT($enable_workarounds)
1026 if test x$enable_windows_workarounds = "xyes"
1033 AC_DEFINE_UNQUOTED([ENABLE_WINDOWS_WORKAROUNDS], $workarounds, [enable workarounds used on Windows (only useful for test cases)])
1036 AC_MSG_CHECKING(whether to compile with support for code coverage analysis)
1037 AC_ARG_ENABLE([coverage],
1038 AS_HELP_STRING([--enable-coverage],
1039 [compile the library with code coverage support]),
1040 [use_gcov=${enableval}],
1042 AC_MSG_RESULT($use_gcov)
1043 AM_CONDITIONAL([USE_COVERAGE], [test "x$use_gcov" = "xyes"])
1063 src/datacache/Makefile
1064 src/datastore/Makefile
1065 src/datastore/datastore.conf
1073 src/fragmentation/Makefile
1078 src/gns/nss/Makefile
1080 src/include/Makefile
1081 src/include/gnunet_directories.h
1082 src/hostlist/Makefile
1083 src/lockmanager/Makefile
1084 src/lockmanager/lockmanager.conf
1088 src/namestore/Makefile
1089 src/namestore/namestore.conf
1093 src/peerinfo/Makefile
1094 src/peerinfo/peerinfo.conf
1095 src/peerinfo-tool/Makefile
1096 src/postgres/Makefile
1099 src/statistics/Makefile
1100 src/statistics/statistics.conf
1102 src/template/Makefile
1103 src/testbed/Makefile
1104 src/testbed/testbed.conf
1105 src/testing/Makefile
1106 src/testing_old/Makefile
1107 src/topology/Makefile
1108 src/transport/Makefile
1109 src/transport/transport.conf
1112 src/util/resolver.conf
1115 src/integration-tests/Makefile
1117 pkgconfig/gnunetarm.pc
1118 pkgconfig/gnunetblock.pc
1119 pkgconfig/gnunetcore.pc
1120 pkgconfig/gnunetdatacache.pc
1121 pkgconfig/gnunetdatastore.pc
1122 pkgconfig/gnunetdht.pc
1123 pkgconfig/gnunetdhtlog.pc
1124 pkgconfig/gnunetdv.pc
1125 pkgconfig/gnunetfragmentation.pc
1126 pkgconfig/gnunetfs.pc
1127 pkgconfig/gnunethello.pc
1128 pkgconfig/gnunetnat.pc
1129 pkgconfig/gnunetnse.pc
1130 pkgconfig/gnunetpeerinfo.pc
1131 pkgconfig/gnunetregex.pc
1132 pkgconfig/gnunetstatistics.pc
1133 pkgconfig/gnunettesting.pc
1134 pkgconfig/gnunettransport.pc
1135 pkgconfig/gnunetutil.pc
1141 # warn user if mysql found but not used due to version
1142 if test "$mysqlfail" = "true"
1144 AC_MSG_NOTICE([NOTICE: MySQL found, but too old. MySQL support will not be compiled.])
1148 if test "x$sqlite" = "x0"
1150 AC_MSG_NOTICE([NOTICE: sqlite not found. sqLite support will not be compiled.])
1154 if test "x$curl" = "x0"
1156 AC_MSG_NOTICE([NOTICE: libcurl not found. http client support will not be compiled.])
1160 if test x$gnutls != xtrue
1162 AC_MSG_NOTICE([NOTICE: gnutls not found, gnunet-gns-proxy will not be built])
1166 if test "x$enable_java_ports" = "xyes"
1168 AC_MSG_NOTICE([NOTICE: opening ports for gnunet-java bindings by default.])
1171 if test "x$lmhd" != "x1"
1173 AC_MSG_NOTICE([NOTICE: libmicrohttpd not found, http transport will not be installed.])
1176 AC_MSG_NOTICE([NOTICE: Database support is set to MySQL: $mysql, SQLite: $sqlite, Postgres: $postgres])
1178 if test "$enable_framework_build" = "yes"
1180 AC_MSG_NOTICE([NOTICE: Mac OS X framework build enabled.])
1183 if test "x$SUDO_BINARY" = "x" -a ! -w /
1185 AC_MSG_NOTICE([NOTICE: --with-sudo not specified and not running as 'root', will not install GNS NSS library])
1189 AC_MSG_NOTICE([********************************************
1190 Please make sure that you have created a user and group 'gnunet'
1191 and additionally a group 'gnunetdns'. Make sure that '/var/lib/gnunet'
1192 is owned (and writable) by user 'gnunet'. Then, you can compile GNUnet
1195 After that, run (if necessary as 'root')
1197 to install everything.
1198 Then, in order to start your peer, run as the 'gnunet' user
1199 mkdir $HOME/.gnunet/
1200 touch $HOME/.gnunet/gnunet.conf
1203 Each GNUnet user should also be added to the 'gnunet' group (may
1204 require fresh login to come into effect) and create an (at least
1205 initially) empty configuration file:
1206 mkdir $HOME/.gnunet/
1207 touch $HOME/.gnunet/gnunet.conf
1209 Optionally, download and compile:
1210 - gnunet-gtk to get a GUI for file-sharing and configuration.
1211 ********************************************])