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