1 # This file is part of GNUnet.
2 # (C) 2001--2011 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.1],[bug-gnunet@gnu.org])
31 AM_INIT_AUTOMAKE([gnunet], [0.9.1])
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 -Wl,-no-undefined -Wl,--export-all-symbols"
145 LIBS="$LIBS -lws2_32 -lplibc -lgnurx -lole32"
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!
186 # libgnurx (regex library for W32)
188 AC_CHECK_LIB(gnurx, regexec, gnurx=1)
189 if test "x$gnurx" = "x0" -a "x$build_target" = "xmingw"
191 AC_MSG_ERROR([on W32 GNUnet needs libgnurx])
196 AM_PATH_LIBGCRYPT(1.2.0, gcrypt=1)
197 AC_CHECK_DECLS([gcry_mpi_lshift], [], [], [[#include <gcrypt.h>]])
201 AC_MSG_ERROR([GNUnet needs libgcrypt])
204 # Adam shostack suggests the following for Windows:
205 # -D_FORTIFY_SOURCE=2 -fstack-protector-all
206 AC_ARG_ENABLE(gcc-hardening,
207 AS_HELP_STRING(--enable-gcc-hardening, enable compiler security checks),
208 [if test x$enableval = xyes; then
209 CFLAGS="$CFLAGS -D_FORTIFY_SOURCE=2 -fstack-protector-all"
210 CFLAGS="$CFLAGS -fwrapv -fPIE -Wstack-protector"
211 CFLAGS="$CFLAGS --param ssp-buffer-size=1"
212 LDFLAGS="$LDFLAGS -pie"
216 # Linker hardening options
217 # Currently these options are ELF specific - you can't use this with MacOSX
218 AC_ARG_ENABLE(linker-hardening,
219 AS_HELP_STRING(--enable-linker-hardening, enable linker security fixups),
220 [if test x$enableval = xyes; then
221 LDFLAGS="$LDFLAGS -z relro -z now"
225 extra_logging=GNUNET_NO
226 AC_ARG_ENABLE([logging],
227 AS_HELP_STRING([--enable-logging@<:@=value@:>@],[Enable logging calls. Possible values: yes,no,verbose,veryverbose ('yes' is the default)]),
228 [AS_IF([test "x$enableval" = "xyes"], [],
229 [test "x$enableval" = "xno"], [AC_DEFINE([GNUNET_CULL_LOGGING],[],[Define to cull all logging calls])],
230 [test "x$enableval" = "xverbose"], [extra_logging=GNUNET_YES]
231 [test "x$enableval" = "xveryverbose"], [extra_logging=\(GNUNET_YES+1\)])
233 AC_DEFINE_UNQUOTED([GNUNET_EXTRA_LOGGING],[$extra_logging],[1 if extra logging is enabled, 2 for very verbose extra logging, 0 otherwise])
235 if test $build = $target
237 AC_MSG_CHECKING([for working HMAC])
239 LIBS="$LIBS $LIBGCRYPT_LIBS"
240 CFLAGS="$CFLAGS $LIBGCRYPT_CFLAGS"
242 [AC_LANG_PROGRAM([#include <gcrypt.h>
243 #include <stdio.h>], [[
246 unsigned char data[] = { 0xbf, 0x16, 0x6e, 0x46, 0x3a, 0x6c, 0xf3, 0x93, 0xa7, 0x72,
247 0x11, 0xa1, 0xdc, 0x0b, 0x07, 0xdb, 0x1a, 0x5e, 0xd9, 0xb9, 0x81, 0xbe,
248 0xea, 0xe4, 0x31, 0x5f, 0x24, 0xff, 0xfe, 0x50, 0x8a, 0xde };
249 unsigned char key[] = { 0xfc, 0x62, 0x76, 0x35 };
250 unsigned char result[] = {0xa2, 0xb, 0x1, 0xd9, 0xc0, 0x8b, 0x5a, 0x12, 0x80,
251 0xd5, 0x50, 0x12, 0x8e, 0xd0, 0x5b, 0xb6, 0x5c, 0x87, 0x24, 0xe2, 0xd0,
252 0xd2, 0xaf, 0x63, 0xae, 0xd1, 0xd6, 0x64, 0x14, 0xe3, 0x6e, 0x61, 0x5b,
253 0xd, 0xba, 0x17, 0x7d, 0xd3, 0x10, 0xb1, 0x37, 0x41, 0x91, 0x7d, 0xeb,
254 0x1, 0x4d, 0x71, 0xe8, 0x59, 0x71, 0x42, 0x8e, 0xd6, 0xf3, 0x29, 0x3b,
255 0x90, 0xf2, 0xd1, 0xaf, 0x65, 0x1e, 0xb3};
257 if (!gcry_check_version (GCRYPT_VERSION))
259 fprintf (stderr, "Version mismatch %s <-> %s \n", gcry_check_version (NULL), GCRYPT_VERSION);
263 gcry_control (GCRYCTL_DISABLE_SECMEM, 0);
264 gcry_control (GCRYCTL_INITIALIZATION_FINISHED, 0);
266 if (gcry_md_open(&mac, GCRY_MD_SHA512, GCRY_MD_FLAG_HMAC) != GPG_ERR_NO_ERROR)
268 fprintf (stderr, "gcry_md_open error\n");
272 gcry_md_setkey (mac, key, sizeof (key));
273 gcry_md_write (mac, data, sizeof (data));
275 if (memcmp(gcry_md_read (mac, 0), result, gcry_md_get_algo_dlen (gcry_md_get_algo (mac))) != 0)
277 fprintf (stderr, "memcmp error\n");
285 [AC_MSG_RESULT([yes])],
290 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.])
294 AC_MSG_FAILURE([HMAC test failed])
298 AC_MSG_FAILURE([libgcrypt header version does not match library version])
302 fi # $build = $target
305 LIBCURL_CHECK_CONFIG(,7.20.1,,AC_MSG_ERROR([GNUnet requires libcurl >= 7.20.1]))
310 [AS_HELP_STRING([--enable-ats], [enable ATS code])],
311 [enable_ats=${enableval}],
313 if test x${enable_ats} = xyes
315 AC_CHECK_HEADERS([glpk.h],[glpk=true],[gplk=false])
316 AC_CHECK_LIB([glpk],[glp_create_prob],,[gplk=false])
317 # GLPK must support atm MLP presolving, version >= 4.32
318 AC_CHECK_MEMBERS(glp_iocp.presolve,,[gplk=false],[[#include <glpk.h>]])
319 if test x$gplk = xfalse
321 AM_CONDITIONAL(HAVE_LIBGLPK, false)
322 AC_MSG_WARN([GNUnet requires GLPK >= 4.32])
324 AM_CONDITIONAL(HAVE_LIBGLPK, true)
325 AC_DEFINE([HAVE_LIBGLPK],[1],[Have GLPK])
328 AM_CONDITIONAL(HAVE_LIBGLPK, false)
332 # test for kvm and kstat (for CPU stats under BSD/Solaris)
333 AC_CHECK_LIB([kvm],[kvm_open])
334 AC_CHECK_LIB([kstat],[kstat_open])
336 # test for libextractor
338 AC_MSG_CHECKING(for libextractor)
339 AC_ARG_WITH(extractor,
340 [ --with-extractor=PFX base of libextractor installation],
341 [AC_MSG_RESULT([$with_extractor])
342 case $with_extractor in
346 AC_CHECK_HEADERS(extractor.h,
347 AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
351 LDFLAGS="-L$with_extractor/lib $LDFLAGS"
352 CPPFLAGS="-I$with_extractor/include $CPPFLAGS"
353 AC_CHECK_HEADERS(extractor.h,
354 AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
355 EXT_LIB_PATH="-L$with_extractor/lib $EXT_LIB_PATH"
360 [AC_MSG_RESULT([--with-extractor not specified])
361 AC_CHECK_HEADERS(extractor.h,
362 AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
364 if test "$extractor" != 1
366 AC_MSG_ERROR([GNUnet requires libextractor])
371 # test for libunistring
373 AC_MSG_CHECKING(for libunistring)
374 AC_ARG_WITH(unistring,
375 [ --with-unistring=PFX base of libunistring installation],
376 [AC_MSG_RESULT([$with_unistring])
377 case $with_unistring in
381 AC_CHECK_HEADERS(unistr.h,
382 AC_CHECK_LIB([unistring], [u8_check],
386 LDFLAGS="-L$with_unistring/lib $LDFLAGS"
387 CPPFLAGS="-I$with_unistring/include $CPPFLAGS"
388 AC_CHECK_HEADERS(unistr.h,
389 AC_CHECK_LIB([unistring], [u8_check],
390 EXT_LIB_PATH="-L$with_unistring/lib $EXT_LIB_PATH"
395 [AC_MSG_RESULT([--with-unistring not specified])
396 AC_CHECK_HEADERS(unistr.h,
397 AC_CHECK_LIB([unistring], [u8_check],
399 if test "$unistring" != 1
401 AC_MSG_ERROR([GNUnet requires libunistring])
408 # Checks for standard header files.
412 # Check for headers that are ALWAYS required
413 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]))
415 # Checks for headers that are only required on some systems or opional (and where we do NOT abort if they are not there)
416 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])
418 SAVE_LDFLAGS=$LDFLAGS
419 SAVE_CPPFLAGS=$CPPFLAGS
423 AC_MSG_CHECKING(for SQLite)
425 [ --with-sqlite=PFX base of SQLite installation],
426 [AC_MSG_RESULT("$with_sqlite")
431 AC_CHECK_HEADERS(sqlite3.h,
435 LDFLAGS="-L$with_sqlite/lib $LDFLAGS"
436 CPPFLAGS="-I$with_sqlite/include $CPPFLAGS"
437 AC_CHECK_HEADERS(sqlite3.h,
438 EXT_LIB_PATH="-L$with_sqlite/lib $EXT_LIB_PATH"
439 SQLITE_LDFLAGS="-L$with_sqlite/lib"
440 SQLITE_CPPFLAGS="-I$with_sqlite/include"
442 LDFLAGS=$SAVE_LDFLAGS
443 CPPFLAGS=$SAVE_CPPFLAGS
447 [AC_MSG_RESULT([--with-sqlite not specified])
448 AC_CHECK_HEADERS(sqlite3.h, sqlite=true)])
449 AM_CONDITIONAL(HAVE_SQLITE, test x$sqlite = xtrue)
450 AC_SUBST(SQLITE_CPPFLAGS)
451 AC_SUBST(SQLITE_LDFLAGS)
455 AC_MSG_CHECKING(for postgres)
456 AC_ARG_WITH(postgres,
457 [ --with-postgres=PFX base of postgres installation],
458 [AC_MSG_RESULT("$with_postgres")
459 case $with_postgres in
463 AC_CHECK_HEADERS(postgresql/libpq-fe.h,
467 LDFLAGS="-L$with_postgres/lib $LDFLAGS"
468 CPPFLAGS="-I$with_postgres/include $CPPFLAGS"
469 AC_CHECK_HEADERS(postgresql/libpq-fe.h,
470 EXT_LIB_PATH="-L$with_postgres/lib $EXT_LIB_PATH"
471 POSTGRES_LDFLAGS="-L$with_postgres/lib"
472 POSTGRES_CPPFLAGS="-I$with_postgres/include"
474 LDFLAGS=$SAVE_LDFLAGS
475 CPPFLAGS=$SAVE_CPPFLAGS
479 [AC_MSG_RESULT([--with-postgres not specified])
480 AC_CHECK_HEADERS(postgresql/libpq-fe.h, postgres=true)])
481 AM_CONDITIONAL(HAVE_POSTGRES, test x$postgres = xtrue)
482 AC_SUBST(POSTGRES_CPPFLAGS)
483 AC_SUBST(POSTGRES_LDFLAGS)
485 # test for libz (maybe required for linking mysql)
487 AC_CHECK_LIB(z, compress,,zlib=0)
488 AM_CONDITIONAL(HAVE_ZLIB, test x$zlib = x1)
491 AC_MSG_ERROR([GNUnet requires zlib])
495 AC_CHECK_TYPES([sigset_t, off_t], [], [], [#include <sys/types.h>])
496 AC_CHECK_TYPES([size_t], [], [], [#include <stdio.h>])
498 if test "$build_target" = "mingw"
500 CYGWIN_MYSQL_MAGIC="#include <mysql/my_global.h>"
506 SAVE_LDFLAGS=$LDFLAGS
507 SAVE_CPPFLAGS=$CPPFLAGS
508 AC_MSG_CHECKING(for mysql)
510 [ --with-mysql=PFX base of MySQL installation],
511 [AC_MSG_RESULT("$with_mysql")
512 if test "$with_mysql" != "no"
514 if test "$with_mysql" != "yes"
516 LDFLAGS="-L$with_mysql/lib -L$with_mysql/lib/mysql $LDFLAGS $ZLIBS"
517 CPPFLAGS="-I$with_mysql/include $CPPFLAGS"
519 AC_CHECK_HEADERS(mysql/mysql.h,
520 AC_CHECK_LIB(mysqlclient, mysql_init,
521 MYSQL_LDFLAGS="-L$with_mysql/lib -L$with_mysql/lib/mysql"
522 MYSQL_CPPFLAGS="-I$with_mysql/include"
524 mysql=true), [], [$CYGWIN_MYSQL_MAGIC])
527 [AC_MSG_RESULT([--with-mysql not specified])
528 LDFLAGS="-L/usr/lib/mysql $LDFLAGS $ZLIBS"
529 AC_CHECK_LIB(mysqlclient, mysql_init,
530 [AC_CHECK_HEADERS(mysql/mysql.h,
531 MYSQL_LDFLAGS="-L/usr/lib/mysql"
534 , [], [$CYGWIN_MYSQL_MAGIC])])
537 AC_SUBST(MYSQL_LDFLAGS)
538 AC_SUBST(MYSQL_CPPFLAGS)
540 # additional version check for mysql
541 AC_ARG_ENABLE(mysql-version-check, [ --disable-mysql-version-check do not check MySQL version],, enable_mysql_version_check=yes)
542 if test "$mysql" = "true" -a "x$enable_mysql_version_check" = "xyes"
544 AC_MSG_CHECKING(mysql version)
545 AC_RUN_IFELSE([AC_LANG_PROGRAM(
546 [[$CYGWIN_MYSQL_MAGIC
547 #include <mysql/mysql.h>]],
548 [[if (MYSQL_VERSION_ID < 40100)
553 ],mysql=true,mysql=false)
554 if test "$mysql" = "false"
557 AC_MSG_RESULT([fail, >= 4.1 required])
562 AM_CONDITIONAL(HAVE_MYSQL, test x$mysql = xtrue)
563 AM_CONDITIONAL(HAVE_MYSQLE, test "0" = "1")
566 LDFLAGS=$SAVE_LDFLAGS
567 CPPFLAGS=$SAVE_CPPFLAGS
569 if test "$sqlite" = 0 -a "$mysql" = 0
571 AC_MSG_ERROR([GNUnet requires SQLite or MySQL])
576 AC_MSG_CHECKING([for libmicrohttpd])
577 AC_ARG_WITH(microhttpd,
578 [ --with-microhttpd=PFX base of libmicrohttpd installation],
579 [AC_MSG_RESULT([$with_microhttpd])
580 case $with_microhttpd in
584 AC_CHECK_HEADERS([microhttpd.h],
585 AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
586 AC_CHECK_LIB([microhttpd], [MHD_start_daemon],
588 [],[#include "src/include/platform.h"
589 #include <microhttpd.h>]),,
590 [#include "src/include/platform.h"])
593 LDFLAGS="-L$with_microhttpd/lib $LDFLAGS"
594 CPPFLAGS="-I$with_microhttpd/include $CPPFLAGS"
595 AC_CHECK_HEADERS(microhttpd.h,
596 AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
597 AC_CHECK_LIB([microhttpd], [MHD_start_daemon],
598 EXT_LIB_PATH="-L$with_microhttpd/lib $EXT_LIB_PATH"
600 [],[#include "src/include/platform.h"
601 #include <microhttpd.h>]),,
602 [#include "src/include/platform.h"])
606 [AC_MSG_RESULT([--with-microhttpd not specified])
607 AC_CHECK_HEADERS([microhttpd.h],
608 AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
609 AC_CHECK_LIB([microhttpd], [MHD_start_daemon],
611 [],[#include "src/include/platform.h"
612 #include <microhttpd.h>]),,
613 [#include "src/include/platform.h"])])
614 AM_CONDITIONAL(HAVE_MHD, test x$lmhd = x1)
615 AC_DEFINE_UNQUOTED([HAVE_MHD], $lmhd, [We have libmicrohttpd])
621 # check for python & pexpect (used for some testcases only)
622 AM_PATH_PYTHON([2.6],, [:])
623 AM_CONDITIONAL([HAVE_PYTHON], [test "$PYTHON" != :])
625 if test "$PYTHON" != :
627 AC_MSG_CHECKING([for pexpect])
628 $PYTHON -c "import pexpect" > /dev/null 2> /dev/null
630 AM_CONDITIONAL(HAVE_PYTHON_PEXPECT, test $PYEX -eq 0)
635 AC_MSG_RESULT([not found])
638 AM_CONDITIONAL(HAVE_PYTHON_PEXPECT, 0)
643 AM_GNU_GETTEXT([external])
644 AM_GNU_GETTEXT_VERSION([0.16.1])
649 # Checks for standard typedefs, structures, and compiler characteristics.
658 AC_CHECK_MEMBER([struct sockaddr_in.sin_len],
659 [ AC_DEFINE(HAVE_SOCKADDR_IN_SIN_LEN, 1, [Do we have sockaddr_in.sin_len?])
663 #include <sys/types.h>
664 #include <sys/socket.h>
665 #include <netinet/in.h>
670 # Checks for library functions.
671 AC_FUNC_CLOSEDIR_VOID
673 AC_PROG_GCC_TRADITIONAL
675 AC_FUNC_SELECT_ARGTYPES
685 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])
690 gn_user_home_dir="~/.gnunet"
691 AC_ARG_WITH(user-home-dir,
693 [--with-user-home-dir=DIR],
694 [default user home directory (~/.gnunet)]),
695 [gn_user_home_dir=$withval])
696 AC_SUBST(GN_USER_HOME_DIR, $gn_user_home_dir)
697 gn_daemon_home_dir="/var/lib/gnunet"
698 AC_ARG_WITH(daemon-home-dir,
700 [--with-daemon-home-dir=DIR],
701 [default daemon home directory (/var/lib/gnunet)]),
702 [gn_daemon_home_dir=$withval])
703 AC_SUBST(GN_DAEMON_HOME_DIR, $gn_daemon_home_dir)
704 gn_daemon_config_dir="/etc"
705 AC_ARG_WITH(daemon-config-dir,
707 [--with-daemon-config-dir=DIR],
708 [default daemon config directory (/etc)]),
709 [gn_daemon_config_dir=$withval])
710 AC_SUBST(GN_DAEMON_CONFIG_DIR, $gn_daemon_config_dir)
713 GN_LIBINTL="$LTLIBINTL"
714 AC_ARG_ENABLE(framework, [ --enable-framework enable Mac OS X framework build helpers],enable_framework_build=$enableval)
715 AM_CONDITIONAL(WANT_FRAMEWORK, test x$enable_framework_build = xyes)
716 if test x$enable_framework_build = xyes
718 AC_DEFINE([FRAMEWORK_BUILD], 1, [Build a Mac OS X Framework])
719 GN_INTLINCL='-I$(top_srcdir)/src/intlemu'
720 GN_LIBINTL='$(top_builddir)/src/intlemu/libintlemu.la -framework CoreFoundation'
721 AC_LIB_APPENDTOVAR([CPPFLAGS], [$GN_INTLINCL])
724 GN_LIB_LDFLAGS="-export-dynamic -no-undefined"
725 GN_PLUGIN_LDFLAGS="-export-dynamic -avoid-version -module -no-undefined"
727 AC_SUBST(GN_LIB_LDFLAGS)
728 AC_SUBST(GN_PLUGIN_LDFLAGS)
729 AC_SUBST(GN_INTLINCL)
735 AC_SUBST(EXT_LIB_PATH)
740 AC_SUBST(EXT_LIB_PATH)
744 AC_MSG_CHECKING(for sudo)
746 [ --with-sudo=PATH path to sudo binary (or just yes)],
747 [AC_MSG_RESULT("$with_sudo")
756 SUDO_BINARY=$with_sudo
760 [AC_MSG_RESULT([no])])
761 AC_SUBST(SUDO_BINARY)
764 # should 'make check' run tests?
765 AC_MSG_CHECKING(whether to run tests)
766 AC_ARG_ENABLE([testruns],
767 [AS_HELP_STRING([--disable-testruns], [disable running tests on make check (default is YES)])],
768 [enable_tests_run=${enableval}],
769 [enable_tests_run=yes])
770 AC_MSG_RESULT($enable_test_run)
771 AM_CONDITIONAL([ENABLE_TEST_RUN], [test "x$enable_tests_run" = "xyes"])
773 # should expensive tests be run?
774 AC_MSG_CHECKING(whether to run expensive tests)
775 AC_ARG_ENABLE([expensivetests],
776 [AS_HELP_STRING([--enable-expensive-tests], [enable running expensive testcases])],
777 [enable_expensive=${enableval}],
778 [enable_expensive=no])
779 AC_MSG_RESULT($enable_expensive)
780 AM_CONDITIONAL([HAVE_EXPENSIVE_TESTS], [test "x$enable_expensive" = "xyes"])
782 # should benchmarks be run?
783 AC_MSG_CHECKING(whether to run benchmarks during make check)
784 AC_ARG_ENABLE([benchmarks],
785 [AS_HELP_STRING([--enable-benchmarks], [enable running benchmarks during make check])],
786 [enable_benchmarks=${enableval}],
787 [enable_benchmarks=no])
788 AC_MSG_RESULT($enable_benchmarks)
789 AM_CONDITIONAL([HAVE_BENCHMARKS], [test "x$enable_benchmarks" = "xyes"])
791 # should experimental code be compiled (code that may not yet compile)?
792 AC_MSG_CHECKING(whether to compile experimental code)
793 AC_ARG_ENABLE([experimental],
794 [AS_HELP_STRING([--enable-experimental], [enable compiling experimental code])],
795 [enable_experimental=${enableval}],
796 [enable_experimental=no])
797 AC_MSG_RESULT($enable_experimental)
798 AM_CONDITIONAL([HAVE_EXPERIMENTAL], [test "x$enable_experimental" = "xyes"])
800 # should code be enabled that works around missing OS functionality on Windows?
801 # used for test cases
802 if test $build_target = "mingw"
806 AC_MSG_CHECKING(whether to enable windows workarounds)
807 AC_ARG_ENABLE([windows_workarounds],
808 [AS_HELP_STRING([--enable-windows_workarounds], [enable workarounds used on Windows (only useful for test cases)])],
809 [enable_workarounds=${enableval}],
810 [enable_workarounds=no])
811 AC_MSG_RESULT($enable_workarounds)
812 if test x$enable_windows_workarounds = "xyes"
819 AC_DEFINE_UNQUOTED([ENABLE_WINDOWS_WORKAROUNDS], $workarounds, [enable workarounds used on Windows (only useful for test cases)])
822 AC_MSG_CHECKING(whether to compile with support for code coverage analysis)
823 AC_ARG_ENABLE([coverage],
824 AS_HELP_STRING([--enable-coverage],
825 [compile the library with code coverage support]),
826 [use_gcov=${enableval}],
828 AC_MSG_RESULT($use_gcov)
829 AM_CONDITIONAL([USE_COVERAGE], [test "x$use_gcov" = "xyes"])
844 src/datacache/Makefile
845 src/datastore/Makefile
848 src/fragmentation/Makefile
852 src/include/gnunet_directories.h
853 src/hostlist/Makefile
857 src/peerinfo/Makefile
858 src/peerinfo-tool/Makefile
859 src/statistics/Makefile
860 src/template/Makefile
862 src/topology/Makefile
863 src/transport/Makefile
867 src/integration-tests/Makefile
869 pkgconfig/gnunetarm.pc
870 pkgconfig/gnunetblock.pc
871 pkgconfig/gnunetcore.pc
872 pkgconfig/gnunetdatacache.pc
873 pkgconfig/gnunetdatastore.pc
874 pkgconfig/gnunetdht.pc
875 pkgconfig/gnunetdhtlog.pc
876 pkgconfig/gnunetdv.pc
877 pkgconfig/gnunetfragmentation.pc
878 pkgconfig/gnunetfs.pc
879 pkgconfig/gnunethello.pc
880 pkgconfig/gnunetnat.pc
881 pkgconfig/gnunetnse.pc
882 pkgconfig/gnunetpeerinfo.pc
883 pkgconfig/gnunetstatistics.pc
884 pkgconfig/gnunettesting.pc
885 pkgconfig/gnunettransport.pc
886 pkgconfig/gnunetutil.pc
892 # warn user if mysql found but not used due to version
893 if test "$mysqlfail" = "true"
895 AC_MSG_NOTICE([NOTICE: MySQL found, but too old. MySQL support will not be compiled.])
899 if test "x$sqlite" = "x0"
901 AC_MSG_NOTICE([NOTICE: sqlite not found. sqLite support will not be compiled.])
904 if test "x$lmhd" != "x1"
906 AC_MSG_NOTICE([NOTICE: libmicrohttpd not found, http transport will not be installed.])
909 AC_MSG_NOTICE([NOTICE: Database support is set to MySQL: $mysql, SQLite: $sqlite, Postgres: $postgres])
911 if test "$enable_framework_build" = "yes"
913 AC_MSG_NOTICE([NOTICE: Mac OS X framework build enabled.])
916 AC_MSG_NOTICE([********************************************
917 You can compile GNUnet with
919 now. After that, run (if necessary as 'root')
921 to install everything. You may want to create a new user account
922 to run the GNUnet service:
924 You also need to create an configuration file that should
925 specify the path where GNUnet should store data. For example,
926 you could store in "/etc/gnunet.conf" the following lines:
929 SERVICEHOME = /var/lib/gnunet
930 DEFAULTCONFIG = /etc/gnunet.conf
932 Now, in order to start your peer, run as the 'gnunet' user
935 Each GNUnet user should also create an (at least initially) empty
938 touch $HOME/.gnunet/gnunet.conf
940 Optionally, download and compile:
941 - gnunet-gtk to get a GUI for file-sharing and configuration.
942 ********************************************])