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