-add ABE crypto module
[oweals/gnunet.git] / configure.ac
1 # This file is part of GNUnet.
2 # (C) 2001--2017 GNUnet e.V.
3 #
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 3, or (at your
7 # option) any later version.
8 #
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.
13 #
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., 51 Franklin Street, Fifth Floor,
17 # Boston, MA 02110-1301, USA.
18 #
19 #
20 # Process this file with autoconf to produce a configure script.
21 #
22 #
23 AC_PREREQ(2.61)
24 # Checks for programs.
25 AC_INIT([gnunet], [0.10.1], [bug-gnunet@gnu.org])
26
27 AC_CANONICAL_TARGET
28 AC_CANONICAL_HOST
29 AC_CANONICAL_SYSTEM
30
31 AM_INIT_AUTOMAKE
32 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
33 AC_CONFIG_HEADERS([gnunet_config.h])
34 AH_TOP([#define _GNU_SOURCE  1])
35 AC_CONFIG_MACRO_DIR([m4])
36 AC_PROG_AWK
37 AC_PROG_CC_C99
38 AC_PROG_CPP
39 AC_PROG_CXX
40 AC_PROG_OBJC
41 AC_PROG_INSTALL
42 AC_PROG_LN_S
43 AC_PROG_MAKE_SET
44 AM_PROG_CC_C_O
45 LT_INIT([disable-static dlopen win32-dll])
46 AC_SUBST(MKDIR_P)
47
48 # large file support
49 AC_SYS_LARGEFILE
50 AC_FUNC_FSEEKO
51
52
53 CFLAGS="-Wall $CFLAGS"
54 # use '-fno-strict-aliasing', but only if the compiler can take it
55 if gcc -fno-strict-aliasing -S -o /dev/null -xc /dev/null >/dev/null 2>&1;
56 then
57  CFLAGS="-fno-strict-aliasing $CFLAGS"
58 fi
59
60 # Use Linux interface name unless the OS has a different preference
61 DEFAULT_INTERFACE="\"eth0\""
62
63 funcstocheck="getnameinfo gethostname gethostbyname gethostbyaddr getaddrinfo"
64
65 # Srcdir in a form that native compiler understands (i.e. DOS path on W32)
66 native_srcdir=$srcdir
67
68 # Check system type
69 case "$host_os" in
70 *darwin* | *rhapsody* | *macosx*)
71      AC_DEFINE_UNQUOTED(DARWIN,1,[This is an Apple Darwin system])
72      CPPFLAGS="-D_APPLE_C_SOURCE $CPPFLAGS"
73      CFLAGS="-fno-common $CFLAGS"
74      AC_MSG_WARN([WARNING: The VPN application cannot be compiled on your OS])
75      build_target="darwin"
76      DEFAULT_INTERFACE="\"en0\""
77      LIBPREFIX=
78      DLLDIR=lib
79      UNIXONLY="#"
80      ;;
81 linux*)
82      AC_DEFINE_UNQUOTED(LINUX,1,[This is a Linux kernel])
83      build_target="linux"
84      LIBPREFIX=
85      DLLDIR=lib
86      UNIXONLY="#"
87      AC_PATH_XTRA
88      ;;
89 *freebsd*)
90      AC_DEFINE_UNQUOTED(SOMEBSD,1,[This is a BSD system])
91      AC_DEFINE_UNQUOTED(FREEBSD,1,[This is a FreeBSD system])
92      CFLAGS="-D_THREAD_SAFE $CFLAGS"
93      build_target="freebsd"
94      LIBPREFIX=
95      DLLDIR=lib
96      UNIXONLY="#"
97      ;;
98 *openbsd*)
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"
103      LIBPREFIX=
104      DLLDIR=lib
105      UNIXONLY="#"
106      ;;
107 *netbsd*)
108      AC_DEFINE_UNQUOTED(SOMEBSD,1,[This is a BSD system])
109      AC_DEFINE_UNQUOTED(NETBSD,1,[This is a NetBSD system])
110      LIBPREFIX=
111      DLLDIR=lib
112      UNIXONLY="#"
113      ;;
114 *solaris*)
115      AC_DEFINE_UNQUOTED(SOLARIS,1,[This is a Solaris system])
116      AC_DEFINE_UNQUOTED(_REENTRANT,1,[Need with solaris or errno doesnt work])
117      AC_CHECK_LIB(resolv, res_init)
118      AC_CHECK_LIB(rt, nanosleep)
119      build_target="solaris"
120      LIBPREFIX=
121      DLLDIR=lib
122      UNIXONLY="#"
123      ;;
124 *arm-linux*)
125      AC_DEFINE_UNQUOTED(LINUX,1,[This is a Linux kernel])
126      CFLAGS="-D_REENTRANT -fPIC -pipe $CFLAGS"
127      build_target="linux"
128      LIBPREFIX=
129      DLLDIR=lib
130      UNIXONLY="#"
131      ;;
132 *cygwin*)
133      AC_DEFINE_UNQUOTED(CYGWIN,1,[This is a Cygwin system])
134      AC_DEFINE_UNQUOTED(WINDOWS,1,[This is a Windows system])
135      AC_CHECK_LIB(intl, gettext)
136      CFLAGS="-mms-bitfields $CFLAGS"
137      build_target="cygwin"
138      LIBPREFIX=lib
139      DLLDIR=bin
140      AC_PROG_CXX
141      UNIXONLY=""
142      ;;
143 *mingw*)
144      AC_DEFINE_UNQUOTED(MINGW,1,[This is a MinGW system])
145      AC_DEFINE_UNQUOTED(WINDOWS,1,[This is a Windows system])
146      AC_DEFINE_UNQUOTED(_WIN32,1,[This is a Windows system])
147      AC_CHECK_LIB(intl, gettext)
148      LDFLAGS="$LDFLAGS -Wl,--export-all-symbols"
149      LIBS="$LIBS -lws2_32 -lplibc -lgnurx -lole32"
150      CFLAGS="-mms-bitfields $CFLAGS"
151      CPPFLAGS="-D_WIN32_WINNT=0x0501 -DHAVE_STAT64=1 -D__USE_MINGW_ANSI_STDIO=1 $CPPFLAGS"
152      build_target="mingw"
153      AC_PROG_CXX
154      LIBPREFIX=lib
155      DLLDIR=bin
156      UNIXONLY=""
157      funcstocheck=""
158      native_srcdir=$(cd $srcdir; pwd -W)
159      ;;
160 gnu*)
161      AC_DEFINE_UNQUOTED(GNU,1,[This is a GNU system])
162      build_target="gnu"
163      UNIXONLY="#"
164      ;;
165 *)
166      AC_MSG_RESULT(Unrecognised OS $host_os)
167      AC_DEFINE_UNQUOTED(OTHEROS,1,[Some strange OS])
168      UNIXONLY=""
169 ;;
170 esac
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)
173
174 # Disable TCP-based IPC on systems that support UNIX domain
175 # sockets in default configuratin:
176 AC_SUBST(UNIXONLY)
177
178
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")
187 AM_CONDITIONAL(GNU, test "$build_target" = "gnu")
188
189 AC_MSG_RESULT([$build_target])
190 AC_SUBST(build_target)
191 AM_CONDITIONAL([am__fastdepOBJC], false)
192 AC_UNALIGNED_64_ACCESS
193
194 # some other checks for standard libs
195 AC_SEARCH_LIBS([gethostbyname], [nsl ws2_32])
196 AC_CHECK_LIB(socket, socket)
197 AC_CHECK_LIB(m, log)
198 AC_CHECK_LIB(c, getloadavg, AC_DEFINE(HAVE_GETLOADAVG,1,[getloadavg supported]))
199
200 AC_CHECK_PROG(VAR_GETOPT_BINARY, getopt, true, false)
201 AM_CONDITIONAL(HAVE_GETOPT_BINARY, $VAR_GETOPT_BINARY)
202
203 AC_CHECK_PROG(VAR_SSH_BINARY,ssh,true,false)
204 AM_CONDITIONAL(HAVE_SSH_BINARY, $VAR_SSH_BINARY)
205 AM_CONDITIONAL(HAVE_SSH_KEY,  ssh -D 12345 -o "BatchMode yes" -o "UserKnownHostsFile /tmp/gnunet_test_cosks_ssh_garbage" -o "StrictHostKeyChecking no" 127.0.0.1 echo -n)
206 rm -f /tmp/gnunet_test_cosks_ssh_garbage
207
208
209 AC_CHECK_MEMBER(struct tm.tm_gmtoff,
210   [AC_DEFINE(HAVE_TM_GMTOFF, 1,
211      [Define if struct tm has the tm_gmtoff member.])],
212      ,
213      [#include <time.h>])
214
215 AC_CHECK_DECLS([_stati64])
216
217 # 'save' libs; only those libs found so far will be
218 # linked against _everywhere_.  For the others, we
219 # will be more selective!
220 SAVE_LIBS=$LIBS
221
222 # tests only run on Windows
223 if test "x$build_target" = "xmingw"
224 then
225   AC_CHECK_LIB(plibc, plibc_init, [], [AC_MSG_ERROR([GNUnet requires PlibC on Windows])])
226   AC_CHECK_LIB(gnurx, regexec, [], [AC_MSG_ERROR([GNUnet requires libgnurx on Windows])])
227 fi
228
229 # libgcrypt
230 gcrypt=0
231 NEED_LIBGCRYPT_API=1
232 NEED_LIBGCRYPT_VERSION=1.6.0
233
234
235 AM_PATH_LIBGCRYPT("$NEED_LIBGCRYPT_API:$NEED_LIBGCRYPT_VERSION", gcrypt=1)
236 AC_CHECK_DECLS([gcry_mpi_set_opaque_copy], [], [], [[#include <gcrypt.h>]])
237
238 if test $gcrypt = 0
239 then
240   AC_MSG_ERROR([[
241 ***
242 *** You need libgcrypt to build this program.
243 **  This library is for example available at
244 ***   ftp://ftp.gnupg.org/gcrypt/libgcrypt/
245 *** (at least version $NEED_LIBGCRYPT_VERSION (API $NEED_LIBGCRYPT_API)
246 ***  is required.)
247 ***]])
248 fi
249 AC_DEFINE_UNQUOTED([NEED_LIBGCRYPT_VERSION], "$NEED_LIBGCRYPT_VERSION", [required libgcrypt version])
250
251 # Adam shostack suggests the following for Windows:
252 # -D_FORTIFY_SOURCE=2 -fstack-protector-all
253 AC_ARG_ENABLE(gcc-hardening,
254    AS_HELP_STRING(--enable-gcc-hardening, enable compiler security checks),
255 [if test x$enableval = xyes; then
256     CFLAGS="$CFLAGS -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fstack-protector-all"
257     CFLAGS="$CFLAGS -fwrapv -fPIE -Wstack-protector"
258     CFLAGS="$CFLAGS --param ssp-buffer-size=1"
259     LDFLAGS="$LDFLAGS -pie"
260 fi])
261
262
263 # Linker hardening options
264 # Currently these options are ELF specific - you can't use this with MacOSX
265 AC_ARG_ENABLE(linker-hardening,
266   AS_HELP_STRING(--enable-linker-hardening, enable linker security fixups),
267 [if test x$enableval = xyes; then
268    LDFLAGS="$LDFLAGS -z relro -z now"
269 fi])
270
271
272 AC_ARG_ENABLE(sanitizer,
273   AS_HELP_STRING(--enable-sanitizer, enable Address Sanitizer and Undefined Behavior Sanitizer),
274 [if test x$enableval = xyes; then
275    LDFLAGS="$CFLAGS -fsanitize=address,undefined -fno-omit-frame-pointer"
276 fi])
277
278
279 extra_logging=GNUNET_NO
280 AC_ARG_ENABLE([logging],
281    AS_HELP_STRING([--enable-logging@<:@=value@:>@],[Enable logging calls. Possible values: yes,no,verbose,veryverbose ('yes' is the default)]),
282    [AS_IF([test "x$enableval" = "xyes"], [],
283           [test "x$enableval" = "xno"], [AC_DEFINE([GNUNET_CULL_LOGGING],[],[Define to cull all logging calls])],
284           [test "x$enableval" = "xverbose"], [extra_logging=GNUNET_YES]
285           [test "x$enableval" = "xveryverbose"], [extra_logging=\(GNUNET_YES+1\)])
286    ], [])
287 AC_DEFINE_UNQUOTED([GNUNET_EXTRA_LOGGING],[$extra_logging],[1 if extra logging is enabled, 2 for very verbose extra logging, 0 otherwise])
288
289 # should memory poisoning be enabled?
290 AC_MSG_CHECKING(whether to poison freed memory)
291 AC_ARG_ENABLE([poisoning],
292    [AS_HELP_STRING([--enable-poisoning], [enable poisoning of freed memory (good for debugging)])],
293    [enable_poisoning=${enableval}],
294    [
295      if test "x$extra_logging" != "xGNUNET_NO"; then
296        enable_poisoning="defaults to yes (extra logging is enabled)"
297      else
298        enable_poisoning=no
299      fi
300    ])
301 AC_MSG_RESULT($enable_poisoning)
302 if test ! "x$enable_poisoning" = "xno"; then
303   enable_poisoning=1
304 else
305   enable_poisoning=0
306 fi
307 AC_DEFINE_UNQUOTED([ENABLE_POISONING],[$enable_poisoning],[1 if freed memory should be poisoned, 0 otherwise])
308
309 if test $build = $target
310 then
311 AC_MSG_CHECKING([for working HMAC])
312 AC_LANG_PUSH(C)
313 LIBS="$LIBS $LIBGCRYPT_LIBS"
314 CFLAGS="$CFLAGS $LIBGCRYPT_CFLAGS"
315 AC_RUN_IFELSE(
316   [AC_LANG_PROGRAM([#include <gcrypt.h>
317         #include <stdio.h>], [[
318         gcry_md_hd_t mac;
319
320         unsigned char data[] = { 0xbf, 0x16, 0x6e, 0x46, 0x3a, 0x6c, 0xf3, 0x93, 0xa7, 0x72,
321             0x11, 0xa1, 0xdc, 0x0b, 0x07, 0xdb, 0x1a, 0x5e, 0xd9, 0xb9, 0x81, 0xbe,
322             0xea, 0xe4, 0x31, 0x5f, 0x24, 0xff, 0xfe, 0x50, 0x8a, 0xde };
323         unsigned char key[] = { 0xfc, 0x62, 0x76, 0x35 };
324         unsigned char result[] = {0xa2, 0xb, 0x1, 0xd9, 0xc0, 0x8b, 0x5a, 0x12, 0x80,
325             0xd5, 0x50, 0x12, 0x8e, 0xd0, 0x5b, 0xb6, 0x5c, 0x87, 0x24, 0xe2, 0xd0,
326             0xd2, 0xaf, 0x63, 0xae, 0xd1, 0xd6, 0x64, 0x14, 0xe3, 0x6e, 0x61, 0x5b,
327             0xd, 0xba, 0x17, 0x7d, 0xd3, 0x10, 0xb1, 0x37, 0x41, 0x91, 0x7d, 0xeb,
328             0x1, 0x4d, 0x71, 0xe8, 0x59, 0x71, 0x42, 0x8e, 0xd6, 0xf3, 0x29, 0x3b,
329             0x90, 0xf2, 0xd1, 0xaf, 0x65, 0x1e, 0xb3};
330
331         if (!gcry_check_version (GCRYPT_VERSION))
332         {
333           fprintf (stderr, "Version mismatch %s <-> %s \n", gcry_check_version (NULL), GCRYPT_VERSION);
334           return 1;
335         }
336
337         gcry_control (GCRYCTL_DISABLE_SECMEM, 0);
338         gcry_control (GCRYCTL_INITIALIZATION_FINISHED, 0);
339
340         if (gcry_md_open(&mac, GCRY_MD_SHA512, GCRY_MD_FLAG_HMAC) != GPG_ERR_NO_ERROR)
341         {
342           fprintf (stderr, "gcry_md_open error\n");
343           return 2;
344         }
345
346         gcry_md_setkey (mac, key, sizeof (key));
347         gcry_md_write (mac, data, sizeof (data));
348
349         if (memcmp(gcry_md_read (mac, 0), result, gcry_md_get_algo_dlen (gcry_md_get_algo (mac))) != 0)
350         {
351           fprintf (stderr, "memcmp error\n");
352           return 3;
353         }
354
355         gcry_md_close (mac);
356
357         return 0;
358     ]])],
359   [AC_MSG_RESULT([yes])],
360   [
361    RESULT=$?
362    if test $RESULT = 3
363    then
364      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.])
365    fi
366    if test $RESULT = 2
367    then
368      AC_MSG_FAILURE([HMAC test failed])
369    fi
370    if test $RESULT = 1
371    then
372      AC_MSG_FAILURE([libgcrypt header version does not match library version])
373    fi
374   ],
375   [AC_MSG_RESULT([cross compiling, test skipped])])
376 AC_LANG_POP(C)
377 fi      # $build = $target
378
379 # check for bluetooth library
380 bluetooth=0
381 AC_CHECK_LIB(bluetooth, ba2str,[AC_CHECK_HEADER([bluetooth/bluetooth.h],bluetooth=1)])
382 if test "$build_target" = "mingw"
383 then
384   bluetooth=1
385 fi
386 AM_CONDITIONAL(HAVE_LIBBLUETOOTH, [test "$bluetooth" = 1])
387 if test "$bluetooth" = 1
388 then
389   AC_DEFINE([HAVE_LIBBLUETOOTH],[1],[Have bluetooth library])
390 else
391   AC_DEFINE([HAVE_LIBBLUETOOTH],[0],[Lacking bluetooth library])
392 fi
393
394 # check for jansson library
395 jansson=0
396 AC_CHECK_HEADER([jansson.h],jansson=1)
397 AM_CONDITIONAL(HAVE_JANSSON, [test "$jansson" = 1])
398 if test "x$jansson" = x1
399 then
400   AC_DEFINE([HAVE_JANSSON],[1],[Have jansson library])
401 else
402   AC_DEFINE([HAVE_JANSSON],[0],[Lacking jansson library])
403 fi
404
405 # check for libpulse(audio) library
406 pulse=0
407 AC_CHECK_LIB(pulse,pa_stream_peek,
408   [AC_CHECK_HEADER([pulse/simple.h],pulse=1)])
409 if test "$build_target" = "mingw"
410 then
411   pulse=0
412 fi
413 if test "$pulse" = 1
414 then
415   AC_DEFINE([HAVE_PULSE],[1],[Have libpulse(audio) library])
416 fi
417
418 # check for libopus(audio) library
419 opus=0
420 AC_CHECK_LIB(opus,opus_decode_float,
421   [AC_CHECK_HEADER([opus/opus.h],
422     [AC_CHECK_DECL([OPUS_SET_GAIN],[opus=1],[],[[#include <opus/opus.h>]]
423     )]
424   )]
425 )
426 if test "$opus" = 1
427 then
428   AC_DEFINE([HAVE_OPUS],[1],[Have libopus library])
429 fi
430
431 # libogg
432 AC_CHECK_LIB(ogg, ogg_stream_flush_fill,
433         [AC_CHECK_HEADERS([ogg/ogg.h],
434           AM_CONDITIONAL(HAVE_OGG, true)
435           ogg=1
436           AC_DEFINE(HAVE_OGG,1,[Have ogg]),
437           AM_CONDITIONAL(HAVE_OGG, false)
438           ogg=0
439           AC_DEFINE(HAVE_OGG,0,[lacking ogg]))],
440         AM_CONDITIONAL(HAVE_OGG, false)
441         ogg=0)
442
443 PKG_CHECK_MODULES([ABE], [glib-2.0])
444 # check for pbc library
445 pbc=0
446 AC_CHECK_HEADER([pbc/pbc.h],pbc=1)
447 AM_CONDITIONAL(HAVE_PBC, [test "$pbc" = 1])
448 if test "x$pbc" = x1
449 then
450   AC_DEFINE([HAVE_PBC],[1],[Have pbc library])
451 else
452   AC_DEFINE([HAVE_PBC],[0],[Lacking pbc library])
453 fi
454
455
456
457 gst=0
458 PKG_CHECK_MODULES(
459   [GST],
460   [glib-2.0 gobject-2.0 gstreamer-1.0 gstreamer-app-1.0 gstreamer-audio-1.0],
461   [
462     gst=1
463     AC_MSG_RESULT(ok)
464   ], [
465     gst=0
466     AC_MSG_RESULT(not found)
467   ])
468
469 # Pulse Audio
470 if test "x$pulse" != "x1" -o "x$opus" != "x1" -o "x$ogg" != "x1"
471 then
472  if test "x$gst" != "x1"
473  then
474   conversation_backend=none
475   AM_CONDITIONAL(BUILD_PULSE_HELPERS, false)
476   AM_CONDITIONAL(BUILD_GST_HELPERS, false)
477   AM_CONDITIONAL(BUILD_EXPERIMENTAL_HELPERS, false)
478  else
479    conversation_backend=gst
480    AM_CONDITIONAL(BUILD_PULSE_HELPERS, false)
481    AM_CONDITIONAL(BUILD_GST_HELPERS, true)
482    AM_CONDITIONAL(BUILD_EXPERIMENTAL_HELPERS, false)
483  fi
484 else
485
486  conversation_backend=pulse
487  AM_CONDITIONAL(BUILD_PULSE_HELPERS, true)
488  AM_CONDITIONAL(BUILD_GST_HELPERS, false)
489  AM_CONDITIONAL(BUILD_EXPERIMENTAL_HELPERS, false)
490 fi
491
492 # libgnurl
493 LIBGNURL_CHECK_CONFIG(,7.34.0,gnurl=1,gnurl=0)
494 if test "$gnurl" = 1
495 then
496         AM_CONDITIONAL(HAVE_LIBGNURL, true)
497         AC_DEFINE([HAVE_LIBGNURL],[1],[Have libgnurl])
498 else
499         AM_CONDITIONAL(HAVE_LIBGNURL, false)
500         AC_DEFINE([HAVE_LIBGNURL],[0],[Lacking libgnurl])
501 fi
502
503 SAVE_CPPFLAGS=$CPPFLAGS
504 CPPFLAGS="$LIBGNURL_CPPFLAGS $LIBCURL_CPPFLAGS $CPPFLAGS"
505 LIBS="$LIBGNURL $LIBCURL $LIBS"
506
507 # libcurl-gnutls
508 LIBCURL_CHECK_CONFIG(,7.34.0,[curl=true],[curl=false])
509 if test "x$curl" = xtrue
510 then
511
512  AC_CHECK_HEADERS([curl/curl.h],
513   AC_CHECK_DECLS(CURLINFO_TLS_SESSION,[curl=true],[curl=false],[[#include <curl/curl.h>]]),
514   [curl=false])
515  AC_CHECK_HEADERS([gnurl/curl.h],
516   AC_CHECK_DECLS(CURLINFO_TLS_SESSION,[curl=true],,[[#include <gnurl/curl.h>]]))
517  # need libcurl-gnutls.so, everything else is not acceptable
518  AC_CHECK_LIB([curl-gnutls],[curl_easy_getinfo],,[curl=false])
519  # cURL must support CURLINFO_TLS_SESSION, version >= 7.34
520 fi
521
522 # Check for curl/curl.h and gnurl/curl.h so we can use #ifdef
523 # HAVE_CURL_CURL_H later (the above LIBCURL_CHECK_CONFIG accepted
524 # *either* header set).
525 AC_CHECK_HEADERS([curl/curl.h],,
526   curl=false
527   AC_CHECK_HEADERS([gnurl/curl.h],,
528   gnurl=false))
529
530
531
532 if test x$curl = xfalse
533 then
534         AM_CONDITIONAL(HAVE_LIBCURL, false)
535 if test "$gnurl" = 0
536 then
537         AC_MSG_WARN([ERROR: GNUnet requires libcurl-gnutls or gnurl >= 7.34])
538 fi
539 else
540         AM_CONDITIONAL(HAVE_LIBCURL, true)
541         AC_DEFINE([HAVE_LIBCURL],[1],[Have CURL])
542 fi
543
544
545 # restore LIBS & CPPFLAGS
546 LIBS=$SAVE_LIBS
547 CPPFLAGS=$SAVE_CPPFLAGS
548
549 AC_CHECK_HEADERS([glpk.h],[glpk=true],[gplk=false])
550 # GLPK must support glpk_init_env, version >= 4.43
551 AC_CHECK_LIB([glpk],[glp_init_env],,[gplk=false])
552 # GLPK must support atm MLP presolving, version >= 4.32
553 AC_CHECK_MEMBERS(glp_iocp.presolve,,[gplk=false],[[#include <glpk.h>]])
554 if test x$gplk = xfalse
555 then
556         AM_CONDITIONAL(HAVE_LIBGLPK, false)
557         AC_MSG_WARN([ERROR: GNUnet requires GLPK  >= 4.32])
558 else
559         AM_CONDITIONAL(HAVE_LIBGLPK, true)
560         AC_DEFINE([HAVE_LIBGLPK],[1],[Have GLPK])
561 fi
562
563
564 AC_CHECK_HEADERS([nss.h],[nss=true],[nss=false])
565 if test x$nss = xfalse
566 then
567         AM_CONDITIONAL(HAVE_GLIBCNSS, false)
568         AC_MSG_WARN([ERROR: No GNU libc nss header, will not build NSS plugin])
569 else
570         AM_CONDITIONAL(HAVE_GLIBCNSS, true)
571 fi
572
573
574
575 # test for kvm and kstat (for CPU stats under BSD/Solaris)
576 AC_CHECK_LIB([kvm],[kvm_open])
577 AC_CHECK_LIB([kstat],[kstat_open])
578
579
580 # should the build process be restricted to the code required
581 # for GNU Taler wallets?
582 AC_MSG_CHECKING(whether to compile GNU Taler Wallet library ONLY)
583 AC_ARG_ENABLE([taler-wallet],
584    [AS_HELP_STRING([--enable-taler-wallet], [only compile for Taler wallet])],
585    [taler_only=${enableval}],
586    [taler_only=no])
587 AC_MSG_RESULT($taler_only)
588 if test "x$taler_only" = "xyes"
589 then
590   AM_CONDITIONAL([TALER_ONLY],true)
591   AC_DEFINE([TALER_WALLET_ONLY],[1],[Compiling for Taler wallet])
592 else
593   AM_CONDITIONAL([TALER_ONLY],false)
594   AC_DEFINE([TALER_WALLET_ONLY],[0],[Canonical compilation])
595 fi
596
597 # test for libextractor
598 extractor=0
599 AC_MSG_CHECKING(for libextractor)
600 AC_ARG_WITH(extractor,
601    [  --with-extractor=PFX    base of libextractor installation],
602    [AC_MSG_RESULT([$with_extractor])
603     case $with_extractor in
604       no)
605         ;;
606       yes)
607         AC_CHECK_HEADERS(extractor.h,
608           AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
609             extractor=1))
610         ;;
611       *)
612         LDFLAGS="-L$with_extractor/lib $LDFLAGS"
613         CPPFLAGS="-I$with_extractor/include $CPPFLAGS"
614         AC_CHECK_HEADERS(extractor.h,
615           AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
616             EXT_LIB_PATH="-L$with_extractor/lib $EXT_LIB_PATH"
617             extractor=1))
618         ;;
619     esac
620    ],
621    [AC_MSG_RESULT([--with-extractor not specified])
622     AC_CHECK_HEADERS(extractor.h,
623      AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
624       extractor=1))])
625 # restore LIBS
626 LIBS=$SAVE_LIBS
627
628 if test "$extractor" != 1
629 then
630  AM_CONDITIONAL(HAVE_LIBEXTRACTOR, false)
631  AC_DEFINE([HAVE_LIBEXTRACTOR],[0],[Lacking libextractor])
632 else
633  AM_CONDITIONAL(HAVE_LIBEXTRACTOR, true)
634  AC_DEFINE([HAVE_LIBEXTRACTOR],[1],[Have libextractor])
635 fi
636
637
638 if test "$taler_only" != yes
639 then
640
641 # Check for libltdl header (#2999)
642 ltdl=0
643 AC_MSG_CHECKING(for libltdl)
644 AC_ARG_WITH(ltdl,
645    [  --with-ltdl=PFX    base of libltdl installation],
646    [AC_MSG_RESULT([$with_ltdl])
647     case $with_ltdl in
648       no)
649         ;;
650       yes)
651         AC_CHECK_HEADERS(ltdl.h,
652           AC_CHECK_LIB([ltdl], [lt_dlopenext],
653             ltdl=1))
654         ;;
655       *)
656         LDFLAGS="-L$with_ltdl/lib $LDFLAGS"
657         CPPFLAGS="-I$with_ltdl/include $CPPFLAGS"
658         AC_CHECK_HEADERS(ltdl.h,
659           AC_CHECK_LIB([ltdl], [lt_dlopenext],
660             EXT_LIB_PATH="-L$with_ltdl/lib $EXT_LIB_PATH"
661             ltdl=1))
662         ;;
663     esac
664    ],
665    [AC_MSG_RESULT([--with-ltdl not specified])
666     AC_CHECK_HEADERS(ltdl.h,
667      AC_CHECK_LIB([ltdl], [lt_dlopenext],
668       ltdl=1))])
669 if test x$ltdl = x1
670 then
671  AC_MSG_RESULT([libltdl found])
672 else
673  AC_MSG_ERROR([GNUnet requires libltdl (from GNU libtool), try installing libltdl-dev])
674 fi
675 # restore LIBS
676 LIBS=$SAVE_LIBS
677
678
679 # libidn
680 AC_MSG_CHECKING([if Libidn can be used])
681 AC_ARG_WITH(libidn, AC_HELP_STRING([--with-libidn=[DIR]],
682                                     [Support IDN (needs GNU Libidn)]),
683 libidn=$withval, libidn=yes)
684 if test "$libidn" != "no"; then
685   if test "$libidn" != "yes"; then
686      LDFLAGS="${LDFLAGS} -L$libidn/lib"
687      CPPFLAGS="${CPPFLAGS} -I$libidn/include"
688   fi
689 fi
690 libidn=no
691 AC_CHECK_HEADER(idna.h,
692   AC_CHECK_LIB(idn, stringprep_check_version,
693     [libidn=yes LIBS="${LIBS} -lidn"], []), [])
694 if test "$libidn" != "yes"; then
695   AC_MSG_FAILURE([GNUnet requires libidn.
696 libidn-1.13 should be sufficient, newer versions work too.])
697 fi
698 AC_MSG_RESULT($libidn)
699
700
701 # test for zlib
702 SAVE_LDFLAGS=$LDFLAGS
703 SAVE_CPPFLAGS=$CPPFLAGS
704 AC_ARG_WITH(zlib,
705             [  --with-zlib[[=DIR]]       use libz in DIR],
706             [AS_IF([test "$withval" = "no"],
707                    [AC_MSG_ERROR([GNUnet requires zlib])],
708                    [test "$withval" != "yes"],
709                    [
710                      Z_DIR=$withval
711                      CPPFLAGS="${CPPFLAGS} -I$withval/include"
712                      LDFLAGS="${LDFLAGS} -L$withval/lib"
713                    ])
714             ])
715 AC_CHECK_HEADER(zlib.h,
716                 [],
717                 [AC_MSG_ERROR([GNUnet requires zlib])])
718 AC_CHECK_LIB(z, compress2,
719              [
720               AC_DEFINE([HAVE_ZLIB], [], [Have compression library])
721               if test "x${Z_DIR}" != "x"; then
722                       Z_CFLAGS="-I${Z_DIR}/include"
723                       Z_LIBS="-L${Z_DIR}/lib -lz"
724               else
725                       Z_LIBS="-lz"
726               fi],
727               [AC_MSG_ERROR([GNUnet requires zlib])])
728 AC_SUBST(Z_CFLAGS)
729 AC_SUBST(Z_LIBS)
730
731 if test "$enable_shared" = "no"
732 then
733  AC_MSG_ERROR([GNUnet only works with shared libraries. Sorry.])
734 fi
735
736
737
738 # restore LIBS
739 LIBS=$SAVE_LIBS
740
741
742 fi
743
744 # check for iconv
745 AM_ICONV
746
747 # test for libunistring
748 gl_LIBUNISTRING
749 if test $HAVE_LIBUNISTRING != yes; then
750  AC_MSG_ERROR([GNUnet requires libunistring])
751 fi
752 # under emscripten, $gl_libunistring_hexversion is undefined
753 if test "$taler_only" != yes; then
754 if test "x$gl_libunistring_hexversion" = "x" || test "$gl_libunistring_hexversion" -le 2305; then
755  AC_MSG_ERROR([GNUnet requires libunistring >= 0.9.1.1])
756 fi
757 fi
758 AC_CHECK_HEADERS([unistr.h],,AC_MSG_ERROR([Compiling GNUnet requires unistr.h (from libunistring) to be installed]))
759
760 # restore LIBS
761 LIBS=$SAVE_LIBS
762
763
764
765 # Checks for standard header files.
766 AC_HEADER_DIRENT
767 AC_HEADER_STDC
768
769 # Check for headers that are ALWAYS required
770 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]))
771
772
773
774 # Checks for headers that are only required on some systems or opional (and where we do NOT abort if they are not there)
775 AC_CHECK_HEADERS([malloc.h malloc/malloc.h malloc/malloc_np.h 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 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 sys/ucred.h endian.h sys/endian.h execinfo.h byteswap.h])
776
777 # FreeBSD requires something more funky for netinet/in_systm.h and netinet/ip.h...
778 AC_CHECK_HEADERS([sys/types.h netinet/in_systm.h netinet/in.h netinet/ip.h],,,
779 [#ifdef HAVE_SYS_TYPES_H
780 #include <sys/types.h>
781 #endif
782 #ifdef HAVE_NETINET_IN_SYSTM_H
783 #include <netinet/in_systm.h>
784 #endif
785 #ifdef HAVE_NETINET_IN_H
786 #include <netinet/in.h>
787 #endif
788 ])
789
790 SAVE_LDFLAGS=$LDFLAGS
791 SAVE_CPPFLAGS=$CPPFLAGS
792
793 # test for sqlite
794 sqlite=false
795 AC_MSG_CHECKING(for SQLite)
796 AC_ARG_WITH(sqlite,
797   [  --with-sqlite=PFX       base of SQLite installation],
798   [AC_MSG_RESULT("$with_sqlite")
799    case $with_sqlite in
800    no)
801      ;;
802    yes)
803     AC_CHECK_HEADERS(sqlite3.h,
804      sqlite=true)
805      ;;
806    *)
807     LDFLAGS="-L$with_sqlite/lib $LDFLAGS"
808     CPPFLAGS="-I$with_sqlite/include $CPPFLAGS"
809     AC_CHECK_HEADERS(sqlite3.h,
810      EXT_LIB_PATH="-L$with_sqlite/lib $EXT_LIB_PATH"
811      SQLITE_LDFLAGS="-L$with_sqlite/lib"
812      SQLITE_CPPFLAGS="-I$with_sqlite/include"
813      sqlite=true)
814     LDFLAGS=$SAVE_LDFLAGS
815     CPPFLAGS=$SAVE_CPPFLAGS
816     ;;
817    esac
818   ],
819   [AC_MSG_RESULT([--with-sqlite not specified])
820     AC_CHECK_HEADERS(sqlite3.h, sqlite=true)])
821 AM_CONDITIONAL(HAVE_SQLITE, test x$sqlite = xtrue)
822 AC_SUBST(SQLITE_CPPFLAGS)
823 AC_SUBST(SQLITE_LDFLAGS)
824
825 LDFLAGS=$SAVE_LDFLAGS
826 CPPFLAGS=$SAVE_CPPFLAGS
827
828 # test for postgres
829 postgres=false
830 # even running the check for postgres breaks emscripten ...
831 if test "$taler_only" != yes; then
832   AX_LIB_POSTGRESQL([9.5])
833   if test "$found_postgresql" = "yes"; then
834     CPPFLAGS="$CPPFLAGS $POSTGRESQL_CPPFLAGS"
835     AC_CHECK_HEADERS([libpq-fe.h],
836       postgres=true)
837   fi
838 fi
839 AM_CONDITIONAL(HAVE_POSTGRESQL, test x$postgres = xtrue)
840
841
842 LDFLAGS=$SAVE_LDFLAGS
843 CPPFLAGS=$SAVE_CPPFLAGS
844
845 # mysql & windows
846 AC_CHECK_TYPES([sigset_t, off_t], [], [], [#include <sys/types.h>])
847 AC_CHECK_TYPES([size_t], [], [], [#include <stdio.h>])
848
849 if test "$build_target" = "mingw"
850 then
851   CYGWIN_MYSQL_MAGIC="#include <mysql/my_global.h>"
852 fi
853
854 # test for mysql
855 mysql=false
856 mysqlfail=false
857 SAVE_LDFLAGS=$LDFLAGS
858 SAVE_CPPFLAGS=$CPPFLAGS
859 AC_MSG_CHECKING(for mysql)
860 AC_ARG_WITH(mysql,
861   [  --with-mysql=PFX        base of MySQL installation],
862   [AC_MSG_RESULT([$with_mysql])
863    case $with_mysql in
864    no)
865       ;;
866    yes|"")
867       AC_CHECK_HEADERS(mysql/mysql.h,
868        AC_CHECK_LIB(mysqlclient, mysql_init,
869
870        mysql=true), [], [$CYGWIN_MYSQL_MAGIC])
871       ;;
872    *)
873       LDFLAGS="-L$with_mysql/lib -L$with_mysql/lib/mysql $LDFLAGS $ZLIBS"
874       CPPFLAGS="-I$with_mysql/include $CPPFLAGS"
875       AC_CHECK_HEADERS(mysql/mysql.h,
876        AC_CHECK_LIB(mysqlclient, mysql_init,
877         MYSQL_LDFLAGS="-L$with_mysql/lib -L$with_mysql/lib/mysql"
878         MYSQL_CPPFLAGS="-I$with_mysql/include"
879
880         mysql=true), [], [$CYGWIN_MYSQL_MAGIC])
881       ;;
882    esac
883   ],
884   [AC_MSG_RESULT([--with-mysql not specified])
885    if test -d "/usr/lib64/mysql"; then
886     MYSQL_LIBDIR="/usr/lib64/mysql"
887    elif test -d "/usr/lib/mysql"; then
888     MYSQL_LIBDIR="/usr/lib/mysql"
889    else
890     MYSQL_LIBDIR="/usr/lib"
891    fi
892    LDFLAGS="-L$MYSQL_LIBDIR $LDFLAGS $ZLIBS"
893    AC_CHECK_LIB(mysqlclient, mysql_init,
894     [AC_CHECK_HEADERS(mysql/mysql.h,
895       MYSQL_LDFLAGS="-L$MYSQL_LIBDIR"
896       mysql=true
897
898      , [], [$CYGWIN_MYSQL_MAGIC])])
899   ])
900
901 AC_SUBST(MYSQL_LDFLAGS)
902 AC_SUBST(MYSQL_CPPFLAGS)
903
904 # additional version check for mysql
905 AC_ARG_ENABLE(mysql-version-check, [  --disable-mysql-version-check  do not check MySQL version],, enable_mysql_version_check=yes)
906 if test "$mysql" = "true" -a "x$enable_mysql_version_check" = "xyes"
907 then
908   AC_MSG_CHECKING(mysql version)
909   AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
910     [[$CYGWIN_MYSQL_MAGIC
911       #include <mysql/mysql.h>]],
912     [[
913       #if (MYSQL_VERSION_ID < 40100)
914       #error needs at least version >= 4.1
915       #endif
916       int main () { return 0; }
917     ]])
918     ],mysql=true,mysql=false)
919   if test "$mysql" = "false"
920   then
921     mysqlfail=true
922     AC_MSG_RESULT([fail, >= 4.1 required])
923   else
924     AC_MSG_RESULT(ok)
925   fi
926 fi
927 AM_CONDITIONAL(HAVE_MYSQL, test x$mysql = xtrue)
928 AM_CONDITIONAL(HAVE_MYSQLE, test "0" = "1")
929 # restore LIBS
930 LIBS=$SAVE_LIBS
931 LDFLAGS=$SAVE_LDFLAGS
932 CPPFLAGS=$SAVE_CPPFLAGS
933
934 if test "$sqlite" = 0 -a "$mysql" = 0
935 then
936  AC_MSG_ERROR([GNUnet requires SQLite or MySQL])
937 fi
938
939 # libmicrohttpd
940 lmhd=0
941 AC_MSG_CHECKING([for libmicrohttpd])
942 AC_ARG_WITH(microhttpd,
943    [  --with-microhttpd=PFX   base of libmicrohttpd installation],
944    [AC_MSG_RESULT([$with_microhttpd])
945     case $with_microhttpd in
946       no)
947         ;;
948       yes|"")
949         AC_CHECK_HEADERS([microhttpd.h],
950           AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
951             AC_CHECK_LIB([microhttpd], [MHD_get_fdset2],
952               [AC_MSG_CHECKING([for libmicrohttpd >= 0.9.42])
953               AC_COMPILE_IFELSE([AC_LANG_SOURCE([
954                 #include "$native_srcdir/src/include/platform.h"
955                 #include <microhttpd.h>
956                 #if (MHD_VERSION < 0x0094200)
957                 #error needs at least version 0.9.42
958                 #endif
959                 int main () { return 0; }
960                ])],
961                [AC_MSG_RESULT(ok)
962                 lmhd=1],
963                [AC_MSG_RESULT(failed)])]),
964             [],[#include "$native_srcdir/src/include/platform.h"
965                 #include <microhttpd.h>]),,
966             [#include "$native_srcdir/src/include/platform.h"])
967         ;;
968       *)
969         LDFLAGS="-L$with_microhttpd/lib $LDFLAGS"
970         CPPFLAGS="-I$with_microhttpd/include $CPPFLAGS"
971         AC_CHECK_HEADERS(microhttpd.h,
972           AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
973             AC_CHECK_LIB([microhttpd], [MHD_get_fdset2],
974               EXT_LIB_PATH="-L$with_microhttpd/lib $EXT_LIB_PATH"
975               [AC_MSG_CHECKING([for libmicrohttpd >= 0.9.42])
976                AC_COMPILE_IFELSE([AC_LANG_SOURCE([
977                 #include "$native_srcdir/src/include/platform.h"
978                 #include <microhttpd.h>
979                 #if (MHD_VERSION < 0x0094200)
980                 #error needs at least version 0.9.42
981                 #endif
982                 int main () { return 0; }
983                ])],
984                [AC_MSG_RESULT(ok)
985                 lmhd=1],
986                [AC_MSG_RESULT(failed)])]),
987             [],[#include "$native_srcdir/src/include/platform.h"
988                 #include <microhttpd.h>]),,
989             [#include "$native_srcdir/src/include/platform.h"])
990         ;;
991     esac
992    ],
993    [AC_MSG_RESULT([--with-microhttpd not specified])
994     AC_CHECK_HEADERS([microhttpd.h],
995       AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
996         AC_CHECK_LIB([microhttpd], [MHD_get_fdset2],
997           [AC_MSG_CHECKING([for libmicrohttpd >= 0.9.42])
998               AC_COMPILE_IFELSE([AC_LANG_SOURCE([
999                 #include "$native_srcdir/src/include/platform.h"
1000                 #include <microhttpd.h>
1001                 #if (MHD_VERSION < 0x0094200)
1002                 #error needs at least version 0.9.42
1003                 #endif
1004                ])],
1005                [AC_MSG_RESULT(ok)
1006                 lmhd=1],
1007                [AC_MSG_RESULT(failed)])]),
1008         [],[#include "$native_srcdir/src/include/platform.h"
1009             #include <microhttpd.h>]),,
1010        [#include "$native_srcdir/src/include/platform.h"])])
1011 AM_CONDITIONAL(HAVE_MHD, test x$lmhd = x1)
1012 AC_DEFINE_UNQUOTED([HAVE_MHD], $lmhd, [We have libmicrohttpd])
1013
1014 AM_CONDITIONAL(HAVE_JSON, [test x$jansson = x1])
1015
1016 # restore LIBS
1017 LIBS=$SAVE_LIBS
1018
1019 # check for python & pexpect (used for some testcases only)
1020 AM_PATH_PYTHON([2.6],, [:])
1021 AM_CONDITIONAL([HAVE_PYTHON], [test "$PYTHON" != :])
1022
1023 # check for gettext
1024 AM_GNU_GETTEXT([external])
1025 AM_GNU_GETTEXT_VERSION([0.18.1])
1026
1027 # Checks for standard typedefs, structures, and compiler characteristics.
1028 AC_TYPE_PID_T
1029 AC_TYPE_SIZE_T
1030 AC_TYPE_MODE_T
1031 AC_HEADER_TIME
1032 AC_HEADER_STAT
1033 AC_HEADER_STDBOOL
1034 AC_STRUCT_TM
1035
1036 AC_CHECK_MEMBER([struct sockaddr_in.sin_len],
1037    [ AC_DEFINE(HAVE_SOCKADDR_IN_SIN_LEN, 1, [Do we have sockaddr_in.sin_len?])
1038    ],
1039    [],
1040    [
1041       #include <sys/types.h>
1042       #include <sys/socket.h>
1043       #include <netinet/in.h>
1044    ])
1045
1046 AC_CHECK_MEMBER([struct sockaddr_un.sun_len],
1047    [ AC_DEFINE(HAVE_SOCKADDR_UN_SUN_LEN, 1, [Do we have sockaddr_un.sun_len?])
1048    ],
1049    [],
1050    [
1051       #include <sys/types.h>
1052       #include <sys/socket.h>
1053       #include <sys/un.h>
1054    ])
1055
1056
1057
1058 # Checks for library functions.
1059 AC_FUNC_CLOSEDIR_VOID
1060 AC_FUNC_FORK
1061 AC_PROG_GCC_TRADITIONAL
1062 AC_FUNC_MEMCMP
1063 AC_FUNC_SELECT_ARGTYPES
1064 AC_FUNC_CHOWN
1065
1066 AC_TYPE_SIGNAL
1067 AC_FUNC_STAT
1068 AC_FUNC_STRFTIME
1069 AC_FUNC_VPRINTF
1070 AC_HEADER_SYS_WAIT
1071 AC_TYPE_OFF_T
1072 AC_TYPE_UID_T
1073 AC_CHECK_FUNCS([atoll stat64 strnlen mremap getrlimit setrlimit sysconf initgroups strndup gethostbyname2 getpeerucred getpeereid setresuid $funcstocheck getifaddrs freeifaddrs getresgid mallinfo malloc_size malloc_usable_size getrusage random srandom stat statfs statvfs wait4])
1074
1075 # restore LIBS
1076 LIBS=$SAVE_LIBS
1077
1078 GN_INTLINCL=""
1079 GN_LIBINTL="$LTLIBINTL"
1080 AC_ARG_ENABLE(framework, [  --enable-framework      enable Mac OS X framework build helpers],enable_framework_build=$enableval)
1081 AM_CONDITIONAL(WANT_FRAMEWORK, test x$enable_framework_build = xyes)
1082 if test x$enable_framework_build = xyes
1083 then
1084   AC_DEFINE([FRAMEWORK_BUILD], 1, [Build a Mac OS X Framework])
1085   GN_INTLINCL='-I$(top_srcdir)/src/intlemu'
1086   GN_LIBINTL='$(top_builddir)/src/intlemu/libintlemu.la -framework CoreFoundation'
1087   AC_LIB_APPENDTOVAR([CPPFLAGS], [$GN_INTLINCL])
1088 fi
1089
1090 GN_LIB_LDFLAGS="-export-dynamic -no-undefined"
1091 GN_PLUGIN_LDFLAGS="-export-dynamic -avoid-version -module -no-undefined"
1092
1093 AC_SUBST(GN_LIB_LDFLAGS)
1094 AC_SUBST(GN_PLUGIN_LDFLAGS)
1095 AC_SUBST(GN_INTLINCL)
1096 AC_SUBST(GN_LIBINTL)
1097
1098 AC_SUBST(CPPFLAGS)
1099 AC_SUBST(LIBS)
1100 AC_SUBST(LDFLAGS)
1101 AC_SUBST(EXT_LIB_PATH)
1102 AC_SUBST(EXT_LIBS)
1103
1104 AC_SUBST(LIBPREFIX)
1105 AC_SUBST(DLLDIR)
1106 AC_SUBST(EXT_LIB_PATH)
1107
1108
1109 # test for sudo
1110 AC_MSG_CHECKING(for sudo)
1111 AC_ARG_WITH(sudo,
1112   [  --with-sudo=PATH       path to sudo binary (or just yes)],
1113   [AC_MSG_RESULT("$with_sudo")
1114    case $with_sudo in
1115    no)
1116      SUDO_BINARY=
1117      ;;
1118    yes)
1119      SUDO_BINARY=sudo
1120      ;;
1121    *)
1122      SUDO_BINARY=$with_sudo
1123     ;;
1124    esac
1125   ],
1126   [AC_MSG_RESULT([no])])
1127 AC_SUBST(SUDO_BINARY)
1128 AM_CONDITIONAL([HAVE_SUDO], [test "x$SUDO_BINARY" != "x" -o -w /])
1129
1130
1131 # test for nssdir
1132 AC_MSG_CHECKING(with nssdir)
1133 AC_ARG_WITH(nssdir,
1134   [  --with-nssdir=PATH       where to install NSS plugins],
1135   [AC_MSG_RESULT("$with_nssdir")
1136    case $with_nssdir in
1137    no)
1138      NSS_DIR=
1139      install_nss=0
1140      ;;
1141    yes)
1142      NSS_DIR="/lib"
1143      install_nss=1
1144      ;;
1145    *)
1146      NSS_DIR=$with_nssdir
1147      install_nss=1
1148     ;;
1149    esac
1150   ],
1151   [
1152 # This test is inappropriate when installation with DESTDIR is
1153 # run much later and uid will be root when needed. Enabling this
1154 # code breaks the gnunet.ebuild for gentoo.
1155 #
1156 #  if test "x$SUDO_BINARY" != "x" -o -w /
1157 #  then
1158      NSS_DIR="/lib"
1159      install_nss=1
1160      AC_MSG_RESULT([yes, to /lib])
1161 #  else
1162 #    NSS_DIR=
1163 #    install_nss=0
1164 #    AC_MSG_RESULT([no])
1165 #  fi
1166   ])
1167 AC_SUBST(NSS_DIR)
1168 AM_CONDITIONAL([INSTALL_NSS], [test "x$install_nss" != "x0"])
1169
1170 # test for gnunetdns group name
1171 GNUNETDNS_GROUP=gnunetdns
1172 AC_MSG_CHECKING(for gnunetdns group name)
1173 AC_ARG_WITH(gnunetdns,
1174   [  --with-gnunetdns=GRPNAME       name for gnunetdns group],
1175   [AC_MSG_RESULT("$with_gnunetdns")
1176    case $with_gnunetdns in
1177    no)
1178      GNUNETDNS_GROUP=gnunet
1179      ;;
1180    yes)
1181      GNUNETDNS_GROUP=gnunetdns
1182      ;;
1183    *)
1184      GNUNETDNS_GROUP=$with_gnunetdns
1185     ;;
1186    esac
1187   ],
1188   [AC_MSG_RESULT([gnunetdns])])
1189 AC_SUBST(GNUNETDNS_GROUP)
1190
1191
1192
1193 # gnutls
1194 gnutls=0
1195 gnutls_dane=0
1196 AC_MSG_CHECKING(for gnutls)
1197 AC_ARG_WITH(gnutls,
1198    [  --with-gnutls=PFX   base of gnutls installation],
1199    [AC_MSG_RESULT([$with_gnutls])
1200     case $with_gnutls in
1201       no)
1202         ;;
1203       yes)
1204         AC_CHECK_HEADERS([gnutls/abstract.h],
1205             AC_CHECK_LIB([gnutls], [gnutls_priority_set],
1206              gnutls=true))
1207         AC_CHECK_HEADERS([gnutls/dane.h],
1208             AC_CHECK_LIB([gnutls-dane], [dane_verify_crt_raw],
1209               gnutls_dane=1))
1210         ;;
1211       *)
1212         LDFLAGS="-L$with_gnutls/lib $LDFLAGS"
1213         CPPFLAGS="-I$with_gnutls/include $CPPFLAGS"
1214         AC_CHECK_HEADERS([gnutls/abstract.h],
1215             AC_CHECK_LIB([gnutls], [gnutls_priority_set],
1216               EXT_LIB_PATH="-L$with_gnutls/lib $EXT_LIB_PATH"
1217               gnutls=true))
1218         AC_CHECK_HEADERS([gnutls/dane.h],
1219             AC_CHECK_LIB([gnutls-dane], [dane_verify_crt_raw],
1220               gnutls_dane=1))
1221         ;;
1222     esac
1223    ],
1224    [AC_MSG_RESULT([--with-gnutls not specified])
1225     AC_CHECK_HEADERS([gnutls/abstract.h],
1226         AC_CHECK_LIB([gnutls], [gnutls_priority_set],
1227           gnutls=true))
1228     AC_CHECK_HEADERS([gnutls/dane.h],
1229         AC_CHECK_LIB([gnutls-dane], [dane_verify_crt_raw],
1230                      gnutls_dane=1))
1231    ])
1232 AM_CONDITIONAL(HAVE_GNUTLS, test x$gnutls = xtrue)
1233 AC_DEFINE_UNQUOTED([HAVE_GNUTLS], $gnutls, [We have GnuTLS])
1234 AM_CONDITIONAL(HAVE_GNUTLS_DANE, test x$gnutls_dane = x1)
1235 AC_DEFINE_UNQUOTED([HAVE_GNUTLS_DANE], $gnutls_dane, [We have GnuTLS with DANE support])
1236
1237
1238 # Test if we are building for superMUC
1239 AC_MSG_CHECKING(if GNUnet is being configured to run on the SuperMUC)
1240 AC_ARG_ENABLE([supermuc],
1241     [AS_HELP_STRING([--enable-supermuc],
1242        [build GNUnet with support to run on the SuperMUC (default is NO)])],
1243     [if test "x$enable_supermuc" = "xno"
1244      then
1245        supermuc=0
1246      else
1247        supermuc=1
1248      fi],
1249     [supermuc=0
1250      enable_supermuc=no])
1251 AC_MSG_RESULT($enable_SUPERMUC)
1252 AM_CONDITIONAL([ENABLE_SUPERMUC], [test "x$supermuc" = "x1"])
1253 AC_DEFINE_UNQUOTED([ENABLE_SUPERMUC], [$supermuc], [Build with support for SuperMUC])
1254
1255 # Check if NSE has to send timestamp information to testbed logger for
1256 # generating histogram of messages received
1257 AC_MSG_CHECKING(if NSE has to send timestamp information to testbed logger)
1258 AC_ARG_ENABLE([nse-histogram],
1259     [AS_HELP_STRING([--enable-nse-histogram],
1260        [have NSE send timestamp information to testbed logger for generating
1261        histogram of received messages.  NOT useful for production (default is
1262        NO)])],
1263     [if test "x$enableval" = "xno"
1264      then
1265        nse_histogram=0
1266      else
1267        nse_histogram=1
1268      fi],
1269     [nse_histogram=0
1270      enable_nse_histogram=no])
1271 AC_MSG_RESULT($enable_nse_histogram)
1272 AM_CONDITIONAL([ENABLE_NSE_HISTOGRAM], [test "x$nse_histogram" = "x1"])
1273 AC_DEFINE_UNQUOTED([ENABLE_NSE_HISTOGRAM], [$nse_histogram],
1274                    [have NSE send timestamp information to testbed logger])
1275
1276 # should 'make check' run tests?
1277 AC_MSG_CHECKING(whether to run tests)
1278 AC_ARG_ENABLE([testruns],
1279    [AS_HELP_STRING([--disable-testruns], [disable running tests on make check (default is YES)])],
1280    [enable_tests_run=${enableval}],
1281    [enable_tests_run=yes])
1282 AC_MSG_RESULT($enable_test_run)
1283 AM_CONDITIONAL([ENABLE_TEST_RUN], [test "x$enable_tests_run" = "xyes"])
1284
1285
1286 # should monkey be used when running (certain) services?
1287 AC_MSG_CHECKING(whether to run with monkey)
1288 AC_ARG_ENABLE([monkey],
1289    [AS_HELP_STRING([--enable-monkey], [enable running with monkey])],
1290    [enable_monkey=${enableval}],
1291    [enable_monkey=no])
1292 AC_MSG_RESULT($enable_monkey)
1293 AM_CONDITIONAL([ENABLE_MONKEY], [test "x$enable_monkey" = "xyes"])
1294 if test "x$enable_monkey" = "xyes"
1295 then
1296   MONKEYPREFIX="pathologist -d $(eval echo ${datarootdir}/gnunet/gnunet.sqlite) -p 30 --"
1297 else
1298   MONKEYPREFIX=""
1299 fi
1300 AC_SUBST(MONKEYPREFIX)
1301
1302
1303 # should expensive tests be run?
1304 AC_MSG_CHECKING(whether to run expensive tests)
1305 AC_ARG_ENABLE([expensivetests],
1306    [AS_HELP_STRING([--enable-expensivetests], [enable running expensive testcases])],
1307    [enable_expensive=${enableval}],
1308    [enable_expensive=no])
1309 AC_MSG_RESULT($enable_expensive)
1310 AM_CONDITIONAL([HAVE_EXPENSIVE_TESTS], [test "x$enable_expensive" = "xyes"])
1311
1312 # should ports be open for Java services?
1313 AC_MSG_CHECKING(whether to enable ports for gnunet-java)
1314 AC_ARG_ENABLE([javaports],
1315    [AS_HELP_STRING([--enable-javaports], [use non-zero ports for services with Java bindings (default is NO)])],
1316    [enable_java_ports=${enableval}],
1317    [enable_java_ports=no])
1318 AC_MSG_RESULT($enable_java_ports)
1319 if test "x$enable_java_ports" = "xyes"
1320 then
1321   JAVAPORT=""
1322 else
1323   JAVAPORT="$UNIXONLY"
1324 fi
1325 AC_SUBST(JAVAPORT)
1326
1327 # should benchmarks be run?
1328 AC_MSG_CHECKING(whether to run benchmarks during make check)
1329 AC_ARG_ENABLE([benchmarks],
1330    [AS_HELP_STRING([--enable-benchmarks], [enable running benchmarks during make check])],
1331    [enable_benchmarks=${enableval}],
1332    [enable_benchmarks=no])
1333 AC_MSG_RESULT($enable_benchmarks)
1334 AM_CONDITIONAL([HAVE_BENCHMARKS], [test "x$enable_benchmarks" = "xyes"])
1335
1336 # should gnunet-testing be compiled
1337 AC_MSG_CHECKING(wether to compile gnunet-testing)
1338 AC_ARG_ENABLE([testing],
1339    [AS_HELP_STRING([--disable-testing], [do not build gnunet-testing])],
1340    [enable_testing=${enableval}],
1341    [enable_testing=yes])
1342 AC_MSG_RESULT($enable_testing)
1343 AM_CONDITIONAL([HAVE_TESTING], [test "x$enable_testing" = "xyes"])
1344
1345 # should experimental code be compiled (code that may not yet compile)?
1346 AC_MSG_CHECKING(whether to compile experimental code)
1347 AC_ARG_ENABLE([experimental],
1348    [AS_HELP_STRING([--enable-experimental], [enable compiling experimental code])],
1349    [enable_experimental=${enableval}],
1350    [enable_experimental=no])
1351 AC_MSG_RESULT($enable_experimental)
1352 AM_CONDITIONAL([HAVE_EXPERIMENTAL], [test "x$enable_experimental" = "xyes"])
1353
1354 # should malicious code be compiled (should only be used for testing)?
1355 AC_MSG_CHECKING(whether to compile malicious code)
1356 AC_ARG_ENABLE([malicious],
1357    [AS_HELP_STRING([--enable-malicious], [enable compiling malicious code])],
1358    [if test "x$enableval" = "xno"
1359      then
1360        malicious=0
1361      else
1362        malicious=1
1363      fi],
1364    [malicious=0
1365     enable_malicious=no])
1366 AC_MSG_RESULT($enable_malicious)
1367 AM_CONDITIONAL([ENABLE_MALICIOUS], [test 1=$malicious])
1368 AC_DEFINE_UNQUOTED([ENABLE_MALICIOUS], [$malicious],
1369                    [enable compilation of malicious code])
1370
1371 # should services be started by default when a peer starts?  Some services may
1372 # choose to never start by default and it is upto the service/module developer to
1373 # decide it by having "AUTOSTART = NO" instead of "AUTOSTART = @AUTOSTART@" in
1374 # the service/module's conf.in file.
1375 AUTOSTART="YES"
1376 AC_MSG_CHECKING(whether to auto-start peer's services by default)
1377 AC_ARG_ENABLE([autostart],
1378    [AS_HELP_STRING([--disable-autostart], [do not start peer's services by default])],
1379    [enable_autostart=${enableval}
1380     if test "x$enable_autostart" == "xno"
1381     then
1382         AUTOSTART="NO"
1383     fi
1384    ],
1385    [enable_autostart=yes])
1386 AC_MSG_RESULT($enable_autostart)
1387 #AM_CONDITIONAL([HAVE_AUTOSTART], [test "x$enable_autostart" = "xyes"])
1388 AC_SUBST(AUTOSTART)
1389
1390 # should memory statistics be kept (very expensive CPU-wise!)
1391 AC_MSG_CHECKING(whether to create expensive statistics on memory use)
1392 AC_ARG_ENABLE([heapstats],
1393    [AS_HELP_STRING([--enable-heapstats], [enable expensive heap statistics])],
1394    [enable_heapstats=1],
1395    [enable_heapstats=0])
1396 AC_MSG_RESULT($enable_heapstats)
1397 AC_DEFINE_UNQUOTED([ENABLE_HEAP_STATISTICS],$enable_heapstats,[enable expensive heap statistics])
1398
1399 # should code be enabled that works around missing OS functionality on Windows?
1400 # used for test cases
1401 if test $build_target = "mingw"
1402 then
1403         workarounds=1
1404
1405 AC_LINK_IFELSE(
1406  [AC_LANG_PROGRAM(
1407   [#include <ws2tcpip.h>
1408   ],[
1409   int s = socket (0, 0, 0);])
1410  ],[
1411   AC_DEFINE_UNQUOTED([HAVE_SOCKET],1,[Define this if socket() is available])
1412  ],[
1413   AC_DEFINE_UNQUOTED([HAVE_SOCKET],0,[Define this if socket() is available])
1414  ])
1415
1416 AC_LINK_IFELSE(
1417  [AC_LANG_PROGRAM(
1418   [#include <ws2tcpip.h>
1419   ],[
1420   int s = select (0, NULL, NULL, NULL, NULL);])
1421  ],[
1422   AC_DEFINE_UNQUOTED([HAVE_SELECT],1,[Define this if select() is available])
1423  ],[
1424   AC_DEFINE_UNQUOTED([HAVE_SELECT],0,[Define this if select() is available])
1425  ])
1426
1427 AC_LINK_IFELSE(
1428  [AC_LANG_PROGRAM(
1429   [#include <ws2tcpip.h>
1430   ],[
1431   struct in_addr i;
1432   char *s = inet_ntoa (i);])
1433  ],[
1434   AC_DEFINE_UNQUOTED([HAVE_INET_NTOA],1,[Define this if inet_ntoa() is available])
1435  ],[
1436   AC_DEFINE_UNQUOTED([HAVE_INET_NTOA],0,[Define this if inet_ntoa() is available])
1437  ])
1438
1439 AC_LINK_IFELSE(
1440  [AC_LANG_PROGRAM(
1441   [#include <ws2tcpip.h>
1442   ],[
1443   int s = getnameinfo (NULL, 0, NULL, 0, NULL, 0, 0);])
1444  ],[
1445   AC_DEFINE_UNQUOTED([HAVE_GETNAMEINFO],1,[Define this if getnameinfo() is available])
1446  ],[
1447   AC_DEFINE_UNQUOTED([HAVE_GETNAMEINFO],0,[Define this if getnameinfo() is available])
1448  ])
1449
1450 AC_LINK_IFELSE(
1451  [AC_LANG_PROGRAM(
1452   [#include <ws2tcpip.h>
1453   ],[
1454   int s = gethostname (NULL, 0);])
1455  ],[
1456   AC_DEFINE_UNQUOTED([HAVE_GETHOSTNAME],1,[Define this if gethostname() is available])
1457  ],[
1458   AC_DEFINE_UNQUOTED([HAVE_GETHOSTNAME],0,[Define this if gethostname() is available])
1459  ])
1460
1461 AC_LINK_IFELSE(
1462  [AC_LANG_PROGRAM(
1463   [#include <ws2tcpip.h>
1464   ],[
1465   void *s = gethostbyname (NULL);])
1466  ],[
1467   AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYNAME],1,[Define this if gethostbyname() is available])
1468  ],[
1469   AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYNAME],0,[Define this if gethostbyname() is available])
1470  ])
1471
1472 AC_LINK_IFELSE(
1473  [AC_LANG_PROGRAM(
1474   [#include <ws2tcpip.h>
1475   ],[
1476   void *s = gethostbyaddr (NULL, 0, 0);])
1477  ],[
1478   AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYADDR],1,[Define this if gethostbyaddr() is available])
1479  ],[
1480   AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYADDR],0,[Define this if gethostbyaddr() is available])
1481  ])
1482
1483 AC_LINK_IFELSE(
1484  [AC_LANG_PROGRAM(
1485   [#include <ws2tcpip.h>
1486   ],[
1487   int s = getaddrinfo (NULL, NULL, NULL, NULL);])
1488  ],[
1489   AC_DEFINE_UNQUOTED([HAVE_GETADDRINFO],1,[Define this if getaddrinfo() is available])
1490  ],[
1491   AC_DEFINE_UNQUOTED([HAVE_GETADDRINFO],1,[Define this if getaddrinfo() is available])
1492  ])
1493
1494 else
1495   AC_MSG_CHECKING(whether to enable windows workarounds)
1496   AC_ARG_ENABLE([windows_workarounds],
1497      [AS_HELP_STRING([--enable-windows_workarounds], [enable workarounds used on Windows (only useful for test cases)])],
1498      [enable_workarounds=${enableval}],
1499      [enable_workarounds=no])
1500   AC_MSG_RESULT($enable_workarounds)
1501   if test x$enable_windows_workarounds = "xyes"
1502   then
1503      workarounds=1
1504   else
1505      workarounds=0
1506    fi
1507 fi
1508 AC_DEFINE_UNQUOTED([ENABLE_WINDOWS_WORKAROUNDS], $workarounds, [enable workarounds used on Windows (only useful for test cases)])
1509
1510 # gcov compilation
1511 AC_MSG_CHECKING(whether to compile with support for code coverage analysis)
1512 AC_ARG_ENABLE([coverage],
1513               AS_HELP_STRING([--enable-coverage],
1514                              [compile the library with code coverage support]),
1515               [use_gcov=${enableval}],
1516               [use_gcov=no])
1517 AC_MSG_RESULT($use_gcov)
1518 AM_CONDITIONAL([USE_COVERAGE], [test "x$use_gcov" = "xyes"])
1519
1520
1521 # version info
1522 AC_PATH_PROG(svnversioncommand, svnversion)
1523 AC_PATH_PROG(gitcommand, git)
1524 AC_MSG_CHECKING(for source being under a VCS)
1525 svn_version=
1526 gitsvn_version=
1527 AS_IF([test ! "X$svnversioncommand" = "X"],
1528 [
1529   svn_version=$(cd $srcdir ; $svnversioncommand -n 2>/dev/null)
1530 ])
1531 AS_IF([test ! "X$gitcommand" = "X"],
1532 [
1533   gitsvn_version=$(cd $srcdir ; git log -1 2>/dev/null | grep "git-svn-id" | sed -e 's/.*@\([[0-9]]\+\) .*/\1/')
1534 ])
1535 AS_IF([test "X$svn_version" = "X" -o "X$svn_version" = "Xexported" -o "X$svn_version" = "XUnversioned directory"],
1536 [
1537   AS_IF([test "X$gitsvn_version" = "X"],
1538   [
1539     vcs_name="no"
1540     vcs_version="\"release\""
1541   ],
1542   [
1543     vcs_name="yes, git-svn"
1544     vcs_version="\"svn-r$gitsvn_version\""
1545   ])
1546 ],
1547 [
1548   vcs_name="yes, svn"
1549   vcs_version="\"svn-r$svn_version\""
1550 ])
1551 AC_MSG_RESULT($vcs_name)
1552
1553 AC_MSG_CHECKING(VCS version)
1554 AC_MSG_RESULT($vcs_version)
1555 AC_DEFINE_UNQUOTED(VCS_VERSION, [$vcs_version], [VCS revision/hash or tarball version])
1556
1557 AC_CONFIG_FILES([
1558 Makefile
1559 contrib/Makefile
1560 doc/Makefile
1561 doc/man/Makefile
1562 doc/doxygen/Makefile
1563 m4/Makefile
1564 po/Makefile.in
1565 src/Makefile
1566 src/arm/Makefile
1567 src/arm/arm.conf
1568 src/ats/Makefile
1569 src/ats/ats.conf
1570 src/ats-tool/Makefile
1571 src/ats-tests/Makefile
1572 src/auction/Makefile
1573 src/block/Makefile
1574 src/cadet/Makefile
1575 src/cadet/cadet.conf
1576 src/core/Makefile
1577 src/core/core.conf
1578 src/consensus/Makefile
1579 src/consensus/consensus.conf
1580 src/conversation/Makefile
1581 src/conversation/conversation.conf
1582 src/curl/Makefile
1583 src/datacache/Makefile
1584 src/datastore/Makefile
1585 src/datastore/datastore.conf
1586 src/dht/Makefile
1587 src/dht/dht.conf
1588 src/dns/Makefile
1589 src/dns/dns.conf
1590 src/dv/Makefile
1591 src/dv/dv.conf
1592 src/exit/Makefile
1593 src/fragmentation/Makefile
1594 src/fs/Makefile
1595 src/fs/fs.conf
1596 src/gns/Makefile
1597 src/gns/gns.conf
1598 src/gns/nss/Makefile
1599 src/gnsrecord/Makefile
1600 src/hello/Makefile
1601 src/identity/Makefile
1602 src/identity/identity.conf
1603 src/include/Makefile
1604 src/integration-tests/Makefile
1605 src/json/Makefile
1606 src/jsonapi/Makefile
1607 src/hostlist/Makefile
1608 src/multicast/Makefile
1609 src/multicast/multicast.conf
1610 src/my/Makefile
1611 src/mysql/Makefile
1612 src/namecache/Makefile
1613 src/namecache/namecache.conf
1614 src/namestore/Makefile
1615 src/namestore/namestore.conf
1616 src/nat/Makefile
1617 src/nat/nat.conf
1618 src/nat-auto/Makefile
1619 src/nat-auto/nat-auto.conf
1620 src/nse/Makefile
1621 src/nse/nse.conf
1622 src/peerinfo/Makefile
1623 src/peerinfo/peerinfo.conf
1624 src/peerinfo-tool/Makefile
1625 src/peerstore/Makefile
1626 src/peerstore/peerstore.conf
1627 src/pq/Makefile
1628 src/psycutil/Makefile
1629 src/psyc/Makefile
1630 src/psyc/psyc.conf
1631 src/psycstore/Makefile
1632 src/psycstore/psycstore.conf
1633 src/pt/Makefile
1634 src/regex/Makefile
1635 src/regex/regex.conf
1636 src/revocation/Makefile
1637 src/revocation/revocation.conf
1638 src/rps/Makefile
1639 src/rps/rps.conf
1640 src/secretsharing/Makefile
1641 src/secretsharing/secretsharing.conf
1642 src/scalarproduct/Makefile
1643 src/scalarproduct/scalarproduct.conf
1644 src/set/Makefile
1645 src/set/set.conf
1646 src/social/Makefile
1647 src/social/social.conf
1648 src/sq/Makefile
1649 src/statistics/Makefile
1650 src/statistics/statistics.conf
1651 src/template/Makefile
1652 src/testbed/Makefile
1653 src/testbed/testbed.conf
1654 src/testbed-logger/Makefile
1655 src/testbed-logger/testbed-logger.conf
1656 src/testing/Makefile
1657 src/topology/Makefile
1658 src/transport/Makefile
1659 src/transport/transport.conf
1660 src/tun/Makefile
1661 src/util/Makefile
1662 src/util/resolver.conf
1663 src/vpn/Makefile
1664 src/vpn/vpn.conf
1665 src/zonemaster/Makefile
1666 src/zonemaster/zonemaster.conf
1667 src/rest/Makefile
1668 src/identity-provider/Makefile
1669 pkgconfig/Makefile
1670 pkgconfig/gnunetarm.pc
1671 pkgconfig/gnunetats.pc
1672 pkgconfig/gnunetblock.pc
1673 pkgconfig/gnunetcadet.pc
1674 pkgconfig/gnunetconsensus.pc
1675 pkgconfig/gnunetconversation.pc
1676 pkgconfig/gnunetcore.pc
1677 pkgconfig/gnunetdatacache.pc
1678 pkgconfig/gnunetdatastore.pc
1679 pkgconfig/gnunetdht.pc
1680 pkgconfig/gnunetdns.pc
1681 pkgconfig/gnunetdnsparser.pc
1682 pkgconfig/gnunetdnsstub.pc
1683 pkgconfig/gnunetdv.pc
1684 pkgconfig/gnunetenv.pc
1685 pkgconfig/gnunetfragmentation.pc
1686 pkgconfig/gnunetfs.pc
1687 pkgconfig/gnunetgns.pc
1688 pkgconfig/gnunethello.pc
1689 pkgconfig/gnunetidentity.pc
1690 pkgconfig/gnunetmicrophone.pc
1691 pkgconfig/gnunetmulticast.pc
1692 pkgconfig/gnunetmysql.pc
1693 pkgconfig/gnunetnamestore.pc
1694 pkgconfig/gnunetnat.pc
1695 pkgconfig/gnunetnse.pc
1696 pkgconfig/gnunetpeerinfo.pc
1697 pkgconfig/gnunetpq.pc
1698 pkgconfig/gnunetpsyc.pc
1699 pkgconfig/gnunetpsycstore.pc
1700 pkgconfig/gnunetregex.pc
1701 pkgconfig/gnunetrevocation.pc
1702 pkgconfig/gnunetrps.pc
1703 pkgconfig/gnunetscalarproduct.pc
1704 pkgconfig/gnunetset.pc
1705 pkgconfig/gnunetsocial.pc
1706 pkgconfig/gnunetspeaker.pc
1707 pkgconfig/gnunetstatistics.pc
1708 pkgconfig/gnunettestbed.pc
1709 pkgconfig/gnunettesting.pc
1710 pkgconfig/gnunettransport.pc
1711 pkgconfig/gnunettun.pc
1712 pkgconfig/gnunetutil.pc
1713 pkgconfig/gnunetvpn.pc
1714 ])
1715 AC_OUTPUT
1716
1717 # Finally: summary!
1718
1719 # warn user if mysql found but not used due to version
1720 if test "$mysqlfail" = "true"
1721 then
1722   AC_MSG_NOTICE([WARNING: MySQL found, but too old. MySQL support will not be compiled.])
1723 fi
1724
1725 # sqlite
1726 if test "x$sqlite" = "x0"
1727 then
1728   AC_MSG_ERROR([ERROR: sqlite3 not found, but sqlite3 is required.])
1729 fi
1730
1731 # libgnurl
1732 if test "$gnurl" = "0"
1733 then
1734   if test "x$curl" = "xfalse"
1735   then
1736     AC_MSG_NOTICE([WARNING: libgnurl not found.  http client support will not be compiled.])
1737     AC_MSG_WARN([ERROR: libgnurl not found.  hostlist daemon will not be compiled, and you probably WANT the hostlist daemon])
1738   else
1739     AC_MSG_NOTICE([WARNING: libgnurl not found, trying to use libcurl-gnutls instead.])
1740   fi
1741 fi
1742
1743
1744 # bluetooth
1745 if test "x$bluetooth" = "x0"
1746 then
1747   AC_MSG_NOTICE([WARNING: bluetooth library not found.  bluetooth support will not be compiled.])
1748 fi
1749
1750 # jansson
1751 if test "x$jansson" = "x0"
1752 then
1753   AC_MSG_NOTICE([WARNING: jansson library not found.  json support will not be compiled.])
1754 fi
1755
1756 #gnutls
1757 if test x$gnutls != xtrue
1758 then
1759   AC_MSG_NOTICE([WARNING: GnuTLS not found, gnunet-gns-proxy will not be built])
1760 else
1761 if test "x$gnutls_dane" != "x1"
1762 then
1763   AC_MSG_NOTICE([WARNING: GnuTLS has no DANE support, DANE validation will not be possible])
1764 fi
1765 fi
1766
1767 # java ports
1768 if test "x$enable_java_ports" = "xyes"
1769 then
1770   AC_MSG_NOTICE([NOTICE: Opening ports for gnunet-java bindings by default.])
1771 fi
1772
1773 # MHD
1774 if test "x$lmhd" != "x1"
1775 then
1776  AC_MSG_NOTICE([WARNING: libmicrohttpd not found, http transport will not be installed.])
1777 fi
1778
1779 # conversation
1780 if test "x$conversation_backend" = "xnone"
1781 then
1782   if test "x$pulse" != "x1"
1783   then
1784     AC_MSG_NOTICE([WARNING: libpulse(audio) not found, conversation will not be built.])
1785   fi
1786   if test "x$opus" != "x1"
1787   then
1788    AC_MSG_NOTICE([WARNING: libopus not found, conversation will not be built.])
1789   fi
1790   if test "x$gst" != "x1"
1791   then
1792    AC_MSG_NOTICE([WARNING: GStreamer not found, conversation will not be built.])
1793   fi
1794 fi
1795
1796 if test "$extractor" != 1
1797 then
1798  AC_MSG_WARN([ERROR: libextractor not found, but various file-sharing functions require it])
1799 fi
1800
1801 AC_MSG_NOTICE([NOTICE: Database support is set to MySQL: $mysql, SQLite: $sqlite, Postgres: $postgres])
1802
1803 if test "$enable_framework_build" = "yes"
1804 then
1805   AC_MSG_NOTICE([Mac OS X framework build enabled.])
1806 fi
1807
1808 if test "x$install_nss" = "x0"
1809 then
1810   AC_MSG_NOTICE([WARNING: Will not install GNS NSS library])
1811 else
1812   AC_MSG_NOTICE([NOTICE: Will install GNS NSS library to $NSS_DIR])
1813 fi
1814
1815
1816 AC_MSG_NOTICE([********************************************
1817 Please make sure NOW that you have created a user and group 'gnunet'
1818 and additionally a group 'gnunetdns'. On Debian and Ubuntu GNU/Linux, type:
1819         addgroup gnunetdns
1820         adduser --system --group --disabled-login --home /var/lib/gnunet gnunet
1821
1822 Make sure that '/var/lib/gnunet' is owned (and writable) by user
1823 'gnunet'.  Then, you can compile GNUnet with
1824         make
1825
1826 After that, run (if necessary as 'root')
1827         make install
1828 to install everything.
1829
1830 Each GNUnet user should be added to the 'gnunet' group (may
1831 require fresh login to come into effect):
1832         adduser USERNAME gnunet
1833 (run the above command as root once for each of your users, replacing
1834 "USERNAME" with the respective login names).  If you have a global IP
1835 address, no further configuration is required.
1836
1837 For more detailed setup instructions, see https://gnunet.org/installation
1838
1839 Optionally, download and compile gnunet-gtk to get a GUI for
1840 file-sharing and configuration.  This is particularly recommended
1841 if your network setup is non-trivial, as gnunet-setup can be
1842 used to test in the GUI if your network configuration is working.
1843 gnunet-setup should be run as the "gnunet" user under X.  As it
1844 does very little with the network, running it as "root" is likely
1845 also harmless.  You can also run it as a normal user, but then
1846 you have to copy ~/.gnunet/gnunet.conf" over to the "gnunet" user's
1847 home directory in the end.
1848
1849 Once you have configured your peer, run (as the 'gnunet' user)
1850         gnunet-arm -s
1851 to start the peer.  You can then run the various GNUnet-tools as
1852 your "normal" user (who should only be in the group 'gnunet').
1853 ********************************************])