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)
811 # should 'make check' run tests?
812 AC_MSG_CHECKING(whether to run tests)
813 AC_ARG_ENABLE([testruns],
814 [AS_HELP_STRING([--disable-testruns], [disable running tests on make check (default is YES)])],
815 [enable_tests_run=${enableval}],
816 [enable_tests_run=yes])
817 AC_MSG_RESULT($enable_test_run)
818 AM_CONDITIONAL([ENABLE_TEST_RUN], [test "x$enable_tests_run" = "xyes"])
821 # should monkey be used when running (certain) services?
822 AC_MSG_CHECKING(whether to run with monkey)
823 AC_ARG_ENABLE([monkey],
824 [AS_HELP_STRING([--enable-monkey], [enable running with monkey])],
825 [enable_monkey=${enableval}],
827 AC_MSG_RESULT($enable_monkey)
828 AM_CONDITIONAL([ENABLE_MONKEY], [test "x$enable_monkey" = "xyes"])
829 if test "x$enable_monkey" = "xyes"
831 MONKEYPREFIX="monkey"
835 AC_SUBST(MONKEYPREFIX)
838 # should expensive tests be run?
839 AC_MSG_CHECKING(whether to run expensive tests)
840 AC_ARG_ENABLE([expensivetests],
841 [AS_HELP_STRING([--enable-expensivetests], [enable running expensive testcases])],
842 [enable_expensive=${enableval}],
843 [enable_expensive=no])
844 AC_MSG_RESULT($enable_expensive)
845 AM_CONDITIONAL([HAVE_EXPENSIVE_TESTS], [test "x$enable_expensive" = "xyes"])
847 # should ports be open for Java services?
848 AC_MSG_CHECKING(whether to enable ports for gnunet-java)
849 AC_ARG_ENABLE([javaports],
850 [AS_HELP_STRING([--enable-javaports], [use non-zero ports for services with Java bindings (default is NO)])],
851 [enable_java_ports=${enableval}],
852 [enable_java_ports=no])
853 AC_MSG_RESULT($enable_java_ports)
854 if test "x$enable_java_ports" = "xyes"
862 # should benchmarks be run?
863 AC_MSG_CHECKING(whether to run benchmarks during make check)
864 AC_ARG_ENABLE([benchmarks],
865 [AS_HELP_STRING([--enable-benchmarks], [enable running benchmarks during make check])],
866 [enable_benchmarks=${enableval}],
867 [enable_benchmarks=no])
868 AC_MSG_RESULT($enable_benchmarks)
869 AM_CONDITIONAL([HAVE_BENCHMARKS], [test "x$enable_benchmarks" = "xyes"])
871 # should experimental code be compiled (code that may not yet compile)?
872 AC_MSG_CHECKING(whether to compile experimental code)
873 AC_ARG_ENABLE([experimental],
874 [AS_HELP_STRING([--enable-experimental], [enable compiling experimental code])],
875 [enable_experimental=${enableval}],
876 [enable_experimental=no])
877 AC_MSG_RESULT($enable_experimental)
878 AM_CONDITIONAL([HAVE_EXPERIMENTAL], [test "x$enable_experimental" = "xyes"])
880 # should code be enabled that works around missing OS functionality on Windows?
881 # used for test cases
882 if test $build_target = "mingw"
888 [#include <ws2tcpip.h>
890 int s = socket (0, 0, 0);])
892 AC_DEFINE_UNQUOTED([HAVE_SOCKET],1,[Define this if socket() is available])
894 AC_DEFINE_UNQUOTED([HAVE_SOCKET],0,[Define this if socket() is available])
899 [#include <ws2tcpip.h>
901 int s = select (0, NULL, NULL, NULL, NULL);])
903 AC_DEFINE_UNQUOTED([HAVE_SELECT],1,[Define this if select() is available])
905 AC_DEFINE_UNQUOTED([HAVE_SELECT],0,[Define this if select() is available])
910 [#include <ws2tcpip.h>
913 char *s = inet_ntoa (i);])
915 AC_DEFINE_UNQUOTED([HAVE_INET_NTOA],1,[Define this if inet_ntoa() is available])
917 AC_DEFINE_UNQUOTED([HAVE_INET_NTOA],0,[Define this if inet_ntoa() is available])
922 [#include <ws2tcpip.h>
924 int s = getnameinfo (NULL, 0, NULL, 0, NULL, 0, 0);])
926 AC_DEFINE_UNQUOTED([HAVE_GETNAMEINFO],1,[Define this if getnameinfo() is available])
928 AC_DEFINE_UNQUOTED([HAVE_GETNAMEINFO],0,[Define this if getnameinfo() is available])
933 [#include <ws2tcpip.h>
935 int s = gethostname (NULL, 0);])
937 AC_DEFINE_UNQUOTED([HAVE_GETHOSTNAME],1,[Define this if gethostname() is available])
939 AC_DEFINE_UNQUOTED([HAVE_GETHOSTNAME],0,[Define this if gethostname() is available])
944 [#include <ws2tcpip.h>
946 void *s = gethostbyname (NULL);])
948 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYNAME],1,[Define this if gethostbyname() is available])
950 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYNAME],0,[Define this if gethostbyname() is available])
955 [#include <ws2tcpip.h>
957 void *s = gethostbyaddr (NULL, 0, 0);])
959 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYADDR],1,[Define this if gethostbyaddr() is available])
961 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYADDR],0,[Define this if gethostbyaddr() is available])
966 [#include <ws2tcpip.h>
968 int s = getaddrinfo (NULL, NULL, NULL, NULL);])
970 AC_DEFINE_UNQUOTED([HAVE_GETADDRINFO],1,[Define this if getaddrinfo() is available])
972 AC_DEFINE_UNQUOTED([HAVE_GETADDRINFO],1,[Define this if getaddrinfo() is available])
976 AC_MSG_CHECKING(whether to enable windows workarounds)
977 AC_ARG_ENABLE([windows_workarounds],
978 [AS_HELP_STRING([--enable-windows_workarounds], [enable workarounds used on Windows (only useful for test cases)])],
979 [enable_workarounds=${enableval}],
980 [enable_workarounds=no])
981 AC_MSG_RESULT($enable_workarounds)
982 if test x$enable_windows_workarounds = "xyes"
989 AC_DEFINE_UNQUOTED([ENABLE_WINDOWS_WORKAROUNDS], $workarounds, [enable workarounds used on Windows (only useful for test cases)])
992 AC_MSG_CHECKING(whether to compile with support for code coverage analysis)
993 AC_ARG_ENABLE([coverage],
994 AS_HELP_STRING([--enable-coverage],
995 [compile the library with code coverage support]),
996 [use_gcov=${enableval}],
998 AC_MSG_RESULT($use_gcov)
999 AM_CONDITIONAL([USE_COVERAGE], [test "x$use_gcov" = "xyes"])
1019 src/datacache/Makefile
1020 src/datastore/Makefile
1021 src/datastore/datastore.conf
1029 src/fragmentation/Makefile
1034 src/gns/nss/Makefile
1036 src/include/Makefile
1037 src/include/gnunet_directories.h
1038 src/hostlist/Makefile
1039 src/lockmanager/Makefile
1040 src/lockmanager/lockmanager.conf
1044 src/namestore/Makefile
1045 src/namestore/namestore.conf
1049 src/peerinfo/Makefile
1050 src/peerinfo/peerinfo.conf
1051 src/peerinfo-tool/Makefile
1052 src/postgres/Makefile
1055 src/statistics/Makefile
1056 src/statistics/statistics.conf
1058 src/template/Makefile
1059 src/testbed/Makefile
1060 src/testing/Makefile
1061 src/topology/Makefile
1062 src/transport/Makefile
1063 src/transport/transport.conf
1066 src/util/resolver.conf
1069 src/integration-tests/Makefile
1071 pkgconfig/gnunetarm.pc
1072 pkgconfig/gnunetblock.pc
1073 pkgconfig/gnunetcore.pc
1074 pkgconfig/gnunetdatacache.pc
1075 pkgconfig/gnunetdatastore.pc
1076 pkgconfig/gnunetdht.pc
1077 pkgconfig/gnunetdhtlog.pc
1078 pkgconfig/gnunetdv.pc
1079 pkgconfig/gnunetfragmentation.pc
1080 pkgconfig/gnunetfs.pc
1081 pkgconfig/gnunethello.pc
1082 pkgconfig/gnunetnat.pc
1083 pkgconfig/gnunetnse.pc
1084 pkgconfig/gnunetpeerinfo.pc
1085 pkgconfig/gnunetregex.pc
1086 pkgconfig/gnunetstatistics.pc
1087 pkgconfig/gnunettesting.pc
1088 pkgconfig/gnunettransport.pc
1089 pkgconfig/gnunetutil.pc
1095 # warn user if mysql found but not used due to version
1096 if test "$mysqlfail" = "true"
1098 AC_MSG_NOTICE([NOTICE: MySQL found, but too old. MySQL support will not be compiled.])
1102 if test "x$sqlite" = "x0"
1104 AC_MSG_NOTICE([NOTICE: sqlite not found. sqLite support will not be compiled.])
1108 if test "x$enable_java_ports" = "xyes"
1110 AC_MSG_NOTICE([NOTICE: opening ports for gnunet-java bindings by default.])
1113 if test "x$lmhd" != "x1"
1115 AC_MSG_NOTICE([NOTICE: libmicrohttpd not found, http transport will not be installed.])
1118 AC_MSG_NOTICE([NOTICE: Database support is set to MySQL: $mysql, SQLite: $sqlite, Postgres: $postgres])
1120 if test "$enable_framework_build" = "yes"
1122 AC_MSG_NOTICE([NOTICE: Mac OS X framework build enabled.])
1125 if test "x$SUDO_BINARY" = "x" -a ! -w /
1127 AC_MSG_NOTICE([NOTICE: --with-sudo not specified and not running as 'root', will not install GNS NSS library])
1130 AC_MSG_NOTICE([********************************************
1131 You can compile GNUnet with
1133 now. After that, run (if necessary as 'root')
1135 to install everything. You may want to create a new user account
1136 to run the GNUnet service:
1138 You also need to create an configuration file that should
1139 specify the path where GNUnet should store data. For example,
1140 you could store in "/etc/gnunet.conf" the following lines:
1143 SERVICEHOME = /var/lib/gnunet
1144 DEFAULTCONFIG = /etc/gnunet.conf
1146 Now, in order to start your peer, run as the 'gnunet' user
1149 Each GNUnet user should also create an (at least initially) empty
1151 mkdir $HOME/.gnunet/
1152 touch $HOME/.gnunet/gnunet.conf
1154 Optionally, download and compile:
1155 - gnunet-gtk to get a GUI for file-sharing and configuration.
1156 ********************************************])