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.2],[bug-gnunet@gnu.org])
31 AM_INIT_AUTOMAKE([gnunet], [0.9.2])
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="socket select inet_ntoa getnameinfo gethostname gethostbyname gethostbyaddr getaddrinfo"
75 *darwin* | *rhapsody* | *macosx*)
76 AC_DEFINE_UNQUOTED(DARWIN,1,[This is an Apple Darwin system])
77 CPPFLAGS="-D_APPLE_C_SOURCE $CPPFLAGS"
78 CFLAGS="-no-cpp-precomp -fno-common $CFLAGS"
79 AC_MSG_WARN([The VPN application cannot be compiled on your OS])
81 DEFAULT_INTERFACE="\"en0\""
87 AC_DEFINE_UNQUOTED(LINUX,1,[This is a Linux system])
95 AC_DEFINE_UNQUOTED(SOMEBSD,1,[This is a BSD system])
96 AC_DEFINE_UNQUOTED(FREEBSD,1,[This is a FreeBSD system])
97 CFLAGS="-D_THREAD_SAFE $CFLAGS"
98 build_target="freebsd"
104 AC_DEFINE_UNQUOTED(SOMEBSD,1,[This is a BSD system])
105 AC_DEFINE_UNQUOTED(OPENBSD,1,[This is an OpenBSD system])
106 LIBS=`echo $LIBS | sed -e "s/-ldl//"`
107 build_target="openbsd"
113 AC_DEFINE_UNQUOTED(SOMEBSD,1,[This is a BSD system])
114 AC_DEFINE_UNQUOTED(NETBSD,1,[This is a NetBSD system])
120 AC_DEFINE_UNQUOTED(SOLARIS,1,[This is a Solaris system])
121 AC_DEFINE_UNQUOTED(_REENTRANT,1,[Need with solaris or errno doesnt work])
122 AC_CHECK_LIB(resolv, res_init)
123 AC_CHECK_LIB(rt, nanosleep)
124 build_target="solaris"
130 AC_DEFINE_UNQUOTED(LINUX,1,[This is a Linux system])
131 CFLAGS="-D_REENTRANT -fPIC -pipe $CFLAGS"
138 AC_DEFINE_UNQUOTED(CYGWIN,1,[This is a Cygwin system])
139 AC_DEFINE_UNQUOTED(WINDOWS,1,[This is a Windows system])
140 AC_CHECK_LIB(intl, gettext)
141 LDFLAGS="$LDFLAGS -no-undefined"
142 CFLAGS="-mms-bitfields $CFLAGS"
143 build_target="cygwin"
150 AC_DEFINE_UNQUOTED(MINGW,1,[This is a MinGW system])
151 AC_DEFINE_UNQUOTED(WINDOWS,1,[This is a Windows system])
152 AC_DEFINE_UNQUOTED(_WIN32,1,[This is a Windows system])
153 AC_CHECK_LIB(intl, gettext)
154 LDFLAGS="$LDFLAGS -Wl,-no-undefined -Wl,--export-all-symbols"
155 LIBS="$LIBS -lws2_32 -lplibc -lgnurx -lole32"
156 CFLAGS="-mms-bitfields $CFLAGS"
157 CPPFLAGS="-D_WIN32_WINNT=0x0501 -DHAVE_STAT64=1 $CPPFLAGS"
166 AC_MSG_RESULT(Unrecognised OS $host_os)
167 AC_DEFINE_UNQUOTED(OTHEROS,1,[Some strange OS])
171 AC_DEFINE_UNQUOTED([GNUNET_DEFAULT_INTERFACE], $DEFAULT_INTERFACE, [This should be the default choice for the name of the first network interface])
172 AC_SUBST(DEFAULT_INTERFACE)
174 # Disable TCP-based IPC on systems that support UNIX domain
175 # sockets in default configuratin:
179 AC_MSG_CHECKING([for build target])
180 AM_CONDITIONAL(DARWIN, test "$build_target" = "darwin")
181 AM_CONDITIONAL(CYGWIN, test "$build_target" = "cygwin")
182 AM_CONDITIONAL(MINGW, test "$build_target" = "mingw")
183 AM_CONDITIONAL(SOLARIS, test "$build_target" = "solaris")
184 AM_CONDITIONAL(XFREEBSD, test "$build_target" = "freebsd")
185 AM_CONDITIONAL(OPENBSD, test "$build_target" = "openbsd")
186 AM_CONDITIONAL(LINUX, test "$build_target" = "linux")
188 AC_MSG_RESULT([$build_target])
189 AC_SUBST(build_target)
190 AM_CONDITIONAL([am__fastdepOBJC], false)
191 AC_UNALIGNED_64_ACCESS
193 # some other checks for standard libs
194 AC_SEARCH_LIBS([gethostbyname], [nsl ws2_32])
195 AC_CHECK_LIB(socket, socket)
197 AC_CHECK_LIB(c, getloadavg, AC_DEFINE(HAVE_GETLOADAVG,1,[getloadavg supported]))
199 # 'save' libs; only those libs found so far will be
200 # linked against _everywhere_. For the others, we
201 # will be more selective!
204 # libgnurx (regex library for W32)
206 AC_CHECK_LIB(gnurx, regexec, gnurx=1)
207 if test "x$gnurx" = "x0" -a "x$build_target" = "xmingw"
209 AC_MSG_ERROR([on W32 GNUnet needs libgnurx])
214 AM_PATH_LIBGCRYPT(1.2.0, gcrypt=1)
215 AC_CHECK_DECLS([gcry_mpi_lshift], [], [], [[#include <gcrypt.h>]])
219 AC_MSG_ERROR([GNUnet needs libgcrypt])
222 # Adam shostack suggests the following for Windows:
223 # -D_FORTIFY_SOURCE=2 -fstack-protector-all
224 AC_ARG_ENABLE(gcc-hardening,
225 AS_HELP_STRING(--enable-gcc-hardening, enable compiler security checks),
226 [if test x$enableval = xyes; then
227 CFLAGS="$CFLAGS -D_FORTIFY_SOURCE=2 -fstack-protector-all"
228 CFLAGS="$CFLAGS -fwrapv -fPIE -Wstack-protector"
229 CFLAGS="$CFLAGS --param ssp-buffer-size=1"
230 LDFLAGS="$LDFLAGS -pie"
234 # Linker hardening options
235 # Currently these options are ELF specific - you can't use this with MacOSX
236 AC_ARG_ENABLE(linker-hardening,
237 AS_HELP_STRING(--enable-linker-hardening, enable linker security fixups),
238 [if test x$enableval = xyes; then
239 LDFLAGS="$LDFLAGS -z relro -z now"
243 extra_logging=GNUNET_NO
244 AC_ARG_ENABLE([logging],
245 AS_HELP_STRING([--enable-logging@<:@=value@:>@],[Enable logging calls. Possible values: yes,no,verbose,veryverbose ('yes' is the default)]),
246 [AS_IF([test "x$enableval" = "xyes"], [],
247 [test "x$enableval" = "xno"], [AC_DEFINE([GNUNET_CULL_LOGGING],[],[Define to cull all logging calls])],
248 [test "x$enableval" = "xverbose"], [extra_logging=GNUNET_YES]
249 [test "x$enableval" = "xveryverbose"], [extra_logging=\(GNUNET_YES+1\)])
251 AC_DEFINE_UNQUOTED([GNUNET_EXTRA_LOGGING],[$extra_logging],[1 if extra logging is enabled, 2 for very verbose extra logging, 0 otherwise])
253 if test $build = $target
255 AC_MSG_CHECKING([for working HMAC])
257 LIBS="$LIBS $LIBGCRYPT_LIBS"
258 CFLAGS="$CFLAGS $LIBGCRYPT_CFLAGS"
260 [AC_LANG_PROGRAM([#include <gcrypt.h>
261 #include <stdio.h>], [[
264 unsigned char data[] = { 0xbf, 0x16, 0x6e, 0x46, 0x3a, 0x6c, 0xf3, 0x93, 0xa7, 0x72,
265 0x11, 0xa1, 0xdc, 0x0b, 0x07, 0xdb, 0x1a, 0x5e, 0xd9, 0xb9, 0x81, 0xbe,
266 0xea, 0xe4, 0x31, 0x5f, 0x24, 0xff, 0xfe, 0x50, 0x8a, 0xde };
267 unsigned char key[] = { 0xfc, 0x62, 0x76, 0x35 };
268 unsigned char result[] = {0xa2, 0xb, 0x1, 0xd9, 0xc0, 0x8b, 0x5a, 0x12, 0x80,
269 0xd5, 0x50, 0x12, 0x8e, 0xd0, 0x5b, 0xb6, 0x5c, 0x87, 0x24, 0xe2, 0xd0,
270 0xd2, 0xaf, 0x63, 0xae, 0xd1, 0xd6, 0x64, 0x14, 0xe3, 0x6e, 0x61, 0x5b,
271 0xd, 0xba, 0x17, 0x7d, 0xd3, 0x10, 0xb1, 0x37, 0x41, 0x91, 0x7d, 0xeb,
272 0x1, 0x4d, 0x71, 0xe8, 0x59, 0x71, 0x42, 0x8e, 0xd6, 0xf3, 0x29, 0x3b,
273 0x90, 0xf2, 0xd1, 0xaf, 0x65, 0x1e, 0xb3};
275 if (!gcry_check_version (GCRYPT_VERSION))
277 fprintf (stderr, "Version mismatch %s <-> %s \n", gcry_check_version (NULL), GCRYPT_VERSION);
281 gcry_control (GCRYCTL_DISABLE_SECMEM, 0);
282 gcry_control (GCRYCTL_INITIALIZATION_FINISHED, 0);
284 if (gcry_md_open(&mac, GCRY_MD_SHA512, GCRY_MD_FLAG_HMAC) != GPG_ERR_NO_ERROR)
286 fprintf (stderr, "gcry_md_open error\n");
290 gcry_md_setkey (mac, key, sizeof (key));
291 gcry_md_write (mac, data, sizeof (data));
293 if (memcmp(gcry_md_read (mac, 0), result, gcry_md_get_algo_dlen (gcry_md_get_algo (mac))) != 0)
295 fprintf (stderr, "memcmp error\n");
303 [AC_MSG_RESULT([yes])],
308 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.])
312 AC_MSG_FAILURE([HMAC test failed])
316 AC_MSG_FAILURE([libgcrypt header version does not match library version])
320 fi # $build = $target
323 LIBCURL_CHECK_CONFIG(,7.20.1,,AC_MSG_ERROR([GNUnet requires libcurl >= 7.20.1]))
328 AC_CHECK_HEADERS([glpk.h],[glpk=true],[gplk=false])
329 AC_CHECK_LIB([glpk],[glp_create_prob],,[gplk=false])
330 # GLPK must support atm MLP presolving, version >= 4.32
331 AC_CHECK_MEMBERS(glp_iocp.presolve,,[gplk=false],[[#include <glpk.h>]])
332 if test x$gplk = xfalse
334 AM_CONDITIONAL(HAVE_LIBGLPK, false)
335 AC_MSG_WARN([GNUnet requires GLPK >= 4.32])
337 AM_CONDITIONAL(HAVE_LIBGLPK, true)
338 AC_DEFINE([HAVE_LIBGLPK],[1],[Have GLPK])
342 # test for kvm and kstat (for CPU stats under BSD/Solaris)
343 AC_CHECK_LIB([kvm],[kvm_open])
344 AC_CHECK_LIB([kstat],[kstat_open])
346 # test for libextractor
348 AC_MSG_CHECKING(for libextractor)
349 AC_ARG_WITH(extractor,
350 [ --with-extractor=PFX base of libextractor installation],
351 [AC_MSG_RESULT([$with_extractor])
352 case $with_extractor in
356 AC_CHECK_HEADERS(extractor.h,
357 AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
361 LDFLAGS="-L$with_extractor/lib $LDFLAGS"
362 CPPFLAGS="-I$with_extractor/include $CPPFLAGS"
363 AC_CHECK_HEADERS(extractor.h,
364 AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
365 EXT_LIB_PATH="-L$with_extractor/lib $EXT_LIB_PATH"
370 [AC_MSG_RESULT([--with-extractor not specified])
371 AC_CHECK_HEADERS(extractor.h,
372 AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
374 if test "$extractor" != 1
376 AC_MSG_ERROR([GNUnet requires libextractor])
381 # test for libunistring
383 if test $HAVE_LIBUNISTRING != yes; then
384 AC_MSG_ERROR([GNUnet requires libunistring])
386 if test $gl_libunistring_hexversion -le 2305; then
387 AC_MSG_ERROR([GNUnet requires libunistring >= 0.9.1.1])
394 # Checks for standard header files.
398 # Check for headers that are ALWAYS required
399 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]))
401 # Checks for headers that are only required on some systems or opional (and where we do NOT abort if they are not there)
402 AC_CHECK_HEADERS([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])
404 SAVE_LDFLAGS=$LDFLAGS
405 SAVE_CPPFLAGS=$CPPFLAGS
409 AC_MSG_CHECKING(for SQLite)
411 [ --with-sqlite=PFX base of SQLite installation],
412 [AC_MSG_RESULT("$with_sqlite")
417 AC_CHECK_HEADERS(sqlite3.h,
421 LDFLAGS="-L$with_sqlite/lib $LDFLAGS"
422 CPPFLAGS="-I$with_sqlite/include $CPPFLAGS"
423 AC_CHECK_HEADERS(sqlite3.h,
424 EXT_LIB_PATH="-L$with_sqlite/lib $EXT_LIB_PATH"
425 SQLITE_LDFLAGS="-L$with_sqlite/lib"
426 SQLITE_CPPFLAGS="-I$with_sqlite/include"
428 LDFLAGS=$SAVE_LDFLAGS
429 CPPFLAGS=$SAVE_CPPFLAGS
433 [AC_MSG_RESULT([--with-sqlite not specified])
434 AC_CHECK_HEADERS(sqlite3.h, sqlite=true)])
435 AM_CONDITIONAL(HAVE_SQLITE, test x$sqlite = xtrue)
436 AC_SUBST(SQLITE_CPPFLAGS)
437 AC_SUBST(SQLITE_LDFLAGS)
441 AC_MSG_CHECKING(for postgres)
442 AC_ARG_WITH(postgres,
443 [ --with-postgres=PFX base of postgres installation],
444 [AC_MSG_RESULT("$with_postgres")
445 case $with_postgres in
449 AC_CHECK_HEADERS(postgresql/libpq-fe.h,
453 LDFLAGS="-L$with_postgres/lib $LDFLAGS"
454 CPPFLAGS="-I$with_postgres/include $CPPFLAGS"
455 AC_CHECK_HEADERS(postgresql/libpq-fe.h,
456 EXT_LIB_PATH="-L$with_postgres/lib $EXT_LIB_PATH"
457 POSTGRES_LDFLAGS="-L$with_postgres/lib"
458 POSTGRES_CPPFLAGS="-I$with_postgres/include"
460 LDFLAGS=$SAVE_LDFLAGS
461 CPPFLAGS=$SAVE_CPPFLAGS
465 [AC_MSG_RESULT([--with-postgres not specified])
466 AC_CHECK_HEADERS(postgresql/libpq-fe.h, postgres=true)])
467 AM_CONDITIONAL(HAVE_POSTGRES, test x$postgres = xtrue)
468 AC_SUBST(POSTGRES_CPPFLAGS)
469 AC_SUBST(POSTGRES_LDFLAGS)
471 # test for libz (maybe required for linking mysql)
473 AC_CHECK_LIB(z, compress,,zlib=0)
474 AM_CONDITIONAL(HAVE_ZLIB, test x$zlib = x1)
477 AC_MSG_ERROR([GNUnet requires zlib])
481 AC_CHECK_TYPES([sigset_t, off_t], [], [], [#include <sys/types.h>])
482 AC_CHECK_TYPES([size_t], [], [], [#include <stdio.h>])
484 if test "$build_target" = "mingw"
486 CYGWIN_MYSQL_MAGIC="#include <mysql/my_global.h>"
492 SAVE_LDFLAGS=$LDFLAGS
493 SAVE_CPPFLAGS=$CPPFLAGS
494 AC_MSG_CHECKING(for mysql)
496 [ --with-mysql=PFX base of MySQL installation],
497 [AC_MSG_RESULT("$with_mysql")
498 if test "$with_mysql" != "no"
500 if test "$with_mysql" != "yes"
502 LDFLAGS="-L$with_mysql/lib -L$with_mysql/lib/mysql $LDFLAGS $ZLIBS"
503 CPPFLAGS="-I$with_mysql/include $CPPFLAGS"
505 AC_CHECK_HEADERS(mysql/mysql.h,
506 AC_CHECK_LIB(mysqlclient, mysql_init,
507 MYSQL_LDFLAGS="-L$with_mysql/lib -L$with_mysql/lib/mysql"
508 MYSQL_CPPFLAGS="-I$with_mysql/include"
510 mysql=true), [], [$CYGWIN_MYSQL_MAGIC])
513 [AC_MSG_RESULT([--with-mysql not specified])
514 LDFLAGS="-L/usr/lib/mysql $LDFLAGS $ZLIBS"
515 AC_CHECK_LIB(mysqlclient, mysql_init,
516 [AC_CHECK_HEADERS(mysql/mysql.h,
517 MYSQL_LDFLAGS="-L/usr/lib/mysql"
520 , [], [$CYGWIN_MYSQL_MAGIC])])
523 AC_SUBST(MYSQL_LDFLAGS)
524 AC_SUBST(MYSQL_CPPFLAGS)
526 # additional version check for mysql
527 AC_ARG_ENABLE(mysql-version-check, [ --disable-mysql-version-check do not check MySQL version],, enable_mysql_version_check=yes)
528 if test "$mysql" = "true" -a "x$enable_mysql_version_check" = "xyes"
530 AC_MSG_CHECKING(mysql version)
531 AC_RUN_IFELSE([AC_LANG_PROGRAM(
532 [[$CYGWIN_MYSQL_MAGIC
533 #include <mysql/mysql.h>]],
534 [[if (MYSQL_VERSION_ID < 40100)
539 ],mysql=true,mysql=false)
540 if test "$mysql" = "false"
543 AC_MSG_RESULT([fail, >= 4.1 required])
548 AM_CONDITIONAL(HAVE_MYSQL, test x$mysql = xtrue)
549 AM_CONDITIONAL(HAVE_MYSQLE, test "0" = "1")
552 LDFLAGS=$SAVE_LDFLAGS
553 CPPFLAGS=$SAVE_CPPFLAGS
555 if test "$sqlite" = 0 -a "$mysql" = 0
557 AC_MSG_ERROR([GNUnet requires SQLite or MySQL])
562 AC_MSG_CHECKING([for libmicrohttpd])
563 AC_ARG_WITH(microhttpd,
564 [ --with-microhttpd=PFX base of libmicrohttpd installation],
565 [AC_MSG_RESULT([$with_microhttpd])
566 case $with_microhttpd in
570 AC_CHECK_HEADERS([microhttpd.h],
571 AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
572 AC_CHECK_LIB([microhttpd], [MHD_start_daemon],
573 [AC_MSG_CHECKING([for libmicrohttpd >= 0.9.18])
575 #include "$srcdir/src/include/platform.h"
576 #include <microhttpd.h>
577 int main () { return MHD_VERSION >= 0x0091200 ? 0 : 1; }
580 lmhd=1],[AC_MSG_RESULT(failed)],lmhd=1)]),
581 [],[#include "$srcdir/src/include/platform.h"
582 #include <microhttpd.h>]),,
583 [#include "$srcdir/src/include/platform.h"])
586 LDFLAGS="-L$with_microhttpd/lib $LDFLAGS"
587 CPPFLAGS="-I$with_microhttpd/include $CPPFLAGS"
588 AC_CHECK_HEADERS(microhttpd.h,
589 AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
590 AC_CHECK_LIB([microhttpd], [MHD_start_daemon],
591 EXT_LIB_PATH="-L$with_microhttpd/lib $EXT_LIB_PATH"
592 [AC_MSG_CHECKING([for libmicrohttpd >= 0.9.18])
594 #include "$srcdir/src/include/platform.h"
595 #include <microhttpd.h>
596 int main () { return MHD_VERSION >= 0x0091200 ? 0 : 1; }
599 lmhd=1],[AC_MSG_RESULT(failed)],lmhd=1)]),
600 [],[#include "$srcdir/src/include/platform.h"
601 #include <microhttpd.h>]),,
602 [#include "$srcdir/src/include/platform.h"])
606 [AC_MSG_RESULT([--with-microhttpd not specified])
607 AC_CHECK_HEADERS([microhttpd.h],
608 AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
609 AC_CHECK_LIB([microhttpd], [MHD_start_daemon],
610 [AC_MSG_CHECKING([for libmicrohttpd >= 0.9.18])
612 #include "$srcdir/src/include/platform.h"
613 #include <microhttpd.h>
614 int main () { return MHD_VERSION >= 0x0091200 ? 0 : 1; }
617 lmhd=1],[AC_MSG_RESULT(failed)],lmhd=1)]),
618 [],[#include "$srcdir/src/include/platform.h"
619 #include <microhttpd.h>]),,
620 [#include "$srcdir/src/include/platform.h"])])
621 AM_CONDITIONAL(HAVE_MHD, test x$lmhd = x1)
622 AC_DEFINE_UNQUOTED([HAVE_MHD], $lmhd, [We have libmicrohttpd])
628 # check for python & pexpect (used for some testcases only)
629 AM_PATH_PYTHON([2.6],, [:])
630 AM_CONDITIONAL([HAVE_PYTHON], [test "$PYTHON" != :])
632 if test "$PYTHON" != :
634 AC_MSG_CHECKING([for pexpect])
635 $PYTHON -c "import pexpect" > /dev/null 2> /dev/null
637 AM_CONDITIONAL(HAVE_PYTHON_PEXPECT, test $PYEX -eq 0)
642 AC_MSG_RESULT([not found])
645 AM_CONDITIONAL(HAVE_PYTHON_PEXPECT, 0)
650 AM_GNU_GETTEXT([external])
651 AM_GNU_GETTEXT_VERSION([0.16.1])
656 # Checks for standard typedefs, structures, and compiler characteristics.
665 AC_CHECK_MEMBER([struct sockaddr_in.sin_len],
666 [ AC_DEFINE(HAVE_SOCKADDR_IN_SIN_LEN, 1, [Do we have sockaddr_in.sin_len?])
670 #include <sys/types.h>
671 #include <sys/socket.h>
672 #include <netinet/in.h>
677 # Checks for library functions.
678 AC_FUNC_CLOSEDIR_VOID
680 AC_PROG_GCC_TRADITIONAL
682 AC_FUNC_SELECT_ARGTYPES
692 AC_CHECK_FUNCS([floor memmove rmdir strncasecmp strrchr strtol atoll dup2 fdatasync ftruncate gettimeofday memset mkdir mkfifo strcasecmp strchr strdup strerror strstr clock_gettime getrusage rand uname setlocale getcwd mktime gmtime_r gmtime strlcpy strlcat ftruncate stat64 sbrk mmap mremap setrlimit sysconf initgroups getifaddrs freeifaddrs localtime_r nl_langinfo putenv realpath strndup gethostbyname2 gethostbyname getpeerucred getpeereid setresuid $funcstocheck])
697 gn_user_home_dir="~/.gnunet"
698 AC_ARG_WITH(user-home-dir,
700 [--with-user-home-dir=DIR],
701 [default user home directory (~/.gnunet)]),
702 [gn_user_home_dir=$withval])
703 AC_SUBST(GN_USER_HOME_DIR, $gn_user_home_dir)
704 gn_daemon_home_dir="/var/lib/gnunet"
705 AC_ARG_WITH(daemon-home-dir,
707 [--with-daemon-home-dir=DIR],
708 [default daemon home directory (/var/lib/gnunet)]),
709 [gn_daemon_home_dir=$withval])
710 AC_SUBST(GN_DAEMON_HOME_DIR, $gn_daemon_home_dir)
711 gn_daemon_config_dir="/etc"
712 AC_ARG_WITH(daemon-config-dir,
714 [--with-daemon-config-dir=DIR],
715 [default daemon config directory (/etc)]),
716 [gn_daemon_config_dir=$withval])
717 AC_SUBST(GN_DAEMON_CONFIG_DIR, $gn_daemon_config_dir)
720 GN_LIBINTL="$LTLIBINTL"
721 AC_ARG_ENABLE(framework, [ --enable-framework enable Mac OS X framework build helpers],enable_framework_build=$enableval)
722 AM_CONDITIONAL(WANT_FRAMEWORK, test x$enable_framework_build = xyes)
723 if test x$enable_framework_build = xyes
725 AC_DEFINE([FRAMEWORK_BUILD], 1, [Build a Mac OS X Framework])
726 GN_INTLINCL='-I$(top_srcdir)/src/intlemu'
727 GN_LIBINTL='$(top_builddir)/src/intlemu/libintlemu.la -framework CoreFoundation'
728 AC_LIB_APPENDTOVAR([CPPFLAGS], [$GN_INTLINCL])
731 GN_LIB_LDFLAGS="-export-dynamic -no-undefined"
732 GN_PLUGIN_LDFLAGS="-export-dynamic -avoid-version -module -no-undefined"
734 AC_SUBST(GN_LIB_LDFLAGS)
735 AC_SUBST(GN_PLUGIN_LDFLAGS)
736 AC_SUBST(GN_INTLINCL)
742 AC_SUBST(EXT_LIB_PATH)
747 AC_SUBST(EXT_LIB_PATH)
751 AC_MSG_CHECKING(for sudo)
753 [ --with-sudo=PATH path to sudo binary (or just yes)],
754 [AC_MSG_RESULT("$with_sudo")
763 SUDO_BINARY=$with_sudo
767 [AC_MSG_RESULT([no])])
768 AC_SUBST(SUDO_BINARY)
771 # test for gnunetdns group name
772 GNUNETDNS_GROUP=gnunetdns
773 AC_MSG_CHECKING(for gnunetdns group name)
774 AC_ARG_WITH(gnunetdns,
775 [ --with-gnunetdns=GRPNAME name for gnunetdns group],
776 [AC_MSG_RESULT("$with_gnunetdns")
777 case $with_gnunetdns in
779 GNUNETDNS_GROUP=gnunet
782 GNUNETDNS_GROUP=gnunetdns
785 GNUNETDNS_GROUP=$with_gnunetdns
789 [AC_MSG_RESULT([gnunetdns])])
790 AC_SUBST(GNUNETDNS_GROUP)
793 # should 'make check' run tests?
794 AC_MSG_CHECKING(whether to run tests)
795 AC_ARG_ENABLE([testruns],
796 [AS_HELP_STRING([--disable-testruns], [disable running tests on make check (default is YES)])],
797 [enable_tests_run=${enableval}],
798 [enable_tests_run=yes])
799 AC_MSG_RESULT($enable_test_run)
800 AM_CONDITIONAL([ENABLE_TEST_RUN], [test "x$enable_tests_run" = "xyes"])
803 # should monkey be used when running (certain) services?
804 AC_MSG_CHECKING(whether to run with monkey)
805 AC_ARG_ENABLE([monkey],
806 [AS_HELP_STRING([--enable-monkey], [enable running with monkey])],
807 [enable_monkey=${enableval}],
809 AC_MSG_RESULT($enable_monkey)
810 AM_CONDITIONAL([ENABLE_MONKEY], [test "x$enable_monkey" = "xyes"])
811 if test "x$enable_monkey" = "xyes"
813 MONKEYPREFIX="monkey"
817 AC_SUBST(MONKEYPREFIX)
820 # should expensive tests be run?
821 AC_MSG_CHECKING(whether to run expensive tests)
822 AC_ARG_ENABLE([expensivetests],
823 [AS_HELP_STRING([--enable-expensivetests], [enable running expensive testcases])],
824 [enable_expensive=${enableval}],
825 [enable_expensive=no])
826 AC_MSG_RESULT($enable_expensive)
827 AM_CONDITIONAL([HAVE_EXPENSIVE_TESTS], [test "x$enable_expensive" = "xyes"])
829 # should ports be open for Java services?
830 AC_MSG_CHECKING(whether to enable ports for gnunet-java)
831 AC_ARG_ENABLE([javaports],
832 [AS_HELP_STRING([--enable-javaports], [use non-zero ports for services with Java bindings (default is NO)])],
833 [enable_java_ports=${enableval}],
834 [enable_java_ports=no])
835 AC_MSG_RESULT($enable_java_ports)
836 if test "x$enable_java_ports" = "xyes"
844 # should benchmarks be run?
845 AC_MSG_CHECKING(whether to run benchmarks during make check)
846 AC_ARG_ENABLE([benchmarks],
847 [AS_HELP_STRING([--enable-benchmarks], [enable running benchmarks during make check])],
848 [enable_benchmarks=${enableval}],
849 [enable_benchmarks=no])
850 AC_MSG_RESULT($enable_benchmarks)
851 AM_CONDITIONAL([HAVE_BENCHMARKS], [test "x$enable_benchmarks" = "xyes"])
853 # should experimental code be compiled (code that may not yet compile)?
854 AC_MSG_CHECKING(whether to compile experimental code)
855 AC_ARG_ENABLE([experimental],
856 [AS_HELP_STRING([--enable-experimental], [enable compiling experimental code])],
857 [enable_experimental=${enableval}],
858 [enable_experimental=no])
859 AC_MSG_RESULT($enable_experimental)
860 AM_CONDITIONAL([HAVE_EXPERIMENTAL], [test "x$enable_experimental" = "xyes"])
862 # should code be enabled that works around missing OS functionality on Windows?
863 # used for test cases
864 if test $build_target = "mingw"
870 [#include <ws2tcpip.h>
872 int s = socket (0, 0, 0);])
874 AC_DEFINE_UNQUOTED([HAVE_SOCKET],1,[Define this if socket() is available])
876 AC_DEFINE_UNQUOTED([HAVE_SOCKET],0,[Define this if socket() is available])
881 [#include <ws2tcpip.h>
883 int s = select (0, NULL, NULL, NULL, NULL);])
885 AC_DEFINE_UNQUOTED([HAVE_SELECT],1,[Define this if select() is available])
887 AC_DEFINE_UNQUOTED([HAVE_SELECT],0,[Define this if select() is available])
892 [#include <ws2tcpip.h>
895 char *s = inet_ntoa (i);])
897 AC_DEFINE_UNQUOTED([HAVE_INET_NTOA],1,[Define this if inet_ntoa() is available])
899 AC_DEFINE_UNQUOTED([HAVE_INET_NTOA],0,[Define this if inet_ntoa() is available])
904 [#include <ws2tcpip.h>
906 int s = getnameinfo (NULL, 0, NULL, 0, NULL, 0, 0);])
908 AC_DEFINE_UNQUOTED([HAVE_GETNAMEINFO],1,[Define this if getnameinfo() is available])
910 AC_DEFINE_UNQUOTED([HAVE_GETNAMEINFO],0,[Define this if getnameinfo() is available])
915 [#include <ws2tcpip.h>
917 int s = gethostname (NULL, 0);])
919 AC_DEFINE_UNQUOTED([HAVE_GETHOSTNAME],1,[Define this if gethostname() is available])
921 AC_DEFINE_UNQUOTED([HAVE_GETHOSTNAME],0,[Define this if gethostname() is available])
926 [#include <ws2tcpip.h>
928 void *s = gethostbyname (NULL);])
930 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYNAME],1,[Define this if gethostbyname() is available])
932 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYNAME],0,[Define this if gethostbyname() is available])
937 [#include <ws2tcpip.h>
939 void *s = gethostbyaddr (NULL, 0, 0);])
941 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYADDR],1,[Define this if gethostbyaddr() is available])
943 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYADDR],0,[Define this if gethostbyaddr() is available])
948 [#include <ws2tcpip.h>
950 int s = getaddrinfo (NULL, NULL, NULL, NULL);])
952 AC_DEFINE_UNQUOTED([HAVE_GETADDRINFO],1,[Define this if getaddrinfo() is available])
954 AC_DEFINE_UNQUOTED([HAVE_GETADDRINFO],1,[Define this if getaddrinfo() is available])
958 AC_MSG_CHECKING(whether to enable windows workarounds)
959 AC_ARG_ENABLE([windows_workarounds],
960 [AS_HELP_STRING([--enable-windows_workarounds], [enable workarounds used on Windows (only useful for test cases)])],
961 [enable_workarounds=${enableval}],
962 [enable_workarounds=no])
963 AC_MSG_RESULT($enable_workarounds)
964 if test x$enable_windows_workarounds = "xyes"
971 AC_DEFINE_UNQUOTED([ENABLE_WINDOWS_WORKAROUNDS], $workarounds, [enable workarounds used on Windows (only useful for test cases)])
974 AC_MSG_CHECKING(whether to compile with support for code coverage analysis)
975 AC_ARG_ENABLE([coverage],
976 AS_HELP_STRING([--enable-coverage],
977 [compile the library with code coverage support]),
978 [use_gcov=${enableval}],
980 AC_MSG_RESULT($use_gcov)
981 AM_CONDITIONAL([USE_COVERAGE], [test "x$use_gcov" = "xyes"])
1001 src/datacache/Makefile
1002 src/datastore/Makefile
1003 src/datastore/datastore.conf
1011 src/fragmentation/Makefile
1017 src/include/Makefile
1018 src/include/gnunet_directories.h
1019 src/hostlist/Makefile
1020 src/lockmanager/Makefile
1021 src/lockmanager/lockmanager.conf
1025 src/namestore/Makefile
1026 src/namestore/namestore.conf
1030 src/peerinfo/Makefile
1031 src/peerinfo/peerinfo.conf
1032 src/peerinfo-tool/Makefile
1033 src/postgres/Makefile
1036 src/statistics/Makefile
1037 src/statistics/statistics.conf
1039 src/template/Makefile
1040 src/testing/Makefile
1041 src/topology/Makefile
1042 src/transport/Makefile
1043 src/transport/transport.conf
1046 src/util/resolver.conf
1049 src/integration-tests/Makefile
1051 pkgconfig/gnunetarm.pc
1052 pkgconfig/gnunetblock.pc
1053 pkgconfig/gnunetcore.pc
1054 pkgconfig/gnunetdatacache.pc
1055 pkgconfig/gnunetdatastore.pc
1056 pkgconfig/gnunetdht.pc
1057 pkgconfig/gnunetdhtlog.pc
1058 pkgconfig/gnunetdv.pc
1059 pkgconfig/gnunetfragmentation.pc
1060 pkgconfig/gnunetfs.pc
1061 pkgconfig/gnunethello.pc
1062 pkgconfig/gnunetnat.pc
1063 pkgconfig/gnunetnse.pc
1064 pkgconfig/gnunetpeerinfo.pc
1065 pkgconfig/gnunetregex.pc
1066 pkgconfig/gnunetstatistics.pc
1067 pkgconfig/gnunettesting.pc
1068 pkgconfig/gnunettransport.pc
1069 pkgconfig/gnunetutil.pc
1075 # warn user if mysql found but not used due to version
1076 if test "$mysqlfail" = "true"
1078 AC_MSG_NOTICE([NOTICE: MySQL found, but too old. MySQL support will not be compiled.])
1082 if test "x$sqlite" = "x0"
1084 AC_MSG_NOTICE([NOTICE: sqlite not found. sqLite support will not be compiled.])
1088 if test "x$enable_java_ports" = "xyes"
1090 AC_MSG_NOTICE([NOTICE: opening ports for gnunet-java bindings by default.])
1093 if test "x$lmhd" != "x1"
1095 AC_MSG_NOTICE([NOTICE: libmicrohttpd not found, http transport will not be installed.])
1098 AC_MSG_NOTICE([NOTICE: Database support is set to MySQL: $mysql, SQLite: $sqlite, Postgres: $postgres])
1100 if test "$enable_framework_build" = "yes"
1102 AC_MSG_NOTICE([NOTICE: Mac OS X framework build enabled.])
1105 AC_MSG_NOTICE([********************************************
1106 You can compile GNUnet with
1108 now. After that, run (if necessary as 'root')
1110 to install everything. You may want to create a new user account
1111 to run the GNUnet service:
1113 You also need to create an configuration file that should
1114 specify the path where GNUnet should store data. For example,
1115 you could store in "/etc/gnunet.conf" the following lines:
1118 SERVICEHOME = /var/lib/gnunet
1119 DEFAULTCONFIG = /etc/gnunet.conf
1121 Now, in order to start your peer, run as the 'gnunet' user
1124 Each GNUnet user should also create an (at least initially) empty
1126 mkdir $HOME/.gnunet/
1127 touch $HOME/.gnunet/gnunet.conf
1129 Optionally, download and compile:
1130 - gnunet-gtk to get a GUI for file-sharing and configuration.
1131 ********************************************])