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="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 execinfo.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" != :])
651 AM_GNU_GETTEXT([external])
652 AM_GNU_GETTEXT_VERSION([0.16.1])
657 # Checks for standard typedefs, structures, and compiler characteristics.
666 AC_CHECK_MEMBER([struct sockaddr_in.sin_len],
667 [ AC_DEFINE(HAVE_SOCKADDR_IN_SIN_LEN, 1, [Do we have sockaddr_in.sin_len?])
671 #include <sys/types.h>
672 #include <sys/socket.h>
673 #include <netinet/in.h>
678 # Checks for library functions.
679 AC_FUNC_CLOSEDIR_VOID
681 AC_PROG_GCC_TRADITIONAL
683 AC_FUNC_SELECT_ARGTYPES
693 AC_CHECK_FUNCS([atoll stat64 strnlen mremap setrlimit sysconf initgroups strndup gethostbyname2 getpeerucred getpeereid setresuid $funcstocheck getifaddrs freeifaddrs getresgid])
698 gn_user_home_dir="~/.gnunet"
699 AC_ARG_WITH(user-home-dir,
701 [--with-user-home-dir=DIR],
702 [default user home directory (~/.gnunet)]),
703 [gn_user_home_dir=$withval])
704 AC_SUBST(GN_USER_HOME_DIR, $gn_user_home_dir)
705 gn_daemon_home_dir="/var/lib/gnunet"
706 AC_ARG_WITH(daemon-home-dir,
708 [--with-daemon-home-dir=DIR],
709 [default daemon home directory (/var/lib/gnunet)]),
710 [gn_daemon_home_dir=$withval])
711 AC_SUBST(GN_DAEMON_HOME_DIR, $gn_daemon_home_dir)
712 gn_daemon_config_dir="/etc"
713 AC_ARG_WITH(daemon-config-dir,
715 [--with-daemon-config-dir=DIR],
716 [default daemon config directory (/etc)]),
717 [gn_daemon_config_dir=$withval])
718 AC_SUBST(GN_DAEMON_CONFIG_DIR, $gn_daemon_config_dir)
721 GN_LIBINTL="$LTLIBINTL"
722 AC_ARG_ENABLE(framework, [ --enable-framework enable Mac OS X framework build helpers],enable_framework_build=$enableval)
723 AM_CONDITIONAL(WANT_FRAMEWORK, test x$enable_framework_build = xyes)
724 if test x$enable_framework_build = xyes
726 AC_DEFINE([FRAMEWORK_BUILD], 1, [Build a Mac OS X Framework])
727 GN_INTLINCL='-I$(top_srcdir)/src/intlemu'
728 GN_LIBINTL='$(top_builddir)/src/intlemu/libintlemu.la -framework CoreFoundation'
729 AC_LIB_APPENDTOVAR([CPPFLAGS], [$GN_INTLINCL])
732 GN_LIB_LDFLAGS="-export-dynamic -no-undefined"
733 GN_PLUGIN_LDFLAGS="-export-dynamic -avoid-version -module -no-undefined"
735 AC_SUBST(GN_LIB_LDFLAGS)
736 AC_SUBST(GN_PLUGIN_LDFLAGS)
737 AC_SUBST(GN_INTLINCL)
743 AC_SUBST(EXT_LIB_PATH)
748 AC_SUBST(EXT_LIB_PATH)
752 AC_MSG_CHECKING(for sudo)
754 [ --with-sudo=PATH path to sudo binary (or just yes)],
755 [AC_MSG_RESULT("$with_sudo")
764 SUDO_BINARY=$with_sudo
768 [AC_MSG_RESULT([no])])
769 AC_SUBST(SUDO_BINARY)
770 AM_CONDITIONAL([HAVE_SUDO], [test "x$SUDO_BINARY" != "x" -o -w /])
772 # test for gnunetdns group name
773 GNUNETDNS_GROUP=gnunetdns
774 AC_MSG_CHECKING(for gnunetdns group name)
775 AC_ARG_WITH(gnunetdns,
776 [ --with-gnunetdns=GRPNAME name for gnunetdns group],
777 [AC_MSG_RESULT("$with_gnunetdns")
778 case $with_gnunetdns in
780 GNUNETDNS_GROUP=gnunet
783 GNUNETDNS_GROUP=gnunetdns
786 GNUNETDNS_GROUP=$with_gnunetdns
790 [AC_MSG_RESULT([gnunetdns])])
791 AC_SUBST(GNUNETDNS_GROUP)
797 AC_MSG_CHECKING(for gnutls)
799 [ --with-gnutls=PFX base of gnutls installation],
800 [AC_MSG_RESULT([$with_gnutls])
805 AC_CHECK_HEADERS([gnutls/abstract.h],
806 AC_CHECK_LIB([gnutls], [gnutls_priority_set],
810 LDFLAGS="-L$with_gnutls/lib $LDFLAGS"
811 CPPFLAGS="-I$with_gnutls/include $CPPFLAGS"
812 AC_CHECK_HEADERS([gnutls/abstract.h],
813 AC_CHECK_LIB([gnutls], [gnutls_priority_set],
814 EXT_LIB_PATH="-L$with_gnutls/lib $EXT_LIB_PATH"
819 [AC_MSG_RESULT([--with-gnutls not specified])
820 AC_CHECK_HEADERS([gnutls/abstract.h],
821 AC_CHECK_LIB([gnutls], [gnutls_priority_set],
823 AM_CONDITIONAL(HAVE_GNUTLS, test x$gnutls = xtrue)
824 AC_DEFINE_UNQUOTED([HAVE_GNUTLS], $gnutls, [We have gnutls])
828 # should 'make check' run tests?
829 AC_MSG_CHECKING(whether to run tests)
830 AC_ARG_ENABLE([testruns],
831 [AS_HELP_STRING([--disable-testruns], [disable running tests on make check (default is YES)])],
832 [enable_tests_run=${enableval}],
833 [enable_tests_run=yes])
834 AC_MSG_RESULT($enable_test_run)
835 AM_CONDITIONAL([ENABLE_TEST_RUN], [test "x$enable_tests_run" = "xyes"])
838 # should monkey be used when running (certain) services?
839 AC_MSG_CHECKING(whether to run with monkey)
840 AC_ARG_ENABLE([monkey],
841 [AS_HELP_STRING([--enable-monkey], [enable running with monkey])],
842 [enable_monkey=${enableval}],
844 AC_MSG_RESULT($enable_monkey)
845 AM_CONDITIONAL([ENABLE_MONKEY], [test "x$enable_monkey" = "xyes"])
846 if test "x$enable_monkey" = "xyes"
848 MONKEYPREFIX="monkey"
852 AC_SUBST(MONKEYPREFIX)
855 # should expensive tests be run?
856 AC_MSG_CHECKING(whether to run expensive tests)
857 AC_ARG_ENABLE([expensivetests],
858 [AS_HELP_STRING([--enable-expensivetests], [enable running expensive testcases])],
859 [enable_expensive=${enableval}],
860 [enable_expensive=no])
861 AC_MSG_RESULT($enable_expensive)
862 AM_CONDITIONAL([HAVE_EXPENSIVE_TESTS], [test "x$enable_expensive" = "xyes"])
864 # should ports be open for Java services?
865 AC_MSG_CHECKING(whether to enable ports for gnunet-java)
866 AC_ARG_ENABLE([javaports],
867 [AS_HELP_STRING([--enable-javaports], [use non-zero ports for services with Java bindings (default is NO)])],
868 [enable_java_ports=${enableval}],
869 [enable_java_ports=no])
870 AC_MSG_RESULT($enable_java_ports)
871 if test "x$enable_java_ports" = "xyes"
879 # should benchmarks be run?
880 AC_MSG_CHECKING(whether to run benchmarks during make check)
881 AC_ARG_ENABLE([benchmarks],
882 [AS_HELP_STRING([--enable-benchmarks], [enable running benchmarks during make check])],
883 [enable_benchmarks=${enableval}],
884 [enable_benchmarks=no])
885 AC_MSG_RESULT($enable_benchmarks)
886 AM_CONDITIONAL([HAVE_BENCHMARKS], [test "x$enable_benchmarks" = "xyes"])
888 # should experimental code be compiled (code that may not yet compile)?
889 AC_MSG_CHECKING(whether to compile experimental code)
890 AC_ARG_ENABLE([experimental],
891 [AS_HELP_STRING([--enable-experimental], [enable compiling experimental code])],
892 [enable_experimental=${enableval}],
893 [enable_experimental=no])
894 AC_MSG_RESULT($enable_experimental)
895 AM_CONDITIONAL([HAVE_EXPERIMENTAL], [test "x$enable_experimental" = "xyes"])
897 # should code be enabled that works around missing OS functionality on Windows?
898 # used for test cases
899 if test $build_target = "mingw"
905 [#include <ws2tcpip.h>
907 int s = socket (0, 0, 0);])
909 AC_DEFINE_UNQUOTED([HAVE_SOCKET],1,[Define this if socket() is available])
911 AC_DEFINE_UNQUOTED([HAVE_SOCKET],0,[Define this if socket() is available])
916 [#include <ws2tcpip.h>
918 int s = select (0, NULL, NULL, NULL, NULL);])
920 AC_DEFINE_UNQUOTED([HAVE_SELECT],1,[Define this if select() is available])
922 AC_DEFINE_UNQUOTED([HAVE_SELECT],0,[Define this if select() is available])
927 [#include <ws2tcpip.h>
930 char *s = inet_ntoa (i);])
932 AC_DEFINE_UNQUOTED([HAVE_INET_NTOA],1,[Define this if inet_ntoa() is available])
934 AC_DEFINE_UNQUOTED([HAVE_INET_NTOA],0,[Define this if inet_ntoa() is available])
939 [#include <ws2tcpip.h>
941 int s = getnameinfo (NULL, 0, NULL, 0, NULL, 0, 0);])
943 AC_DEFINE_UNQUOTED([HAVE_GETNAMEINFO],1,[Define this if getnameinfo() is available])
945 AC_DEFINE_UNQUOTED([HAVE_GETNAMEINFO],0,[Define this if getnameinfo() is available])
950 [#include <ws2tcpip.h>
952 int s = gethostname (NULL, 0);])
954 AC_DEFINE_UNQUOTED([HAVE_GETHOSTNAME],1,[Define this if gethostname() is available])
956 AC_DEFINE_UNQUOTED([HAVE_GETHOSTNAME],0,[Define this if gethostname() is available])
961 [#include <ws2tcpip.h>
963 void *s = gethostbyname (NULL);])
965 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYNAME],1,[Define this if gethostbyname() is available])
967 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYNAME],0,[Define this if gethostbyname() is available])
972 [#include <ws2tcpip.h>
974 void *s = gethostbyaddr (NULL, 0, 0);])
976 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYADDR],1,[Define this if gethostbyaddr() is available])
978 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYADDR],0,[Define this if gethostbyaddr() is available])
983 [#include <ws2tcpip.h>
985 int s = getaddrinfo (NULL, NULL, NULL, NULL);])
987 AC_DEFINE_UNQUOTED([HAVE_GETADDRINFO],1,[Define this if getaddrinfo() is available])
989 AC_DEFINE_UNQUOTED([HAVE_GETADDRINFO],1,[Define this if getaddrinfo() is available])
993 AC_MSG_CHECKING(whether to enable windows workarounds)
994 AC_ARG_ENABLE([windows_workarounds],
995 [AS_HELP_STRING([--enable-windows_workarounds], [enable workarounds used on Windows (only useful for test cases)])],
996 [enable_workarounds=${enableval}],
997 [enable_workarounds=no])
998 AC_MSG_RESULT($enable_workarounds)
999 if test x$enable_windows_workarounds = "xyes"
1006 AC_DEFINE_UNQUOTED([ENABLE_WINDOWS_WORKAROUNDS], $workarounds, [enable workarounds used on Windows (only useful for test cases)])
1009 AC_MSG_CHECKING(whether to compile with support for code coverage analysis)
1010 AC_ARG_ENABLE([coverage],
1011 AS_HELP_STRING([--enable-coverage],
1012 [compile the library with code coverage support]),
1013 [use_gcov=${enableval}],
1015 AC_MSG_RESULT($use_gcov)
1016 AM_CONDITIONAL([USE_COVERAGE], [test "x$use_gcov" = "xyes"])
1036 src/datacache/Makefile
1037 src/datastore/Makefile
1038 src/datastore/datastore.conf
1046 src/fragmentation/Makefile
1051 src/gns/nss/Makefile
1053 src/include/Makefile
1054 src/include/gnunet_directories.h
1055 src/hostlist/Makefile
1056 src/lockmanager/Makefile
1057 src/lockmanager/lockmanager.conf
1061 src/namestore/Makefile
1062 src/namestore/namestore.conf
1066 src/peerinfo/Makefile
1067 src/peerinfo/peerinfo.conf
1068 src/peerinfo-tool/Makefile
1069 src/postgres/Makefile
1072 src/statistics/Makefile
1073 src/statistics/statistics.conf
1075 src/template/Makefile
1076 src/testbed/Makefile
1077 src/testbed/testbed.conf
1078 src/testing/Makefile
1079 src/testing_old/Makefile
1080 src/topology/Makefile
1081 src/transport/Makefile
1082 src/transport/transport.conf
1085 src/util/resolver.conf
1088 src/integration-tests/Makefile
1090 pkgconfig/gnunetarm.pc
1091 pkgconfig/gnunetblock.pc
1092 pkgconfig/gnunetcore.pc
1093 pkgconfig/gnunetdatacache.pc
1094 pkgconfig/gnunetdatastore.pc
1095 pkgconfig/gnunetdht.pc
1096 pkgconfig/gnunetdhtlog.pc
1097 pkgconfig/gnunetdv.pc
1098 pkgconfig/gnunetfragmentation.pc
1099 pkgconfig/gnunetfs.pc
1100 pkgconfig/gnunethello.pc
1101 pkgconfig/gnunetnat.pc
1102 pkgconfig/gnunetnse.pc
1103 pkgconfig/gnunetpeerinfo.pc
1104 pkgconfig/gnunetregex.pc
1105 pkgconfig/gnunetstatistics.pc
1106 pkgconfig/gnunettesting.pc
1107 pkgconfig/gnunettransport.pc
1108 pkgconfig/gnunetutil.pc
1114 # warn user if mysql found but not used due to version
1115 if test "$mysqlfail" = "true"
1117 AC_MSG_NOTICE([NOTICE: MySQL found, but too old. MySQL support will not be compiled.])
1121 if test "x$sqlite" = "x0"
1123 AC_MSG_NOTICE([NOTICE: sqlite not found. sqLite support will not be compiled.])
1127 if test x$gnutls != xtrue
1129 AC_MSG_NOTICE([NOTICE: gnutls not found, gnunet-gns-proxy will not be built])
1133 if test "x$enable_java_ports" = "xyes"
1135 AC_MSG_NOTICE([NOTICE: opening ports for gnunet-java bindings by default.])
1138 if test "x$lmhd" != "x1"
1140 AC_MSG_NOTICE([NOTICE: libmicrohttpd not found, http transport will not be installed.])
1143 AC_MSG_NOTICE([NOTICE: Database support is set to MySQL: $mysql, SQLite: $sqlite, Postgres: $postgres])
1145 if test "$enable_framework_build" = "yes"
1147 AC_MSG_NOTICE([NOTICE: Mac OS X framework build enabled.])
1150 if test "x$SUDO_BINARY" = "x" -a ! -w /
1152 AC_MSG_NOTICE([NOTICE: --with-sudo not specified and not running as 'root', will not install GNS NSS library])
1156 AC_MSG_NOTICE([********************************************
1157 You can compile GNUnet with
1159 now. After that, run (if necessary as 'root')
1161 to install everything. You may want to create a new user account
1162 to run the GNUnet service:
1164 You also need to create an configuration file that should
1165 specify the path where GNUnet should store data. For example,
1166 you could store in "/etc/gnunet.conf" the following lines:
1169 SERVICEHOME = /var/lib/gnunet
1170 DEFAULTCONFIG = /etc/gnunet.conf
1172 Now, in order to start your peer, run as the 'gnunet' user
1175 Each GNUnet user should also create an (at least initially) empty
1177 mkdir $HOME/.gnunet/
1178 touch $HOME/.gnunet/gnunet.conf
1180 Optionally, download and compile:
1181 - gnunet-gtk to get a GUI for file-sharing and configuration.
1182 ********************************************])