1 # This file is part of GNUnet.
2 # (C) 2001--2013 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.5a],[bug-gnunet@gnu.org])
31 AM_INIT_AUTOMAKE([gnunet], [0.9.5a])
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])
417 # Minimum required version for glibtop is 2.6.0
418 AM_PATH_GLIB_2_0(2.6.0, [glib2=true] , [glib2=false] ,)
419 if test x$glib2 = xfalse
421 AM_CONDITIONAL(HAVE_GLIB2, false)
422 AC_MSG_WARN([GNUnet requires GLIB >= 2.6.0])
424 AM_CONDITIONAL(HAVE_GLIB2, true)
425 AC_DEFINE([HAVE_GLIB2],[1],[Have glib2])
426 LIBS="$LIBS $GLIB_LIBS"
427 CFLAGS="$CFLAGS $GLIB_CFLAGS"
431 PKG_CHECK_MODULES(LIBGTOP,libgtop-2.0, [gtop=true] , [gtop=false] )
432 if test x$gtop = xfalse
434 AM_CONDITIONAL(HAVE_LIBGTOP, false)
435 AC_MSG_WARN([GNUnet requires libgtop])
437 AM_CONDITIONAL(HAVE_LIBGTOP, true)
438 AC_DEFINE([HAVE_LIBGTOP],[1],[Have libgtop])
439 LIBS="$LIBS $LIBGTOP_LIBS"
440 CFLAGS="$CFLAGS $LIBGTOP_CFLAGS"
446 AC_CHECK_HEADERS([nss.h],[nss=true],[nss=false])
447 if test x$nss = xfalse
449 AM_CONDITIONAL(HAVE_GLIBCNSS, false)
450 AC_MSG_WARN([No GNU libc nss header, will not build NSS plugin])
452 AM_CONDITIONAL(HAVE_GLIBCNSS, true)
457 # test for kvm and kstat (for CPU stats under BSD/Solaris)
458 AC_CHECK_LIB([kvm],[kvm_open])
459 AC_CHECK_LIB([kstat],[kstat_open])
461 # test for libextractor
463 AC_MSG_CHECKING(for libextractor)
464 AC_ARG_WITH(extractor,
465 [ --with-extractor=PFX base of libextractor installation],
466 [AC_MSG_RESULT([$with_extractor])
467 case $with_extractor in
471 AC_CHECK_HEADERS(extractor.h,
472 AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
476 LDFLAGS="-L$with_extractor/lib $LDFLAGS"
477 CPPFLAGS="-I$with_extractor/include $CPPFLAGS"
478 AC_CHECK_HEADERS(extractor.h,
479 AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
480 EXT_LIB_PATH="-L$with_extractor/lib $EXT_LIB_PATH"
485 [AC_MSG_RESULT([--with-extractor not specified])
486 AC_CHECK_HEADERS(extractor.h,
487 AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
489 if test "$extractor" != 1
491 AC_MSG_ERROR([GNUnet requires libextractor])
496 # test for libunistring
498 if test $HAVE_LIBUNISTRING != yes; then
499 AC_MSG_ERROR([GNUnet requires libunistring])
501 if test $gl_libunistring_hexversion -le 2305; then
502 AC_MSG_ERROR([GNUnet requires libunistring >= 0.9.1.1])
509 # Checks for standard header files.
513 # Check for headers that are ALWAYS required
514 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]))
516 # Checks for headers that are only required on some systems or opional (and where we do NOT abort if they are not there)
517 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])
519 SAVE_LDFLAGS=$LDFLAGS
520 SAVE_CPPFLAGS=$CPPFLAGS
524 AC_MSG_CHECKING(for SQLite)
526 [ --with-sqlite=PFX base of SQLite installation],
527 [AC_MSG_RESULT("$with_sqlite")
532 AC_CHECK_HEADERS(sqlite3.h,
536 LDFLAGS="-L$with_sqlite/lib $LDFLAGS"
537 CPPFLAGS="-I$with_sqlite/include $CPPFLAGS"
538 AC_CHECK_HEADERS(sqlite3.h,
539 EXT_LIB_PATH="-L$with_sqlite/lib $EXT_LIB_PATH"
540 SQLITE_LDFLAGS="-L$with_sqlite/lib"
541 SQLITE_CPPFLAGS="-I$with_sqlite/include"
543 LDFLAGS=$SAVE_LDFLAGS
544 CPPFLAGS=$SAVE_CPPFLAGS
548 [AC_MSG_RESULT([--with-sqlite not specified])
549 AC_CHECK_HEADERS(sqlite3.h, sqlite=true)])
550 AM_CONDITIONAL(HAVE_SQLITE, test x$sqlite = xtrue)
551 AC_SUBST(SQLITE_CPPFLAGS)
552 AC_SUBST(SQLITE_LDFLAGS)
556 AC_MSG_CHECKING(for postgres)
557 AC_ARG_WITH(postgres,
558 [ --with-postgres=PFX base of postgres installation],
559 [AC_MSG_RESULT("$with_postgres")
560 case $with_postgres in
564 AC_CHECK_HEADERS(postgresql/libpq-fe.h,
568 LDFLAGS="-L$with_postgres/lib $LDFLAGS"
569 CPPFLAGS="-I$with_postgres/include $CPPFLAGS"
570 AC_CHECK_HEADERS(postgresql/libpq-fe.h,
571 EXT_LIB_PATH="-L$with_postgres/lib $EXT_LIB_PATH"
572 POSTGRES_LDFLAGS="-L$with_postgres/lib"
573 POSTGRES_CPPFLAGS="-I$with_postgres/include"
575 LDFLAGS=$SAVE_LDFLAGS
576 CPPFLAGS=$SAVE_CPPFLAGS
580 [AC_MSG_RESULT([--with-postgres not specified])
581 AC_CHECK_HEADERS(postgresql/libpq-fe.h, postgres=true)])
582 AM_CONDITIONAL(HAVE_POSTGRES, test x$postgres = xtrue)
583 AC_SUBST(POSTGRES_CPPFLAGS)
584 AC_SUBST(POSTGRES_LDFLAGS)
586 # test for libz (maybe required for linking mysql)
588 AC_CHECK_LIB(z, compress,,zlib=0)
589 AM_CONDITIONAL(HAVE_ZLIB, test x$zlib = x1)
592 AC_MSG_ERROR([GNUnet requires zlib])
596 AC_CHECK_TYPES([sigset_t, off_t], [], [], [#include <sys/types.h>])
597 AC_CHECK_TYPES([size_t], [], [], [#include <stdio.h>])
599 if test "$build_target" = "mingw"
601 CYGWIN_MYSQL_MAGIC="#include <mysql/my_global.h>"
607 SAVE_LDFLAGS=$LDFLAGS
608 SAVE_CPPFLAGS=$CPPFLAGS
609 AC_MSG_CHECKING(for mysql)
611 [ --with-mysql=PFX base of MySQL installation],
612 [AC_MSG_RESULT("$with_mysql")
613 if test "$with_mysql" != "no"
615 if test "$with_mysql" != "yes"
617 LDFLAGS="-L$with_mysql/lib -L$with_mysql/lib/mysql $LDFLAGS $ZLIBS"
618 CPPFLAGS="-I$with_mysql/include $CPPFLAGS"
620 AC_CHECK_HEADERS(mysql/mysql.h,
621 AC_CHECK_LIB(mysqlclient, mysql_init,
622 MYSQL_LDFLAGS="-L$with_mysql/lib -L$with_mysql/lib/mysql"
623 MYSQL_CPPFLAGS="-I$with_mysql/include"
625 mysql=true), [], [$CYGWIN_MYSQL_MAGIC])
628 [AC_MSG_RESULT([--with-mysql not specified])
629 if test -d "/usr/lib64/mysql"; then
630 MYSQL_LIBDIR="/usr/lib64/mysql"
631 elif test -d "/usr/lib/mysql"; then
632 MYSQL_LIBDIR="/usr/lib/mysql"
634 MYSQL_LIBDIR="/usr/lib"
636 LDFLAGS="-L$MYSQL_LIBDIR $LDFLAGS $ZLIBS"
637 AC_CHECK_LIB(mysqlclient, mysql_init,
638 [AC_CHECK_HEADERS(mysql/mysql.h,
639 MYSQL_LDFLAGS="-L$MYSQL_LIBDIR"
642 , [], [$CYGWIN_MYSQL_MAGIC])])
645 AC_SUBST(MYSQL_LDFLAGS)
646 AC_SUBST(MYSQL_CPPFLAGS)
648 # additional version check for mysql
649 AC_ARG_ENABLE(mysql-version-check, [ --disable-mysql-version-check do not check MySQL version],, enable_mysql_version_check=yes)
650 if test "$mysql" = "true" -a "x$enable_mysql_version_check" = "xyes"
652 AC_MSG_CHECKING(mysql version)
653 AC_RUN_IFELSE([AC_LANG_PROGRAM(
654 [[$CYGWIN_MYSQL_MAGIC
655 #include <mysql/mysql.h>]],
656 [[if (MYSQL_VERSION_ID < 40100)
661 ],mysql=true,mysql=false)
662 if test "$mysql" = "false"
665 AC_MSG_RESULT([fail, >= 4.1 required])
670 AM_CONDITIONAL(HAVE_MYSQL, test x$mysql = xtrue)
671 AM_CONDITIONAL(HAVE_MYSQLE, test "0" = "1")
674 LDFLAGS=$SAVE_LDFLAGS
675 CPPFLAGS=$SAVE_CPPFLAGS
677 if test "$sqlite" = 0 -a "$mysql" = 0
679 AC_MSG_ERROR([GNUnet requires SQLite or MySQL])
684 AC_MSG_CHECKING([for libmicrohttpd])
685 AC_ARG_WITH(microhttpd,
686 [ --with-microhttpd=PFX base of libmicrohttpd installation],
687 [AC_MSG_RESULT([$with_microhttpd])
688 case $with_microhttpd in
692 AC_CHECK_HEADERS([microhttpd.h],
693 AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
694 AC_CHECK_LIB([microhttpd], [MHD_start_daemon],
695 [AC_MSG_CHECKING([for libmicrohttpd >= 0.9.18])
697 #include "$native_srcdir/src/include/platform.h"
698 #include <microhttpd.h>
699 int main () { return MHD_VERSION >= 0x0091200 ? 0 : 1; }
702 lmhd=1],[AC_MSG_RESULT(failed)],lmhd=1)]),
703 [],[#include "$native_srcdir/src/include/platform.h"
704 #include <microhttpd.h>]),,
705 [#include "$native_srcdir/src/include/platform.h"])
708 LDFLAGS="-L$with_microhttpd/lib $LDFLAGS"
709 CPPFLAGS="-I$with_microhttpd/include $CPPFLAGS"
710 AC_CHECK_HEADERS(microhttpd.h,
711 AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
712 AC_CHECK_LIB([microhttpd], [MHD_start_daemon],
713 EXT_LIB_PATH="-L$with_microhttpd/lib $EXT_LIB_PATH"
714 [AC_MSG_CHECKING([for libmicrohttpd >= 0.9.18])
716 #include "$native_srcdir/src/include/platform.h"
717 #include <microhttpd.h>
718 int main () { return MHD_VERSION >= 0x0091200 ? 0 : 1; }
721 lmhd=1],[AC_MSG_RESULT(failed)],lmhd=1)]),
722 [],[#include "$native_srcdir/src/include/platform.h"
723 #include <microhttpd.h>]),,
724 [#include "$native_srcdir/src/include/platform.h"])
728 [AC_MSG_RESULT([--with-microhttpd not specified])
729 AC_CHECK_HEADERS([microhttpd.h],
730 AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
731 AC_CHECK_LIB([microhttpd], [MHD_start_daemon],
732 [AC_MSG_CHECKING([for libmicrohttpd >= 0.9.18])
734 #include "$native_srcdir/src/include/platform.h"
735 #include <microhttpd.h>
736 int main () { return MHD_VERSION >= 0x0091200 ? 0 : 1; }
739 lmhd=1],[AC_MSG_RESULT(failed)],lmhd=1)]),
740 [],[#include "$native_srcdir/src/include/platform.h"
741 #include <microhttpd.h>]),,
742 [#include "$native_srcdir/src/include/platform.h"])])
743 AM_CONDITIONAL(HAVE_MHD, test x$lmhd = x1)
744 AC_DEFINE_UNQUOTED([HAVE_MHD], $lmhd, [We have libmicrohttpd])
750 # check for python & pexpect (used for some testcases only)
751 AM_PATH_PYTHON([2.6],, [:])
752 AM_CONDITIONAL([HAVE_PYTHON], [test "$PYTHON" != :])
755 AM_GNU_GETTEXT([external])
756 AM_GNU_GETTEXT_VERSION([0.16.1])
761 # Checks for standard typedefs, structures, and compiler characteristics.
770 AC_CHECK_MEMBER([struct sockaddr_in.sin_len],
771 [ AC_DEFINE(HAVE_SOCKADDR_IN_SIN_LEN, 1, [Do we have sockaddr_in.sin_len?])
775 #include <sys/types.h>
776 #include <sys/socket.h>
777 #include <netinet/in.h>
782 # Checks for library functions.
783 AC_FUNC_CLOSEDIR_VOID
785 AC_PROG_GCC_TRADITIONAL
787 AC_FUNC_SELECT_ARGTYPES
797 AC_CHECK_FUNCS([atoll stat64 strnlen mremap getrlimit setrlimit sysconf initgroups strndup gethostbyname2 getpeerucred getpeereid setresuid $funcstocheck getifaddrs freeifaddrs getresgid mallinfo malloc_size malloc_usable_size getrusage])
802 gn_user_home_dir="~/.gnunet"
803 AC_ARG_WITH(user-home-dir,
805 [--with-user-home-dir=DIR],
806 [default user home directory (~/.gnunet)]),
807 [gn_user_home_dir=$withval])
808 AC_SUBST(GN_USER_HOME_DIR, $gn_user_home_dir)
809 gn_daemon_home_dir="/var/lib/gnunet"
810 AC_ARG_WITH(daemon-home-dir,
812 [--with-daemon-home-dir=DIR],
813 [default daemon home directory (/var/lib/gnunet)]),
814 [gn_daemon_home_dir=$withval])
815 AC_SUBST(GN_DAEMON_HOME_DIR, $gn_daemon_home_dir)
816 gn_daemon_config_dir="/etc"
817 AC_ARG_WITH(daemon-config-dir,
819 [--with-daemon-config-dir=DIR],
820 [default daemon config directory (/etc)]),
821 [gn_daemon_config_dir=$withval])
822 AC_SUBST(GN_DAEMON_CONFIG_DIR, $gn_daemon_config_dir)
825 GN_LIBINTL="$LTLIBINTL"
826 AC_ARG_ENABLE(framework, [ --enable-framework enable Mac OS X framework build helpers],enable_framework_build=$enableval)
827 AM_CONDITIONAL(WANT_FRAMEWORK, test x$enable_framework_build = xyes)
828 if test x$enable_framework_build = xyes
830 AC_DEFINE([FRAMEWORK_BUILD], 1, [Build a Mac OS X Framework])
831 GN_INTLINCL='-I$(top_srcdir)/src/intlemu'
832 GN_LIBINTL='$(top_builddir)/src/intlemu/libintlemu.la -framework CoreFoundation'
833 AC_LIB_APPENDTOVAR([CPPFLAGS], [$GN_INTLINCL])
836 GN_LIB_LDFLAGS="-export-dynamic -no-undefined"
837 GN_PLUGIN_LDFLAGS="-export-dynamic -avoid-version -module -no-undefined"
839 AC_SUBST(GN_LIB_LDFLAGS)
840 AC_SUBST(GN_PLUGIN_LDFLAGS)
841 AC_SUBST(GN_INTLINCL)
847 AC_SUBST(EXT_LIB_PATH)
852 AC_SUBST(EXT_LIB_PATH)
856 AC_MSG_CHECKING(for sudo)
858 [ --with-sudo=PATH path to sudo binary (or just yes)],
859 [AC_MSG_RESULT("$with_sudo")
868 SUDO_BINARY=$with_sudo
872 [AC_MSG_RESULT([no])])
873 AC_SUBST(SUDO_BINARY)
874 AM_CONDITIONAL([HAVE_SUDO], [test "x$SUDO_BINARY" != "x" -o -w /])
878 AC_MSG_CHECKING(with nssdir)
880 [ --with-nssdir=PATH where to install NSS plugins],
881 [AC_MSG_RESULT("$with_nssdir")
898 if test "x$SUDO_BINARY" != "x" -o -w /
902 AC_MSG_RESULT([yes, to /lib])
910 AM_CONDITIONAL([INSTALL_NSS], [test "x$install_nss" != "x0"])
912 # test for gnunetdns group name
913 GNUNETDNS_GROUP=gnunetdns
914 AC_MSG_CHECKING(for gnunetdns group name)
915 AC_ARG_WITH(gnunetdns,
916 [ --with-gnunetdns=GRPNAME name for gnunetdns group],
917 [AC_MSG_RESULT("$with_gnunetdns")
918 case $with_gnunetdns in
920 GNUNETDNS_GROUP=gnunet
923 GNUNETDNS_GROUP=gnunetdns
926 GNUNETDNS_GROUP=$with_gnunetdns
930 [AC_MSG_RESULT([gnunetdns])])
931 AC_SUBST(GNUNETDNS_GROUP)
937 AC_MSG_CHECKING(for gnutls)
939 [ --with-gnutls=PFX base of gnutls installation],
940 [AC_MSG_RESULT([$with_gnutls])
945 AC_CHECK_HEADERS([gnutls/abstract.h],
946 AC_CHECK_LIB([gnutls], [gnutls_priority_set],
950 LDFLAGS="-L$with_gnutls/lib $LDFLAGS"
951 CPPFLAGS="-I$with_gnutls/include $CPPFLAGS"
952 AC_CHECK_HEADERS([gnutls/abstract.h],
953 AC_CHECK_LIB([gnutls], [gnutls_priority_set],
954 EXT_LIB_PATH="-L$with_gnutls/lib $EXT_LIB_PATH"
959 [AC_MSG_RESULT([--with-gnutls not specified])
960 AC_CHECK_HEADERS([gnutls/abstract.h],
961 AC_CHECK_LIB([gnutls], [gnutls_priority_set],
963 AM_CONDITIONAL(HAVE_GNUTLS, test x$gnutls = xtrue)
964 AC_DEFINE_UNQUOTED([HAVE_GNUTLS], $gnutls, [We have gnutls])
967 # Test if we are building for superMUC
969 AC_MSG_CHECKING(if testbed should use IBM LoadLeveler to run on SuperMUC)
971 [AS_HELP_STRING([--with-ll=PFX],
972 [use IBM LoadLeveler (installed at PFX) for running testbed on SuperMUC]. Default is no)],
973 [AC_MSG_RESULT([$with_ll])
978 AC_CHECK_HEADERS([llapi.h],
979 AC_CHECK_LIB([llapi], [llsubmit],
981 AC_MSG_ERROR(libllapi not found but --with-llapi given)),
982 AC_MSG_ERROR(llapi.h not found but --with-llapi given))
985 LDFLAGS="-L$with_ll/lib $LDFLAGS"
986 CPPFLAGS="-I$with_ll/include $CPPFLAGS"
987 AC_CHECK_HEADERS([llapi.h],
988 AC_CHECK_LIB([llapi], [llsubmit],
990 AC_MSG_ERROR(libllapi not found but --with-llapi given)),
991 AC_MSG_ERROR(llapi.h not found but --with-llapi given))
995 [AC_MSG_RESULT(--with-ll not specified)])
996 AM_CONDITIONAL([WITH_LL], [test "x$llapi" = "xtrue"])
997 AC_DEFINE_UNQUOTED(WITH_LL, $llapi, [Do we have to use IBM LoadLeveler])
999 # should 'make check' run tests?
1000 AC_MSG_CHECKING(whether to run tests)
1001 AC_ARG_ENABLE([testruns],
1002 [AS_HELP_STRING([--disable-testruns], [disable running tests on make check (default is YES)])],
1003 [enable_tests_run=${enableval}],
1004 [enable_tests_run=yes])
1005 AC_MSG_RESULT($enable_test_run)
1006 AM_CONDITIONAL([ENABLE_TEST_RUN], [test "x$enable_tests_run" = "xyes"])
1009 # should monkey be used when running (certain) services?
1010 AC_MSG_CHECKING(whether to run with monkey)
1011 AC_ARG_ENABLE([monkey],
1012 [AS_HELP_STRING([--enable-monkey], [enable running with monkey])],
1013 [enable_monkey=${enableval}],
1015 AC_MSG_RESULT($enable_monkey)
1016 AM_CONDITIONAL([ENABLE_MONKEY], [test "x$enable_monkey" = "xyes"])
1017 if test "x$enable_monkey" = "xyes"
1019 MONKEYPREFIX="monkey"
1023 AC_SUBST(MONKEYPREFIX)
1026 # should expensive tests be run?
1027 AC_MSG_CHECKING(whether to run expensive tests)
1028 AC_ARG_ENABLE([expensivetests],
1029 [AS_HELP_STRING([--enable-expensivetests], [enable running expensive testcases])],
1030 [enable_expensive=${enableval}],
1031 [enable_expensive=no])
1032 AC_MSG_RESULT($enable_expensive)
1033 AM_CONDITIONAL([HAVE_EXPENSIVE_TESTS], [test "x$enable_expensive" = "xyes"])
1035 # should ports be open for Java services?
1036 AC_MSG_CHECKING(whether to enable ports for gnunet-java)
1037 AC_ARG_ENABLE([javaports],
1038 [AS_HELP_STRING([--enable-javaports], [use non-zero ports for services with Java bindings (default is NO)])],
1039 [enable_java_ports=${enableval}],
1040 [enable_java_ports=no])
1041 AC_MSG_RESULT($enable_java_ports)
1042 if test "x$enable_java_ports" = "xyes"
1046 JAVAPORT="$UNIXONLY"
1050 # should benchmarks be run?
1051 AC_MSG_CHECKING(whether to run benchmarks during make check)
1052 AC_ARG_ENABLE([benchmarks],
1053 [AS_HELP_STRING([--enable-benchmarks], [enable running benchmarks during make check])],
1054 [enable_benchmarks=${enableval}],
1055 [enable_benchmarks=no])
1056 AC_MSG_RESULT($enable_benchmarks)
1057 AM_CONDITIONAL([HAVE_BENCHMARKS], [test "x$enable_benchmarks" = "xyes"])
1059 # should experimental code be compiled (code that may not yet compile)?
1060 AC_MSG_CHECKING(whether to compile experimental code)
1061 AC_ARG_ENABLE([experimental],
1062 [AS_HELP_STRING([--enable-experimental], [enable compiling experimental code])],
1063 [enable_experimental=${enableval}],
1064 [enable_experimental=no])
1065 AC_MSG_RESULT($enable_experimental)
1066 AM_CONDITIONAL([HAVE_EXPERIMENTAL], [test "x$enable_experimental" = "xyes"])
1068 # should memory statistics be kept (very expensive CPU-wise!)
1069 AC_MSG_CHECKING(whether to create expensive statistics on memory use)
1070 AC_ARG_ENABLE([heapstats],
1071 [AS_HELP_STRING([--enable-heapstats], [enable expensive heap statistics])],
1072 [enable_heapstats=1],
1073 [enable_heapstats=0])
1074 AC_MSG_RESULT($enable_heapstats)
1075 AC_DEFINE_UNQUOTED([ENABLE_HEAP_STATISTICS],$enable_heapstats,[enable expensive heap statistics])
1077 # should code be enabled that works around missing OS functionality on Windows?
1078 # used for test cases
1079 if test $build_target = "mingw"
1085 [#include <ws2tcpip.h>
1087 int s = socket (0, 0, 0);])
1089 AC_DEFINE_UNQUOTED([HAVE_SOCKET],1,[Define this if socket() is available])
1091 AC_DEFINE_UNQUOTED([HAVE_SOCKET],0,[Define this if socket() is available])
1096 [#include <ws2tcpip.h>
1098 int s = select (0, NULL, NULL, NULL, NULL);])
1100 AC_DEFINE_UNQUOTED([HAVE_SELECT],1,[Define this if select() is available])
1102 AC_DEFINE_UNQUOTED([HAVE_SELECT],0,[Define this if select() is available])
1107 [#include <ws2tcpip.h>
1110 char *s = inet_ntoa (i);])
1112 AC_DEFINE_UNQUOTED([HAVE_INET_NTOA],1,[Define this if inet_ntoa() is available])
1114 AC_DEFINE_UNQUOTED([HAVE_INET_NTOA],0,[Define this if inet_ntoa() is available])
1119 [#include <ws2tcpip.h>
1121 int s = getnameinfo (NULL, 0, NULL, 0, NULL, 0, 0);])
1123 AC_DEFINE_UNQUOTED([HAVE_GETNAMEINFO],1,[Define this if getnameinfo() is available])
1125 AC_DEFINE_UNQUOTED([HAVE_GETNAMEINFO],0,[Define this if getnameinfo() is available])
1130 [#include <ws2tcpip.h>
1132 int s = gethostname (NULL, 0);])
1134 AC_DEFINE_UNQUOTED([HAVE_GETHOSTNAME],1,[Define this if gethostname() is available])
1136 AC_DEFINE_UNQUOTED([HAVE_GETHOSTNAME],0,[Define this if gethostname() is available])
1141 [#include <ws2tcpip.h>
1143 void *s = gethostbyname (NULL);])
1145 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYNAME],1,[Define this if gethostbyname() is available])
1147 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYNAME],0,[Define this if gethostbyname() is available])
1152 [#include <ws2tcpip.h>
1154 void *s = gethostbyaddr (NULL, 0, 0);])
1156 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYADDR],1,[Define this if gethostbyaddr() is available])
1158 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYADDR],0,[Define this if gethostbyaddr() is available])
1163 [#include <ws2tcpip.h>
1165 int s = getaddrinfo (NULL, NULL, NULL, NULL);])
1167 AC_DEFINE_UNQUOTED([HAVE_GETADDRINFO],1,[Define this if getaddrinfo() is available])
1169 AC_DEFINE_UNQUOTED([HAVE_GETADDRINFO],1,[Define this if getaddrinfo() is available])
1173 AC_MSG_CHECKING(whether to enable windows workarounds)
1174 AC_ARG_ENABLE([windows_workarounds],
1175 [AS_HELP_STRING([--enable-windows_workarounds], [enable workarounds used on Windows (only useful for test cases)])],
1176 [enable_workarounds=${enableval}],
1177 [enable_workarounds=no])
1178 AC_MSG_RESULT($enable_workarounds)
1179 if test x$enable_windows_workarounds = "xyes"
1186 AC_DEFINE_UNQUOTED([ENABLE_WINDOWS_WORKAROUNDS], $workarounds, [enable workarounds used on Windows (only useful for test cases)])
1189 AC_MSG_CHECKING(whether to compile with support for code coverage analysis)
1190 AC_ARG_ENABLE([coverage],
1191 AS_HELP_STRING([--enable-coverage],
1192 [compile the library with code coverage support]),
1193 [use_gcov=${enableval}],
1195 AC_MSG_RESULT($use_gcov)
1196 AM_CONDITIONAL([USE_COVERAGE], [test "x$use_gcov" = "xyes"])
1200 AC_PATH_PROG(svnversioncommand, svnversion)
1201 AC_PATH_PROG(gitcommand, git)
1202 if test "X$svnversioncommand" = "X" || test `$svnversioncommand -n '.'` = "exported"
1204 if test "X$gitcommand" = "X"
1206 AC_DEFINE_UNQUOTED(VCS_VERSION, ["release"], [repository svn version])
1208 gitver=$(git log -1 | grep "git-svn-id" | sed -e 's/.*@\([[0-9]]\+\) .*/\1/')
1211 AC_DEFINE_UNQUOTED(VCS_VERSION, ["release"], [repository svn version])
1213 AC_DEFINE_UNQUOTED(VCS_VERSION, ["svn-$gitver"], [repository svn version])
1217 AC_DEFINE_UNQUOTED(VCS_VERSION, ["svn-`svnversion -n`"], [repository svn version])
1232 src/ats-tool/Makefile
1238 src/consensus/Makefile
1239 src/consensus/consensus.conf
1240 src/datacache/Makefile
1241 src/datastore/Makefile
1242 src/datastore/datastore.conf
1250 src/fragmentation/Makefile
1255 src/gns/nss/Makefile
1257 src/include/Makefile
1258 src/include/gnunet_directories.h
1259 src/hostlist/Makefile
1260 src/lockmanager/Makefile
1261 src/lockmanager/lockmanager.conf
1265 src/namestore/Makefile
1266 src/namestore/namestore.conf
1270 src/peerinfo/Makefile
1271 src/peerinfo/peerinfo.conf
1272 src/peerinfo-tool/Makefile
1273 src/postgres/Makefile
1276 src/statistics/Makefile
1277 src/statistics/statistics.conf
1280 src/sysmon/sysmon.conf
1281 src/template/Makefile
1282 src/testbed/Makefile
1283 src/testbed/testbed.conf
1284 src/testing/Makefile
1285 src/topology/Makefile
1286 src/transport/Makefile
1287 src/transport/transport.conf
1290 src/util/resolver.conf
1293 src/integration-tests/Makefile
1295 pkgconfig/gnunetats.pc
1296 pkgconfig/gnunetarm.pc
1297 pkgconfig/gnunetblock.pc
1298 pkgconfig/gnunetcore.pc
1299 pkgconfig/gnunetdatacache.pc
1300 pkgconfig/gnunetdatastore.pc
1301 pkgconfig/gnunetdht.pc
1302 pkgconfig/gnunetdns.pc
1303 pkgconfig/gnunetdnsparser.pc
1304 pkgconfig/gnunetdv.pc
1305 pkgconfig/gnunetfragmentation.pc
1306 pkgconfig/gnunetfs.pc
1307 pkgconfig/gnunetgns.pc
1308 pkgconfig/gnunethello.pc
1309 pkgconfig/gnunetlockmanager.pc
1310 pkgconfig/gnunetmesh.pc
1311 pkgconfig/gnunetmysql.pc
1312 pkgconfig/gnunetnamestore.pc
1313 pkgconfig/gnunetnat.pc
1314 pkgconfig/gnunetnse.pc
1315 pkgconfig/gnunetpeerinfo.pc
1316 pkgconfig/gnunetpostgres.pc
1317 pkgconfig/gnunetregex.pc
1318 pkgconfig/gnunetstatistics.pc
1319 pkgconfig/gnunetstream.pc
1320 pkgconfig/gnunettestbed.pc
1321 pkgconfig/gnunettesting.pc
1322 pkgconfig/gnunettransport.pc
1323 pkgconfig/gnunettun.pc
1324 pkgconfig/gnunetutil.pc
1325 pkgconfig/gnunetvpn.pc
1331 # warn user if mysql found but not used due to version
1332 if test "$mysqlfail" = "true"
1334 AC_MSG_NOTICE([NOTICE: MySQL found, but too old. MySQL support will not be compiled.])
1338 if test "x$sqlite" = "x0"
1340 AC_MSG_NOTICE([NOTICE: sqlite not found. sqLite support will not be compiled.])
1344 if test "x$curl" = "x0"
1346 AC_MSG_NOTICE([NOTICE: libcurl not found. http client support will not be compiled.])
1350 if test x$gnutls != xtrue
1352 AC_MSG_NOTICE([NOTICE: gnutls not found, gnunet-gns-proxy will not be built])
1356 if test "x$enable_java_ports" = "xyes"
1358 AC_MSG_NOTICE([NOTICE: opening ports for gnunet-java bindings by default.])
1361 if test "x$lmhd" != "x1"
1363 AC_MSG_NOTICE([NOTICE: libmicrohttpd not found, http transport will not be installed.])
1366 AC_MSG_NOTICE([NOTICE: Database support is set to MySQL: $mysql, SQLite: $sqlite, Postgres: $postgres])
1368 if test "$enable_framework_build" = "yes"
1370 AC_MSG_NOTICE([NOTICE: Mac OS X framework build enabled.])
1373 if test "x$SUDO_BINARY" = "x" -a ! -w /
1375 AC_MSG_NOTICE([NOTICE: --with-sudo not specified and not running as 'root', will not install GNS NSS library])
1379 AC_MSG_NOTICE([********************************************
1380 Please make sure NOW that you have created a user and group 'gnunet'
1381 and additionally a group 'gnunetdns':
1385 Make sure that '/var/lib/gnunet' is owned (and writable) by user
1386 'gnunet'. Then, you can compile GNUnet with
1389 After that, run (if necessary as 'root')
1391 to install everything.
1393 Each GNUnet user should be added to the 'gnunet' group (may
1394 require fresh login to come into effect):
1395 adduser $USERNAME gnunet
1396 (run the above command as root once for each of your users, replacing
1397 "$USERNAME" with the respective login names). If you have a global IP
1398 address, no further configuration is required.
1400 Optionally, download and compile gnunet-gtk to get a GUI for
1401 file-sharing and configuration. This is particularly recommended
1402 if your network setup is non-trivial, as gnunet-setup can be
1403 used to test in the GUI if your network configuration is working.
1404 gnunet-setup should be run as the "gnunet" user under X. As it
1405 does very little with the network, running it as "root" is likely
1406 also harmless. You can also run it as a normal user, but then
1407 you have to copy ~/.gnunet/gnunet.conf" over to the "gnunet" user's
1408 home directory in the end.
1410 Once you have configured your peer, run (as the 'gnunet' user)
1412 to start the peer. You can then run the various GNUnet-tools as
1413 your "normal" user (who should only be in the group 'gnunet').
1414 ********************************************])