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])
248 LIBCURL_CHECK_CONFIG(,7.20.1,,AC_MSG_ERROR([GNUnet requires libcurl >= 7.20.1]))
252 fi # $build = $target
255 #AC_CHECK_HEADERS(glpk.h, glpk=true)
256 #AM_CONDITIONAL(HAVE_GLPK, test x$glpk = xtrue)
257 #AC_CHECK_LIB([glpk],[glp_create_prob])
260 AC_CHECK_HEADERS(glpk.h, ,[gplk=false])
261 AC_CHECK_LIB([glpk],[glp_create_prob], , [gplk=false])
262 # GLPK must support atm MLP presolving, version >= 4.32
263 AC_CHECK_MEMBERS(glp_iocp.presolve, ,[gplk=false],[[#include <glpk.h>]])
264 if test $gplk == false
266 AM_CONDITIONAL(HAVE_GLPK, [test x$gplk = xtrue])
267 AM_CONDITIONAL(HAVE_LIBGLPK, [test x$gplk != x$gplk])
268 AC_MSG_WARN([GNUnet requires GLPK >= 4.32])
270 AM_CONDITIONAL(HAVE_GLPK, [test x$gplk = xtrue])
271 AM_CONDITIONAL(HAVE_LIBGLPK, [test x$gplk = x$gplk])
274 # test for kvm and kstat (for CPU stats under BSD/Solaris)
275 AC_CHECK_LIB([kvm],[kvm_open])
276 AC_CHECK_LIB([kstat],[kstat_open])
278 # test for libextractor
280 AC_MSG_CHECKING(for libextractor)
281 AC_ARG_WITH(extractor,
282 [ --with-extractor=PFX base of libextractor installation],
283 [AC_MSG_RESULT([$with_extractor])
284 case $with_extractor in
288 AC_CHECK_HEADERS(extractor.h,
289 AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
293 LDFLAGS="-L$with_extractor/lib $LDFLAGS"
294 CPPFLAGS="-I$with_extractor/include $CPPFLAGS"
295 AC_CHECK_HEADERS(extractor.h,
296 AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
297 EXT_LIB_PATH="-L$with_extractor/lib $EXT_LIB_PATH"
302 [AC_MSG_RESULT([--with-extractor not specified])
303 AC_CHECK_HEADERS(extractor.h,
304 AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
306 if test "$extractor" != 1
308 AC_MSG_ERROR([GNUnet requires libextractor])
314 # Checks for standard header files.
318 # Check for headers that are ALWAYS required
319 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]))
321 # Checks for headers that are only required on some systems or opional (and where we do NOT abort if they are not there)
322 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])
324 SAVE_LDFLAGS=$LDFLAGS
325 SAVE_CPPFLAGS=$CPPFLAGS
329 AC_MSG_CHECKING(for SQLite)
331 [ --with-sqlite=PFX base of SQLite installation],
332 [AC_MSG_RESULT("$with_sqlite")
337 AC_CHECK_HEADERS(sqlite3.h,
341 LDFLAGS="-L$with_sqlite/lib $LDFLAGS"
342 CPPFLAGS="-I$with_sqlite/include $CPPFLAGS"
343 AC_CHECK_HEADERS(sqlite3.h,
344 EXT_LIB_PATH="-L$with_sqlite/lib $EXT_LIB_PATH"
345 SQLITE_LDFLAGS="-L$with_sqlite/lib"
346 SQLITE_CPPFLAGS="-I$with_sqlite/include"
348 LDFLAGS=$SAVE_LDFLAGS
349 CPPFLAGS=$SAVE_CPPFLAGS
353 [AC_MSG_RESULT([--with-sqlite not specified])
354 AC_CHECK_HEADERS(sqlite3.h, sqlite=true)])
355 AM_CONDITIONAL(HAVE_SQLITE, test x$sqlite = xtrue)
356 AC_SUBST(SQLITE_CPPFLAGS)
357 AC_SUBST(SQLITE_LDFLAGS)
361 AC_MSG_CHECKING(for postgres)
362 AC_ARG_WITH(postgres,
363 [ --with-postgres=PFX base of postgres installation],
364 [AC_MSG_RESULT("$with_postgres")
365 case $with_postgres in
369 AC_CHECK_HEADERS(postgresql/libpq-fe.h,
373 LDFLAGS="-L$with_postgres/lib $LDFLAGS"
374 CPPFLAGS="-I$with_postgres/include $CPPFLAGS"
375 AC_CHECK_HEADERS(postgresql/libpq-fe.h,
376 EXT_LIB_PATH="-L$with_postgres/lib $EXT_LIB_PATH"
377 POSTGRES_LDFLAGS="-L$with_postgres/lib"
378 POSTGRES_CPPFLAGS="-I$with_postgres/include"
380 LDFLAGS=$SAVE_LDFLAGS
381 CPPFLAGS=$SAVE_CPPFLAGS
385 [AC_MSG_RESULT([--with-postgres not specified])
386 AC_CHECK_HEADERS(postgresql/libpq-fe.h, postgres=true)])
387 AM_CONDITIONAL(HAVE_POSTGRES, test x$postgres = xtrue)
388 AC_SUBST(POSTGRES_CPPFLAGS)
389 AC_SUBST(POSTGRES_LDFLAGS)
393 AC_MSG_CHECKING(for libpcap)
395 [ --with-pcap=PFX base of pcap installation],
396 [AC_MSG_RESULT("$with_pcap")
401 AC_CHECK_HEADERS(pcap.h,
405 LDFLAGS="-L$with_pcap/lib $LDFLAGS"
406 CPPFLAGS="-I$with_pcap/include $CPPFLAGS"
407 AC_CHECK_HEADERS(pcap.h,
408 EXT_LIB_PATH="-L$with_pcap/lib $EXT_LIB_PATH"
409 PCAP_LDFLAGS="-L$with_pcap/lib"
410 PCAP_CPPFLAGS="-I$with_pcap/include"
412 LDFLAGS=$SAVE_LDFLAGS
413 CPPFLAGS=$SAVE_CPPFLAGS
417 [AC_MSG_RESULT([--with-pcap not specified])
418 AC_CHECK_HEADERS(pcap.h, pcap=1)])
419 AM_CONDITIONAL(HAVE_PCAP, test x$pcap = x1)
420 AC_SUBST(PCAP_CPPFLAGS)
421 AC_SUBST(PCAP_LDFLAGS)
424 # test for libz (maybe required for linking mysql)
426 AC_CHECK_LIB(z, compress,,zlib=0)
427 AM_CONDITIONAL(HAVE_ZLIB, test x$zlib = x1)
430 AC_MSG_ERROR([GNUnet requires zlib])
434 AC_CHECK_TYPES([sigset_t, off_t], [], [], [#include <sys/types.h>])
435 AC_CHECK_TYPES([size_t], [], [], [#include <stdio.h>])
437 if test "$build_target" = "mingw"
439 CYGWIN_MYSQL_MAGIC="#include <mysql/my_global.h>"
445 SAVE_LDFLAGS=$LDFLAGS
446 SAVE_CPPFLAGS=$CPPFLAGS
447 AC_MSG_CHECKING(for mysql)
449 [ --with-mysql=PFX base of MySQL installation],
450 [AC_MSG_RESULT("$with_mysql")
451 if test "$with_mysql" != "no"
453 if test "$with_mysql" != "yes"
455 LDFLAGS="-L$with_mysql/lib -L$with_mysql/lib/mysql $LDFLAGS $ZLIBS"
456 CPPFLAGS="-I$with_mysql/include $CPPFLAGS"
458 AC_CHECK_HEADERS(mysql/mysql.h,
459 AC_CHECK_LIB(mysqlclient, mysql_init,
460 MYSQL_LDFLAGS="-L$with_mysql/lib -L$with_mysql/lib/mysql"
461 MYSQL_CPPFLAGS="-I$with_mysql/include"
463 mysql=true), [], [$CYGWIN_MYSQL_MAGIC])
466 [AC_MSG_RESULT([--with-mysql not specified])
467 LDFLAGS="-L/usr/lib/mysql $LDFLAGS $ZLIBS"
468 AC_CHECK_LIB(mysqlclient, mysql_init,
469 [AC_CHECK_HEADERS(mysql/mysql.h,
470 MYSQL_LDFLAGS="-L/usr/lib/mysql"
473 , [], [$CYGWIN_MYSQL_MAGIC])])
476 AC_SUBST(MYSQL_LDFLAGS)
477 AC_SUBST(MYSQL_CPPFLAGS)
479 # additional version check for mysql
480 AC_ARG_ENABLE(mysql-version-check, [ --disable-mysql-version-check do not check MySQL version],, enable_mysql_version_check=yes)
481 if test "$mysql" = "true" -a "x$enable_mysql_version_check" = "xyes"
483 AC_MSG_CHECKING(mysql version)
484 AC_RUN_IFELSE([AC_LANG_PROGRAM(
485 [[$CYGWIN_MYSQL_MAGIC
486 #include <mysql/mysql.h>]],
487 [[if (MYSQL_VERSION_ID < 40100)
492 ],mysql=true,mysql=false)
493 if test "$mysql" = "false"
496 AC_MSG_RESULT([fail, >= 4.1 required])
501 AM_CONDITIONAL(HAVE_MYSQL, test x$mysql = xtrue)
502 AM_CONDITIONAL(HAVE_MYSQLE, test "0" = "1")
505 LDFLAGS=$SAVE_LDFLAGS
506 CPPFLAGS=$SAVE_CPPFLAGS
508 if test "$sqlite" = 0 -a "$mysql" = 0
510 AC_MSG_ERROR([GNUnet requires SQLite or MySQL])
515 AC_MSG_CHECKING([for libmicrohttpd])
516 AC_ARG_WITH(microhttpd,
517 [ --with-microhttpd=PFX base of libmicrohttpd installation],
518 [AC_MSG_RESULT([$with_microhttpd])
519 case $with_microhttpd in
523 AC_CHECK_HEADERS([microhttpd.h],
524 AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
525 AC_CHECK_LIB([microhttpd], [MHD_start_daemon],
527 [],[#include "src/include/platform.h"
528 #include <microhttpd.h>]),,
529 [#include "src/include/platform.h"])
532 LDFLAGS="-L$with_microhttpd/lib $LDFLAGS"
533 CPPFLAGS="-I$with_microhttpd/include $CPPFLAGS"
534 AC_CHECK_HEADERS(microhttpd.h,
535 AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
536 AC_CHECK_LIB([microhttpd], [MHD_start_daemon],
537 EXT_LIB_PATH="-L$with_microhttpd/lib $EXT_LIB_PATH"
539 [],[#include "src/include/platform.h"
540 #include <microhttpd.h>]),,
541 [#include "src/include/platform.h"])
545 [AC_MSG_RESULT([--with-microhttpd not specified])
546 AC_CHECK_HEADERS([microhttpd.h],
547 AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
548 AC_CHECK_LIB([microhttpd], [MHD_start_daemon],
550 [],[#include "src/include/platform.h"
551 #include <microhttpd.h>]),,
552 [#include "src/include/platform.h"])])
553 AM_CONDITIONAL(HAVE_MHD, test x$lmhd = x1)
554 AC_DEFINE_UNQUOTED([HAVE_MHD], $lmhd, [We have libmicrohttpd])
559 AC_MSG_CHECKING([for openssl])
561 [ --with-openssl=PFX base of openssl installation],
562 [AC_MSG_RESULT([$with_openssl])
563 case $with_openssl in
567 AC_CHECK_HEADERS([openssl/ssl.h],
568 AC_CHECK_LIB([ssl], [SSL_new],
572 LDFLAGS="-L$with_openssl/lib $LDFLAGS"
573 CPPFLAGS="-I$with_openssl/include $CPPFLAGS"
574 AC_CHECK_HEADERS([openssl/ssl.h],
575 AC_CHECK_LIB([ssl], [SSL_new],
576 EXT_LIB_PATH="-L$with_openssl/lib $EXT_LIB_PATH"
581 [AC_MSG_RESULT([--with-openssl not specified])
582 AC_CHECK_HEADERS([openssl/ssl.h],
583 AC_CHECK_LIB([ssl], [SSL_new],
585 AM_CONDITIONAL(HAVE_OPENSSL, test x$openssl = x1)
586 AC_DEFINE_UNQUOTED([HAVE_OPENSSL], $openssl, [We have openssl])
596 # check for python & pexpect (used for some testcases only)
597 AM_PATH_PYTHON([2.5],, [:])
598 AM_CONDITIONAL([HAVE_PYTHON], [test "$PYTHON" != :])
600 if test "$PYTHON" != :
602 AC_MSG_CHECKING([for pexpect])
603 $PYTHON -c "import pexpect" > /dev/null 2> /dev/null
605 AM_CONDITIONAL(HAVE_PYTHON_PEXPECT, test $PYEX -eq 0)
610 AC_MSG_RESULT([not found])
613 AM_CONDITIONAL(HAVE_PYTHON_PEXPECT, 0)
618 AC_MSG_CHECKING([for libesmtp])
620 [ --with-esmtp=PFX base of libesmtp installation],
621 [AC_MSG_RESULT([$with_esmtp])
626 AC_CHECK_HEADERS(libesmtp.h,
627 AC_CHECK_LIB([esmtp], [smtp_start_session],
631 LDFLAGS="-L$with_esmtp/lib $LDFLAGS"
632 CPPFLAGS="-I$with_esmtp/include $CPPFLAGS"
633 AC_CHECK_HEADERS(libesmtp.h,
634 AC_CHECK_LIB([esmtp], [smtp_start_session],
635 EXT_LIB_PATH="-L$with_esmtp/lib $EXT_LIB_PATH"
640 [AC_MSG_RESULT([--with-esmtp not specified])
641 AC_CHECK_HEADERS(libesmtp.h,
642 AC_CHECK_LIB([esmtp], [smtp_start_session],
644 AM_CONDITIONAL(HAVE_ESMTP, test x$esmtp = x1)
645 AC_DEFINE_UNQUOTED([HAVE_ESMTP], $esmtp, [We have libesmtp])
652 AM_GNU_GETTEXT([external])
653 AM_GNU_GETTEXT_VERSION([0.16.1])
658 # Checks for standard typedefs, structures, and compiler characteristics.
667 AC_CHECK_MEMBER([struct sockaddr_in.sin_len],
668 [ AC_DEFINE(HAVE_SOCKADDR_IN_SIN_LEN, 1, [Do we have sockaddr_in.sin_len?])
672 #include <sys/types.h>
673 #include <sys/socket.h>
674 #include <netinet/in.h>
679 # Checks for library functions.
680 AC_FUNC_CLOSEDIR_VOID
683 AC_PROG_GCC_TRADITIONAL
685 AC_FUNC_SELECT_ARGTYPES
695 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])
700 gn_user_home_dir="~/.gnunet"
701 AC_ARG_WITH(user-home-dir,
703 [--with-user-home-dir=DIR],
704 [default user home directory (~/.gnunet)]),
705 [gn_user_home_dir=$withval])
706 AC_SUBST(GN_USER_HOME_DIR, $gn_user_home_dir)
707 gn_daemon_home_dir="/var/lib/gnunet"
708 AC_ARG_WITH(daemon-home-dir,
710 [--with-daemon-home-dir=DIR],
711 [default daemon home directory (/var/lib/gnunet)]),
712 [gn_daemon_home_dir=$withval])
713 AC_SUBST(GN_DAEMON_HOME_DIR, $gn_daemon_home_dir)
714 gn_daemon_config_dir="/etc"
715 AC_ARG_WITH(daemon-config-dir,
717 [--with-daemon-config-dir=DIR],
718 [default daemon config directory (/etc)]),
719 [gn_daemon_config_dir=$withval])
720 AC_SUBST(GN_DAEMON_CONFIG_DIR, $gn_daemon_config_dir)
723 GN_LIBINTL="$LTLIBINTL"
724 AC_ARG_ENABLE(framework, [ --enable-framework enable Mac OS X framework build helpers],enable_framework_build=$enableval)
725 AM_CONDITIONAL(WANT_FRAMEWORK, test x$enable_framework_build = xyes)
726 if test x$enable_framework_build = xyes
728 AC_DEFINE([FRAMEWORK_BUILD], 1, [Build a Mac OS X Framework])
729 GN_INTLINCL='-I$(top_srcdir)/src/intlemu'
730 GN_LIBINTL='$(top_builddir)/src/intlemu/libintlemu.la -framework CoreFoundation'
731 AC_LIB_APPENDTOVAR([CPPFLAGS], [$GN_INTLINCL])
734 GN_LIB_LDFLAGS="-export-dynamic -no-undefined"
735 GN_PLUGIN_LDFLAGS="-export-dynamic -avoid-version -module -no-undefined"
737 AC_SUBST(GN_LIB_LDFLAGS)
738 AC_SUBST(GN_PLUGIN_LDFLAGS)
739 AC_SUBST(GN_INTLINCL)
745 AC_SUBST(EXT_LIB_PATH)
750 AC_SUBST(EXT_LIB_PATH)
753 # should 'make check' run tests?
754 AC_MSG_CHECKING(whether to run tests)
755 AC_ARG_ENABLE(testruns,
756 [AS_HELP_STRING([--enable-testruns=yes/no],
757 [disable running tests on make check (default is YES)])],
758 [enable_tests_run=$enableval],
759 [enable_tests_run="yes"])
760 AC_MSG_RESULT($enable_test_run)
761 AM_CONDITIONAL([DISABLE_TEST_RUN], [test "x$enable_tests_run" = "xno"])
763 # should experimental code be compiled (code that may not yet compile)?
764 disable_experimental=yes
765 AC_MSG_CHECKING(whether to compile experimental code)
766 AC_ARG_ENABLE(experimental,
767 [AS_HELP_STRING([--enable-experimental],
768 [enable compiling experimental code])],
769 [enable_experimental=$enableval],
770 [enable_experimental="no"])
771 AC_MSG_RESULT($enable_experimental)
772 AM_CONDITIONAL([HAVE_EXPERIMENTAL], [test "x$enable_experimental" = "xyes"])
774 # should malicious code be compiled (code used for testing with malicious peers)
776 AC_MSG_CHECKING(whether to compile malicious code)
777 AC_ARG_ENABLE(malicious,
778 [AS_HELP_STRING([--enable-malicious],
779 [enable compiling malicious code (only for developers for testing)])],
780 [enable_malicious=1],
781 [enable_malicious=0])
782 AC_MSG_RESULT($enable_malicious)
783 AM_CONDITIONAL([HAVE_MALICIOUS], [test "x$enable_malicious" = "x1"])
784 AC_DEFINE_UNQUOTED([HAVE_MALICIOUS], $enable_malicious, [Compile malicious code])
786 # should code be enabled that works around missing OS functionality on Windows?
787 # used for test cases
788 AC_ARG_ENABLE(windows_workarounds, [AS_HELP_STRING([--enable-windows_workarounds],
789 [enable workarounds used on Windows (only useful for test cases)])])
790 if test $build_target = "mingw"
794 if test x$enable_windows_workarounds = "xyes"
801 AC_DEFINE_UNQUOTED([ENABLE_WINDOWS_WORKAROUNDS], $workarounds, [enable workarounds used on Windows (only useful for test cases)])
805 AC_ARG_ENABLE([coverage], AS_HELP_STRING([--enable-coverage],
806 [Compile the library with code coverage support (default is NO)]),
807 [use_gcov=yes], [use_gcov=no])
808 AM_CONDITIONAL([USE_COVERAGE], [test "x$use_gcov" = "xyes"])
819 src/datacache/Makefile
820 src/datastore/Makefile
823 src/fragmentation/Makefile
827 src/include/gnunet_directories.h
828 src/hostlist/Makefile
832 src/peerinfo/Makefile
833 src/peerinfo-tool/Makefile
834 src/statistics/Makefile
835 src/template/Makefile
837 src/topology/Makefile
838 src/transport/Makefile
843 pkgconfig/gnunetarm.pc
844 pkgconfig/gnunetblock.pc
845 pkgconfig/gnunetcore.pc
846 pkgconfig/gnunetdatacache.pc
847 pkgconfig/gnunetdatastore.pc
848 pkgconfig/gnunetdht.pc
849 pkgconfig/gnunetdhtlog.pc
850 pkgconfig/gnunetdv.pc
851 pkgconfig/gnunetfragmentation.pc
852 pkgconfig/gnunetfs.pc
853 pkgconfig/gnunethello.pc
854 pkgconfig/gnunetpeerinfo.pc
855 pkgconfig/gnunetstatistics.pc
856 pkgconfig/gnunettesting.pc
857 pkgconfig/gnunettransport.pc
858 pkgconfig/gnunetutil.pc
864 # warn user if mysql found but not used due to version
865 if test "$mysqlfail" = "true"
867 AC_MSG_NOTICE([NOTICE: MySQL found, but too old. MySQL support will not be compiled.])
871 if test "x$sqlite" = "x0"
873 AC_MSG_NOTICE([NOTICE: sqlite not found. sqLite support will not be compiled.])
876 if test "x$lmhd" != "x1"
878 AC_MSG_NOTICE([NOTICE: libmicrohttpd not found, http transport will not be installed.])
881 if test "x$esmtp" != "x1"
883 AC_MSG_NOTICE([NOTICE: libesmtp not found, monkey will not be installed.])
886 if test "x$pcap" != "x1"
888 AC_MSG_NOTICE([NOTICE: libpcap not found, WiFi support will not be installed.])
891 if test "x$openssl" != "x1"
893 AC_MSG_NOTICE([NOTICE: OpenSSL not found, monkey will not be installed.])
896 AC_MSG_NOTICE([NOTICE: Database support is set to MySQL: $mysql, SQLite: $sqlite, Postgres: $postgres])
898 if test "$enable_framework_build" = "yes"
900 AC_MSG_NOTICE([NOTICE: Mac OS X framework build enabled.])
903 AC_MSG_NOTICE([********************************************
904 You can compile GNUnet with
906 now. After that, run (if necessary as 'root')
908 to install everything. You may want to create a new user account
909 to run the GNUnet service:
911 You also need to create an configuration file that should
912 specify the path where GNUnet should store data. For example,
913 you could store in "/etc/gnunet.conf" the following lines:
916 SERVICEHOME = /var/lib/gnunet
917 DEFAULTCONFIG = /etc/gnunet.conf
919 Now, in order to start your peer, run as the 'gnunet' user
922 Each GNUnet user should also create an (at least initially) empty
925 touch $HOME/.gnunet/gnunet.conf
927 Optionally, download and compile gnunet-gtk to get a GUI.
928 ********************************************])