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