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