1 # This file is part of GNUnet.
2 # (C) 2001--2010 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.0pre2],[bug-gnunet@gnu.org])
31 AM_INIT_AUTOMAKE([gnunet], [0.9.0pre2])
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\""
84 AC_DEFINE_UNQUOTED(LINUX,1,[This is a Linux system])
91 AC_DEFINE_UNQUOTED(SOMEBSD,1,[This is a BSD system])
92 AC_DEFINE_UNQUOTED(FREEBSD,1,[This is a FreeBSD system])
93 CFLAGS="-D_THREAD_SAFE $CFLAGS"
94 build_target="freebsd"
99 AC_DEFINE_UNQUOTED(SOMEBSD,1,[This is a BSD system])
100 AC_DEFINE_UNQUOTED(OPENBSD,1,[This is an OpenBSD system])
101 LIBS=`echo $LIBS | sed -e "s/-ldl//"`
102 build_target="openbsd"
107 AC_DEFINE_UNQUOTED(SOMEBSD,1,[This is a BSD system])
108 AC_DEFINE_UNQUOTED(NETBSD,1,[This is a NetBSD system])
113 AC_DEFINE_UNQUOTED(SOLARIS,1,[This is a Solaris system])
114 AC_DEFINE_UNQUOTED(_REENTRANT,1,[Need with solaris or errno doesnt work])
115 AC_CHECK_LIB(resolv, res_init)
116 AC_CHECK_LIB(rt, nanosleep)
117 build_target="solaris"
122 AC_DEFINE_UNQUOTED(LINUX,1,[This is a Linux system])
123 CFLAGS="-D_REENTRANT -fPIC -pipe $CFLAGS"
129 AC_DEFINE_UNQUOTED(CYGWIN,1,[This is a Cygwin system])
130 AC_DEFINE_UNQUOTED(WINDOWS,1,[This is a Windows system])
131 AC_CHECK_LIB(intl, gettext)
132 LDFLAGS="$LDFLAGS -no-undefined"
133 CFLAGS="-mms-bitfields $CFLAGS"
134 build_target="cygwin"
140 AC_DEFINE_UNQUOTED(MINGW,1,[This is a MinGW system])
141 AC_DEFINE_UNQUOTED(WINDOWS,1,[This is a Windows system])
142 AC_DEFINE_UNQUOTED(_WIN32,1,[This is a Windows system])
143 AC_CHECK_LIB(intl, gettext)
144 LDFLAGS="$LDFLAGS -no-undefined -Wl,--export-all-symbols"
145 LIBS="$LIBS -lws2_32 -lplibc"
146 CFLAGS="-mms-bitfields $CFLAGS"
147 CPPFLAGS="-D_WIN32_WINNT=0x0501 $CPPFLAGS"
154 AC_MSG_RESULT(Unrecognised OS $host_os)
155 AC_DEFINE_UNQUOTED(OTHEROS,1,[Some strange OS])
158 AC_DEFINE_UNQUOTED([GNUNET_DEFAULT_INTERFACE], $DEFAULT_INTERFACE, [This should be the default choice for the name of the first network interface])
159 AC_SUBST(DEFAULT_INTERFACE)
161 AC_MSG_CHECKING([for build target])
162 AM_CONDITIONAL(DARWIN, test "$build_target" = "darwin")
163 AM_CONDITIONAL(CYGWIN, test "$build_target" = "cygwin")
164 AM_CONDITIONAL(MINGW, test "$build_target" = "mingw")
165 AM_CONDITIONAL(SOLARIS, test "$build_target" = "solaris")
166 AM_CONDITIONAL(XFREEBSD, test "$build_target" = "freebsd")
167 AM_CONDITIONAL(OPENBSD, test "$build_target" = "openbsd")
168 AM_CONDITIONAL(LINUX, test "$build_target" = "linux")
170 AC_MSG_RESULT([$build_target])
171 AC_SUBST(build_target)
172 AM_CONDITIONAL([am__fastdepOBJC], false)
173 AC_UNALIGNED_64_ACCESS
175 # some other checks for standard libs
176 AC_SEARCH_LIBS([gethostbyname], [nsl ws2_32])
177 AC_CHECK_LIB(socket, socket)
179 AC_CHECK_LIB(c, getloadavg, AC_DEFINE(HAVE_GETLOADAVG,1,[getloadavg supported]))
181 # 'save' libs; only those libs found so far will be
182 # linked against _everywhere_. For the others, we
183 # will be more selective!
188 AM_PATH_LIBGCRYPT(1.2.0, gcrypt=1)
189 AC_CHECK_DECLS([gcry_mpi_lshift], [], [], [[#include <gcrypt.h>]])
193 AC_MSG_ERROR([GNUnet needs libgcrypt])
196 if test $build = $target
198 AC_MSG_CHECKING([for working HMAC])
200 LIBS="$LIBS $LIBGCRYPT_LIBS"
201 CFLAGS="$CFLAGS $LIBGCRYPT_CFLAGS"
203 [AC_LANG_PROGRAM([#include <gcrypt.h>], [[
206 unsigned char data[] = { 0xbf, 0x16, 0x6e, 0x46, 0x3a, 0x6c, 0xf3, 0x93, 0xa7, 0x72,
207 0x11, 0xa1, 0xdc, 0x0b, 0x07, 0xdb, 0x1a, 0x5e, 0xd9, 0xb9, 0x81, 0xbe,
208 0xea, 0xe4, 0x31, 0x5f, 0x24, 0xff, 0xfe, 0x50, 0x8a, 0xde };
209 unsigned char key[] = { 0xfc, 0x62, 0x76, 0x35 };
210 unsigned char result[] = {0xa2, 0xb, 0x1, 0xd9, 0xc0, 0x8b, 0x5a, 0x12, 0x80,
211 0xd5, 0x50, 0x12, 0x8e, 0xd0, 0x5b, 0xb6, 0x5c, 0x87, 0x24, 0xe2, 0xd0,
212 0xd2, 0xaf, 0x63, 0xae, 0xd1, 0xd6, 0x64, 0x14, 0xe3, 0x6e, 0x61, 0x5b,
213 0xd, 0xba, 0x17, 0x7d, 0xd3, 0x10, 0xb1, 0x37, 0x41, 0x91, 0x7d, 0xeb,
214 0x1, 0x4d, 0x71, 0xe8, 0x59, 0x71, 0x42, 0x8e, 0xd6, 0xf3, 0x29, 0x3b,
215 0x90, 0xf2, 0xd1, 0xaf, 0x65, 0x1e, 0xb3};
217 if (!gcry_check_version (GCRYPT_VERSION))
220 gcry_control (GCRYCTL_DISABLE_SECMEM, 0);
221 gcry_control (GCRYCTL_INITIALIZATION_FINISHED, 0);
223 if (gcry_md_open(&mac, GCRY_MD_SHA512, GCRY_MD_FLAG_HMAC) != GPG_ERR_NO_ERROR)
226 gcry_md_setkey (mac, key, sizeof (key));
227 gcry_md_write (mac, data, sizeof (data));
229 if (memcmp(gcry_md_read (mac, 0), result, gcry_md_get_algo_dlen (gcry_md_get_algo (mac))) != 0)
236 [AC_MSG_RESULT([yes])],
240 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.])
242 AC_MSG_FAILURE([HMAC test failed])
246 fi # $build = $target
249 LIBCURL_CHECK_CONFIG(,7.20.1,,AC_MSG_ERROR([GNUnet requires libcurl >= 7.20.1]))
255 AC_CHECK_HEADERS(glpk.h, ,[gplk=false])
256 AC_CHECK_LIB([glpk],[glp_create_prob], , [gplk=false])
257 # GLPK must support atm MLP presolving, version >= 4.32
258 AC_CHECK_MEMBERS(glp_iocp.presolve, ,[gplk=false],[[#include <glpk.h>]])
259 if test x$gplk = xfalse
261 AM_CONDITIONAL(HAVE_GLPK, [test x$gplk = xtrue])
262 AM_CONDITIONAL(HAVE_LIBGLPK, [test x$gplk != x$gplk])
263 AC_MSG_WARN([GNUnet requires GLPK >= 4.32])
265 AM_CONDITIONAL(HAVE_GLPK, [test x$gplk = xtrue])
266 AM_CONDITIONAL(HAVE_LIBGLPK, [test x$gplk = x$gplk])
269 # test for kvm and kstat (for CPU stats under BSD/Solaris)
270 AC_CHECK_LIB([kvm],[kvm_open])
271 AC_CHECK_LIB([kstat],[kstat_open])
273 # test for libextractor
275 AC_MSG_CHECKING(for libextractor)
276 AC_ARG_WITH(extractor,
277 [ --with-extractor=PFX base of libextractor installation],
278 [AC_MSG_RESULT([$with_extractor])
279 case $with_extractor in
283 AC_CHECK_HEADERS(extractor.h,
284 AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
288 LDFLAGS="-L$with_extractor/lib $LDFLAGS"
289 CPPFLAGS="-I$with_extractor/include $CPPFLAGS"
290 AC_CHECK_HEADERS(extractor.h,
291 AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
292 EXT_LIB_PATH="-L$with_extractor/lib $EXT_LIB_PATH"
297 [AC_MSG_RESULT([--with-extractor not specified])
298 AC_CHECK_HEADERS(extractor.h,
299 AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
301 if test "$extractor" != 1
303 AC_MSG_ERROR([GNUnet requires libextractor])
309 # Checks for standard header files.
313 # Check for headers that are ALWAYS required
314 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]))
316 # Checks for headers that are only required on some systems or opional (and where we do NOT abort if they are not there)
317 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])
319 SAVE_LDFLAGS=$LDFLAGS
320 SAVE_CPPFLAGS=$CPPFLAGS
324 AC_MSG_CHECKING(for SQLite)
326 [ --with-sqlite=PFX base of SQLite installation],
327 [AC_MSG_RESULT("$with_sqlite")
332 AC_CHECK_HEADERS(sqlite3.h,
336 LDFLAGS="-L$with_sqlite/lib $LDFLAGS"
337 CPPFLAGS="-I$with_sqlite/include $CPPFLAGS"
338 AC_CHECK_HEADERS(sqlite3.h,
339 EXT_LIB_PATH="-L$with_sqlite/lib $EXT_LIB_PATH"
340 SQLITE_LDFLAGS="-L$with_sqlite/lib"
341 SQLITE_CPPFLAGS="-I$with_sqlite/include"
343 LDFLAGS=$SAVE_LDFLAGS
344 CPPFLAGS=$SAVE_CPPFLAGS
348 [AC_MSG_RESULT([--with-sqlite not specified])
349 AC_CHECK_HEADERS(sqlite3.h, sqlite=true)])
350 AM_CONDITIONAL(HAVE_SQLITE, test x$sqlite = xtrue)
351 AC_SUBST(SQLITE_CPPFLAGS)
352 AC_SUBST(SQLITE_LDFLAGS)
356 AC_MSG_CHECKING(for postgres)
357 AC_ARG_WITH(postgres,
358 [ --with-postgres=PFX base of postgres installation],
359 [AC_MSG_RESULT("$with_postgres")
360 case $with_postgres in
364 AC_CHECK_HEADERS(postgresql/libpq-fe.h,
368 LDFLAGS="-L$with_postgres/lib $LDFLAGS"
369 CPPFLAGS="-I$with_postgres/include $CPPFLAGS"
370 AC_CHECK_HEADERS(postgresql/libpq-fe.h,
371 EXT_LIB_PATH="-L$with_postgres/lib $EXT_LIB_PATH"
372 POSTGRES_LDFLAGS="-L$with_postgres/lib"
373 POSTGRES_CPPFLAGS="-I$with_postgres/include"
375 LDFLAGS=$SAVE_LDFLAGS
376 CPPFLAGS=$SAVE_CPPFLAGS
380 [AC_MSG_RESULT([--with-postgres not specified])
381 AC_CHECK_HEADERS(postgresql/libpq-fe.h, postgres=true)])
382 AM_CONDITIONAL(HAVE_POSTGRES, test x$postgres = xtrue)
383 AC_SUBST(POSTGRES_CPPFLAGS)
384 AC_SUBST(POSTGRES_LDFLAGS)
388 AC_MSG_CHECKING(for libpcap)
390 [ --with-pcap=PFX base of pcap installation],
391 [AC_MSG_RESULT("$with_pcap")
396 AC_CHECK_HEADERS(pcap.h,
400 LDFLAGS="-L$with_pcap/lib $LDFLAGS"
401 CPPFLAGS="-I$with_pcap/include $CPPFLAGS"
402 AC_CHECK_HEADERS(pcap.h,
403 EXT_LIB_PATH="-L$with_pcap/lib $EXT_LIB_PATH"
404 PCAP_LDFLAGS="-L$with_pcap/lib"
405 PCAP_CPPFLAGS="-I$with_pcap/include"
407 LDFLAGS=$SAVE_LDFLAGS
408 CPPFLAGS=$SAVE_CPPFLAGS
412 [AC_MSG_RESULT([--with-pcap not specified])
413 AC_CHECK_HEADERS(pcap.h, pcap=1)])
414 AM_CONDITIONAL(HAVE_PCAP, test x$pcap = x1)
415 AC_SUBST(PCAP_CPPFLAGS)
416 AC_SUBST(PCAP_LDFLAGS)
419 # test for libz (maybe required for linking mysql)
421 AC_CHECK_LIB(z, compress,,zlib=0)
422 AM_CONDITIONAL(HAVE_ZLIB, test x$zlib = x1)
425 AC_MSG_ERROR([GNUnet requires zlib])
429 AC_CHECK_TYPES([sigset_t, off_t], [], [], [#include <sys/types.h>])
430 AC_CHECK_TYPES([size_t], [], [], [#include <stdio.h>])
432 if test "$build_target" = "mingw"
434 CYGWIN_MYSQL_MAGIC="#include <mysql/my_global.h>"
440 SAVE_LDFLAGS=$LDFLAGS
441 SAVE_CPPFLAGS=$CPPFLAGS
442 AC_MSG_CHECKING(for mysql)
444 [ --with-mysql=PFX base of MySQL installation],
445 [AC_MSG_RESULT("$with_mysql")
446 if test "$with_mysql" != "no"
448 if test "$with_mysql" != "yes"
450 LDFLAGS="-L$with_mysql/lib -L$with_mysql/lib/mysql $LDFLAGS $ZLIBS"
451 CPPFLAGS="-I$with_mysql/include $CPPFLAGS"
453 AC_CHECK_HEADERS(mysql/mysql.h,
454 AC_CHECK_LIB(mysqlclient, mysql_init,
455 MYSQL_LDFLAGS="-L$with_mysql/lib -L$with_mysql/lib/mysql"
456 MYSQL_CPPFLAGS="-I$with_mysql/include"
458 mysql=true), [], [$CYGWIN_MYSQL_MAGIC])
461 [AC_MSG_RESULT([--with-mysql not specified])
462 LDFLAGS="-L/usr/lib/mysql $LDFLAGS $ZLIBS"
463 AC_CHECK_LIB(mysqlclient, mysql_init,
464 [AC_CHECK_HEADERS(mysql/mysql.h,
465 MYSQL_LDFLAGS="-L/usr/lib/mysql"
468 , [], [$CYGWIN_MYSQL_MAGIC])])
471 AC_SUBST(MYSQL_LDFLAGS)
472 AC_SUBST(MYSQL_CPPFLAGS)
474 # additional version check for mysql
475 AC_ARG_ENABLE(mysql-version-check, [ --disable-mysql-version-check do not check MySQL version],, enable_mysql_version_check=yes)
476 if test "$mysql" = "true" -a "x$enable_mysql_version_check" = "xyes"
478 AC_MSG_CHECKING(mysql version)
479 AC_RUN_IFELSE([AC_LANG_PROGRAM(
480 [[$CYGWIN_MYSQL_MAGIC
481 #include <mysql/mysql.h>]],
482 [[if (MYSQL_VERSION_ID < 40100)
487 ],mysql=true,mysql=false)
488 if test "$mysql" = "false"
491 AC_MSG_RESULT([fail, >= 4.1 required])
496 AM_CONDITIONAL(HAVE_MYSQL, test x$mysql = xtrue)
497 AM_CONDITIONAL(HAVE_MYSQLE, test "0" = "1")
500 LDFLAGS=$SAVE_LDFLAGS
501 CPPFLAGS=$SAVE_CPPFLAGS
503 if test "$sqlite" = 0 -a "$mysql" = 0
505 AC_MSG_ERROR([GNUnet requires SQLite or MySQL])
510 AC_MSG_CHECKING([for libmicrohttpd])
511 AC_ARG_WITH(microhttpd,
512 [ --with-microhttpd=PFX base of libmicrohttpd installation],
513 [AC_MSG_RESULT([$with_microhttpd])
514 case $with_microhttpd in
518 AC_CHECK_HEADERS([microhttpd.h],
519 AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
520 AC_CHECK_LIB([microhttpd], [MHD_start_daemon],
522 [],[#include "src/include/platform.h"
523 #include <microhttpd.h>]),,
524 [#include "src/include/platform.h"])
527 LDFLAGS="-L$with_microhttpd/lib $LDFLAGS"
528 CPPFLAGS="-I$with_microhttpd/include $CPPFLAGS"
529 AC_CHECK_HEADERS(microhttpd.h,
530 AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
531 AC_CHECK_LIB([microhttpd], [MHD_start_daemon],
532 EXT_LIB_PATH="-L$with_microhttpd/lib $EXT_LIB_PATH"
534 [],[#include "src/include/platform.h"
535 #include <microhttpd.h>]),,
536 [#include "src/include/platform.h"])
540 [AC_MSG_RESULT([--with-microhttpd not specified])
541 AC_CHECK_HEADERS([microhttpd.h],
542 AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
543 AC_CHECK_LIB([microhttpd], [MHD_start_daemon],
545 [],[#include "src/include/platform.h"
546 #include <microhttpd.h>]),,
547 [#include "src/include/platform.h"])])
548 AM_CONDITIONAL(HAVE_MHD, test x$lmhd = x1)
549 AC_DEFINE_UNQUOTED([HAVE_MHD], $lmhd, [We have libmicrohttpd])
554 AC_MSG_CHECKING([for openssl])
556 [ --with-openssl=PFX base of openssl installation],
557 [AC_MSG_RESULT([$with_openssl])
558 case $with_openssl in
562 AC_CHECK_HEADERS([openssl/ssl.h],
563 AC_CHECK_LIB([ssl], [SSL_new],
567 LDFLAGS="-L$with_openssl/lib $LDFLAGS"
568 CPPFLAGS="-I$with_openssl/include $CPPFLAGS"
569 AC_CHECK_HEADERS([openssl/ssl.h],
570 AC_CHECK_LIB([ssl], [SSL_new],
571 EXT_LIB_PATH="-L$with_openssl/lib $EXT_LIB_PATH"
576 [AC_MSG_RESULT([--with-openssl not specified])
577 AC_CHECK_HEADERS([openssl/ssl.h],
578 AC_CHECK_LIB([ssl], [SSL_new],
580 AM_CONDITIONAL(HAVE_OPENSSL, test x$openssl = x1)
581 AC_DEFINE_UNQUOTED([HAVE_OPENSSL], $openssl, [We have openssl])
591 # check for python & pexpect (used for some testcases only)
592 AM_PATH_PYTHON([2.5],, [:])
593 AM_CONDITIONAL([HAVE_PYTHON], [test "$PYTHON" != :])
595 if test "$PYTHON" != :
597 AC_MSG_CHECKING([for pexpect])
598 $PYTHON -c "import pexpect" > /dev/null 2> /dev/null
600 AM_CONDITIONAL(HAVE_PYTHON_PEXPECT, test $PYEX -eq 0)
605 AC_MSG_RESULT([not found])
608 AM_CONDITIONAL(HAVE_PYTHON_PEXPECT, 0)
613 AC_MSG_CHECKING([for libesmtp])
615 [ --with-esmtp=PFX base of libesmtp installation],
616 [AC_MSG_RESULT([$with_esmtp])
621 AC_CHECK_HEADERS(libesmtp.h,
622 AC_CHECK_LIB([esmtp], [smtp_start_session],
626 LDFLAGS="-L$with_esmtp/lib $LDFLAGS"
627 CPPFLAGS="-I$with_esmtp/include $CPPFLAGS"
628 AC_CHECK_HEADERS(libesmtp.h,
629 AC_CHECK_LIB([esmtp], [smtp_start_session],
630 EXT_LIB_PATH="-L$with_esmtp/lib $EXT_LIB_PATH"
635 [AC_MSG_RESULT([--with-esmtp not specified])
636 AC_CHECK_HEADERS(libesmtp.h,
637 AC_CHECK_LIB([esmtp], [smtp_start_session],
639 AM_CONDITIONAL(HAVE_ESMTP, test x$esmtp = x1)
640 AC_DEFINE_UNQUOTED([HAVE_ESMTP], $esmtp, [We have libesmtp])
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
678 AC_PROG_GCC_TRADITIONAL
680 AC_FUNC_SELECT_ARGTYPES
690 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])
695 gn_user_home_dir="~/.gnunet"
696 AC_ARG_WITH(user-home-dir,
698 [--with-user-home-dir=DIR],
699 [default user home directory (~/.gnunet)]),
700 [gn_user_home_dir=$withval])
701 AC_SUBST(GN_USER_HOME_DIR, $gn_user_home_dir)
702 gn_daemon_home_dir="/var/lib/gnunet"
703 AC_ARG_WITH(daemon-home-dir,
705 [--with-daemon-home-dir=DIR],
706 [default daemon home directory (/var/lib/gnunet)]),
707 [gn_daemon_home_dir=$withval])
708 AC_SUBST(GN_DAEMON_HOME_DIR, $gn_daemon_home_dir)
709 gn_daemon_config_dir="/etc"
710 AC_ARG_WITH(daemon-config-dir,
712 [--with-daemon-config-dir=DIR],
713 [default daemon config directory (/etc)]),
714 [gn_daemon_config_dir=$withval])
715 AC_SUBST(GN_DAEMON_CONFIG_DIR, $gn_daemon_config_dir)
718 GN_LIBINTL="$LTLIBINTL"
719 AC_ARG_ENABLE(framework, [ --enable-framework enable Mac OS X framework build helpers],enable_framework_build=$enableval)
720 AM_CONDITIONAL(WANT_FRAMEWORK, test x$enable_framework_build = xyes)
721 if test x$enable_framework_build = xyes
723 AC_DEFINE([FRAMEWORK_BUILD], 1, [Build a Mac OS X Framework])
724 GN_INTLINCL='-I$(top_srcdir)/src/intlemu'
725 GN_LIBINTL='$(top_builddir)/src/intlemu/libintlemu.la -framework CoreFoundation'
726 AC_LIB_APPENDTOVAR([CPPFLAGS], [$GN_INTLINCL])
729 GN_LIB_LDFLAGS="-export-dynamic -no-undefined"
730 GN_PLUGIN_LDFLAGS="-export-dynamic -avoid-version -module -no-undefined"
732 AC_SUBST(GN_LIB_LDFLAGS)
733 AC_SUBST(GN_PLUGIN_LDFLAGS)
734 AC_SUBST(GN_INTLINCL)
740 AC_SUBST(EXT_LIB_PATH)
745 AC_SUBST(EXT_LIB_PATH)
748 # should 'make check' run tests?
749 AC_MSG_CHECKING(whether to run tests)
750 AC_ARG_ENABLE(testruns,
751 [AS_HELP_STRING([--enable-testruns=yes/no],
752 [disable running tests on make check (default is YES)])],
753 [enable_tests_run=$enableval],
754 [enable_tests_run="yes"])
755 AC_MSG_RESULT($enable_test_run)
756 AM_CONDITIONAL([DISABLE_TEST_RUN], [test "x$enable_tests_run" = "xno"])
758 # should experimental code be compiled (code that may not yet compile)?
759 disable_experimental=yes
760 AC_MSG_CHECKING(whether to compile experimental code)
761 AC_ARG_ENABLE(experimental,
762 [AS_HELP_STRING([--enable-experimental],
763 [enable compiling experimental code])],
764 [enable_experimental=$enableval],
765 [enable_experimental="no"])
766 AC_MSG_RESULT($enable_experimental)
767 AM_CONDITIONAL([HAVE_EXPERIMENTAL], [test "x$enable_experimental" = "xyes"])
769 # should malicious code be compiled (code used for testing with malicious peers)
771 AC_MSG_CHECKING(whether to compile malicious code)
772 AC_ARG_ENABLE(malicious,
773 [AS_HELP_STRING([--enable-malicious],
774 [enable compiling malicious code (only for developers for testing)])],
775 [enable_malicious=1],
776 [enable_malicious=0])
777 AC_MSG_RESULT($enable_malicious)
778 AM_CONDITIONAL([HAVE_MALICIOUS], [test "x$enable_malicious" = "x1"])
779 AC_DEFINE_UNQUOTED([HAVE_MALICIOUS], $enable_malicious, [Compile malicious code])
781 # should code be enabled that works around missing OS functionality on Windows?
782 # used for test cases
783 AC_ARG_ENABLE(windows_workarounds, [AS_HELP_STRING([--enable-windows_workarounds],
784 [enable workarounds used on Windows (only useful for test cases)])])
785 if test $build_target = "mingw"
789 if test x$enable_windows_workarounds = "xyes"
796 AC_DEFINE_UNQUOTED([ENABLE_WINDOWS_WORKAROUNDS], $workarounds, [enable workarounds used on Windows (only useful for test cases)])
800 AC_ARG_ENABLE([coverage], AS_HELP_STRING([--enable-coverage],
801 [Compile the library with code coverage support (default is NO)]),
802 [use_gcov=yes], [use_gcov=no])
803 AM_CONDITIONAL([USE_COVERAGE], [test "x$use_gcov" = "xyes"])
814 src/datacache/Makefile
815 src/datastore/Makefile
818 src/fragmentation/Makefile
822 src/include/gnunet_directories.h
823 src/hostlist/Makefile
827 src/peerinfo/Makefile
828 src/peerinfo-tool/Makefile
829 src/statistics/Makefile
830 src/template/Makefile
832 src/topology/Makefile
833 src/transport/Makefile
838 pkgconfig/gnunetarm.pc
839 pkgconfig/gnunetblock.pc
840 pkgconfig/gnunetcore.pc
841 pkgconfig/gnunetdatacache.pc
842 pkgconfig/gnunetdatastore.pc
843 pkgconfig/gnunetdht.pc
844 pkgconfig/gnunetdhtlog.pc
845 pkgconfig/gnunetdv.pc
846 pkgconfig/gnunetfragmentation.pc
847 pkgconfig/gnunetfs.pc
848 pkgconfig/gnunethello.pc
849 pkgconfig/gnunetpeerinfo.pc
850 pkgconfig/gnunetstatistics.pc
851 pkgconfig/gnunettesting.pc
852 pkgconfig/gnunettransport.pc
853 pkgconfig/gnunetutil.pc
859 # warn user if mysql found but not used due to version
860 if test "$mysqlfail" = "true"
862 AC_MSG_NOTICE([NOTICE: MySQL found, but too old. MySQL support will not be compiled.])
866 if test "x$sqlite" = "x0"
868 AC_MSG_NOTICE([NOTICE: sqlite not found. sqLite support will not be compiled.])
871 if test "x$lmhd" != "x1"
873 AC_MSG_NOTICE([NOTICE: libmicrohttpd not found, http transport will not be installed.])
876 if test "x$esmtp" != "x1"
878 AC_MSG_NOTICE([NOTICE: libesmtp not found, monkey will not be installed.])
881 if test "x$pcap" != "x1"
883 AC_MSG_NOTICE([NOTICE: libpcap not found, WiFi support will not be installed.])
886 if test "x$openssl" != "x1"
888 AC_MSG_NOTICE([NOTICE: OpenSSL not found, monkey will not be installed.])
891 AC_MSG_NOTICE([NOTICE: Database support is set to MySQL: $mysql, SQLite: $sqlite, Postgres: $postgres])
893 if test "$enable_framework_build" = "yes"
895 AC_MSG_NOTICE([NOTICE: Mac OS X framework build enabled.])
898 AC_MSG_NOTICE([********************************************
899 You can compile GNUnet with
901 now. After that, run (if necessary as 'root')
903 to install everything. You may want to create a new user account
904 to run the GNUnet service:
906 You also need to create an configuration file that should
907 specify the path where GNUnet should store data. For example,
908 you could store in "/etc/gnunet.conf" the following lines:
911 SERVICEHOME = /var/lib/gnunet
912 DEFAULTCONFIG = /etc/gnunet.conf
914 Now, in order to start your peer, run as the 'gnunet' user
917 Each GNUnet user should also create an (at least initially) empty
920 touch $HOME/.gnunet/gnunet.conf
922 Optionally, download and compile gnunet-gtk to get a GUI.
923 ********************************************])