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.6.0
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 # GLPK must support glpk_init_env, version >= 4.43
405 AC_CHECK_LIB([glpk],[glp_init_env],,[gplk=false])
406 # GLPK must support atm MLP presolving, version >= 4.32
407 AC_CHECK_MEMBERS(glp_iocp.presolve,,[gplk=false],[[#include <glpk.h>]])
408 if test x$gplk = xfalse
410 AM_CONDITIONAL(HAVE_LIBGLPK, false)
411 AC_MSG_WARN([GNUnet requires GLPK >= 4.32])
413 AM_CONDITIONAL(HAVE_LIBGLPK, true)
414 AC_DEFINE([HAVE_LIBGLPK],[1],[Have GLPK])
418 # Minimum required version for glibtop is 2.6.0
419 AM_PATH_GLIB_2_0(2.6.0, [glib2=true] , [glib2=false] ,)
420 if test x$glib2 = xfalse
422 AM_CONDITIONAL(HAVE_GLIB2, false)
423 AC_MSG_WARN([GNUnet requires GLIB >= 2.6.0])
425 AM_CONDITIONAL(HAVE_GLIB2, true)
426 AC_DEFINE([HAVE_GLIB2],[1],[Have glib2])
427 LIBS="$LIBS $GLIB_LIBS"
428 CFLAGS="$CFLAGS $GLIB_CFLAGS"
431 AC_CHECK_HEADERS([nss.h],[nss=true],[nss=false])
432 if test x$nss = xfalse
434 AM_CONDITIONAL(HAVE_GLIBCNSS, false)
435 AC_MSG_WARN([No GNU libc nss header, will not build NSS plugin])
437 AM_CONDITIONAL(HAVE_GLIBCNSS, true)
442 # test for kvm and kstat (for CPU stats under BSD/Solaris)
443 AC_CHECK_LIB([kvm],[kvm_open])
444 AC_CHECK_LIB([kstat],[kstat_open])
446 # test for libextractor
448 AC_MSG_CHECKING(for libextractor)
449 AC_ARG_WITH(extractor,
450 [ --with-extractor=PFX base of libextractor installation],
451 [AC_MSG_RESULT([$with_extractor])
452 case $with_extractor in
456 AC_CHECK_HEADERS(extractor.h,
457 AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
461 LDFLAGS="-L$with_extractor/lib $LDFLAGS"
462 CPPFLAGS="-I$with_extractor/include $CPPFLAGS"
463 AC_CHECK_HEADERS(extractor.h,
464 AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
465 EXT_LIB_PATH="-L$with_extractor/lib $EXT_LIB_PATH"
470 [AC_MSG_RESULT([--with-extractor not specified])
471 AC_CHECK_HEADERS(extractor.h,
472 AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
474 if test "$extractor" != 1
476 AC_MSG_ERROR([GNUnet requires libextractor])
481 # test for libunistring
483 if test $HAVE_LIBUNISTRING != yes; then
484 AC_MSG_ERROR([GNUnet requires libunistring])
486 if test $gl_libunistring_hexversion -le 2305; then
487 AC_MSG_ERROR([GNUnet requires libunistring >= 0.9.1.1])
494 # Checks for standard header files.
498 # Check for headers that are ALWAYS required
499 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]))
501 # Checks for headers that are only required on some systems or opional (and where we do NOT abort if they are not there)
502 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])
504 SAVE_LDFLAGS=$LDFLAGS
505 SAVE_CPPFLAGS=$CPPFLAGS
509 AC_MSG_CHECKING(for SQLite)
511 [ --with-sqlite=PFX base of SQLite installation],
512 [AC_MSG_RESULT("$with_sqlite")
517 AC_CHECK_HEADERS(sqlite3.h,
521 LDFLAGS="-L$with_sqlite/lib $LDFLAGS"
522 CPPFLAGS="-I$with_sqlite/include $CPPFLAGS"
523 AC_CHECK_HEADERS(sqlite3.h,
524 EXT_LIB_PATH="-L$with_sqlite/lib $EXT_LIB_PATH"
525 SQLITE_LDFLAGS="-L$with_sqlite/lib"
526 SQLITE_CPPFLAGS="-I$with_sqlite/include"
528 LDFLAGS=$SAVE_LDFLAGS
529 CPPFLAGS=$SAVE_CPPFLAGS
533 [AC_MSG_RESULT([--with-sqlite not specified])
534 AC_CHECK_HEADERS(sqlite3.h, sqlite=true)])
535 AM_CONDITIONAL(HAVE_SQLITE, test x$sqlite = xtrue)
536 AC_SUBST(SQLITE_CPPFLAGS)
537 AC_SUBST(SQLITE_LDFLAGS)
541 AC_MSG_CHECKING(for postgres)
542 AC_ARG_WITH(postgres,
543 [ --with-postgres=PFX base of postgres installation],
544 [AC_MSG_RESULT("$with_postgres")
545 case $with_postgres in
549 AC_CHECK_HEADERS(postgresql/libpq-fe.h,
553 LDFLAGS="-L$with_postgres/lib $LDFLAGS"
554 CPPFLAGS="-I$with_postgres/include $CPPFLAGS"
555 AC_CHECK_HEADERS(postgresql/libpq-fe.h,
556 EXT_LIB_PATH="-L$with_postgres/lib $EXT_LIB_PATH"
557 POSTGRES_LDFLAGS="-L$with_postgres/lib"
558 POSTGRES_CPPFLAGS="-I$with_postgres/include"
560 LDFLAGS=$SAVE_LDFLAGS
561 CPPFLAGS=$SAVE_CPPFLAGS
565 [AC_MSG_RESULT([--with-postgres not specified])
566 AC_CHECK_HEADERS(postgresql/libpq-fe.h, postgres=true)])
567 AM_CONDITIONAL(HAVE_POSTGRES, test x$postgres = xtrue)
568 AC_SUBST(POSTGRES_CPPFLAGS)
569 AC_SUBST(POSTGRES_LDFLAGS)
571 # test for libz (maybe required for linking mysql)
573 AC_CHECK_LIB(z, compress,,zlib=0)
574 AM_CONDITIONAL(HAVE_ZLIB, test x$zlib = x1)
577 AC_MSG_ERROR([GNUnet requires zlib])
581 AC_CHECK_TYPES([sigset_t, off_t], [], [], [#include <sys/types.h>])
582 AC_CHECK_TYPES([size_t], [], [], [#include <stdio.h>])
584 if test "$build_target" = "mingw"
586 CYGWIN_MYSQL_MAGIC="#include <mysql/my_global.h>"
592 SAVE_LDFLAGS=$LDFLAGS
593 SAVE_CPPFLAGS=$CPPFLAGS
594 AC_MSG_CHECKING(for mysql)
596 [ --with-mysql=PFX base of MySQL installation],
597 [AC_MSG_RESULT("$with_mysql")
598 if test "$with_mysql" != "no"
600 if test "$with_mysql" != "yes"
602 LDFLAGS="-L$with_mysql/lib -L$with_mysql/lib/mysql $LDFLAGS $ZLIBS"
603 CPPFLAGS="-I$with_mysql/include $CPPFLAGS"
605 AC_CHECK_HEADERS(mysql/mysql.h,
606 AC_CHECK_LIB(mysqlclient, mysql_init,
607 MYSQL_LDFLAGS="-L$with_mysql/lib -L$with_mysql/lib/mysql"
608 MYSQL_CPPFLAGS="-I$with_mysql/include"
610 mysql=true), [], [$CYGWIN_MYSQL_MAGIC])
613 [AC_MSG_RESULT([--with-mysql not specified])
614 if test -d "/usr/lib64/mysql"; then
615 MYSQL_LIBDIR="/usr/lib64/mysql"
616 elif test -d "/usr/lib/mysql"; then
617 MYSQL_LIBDIR="/usr/lib/mysql"
619 MYSQL_LIBDIR="/usr/lib"
621 LDFLAGS="-L$MYSQL_LIBDIR $LDFLAGS $ZLIBS"
622 AC_CHECK_LIB(mysqlclient, mysql_init,
623 [AC_CHECK_HEADERS(mysql/mysql.h,
624 MYSQL_LDFLAGS="-L$MYSQL_LIBDIR"
627 , [], [$CYGWIN_MYSQL_MAGIC])])
630 AC_SUBST(MYSQL_LDFLAGS)
631 AC_SUBST(MYSQL_CPPFLAGS)
633 # additional version check for mysql
634 AC_ARG_ENABLE(mysql-version-check, [ --disable-mysql-version-check do not check MySQL version],, enable_mysql_version_check=yes)
635 if test "$mysql" = "true" -a "x$enable_mysql_version_check" = "xyes"
637 AC_MSG_CHECKING(mysql version)
638 AC_RUN_IFELSE([AC_LANG_PROGRAM(
639 [[$CYGWIN_MYSQL_MAGIC
640 #include <mysql/mysql.h>]],
641 [[if (MYSQL_VERSION_ID < 40100)
646 ],mysql=true,mysql=false)
647 if test "$mysql" = "false"
650 AC_MSG_RESULT([fail, >= 4.1 required])
655 AM_CONDITIONAL(HAVE_MYSQL, test x$mysql = xtrue)
656 AM_CONDITIONAL(HAVE_MYSQLE, test "0" = "1")
659 LDFLAGS=$SAVE_LDFLAGS
660 CPPFLAGS=$SAVE_CPPFLAGS
662 if test "$sqlite" = 0 -a "$mysql" = 0
664 AC_MSG_ERROR([GNUnet requires SQLite or MySQL])
669 AC_MSG_CHECKING([for libmicrohttpd])
670 AC_ARG_WITH(microhttpd,
671 [ --with-microhttpd=PFX base of libmicrohttpd installation],
672 [AC_MSG_RESULT([$with_microhttpd])
673 case $with_microhttpd in
677 AC_CHECK_HEADERS([microhttpd.h],
678 AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
679 AC_CHECK_LIB([microhttpd], [MHD_start_daemon],
680 [AC_MSG_CHECKING([for libmicrohttpd >= 0.9.18])
682 #include "$native_srcdir/src/include/platform.h"
683 #include <microhttpd.h>
684 int main () { return MHD_VERSION >= 0x0091200 ? 0 : 1; }
687 lmhd=1],[AC_MSG_RESULT(failed)],lmhd=1)]),
688 [],[#include "$native_srcdir/src/include/platform.h"
689 #include <microhttpd.h>]),,
690 [#include "$native_srcdir/src/include/platform.h"])
693 LDFLAGS="-L$with_microhttpd/lib $LDFLAGS"
694 CPPFLAGS="-I$with_microhttpd/include $CPPFLAGS"
695 AC_CHECK_HEADERS(microhttpd.h,
696 AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
697 AC_CHECK_LIB([microhttpd], [MHD_start_daemon],
698 EXT_LIB_PATH="-L$with_microhttpd/lib $EXT_LIB_PATH"
699 [AC_MSG_CHECKING([for libmicrohttpd >= 0.9.18])
701 #include "$native_srcdir/src/include/platform.h"
702 #include <microhttpd.h>
703 int main () { return MHD_VERSION >= 0x0091200 ? 0 : 1; }
706 lmhd=1],[AC_MSG_RESULT(failed)],lmhd=1)]),
707 [],[#include "$native_srcdir/src/include/platform.h"
708 #include <microhttpd.h>]),,
709 [#include "$native_srcdir/src/include/platform.h"])
713 [AC_MSG_RESULT([--with-microhttpd not specified])
714 AC_CHECK_HEADERS([microhttpd.h],
715 AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
716 AC_CHECK_LIB([microhttpd], [MHD_start_daemon],
717 [AC_MSG_CHECKING([for libmicrohttpd >= 0.9.18])
719 #include "$native_srcdir/src/include/platform.h"
720 #include <microhttpd.h>
721 int main () { return MHD_VERSION >= 0x0091200 ? 0 : 1; }
724 lmhd=1],[AC_MSG_RESULT(failed)],lmhd=1)]),
725 [],[#include "$native_srcdir/src/include/platform.h"
726 #include <microhttpd.h>]),,
727 [#include "$native_srcdir/src/include/platform.h"])])
728 AM_CONDITIONAL(HAVE_MHD, test x$lmhd = x1)
729 AC_DEFINE_UNQUOTED([HAVE_MHD], $lmhd, [We have libmicrohttpd])
735 # check for python & pexpect (used for some testcases only)
736 AM_PATH_PYTHON([2.6],, [:])
737 AM_CONDITIONAL([HAVE_PYTHON], [test "$PYTHON" != :])
740 AM_GNU_GETTEXT([external])
741 AM_GNU_GETTEXT_VERSION([0.16.1])
746 # Checks for standard typedefs, structures, and compiler characteristics.
755 AC_CHECK_MEMBER([struct sockaddr_in.sin_len],
756 [ AC_DEFINE(HAVE_SOCKADDR_IN_SIN_LEN, 1, [Do we have sockaddr_in.sin_len?])
760 #include <sys/types.h>
761 #include <sys/socket.h>
762 #include <netinet/in.h>
767 # Checks for library functions.
768 AC_FUNC_CLOSEDIR_VOID
770 AC_PROG_GCC_TRADITIONAL
772 AC_FUNC_SELECT_ARGTYPES
782 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])
787 gn_user_home_dir="~/.gnunet"
788 AC_ARG_WITH(user-home-dir,
790 [--with-user-home-dir=DIR],
791 [default user home directory (~/.gnunet)]),
792 [gn_user_home_dir=$withval])
793 AC_SUBST(GN_USER_HOME_DIR, $gn_user_home_dir)
794 gn_daemon_home_dir="/var/lib/gnunet"
795 AC_ARG_WITH(daemon-home-dir,
797 [--with-daemon-home-dir=DIR],
798 [default daemon home directory (/var/lib/gnunet)]),
799 [gn_daemon_home_dir=$withval])
800 AC_SUBST(GN_DAEMON_HOME_DIR, $gn_daemon_home_dir)
801 gn_daemon_config_dir="/etc"
802 AC_ARG_WITH(daemon-config-dir,
804 [--with-daemon-config-dir=DIR],
805 [default daemon config directory (/etc)]),
806 [gn_daemon_config_dir=$withval])
807 AC_SUBST(GN_DAEMON_CONFIG_DIR, $gn_daemon_config_dir)
810 GN_LIBINTL="$LTLIBINTL"
811 AC_ARG_ENABLE(framework, [ --enable-framework enable Mac OS X framework build helpers],enable_framework_build=$enableval)
812 AM_CONDITIONAL(WANT_FRAMEWORK, test x$enable_framework_build = xyes)
813 if test x$enable_framework_build = xyes
815 AC_DEFINE([FRAMEWORK_BUILD], 1, [Build a Mac OS X Framework])
816 GN_INTLINCL='-I$(top_srcdir)/src/intlemu'
817 GN_LIBINTL='$(top_builddir)/src/intlemu/libintlemu.la -framework CoreFoundation'
818 AC_LIB_APPENDTOVAR([CPPFLAGS], [$GN_INTLINCL])
821 GN_LIB_LDFLAGS="-export-dynamic -no-undefined"
822 GN_PLUGIN_LDFLAGS="-export-dynamic -avoid-version -module -no-undefined"
824 AC_SUBST(GN_LIB_LDFLAGS)
825 AC_SUBST(GN_PLUGIN_LDFLAGS)
826 AC_SUBST(GN_INTLINCL)
832 AC_SUBST(EXT_LIB_PATH)
837 AC_SUBST(EXT_LIB_PATH)
841 AC_MSG_CHECKING(for sudo)
843 [ --with-sudo=PATH path to sudo binary (or just yes)],
844 [AC_MSG_RESULT("$with_sudo")
853 SUDO_BINARY=$with_sudo
857 [AC_MSG_RESULT([no])])
858 AC_SUBST(SUDO_BINARY)
859 AM_CONDITIONAL([HAVE_SUDO], [test "x$SUDO_BINARY" != "x" -o -w /])
863 AC_MSG_CHECKING(with nssdir)
865 [ --with-nssdir=PATH where to install NSS plugins],
866 [AC_MSG_RESULT("$with_nssdir")
883 if test "x$SUDO_BINARY" != "x" -o -w /
887 AC_MSG_RESULT([yes, to /lib])
895 AM_CONDITIONAL([INSTALL_NSS], [test "x$install_nss" != "x0"])
897 # test for gnunetdns group name
898 GNUNETDNS_GROUP=gnunetdns
899 AC_MSG_CHECKING(for gnunetdns group name)
900 AC_ARG_WITH(gnunetdns,
901 [ --with-gnunetdns=GRPNAME name for gnunetdns group],
902 [AC_MSG_RESULT("$with_gnunetdns")
903 case $with_gnunetdns in
905 GNUNETDNS_GROUP=gnunet
908 GNUNETDNS_GROUP=gnunetdns
911 GNUNETDNS_GROUP=$with_gnunetdns
915 [AC_MSG_RESULT([gnunetdns])])
916 AC_SUBST(GNUNETDNS_GROUP)
922 AC_MSG_CHECKING(for gnutls)
924 [ --with-gnutls=PFX base of gnutls installation],
925 [AC_MSG_RESULT([$with_gnutls])
930 AC_CHECK_HEADERS([gnutls/abstract.h],
931 AC_CHECK_LIB([gnutls], [gnutls_priority_set],
935 LDFLAGS="-L$with_gnutls/lib $LDFLAGS"
936 CPPFLAGS="-I$with_gnutls/include $CPPFLAGS"
937 AC_CHECK_HEADERS([gnutls/abstract.h],
938 AC_CHECK_LIB([gnutls], [gnutls_priority_set],
939 EXT_LIB_PATH="-L$with_gnutls/lib $EXT_LIB_PATH"
944 [AC_MSG_RESULT([--with-gnutls not specified])
945 AC_CHECK_HEADERS([gnutls/abstract.h],
946 AC_CHECK_LIB([gnutls], [gnutls_priority_set],
948 AM_CONDITIONAL(HAVE_GNUTLS, test x$gnutls = xtrue)
949 AC_DEFINE_UNQUOTED([HAVE_GNUTLS], $gnutls, [We have gnutls])
952 # Test if we are building for superMUC
953 AC_MSG_CHECKING(if testbed should use IBM LoadLeveler to run on SuperMUC)
955 [AS_HELP_STRING([--enable-ll],
956 [build GNUnet testbed for use with IBM LoadLeveler for running testbed on
957 SuperMUC (default is NO)])],
958 [if test "x$enable_ll" = "xno"
966 AC_MSG_RESULT($enable_ll)
967 AM_CONDITIONAL([ENABLE_LL], [test "x$ll" = "x1"])
968 AC_DEFINE_UNQUOTED([ENABLE_LL], [$ll], [Build with LL support])
970 # Check if NSE has to send timestamp information to testbed logger for
971 # generating histogram of messages received
972 AC_MSG_CHECKING(if NSE has to send timestamp information to testbed logger)
973 AC_ARG_ENABLE([nse-histogram],
974 [AS_HELP_STRING([--enable-nse-histogram],
975 [have NSE send timestamp information to testbed logger for generating
976 histogram of received messages. NOT useful for production (default is
978 [if test "x$enableval" = "xno"
985 enable_nse_histogram=no])
986 AC_MSG_RESULT($enable_nse_histogram)
987 AM_CONDITIONAL([ENABLE_NSE_HISTOGRAM], [test "x$nse_histogram" = "x1"])
988 AC_DEFINE_UNQUOTED([ENABLE_NSE_HISTOGRAM], [$nse_histogram],
989 [have NSE send timestamp information to testbed logger])
991 # should 'make check' run tests?
992 AC_MSG_CHECKING(whether to run tests)
993 AC_ARG_ENABLE([testruns],
994 [AS_HELP_STRING([--disable-testruns], [disable running tests on make check (default is YES)])],
995 [enable_tests_run=${enableval}],
996 [enable_tests_run=yes])
997 AC_MSG_RESULT($enable_test_run)
998 AM_CONDITIONAL([ENABLE_TEST_RUN], [test "x$enable_tests_run" = "xyes"])
1001 # should monkey be used when running (certain) services?
1002 AC_MSG_CHECKING(whether to run with monkey)
1003 AC_ARG_ENABLE([monkey],
1004 [AS_HELP_STRING([--enable-monkey], [enable running with monkey])],
1005 [enable_monkey=${enableval}],
1007 AC_MSG_RESULT($enable_monkey)
1008 AM_CONDITIONAL([ENABLE_MONKEY], [test "x$enable_monkey" = "xyes"])
1009 if test "x$enable_monkey" = "xyes"
1011 MONKEYPREFIX="monkey"
1015 AC_SUBST(MONKEYPREFIX)
1018 # should expensive tests be run?
1019 AC_MSG_CHECKING(whether to run expensive tests)
1020 AC_ARG_ENABLE([expensivetests],
1021 [AS_HELP_STRING([--enable-expensivetests], [enable running expensive testcases])],
1022 [enable_expensive=${enableval}],
1023 [enable_expensive=no])
1024 AC_MSG_RESULT($enable_expensive)
1025 AM_CONDITIONAL([HAVE_EXPENSIVE_TESTS], [test "x$enable_expensive" = "xyes"])
1027 # should ports be open for Java services?
1028 AC_MSG_CHECKING(whether to enable ports for gnunet-java)
1029 AC_ARG_ENABLE([javaports],
1030 [AS_HELP_STRING([--enable-javaports], [use non-zero ports for services with Java bindings (default is NO)])],
1031 [enable_java_ports=${enableval}],
1032 [enable_java_ports=no])
1033 AC_MSG_RESULT($enable_java_ports)
1034 if test "x$enable_java_ports" = "xyes"
1038 JAVAPORT="$UNIXONLY"
1042 # should benchmarks be run?
1043 AC_MSG_CHECKING(whether to run benchmarks during make check)
1044 AC_ARG_ENABLE([benchmarks],
1045 [AS_HELP_STRING([--enable-benchmarks], [enable running benchmarks during make check])],
1046 [enable_benchmarks=${enableval}],
1047 [enable_benchmarks=no])
1048 AC_MSG_RESULT($enable_benchmarks)
1049 AM_CONDITIONAL([HAVE_BENCHMARKS], [test "x$enable_benchmarks" = "xyes"])
1051 # should experimental code be compiled (code that may not yet compile)?
1052 AC_MSG_CHECKING(whether to compile experimental code)
1053 AC_ARG_ENABLE([experimental],
1054 [AS_HELP_STRING([--enable-experimental], [enable compiling experimental code])],
1055 [enable_experimental=${enableval}],
1056 [enable_experimental=no])
1057 AC_MSG_RESULT($enable_experimental)
1058 AM_CONDITIONAL([HAVE_EXPERIMENTAL], [test "x$enable_experimental" = "xyes"])
1060 # should memory statistics be kept (very expensive CPU-wise!)
1061 AC_MSG_CHECKING(whether to create expensive statistics on memory use)
1062 AC_ARG_ENABLE([heapstats],
1063 [AS_HELP_STRING([--enable-heapstats], [enable expensive heap statistics])],
1064 [enable_heapstats=1],
1065 [enable_heapstats=0])
1066 AC_MSG_RESULT($enable_heapstats)
1067 AC_DEFINE_UNQUOTED([ENABLE_HEAP_STATISTICS],$enable_heapstats,[enable expensive heap statistics])
1069 # should code be enabled that works around missing OS functionality on Windows?
1070 # used for test cases
1071 if test $build_target = "mingw"
1077 [#include <ws2tcpip.h>
1079 int s = socket (0, 0, 0);])
1081 AC_DEFINE_UNQUOTED([HAVE_SOCKET],1,[Define this if socket() is available])
1083 AC_DEFINE_UNQUOTED([HAVE_SOCKET],0,[Define this if socket() is available])
1088 [#include <ws2tcpip.h>
1090 int s = select (0, NULL, NULL, NULL, NULL);])
1092 AC_DEFINE_UNQUOTED([HAVE_SELECT],1,[Define this if select() is available])
1094 AC_DEFINE_UNQUOTED([HAVE_SELECT],0,[Define this if select() is available])
1099 [#include <ws2tcpip.h>
1102 char *s = inet_ntoa (i);])
1104 AC_DEFINE_UNQUOTED([HAVE_INET_NTOA],1,[Define this if inet_ntoa() is available])
1106 AC_DEFINE_UNQUOTED([HAVE_INET_NTOA],0,[Define this if inet_ntoa() is available])
1111 [#include <ws2tcpip.h>
1113 int s = getnameinfo (NULL, 0, NULL, 0, NULL, 0, 0);])
1115 AC_DEFINE_UNQUOTED([HAVE_GETNAMEINFO],1,[Define this if getnameinfo() is available])
1117 AC_DEFINE_UNQUOTED([HAVE_GETNAMEINFO],0,[Define this if getnameinfo() is available])
1122 [#include <ws2tcpip.h>
1124 int s = gethostname (NULL, 0);])
1126 AC_DEFINE_UNQUOTED([HAVE_GETHOSTNAME],1,[Define this if gethostname() is available])
1128 AC_DEFINE_UNQUOTED([HAVE_GETHOSTNAME],0,[Define this if gethostname() is available])
1133 [#include <ws2tcpip.h>
1135 void *s = gethostbyname (NULL);])
1137 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYNAME],1,[Define this if gethostbyname() is available])
1139 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYNAME],0,[Define this if gethostbyname() is available])
1144 [#include <ws2tcpip.h>
1146 void *s = gethostbyaddr (NULL, 0, 0);])
1148 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYADDR],1,[Define this if gethostbyaddr() is available])
1150 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYADDR],0,[Define this if gethostbyaddr() is available])
1155 [#include <ws2tcpip.h>
1157 int s = getaddrinfo (NULL, NULL, NULL, NULL);])
1159 AC_DEFINE_UNQUOTED([HAVE_GETADDRINFO],1,[Define this if getaddrinfo() is available])
1161 AC_DEFINE_UNQUOTED([HAVE_GETADDRINFO],1,[Define this if getaddrinfo() is available])
1165 AC_MSG_CHECKING(whether to enable windows workarounds)
1166 AC_ARG_ENABLE([windows_workarounds],
1167 [AS_HELP_STRING([--enable-windows_workarounds], [enable workarounds used on Windows (only useful for test cases)])],
1168 [enable_workarounds=${enableval}],
1169 [enable_workarounds=no])
1170 AC_MSG_RESULT($enable_workarounds)
1171 if test x$enable_windows_workarounds = "xyes"
1178 AC_DEFINE_UNQUOTED([ENABLE_WINDOWS_WORKAROUNDS], $workarounds, [enable workarounds used on Windows (only useful for test cases)])
1181 AC_MSG_CHECKING(whether to compile with support for code coverage analysis)
1182 AC_ARG_ENABLE([coverage],
1183 AS_HELP_STRING([--enable-coverage],
1184 [compile the library with code coverage support]),
1185 [use_gcov=${enableval}],
1187 AC_MSG_RESULT($use_gcov)
1188 AM_CONDITIONAL([USE_COVERAGE], [test "x$use_gcov" = "xyes"])
1192 AC_PATH_PROG(svnversioncommand, svnversion)
1193 AC_PATH_PROG(gitcommand, git)
1194 if test "X$svnversioncommand" = "X" || test `$svnversioncommand -n '.'` = "exported"
1196 if test "X$gitcommand" = "X"
1198 AC_DEFINE_UNQUOTED(VCS_VERSION, ["release"], [repository svn version])
1200 gitver=$(git log -1 | grep "git-svn-id" | sed -e 's/.*@\([[0-9]]\+\) .*/\1/')
1201 if test "X$gitver" = "X"
1203 AC_DEFINE_UNQUOTED(VCS_VERSION, ["release"], [repository svn version])
1205 AC_DEFINE_UNQUOTED(VCS_VERSION, ["svn-$gitver"], [repository svn version])
1209 AC_DEFINE_UNQUOTED(VCS_VERSION, ["svn-`svnversion -n`"], [repository svn version])
1224 src/ats-tool/Makefile
1228 src/consensus/Makefile
1229 src/consensus/consensus.conf
1230 src/datacache/Makefile
1231 src/datastore/Makefile
1232 src/datastore/datastore.conf
1240 src/experimentation/Makefile
1241 src/experimentation/experimentation.conf
1242 src/fragmentation/Makefile
1247 src/gns/nss/Makefile
1249 src/include/Makefile
1250 src/include/gnunet_directories.h
1251 src/hostlist/Makefile
1252 src/lockmanager/Makefile
1253 src/lockmanager/lockmanager.conf
1257 src/namestore/Makefile
1258 src/namestore/namestore.conf
1262 src/peerinfo/Makefile
1263 src/peerinfo/peerinfo.conf
1264 src/peerinfo-tool/Makefile
1265 src/postgres/Makefile
1268 src/regex/regex.conf
1271 src/statistics/Makefile
1272 src/statistics/statistics.conf
1274 src/template/Makefile
1275 src/testbed/Makefile
1276 src/testbed/testbed.conf
1277 src/testing/Makefile
1278 src/topology/Makefile
1279 src/transport/Makefile
1280 src/transport/transport.conf
1283 src/util/resolver.conf
1286 src/integration-tests/Makefile
1288 pkgconfig/gnunetats.pc
1289 pkgconfig/gnunetarm.pc
1290 pkgconfig/gnunetblock.pc
1291 pkgconfig/gnunetcore.pc
1292 pkgconfig/gnunetdatacache.pc
1293 pkgconfig/gnunetdatastore.pc
1294 pkgconfig/gnunetdht.pc
1295 pkgconfig/gnunetdns.pc
1296 pkgconfig/gnunetdnsparser.pc
1297 pkgconfig/gnunetdv.pc
1298 pkgconfig/gnunetfragmentation.pc
1299 pkgconfig/gnunetfs.pc
1300 pkgconfig/gnunetgns.pc
1301 pkgconfig/gnunethello.pc
1302 pkgconfig/gnunetlockmanager.pc
1303 pkgconfig/gnunetmesh.pc
1304 pkgconfig/gnunetmysql.pc
1305 pkgconfig/gnunetnamestore.pc
1306 pkgconfig/gnunetnat.pc
1307 pkgconfig/gnunetnse.pc
1308 pkgconfig/gnunetpeerinfo.pc
1309 pkgconfig/gnunetpostgres.pc
1310 pkgconfig/gnunetregex.pc
1311 pkgconfig/gnunetstatistics.pc
1312 pkgconfig/gnunetstream.pc
1313 pkgconfig/gnunettestbed.pc
1314 pkgconfig/gnunettesting.pc
1315 pkgconfig/gnunettransport.pc
1316 pkgconfig/gnunettun.pc
1317 pkgconfig/gnunetutil.pc
1318 pkgconfig/gnunetvpn.pc
1324 # warn user if mysql found but not used due to version
1325 if test "$mysqlfail" = "true"
1327 AC_MSG_NOTICE([NOTICE: MySQL found, but too old. MySQL support will not be compiled.])
1331 if test "x$sqlite" = "x0"
1333 AC_MSG_NOTICE([NOTICE: sqlite not found. sqLite support will not be compiled.])
1337 if test "x$curl" = "x0"
1339 AC_MSG_NOTICE([NOTICE: libcurl not found. http client support will not be compiled.])
1343 if test x$gnutls != xtrue
1345 AC_MSG_NOTICE([NOTICE: gnutls not found, gnunet-gns-proxy will not be built])
1349 if test "x$enable_java_ports" = "xyes"
1351 AC_MSG_NOTICE([NOTICE: opening ports for gnunet-java bindings by default.])
1354 if test "x$lmhd" != "x1"
1356 AC_MSG_NOTICE([NOTICE: libmicrohttpd not found, http transport will not be installed.])
1359 AC_MSG_NOTICE([NOTICE: Database support is set to MySQL: $mysql, SQLite: $sqlite, Postgres: $postgres])
1361 if test "$enable_framework_build" = "yes"
1363 AC_MSG_NOTICE([NOTICE: Mac OS X framework build enabled.])
1366 if test "x$SUDO_BINARY" = "x" -a ! -w /
1368 AC_MSG_NOTICE([NOTICE: --with-sudo not specified and not running as 'root', will not install GNS NSS library])
1372 AC_MSG_NOTICE([********************************************
1373 Please make sure NOW that you have created a user and group 'gnunet'
1374 and additionally a group 'gnunetdns':
1378 Make sure that '/var/lib/gnunet' is owned (and writable) by user
1379 'gnunet'. Then, you can compile GNUnet with
1382 After that, run (if necessary as 'root')
1384 to install everything.
1386 Each GNUnet user should be added to the 'gnunet' group (may
1387 require fresh login to come into effect):
1388 adduser $USERNAME gnunet
1389 (run the above command as root once for each of your users, replacing
1390 "$USERNAME" with the respective login names). If you have a global IP
1391 address, no further configuration is required.
1393 Optionally, download and compile gnunet-gtk to get a GUI for
1394 file-sharing and configuration. This is particularly recommended
1395 if your network setup is non-trivial, as gnunet-setup can be
1396 used to test in the GUI if your network configuration is working.
1397 gnunet-setup should be run as the "gnunet" user under X. As it
1398 does very little with the network, running it as "root" is likely
1399 also harmless. You can also run it as a normal user, but then
1400 you have to copy ~/.gnunet/gnunet.conf" over to the "gnunet" user's
1401 home directory in the end.
1403 Once you have configured your peer, run (as the 'gnunet' user)
1405 to start the peer. You can then run the various GNUnet-tools as
1406 your "normal" user (who should only be in the group 'gnunet').
1407 ********************************************])