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.4],[bug-gnunet@gnu.org])
31 AM_INIT_AUTOMAKE([gnunet], [0.9.4])
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)
376 AC_MSG_CHECKING([if Libidn can be used])
377 AC_ARG_WITH(libidn, AC_HELP_STRING([--with-libidn=[DIR]],
378 [Support IDN (needs GNU Libidn)]),
379 libidn=$withval, libidn=yes)
380 if test "$libidn" != "no"; then
381 if test "$libidn" != "yes"; then
382 LDFLAGS="${LDFLAGS} -L$libidn/lib"
383 CPPFLAGS="${CPPFLAGS} -I$libidn/include"
385 AC_CHECK_HEADER(idna.h,
386 AC_CHECK_LIB(idn, stringprep_check_version,
387 [libidn=yes LIBS="${LIBS} -lidn"], libidn=no),
390 if test "$libidn" != "no" ; then
391 AC_DEFINE(LIBIDN, 1, [Define to 1 if you want IDN support.])
393 AC_MSG_FAILURE([Libidn not found])
395 AC_MSG_RESULT($libidn)
403 AC_CHECK_HEADERS([glpk.h],[glpk=true],[gplk=false])
404 AC_CHECK_LIB([glpk],[glp_create_prob],,[gplk=false])
405 # GLPK must support atm MLP presolving, version >= 4.32
406 AC_CHECK_MEMBERS(glp_iocp.presolve,,[gplk=false],[[#include <glpk.h>]])
407 if test x$gplk = xfalse
409 AM_CONDITIONAL(HAVE_LIBGLPK, false)
410 AC_MSG_WARN([GNUnet requires GLPK >= 4.32])
412 AM_CONDITIONAL(HAVE_LIBGLPK, true)
413 AC_DEFINE([HAVE_LIBGLPK],[1],[Have GLPK])
418 AC_CHECK_HEADERS([nss.h],[nss=true],[nss=false])
419 if test x$nss = xfalse
421 AM_CONDITIONAL(HAVE_GLIBCNSS, false)
422 AC_MSG_WARN([No GNU libc nss header, will not build NSS plugin])
424 AM_CONDITIONAL(HAVE_GLIBCNSS, true)
429 # test for kvm and kstat (for CPU stats under BSD/Solaris)
430 AC_CHECK_LIB([kvm],[kvm_open])
431 AC_CHECK_LIB([kstat],[kstat_open])
433 # test for libextractor
435 AC_MSG_CHECKING(for libextractor)
436 AC_ARG_WITH(extractor,
437 [ --with-extractor=PFX base of libextractor installation],
438 [AC_MSG_RESULT([$with_extractor])
439 case $with_extractor in
443 AC_CHECK_HEADERS(extractor.h,
444 AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
448 LDFLAGS="-L$with_extractor/lib $LDFLAGS"
449 CPPFLAGS="-I$with_extractor/include $CPPFLAGS"
450 AC_CHECK_HEADERS(extractor.h,
451 AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
452 EXT_LIB_PATH="-L$with_extractor/lib $EXT_LIB_PATH"
457 [AC_MSG_RESULT([--with-extractor not specified])
458 AC_CHECK_HEADERS(extractor.h,
459 AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
461 if test "$extractor" != 1
463 AC_MSG_ERROR([GNUnet requires libextractor])
468 # test for libunistring
470 if test $HAVE_LIBUNISTRING != yes; then
471 AC_MSG_ERROR([GNUnet requires libunistring])
473 if test $gl_libunistring_hexversion -le 2305; then
474 AC_MSG_ERROR([GNUnet requires libunistring >= 0.9.1.1])
481 # Checks for standard header files.
485 # Check for headers that are ALWAYS required
486 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]))
488 # Checks for headers that are only required on some systems or opional (and where we do NOT abort if they are not there)
489 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])
491 SAVE_LDFLAGS=$LDFLAGS
492 SAVE_CPPFLAGS=$CPPFLAGS
496 AC_MSG_CHECKING(for SQLite)
498 [ --with-sqlite=PFX base of SQLite installation],
499 [AC_MSG_RESULT("$with_sqlite")
504 AC_CHECK_HEADERS(sqlite3.h,
508 LDFLAGS="-L$with_sqlite/lib $LDFLAGS"
509 CPPFLAGS="-I$with_sqlite/include $CPPFLAGS"
510 AC_CHECK_HEADERS(sqlite3.h,
511 EXT_LIB_PATH="-L$with_sqlite/lib $EXT_LIB_PATH"
512 SQLITE_LDFLAGS="-L$with_sqlite/lib"
513 SQLITE_CPPFLAGS="-I$with_sqlite/include"
515 LDFLAGS=$SAVE_LDFLAGS
516 CPPFLAGS=$SAVE_CPPFLAGS
520 [AC_MSG_RESULT([--with-sqlite not specified])
521 AC_CHECK_HEADERS(sqlite3.h, sqlite=true)])
522 AM_CONDITIONAL(HAVE_SQLITE, test x$sqlite = xtrue)
523 AC_SUBST(SQLITE_CPPFLAGS)
524 AC_SUBST(SQLITE_LDFLAGS)
528 AC_MSG_CHECKING(for postgres)
529 AC_ARG_WITH(postgres,
530 [ --with-postgres=PFX base of postgres installation],
531 [AC_MSG_RESULT("$with_postgres")
532 case $with_postgres in
536 AC_CHECK_HEADERS(postgresql/libpq-fe.h,
540 LDFLAGS="-L$with_postgres/lib $LDFLAGS"
541 CPPFLAGS="-I$with_postgres/include $CPPFLAGS"
542 AC_CHECK_HEADERS(postgresql/libpq-fe.h,
543 EXT_LIB_PATH="-L$with_postgres/lib $EXT_LIB_PATH"
544 POSTGRES_LDFLAGS="-L$with_postgres/lib"
545 POSTGRES_CPPFLAGS="-I$with_postgres/include"
547 LDFLAGS=$SAVE_LDFLAGS
548 CPPFLAGS=$SAVE_CPPFLAGS
552 [AC_MSG_RESULT([--with-postgres not specified])
553 AC_CHECK_HEADERS(postgresql/libpq-fe.h, postgres=true)])
554 AM_CONDITIONAL(HAVE_POSTGRES, test x$postgres = xtrue)
555 AC_SUBST(POSTGRES_CPPFLAGS)
556 AC_SUBST(POSTGRES_LDFLAGS)
558 # test for libz (maybe required for linking mysql)
560 AC_CHECK_LIB(z, compress,,zlib=0)
561 AM_CONDITIONAL(HAVE_ZLIB, test x$zlib = x1)
564 AC_MSG_ERROR([GNUnet requires zlib])
568 AC_CHECK_TYPES([sigset_t, off_t], [], [], [#include <sys/types.h>])
569 AC_CHECK_TYPES([size_t], [], [], [#include <stdio.h>])
571 if test "$build_target" = "mingw"
573 CYGWIN_MYSQL_MAGIC="#include <mysql/my_global.h>"
579 SAVE_LDFLAGS=$LDFLAGS
580 SAVE_CPPFLAGS=$CPPFLAGS
581 AC_MSG_CHECKING(for mysql)
583 [ --with-mysql=PFX base of MySQL installation],
584 [AC_MSG_RESULT("$with_mysql")
585 if test "$with_mysql" != "no"
587 if test "$with_mysql" != "yes"
589 LDFLAGS="-L$with_mysql/lib -L$with_mysql/lib/mysql $LDFLAGS $ZLIBS"
590 CPPFLAGS="-I$with_mysql/include $CPPFLAGS"
592 AC_CHECK_HEADERS(mysql/mysql.h,
593 AC_CHECK_LIB(mysqlclient, mysql_init,
594 MYSQL_LDFLAGS="-L$with_mysql/lib -L$with_mysql/lib/mysql"
595 MYSQL_CPPFLAGS="-I$with_mysql/include"
597 mysql=true), [], [$CYGWIN_MYSQL_MAGIC])
600 [AC_MSG_RESULT([--with-mysql not specified])
601 if test -d "/usr/lib64/mysql"; then
602 MYSQL_LIBDIR="/usr/lib64/mysql"
603 elif test -d "/usr/lib/mysql"; then
604 MYSQL_LIBDIR="/usr/lib/mysql"
606 MYSQL_LIBDIR="/usr/lib"
608 LDFLAGS="-L$MYSQL_LIBDIR $LDFLAGS $ZLIBS"
609 AC_CHECK_LIB(mysqlclient, mysql_init,
610 [AC_CHECK_HEADERS(mysql/mysql.h,
611 MYSQL_LDFLAGS="-L$MYSQL_LIBDIR"
614 , [], [$CYGWIN_MYSQL_MAGIC])])
617 AC_SUBST(MYSQL_LDFLAGS)
618 AC_SUBST(MYSQL_CPPFLAGS)
620 # additional version check for mysql
621 AC_ARG_ENABLE(mysql-version-check, [ --disable-mysql-version-check do not check MySQL version],, enable_mysql_version_check=yes)
622 if test "$mysql" = "true" -a "x$enable_mysql_version_check" = "xyes"
624 AC_MSG_CHECKING(mysql version)
625 AC_RUN_IFELSE([AC_LANG_PROGRAM(
626 [[$CYGWIN_MYSQL_MAGIC
627 #include <mysql/mysql.h>]],
628 [[if (MYSQL_VERSION_ID < 40100)
633 ],mysql=true,mysql=false)
634 if test "$mysql" = "false"
637 AC_MSG_RESULT([fail, >= 4.1 required])
642 AM_CONDITIONAL(HAVE_MYSQL, test x$mysql = xtrue)
643 AM_CONDITIONAL(HAVE_MYSQLE, test "0" = "1")
646 LDFLAGS=$SAVE_LDFLAGS
647 CPPFLAGS=$SAVE_CPPFLAGS
649 if test "$sqlite" = 0 -a "$mysql" = 0
651 AC_MSG_ERROR([GNUnet requires SQLite or MySQL])
656 AC_MSG_CHECKING([for libmicrohttpd])
657 AC_ARG_WITH(microhttpd,
658 [ --with-microhttpd=PFX base of libmicrohttpd installation],
659 [AC_MSG_RESULT([$with_microhttpd])
660 case $with_microhttpd in
664 AC_CHECK_HEADERS([microhttpd.h],
665 AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
666 AC_CHECK_LIB([microhttpd], [MHD_start_daemon],
667 [AC_MSG_CHECKING([for libmicrohttpd >= 0.9.18])
669 #include "$native_srcdir/src/include/platform.h"
670 #include <microhttpd.h>
671 int main () { return MHD_VERSION >= 0x0091200 ? 0 : 1; }
674 lmhd=1],[AC_MSG_RESULT(failed)],lmhd=1)]),
675 [],[#include "$native_srcdir/src/include/platform.h"
676 #include <microhttpd.h>]),,
677 [#include "$native_srcdir/src/include/platform.h"])
680 LDFLAGS="-L$with_microhttpd/lib $LDFLAGS"
681 CPPFLAGS="-I$with_microhttpd/include $CPPFLAGS"
682 AC_CHECK_HEADERS(microhttpd.h,
683 AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
684 AC_CHECK_LIB([microhttpd], [MHD_start_daemon],
685 EXT_LIB_PATH="-L$with_microhttpd/lib $EXT_LIB_PATH"
686 [AC_MSG_CHECKING([for libmicrohttpd >= 0.9.18])
688 #include "$native_srcdir/src/include/platform.h"
689 #include <microhttpd.h>
690 int main () { return MHD_VERSION >= 0x0091200 ? 0 : 1; }
693 lmhd=1],[AC_MSG_RESULT(failed)],lmhd=1)]),
694 [],[#include "$native_srcdir/src/include/platform.h"
695 #include <microhttpd.h>]),,
696 [#include "$native_srcdir/src/include/platform.h"])
700 [AC_MSG_RESULT([--with-microhttpd not specified])
701 AC_CHECK_HEADERS([microhttpd.h],
702 AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
703 AC_CHECK_LIB([microhttpd], [MHD_start_daemon],
704 [AC_MSG_CHECKING([for libmicrohttpd >= 0.9.18])
706 #include "$native_srcdir/src/include/platform.h"
707 #include <microhttpd.h>
708 int main () { return MHD_VERSION >= 0x0091200 ? 0 : 1; }
711 lmhd=1],[AC_MSG_RESULT(failed)],lmhd=1)]),
712 [],[#include "$native_srcdir/src/include/platform.h"
713 #include <microhttpd.h>]),,
714 [#include "$native_srcdir/src/include/platform.h"])])
715 AM_CONDITIONAL(HAVE_MHD, test x$lmhd = x1)
716 AC_DEFINE_UNQUOTED([HAVE_MHD], $lmhd, [We have libmicrohttpd])
722 # check for python & pexpect (used for some testcases only)
723 AM_PATH_PYTHON([2.6],, [:])
724 AM_CONDITIONAL([HAVE_PYTHON], [test "$PYTHON" != :])
727 AM_GNU_GETTEXT([external])
728 AM_GNU_GETTEXT_VERSION([0.16.1])
733 # Checks for standard typedefs, structures, and compiler characteristics.
742 AC_CHECK_MEMBER([struct sockaddr_in.sin_len],
743 [ AC_DEFINE(HAVE_SOCKADDR_IN_SIN_LEN, 1, [Do we have sockaddr_in.sin_len?])
747 #include <sys/types.h>
748 #include <sys/socket.h>
749 #include <netinet/in.h>
754 # Checks for library functions.
755 AC_FUNC_CLOSEDIR_VOID
757 AC_PROG_GCC_TRADITIONAL
759 AC_FUNC_SELECT_ARGTYPES
769 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])
774 gn_user_home_dir="~/.gnunet"
775 AC_ARG_WITH(user-home-dir,
777 [--with-user-home-dir=DIR],
778 [default user home directory (~/.gnunet)]),
779 [gn_user_home_dir=$withval])
780 AC_SUBST(GN_USER_HOME_DIR, $gn_user_home_dir)
781 gn_daemon_home_dir="/var/lib/gnunet"
782 AC_ARG_WITH(daemon-home-dir,
784 [--with-daemon-home-dir=DIR],
785 [default daemon home directory (/var/lib/gnunet)]),
786 [gn_daemon_home_dir=$withval])
787 AC_SUBST(GN_DAEMON_HOME_DIR, $gn_daemon_home_dir)
788 gn_daemon_config_dir="/etc"
789 AC_ARG_WITH(daemon-config-dir,
791 [--with-daemon-config-dir=DIR],
792 [default daemon config directory (/etc)]),
793 [gn_daemon_config_dir=$withval])
794 AC_SUBST(GN_DAEMON_CONFIG_DIR, $gn_daemon_config_dir)
797 GN_LIBINTL="$LTLIBINTL"
798 AC_ARG_ENABLE(framework, [ --enable-framework enable Mac OS X framework build helpers],enable_framework_build=$enableval)
799 AM_CONDITIONAL(WANT_FRAMEWORK, test x$enable_framework_build = xyes)
800 if test x$enable_framework_build = xyes
802 AC_DEFINE([FRAMEWORK_BUILD], 1, [Build a Mac OS X Framework])
803 GN_INTLINCL='-I$(top_srcdir)/src/intlemu'
804 GN_LIBINTL='$(top_builddir)/src/intlemu/libintlemu.la -framework CoreFoundation'
805 AC_LIB_APPENDTOVAR([CPPFLAGS], [$GN_INTLINCL])
808 GN_LIB_LDFLAGS="-export-dynamic -no-undefined"
809 GN_PLUGIN_LDFLAGS="-export-dynamic -avoid-version -module -no-undefined"
811 AC_SUBST(GN_LIB_LDFLAGS)
812 AC_SUBST(GN_PLUGIN_LDFLAGS)
813 AC_SUBST(GN_INTLINCL)
819 AC_SUBST(EXT_LIB_PATH)
824 AC_SUBST(EXT_LIB_PATH)
828 AC_MSG_CHECKING(for sudo)
830 [ --with-sudo=PATH path to sudo binary (or just yes)],
831 [AC_MSG_RESULT("$with_sudo")
840 SUDO_BINARY=$with_sudo
844 [AC_MSG_RESULT([no])])
845 AC_SUBST(SUDO_BINARY)
846 AM_CONDITIONAL([HAVE_SUDO], [test "x$SUDO_BINARY" != "x" -o -w /])
850 AC_MSG_CHECKING(with nssdir)
852 [ --with-nssdir=PATH where to install NSS plugins],
853 [AC_MSG_RESULT("$with_nssdir")
870 if test "x$SUDO_BINARY" != "x" -o -w /
874 AC_MSG_RESULT([yes, to /lib])
882 AM_CONDITIONAL([INSTALL_NSS], [test "x$install_nss" != "x0"])
884 # test for gnunetdns group name
885 GNUNETDNS_GROUP=gnunetdns
886 AC_MSG_CHECKING(for gnunetdns group name)
887 AC_ARG_WITH(gnunetdns,
888 [ --with-gnunetdns=GRPNAME name for gnunetdns group],
889 [AC_MSG_RESULT("$with_gnunetdns")
890 case $with_gnunetdns in
892 GNUNETDNS_GROUP=gnunet
895 GNUNETDNS_GROUP=gnunetdns
898 GNUNETDNS_GROUP=$with_gnunetdns
902 [AC_MSG_RESULT([gnunetdns])])
903 AC_SUBST(GNUNETDNS_GROUP)
909 AC_MSG_CHECKING(for gnutls)
911 [ --with-gnutls=PFX base of gnutls installation],
912 [AC_MSG_RESULT([$with_gnutls])
917 AC_CHECK_HEADERS([gnutls/abstract.h],
918 AC_CHECK_LIB([gnutls], [gnutls_priority_set],
922 LDFLAGS="-L$with_gnutls/lib $LDFLAGS"
923 CPPFLAGS="-I$with_gnutls/include $CPPFLAGS"
924 AC_CHECK_HEADERS([gnutls/abstract.h],
925 AC_CHECK_LIB([gnutls], [gnutls_priority_set],
926 EXT_LIB_PATH="-L$with_gnutls/lib $EXT_LIB_PATH"
931 [AC_MSG_RESULT([--with-gnutls not specified])
932 AC_CHECK_HEADERS([gnutls/abstract.h],
933 AC_CHECK_LIB([gnutls], [gnutls_priority_set],
935 AM_CONDITIONAL(HAVE_GNUTLS, test x$gnutls = xtrue)
936 AC_DEFINE_UNQUOTED([HAVE_GNUTLS], $gnutls, [We have gnutls])
940 # should 'make check' run tests?
941 AC_MSG_CHECKING(whether to run tests)
942 AC_ARG_ENABLE([testruns],
943 [AS_HELP_STRING([--disable-testruns], [disable running tests on make check (default is YES)])],
944 [enable_tests_run=${enableval}],
945 [enable_tests_run=yes])
946 AC_MSG_RESULT($enable_test_run)
947 AM_CONDITIONAL([ENABLE_TEST_RUN], [test "x$enable_tests_run" = "xyes"])
950 # should monkey be used when running (certain) services?
951 AC_MSG_CHECKING(whether to run with monkey)
952 AC_ARG_ENABLE([monkey],
953 [AS_HELP_STRING([--enable-monkey], [enable running with monkey])],
954 [enable_monkey=${enableval}],
956 AC_MSG_RESULT($enable_monkey)
957 AM_CONDITIONAL([ENABLE_MONKEY], [test "x$enable_monkey" = "xyes"])
958 if test "x$enable_monkey" = "xyes"
960 MONKEYPREFIX="monkey"
964 AC_SUBST(MONKEYPREFIX)
967 # should expensive tests be run?
968 AC_MSG_CHECKING(whether to run expensive tests)
969 AC_ARG_ENABLE([expensivetests],
970 [AS_HELP_STRING([--enable-expensivetests], [enable running expensive testcases])],
971 [enable_expensive=${enableval}],
972 [enable_expensive=no])
973 AC_MSG_RESULT($enable_expensive)
974 AM_CONDITIONAL([HAVE_EXPENSIVE_TESTS], [test "x$enable_expensive" = "xyes"])
976 # should ports be open for Java services?
977 AC_MSG_CHECKING(whether to enable ports for gnunet-java)
978 AC_ARG_ENABLE([javaports],
979 [AS_HELP_STRING([--enable-javaports], [use non-zero ports for services with Java bindings (default is NO)])],
980 [enable_java_ports=${enableval}],
981 [enable_java_ports=no])
982 AC_MSG_RESULT($enable_java_ports)
983 if test "x$enable_java_ports" = "xyes"
991 # should benchmarks be run?
992 AC_MSG_CHECKING(whether to run benchmarks during make check)
993 AC_ARG_ENABLE([benchmarks],
994 [AS_HELP_STRING([--enable-benchmarks], [enable running benchmarks during make check])],
995 [enable_benchmarks=${enableval}],
996 [enable_benchmarks=no])
997 AC_MSG_RESULT($enable_benchmarks)
998 AM_CONDITIONAL([HAVE_BENCHMARKS], [test "x$enable_benchmarks" = "xyes"])
1000 # should experimental code be compiled (code that may not yet compile)?
1001 AC_MSG_CHECKING(whether to compile experimental code)
1002 AC_ARG_ENABLE([experimental],
1003 [AS_HELP_STRING([--enable-experimental], [enable compiling experimental code])],
1004 [enable_experimental=${enableval}],
1005 [enable_experimental=no])
1006 AC_MSG_RESULT($enable_experimental)
1007 AM_CONDITIONAL([HAVE_EXPERIMENTAL], [test "x$enable_experimental" = "xyes"])
1009 # should memory statistics be kept (very expensive CPU-wise!)
1010 AC_MSG_CHECKING(whether to create expensive statistics on memory use)
1011 AC_ARG_ENABLE([heapstats],
1012 [AS_HELP_STRING([--enable-heapstats], [enable expensive heap statistics])],
1013 [enable_heapstats=1],
1014 [enable_heapstats=0])
1015 AC_MSG_RESULT($enable_heapstats)
1016 AC_DEFINE_UNQUOTED([ENABLE_HEAP_STATISTICS],$enable_heapstats,[enable expensive heap statistics])
1018 # should code be enabled that works around missing OS functionality on Windows?
1019 # used for test cases
1020 if test $build_target = "mingw"
1026 [#include <ws2tcpip.h>
1028 int s = socket (0, 0, 0);])
1030 AC_DEFINE_UNQUOTED([HAVE_SOCKET],1,[Define this if socket() is available])
1032 AC_DEFINE_UNQUOTED([HAVE_SOCKET],0,[Define this if socket() is available])
1037 [#include <ws2tcpip.h>
1039 int s = select (0, NULL, NULL, NULL, NULL);])
1041 AC_DEFINE_UNQUOTED([HAVE_SELECT],1,[Define this if select() is available])
1043 AC_DEFINE_UNQUOTED([HAVE_SELECT],0,[Define this if select() is available])
1048 [#include <ws2tcpip.h>
1051 char *s = inet_ntoa (i);])
1053 AC_DEFINE_UNQUOTED([HAVE_INET_NTOA],1,[Define this if inet_ntoa() is available])
1055 AC_DEFINE_UNQUOTED([HAVE_INET_NTOA],0,[Define this if inet_ntoa() is available])
1060 [#include <ws2tcpip.h>
1062 int s = getnameinfo (NULL, 0, NULL, 0, NULL, 0, 0);])
1064 AC_DEFINE_UNQUOTED([HAVE_GETNAMEINFO],1,[Define this if getnameinfo() is available])
1066 AC_DEFINE_UNQUOTED([HAVE_GETNAMEINFO],0,[Define this if getnameinfo() is available])
1071 [#include <ws2tcpip.h>
1073 int s = gethostname (NULL, 0);])
1075 AC_DEFINE_UNQUOTED([HAVE_GETHOSTNAME],1,[Define this if gethostname() is available])
1077 AC_DEFINE_UNQUOTED([HAVE_GETHOSTNAME],0,[Define this if gethostname() is available])
1082 [#include <ws2tcpip.h>
1084 void *s = gethostbyname (NULL);])
1086 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYNAME],1,[Define this if gethostbyname() is available])
1088 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYNAME],0,[Define this if gethostbyname() is available])
1093 [#include <ws2tcpip.h>
1095 void *s = gethostbyaddr (NULL, 0, 0);])
1097 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYADDR],1,[Define this if gethostbyaddr() is available])
1099 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYADDR],0,[Define this if gethostbyaddr() is available])
1104 [#include <ws2tcpip.h>
1106 int s = getaddrinfo (NULL, NULL, NULL, NULL);])
1108 AC_DEFINE_UNQUOTED([HAVE_GETADDRINFO],1,[Define this if getaddrinfo() is available])
1110 AC_DEFINE_UNQUOTED([HAVE_GETADDRINFO],1,[Define this if getaddrinfo() is available])
1114 AC_MSG_CHECKING(whether to enable windows workarounds)
1115 AC_ARG_ENABLE([windows_workarounds],
1116 [AS_HELP_STRING([--enable-windows_workarounds], [enable workarounds used on Windows (only useful for test cases)])],
1117 [enable_workarounds=${enableval}],
1118 [enable_workarounds=no])
1119 AC_MSG_RESULT($enable_workarounds)
1120 if test x$enable_windows_workarounds = "xyes"
1127 AC_DEFINE_UNQUOTED([ENABLE_WINDOWS_WORKAROUNDS], $workarounds, [enable workarounds used on Windows (only useful for test cases)])
1130 AC_MSG_CHECKING(whether to compile with support for code coverage analysis)
1131 AC_ARG_ENABLE([coverage],
1132 AS_HELP_STRING([--enable-coverage],
1133 [compile the library with code coverage support]),
1134 [use_gcov=${enableval}],
1136 AC_MSG_RESULT($use_gcov)
1137 AM_CONDITIONAL([USE_COVERAGE], [test "x$use_gcov" = "xyes"])
1152 src/ats-tool/Makefile
1158 src/datacache/Makefile
1159 src/datastore/Makefile
1160 src/datastore/datastore.conf
1168 src/fragmentation/Makefile
1173 src/gns/nss/Makefile
1175 src/include/Makefile
1176 src/include/gnunet_directories.h
1177 src/hostlist/Makefile
1178 src/lockmanager/Makefile
1179 src/lockmanager/lockmanager.conf
1183 src/namestore/Makefile
1184 src/namestore/namestore.conf
1188 src/peerinfo/Makefile
1189 src/peerinfo/peerinfo.conf
1190 src/peerinfo-tool/Makefile
1191 src/postgres/Makefile
1194 src/statistics/Makefile
1195 src/statistics/statistics.conf
1197 src/template/Makefile
1198 src/testbed/Makefile
1199 src/testbed/testbed.conf
1200 src/testing/Makefile
1201 src/testing_old/Makefile
1202 src/topology/Makefile
1203 src/transport/Makefile
1204 src/transport/transport.conf
1207 src/util/resolver.conf
1210 src/integration-tests/Makefile
1212 pkgconfig/gnunetats.pc
1213 pkgconfig/gnunetarm.pc
1214 pkgconfig/gnunetblock.pc
1215 pkgconfig/gnunetcore.pc
1216 pkgconfig/gnunetdatacache.pc
1217 pkgconfig/gnunetdatastore.pc
1218 pkgconfig/gnunetdht.pc
1219 pkgconfig/gnunetdns.pc
1220 pkgconfig/gnunetdnsparser.pc
1221 pkgconfig/gnunetdv.pc
1222 pkgconfig/gnunetfragmentation.pc
1223 pkgconfig/gnunetfs.pc
1224 pkgconfig/gnunetgns.pc
1225 pkgconfig/gnunethello.pc
1226 pkgconfig/gnunetlockmanager.pc
1227 pkgconfig/gnunetmesh.pc
1228 pkgconfig/gnunetmysql.pc
1229 pkgconfig/gnunetnamestore.pc
1230 pkgconfig/gnunetnat.pc
1231 pkgconfig/gnunetnse.pc
1232 pkgconfig/gnunetpeerinfo.pc
1233 pkgconfig/gnunetpostgres.pc
1234 pkgconfig/gnunetregex.pc
1235 pkgconfig/gnunetstatistics.pc
1236 pkgconfig/gnunetstream.pc
1237 pkgconfig/gnunettestbed.pc
1238 pkgconfig/gnunettesting.pc
1239 pkgconfig/gnunettransport.pc
1240 pkgconfig/gnunettun.pc
1241 pkgconfig/gnunetutil.pc
1242 pkgconfig/gnunetvpn.pc
1248 # warn user if mysql found but not used due to version
1249 if test "$mysqlfail" = "true"
1251 AC_MSG_NOTICE([NOTICE: MySQL found, but too old. MySQL support will not be compiled.])
1255 if test "x$sqlite" = "x0"
1257 AC_MSG_NOTICE([NOTICE: sqlite not found. sqLite support will not be compiled.])
1261 if test "x$curl" = "x0"
1263 AC_MSG_NOTICE([NOTICE: libcurl not found. http client support will not be compiled.])
1267 if test x$gnutls != xtrue
1269 AC_MSG_NOTICE([NOTICE: gnutls not found, gnunet-gns-proxy will not be built])
1273 if test "x$enable_java_ports" = "xyes"
1275 AC_MSG_NOTICE([NOTICE: opening ports for gnunet-java bindings by default.])
1278 if test "x$lmhd" != "x1"
1280 AC_MSG_NOTICE([NOTICE: libmicrohttpd not found, http transport will not be installed.])
1283 AC_MSG_NOTICE([NOTICE: Database support is set to MySQL: $mysql, SQLite: $sqlite, Postgres: $postgres])
1285 if test "$enable_framework_build" = "yes"
1287 AC_MSG_NOTICE([NOTICE: Mac OS X framework build enabled.])
1290 if test "x$SUDO_BINARY" = "x" -a ! -w /
1292 AC_MSG_NOTICE([NOTICE: --with-sudo not specified and not running as 'root', will not install GNS NSS library])
1296 AC_MSG_NOTICE([********************************************
1297 Please make sure NOW that you have created a user and group 'gnunet'
1298 and additionally a group 'gnunetdns':
1302 Make sure that '/var/lib/gnunet' is owned (and writable) by user
1303 'gnunet'. Then, you can compile GNUnet with
1306 After that, run (if necessary as 'root')
1308 to install everything.
1310 Each GNUnet user should be added to the 'gnunet' group (may
1311 require fresh login to come into effect):
1312 adduser $USERNAME gnunet
1313 (run the above command as root once for each of your users, replacing
1314 "$USERNAME" with the respective login names). If you have a global IP
1315 address, no further configuration is required.
1317 Optionally, download and compile gnunet-gtk to get a GUI for
1318 file-sharing and configuration. This is particularly recommended
1319 if your network setup is non-trivial, as gnunet-setup can be
1320 used to test in the GUI if your network configuration is working.
1321 gnunet-setup should be run as the "gnunet" user under X. As it
1322 does very little with the network, running it as "root" is likely
1323 also harmless. You can also run it as a normal user, but then
1324 you have to copy ~/.gnunet/gnunet.conf" over to the "gnunet" user's
1325 home directory in the end.
1327 Once you have configured your peer, run (as the 'gnunet' user)
1329 to start the peer. You can then run the various GNUnet-tools as
1330 your "normal" user (who should only be in the group 'gnunet').
1331 ********************************************])