1 # This file is part of GNUnet.
2 # (C) 2001--2012 Christian Grothoff (and other contributing authors)
4 # GNUnet is free software; you can redistribute it and/or modify
5 # it under the terms of the GNU General Public License as published
6 # by the Free Software Foundation; either version 2, or (at your
7 # option) any later version.
9 # GNUnet is distributed in the hope that it will be useful, but
10 # WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 # General Public License for more details.
14 # You should have received a copy of the GNU General Public License
15 # along with GNUnet; see the file COPYING. If not, write to the
16 # Free Software Foundation, Inc., 59 Temple Place - Suite 330,
17 # Boston, MA 02111-1307, USA.
20 # Process this file with autoconf to produce a configure script.
24 # Checks for programs.
25 AC_INIT([gnunet], [0.9.2],[bug-gnunet@gnu.org])
31 AM_INIT_AUTOMAKE([gnunet], [0.9.2])
32 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
33 AC_CONFIG_HEADERS([gnunet_config.h])
34 AH_TOP([#define _GNU_SOURCE 1])
45 LT_INIT([disable-static dlopen win32-dll])
56 if test "$enable_shared" = "no"
58 AC_MSG_ERROR([GNUnet only works with shared libraries. Sorry.])
61 CFLAGS="-Wall $CFLAGS"
62 # use '-fno-strict-aliasing', but only if the compiler can take it
63 if gcc -fno-strict-aliasing -S -o /dev/null -xc /dev/null >/dev/null 2>&1;
65 CFLAGS="-fno-strict-aliasing $CFLAGS"
68 # Use Linux interface name unless the OS has a different preference
69 DEFAULT_INTERFACE="\"eth0\""
71 funcstocheck="socket select inet_ntoa getnameinfo gethostname gethostbyname gethostbyaddr getaddrinfo"
75 *darwin* | *rhapsody* | *macosx*)
76 AC_DEFINE_UNQUOTED(DARWIN,1,[This is an Apple Darwin system])
77 CPPFLAGS="-D_APPLE_C_SOURCE $CPPFLAGS"
78 CFLAGS="-no-cpp-precomp -fno-common $CFLAGS"
79 AC_MSG_WARN([The VPN application cannot be compiled on your OS])
81 DEFAULT_INTERFACE="\"en0\""
87 AC_DEFINE_UNQUOTED(LINUX,1,[This is a Linux system])
95 AC_DEFINE_UNQUOTED(SOMEBSD,1,[This is a BSD system])
96 AC_DEFINE_UNQUOTED(FREEBSD,1,[This is a FreeBSD system])
97 CFLAGS="-D_THREAD_SAFE $CFLAGS"
98 build_target="freebsd"
104 AC_DEFINE_UNQUOTED(SOMEBSD,1,[This is a BSD system])
105 AC_DEFINE_UNQUOTED(OPENBSD,1,[This is an OpenBSD system])
106 LIBS=`echo $LIBS | sed -e "s/-ldl//"`
107 build_target="openbsd"
113 AC_DEFINE_UNQUOTED(SOMEBSD,1,[This is a BSD system])
114 AC_DEFINE_UNQUOTED(NETBSD,1,[This is a NetBSD system])
120 AC_DEFINE_UNQUOTED(SOLARIS,1,[This is a Solaris system])
121 AC_DEFINE_UNQUOTED(_REENTRANT,1,[Need with solaris or errno doesnt work])
122 AC_CHECK_LIB(resolv, res_init)
123 AC_CHECK_LIB(rt, nanosleep)
124 build_target="solaris"
130 AC_DEFINE_UNQUOTED(LINUX,1,[This is a Linux system])
131 CFLAGS="-D_REENTRANT -fPIC -pipe $CFLAGS"
138 AC_DEFINE_UNQUOTED(CYGWIN,1,[This is a Cygwin system])
139 AC_DEFINE_UNQUOTED(WINDOWS,1,[This is a Windows system])
140 AC_CHECK_LIB(intl, gettext)
141 LDFLAGS="$LDFLAGS -no-undefined"
142 CFLAGS="-mms-bitfields $CFLAGS"
143 build_target="cygwin"
150 AC_DEFINE_UNQUOTED(MINGW,1,[This is a MinGW system])
151 AC_DEFINE_UNQUOTED(WINDOWS,1,[This is a Windows system])
152 AC_DEFINE_UNQUOTED(_WIN32,1,[This is a Windows system])
153 AC_CHECK_LIB(intl, gettext)
154 LDFLAGS="$LDFLAGS -Wl,-no-undefined -Wl,--export-all-symbols"
155 LIBS="$LIBS -lws2_32 -lplibc -lgnurx -lole32"
156 CFLAGS="-mms-bitfields $CFLAGS"
157 CPPFLAGS="-D_WIN32_WINNT=0x0501 -DHAVE_STAT64=1 $CPPFLAGS"
166 AC_MSG_RESULT(Unrecognised OS $host_os)
167 AC_DEFINE_UNQUOTED(OTHEROS,1,[Some strange OS])
171 AC_DEFINE_UNQUOTED([GNUNET_DEFAULT_INTERFACE], $DEFAULT_INTERFACE, [This should be the default choice for the name of the first network interface])
172 AC_SUBST(DEFAULT_INTERFACE)
174 # Disable TCP-based IPC on systems that support UNIX domain
175 # sockets in default configuratin:
179 AC_MSG_CHECKING([for build target])
180 AM_CONDITIONAL(DARWIN, test "$build_target" = "darwin")
181 AM_CONDITIONAL(CYGWIN, test "$build_target" = "cygwin")
182 AM_CONDITIONAL(MINGW, test "$build_target" = "mingw")
183 AM_CONDITIONAL(SOLARIS, test "$build_target" = "solaris")
184 AM_CONDITIONAL(XFREEBSD, test "$build_target" = "freebsd")
185 AM_CONDITIONAL(OPENBSD, test "$build_target" = "openbsd")
186 AM_CONDITIONAL(LINUX, test "$build_target" = "linux")
188 AC_MSG_RESULT([$build_target])
189 AC_SUBST(build_target)
190 AM_CONDITIONAL([am__fastdepOBJC], false)
191 AC_UNALIGNED_64_ACCESS
193 # some other checks for standard libs
194 AC_SEARCH_LIBS([gethostbyname], [nsl ws2_32])
195 AC_CHECK_LIB(socket, socket)
197 AC_CHECK_LIB(c, getloadavg, AC_DEFINE(HAVE_GETLOADAVG,1,[getloadavg supported]))
199 # 'save' libs; only those libs found so far will be
200 # linked against _everywhere_. For the others, we
201 # will be more selective!
204 # libgnurx (regex library for W32)
206 AC_CHECK_LIB(gnurx, regexec, gnurx=1)
207 if test "x$gnurx" = "x0" -a "x$build_target" = "xmingw"
209 AC_MSG_ERROR([on W32 GNUnet needs libgnurx])
214 AM_PATH_LIBGCRYPT(1.2.0, gcrypt=1)
215 AC_CHECK_DECLS([gcry_mpi_lshift], [], [], [[#include <gcrypt.h>]])
219 AC_MSG_ERROR([GNUnet needs libgcrypt])
222 # Adam shostack suggests the following for Windows:
223 # -D_FORTIFY_SOURCE=2 -fstack-protector-all
224 AC_ARG_ENABLE(gcc-hardening,
225 AS_HELP_STRING(--enable-gcc-hardening, enable compiler security checks),
226 [if test x$enableval = xyes; then
227 CFLAGS="$CFLAGS -D_FORTIFY_SOURCE=2 -fstack-protector-all"
228 CFLAGS="$CFLAGS -fwrapv -fPIE -Wstack-protector"
229 CFLAGS="$CFLAGS --param ssp-buffer-size=1"
230 LDFLAGS="$LDFLAGS -pie"
234 # Linker hardening options
235 # Currently these options are ELF specific - you can't use this with MacOSX
236 AC_ARG_ENABLE(linker-hardening,
237 AS_HELP_STRING(--enable-linker-hardening, enable linker security fixups),
238 [if test x$enableval = xyes; then
239 LDFLAGS="$LDFLAGS -z relro -z now"
243 extra_logging=GNUNET_NO
244 AC_ARG_ENABLE([logging],
245 AS_HELP_STRING([--enable-logging@<:@=value@:>@],[Enable logging calls. Possible values: yes,no,verbose,veryverbose ('yes' is the default)]),
246 [AS_IF([test "x$enableval" = "xyes"], [],
247 [test "x$enableval" = "xno"], [AC_DEFINE([GNUNET_CULL_LOGGING],[],[Define to cull all logging calls])],
248 [test "x$enableval" = "xverbose"], [extra_logging=GNUNET_YES]
249 [test "x$enableval" = "xveryverbose"], [extra_logging=\(GNUNET_YES+1\)])
251 AC_DEFINE_UNQUOTED([GNUNET_EXTRA_LOGGING],[$extra_logging],[1 if extra logging is enabled, 2 for very verbose extra logging, 0 otherwise])
253 if test $build = $target
255 AC_MSG_CHECKING([for working HMAC])
257 LIBS="$LIBS $LIBGCRYPT_LIBS"
258 CFLAGS="$CFLAGS $LIBGCRYPT_CFLAGS"
260 [AC_LANG_PROGRAM([#include <gcrypt.h>
261 #include <stdio.h>], [[
264 unsigned char data[] = { 0xbf, 0x16, 0x6e, 0x46, 0x3a, 0x6c, 0xf3, 0x93, 0xa7, 0x72,
265 0x11, 0xa1, 0xdc, 0x0b, 0x07, 0xdb, 0x1a, 0x5e, 0xd9, 0xb9, 0x81, 0xbe,
266 0xea, 0xe4, 0x31, 0x5f, 0x24, 0xff, 0xfe, 0x50, 0x8a, 0xde };
267 unsigned char key[] = { 0xfc, 0x62, 0x76, 0x35 };
268 unsigned char result[] = {0xa2, 0xb, 0x1, 0xd9, 0xc0, 0x8b, 0x5a, 0x12, 0x80,
269 0xd5, 0x50, 0x12, 0x8e, 0xd0, 0x5b, 0xb6, 0x5c, 0x87, 0x24, 0xe2, 0xd0,
270 0xd2, 0xaf, 0x63, 0xae, 0xd1, 0xd6, 0x64, 0x14, 0xe3, 0x6e, 0x61, 0x5b,
271 0xd, 0xba, 0x17, 0x7d, 0xd3, 0x10, 0xb1, 0x37, 0x41, 0x91, 0x7d, 0xeb,
272 0x1, 0x4d, 0x71, 0xe8, 0x59, 0x71, 0x42, 0x8e, 0xd6, 0xf3, 0x29, 0x3b,
273 0x90, 0xf2, 0xd1, 0xaf, 0x65, 0x1e, 0xb3};
275 if (!gcry_check_version (GCRYPT_VERSION))
277 fprintf (stderr, "Version mismatch %s <-> %s \n", gcry_check_version (NULL), GCRYPT_VERSION);
281 gcry_control (GCRYCTL_DISABLE_SECMEM, 0);
282 gcry_control (GCRYCTL_INITIALIZATION_FINISHED, 0);
284 if (gcry_md_open(&mac, GCRY_MD_SHA512, GCRY_MD_FLAG_HMAC) != GPG_ERR_NO_ERROR)
286 fprintf (stderr, "gcry_md_open error\n");
290 gcry_md_setkey (mac, key, sizeof (key));
291 gcry_md_write (mac, data, sizeof (data));
293 if (memcmp(gcry_md_read (mac, 0), result, gcry_md_get_algo_dlen (gcry_md_get_algo (mac))) != 0)
295 fprintf (stderr, "memcmp error\n");
303 [AC_MSG_RESULT([yes])],
308 AC_MSG_FAILURE([HMAC test vector does not match. This is a known problem with libgcrypt 1.2.2 on Windows and fixed in 1.4.6.])
312 AC_MSG_FAILURE([HMAC test failed])
316 AC_MSG_FAILURE([libgcrypt header version does not match library version])
320 fi # $build = $target
323 LIBCURL_CHECK_CONFIG(,7.20.1,,AC_MSG_ERROR([GNUnet requires libcurl >= 7.20.1]))
328 AC_CHECK_HEADERS([glpk.h],[glpk=true],[gplk=false])
329 AC_CHECK_LIB([glpk],[glp_create_prob],,[gplk=false])
330 # GLPK must support atm MLP presolving, version >= 4.32
331 AC_CHECK_MEMBERS(glp_iocp.presolve,,[gplk=false],[[#include <glpk.h>]])
332 if test x$gplk = xfalse
334 AM_CONDITIONAL(HAVE_LIBGLPK, false)
335 AC_MSG_WARN([GNUnet requires GLPK >= 4.32])
337 AM_CONDITIONAL(HAVE_LIBGLPK, true)
338 AC_DEFINE([HAVE_LIBGLPK],[1],[Have GLPK])
343 AC_CHECK_HEADERS([nss.h],[nss=true],[nss=false])
344 if test x$nss = xfalse
346 AM_CONDITIONAL(HAVE_GLIBCNSS, false)
347 AC_MSG_WARN([No GNU libc nss header, will not build NSS plugin])
349 AM_CONDITIONAL(HAVE_GLIBCNSS, true)
354 # test for kvm and kstat (for CPU stats under BSD/Solaris)
355 AC_CHECK_LIB([kvm],[kvm_open])
356 AC_CHECK_LIB([kstat],[kstat_open])
358 # test for libextractor
360 AC_MSG_CHECKING(for libextractor)
361 AC_ARG_WITH(extractor,
362 [ --with-extractor=PFX base of libextractor installation],
363 [AC_MSG_RESULT([$with_extractor])
364 case $with_extractor in
368 AC_CHECK_HEADERS(extractor.h,
369 AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
373 LDFLAGS="-L$with_extractor/lib $LDFLAGS"
374 CPPFLAGS="-I$with_extractor/include $CPPFLAGS"
375 AC_CHECK_HEADERS(extractor.h,
376 AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
377 EXT_LIB_PATH="-L$with_extractor/lib $EXT_LIB_PATH"
382 [AC_MSG_RESULT([--with-extractor not specified])
383 AC_CHECK_HEADERS(extractor.h,
384 AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
386 if test "$extractor" != 1
388 AC_MSG_ERROR([GNUnet requires libextractor])
393 # test for libunistring
395 if test $HAVE_LIBUNISTRING != yes; then
396 AC_MSG_ERROR([GNUnet requires libunistring])
398 if test $gl_libunistring_hexversion -le 2305; then
399 AC_MSG_ERROR([GNUnet requires libunistring >= 0.9.1.1])
406 # Checks for standard header files.
410 # Check for headers that are ALWAYS required
411 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]))
413 # Checks for headers that are only required on some systems or opional (and where we do NOT abort if they are not there)
414 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])
416 SAVE_LDFLAGS=$LDFLAGS
417 SAVE_CPPFLAGS=$CPPFLAGS
421 AC_MSG_CHECKING(for SQLite)
423 [ --with-sqlite=PFX base of SQLite installation],
424 [AC_MSG_RESULT("$with_sqlite")
429 AC_CHECK_HEADERS(sqlite3.h,
433 LDFLAGS="-L$with_sqlite/lib $LDFLAGS"
434 CPPFLAGS="-I$with_sqlite/include $CPPFLAGS"
435 AC_CHECK_HEADERS(sqlite3.h,
436 EXT_LIB_PATH="-L$with_sqlite/lib $EXT_LIB_PATH"
437 SQLITE_LDFLAGS="-L$with_sqlite/lib"
438 SQLITE_CPPFLAGS="-I$with_sqlite/include"
440 LDFLAGS=$SAVE_LDFLAGS
441 CPPFLAGS=$SAVE_CPPFLAGS
445 [AC_MSG_RESULT([--with-sqlite not specified])
446 AC_CHECK_HEADERS(sqlite3.h, sqlite=true)])
447 AM_CONDITIONAL(HAVE_SQLITE, test x$sqlite = xtrue)
448 AC_SUBST(SQLITE_CPPFLAGS)
449 AC_SUBST(SQLITE_LDFLAGS)
453 AC_MSG_CHECKING(for postgres)
454 AC_ARG_WITH(postgres,
455 [ --with-postgres=PFX base of postgres installation],
456 [AC_MSG_RESULT("$with_postgres")
457 case $with_postgres in
461 AC_CHECK_HEADERS(postgresql/libpq-fe.h,
465 LDFLAGS="-L$with_postgres/lib $LDFLAGS"
466 CPPFLAGS="-I$with_postgres/include $CPPFLAGS"
467 AC_CHECK_HEADERS(postgresql/libpq-fe.h,
468 EXT_LIB_PATH="-L$with_postgres/lib $EXT_LIB_PATH"
469 POSTGRES_LDFLAGS="-L$with_postgres/lib"
470 POSTGRES_CPPFLAGS="-I$with_postgres/include"
472 LDFLAGS=$SAVE_LDFLAGS
473 CPPFLAGS=$SAVE_CPPFLAGS
477 [AC_MSG_RESULT([--with-postgres not specified])
478 AC_CHECK_HEADERS(postgresql/libpq-fe.h, postgres=true)])
479 AM_CONDITIONAL(HAVE_POSTGRES, test x$postgres = xtrue)
480 AC_SUBST(POSTGRES_CPPFLAGS)
481 AC_SUBST(POSTGRES_LDFLAGS)
483 # test for libz (maybe required for linking mysql)
485 AC_CHECK_LIB(z, compress,,zlib=0)
486 AM_CONDITIONAL(HAVE_ZLIB, test x$zlib = x1)
489 AC_MSG_ERROR([GNUnet requires zlib])
493 AC_CHECK_TYPES([sigset_t, off_t], [], [], [#include <sys/types.h>])
494 AC_CHECK_TYPES([size_t], [], [], [#include <stdio.h>])
496 if test "$build_target" = "mingw"
498 CYGWIN_MYSQL_MAGIC="#include <mysql/my_global.h>"
504 SAVE_LDFLAGS=$LDFLAGS
505 SAVE_CPPFLAGS=$CPPFLAGS
506 AC_MSG_CHECKING(for mysql)
508 [ --with-mysql=PFX base of MySQL installation],
509 [AC_MSG_RESULT("$with_mysql")
510 if test "$with_mysql" != "no"
512 if test "$with_mysql" != "yes"
514 LDFLAGS="-L$with_mysql/lib -L$with_mysql/lib/mysql $LDFLAGS $ZLIBS"
515 CPPFLAGS="-I$with_mysql/include $CPPFLAGS"
517 AC_CHECK_HEADERS(mysql/mysql.h,
518 AC_CHECK_LIB(mysqlclient, mysql_init,
519 MYSQL_LDFLAGS="-L$with_mysql/lib -L$with_mysql/lib/mysql"
520 MYSQL_CPPFLAGS="-I$with_mysql/include"
522 mysql=true), [], [$CYGWIN_MYSQL_MAGIC])
525 [AC_MSG_RESULT([--with-mysql not specified])
526 LDFLAGS="-L/usr/lib/mysql $LDFLAGS $ZLIBS"
527 AC_CHECK_LIB(mysqlclient, mysql_init,
528 [AC_CHECK_HEADERS(mysql/mysql.h,
529 MYSQL_LDFLAGS="-L/usr/lib/mysql"
532 , [], [$CYGWIN_MYSQL_MAGIC])])
535 AC_SUBST(MYSQL_LDFLAGS)
536 AC_SUBST(MYSQL_CPPFLAGS)
538 # additional version check for mysql
539 AC_ARG_ENABLE(mysql-version-check, [ --disable-mysql-version-check do not check MySQL version],, enable_mysql_version_check=yes)
540 if test "$mysql" = "true" -a "x$enable_mysql_version_check" = "xyes"
542 AC_MSG_CHECKING(mysql version)
543 AC_RUN_IFELSE([AC_LANG_PROGRAM(
544 [[$CYGWIN_MYSQL_MAGIC
545 #include <mysql/mysql.h>]],
546 [[if (MYSQL_VERSION_ID < 40100)
551 ],mysql=true,mysql=false)
552 if test "$mysql" = "false"
555 AC_MSG_RESULT([fail, >= 4.1 required])
560 AM_CONDITIONAL(HAVE_MYSQL, test x$mysql = xtrue)
561 AM_CONDITIONAL(HAVE_MYSQLE, test "0" = "1")
564 LDFLAGS=$SAVE_LDFLAGS
565 CPPFLAGS=$SAVE_CPPFLAGS
567 if test "$sqlite" = 0 -a "$mysql" = 0
569 AC_MSG_ERROR([GNUnet requires SQLite or MySQL])
574 AC_MSG_CHECKING([for libmicrohttpd])
575 AC_ARG_WITH(microhttpd,
576 [ --with-microhttpd=PFX base of libmicrohttpd installation],
577 [AC_MSG_RESULT([$with_microhttpd])
578 case $with_microhttpd in
582 AC_CHECK_HEADERS([microhttpd.h],
583 AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
584 AC_CHECK_LIB([microhttpd], [MHD_start_daemon],
585 [AC_MSG_CHECKING([for libmicrohttpd >= 0.9.18])
587 #include "$srcdir/src/include/platform.h"
588 #include <microhttpd.h>
589 int main () { return MHD_VERSION >= 0x0091200 ? 0 : 1; }
592 lmhd=1],[AC_MSG_RESULT(failed)],lmhd=1)]),
593 [],[#include "$srcdir/src/include/platform.h"
594 #include <microhttpd.h>]),,
595 [#include "$srcdir/src/include/platform.h"])
598 LDFLAGS="-L$with_microhttpd/lib $LDFLAGS"
599 CPPFLAGS="-I$with_microhttpd/include $CPPFLAGS"
600 AC_CHECK_HEADERS(microhttpd.h,
601 AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
602 AC_CHECK_LIB([microhttpd], [MHD_start_daemon],
603 EXT_LIB_PATH="-L$with_microhttpd/lib $EXT_LIB_PATH"
604 [AC_MSG_CHECKING([for libmicrohttpd >= 0.9.18])
606 #include "$srcdir/src/include/platform.h"
607 #include <microhttpd.h>
608 int main () { return MHD_VERSION >= 0x0091200 ? 0 : 1; }
611 lmhd=1],[AC_MSG_RESULT(failed)],lmhd=1)]),
612 [],[#include "$srcdir/src/include/platform.h"
613 #include <microhttpd.h>]),,
614 [#include "$srcdir/src/include/platform.h"])
618 [AC_MSG_RESULT([--with-microhttpd not specified])
619 AC_CHECK_HEADERS([microhttpd.h],
620 AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
621 AC_CHECK_LIB([microhttpd], [MHD_start_daemon],
622 [AC_MSG_CHECKING([for libmicrohttpd >= 0.9.18])
624 #include "$srcdir/src/include/platform.h"
625 #include <microhttpd.h>
626 int main () { return MHD_VERSION >= 0x0091200 ? 0 : 1; }
629 lmhd=1],[AC_MSG_RESULT(failed)],lmhd=1)]),
630 [],[#include "$srcdir/src/include/platform.h"
631 #include <microhttpd.h>]),,
632 [#include "$srcdir/src/include/platform.h"])])
633 AM_CONDITIONAL(HAVE_MHD, test x$lmhd = x1)
634 AC_DEFINE_UNQUOTED([HAVE_MHD], $lmhd, [We have libmicrohttpd])
640 # check for python & pexpect (used for some testcases only)
641 AM_PATH_PYTHON([2.6],, [:])
642 AM_CONDITIONAL([HAVE_PYTHON], [test "$PYTHON" != :])
644 if test "$PYTHON" != :
646 AC_MSG_CHECKING([for pexpect])
647 $PYTHON -c "import pexpect" > /dev/null 2> /dev/null
649 AM_CONDITIONAL(HAVE_PYTHON_PEXPECT, test $PYEX -eq 0)
654 AC_MSG_RESULT([not found])
657 AM_CONDITIONAL(HAVE_PYTHON_PEXPECT, 0)
662 AM_GNU_GETTEXT([external])
663 AM_GNU_GETTEXT_VERSION([0.16.1])
668 # Checks for standard typedefs, structures, and compiler characteristics.
677 AC_CHECK_MEMBER([struct sockaddr_in.sin_len],
678 [ AC_DEFINE(HAVE_SOCKADDR_IN_SIN_LEN, 1, [Do we have sockaddr_in.sin_len?])
682 #include <sys/types.h>
683 #include <sys/socket.h>
684 #include <netinet/in.h>
689 # Checks for library functions.
690 AC_FUNC_CLOSEDIR_VOID
692 AC_PROG_GCC_TRADITIONAL
694 AC_FUNC_SELECT_ARGTYPES
704 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])
709 gn_user_home_dir="~/.gnunet"
710 AC_ARG_WITH(user-home-dir,
712 [--with-user-home-dir=DIR],
713 [default user home directory (~/.gnunet)]),
714 [gn_user_home_dir=$withval])
715 AC_SUBST(GN_USER_HOME_DIR, $gn_user_home_dir)
716 gn_daemon_home_dir="/var/lib/gnunet"
717 AC_ARG_WITH(daemon-home-dir,
719 [--with-daemon-home-dir=DIR],
720 [default daemon home directory (/var/lib/gnunet)]),
721 [gn_daemon_home_dir=$withval])
722 AC_SUBST(GN_DAEMON_HOME_DIR, $gn_daemon_home_dir)
723 gn_daemon_config_dir="/etc"
724 AC_ARG_WITH(daemon-config-dir,
726 [--with-daemon-config-dir=DIR],
727 [default daemon config directory (/etc)]),
728 [gn_daemon_config_dir=$withval])
729 AC_SUBST(GN_DAEMON_CONFIG_DIR, $gn_daemon_config_dir)
732 GN_LIBINTL="$LTLIBINTL"
733 AC_ARG_ENABLE(framework, [ --enable-framework enable Mac OS X framework build helpers],enable_framework_build=$enableval)
734 AM_CONDITIONAL(WANT_FRAMEWORK, test x$enable_framework_build = xyes)
735 if test x$enable_framework_build = xyes
737 AC_DEFINE([FRAMEWORK_BUILD], 1, [Build a Mac OS X Framework])
738 GN_INTLINCL='-I$(top_srcdir)/src/intlemu'
739 GN_LIBINTL='$(top_builddir)/src/intlemu/libintlemu.la -framework CoreFoundation'
740 AC_LIB_APPENDTOVAR([CPPFLAGS], [$GN_INTLINCL])
743 GN_LIB_LDFLAGS="-export-dynamic -no-undefined"
744 GN_PLUGIN_LDFLAGS="-export-dynamic -avoid-version -module -no-undefined"
746 AC_SUBST(GN_LIB_LDFLAGS)
747 AC_SUBST(GN_PLUGIN_LDFLAGS)
748 AC_SUBST(GN_INTLINCL)
754 AC_SUBST(EXT_LIB_PATH)
759 AC_SUBST(EXT_LIB_PATH)
763 AC_MSG_CHECKING(for sudo)
765 [ --with-sudo=PATH path to sudo binary (or just yes)],
766 [AC_MSG_RESULT("$with_sudo")
775 SUDO_BINARY=$with_sudo
779 [AC_MSG_RESULT([no])])
780 AC_SUBST(SUDO_BINARY)
781 AM_CONDITIONAL([HAVE_SUDO], [test "x$SUDO_BINARY" != "x" -o -w /])
783 # test for gnunetdns group name
784 GNUNETDNS_GROUP=gnunetdns
785 AC_MSG_CHECKING(for gnunetdns group name)
786 AC_ARG_WITH(gnunetdns,
787 [ --with-gnunetdns=GRPNAME name for gnunetdns group],
788 [AC_MSG_RESULT("$with_gnunetdns")
789 case $with_gnunetdns in
791 GNUNETDNS_GROUP=gnunet
794 GNUNETDNS_GROUP=gnunetdns
797 GNUNETDNS_GROUP=$with_gnunetdns
801 [AC_MSG_RESULT([gnunetdns])])
802 AC_SUBST(GNUNETDNS_GROUP)
805 # should 'make check' run tests?
806 AC_MSG_CHECKING(whether to run tests)
807 AC_ARG_ENABLE([testruns],
808 [AS_HELP_STRING([--disable-testruns], [disable running tests on make check (default is YES)])],
809 [enable_tests_run=${enableval}],
810 [enable_tests_run=yes])
811 AC_MSG_RESULT($enable_test_run)
812 AM_CONDITIONAL([ENABLE_TEST_RUN], [test "x$enable_tests_run" = "xyes"])
815 # should monkey be used when running (certain) services?
816 AC_MSG_CHECKING(whether to run with monkey)
817 AC_ARG_ENABLE([monkey],
818 [AS_HELP_STRING([--enable-monkey], [enable running with monkey])],
819 [enable_monkey=${enableval}],
821 AC_MSG_RESULT($enable_monkey)
822 AM_CONDITIONAL([ENABLE_MONKEY], [test "x$enable_monkey" = "xyes"])
823 if test "x$enable_monkey" = "xyes"
825 MONKEYPREFIX="monkey"
829 AC_SUBST(MONKEYPREFIX)
832 # should expensive tests be run?
833 AC_MSG_CHECKING(whether to run expensive tests)
834 AC_ARG_ENABLE([expensivetests],
835 [AS_HELP_STRING([--enable-expensivetests], [enable running expensive testcases])],
836 [enable_expensive=${enableval}],
837 [enable_expensive=no])
838 AC_MSG_RESULT($enable_expensive)
839 AM_CONDITIONAL([HAVE_EXPENSIVE_TESTS], [test "x$enable_expensive" = "xyes"])
841 # should ports be open for Java services?
842 AC_MSG_CHECKING(whether to enable ports for gnunet-java)
843 AC_ARG_ENABLE([javaports],
844 [AS_HELP_STRING([--enable-javaports], [use non-zero ports for services with Java bindings (default is NO)])],
845 [enable_java_ports=${enableval}],
846 [enable_java_ports=no])
847 AC_MSG_RESULT($enable_java_ports)
848 if test "x$enable_java_ports" = "xyes"
856 # should benchmarks be run?
857 AC_MSG_CHECKING(whether to run benchmarks during make check)
858 AC_ARG_ENABLE([benchmarks],
859 [AS_HELP_STRING([--enable-benchmarks], [enable running benchmarks during make check])],
860 [enable_benchmarks=${enableval}],
861 [enable_benchmarks=no])
862 AC_MSG_RESULT($enable_benchmarks)
863 AM_CONDITIONAL([HAVE_BENCHMARKS], [test "x$enable_benchmarks" = "xyes"])
865 # should experimental code be compiled (code that may not yet compile)?
866 AC_MSG_CHECKING(whether to compile experimental code)
867 AC_ARG_ENABLE([experimental],
868 [AS_HELP_STRING([--enable-experimental], [enable compiling experimental code])],
869 [enable_experimental=${enableval}],
870 [enable_experimental=no])
871 AC_MSG_RESULT($enable_experimental)
872 AM_CONDITIONAL([HAVE_EXPERIMENTAL], [test "x$enable_experimental" = "xyes"])
874 # should code be enabled that works around missing OS functionality on Windows?
875 # used for test cases
876 if test $build_target = "mingw"
882 [#include <ws2tcpip.h>
884 int s = socket (0, 0, 0);])
886 AC_DEFINE_UNQUOTED([HAVE_SOCKET],1,[Define this if socket() is available])
888 AC_DEFINE_UNQUOTED([HAVE_SOCKET],0,[Define this if socket() is available])
893 [#include <ws2tcpip.h>
895 int s = select (0, NULL, NULL, NULL, NULL);])
897 AC_DEFINE_UNQUOTED([HAVE_SELECT],1,[Define this if select() is available])
899 AC_DEFINE_UNQUOTED([HAVE_SELECT],0,[Define this if select() is available])
904 [#include <ws2tcpip.h>
907 char *s = inet_ntoa (i);])
909 AC_DEFINE_UNQUOTED([HAVE_INET_NTOA],1,[Define this if inet_ntoa() is available])
911 AC_DEFINE_UNQUOTED([HAVE_INET_NTOA],0,[Define this if inet_ntoa() is available])
916 [#include <ws2tcpip.h>
918 int s = getnameinfo (NULL, 0, NULL, 0, NULL, 0, 0);])
920 AC_DEFINE_UNQUOTED([HAVE_GETNAMEINFO],1,[Define this if getnameinfo() is available])
922 AC_DEFINE_UNQUOTED([HAVE_GETNAMEINFO],0,[Define this if getnameinfo() is available])
927 [#include <ws2tcpip.h>
929 int s = gethostname (NULL, 0);])
931 AC_DEFINE_UNQUOTED([HAVE_GETHOSTNAME],1,[Define this if gethostname() is available])
933 AC_DEFINE_UNQUOTED([HAVE_GETHOSTNAME],0,[Define this if gethostname() is available])
938 [#include <ws2tcpip.h>
940 void *s = gethostbyname (NULL);])
942 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYNAME],1,[Define this if gethostbyname() is available])
944 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYNAME],0,[Define this if gethostbyname() is available])
949 [#include <ws2tcpip.h>
951 void *s = gethostbyaddr (NULL, 0, 0);])
953 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYADDR],1,[Define this if gethostbyaddr() is available])
955 AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYADDR],0,[Define this if gethostbyaddr() is available])
960 [#include <ws2tcpip.h>
962 int s = getaddrinfo (NULL, NULL, NULL, NULL);])
964 AC_DEFINE_UNQUOTED([HAVE_GETADDRINFO],1,[Define this if getaddrinfo() is available])
966 AC_DEFINE_UNQUOTED([HAVE_GETADDRINFO],1,[Define this if getaddrinfo() is available])
970 AC_MSG_CHECKING(whether to enable windows workarounds)
971 AC_ARG_ENABLE([windows_workarounds],
972 [AS_HELP_STRING([--enable-windows_workarounds], [enable workarounds used on Windows (only useful for test cases)])],
973 [enable_workarounds=${enableval}],
974 [enable_workarounds=no])
975 AC_MSG_RESULT($enable_workarounds)
976 if test x$enable_windows_workarounds = "xyes"
983 AC_DEFINE_UNQUOTED([ENABLE_WINDOWS_WORKAROUNDS], $workarounds, [enable workarounds used on Windows (only useful for test cases)])
986 AC_MSG_CHECKING(whether to compile with support for code coverage analysis)
987 AC_ARG_ENABLE([coverage],
988 AS_HELP_STRING([--enable-coverage],
989 [compile the library with code coverage support]),
990 [use_gcov=${enableval}],
992 AC_MSG_RESULT($use_gcov)
993 AM_CONDITIONAL([USE_COVERAGE], [test "x$use_gcov" = "xyes"])
1013 src/datacache/Makefile
1014 src/datastore/Makefile
1015 src/datastore/datastore.conf
1023 src/fragmentation/Makefile
1028 src/gns/nss/Makefile
1030 src/include/Makefile
1031 src/include/gnunet_directories.h
1032 src/hostlist/Makefile
1033 src/lockmanager/Makefile
1034 src/lockmanager/lockmanager.conf
1038 src/namestore/Makefile
1039 src/namestore/namestore.conf
1043 src/peerinfo/Makefile
1044 src/peerinfo/peerinfo.conf
1045 src/peerinfo-tool/Makefile
1046 src/postgres/Makefile
1049 src/statistics/Makefile
1050 src/statistics/statistics.conf
1052 src/template/Makefile
1053 src/testbed/Makefile
1054 src/testing/Makefile
1055 src/topology/Makefile
1056 src/transport/Makefile
1057 src/transport/transport.conf
1060 src/util/resolver.conf
1063 src/integration-tests/Makefile
1065 pkgconfig/gnunetarm.pc
1066 pkgconfig/gnunetblock.pc
1067 pkgconfig/gnunetcore.pc
1068 pkgconfig/gnunetdatacache.pc
1069 pkgconfig/gnunetdatastore.pc
1070 pkgconfig/gnunetdht.pc
1071 pkgconfig/gnunetdhtlog.pc
1072 pkgconfig/gnunetdv.pc
1073 pkgconfig/gnunetfragmentation.pc
1074 pkgconfig/gnunetfs.pc
1075 pkgconfig/gnunethello.pc
1076 pkgconfig/gnunetnat.pc
1077 pkgconfig/gnunetnse.pc
1078 pkgconfig/gnunetpeerinfo.pc
1079 pkgconfig/gnunetregex.pc
1080 pkgconfig/gnunetstatistics.pc
1081 pkgconfig/gnunettesting.pc
1082 pkgconfig/gnunettransport.pc
1083 pkgconfig/gnunetutil.pc
1089 # warn user if mysql found but not used due to version
1090 if test "$mysqlfail" = "true"
1092 AC_MSG_NOTICE([NOTICE: MySQL found, but too old. MySQL support will not be compiled.])
1096 if test "x$sqlite" = "x0"
1098 AC_MSG_NOTICE([NOTICE: sqlite not found. sqLite support will not be compiled.])
1102 if test "x$enable_java_ports" = "xyes"
1104 AC_MSG_NOTICE([NOTICE: opening ports for gnunet-java bindings by default.])
1107 if test "x$lmhd" != "x1"
1109 AC_MSG_NOTICE([NOTICE: libmicrohttpd not found, http transport will not be installed.])
1112 AC_MSG_NOTICE([NOTICE: Database support is set to MySQL: $mysql, SQLite: $sqlite, Postgres: $postgres])
1114 if test "$enable_framework_build" = "yes"
1116 AC_MSG_NOTICE([NOTICE: Mac OS X framework build enabled.])
1119 if test "x$SUDO_BINARY" = "x" -a ! -w /
1121 AC_MSG_NOTICE([NOTICE: --with-sudo not specified and not running as 'root', will not install GNS NSS library])
1124 AC_MSG_NOTICE([********************************************
1125 You can compile GNUnet with
1127 now. After that, run (if necessary as 'root')
1129 to install everything. You may want to create a new user account
1130 to run the GNUnet service:
1132 You also need to create an configuration file that should
1133 specify the path where GNUnet should store data. For example,
1134 you could store in "/etc/gnunet.conf" the following lines:
1137 SERVICEHOME = /var/lib/gnunet
1138 DEFAULTCONFIG = /etc/gnunet.conf
1140 Now, in order to start your peer, run as the 'gnunet' user
1143 Each GNUnet user should also create an (at least initially) empty
1145 mkdir $HOME/.gnunet/
1146 touch $HOME/.gnunet/gnunet.conf
1148 Optionally, download and compile:
1149 - gnunet-gtk to get a GUI for file-sharing and configuration.
1150 ********************************************])