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\""
73 *darwin* | *rhapsody* | *macosx*)
74 AC_DEFINE_UNQUOTED(DARWIN,1,[This is an Apple Darwin system])
75 CPPFLAGS="-D_APPLE_C_SOURCE $CPPFLAGS"
76 CFLAGS="-no-cpp-precomp -fno-common $CFLAGS"
77 AC_MSG_WARN([The VPN application cannot be compiled on your OS])
79 DEFAULT_INTERFACE="\"en0\""
85 AC_DEFINE_UNQUOTED(LINUX,1,[This is a Linux system])
93 AC_DEFINE_UNQUOTED(SOMEBSD,1,[This is a BSD system])
94 AC_DEFINE_UNQUOTED(FREEBSD,1,[This is a FreeBSD system])
95 CFLAGS="-D_THREAD_SAFE $CFLAGS"
96 build_target="freebsd"
102 AC_DEFINE_UNQUOTED(SOMEBSD,1,[This is a BSD system])
103 AC_DEFINE_UNQUOTED(OPENBSD,1,[This is an OpenBSD system])
104 LIBS=`echo $LIBS | sed -e "s/-ldl//"`
105 build_target="openbsd"
111 AC_DEFINE_UNQUOTED(SOMEBSD,1,[This is a BSD system])
112 AC_DEFINE_UNQUOTED(NETBSD,1,[This is a NetBSD system])
118 AC_DEFINE_UNQUOTED(SOLARIS,1,[This is a Solaris system])
119 AC_DEFINE_UNQUOTED(_REENTRANT,1,[Need with solaris or errno doesnt work])
120 AC_CHECK_LIB(resolv, res_init)
121 AC_CHECK_LIB(rt, nanosleep)
122 build_target="solaris"
128 AC_DEFINE_UNQUOTED(LINUX,1,[This is a Linux system])
129 CFLAGS="-D_REENTRANT -fPIC -pipe $CFLAGS"
136 AC_DEFINE_UNQUOTED(CYGWIN,1,[This is a Cygwin system])
137 AC_DEFINE_UNQUOTED(WINDOWS,1,[This is a Windows system])
138 AC_CHECK_LIB(intl, gettext)
139 LDFLAGS="$LDFLAGS -no-undefined"
140 CFLAGS="-mms-bitfields $CFLAGS"
141 build_target="cygwin"
148 AC_DEFINE_UNQUOTED(MINGW,1,[This is a MinGW system])
149 AC_DEFINE_UNQUOTED(WINDOWS,1,[This is a Windows system])
150 AC_DEFINE_UNQUOTED(_WIN32,1,[This is a Windows system])
151 AC_CHECK_LIB(intl, gettext)
152 LDFLAGS="$LDFLAGS -Wl,-no-undefined -Wl,--export-all-symbols"
153 LIBS="$LIBS -lws2_32 -lplibc -lgnurx -lole32"
154 CFLAGS="-mms-bitfields $CFLAGS"
155 CPPFLAGS="-D_WIN32_WINNT=0x0501 -DHAVE_STAT64=1 $CPPFLAGS"
163 AC_MSG_RESULT(Unrecognised OS $host_os)
164 AC_DEFINE_UNQUOTED(OTHEROS,1,[Some strange OS])
168 AC_DEFINE_UNQUOTED([GNUNET_DEFAULT_INTERFACE], $DEFAULT_INTERFACE, [This should be the default choice for the name of the first network interface])
169 AC_SUBST(DEFAULT_INTERFACE)
171 # Disable TCP-based IPC on systems that support UNIX domain
172 # sockets in default configuratin:
176 AC_MSG_CHECKING([for build target])
177 AM_CONDITIONAL(DARWIN, test "$build_target" = "darwin")
178 AM_CONDITIONAL(CYGWIN, test "$build_target" = "cygwin")
179 AM_CONDITIONAL(MINGW, test "$build_target" = "mingw")
180 AM_CONDITIONAL(SOLARIS, test "$build_target" = "solaris")
181 AM_CONDITIONAL(XFREEBSD, test "$build_target" = "freebsd")
182 AM_CONDITIONAL(OPENBSD, test "$build_target" = "openbsd")
183 AM_CONDITIONAL(LINUX, test "$build_target" = "linux")
185 AC_MSG_RESULT([$build_target])
186 AC_SUBST(build_target)
187 AM_CONDITIONAL([am__fastdepOBJC], false)
188 AC_UNALIGNED_64_ACCESS
190 # some other checks for standard libs
191 AC_SEARCH_LIBS([gethostbyname], [nsl ws2_32])
192 AC_CHECK_LIB(socket, socket)
194 AC_CHECK_LIB(c, getloadavg, AC_DEFINE(HAVE_GETLOADAVG,1,[getloadavg supported]))
196 # 'save' libs; only those libs found so far will be
197 # linked against _everywhere_. For the others, we
198 # will be more selective!
201 # libgnurx (regex library for W32)
203 AC_CHECK_LIB(gnurx, regexec, gnurx=1)
204 if test "x$gnurx" = "x0" -a "x$build_target" = "xmingw"
206 AC_MSG_ERROR([on W32 GNUnet needs libgnurx])
211 AM_PATH_LIBGCRYPT(1.2.0, gcrypt=1)
212 AC_CHECK_DECLS([gcry_mpi_lshift], [], [], [[#include <gcrypt.h>]])
216 AC_MSG_ERROR([GNUnet needs libgcrypt])
219 # Adam shostack suggests the following for Windows:
220 # -D_FORTIFY_SOURCE=2 -fstack-protector-all
221 AC_ARG_ENABLE(gcc-hardening,
222 AS_HELP_STRING(--enable-gcc-hardening, enable compiler security checks),
223 [if test x$enableval = xyes; then
224 CFLAGS="$CFLAGS -D_FORTIFY_SOURCE=2 -fstack-protector-all"
225 CFLAGS="$CFLAGS -fwrapv -fPIE -Wstack-protector"
226 CFLAGS="$CFLAGS --param ssp-buffer-size=1"
227 LDFLAGS="$LDFLAGS -pie"
231 # Linker hardening options
232 # Currently these options are ELF specific - you can't use this with MacOSX
233 AC_ARG_ENABLE(linker-hardening,
234 AS_HELP_STRING(--enable-linker-hardening, enable linker security fixups),
235 [if test x$enableval = xyes; then
236 LDFLAGS="$LDFLAGS -z relro -z now"
240 extra_logging=GNUNET_NO
241 AC_ARG_ENABLE([logging],
242 AS_HELP_STRING([--enable-logging@<:@=value@:>@],[Enable logging calls. Possible values: yes,no,verbose,veryverbose ('yes' is the default)]),
243 [AS_IF([test "x$enableval" = "xyes"], [],
244 [test "x$enableval" = "xno"], [AC_DEFINE([GNUNET_CULL_LOGGING],[],[Define to cull all logging calls])],
245 [test "x$enableval" = "xverbose"], [extra_logging=GNUNET_YES]
246 [test "x$enableval" = "xveryverbose"], [extra_logging=\(GNUNET_YES+1\)])
248 AC_DEFINE_UNQUOTED([GNUNET_EXTRA_LOGGING],[$extra_logging],[1 if extra logging is enabled, 2 for very verbose extra logging, 0 otherwise])
250 if test $build = $target
252 AC_MSG_CHECKING([for working HMAC])
254 LIBS="$LIBS $LIBGCRYPT_LIBS"
255 CFLAGS="$CFLAGS $LIBGCRYPT_CFLAGS"
257 [AC_LANG_PROGRAM([#include <gcrypt.h>
258 #include <stdio.h>], [[
261 unsigned char data[] = { 0xbf, 0x16, 0x6e, 0x46, 0x3a, 0x6c, 0xf3, 0x93, 0xa7, 0x72,
262 0x11, 0xa1, 0xdc, 0x0b, 0x07, 0xdb, 0x1a, 0x5e, 0xd9, 0xb9, 0x81, 0xbe,
263 0xea, 0xe4, 0x31, 0x5f, 0x24, 0xff, 0xfe, 0x50, 0x8a, 0xde };
264 unsigned char key[] = { 0xfc, 0x62, 0x76, 0x35 };
265 unsigned char result[] = {0xa2, 0xb, 0x1, 0xd9, 0xc0, 0x8b, 0x5a, 0x12, 0x80,
266 0xd5, 0x50, 0x12, 0x8e, 0xd0, 0x5b, 0xb6, 0x5c, 0x87, 0x24, 0xe2, 0xd0,
267 0xd2, 0xaf, 0x63, 0xae, 0xd1, 0xd6, 0x64, 0x14, 0xe3, 0x6e, 0x61, 0x5b,
268 0xd, 0xba, 0x17, 0x7d, 0xd3, 0x10, 0xb1, 0x37, 0x41, 0x91, 0x7d, 0xeb,
269 0x1, 0x4d, 0x71, 0xe8, 0x59, 0x71, 0x42, 0x8e, 0xd6, 0xf3, 0x29, 0x3b,
270 0x90, 0xf2, 0xd1, 0xaf, 0x65, 0x1e, 0xb3};
272 if (!gcry_check_version (GCRYPT_VERSION))
274 fprintf (stderr, "Version mismatch %s <-> %s \n", gcry_check_version (NULL), GCRYPT_VERSION);
278 gcry_control (GCRYCTL_DISABLE_SECMEM, 0);
279 gcry_control (GCRYCTL_INITIALIZATION_FINISHED, 0);
281 if (gcry_md_open(&mac, GCRY_MD_SHA512, GCRY_MD_FLAG_HMAC) != GPG_ERR_NO_ERROR)
283 fprintf (stderr, "gcry_md_open error\n");
287 gcry_md_setkey (mac, key, sizeof (key));
288 gcry_md_write (mac, data, sizeof (data));
290 if (memcmp(gcry_md_read (mac, 0), result, gcry_md_get_algo_dlen (gcry_md_get_algo (mac))) != 0)
292 fprintf (stderr, "memcmp error\n");
300 [AC_MSG_RESULT([yes])],
305 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.])
309 AC_MSG_FAILURE([HMAC test failed])
313 AC_MSG_FAILURE([libgcrypt header version does not match library version])
317 fi # $build = $target
320 LIBCURL_CHECK_CONFIG(,7.20.1,,AC_MSG_ERROR([GNUnet requires libcurl >= 7.20.1]))
325 AC_CHECK_HEADERS([glpk.h],[glpk=true],[gplk=false])
326 AC_CHECK_LIB([glpk],[glp_create_prob],,[gplk=false])
327 # GLPK must support atm MLP presolving, version >= 4.32
328 AC_CHECK_MEMBERS(glp_iocp.presolve,,[gplk=false],[[#include <glpk.h>]])
329 if test x$gplk = xfalse
331 AM_CONDITIONAL(HAVE_LIBGLPK, false)
332 AC_MSG_WARN([GNUnet requires GLPK >= 4.32])
334 AM_CONDITIONAL(HAVE_LIBGLPK, true)
335 AC_DEFINE([HAVE_LIBGLPK],[1],[Have GLPK])
339 # test for kvm and kstat (for CPU stats under BSD/Solaris)
340 AC_CHECK_LIB([kvm],[kvm_open])
341 AC_CHECK_LIB([kstat],[kstat_open])
343 # test for libextractor
345 AC_MSG_CHECKING(for libextractor)
346 AC_ARG_WITH(extractor,
347 [ --with-extractor=PFX base of libextractor installation],
348 [AC_MSG_RESULT([$with_extractor])
349 case $with_extractor in
353 AC_CHECK_HEADERS(extractor.h,
354 AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
358 LDFLAGS="-L$with_extractor/lib $LDFLAGS"
359 CPPFLAGS="-I$with_extractor/include $CPPFLAGS"
360 AC_CHECK_HEADERS(extractor.h,
361 AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
362 EXT_LIB_PATH="-L$with_extractor/lib $EXT_LIB_PATH"
367 [AC_MSG_RESULT([--with-extractor not specified])
368 AC_CHECK_HEADERS(extractor.h,
369 AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
371 if test "$extractor" != 1
373 AC_MSG_ERROR([GNUnet requires libextractor])
378 # test for libunistring
380 if test $HAVE_LIBUNISTRING != yes; then
381 AC_MSG_ERROR([GNUnet requires libunistring])
383 if test $gl_libunistring_hexversion -le 2305; then
384 AC_MSG_ERROR([GNUnet requires libunistring >= 0.9.1.1])
391 # Checks for standard header files.
395 # Check for headers that are ALWAYS required
396 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]))
398 # Checks for headers that are only required on some systems or opional (and where we do NOT abort if they are not there)
399 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])
401 SAVE_LDFLAGS=$LDFLAGS
402 SAVE_CPPFLAGS=$CPPFLAGS
406 AC_MSG_CHECKING(for SQLite)
408 [ --with-sqlite=PFX base of SQLite installation],
409 [AC_MSG_RESULT("$with_sqlite")
414 AC_CHECK_HEADERS(sqlite3.h,
418 LDFLAGS="-L$with_sqlite/lib $LDFLAGS"
419 CPPFLAGS="-I$with_sqlite/include $CPPFLAGS"
420 AC_CHECK_HEADERS(sqlite3.h,
421 EXT_LIB_PATH="-L$with_sqlite/lib $EXT_LIB_PATH"
422 SQLITE_LDFLAGS="-L$with_sqlite/lib"
423 SQLITE_CPPFLAGS="-I$with_sqlite/include"
425 LDFLAGS=$SAVE_LDFLAGS
426 CPPFLAGS=$SAVE_CPPFLAGS
430 [AC_MSG_RESULT([--with-sqlite not specified])
431 AC_CHECK_HEADERS(sqlite3.h, sqlite=true)])
432 AM_CONDITIONAL(HAVE_SQLITE, test x$sqlite = xtrue)
433 AC_SUBST(SQLITE_CPPFLAGS)
434 AC_SUBST(SQLITE_LDFLAGS)
438 AC_MSG_CHECKING(for postgres)
439 AC_ARG_WITH(postgres,
440 [ --with-postgres=PFX base of postgres installation],
441 [AC_MSG_RESULT("$with_postgres")
442 case $with_postgres in
446 AC_CHECK_HEADERS(postgresql/libpq-fe.h,
450 LDFLAGS="-L$with_postgres/lib $LDFLAGS"
451 CPPFLAGS="-I$with_postgres/include $CPPFLAGS"
452 AC_CHECK_HEADERS(postgresql/libpq-fe.h,
453 EXT_LIB_PATH="-L$with_postgres/lib $EXT_LIB_PATH"
454 POSTGRES_LDFLAGS="-L$with_postgres/lib"
455 POSTGRES_CPPFLAGS="-I$with_postgres/include"
457 LDFLAGS=$SAVE_LDFLAGS
458 CPPFLAGS=$SAVE_CPPFLAGS
462 [AC_MSG_RESULT([--with-postgres not specified])
463 AC_CHECK_HEADERS(postgresql/libpq-fe.h, postgres=true)])
464 AM_CONDITIONAL(HAVE_POSTGRES, test x$postgres = xtrue)
465 AC_SUBST(POSTGRES_CPPFLAGS)
466 AC_SUBST(POSTGRES_LDFLAGS)
468 # test for libz (maybe required for linking mysql)
470 AC_CHECK_LIB(z, compress,,zlib=0)
471 AM_CONDITIONAL(HAVE_ZLIB, test x$zlib = x1)
474 AC_MSG_ERROR([GNUnet requires zlib])
478 AC_CHECK_TYPES([sigset_t, off_t], [], [], [#include <sys/types.h>])
479 AC_CHECK_TYPES([size_t], [], [], [#include <stdio.h>])
481 if test "$build_target" = "mingw"
483 CYGWIN_MYSQL_MAGIC="#include <mysql/my_global.h>"
489 SAVE_LDFLAGS=$LDFLAGS
490 SAVE_CPPFLAGS=$CPPFLAGS
491 AC_MSG_CHECKING(for mysql)
493 [ --with-mysql=PFX base of MySQL installation],
494 [AC_MSG_RESULT("$with_mysql")
495 if test "$with_mysql" != "no"
497 if test "$with_mysql" != "yes"
499 LDFLAGS="-L$with_mysql/lib -L$with_mysql/lib/mysql $LDFLAGS $ZLIBS"
500 CPPFLAGS="-I$with_mysql/include $CPPFLAGS"
502 AC_CHECK_HEADERS(mysql/mysql.h,
503 AC_CHECK_LIB(mysqlclient, mysql_init,
504 MYSQL_LDFLAGS="-L$with_mysql/lib -L$with_mysql/lib/mysql"
505 MYSQL_CPPFLAGS="-I$with_mysql/include"
507 mysql=true), [], [$CYGWIN_MYSQL_MAGIC])
510 [AC_MSG_RESULT([--with-mysql not specified])
511 LDFLAGS="-L/usr/lib/mysql $LDFLAGS $ZLIBS"
512 AC_CHECK_LIB(mysqlclient, mysql_init,
513 [AC_CHECK_HEADERS(mysql/mysql.h,
514 MYSQL_LDFLAGS="-L/usr/lib/mysql"
517 , [], [$CYGWIN_MYSQL_MAGIC])])
520 AC_SUBST(MYSQL_LDFLAGS)
521 AC_SUBST(MYSQL_CPPFLAGS)
523 # additional version check for mysql
524 AC_ARG_ENABLE(mysql-version-check, [ --disable-mysql-version-check do not check MySQL version],, enable_mysql_version_check=yes)
525 if test "$mysql" = "true" -a "x$enable_mysql_version_check" = "xyes"
527 AC_MSG_CHECKING(mysql version)
528 AC_RUN_IFELSE([AC_LANG_PROGRAM(
529 [[$CYGWIN_MYSQL_MAGIC
530 #include <mysql/mysql.h>]],
531 [[if (MYSQL_VERSION_ID < 40100)
536 ],mysql=true,mysql=false)
537 if test "$mysql" = "false"
540 AC_MSG_RESULT([fail, >= 4.1 required])
545 AM_CONDITIONAL(HAVE_MYSQL, test x$mysql = xtrue)
546 AM_CONDITIONAL(HAVE_MYSQLE, test "0" = "1")
549 LDFLAGS=$SAVE_LDFLAGS
550 CPPFLAGS=$SAVE_CPPFLAGS
552 if test "$sqlite" = 0 -a "$mysql" = 0
554 AC_MSG_ERROR([GNUnet requires SQLite or MySQL])
559 AC_MSG_CHECKING([for libmicrohttpd])
560 AC_ARG_WITH(microhttpd,
561 [ --with-microhttpd=PFX base of libmicrohttpd installation],
562 [AC_MSG_RESULT([$with_microhttpd])
563 case $with_microhttpd in
567 AC_CHECK_HEADERS([microhttpd.h],
568 AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
569 AC_CHECK_LIB([microhttpd], [MHD_start_daemon],
570 [AC_MSG_CHECKING([for libmicrohttpd >= 0.9.18])
572 #include "$srcdir/src/include/platform.h"
573 #include <microhttpd.h>
574 int main () { return MHD_VERSION >= 0x0091200 ? 0 : 1; }
577 lmhd=1],[AC_MSG_RESULT(failed)],lmhd=1)]),
578 [],[#include "$srcdir/src/include/platform.h"
579 #include <microhttpd.h>]),,
580 [#include "$srcdir/src/include/platform.h"])
583 LDFLAGS="-L$with_microhttpd/lib $LDFLAGS"
584 CPPFLAGS="-I$with_microhttpd/include $CPPFLAGS"
585 AC_CHECK_HEADERS(microhttpd.h,
586 AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
587 AC_CHECK_LIB([microhttpd], [MHD_start_daemon],
588 EXT_LIB_PATH="-L$with_microhttpd/lib $EXT_LIB_PATH"
589 [AC_MSG_CHECKING([for libmicrohttpd >= 0.9.18])
591 #include "$srcdir/src/include/platform.h"
592 #include <microhttpd.h>
593 int main () { return MHD_VERSION >= 0x0091200 ? 0 : 1; }
596 lmhd=1],[AC_MSG_RESULT(failed)],lmhd=1)]),
597 [],[#include "$srcdir/src/include/platform.h"
598 #include <microhttpd.h>]),,
599 [#include "$srcdir/src/include/platform.h"])
603 [AC_MSG_RESULT([--with-microhttpd not specified])
604 AC_CHECK_HEADERS([microhttpd.h],
605 AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
606 AC_CHECK_LIB([microhttpd], [MHD_start_daemon],
607 [AC_MSG_CHECKING([for libmicrohttpd >= 0.9.18])
609 #include "$srcdir/src/include/platform.h"
610 #include <microhttpd.h>
611 int main () { return MHD_VERSION >= 0x0091200 ? 0 : 1; }
614 lmhd=1],[AC_MSG_RESULT(failed)],lmhd=1)]),
615 [],[#include "$srcdir/src/include/platform.h"
616 #include <microhttpd.h>]),,
617 [#include "$srcdir/src/include/platform.h"])])
618 AM_CONDITIONAL(HAVE_MHD, test x$lmhd = x1)
619 AC_DEFINE_UNQUOTED([HAVE_MHD], $lmhd, [We have libmicrohttpd])
625 # check for python & pexpect (used for some testcases only)
626 AM_PATH_PYTHON([2.6],, [:])
627 AM_CONDITIONAL([HAVE_PYTHON], [test "$PYTHON" != :])
629 if test "$PYTHON" != :
631 AC_MSG_CHECKING([for pexpect])
632 $PYTHON -c "import pexpect" > /dev/null 2> /dev/null
634 AM_CONDITIONAL(HAVE_PYTHON_PEXPECT, test $PYEX -eq 0)
639 AC_MSG_RESULT([not found])
642 AM_CONDITIONAL(HAVE_PYTHON_PEXPECT, 0)
647 AM_GNU_GETTEXT([external])
648 AM_GNU_GETTEXT_VERSION([0.16.1])
653 # Checks for standard typedefs, structures, and compiler characteristics.
662 AC_CHECK_MEMBER([struct sockaddr_in.sin_len],
663 [ AC_DEFINE(HAVE_SOCKADDR_IN_SIN_LEN, 1, [Do we have sockaddr_in.sin_len?])
667 #include <sys/types.h>
668 #include <sys/socket.h>
669 #include <netinet/in.h>
674 # Checks for library functions.
675 AC_FUNC_CLOSEDIR_VOID
677 AC_PROG_GCC_TRADITIONAL
679 AC_FUNC_SELECT_ARGTYPES
689 AC_CHECK_FUNCS([floor gethostname memmove rmdir strncasecmp strrchr strtol atoll dup2 fdatasync ftruncate gettimeofday memset mkdir mkfifo select socket 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 gethostbyaddr initgroups getifaddrs freeifaddrs getnameinfo getaddrinfo inet_ntoa localtime_r nl_langinfo putenv realpath strndup gethostbyname2 gethostbyname getpeerucred getpeereid setresuid])
694 gn_user_home_dir="~/.gnunet"
695 AC_ARG_WITH(user-home-dir,
697 [--with-user-home-dir=DIR],
698 [default user home directory (~/.gnunet)]),
699 [gn_user_home_dir=$withval])
700 AC_SUBST(GN_USER_HOME_DIR, $gn_user_home_dir)
701 gn_daemon_home_dir="/var/lib/gnunet"
702 AC_ARG_WITH(daemon-home-dir,
704 [--with-daemon-home-dir=DIR],
705 [default daemon home directory (/var/lib/gnunet)]),
706 [gn_daemon_home_dir=$withval])
707 AC_SUBST(GN_DAEMON_HOME_DIR, $gn_daemon_home_dir)
708 gn_daemon_config_dir="/etc"
709 AC_ARG_WITH(daemon-config-dir,
711 [--with-daemon-config-dir=DIR],
712 [default daemon config directory (/etc)]),
713 [gn_daemon_config_dir=$withval])
714 AC_SUBST(GN_DAEMON_CONFIG_DIR, $gn_daemon_config_dir)
717 GN_LIBINTL="$LTLIBINTL"
718 AC_ARG_ENABLE(framework, [ --enable-framework enable Mac OS X framework build helpers],enable_framework_build=$enableval)
719 AM_CONDITIONAL(WANT_FRAMEWORK, test x$enable_framework_build = xyes)
720 if test x$enable_framework_build = xyes
722 AC_DEFINE([FRAMEWORK_BUILD], 1, [Build a Mac OS X Framework])
723 GN_INTLINCL='-I$(top_srcdir)/src/intlemu'
724 GN_LIBINTL='$(top_builddir)/src/intlemu/libintlemu.la -framework CoreFoundation'
725 AC_LIB_APPENDTOVAR([CPPFLAGS], [$GN_INTLINCL])
728 GN_LIB_LDFLAGS="-export-dynamic -no-undefined"
729 GN_PLUGIN_LDFLAGS="-export-dynamic -avoid-version -module -no-undefined"
731 AC_SUBST(GN_LIB_LDFLAGS)
732 AC_SUBST(GN_PLUGIN_LDFLAGS)
733 AC_SUBST(GN_INTLINCL)
739 AC_SUBST(EXT_LIB_PATH)
744 AC_SUBST(EXT_LIB_PATH)
748 AC_MSG_CHECKING(for sudo)
750 [ --with-sudo=PATH path to sudo binary (or just yes)],
751 [AC_MSG_RESULT("$with_sudo")
760 SUDO_BINARY=$with_sudo
764 [AC_MSG_RESULT([no])])
765 AC_SUBST(SUDO_BINARY)
768 # test for gnunetdns group name
769 GNUNETDNS_GROUP=gnunetdns
770 AC_MSG_CHECKING(for gnunetdns group name)
771 AC_ARG_WITH(gnunetdns,
772 [ --with-gnunetdns=GRPNAME name for gnunetdns group],
773 [AC_MSG_RESULT("$with_gnunetdns")
774 case $with_gnunetdns in
776 GNUNETDNS_GROUP=gnunet
779 GNUNETDNS_GROUP=gnunetdns
782 GNUNETDNS_GROUP=$with_gnunetdns
786 [AC_MSG_RESULT([gnunetdns])])
787 AC_SUBST(GNUNETDNS_GROUP)
790 # should 'make check' run tests?
791 AC_MSG_CHECKING(whether to run tests)
792 AC_ARG_ENABLE([testruns],
793 [AS_HELP_STRING([--disable-testruns], [disable running tests on make check (default is YES)])],
794 [enable_tests_run=${enableval}],
795 [enable_tests_run=yes])
796 AC_MSG_RESULT($enable_test_run)
797 AM_CONDITIONAL([ENABLE_TEST_RUN], [test "x$enable_tests_run" = "xyes"])
800 # should monkey be used when running (certain) services?
801 AC_MSG_CHECKING(whether to run with monkey)
802 AC_ARG_ENABLE([monkey],
803 [AS_HELP_STRING([--enable-monkey], [enable running with monkey])],
804 [enable_monkey=${enableval}],
806 AC_MSG_RESULT($enable_monkey)
807 AM_CONDITIONAL([ENABLE_MONKEY], [test "x$enable_monkey" = "xyes"])
808 if test "x$enable_monkey" = "xyes"
810 MONKEYPREFIX="monkey"
814 AC_SUBST(MONKEYPREFIX)
817 # should expensive tests be run?
818 AC_MSG_CHECKING(whether to run expensive tests)
819 AC_ARG_ENABLE([expensivetests],
820 [AS_HELP_STRING([--enable-expensivetests], [enable running expensive testcases])],
821 [enable_expensive=${enableval}],
822 [enable_expensive=no])
823 AC_MSG_RESULT($enable_expensive)
824 AM_CONDITIONAL([HAVE_EXPENSIVE_TESTS], [test "x$enable_expensive" = "xyes"])
826 # should ports be open for Java services?
827 AC_MSG_CHECKING(whether to enable ports for gnunet-java)
828 AC_ARG_ENABLE([javaports],
829 [AS_HELP_STRING([--enable-javaports], [use non-zero ports for services with Java bindings (default is NO)])],
830 [enable_java_ports=${enableval}],
831 [enable_java_ports=no])
832 AC_MSG_RESULT($enable_java_ports)
833 if test "x$enable_java_ports" = "xyes"
841 # should benchmarks be run?
842 AC_MSG_CHECKING(whether to run benchmarks during make check)
843 AC_ARG_ENABLE([benchmarks],
844 [AS_HELP_STRING([--enable-benchmarks], [enable running benchmarks during make check])],
845 [enable_benchmarks=${enableval}],
846 [enable_benchmarks=no])
847 AC_MSG_RESULT($enable_benchmarks)
848 AM_CONDITIONAL([HAVE_BENCHMARKS], [test "x$enable_benchmarks" = "xyes"])
850 # should experimental code be compiled (code that may not yet compile)?
851 AC_MSG_CHECKING(whether to compile experimental code)
852 AC_ARG_ENABLE([experimental],
853 [AS_HELP_STRING([--enable-experimental], [enable compiling experimental code])],
854 [enable_experimental=${enableval}],
855 [enable_experimental=no])
856 AC_MSG_RESULT($enable_experimental)
857 AM_CONDITIONAL([HAVE_EXPERIMENTAL], [test "x$enable_experimental" = "xyes"])
859 # should code be enabled that works around missing OS functionality on Windows?
860 # used for test cases
861 if test $build_target = "mingw"
865 AC_MSG_CHECKING(whether to enable windows workarounds)
866 AC_ARG_ENABLE([windows_workarounds],
867 [AS_HELP_STRING([--enable-windows_workarounds], [enable workarounds used on Windows (only useful for test cases)])],
868 [enable_workarounds=${enableval}],
869 [enable_workarounds=no])
870 AC_MSG_RESULT($enable_workarounds)
871 if test x$enable_windows_workarounds = "xyes"
878 AC_DEFINE_UNQUOTED([ENABLE_WINDOWS_WORKAROUNDS], $workarounds, [enable workarounds used on Windows (only useful for test cases)])
881 AC_MSG_CHECKING(whether to compile with support for code coverage analysis)
882 AC_ARG_ENABLE([coverage],
883 AS_HELP_STRING([--enable-coverage],
884 [compile the library with code coverage support]),
885 [use_gcov=${enableval}],
887 AC_MSG_RESULT($use_gcov)
888 AM_CONDITIONAL([USE_COVERAGE], [test "x$use_gcov" = "xyes"])
908 src/datacache/Makefile
909 src/datastore/Makefile
910 src/datastore/datastore.conf
918 src/fragmentation/Makefile
925 src/include/gnunet_directories.h
926 src/hostlist/Makefile
930 src/namestore/Makefile
931 src/namestore/namestore.conf
935 src/peerinfo/Makefile
936 src/peerinfo/peerinfo.conf
937 src/peerinfo-tool/Makefile
938 src/postgres/Makefile
941 src/statistics/Makefile
942 src/statistics/statistics.conf
944 src/template/Makefile
946 src/topology/Makefile
947 src/transport/Makefile
948 src/transport/transport.conf
951 src/util/resolver.conf
954 src/integration-tests/Makefile
956 pkgconfig/gnunetarm.pc
957 pkgconfig/gnunetblock.pc
958 pkgconfig/gnunetcore.pc
959 pkgconfig/gnunetdatacache.pc
960 pkgconfig/gnunetdatastore.pc
961 pkgconfig/gnunetdht.pc
962 pkgconfig/gnunetdhtlog.pc
963 pkgconfig/gnunetdv.pc
964 pkgconfig/gnunetfragmentation.pc
965 pkgconfig/gnunetfs.pc
966 pkgconfig/gnunethello.pc
967 pkgconfig/gnunetnat.pc
968 pkgconfig/gnunetnse.pc
969 pkgconfig/gnunetpeerinfo.pc
970 pkgconfig/gnunetregex.pc
971 pkgconfig/gnunetstatistics.pc
972 pkgconfig/gnunettesting.pc
973 pkgconfig/gnunettransport.pc
974 pkgconfig/gnunetutil.pc
980 # warn user if mysql found but not used due to version
981 if test "$mysqlfail" = "true"
983 AC_MSG_NOTICE([NOTICE: MySQL found, but too old. MySQL support will not be compiled.])
987 if test "x$sqlite" = "x0"
989 AC_MSG_NOTICE([NOTICE: sqlite not found. sqLite support will not be compiled.])
993 if test "x$enable_java_ports" = "xyes"
995 AC_MSG_NOTICE([NOTICE: opening ports for gnunet-java bindings by default.])
998 if test "x$lmhd" != "x1"
1000 AC_MSG_NOTICE([NOTICE: libmicrohttpd not found, http transport will not be installed.])
1003 AC_MSG_NOTICE([NOTICE: Database support is set to MySQL: $mysql, SQLite: $sqlite, Postgres: $postgres])
1005 if test "$enable_framework_build" = "yes"
1007 AC_MSG_NOTICE([NOTICE: Mac OS X framework build enabled.])
1010 AC_MSG_NOTICE([********************************************
1011 You can compile GNUnet with
1013 now. After that, run (if necessary as 'root')
1015 to install everything. You may want to create a new user account
1016 to run the GNUnet service:
1018 You also need to create an configuration file that should
1019 specify the path where GNUnet should store data. For example,
1020 you could store in "/etc/gnunet.conf" the following lines:
1023 SERVICEHOME = /var/lib/gnunet
1024 DEFAULTCONFIG = /etc/gnunet.conf
1026 Now, in order to start your peer, run as the 'gnunet' user
1029 Each GNUnet user should also create an (at least initially) empty
1031 mkdir $HOME/.gnunet/
1032 touch $HOME/.gnunet/gnunet.conf
1034 Optionally, download and compile:
1035 - gnunet-gtk to get a GUI for file-sharing and configuration.
1036 ********************************************])