1 # This file is part of GNUnet.
2 # (C) 2001--2012 Christian Grothoff (and other contributing authors)
4 # GNUnet is free software; you can redistribute it and/or modify
5 # it under the terms of the GNU General Public License as published
6 # by the Free Software Foundation; either version 2, or (at your
7 # option) any later version.
9 # GNUnet is distributed in the hope that it will be useful, but
10 # WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 # General Public License for more details.
14 # You should have received a copy of the GNU General Public License
15 # along with GNUnet; see the file COPYING. If not, write to the
16 # Free Software Foundation, Inc., 59 Temple Place - Suite 330,
17 # Boston, MA 02111-1307, USA.
20 # Process this file with autoconf to produce a configure script.
24 # Checks for programs.
25 AC_INIT([gnunet], [0.9.3],[bug-gnunet@gnu.org])
31 AM_INIT_AUTOMAKE([gnunet], [0.9.3])
32 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
33 AC_CONFIG_HEADERS([gnunet_config.h])
34 AH_TOP([#define _GNU_SOURCE 1])
45 LT_INIT([disable-static dlopen win32-dll])
56 if test "$enable_shared" = "no"
58 AC_MSG_ERROR([GNUnet only works with shared libraries. Sorry.])
61 CFLAGS="-Wall $CFLAGS"
62 # use '-fno-strict-aliasing', but only if the compiler can take it
63 if gcc -fno-strict-aliasing -S -o /dev/null -xc /dev/null >/dev/null 2>&1;
65 CFLAGS="-fno-strict-aliasing $CFLAGS"
68 # Use Linux interface name unless the OS has a different preference
69 DEFAULT_INTERFACE="\"eth0\""
71 funcstocheck="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_DEFINE_UNQUOTED(GNU,1,[This is a GNU system])
171 AC_MSG_RESULT(Unrecognised OS $host_os)
172 AC_DEFINE_UNQUOTED(OTHEROS,1,[Some strange OS])
176 AC_DEFINE_UNQUOTED([GNUNET_DEFAULT_INTERFACE], $DEFAULT_INTERFACE, [This should be the default choice for the name of the first network interface])
177 AC_SUBST(DEFAULT_INTERFACE)
179 # Disable TCP-based IPC on systems that support UNIX domain
180 # sockets in default configuratin:
184 AC_MSG_CHECKING([for build target])
185 AM_CONDITIONAL(DARWIN, test "$build_target" = "darwin")
186 AM_CONDITIONAL(CYGWIN, test "$build_target" = "cygwin")
187 AM_CONDITIONAL(MINGW, test "$build_target" = "mingw")
188 AM_CONDITIONAL(SOLARIS, test "$build_target" = "solaris")
189 AM_CONDITIONAL(XFREEBSD, test "$build_target" = "freebsd")
190 AM_CONDITIONAL(OPENBSD, test "$build_target" = "openbsd")
191 AM_CONDITIONAL(LINUX, test "$build_target" = "linux")
192 AM_CONDITIONAL(GNU, test "$build_target" = "gnu")
194 AC_MSG_RESULT([$build_target])
195 AC_SUBST(build_target)
196 AM_CONDITIONAL([am__fastdepOBJC], false)
197 AC_UNALIGNED_64_ACCESS
199 # some other checks for standard libs
200 AC_SEARCH_LIBS([gethostbyname], [nsl ws2_32])
201 AC_CHECK_LIB(socket, socket)
203 AC_CHECK_LIB(c, getloadavg, AC_DEFINE(HAVE_GETLOADAVG,1,[getloadavg supported]))
205 # 'save' libs; only those libs found so far will be
206 # linked against _everywhere_. For the others, we
207 # will be more selective!
210 # libgnurx (regex library for W32)
212 AC_CHECK_LIB(gnurx, regexec, gnurx=1)
213 if test "x$gnurx" = "x0" -a "x$build_target" = "xmingw"
215 AC_MSG_ERROR([on W32 GNUnet needs libgnurx])
220 AM_PATH_LIBGCRYPT(1.2.0, gcrypt=1)
221 AC_CHECK_DECLS([gcry_mpi_lshift], [], [], [[#include <gcrypt.h>]])
225 AC_MSG_ERROR([GNUnet needs libgcrypt])
228 # Adam shostack suggests the following for Windows:
229 # -D_FORTIFY_SOURCE=2 -fstack-protector-all
230 AC_ARG_ENABLE(gcc-hardening,
231 AS_HELP_STRING(--enable-gcc-hardening, enable compiler security checks),
232 [if test x$enableval = xyes; then
233 CFLAGS="$CFLAGS -D_FORTIFY_SOURCE=2 -fstack-protector-all"
234 CFLAGS="$CFLAGS -fwrapv -fPIE -Wstack-protector"
235 CFLAGS="$CFLAGS --param ssp-buffer-size=1"
236 LDFLAGS="$LDFLAGS -pie"
240 # Linker hardening options
241 # Currently these options are ELF specific - you can't use this with MacOSX
242 AC_ARG_ENABLE(linker-hardening,
243 AS_HELP_STRING(--enable-linker-hardening, enable linker security fixups),
244 [if test x$enableval = xyes; then
245 LDFLAGS="$LDFLAGS -z relro -z now"
249 extra_logging=GNUNET_NO
250 AC_ARG_ENABLE([logging],
251 AS_HELP_STRING([--enable-logging@<:@=value@:>@],[Enable logging calls. Possible values: yes,no,verbose,veryverbose ('yes' is the default)]),
252 [AS_IF([test "x$enableval" = "xyes"], [],
253 [test "x$enableval" = "xno"], [AC_DEFINE([GNUNET_CULL_LOGGING],[],[Define to cull all logging calls])],
254 [test "x$enableval" = "xverbose"], [extra_logging=GNUNET_YES]
255 [test "x$enableval" = "xveryverbose"], [extra_logging=\(GNUNET_YES+1\)])
257 AC_DEFINE_UNQUOTED([GNUNET_EXTRA_LOGGING],[$extra_logging],[1 if extra logging is enabled, 2 for very verbose extra logging, 0 otherwise])
259 if test $build = $target
261 AC_MSG_CHECKING([for working HMAC])
263 LIBS="$LIBS $LIBGCRYPT_LIBS"
264 CFLAGS="$CFLAGS $LIBGCRYPT_CFLAGS"
266 [AC_LANG_PROGRAM([#include <gcrypt.h>
267 #include <stdio.h>], [[
270 unsigned char data[] = { 0xbf, 0x16, 0x6e, 0x46, 0x3a, 0x6c, 0xf3, 0x93, 0xa7, 0x72,
271 0x11, 0xa1, 0xdc, 0x0b, 0x07, 0xdb, 0x1a, 0x5e, 0xd9, 0xb9, 0x81, 0xbe,
272 0xea, 0xe4, 0x31, 0x5f, 0x24, 0xff, 0xfe, 0x50, 0x8a, 0xde };
273 unsigned char key[] = { 0xfc, 0x62, 0x76, 0x35 };
274 unsigned char result[] = {0xa2, 0xb, 0x1, 0xd9, 0xc0, 0x8b, 0x5a, 0x12, 0x80,
275 0xd5, 0x50, 0x12, 0x8e, 0xd0, 0x5b, 0xb6, 0x5c, 0x87, 0x24, 0xe2, 0xd0,
276 0xd2, 0xaf, 0x63, 0xae, 0xd1, 0xd6, 0x64, 0x14, 0xe3, 0x6e, 0x61, 0x5b,
277 0xd, 0xba, 0x17, 0x7d, 0xd3, 0x10, 0xb1, 0x37, 0x41, 0x91, 0x7d, 0xeb,
278 0x1, 0x4d, 0x71, 0xe8, 0x59, 0x71, 0x42, 0x8e, 0xd6, 0xf3, 0x29, 0x3b,
279 0x90, 0xf2, 0xd1, 0xaf, 0x65, 0x1e, 0xb3};
281 if (!gcry_check_version (GCRYPT_VERSION))
283 fprintf (stderr, "Version mismatch %s <-> %s \n", gcry_check_version (NULL), GCRYPT_VERSION);
287 gcry_control (GCRYCTL_DISABLE_SECMEM, 0);
288 gcry_control (GCRYCTL_INITIALIZATION_FINISHED, 0);
290 if (gcry_md_open(&mac, GCRY_MD_SHA512, GCRY_MD_FLAG_HMAC) != GPG_ERR_NO_ERROR)
292 fprintf (stderr, "gcry_md_open error\n");
296 gcry_md_setkey (mac, key, sizeof (key));
297 gcry_md_write (mac, data, sizeof (data));
299 if (memcmp(gcry_md_read (mac, 0), result, gcry_md_get_algo_dlen (gcry_md_get_algo (mac))) != 0)
301 fprintf (stderr, "memcmp error\n");
309 [AC_MSG_RESULT([yes])],
314 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.])
318 AC_MSG_FAILURE([HMAC test failed])
322 AC_MSG_FAILURE([libgcrypt header version does not match library version])
326 fi # $build = $target
329 LIBCURL_CHECK_CONFIG(,7.21.3,,AC_MSG_ERROR([GNUnet requires libcurl >= 7.21.3]))
334 AC_CHECK_HEADERS([glpk.h],[glpk=true],[gplk=false])
335 AC_CHECK_LIB([glpk],[glp_create_prob],,[gplk=false])
336 # GLPK must support atm MLP presolving, version >= 4.32
337 AC_CHECK_MEMBERS(glp_iocp.presolve,,[gplk=false],[[#include <glpk.h>]])
338 if test x$gplk = xfalse
340 AM_CONDITIONAL(HAVE_LIBGLPK, false)
341 AC_MSG_WARN([GNUnet requires GLPK >= 4.32])
343 AM_CONDITIONAL(HAVE_LIBGLPK, true)
344 AC_DEFINE([HAVE_LIBGLPK],[1],[Have GLPK])
349 AC_CHECK_HEADERS([nss.h],[nss=true],[nss=false])
350 if test x$nss = xfalse
352 AM_CONDITIONAL(HAVE_GLIBCNSS, false)
353 AC_MSG_WARN([No GNU libc nss header, will not build NSS plugin])
355 AM_CONDITIONAL(HAVE_GLIBCNSS, true)
360 # test for kvm and kstat (for CPU stats under BSD/Solaris)
361 AC_CHECK_LIB([kvm],[kvm_open])
362 AC_CHECK_LIB([kstat],[kstat_open])
364 # test for libextractor
366 AC_MSG_CHECKING(for libextractor)
367 AC_ARG_WITH(extractor,
368 [ --with-extractor=PFX base of libextractor installation],
369 [AC_MSG_RESULT([$with_extractor])
370 case $with_extractor in
374 AC_CHECK_HEADERS(extractor.h,
375 AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
379 LDFLAGS="-L$with_extractor/lib $LDFLAGS"
380 CPPFLAGS="-I$with_extractor/include $CPPFLAGS"
381 AC_CHECK_HEADERS(extractor.h,
382 AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
383 EXT_LIB_PATH="-L$with_extractor/lib $EXT_LIB_PATH"
388 [AC_MSG_RESULT([--with-extractor not specified])
389 AC_CHECK_HEADERS(extractor.h,
390 AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
392 if test "$extractor" != 1
394 AC_MSG_ERROR([GNUnet requires libextractor])
399 # test for libunistring
401 if test $HAVE_LIBUNISTRING != yes; then
402 AC_MSG_ERROR([GNUnet requires libunistring])
404 if test $gl_libunistring_hexversion -le 2305; then
405 AC_MSG_ERROR([GNUnet requires libunistring >= 0.9.1.1])
412 # Checks for standard header files.
416 # Check for headers that are ALWAYS required
417 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]))
419 # Checks for headers that are only required on some systems or opional (and where we do NOT abort if they are not there)
420 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])
422 SAVE_LDFLAGS=$LDFLAGS
423 SAVE_CPPFLAGS=$CPPFLAGS
427 AC_MSG_CHECKING(for SQLite)
429 [ --with-sqlite=PFX base of SQLite installation],
430 [AC_MSG_RESULT("$with_sqlite")
435 AC_CHECK_HEADERS(sqlite3.h,
439 LDFLAGS="-L$with_sqlite/lib $LDFLAGS"
440 CPPFLAGS="-I$with_sqlite/include $CPPFLAGS"
441 AC_CHECK_HEADERS(sqlite3.h,
442 EXT_LIB_PATH="-L$with_sqlite/lib $EXT_LIB_PATH"
443 SQLITE_LDFLAGS="-L$with_sqlite/lib"
444 SQLITE_CPPFLAGS="-I$with_sqlite/include"
446 LDFLAGS=$SAVE_LDFLAGS
447 CPPFLAGS=$SAVE_CPPFLAGS
451 [AC_MSG_RESULT([--with-sqlite not specified])
452 AC_CHECK_HEADERS(sqlite3.h, sqlite=true)])
453 AM_CONDITIONAL(HAVE_SQLITE, test x$sqlite = xtrue)
454 AC_SUBST(SQLITE_CPPFLAGS)
455 AC_SUBST(SQLITE_LDFLAGS)
459 AC_MSG_CHECKING(for postgres)
460 AC_ARG_WITH(postgres,
461 [ --with-postgres=PFX base of postgres installation],
462 [AC_MSG_RESULT("$with_postgres")
463 case $with_postgres in
467 AC_CHECK_HEADERS(postgresql/libpq-fe.h,
471 LDFLAGS="-L$with_postgres/lib $LDFLAGS"
472 CPPFLAGS="-I$with_postgres/include $CPPFLAGS"
473 AC_CHECK_HEADERS(postgresql/libpq-fe.h,
474 EXT_LIB_PATH="-L$with_postgres/lib $EXT_LIB_PATH"
475 POSTGRES_LDFLAGS="-L$with_postgres/lib"
476 POSTGRES_CPPFLAGS="-I$with_postgres/include"
478 LDFLAGS=$SAVE_LDFLAGS
479 CPPFLAGS=$SAVE_CPPFLAGS
483 [AC_MSG_RESULT([--with-postgres not specified])
484 AC_CHECK_HEADERS(postgresql/libpq-fe.h, postgres=true)])
485 AM_CONDITIONAL(HAVE_POSTGRES, test x$postgres = xtrue)
486 AC_SUBST(POSTGRES_CPPFLAGS)
487 AC_SUBST(POSTGRES_LDFLAGS)
489 # test for libz (maybe required for linking mysql)
491 AC_CHECK_LIB(z, compress,,zlib=0)
492 AM_CONDITIONAL(HAVE_ZLIB, test x$zlib = x1)
495 AC_MSG_ERROR([GNUnet requires zlib])
499 AC_CHECK_TYPES([sigset_t, off_t], [], [], [#include <sys/types.h>])
500 AC_CHECK_TYPES([size_t], [], [], [#include <stdio.h>])
502 if test "$build_target" = "mingw"
504 CYGWIN_MYSQL_MAGIC="#include <mysql/my_global.h>"
510 SAVE_LDFLAGS=$LDFLAGS
511 SAVE_CPPFLAGS=$CPPFLAGS
512 AC_MSG_CHECKING(for mysql)
514 [ --with-mysql=PFX base of MySQL installation],
515 [AC_MSG_RESULT("$with_mysql")
516 if test "$with_mysql" != "no"
518 if test "$with_mysql" != "yes"
520 LDFLAGS="-L$with_mysql/lib -L$with_mysql/lib/mysql $LDFLAGS $ZLIBS"
521 CPPFLAGS="-I$with_mysql/include $CPPFLAGS"
523 AC_CHECK_HEADERS(mysql/mysql.h,
524 AC_CHECK_LIB(mysqlclient, mysql_init,
525 MYSQL_LDFLAGS="-L$with_mysql/lib -L$with_mysql/lib/mysql"
526 MYSQL_CPPFLAGS="-I$with_mysql/include"
528 mysql=true), [], [$CYGWIN_MYSQL_MAGIC])
531 [AC_MSG_RESULT([--with-mysql not specified])
532 LDFLAGS="-L/usr/lib/mysql $LDFLAGS $ZLIBS"
533 AC_CHECK_LIB(mysqlclient, mysql_init,
534 [AC_CHECK_HEADERS(mysql/mysql.h,
535 MYSQL_LDFLAGS="-L/usr/lib/mysql"
538 , [], [$CYGWIN_MYSQL_MAGIC])])
541 AC_SUBST(MYSQL_LDFLAGS)
542 AC_SUBST(MYSQL_CPPFLAGS)
544 # additional version check for mysql
545 AC_ARG_ENABLE(mysql-version-check, [ --disable-mysql-version-check do not check MySQL version],, enable_mysql_version_check=yes)
546 if test "$mysql" = "true" -a "x$enable_mysql_version_check" = "xyes"
548 AC_MSG_CHECKING(mysql version)
549 AC_RUN_IFELSE([AC_LANG_PROGRAM(
550 [[$CYGWIN_MYSQL_MAGIC
551 #include <mysql/mysql.h>]],
552 [[if (MYSQL_VERSION_ID < 40100)
557 ],mysql=true,mysql=false)
558 if test "$mysql" = "false"
561 AC_MSG_RESULT([fail, >= 4.1 required])
566 AM_CONDITIONAL(HAVE_MYSQL, test x$mysql = xtrue)
567 AM_CONDITIONAL(HAVE_MYSQLE, test "0" = "1")
570 LDFLAGS=$SAVE_LDFLAGS
571 CPPFLAGS=$SAVE_CPPFLAGS
573 if test "$sqlite" = 0 -a "$mysql" = 0
575 AC_MSG_ERROR([GNUnet requires SQLite or MySQL])
580 AC_MSG_CHECKING([for libmicrohttpd])
581 AC_ARG_WITH(microhttpd,
582 [ --with-microhttpd=PFX base of libmicrohttpd installation],
583 [AC_MSG_RESULT([$with_microhttpd])
584 case $with_microhttpd in
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 [AC_MSG_CHECKING([for libmicrohttpd >= 0.9.18])
593 #include "$srcdir/src/include/platform.h"
594 #include <microhttpd.h>
595 int main () { return MHD_VERSION >= 0x0091200 ? 0 : 1; }
598 lmhd=1],[AC_MSG_RESULT(failed)],lmhd=1)]),
599 [],[#include "$srcdir/src/include/platform.h"
600 #include <microhttpd.h>]),,
601 [#include "$srcdir/src/include/platform.h"])
604 LDFLAGS="-L$with_microhttpd/lib $LDFLAGS"
605 CPPFLAGS="-I$with_microhttpd/include $CPPFLAGS"
606 AC_CHECK_HEADERS(microhttpd.h,
607 AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
608 AC_CHECK_LIB([microhttpd], [MHD_start_daemon],
609 EXT_LIB_PATH="-L$with_microhttpd/lib $EXT_LIB_PATH"
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"])
624 [AC_MSG_RESULT([--with-microhttpd not specified])
625 AC_CHECK_HEADERS([microhttpd.h],
626 AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
627 AC_CHECK_LIB([microhttpd], [MHD_start_daemon],
628 [AC_MSG_CHECKING([for libmicrohttpd >= 0.9.18])
630 #include "$srcdir/src/include/platform.h"
631 #include <microhttpd.h>
632 int main () { return MHD_VERSION >= 0x0091200 ? 0 : 1; }
635 lmhd=1],[AC_MSG_RESULT(failed)],lmhd=1)]),
636 [],[#include "$srcdir/src/include/platform.h"
637 #include <microhttpd.h>]),,
638 [#include "$srcdir/src/include/platform.h"])])
639 AM_CONDITIONAL(HAVE_MHD, test x$lmhd = x1)
640 AC_DEFINE_UNQUOTED([HAVE_MHD], $lmhd, [We have libmicrohttpd])
646 # check for python & pexpect (used for some testcases only)
647 AM_PATH_PYTHON([2.6],, [:])
648 AM_CONDITIONAL([HAVE_PYTHON], [test "$PYTHON" != :])
650 if test "$PYTHON" != :
652 AC_MSG_CHECKING([for pexpect])
653 $PYTHON -c "import pexpect" > /dev/null 2> /dev/null
655 AM_CONDITIONAL(HAVE_PYTHON_PEXPECT, test $PYEX -eq 0)
660 AC_MSG_RESULT([not found])
663 AM_CONDITIONAL(HAVE_PYTHON_PEXPECT, 0)
668 AM_GNU_GETTEXT([external])
669 AM_GNU_GETTEXT_VERSION([0.16.1])
674 # Checks for standard typedefs, structures, and compiler characteristics.
683 AC_CHECK_MEMBER([struct sockaddr_in.sin_len],
684 [ AC_DEFINE(HAVE_SOCKADDR_IN_SIN_LEN, 1, [Do we have sockaddr_in.sin_len?])
688 #include <sys/types.h>
689 #include <sys/socket.h>
690 #include <netinet/in.h>
695 # Checks for library functions.
696 AC_FUNC_CLOSEDIR_VOID
698 AC_PROG_GCC_TRADITIONAL
700 AC_FUNC_SELECT_ARGTYPES
710 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])
715 gn_user_home_dir="~/.gnunet"
716 AC_ARG_WITH(user-home-dir,
718 [--with-user-home-dir=DIR],
719 [default user home directory (~/.gnunet)]),
720 [gn_user_home_dir=$withval])
721 AC_SUBST(GN_USER_HOME_DIR, $gn_user_home_dir)
722 gn_daemon_home_dir="/var/lib/gnunet"
723 AC_ARG_WITH(daemon-home-dir,
725 [--with-daemon-home-dir=DIR],
726 [default daemon home directory (/var/lib/gnunet)]),
727 [gn_daemon_home_dir=$withval])
728 AC_SUBST(GN_DAEMON_HOME_DIR, $gn_daemon_home_dir)
729 gn_daemon_config_dir="/etc"
730 AC_ARG_WITH(daemon-config-dir,
732 [--with-daemon-config-dir=DIR],
733 [default daemon config directory (/etc)]),
734 [gn_daemon_config_dir=$withval])
735 AC_SUBST(GN_DAEMON_CONFIG_DIR, $gn_daemon_config_dir)
738 GN_LIBINTL="$LTLIBINTL"
739 AC_ARG_ENABLE(framework, [ --enable-framework enable Mac OS X framework build helpers],enable_framework_build=$enableval)
740 AM_CONDITIONAL(WANT_FRAMEWORK, test x$enable_framework_build = xyes)
741 if test x$enable_framework_build = xyes
743 AC_DEFINE([FRAMEWORK_BUILD], 1, [Build a Mac OS X Framework])
744 GN_INTLINCL='-I$(top_srcdir)/src/intlemu'
745 GN_LIBINTL='$(top_builddir)/src/intlemu/libintlemu.la -framework CoreFoundation'
746 AC_LIB_APPENDTOVAR([CPPFLAGS], [$GN_INTLINCL])
749 GN_LIB_LDFLAGS="-export-dynamic -no-undefined"
750 GN_PLUGIN_LDFLAGS="-export-dynamic -avoid-version -module -no-undefined"
752 AC_SUBST(GN_LIB_LDFLAGS)
753 AC_SUBST(GN_PLUGIN_LDFLAGS)
754 AC_SUBST(GN_INTLINCL)
760 AC_SUBST(EXT_LIB_PATH)
765 AC_SUBST(EXT_LIB_PATH)
769 AC_MSG_CHECKING(for sudo)
771 [ --with-sudo=PATH path to sudo binary (or just yes)],
772 [AC_MSG_RESULT("$with_sudo")
781 SUDO_BINARY=$with_sudo
785 [AC_MSG_RESULT([no])])
786 AC_SUBST(SUDO_BINARY)
787 AM_CONDITIONAL([HAVE_SUDO], [test "x$SUDO_BINARY" != "x" -o -w /])
789 # test for gnunetdns group name
790 GNUNETDNS_GROUP=gnunetdns
791 AC_MSG_CHECKING(for gnunetdns group name)
792 AC_ARG_WITH(gnunetdns,
793 [ --with-gnunetdns=GRPNAME name for gnunetdns group],
794 [AC_MSG_RESULT("$with_gnunetdns")
795 case $with_gnunetdns in
797 GNUNETDNS_GROUP=gnunet
800 GNUNETDNS_GROUP=gnunetdns
803 GNUNETDNS_GROUP=$with_gnunetdns
807 [AC_MSG_RESULT([gnunetdns])])
808 AC_SUBST(GNUNETDNS_GROUP)
814 AC_MSG_CHECKING(for gnutls)
816 [ --with-gnutls=PFX base of gnutls installation],
817 [AC_MSG_RESULT([$with_gnutls])
822 AC_CHECK_HEADERS([gnutls/abstract.h],
823 AC_CHECK_LIB([gnutls], [gnutls_priority_set],
827 LDFLAGS="-L$with_gnutls/lib $LDFLAGS"
828 CPPFLAGS="-I$with_gnutls/include $CPPFLAGS"
829 AC_CHECK_HEADERS([gnutls/abstract.h],
830 AC_CHECK_LIB([gnutls], [gnutls_priority_set],
831 EXT_LIB_PATH="-L$with_gnutls/lib $EXT_LIB_PATH"
836 [AC_MSG_RESULT([--with-gnutls not specified])
837 AC_CHECK_HEADERS([gnutls/abstract.h],
838 AC_CHECK_LIB([gnutls], [gnutls_priority_set],
840 AM_CONDITIONAL(HAVE_GNUTLS, test x$gnutls = xtrue)
841 AC_DEFINE_UNQUOTED([HAVE_GNUTLS], $gnutls, [We have gnutls])
845 # should 'make check' run tests?
846 AC_MSG_CHECKING(whether to run tests)
847 AC_ARG_ENABLE([testruns],
848 [AS_HELP_STRING([--disable-testruns], [disable running tests on make check (default is YES)])],
849 [enable_tests_run=${enableval}],
850 [enable_tests_run=yes])
851 AC_MSG_RESULT($enable_test_run)
852 AM_CONDITIONAL([ENABLE_TEST_RUN], [test "x$enable_tests_run" = "xyes"])
855 # should monkey be used when running (certain) services?
856 AC_MSG_CHECKING(whether to run with monkey)
857 AC_ARG_ENABLE([monkey],
858 [AS_HELP_STRING([--enable-monkey], [enable running with monkey])],
859 [enable_monkey=${enableval}],
861 AC_MSG_RESULT($enable_monkey)
862 AM_CONDITIONAL([ENABLE_MONKEY], [test "x$enable_monkey" = "xyes"])
863 if test "x$enable_monkey" = "xyes"
865 MONKEYPREFIX="monkey"
869 AC_SUBST(MONKEYPREFIX)
872 # should expensive tests be run?
873 AC_MSG_CHECKING(whether to run expensive tests)
874 AC_ARG_ENABLE([expensivetests],
875 [AS_HELP_STRING([--enable-expensivetests], [enable running expensive testcases])],
876 [enable_expensive=${enableval}],
877 [enable_expensive=no])
878 AC_MSG_RESULT($enable_expensive)
879 AM_CONDITIONAL([HAVE_EXPENSIVE_TESTS], [test "x$enable_expensive" = "xyes"])
881 # should ports be open for Java services?
882 AC_MSG_CHECKING(whether to enable ports for gnunet-java)
883 AC_ARG_ENABLE([javaports],
884 [AS_HELP_STRING([--enable-javaports], [use non-zero ports for services with Java bindings (default is NO)])],
885 [enable_java_ports=${enableval}],
886 [enable_java_ports=no])
887 AC_MSG_RESULT($enable_java_ports)
888 if test "x$enable_java_ports" = "xyes"
896 # should benchmarks be run?
897 AC_MSG_CHECKING(whether to run benchmarks during make check)
898 AC_ARG_ENABLE([benchmarks],
899 [AS_HELP_STRING([--enable-benchmarks], [enable running benchmarks during make check])],
900 [enable_benchmarks=${enableval}],
901 [enable_benchmarks=no])
902 AC_MSG_RESULT($enable_benchmarks)
903 AM_CONDITIONAL([HAVE_BENCHMARKS], [test "x$enable_benchmarks" = "xyes"])
905 # should experimental code be compiled (code that may not yet compile)?
906 AC_MSG_CHECKING(whether to compile experimental code)
907 AC_ARG_ENABLE([experimental],
908 [AS_HELP_STRING([--enable-experimental], [enable compiling experimental code])],
909 [enable_experimental=${enableval}],
910 [enable_experimental=no])
911 AC_MSG_RESULT($enable_experimental)
912 AM_CONDITIONAL([HAVE_EXPERIMENTAL], [test "x$enable_experimental" = "xyes"])
914 # should code be enabled that works around missing OS functionality on Windows?
915 # used for test cases
916 if test $build_target = "mingw"
922 [#include <ws2tcpip.h>
924 int s = socket (0, 0, 0);])
926 AC_DEFINE_UNQUOTED([HAVE_SOCKET],1,[Define this if socket() is available])
928 AC_DEFINE_UNQUOTED([HAVE_SOCKET],0,[Define this if socket() is available])
933 [#include <ws2tcpip.h>
935 int s = select (0, NULL, NULL, NULL, NULL);])
937 AC_DEFINE_UNQUOTED([HAVE_SELECT],1,[Define this if select() is available])
939 AC_DEFINE_UNQUOTED([HAVE_SELECT],0,[Define this if select() is available])
944 [#include <ws2tcpip.h>
947 char *s = inet_ntoa (i);])
949 AC_DEFINE_UNQUOTED([HAVE_INET_NTOA],1,[Define this if inet_ntoa() is available])
951 AC_DEFINE_UNQUOTED([HAVE_INET_NTOA],0,[Define this if inet_ntoa() is available])
956 [#include <ws2tcpip.h>
958 int s = getnameinfo (NULL, 0, NULL, 0, NULL, 0, 0);])
960 AC_DEFINE_UNQUOTED([HAVE_GETNAMEINFO],1,[Define this if getnameinfo() is available])
962 AC_DEFINE_UNQUOTED([HAVE_GETNAMEINFO],0,[Define this if getnameinfo() is available])
967 [#include <ws2tcpip.h>
969 int s = gethostname (NULL, 0);])
971 AC_DEFINE_UNQUOTED([HAVE_GETHOSTNAME],1,[Define this if gethostname() is available])
973 AC_DEFINE_UNQUOTED([HAVE_GETHOSTNAME],0,[Define this if gethostname() is available])
978 [#include <ws2tcpip.h>
980 void *s = gethostbyname (NULL);])
982 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYNAME],1,[Define this if gethostbyname() is available])
984 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYNAME],0,[Define this if gethostbyname() is available])
989 [#include <ws2tcpip.h>
991 void *s = gethostbyaddr (NULL, 0, 0);])
993 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYADDR],1,[Define this if gethostbyaddr() is available])
995 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYADDR],0,[Define this if gethostbyaddr() is available])
1000 [#include <ws2tcpip.h>
1002 int s = getaddrinfo (NULL, NULL, NULL, NULL);])
1004 AC_DEFINE_UNQUOTED([HAVE_GETADDRINFO],1,[Define this if getaddrinfo() is available])
1006 AC_DEFINE_UNQUOTED([HAVE_GETADDRINFO],1,[Define this if getaddrinfo() is available])
1010 AC_MSG_CHECKING(whether to enable windows workarounds)
1011 AC_ARG_ENABLE([windows_workarounds],
1012 [AS_HELP_STRING([--enable-windows_workarounds], [enable workarounds used on Windows (only useful for test cases)])],
1013 [enable_workarounds=${enableval}],
1014 [enable_workarounds=no])
1015 AC_MSG_RESULT($enable_workarounds)
1016 if test x$enable_windows_workarounds = "xyes"
1023 AC_DEFINE_UNQUOTED([ENABLE_WINDOWS_WORKAROUNDS], $workarounds, [enable workarounds used on Windows (only useful for test cases)])
1026 AC_MSG_CHECKING(whether to compile with support for code coverage analysis)
1027 AC_ARG_ENABLE([coverage],
1028 AS_HELP_STRING([--enable-coverage],
1029 [compile the library with code coverage support]),
1030 [use_gcov=${enableval}],
1032 AC_MSG_RESULT($use_gcov)
1033 AM_CONDITIONAL([USE_COVERAGE], [test "x$use_gcov" = "xyes"])
1053 src/datacache/Makefile
1054 src/datastore/Makefile
1055 src/datastore/datastore.conf
1063 src/fragmentation/Makefile
1068 src/gns/nss/Makefile
1070 src/include/Makefile
1071 src/include/gnunet_directories.h
1072 src/hostlist/Makefile
1073 src/lockmanager/Makefile
1074 src/lockmanager/lockmanager.conf
1078 src/namestore/Makefile
1079 src/namestore/namestore.conf
1083 src/peerinfo/Makefile
1084 src/peerinfo/peerinfo.conf
1085 src/peerinfo-tool/Makefile
1086 src/postgres/Makefile
1089 src/statistics/Makefile
1090 src/statistics/statistics.conf
1092 src/template/Makefile
1093 src/testbed/Makefile
1094 src/testbed/testbed.conf
1095 src/testing/Makefile
1096 src/testing_old/Makefile
1097 src/topology/Makefile
1098 src/transport/Makefile
1099 src/transport/transport.conf
1102 src/util/resolver.conf
1105 src/integration-tests/Makefile
1107 pkgconfig/gnunetarm.pc
1108 pkgconfig/gnunetblock.pc
1109 pkgconfig/gnunetcore.pc
1110 pkgconfig/gnunetdatacache.pc
1111 pkgconfig/gnunetdatastore.pc
1112 pkgconfig/gnunetdht.pc
1113 pkgconfig/gnunetdhtlog.pc
1114 pkgconfig/gnunetdv.pc
1115 pkgconfig/gnunetfragmentation.pc
1116 pkgconfig/gnunetfs.pc
1117 pkgconfig/gnunethello.pc
1118 pkgconfig/gnunetnat.pc
1119 pkgconfig/gnunetnse.pc
1120 pkgconfig/gnunetpeerinfo.pc
1121 pkgconfig/gnunetregex.pc
1122 pkgconfig/gnunetstatistics.pc
1123 pkgconfig/gnunettesting.pc
1124 pkgconfig/gnunettransport.pc
1125 pkgconfig/gnunetutil.pc
1131 # warn user if mysql found but not used due to version
1132 if test "$mysqlfail" = "true"
1134 AC_MSG_NOTICE([NOTICE: MySQL found, but too old. MySQL support will not be compiled.])
1138 if test "x$sqlite" = "x0"
1140 AC_MSG_NOTICE([NOTICE: sqlite not found. sqLite support will not be compiled.])
1144 if test x$gnutls != xtrue
1146 AC_MSG_NOTICE([NOTICE: gnutls not found, gnunet-gns-proxy will not be built])
1150 if test "x$enable_java_ports" = "xyes"
1152 AC_MSG_NOTICE([NOTICE: opening ports for gnunet-java bindings by default.])
1155 if test "x$lmhd" != "x1"
1157 AC_MSG_NOTICE([NOTICE: libmicrohttpd not found, http transport will not be installed.])
1160 AC_MSG_NOTICE([NOTICE: Database support is set to MySQL: $mysql, SQLite: $sqlite, Postgres: $postgres])
1162 if test "$enable_framework_build" = "yes"
1164 AC_MSG_NOTICE([NOTICE: Mac OS X framework build enabled.])
1167 if test "x$SUDO_BINARY" = "x" -a ! -w /
1169 AC_MSG_NOTICE([NOTICE: --with-sudo not specified and not running as 'root', will not install GNS NSS library])
1173 AC_MSG_NOTICE([********************************************
1174 You can compile GNUnet with
1176 now. After that, run (if necessary as 'root')
1178 to install everything. You may want to create a new user account
1179 to run the GNUnet service:
1181 You also need to create an configuration file that should
1182 specify the path where GNUnet should store data. For example,
1183 you could store in "/etc/gnunet.conf" the following lines:
1186 SERVICEHOME = /var/lib/gnunet
1187 DEFAULTCONFIG = /etc/gnunet.conf
1189 Now, in order to start your peer, run as the 'gnunet' user
1192 Each GNUnet user should also create an (at least initially) empty
1194 mkdir $HOME/.gnunet/
1195 touch $HOME/.gnunet/gnunet.conf
1197 Optionally, download and compile:
1198 - gnunet-gtk to get a GUI for file-sharing and configuration.
1199 ********************************************])