configure.ac: The comment in line 598 was wrong
[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 restricted to the code required
615 # for GNU Taler wallets?
616 AC_MSG_CHECKING(whether to compile GNU Taler Wallet library ONLY)
617 AC_ARG_ENABLE([taler-wallet],
618    [AS_HELP_STRING([--enable-taler-wallet], [only compile for Taler wallet])],
619    [taler_only=${enableval}],
620    [taler_only=no])
621 AC_MSG_RESULT($taler_only)
622 if test "x$taler_only" = "xyes"
623 then
624   AM_CONDITIONAL([TALER_ONLY],true)
625   AC_DEFINE([TALER_WALLET_ONLY],[1],[Compiling for Taler wallet])
626 else
627   AM_CONDITIONAL([TALER_ONLY],false)
628   AC_DEFINE([TALER_WALLET_ONLY],[0],[Canonical compilation])
629 fi
630
631 # test for libextractor
632 extractor=0
633 AC_MSG_CHECKING(for libextractor)
634 AC_ARG_WITH(extractor,
635    [  --with-extractor=PFX    base of libextractor installation],
636    [AC_MSG_RESULT([$with_extractor])
637     case $with_extractor in
638       no)
639         ;;
640       yes)
641         AC_CHECK_HEADERS(extractor.h,
642           AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
643             extractor=1))
644         ;;
645       *)
646         LDFLAGS="-L$with_extractor/lib $LDFLAGS"
647         CPPFLAGS="-I$with_extractor/include $CPPFLAGS"
648         AC_CHECK_HEADERS(extractor.h,
649           AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
650             EXT_LIB_PATH="-L$with_extractor/lib $EXT_LIB_PATH"
651             extractor=1))
652         ;;
653     esac
654    ],
655    [AC_MSG_RESULT([--with-extractor not specified])
656     AC_CHECK_HEADERS(extractor.h,
657      AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
658       extractor=1))])
659 # restore LIBS
660 LIBS=$SAVE_LIBS
661
662 if test "$extractor" != 1
663 then
664  AM_CONDITIONAL(HAVE_LIBEXTRACTOR, false)
665  AC_DEFINE([HAVE_LIBEXTRACTOR],[0],[Lacking libextractor])
666 else
667  AM_CONDITIONAL(HAVE_LIBEXTRACTOR, true)
668  AC_DEFINE([HAVE_LIBEXTRACTOR],[1],[Have libextractor])
669 fi
670
671
672 if test "$taler_only" != yes
673 then
674
675 # Check for libltdl header (#2999)
676 ltdl=0
677 AC_MSG_CHECKING(for libltdl)
678 AC_ARG_WITH(ltdl,
679    [  --with-ltdl=PFX    base of libltdl installation],
680    [AC_MSG_RESULT([$with_ltdl])
681     case $with_ltdl in
682       no)
683         ;;
684       yes)
685         AC_CHECK_HEADERS(ltdl.h,
686           AC_CHECK_LIB([ltdl], [lt_dlopenext],
687             ltdl=1))
688         ;;
689       *)
690         LDFLAGS="-L$with_ltdl/lib $LDFLAGS"
691         CPPFLAGS="-I$with_ltdl/include $CPPFLAGS"
692         AC_CHECK_HEADERS(ltdl.h,
693           AC_CHECK_LIB([ltdl], [lt_dlopenext],
694             EXT_LIB_PATH="-L$with_ltdl/lib $EXT_LIB_PATH"
695             ltdl=1))
696         ;;
697     esac
698    ],
699    [AC_MSG_RESULT([--with-ltdl not specified])
700     AC_CHECK_HEADERS(ltdl.h,
701      AC_CHECK_LIB([ltdl], [lt_dlopenext],
702       ltdl=1))])
703 if test x$ltdl = x1
704 then
705  AC_MSG_RESULT([libltdl found])
706 else
707  AC_MSG_ERROR([GNUnet requires libltdl (from GNU libtool), try installing libltdl-dev])
708 fi
709 # restore LIBS
710 LIBS=$SAVE_LIBS
711
712
713 # libidn
714 AC_MSG_CHECKING([if Libidn can be used])
715 AC_ARG_WITH(libidn, AC_HELP_STRING([--with-libidn=[DIR]],
716                                     [Support IDN (needs GNU Libidn)]),
717 libidn=$withval, libidn=yes)
718 if test "$libidn" != "no"; then
719   if test "$libidn" != "yes"; then
720      LDFLAGS="${LDFLAGS} -L$libidn/lib"
721      CPPFLAGS="${CPPFLAGS} -I$libidn/include"
722   fi
723 fi
724 libidn=no
725 AC_CHECK_HEADER(idna.h,
726   AC_CHECK_LIB(idn, stringprep_check_version,
727     [libidn=yes LIBS="${LIBS} -lidn"], []), [])
728 if test "$libidn" != "yes"; then
729   AC_MSG_FAILURE([GNUnet requires libidn.
730 libidn-1.13 should be sufficient, newer versions work too.])
731 fi
732 AC_MSG_RESULT($libidn)
733
734
735 # test for zlib
736 SAVE_LDFLAGS=$LDFLAGS
737 SAVE_CPPFLAGS=$CPPFLAGS
738 AC_ARG_WITH(zlib,
739             [  --with-zlib[[=DIR]]       use libz in DIR],
740             [AS_IF([test "$withval" = "no"],
741                    [AC_MSG_ERROR([GNUnet requires zlib])],
742                    [test "$withval" != "yes"],
743                    [
744                      Z_DIR=$withval
745                      CPPFLAGS="${CPPFLAGS} -I$withval/include"
746                      LDFLAGS="${LDFLAGS} -L$withval/lib"
747                    ])
748             ])
749 AC_CHECK_HEADER(zlib.h,
750                 [],
751                 [AC_MSG_ERROR([GNUnet requires zlib])])
752 AC_CHECK_LIB(z, compress2,
753              [
754               AC_DEFINE([HAVE_ZLIB], [], [Have compression library])
755               if test "x${Z_DIR}" != "x"; then
756                       Z_CFLAGS="-I${Z_DIR}/include"
757                       Z_LIBS="-L${Z_DIR}/lib -lz"
758               else
759                       Z_LIBS="-lz"
760               fi],
761               [AC_MSG_ERROR([GNUnet requires zlib])])
762 AC_SUBST(Z_CFLAGS)
763 AC_SUBST(Z_LIBS)
764
765 if test "$enable_shared" = "no"
766 then
767  AC_MSG_ERROR([GNUnet only works with shared libraries. Sorry.])
768 fi
769
770
771
772 # restore LIBS
773 LIBS=$SAVE_LIBS
774
775
776 fi
777
778 # check for iconv
779 AM_ICONV
780
781 # test for libunistring
782 gl_LIBUNISTRING
783 if test $HAVE_LIBUNISTRING != yes; then
784  AC_MSG_ERROR([GNUnet requires libunistring])
785 fi
786 # under emscripten, $gl_libunistring_hexversion is undefined
787 if test "$taler_only" != yes; then
788 if test "x$gl_libunistring_hexversion" = "x" || test "$gl_libunistring_hexversion" -le 2305; then
789  AC_MSG_ERROR([GNUnet requires libunistring >= 0.9.1.1])
790 fi
791 fi
792 AC_CHECK_HEADERS([unistr.h],,AC_MSG_ERROR([Compiling GNUnet requires unistr.h (from libunistring) to be installed]))
793
794 # restore LIBS
795 LIBS=$SAVE_LIBS
796
797
798
799 # Checks for standard header files.
800 AC_HEADER_DIRENT
801 AC_HEADER_STDC
802
803 # Check for headers that are ALWAYS required
804 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]))
805
806
807
808 # Checks for headers that are only required on some systems or opional (and where we do NOT abort if they are not there)
809 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])
810
811 # FreeBSD requires something more funky for netinet/in_systm.h and netinet/ip.h...
812 AC_CHECK_HEADERS([sys/types.h netinet/in_systm.h netinet/in.h netinet/ip.h],,,
813 [#ifdef HAVE_SYS_TYPES_H
814 #include <sys/types.h>
815 #endif
816 #ifdef HAVE_NETINET_IN_SYSTM_H
817 #include <netinet/in_systm.h>
818 #endif
819 #ifdef HAVE_NETINET_IN_H
820 #include <netinet/in.h>
821 #endif
822 ])
823
824 SAVE_LDFLAGS=$LDFLAGS
825 SAVE_CPPFLAGS=$CPPFLAGS
826
827 # test for sqlite
828 sqlite=false
829 AC_MSG_CHECKING(for SQLite)
830 AC_ARG_WITH(sqlite,
831   [  --with-sqlite=PFX       base of SQLite installation],
832   [AC_MSG_RESULT("$with_sqlite")
833    case $with_sqlite in
834    no)
835      ;;
836    yes)
837     AC_CHECK_HEADERS(sqlite3.h,
838      sqlite=true)
839      ;;
840    *)
841     LDFLAGS="-L$with_sqlite/lib $LDFLAGS"
842     CPPFLAGS="-I$with_sqlite/include $CPPFLAGS"
843     AC_CHECK_HEADERS(sqlite3.h,
844      EXT_LIB_PATH="-L$with_sqlite/lib $EXT_LIB_PATH"
845      SQLITE_LDFLAGS="-L$with_sqlite/lib"
846      SQLITE_CPPFLAGS="-I$with_sqlite/include"
847      sqlite=true)
848     LDFLAGS=$SAVE_LDFLAGS
849     CPPFLAGS=$SAVE_CPPFLAGS
850     ;;
851    esac
852   ],
853   [AC_MSG_RESULT([--with-sqlite not specified])
854     AC_CHECK_HEADERS(sqlite3.h, sqlite=true)])
855 AM_CONDITIONAL(HAVE_SQLITE, test x$sqlite = xtrue)
856 AC_SUBST(SQLITE_CPPFLAGS)
857 AC_SUBST(SQLITE_LDFLAGS)
858
859 LDFLAGS=$SAVE_LDFLAGS
860 CPPFLAGS=$SAVE_CPPFLAGS
861
862 # test for postgres
863 postgres=false
864 # even running the check for postgres breaks emscripten ...
865 if test "$taler_only" != yes; then
866   AX_LIB_POSTGRESQL([9.5])
867   if test "$found_postgresql" = "yes"; then
868     CPPFLAGS="$CPPFLAGS $POSTGRESQL_CPPFLAGS"
869     AC_CHECK_HEADERS([libpq-fe.h],
870       postgres=true)
871   fi
872 fi
873 AM_CONDITIONAL(HAVE_POSTGRESQL, test x$postgres = xtrue)
874
875
876 LDFLAGS=$SAVE_LDFLAGS
877 CPPFLAGS=$SAVE_CPPFLAGS
878
879 # mysql & windows
880 AC_CHECK_TYPES([sigset_t, off_t], [], [], [#include <sys/types.h>])
881 AC_CHECK_TYPES([size_t], [], [], [#include <stdio.h>])
882
883 if test "$build_target" = "mingw"
884 then
885   CYGWIN_MYSQL_MAGIC="#include <mysql/my_global.h>"
886 fi
887
888 # test for mysql
889 mysql=false
890 mysqlfail=false
891 SAVE_LDFLAGS=$LDFLAGS
892 SAVE_CPPFLAGS=$CPPFLAGS
893 AC_MSG_CHECKING(for mysql)
894 AC_ARG_WITH(mysql,
895   [  --with-mysql=PFX        base of MySQL installation],
896   [AC_MSG_RESULT([$with_mysql])
897    case $with_mysql in
898    no)
899       ;;
900    yes|"")
901       AC_CHECK_HEADERS(mysql/mysql.h,
902        AC_CHECK_LIB(mysqlclient, mysql_init,
903
904        mysql=true), [], [$CYGWIN_MYSQL_MAGIC])
905       ;;
906    *)
907       LDFLAGS="-L$with_mysql/lib -L$with_mysql/lib/mysql $LDFLAGS $ZLIBS"
908       CPPFLAGS="-I$with_mysql/include $CPPFLAGS"
909       AC_CHECK_HEADERS(mysql/mysql.h,
910        AC_CHECK_LIB(mysqlclient, mysql_init,
911         MYSQL_LDFLAGS="-L$with_mysql/lib -L$with_mysql/lib/mysql"
912         MYSQL_CPPFLAGS="-I$with_mysql/include"
913
914         mysql=true), [], [$CYGWIN_MYSQL_MAGIC])
915       ;;
916    esac
917   ],
918   [AC_MSG_RESULT([--with-mysql not specified])
919    if test -d "/usr/lib64/mysql"; then
920     MYSQL_LIBDIR="/usr/lib64/mysql"
921    elif test -d "/usr/lib/mysql"; then
922     MYSQL_LIBDIR="/usr/lib/mysql"
923    else
924     MYSQL_LIBDIR="/usr/lib"
925    fi
926    LDFLAGS="-L$MYSQL_LIBDIR $LDFLAGS $ZLIBS"
927    AC_CHECK_LIB(mysqlclient, mysql_init,
928     [AC_CHECK_HEADERS(mysql/mysql.h,
929       MYSQL_LDFLAGS="-L$MYSQL_LIBDIR"
930       mysql=true
931
932      , [], [$CYGWIN_MYSQL_MAGIC])])
933   ])
934
935 AC_SUBST(MYSQL_LDFLAGS)
936 AC_SUBST(MYSQL_CPPFLAGS)
937
938 # additional version check for mysql
939 AC_ARG_ENABLE(mysql-version-check, [  --disable-mysql-version-check  do not check MySQL version],, enable_mysql_version_check=yes)
940 if test "$mysql" = "true" -a "x$enable_mysql_version_check" = "xyes"
941 then
942   AC_MSG_CHECKING(mysql version)
943   AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
944     [[$CYGWIN_MYSQL_MAGIC
945       #include <mysql/mysql.h>]],
946     [[
947       #if (MYSQL_VERSION_ID < 40100)
948       #error needs at least version >= 4.1
949       #endif
950       int main () { return 0; }
951     ]])
952     ],mysql=true,mysql=false)
953   if test "$mysql" = "false"
954   then
955     mysqlfail=true
956     AC_MSG_RESULT([fail, >= 4.1 required])
957   else
958     AC_MSG_RESULT(ok)
959   fi
960 fi
961 AM_CONDITIONAL(HAVE_MYSQL, test x$mysql = xtrue)
962 AM_CONDITIONAL(HAVE_MYSQLE, test "0" = "1")
963 # restore LIBS
964 LIBS=$SAVE_LIBS
965 LDFLAGS=$SAVE_LDFLAGS
966 CPPFLAGS=$SAVE_CPPFLAGS
967
968 if test "$sqlite" = 0 -a "$mysql" = 0
969 then
970  AC_MSG_ERROR([GNUnet requires SQLite or MySQL])
971 fi
972
973 # libmicrohttpd
974 lmhd=0
975 AC_MSG_CHECKING([for libmicrohttpd])
976 AC_ARG_WITH(microhttpd,
977    [  --with-microhttpd=PFX   base of libmicrohttpd installation],
978    [AC_MSG_RESULT([$with_microhttpd])
979     case $with_microhttpd in
980       no)
981         ;;
982       yes|"")
983         AC_CHECK_HEADERS([microhttpd.h],
984           AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
985             AC_CHECK_LIB([microhttpd], [MHD_get_fdset2],
986               [AC_MSG_CHECKING([for libmicrohttpd >= 0.9.42])
987               AC_COMPILE_IFELSE([AC_LANG_SOURCE([
988                 #include "$native_srcdir/src/include/platform.h"
989                 #include <microhttpd.h>
990                 #if (MHD_VERSION < 0x0094200)
991                 #error needs at least version 0.9.42
992                 #endif
993                 int main () { return 0; }
994                ])],
995                [AC_MSG_RESULT(ok)
996                 lmhd=1],
997                [AC_MSG_RESULT(failed)])]),
998             [],[#include "$native_srcdir/src/include/platform.h"
999                 #include <microhttpd.h>]),,
1000             [#include "$native_srcdir/src/include/platform.h"])
1001         ;;
1002       *)
1003         LDFLAGS="-L$with_microhttpd/lib $LDFLAGS"
1004         CPPFLAGS="-I$with_microhttpd/include $CPPFLAGS"
1005         AC_CHECK_HEADERS(microhttpd.h,
1006           AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
1007             AC_CHECK_LIB([microhttpd], [MHD_get_fdset2],
1008               EXT_LIB_PATH="-L$with_microhttpd/lib $EXT_LIB_PATH"
1009               [AC_MSG_CHECKING([for libmicrohttpd >= 0.9.42])
1010                AC_COMPILE_IFELSE([AC_LANG_SOURCE([
1011                 #include "$native_srcdir/src/include/platform.h"
1012                 #include <microhttpd.h>
1013                 #if (MHD_VERSION < 0x0094200)
1014                 #error needs at least version 0.9.42
1015                 #endif
1016                 int main () { return 0; }
1017                ])],
1018                [AC_MSG_RESULT(ok)
1019                 lmhd=1],
1020                [AC_MSG_RESULT(failed)])]),
1021             [],[#include "$native_srcdir/src/include/platform.h"
1022                 #include <microhttpd.h>]),,
1023             [#include "$native_srcdir/src/include/platform.h"])
1024         ;;
1025     esac
1026    ],
1027    [AC_MSG_RESULT([--with-microhttpd not specified])
1028     AC_CHECK_HEADERS([microhttpd.h],
1029       AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
1030         AC_CHECK_LIB([microhttpd], [MHD_get_fdset2],
1031           [AC_MSG_CHECKING([for libmicrohttpd >= 0.9.42])
1032               AC_COMPILE_IFELSE([AC_LANG_SOURCE([
1033                 #include "$native_srcdir/src/include/platform.h"
1034                 #include <microhttpd.h>
1035                 #if (MHD_VERSION < 0x0094200)
1036                 #error needs at least version 0.9.42
1037                 #endif
1038                ])],
1039                [AC_MSG_RESULT(ok)
1040                 lmhd=1],
1041                [AC_MSG_RESULT(failed)])]),
1042         [],[#include "$native_srcdir/src/include/platform.h"
1043             #include <microhttpd.h>]),,
1044        [#include "$native_srcdir/src/include/platform.h"])])
1045 AM_CONDITIONAL(HAVE_MHD, test x$lmhd = x1)
1046 AC_DEFINE_UNQUOTED([HAVE_MHD], $lmhd, [We have libmicrohttpd])
1047
1048 AM_CONDITIONAL(HAVE_JSON, [test x$jansson = x1])
1049
1050 # restore LIBS
1051 LIBS=$SAVE_LIBS
1052
1053 # check for python & pexpect (used for some testcases only)
1054 AM_PATH_PYTHON([2.6],, [:])
1055 AM_CONDITIONAL([HAVE_PYTHON], [test "$PYTHON" != :])
1056
1057 # check for gettext
1058 AM_GNU_GETTEXT([external])
1059 AM_GNU_GETTEXT_VERSION([0.18.1])
1060
1061 # Checks for standard typedefs, structures, and compiler characteristics.
1062 AC_TYPE_PID_T
1063 AC_TYPE_SIZE_T
1064 AC_TYPE_MODE_T
1065 AC_HEADER_TIME
1066 AC_HEADER_STAT
1067 AC_HEADER_STDBOOL
1068 AC_STRUCT_TM
1069
1070 AC_CHECK_MEMBER([struct sockaddr_in.sin_len],
1071    [ AC_DEFINE(HAVE_SOCKADDR_IN_SIN_LEN, 1, [Do we have sockaddr_in.sin_len?])
1072    ],
1073    [],
1074    [
1075       #include <sys/types.h>
1076       #include <sys/socket.h>
1077       #include <netinet/in.h>
1078    ])
1079
1080 AC_CHECK_MEMBER([struct sockaddr_un.sun_len],
1081    [ AC_DEFINE(HAVE_SOCKADDR_UN_SUN_LEN, 1, [Do we have sockaddr_un.sun_len?])
1082    ],
1083    [],
1084    [
1085       #include <sys/types.h>
1086       #include <sys/socket.h>
1087       #include <sys/un.h>
1088    ])
1089
1090
1091
1092 # Checks for library functions.
1093 AC_FUNC_CLOSEDIR_VOID
1094 AC_FUNC_FORK
1095 AC_PROG_GCC_TRADITIONAL
1096 AC_FUNC_MEMCMP
1097 AC_FUNC_SELECT_ARGTYPES
1098 AC_FUNC_CHOWN
1099
1100 AC_TYPE_SIGNAL
1101 AC_FUNC_STAT
1102 AC_FUNC_STRFTIME
1103 AC_FUNC_VPRINTF
1104 AC_HEADER_SYS_WAIT
1105 AC_TYPE_OFF_T
1106 AC_TYPE_UID_T
1107 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])
1108
1109 # restore LIBS
1110 LIBS=$SAVE_LIBS
1111
1112 GN_INTLINCL=""
1113 GN_LIBINTL="$LTLIBINTL"
1114 AC_ARG_ENABLE(framework, [  --enable-framework      enable Mac OS X framework build helpers],enable_framework_build=$enableval)
1115 AM_CONDITIONAL(WANT_FRAMEWORK, test x$enable_framework_build = xyes)
1116 if test x$enable_framework_build = xyes
1117 then
1118   AC_DEFINE([FRAMEWORK_BUILD], 1, [Build a Mac OS X Framework])
1119   GN_INTLINCL='-I$(top_srcdir)/src/intlemu'
1120   GN_LIBINTL='$(top_builddir)/src/intlemu/libintlemu.la -framework CoreFoundation'
1121   AC_LIB_APPENDTOVAR([CPPFLAGS], [$GN_INTLINCL])
1122 fi
1123
1124 GN_LIB_LDFLAGS="-export-dynamic -no-undefined"
1125 GN_PLUGIN_LDFLAGS="-export-dynamic -avoid-version -module -no-undefined"
1126
1127 AC_SUBST(GN_LIB_LDFLAGS)
1128 AC_SUBST(GN_PLUGIN_LDFLAGS)
1129 AC_SUBST(GN_INTLINCL)
1130 AC_SUBST(GN_LIBINTL)
1131
1132 AC_SUBST(CPPFLAGS)
1133 AC_SUBST(LIBS)
1134 AC_SUBST(LDFLAGS)
1135 AC_SUBST(EXT_LIB_PATH)
1136 AC_SUBST(EXT_LIBS)
1137
1138 AC_SUBST(LIBPREFIX)
1139 AC_SUBST(DLLDIR)
1140 AC_SUBST(EXT_LIB_PATH)
1141
1142
1143 # test for sudo
1144 AC_MSG_CHECKING(for sudo)
1145 AC_ARG_WITH(sudo,
1146   [  --with-sudo=PATH       path to sudo binary (or just yes)],
1147   [AC_MSG_RESULT("$with_sudo")
1148    case $with_sudo in
1149    no)
1150      SUDO_BINARY=
1151      ;;
1152    yes)
1153      SUDO_BINARY=sudo
1154      ;;
1155    *)
1156      SUDO_BINARY=$with_sudo
1157     ;;
1158    esac
1159   ],
1160   [AC_MSG_RESULT([no])])
1161 AC_SUBST(SUDO_BINARY)
1162 AM_CONDITIONAL([HAVE_SUDO], [test "x$SUDO_BINARY" != "x" -o -w /])
1163
1164
1165 # test for gnunetdns group name
1166 GNUNETDNS_GROUP=gnunetdns
1167 AC_MSG_CHECKING(for gnunetdns group name)
1168 AC_ARG_WITH(gnunetdns,
1169   [  --with-gnunetdns=GRPNAME       name for gnunetdns group],
1170   [AC_MSG_RESULT("$with_gnunetdns")
1171    case $with_gnunetdns in
1172    no)
1173      GNUNETDNS_GROUP=gnunet
1174      ;;
1175    yes)
1176      GNUNETDNS_GROUP=gnunetdns
1177      ;;
1178    *)
1179      GNUNETDNS_GROUP=$with_gnunetdns
1180     ;;
1181    esac
1182   ],
1183   [AC_MSG_RESULT([gnunetdns])])
1184 AC_SUBST(GNUNETDNS_GROUP)
1185
1186
1187
1188 # gnutls
1189 gnutls=0
1190 gnutls_dane=0
1191 AC_MSG_CHECKING(for gnutls)
1192 AC_ARG_WITH(gnutls,
1193    [  --with-gnutls=PFX   base of gnutls installation],
1194    [AC_MSG_RESULT([$with_gnutls])
1195     case $with_gnutls in
1196       no)
1197         ;;
1198       yes)
1199         AC_CHECK_HEADERS([gnutls/abstract.h],
1200             AC_CHECK_LIB([gnutls], [gnutls_priority_set],
1201              gnutls=true))
1202         AC_CHECK_HEADERS([gnutls/dane.h],
1203             AC_CHECK_LIB([gnutls-dane], [dane_verify_crt_raw],
1204               gnutls_dane=1))
1205         ;;
1206       *)
1207         LDFLAGS="-L$with_gnutls/lib $LDFLAGS"
1208         CPPFLAGS="-I$with_gnutls/include $CPPFLAGS"
1209         AC_CHECK_HEADERS([gnutls/abstract.h],
1210             AC_CHECK_LIB([gnutls], [gnutls_priority_set],
1211               EXT_LIB_PATH="-L$with_gnutls/lib $EXT_LIB_PATH"
1212               gnutls=true))
1213         AC_CHECK_HEADERS([gnutls/dane.h],
1214             AC_CHECK_LIB([gnutls-dane], [dane_verify_crt_raw],
1215               gnutls_dane=1))
1216         ;;
1217     esac
1218    ],
1219    [AC_MSG_RESULT([--with-gnutls not specified])
1220     AC_CHECK_HEADERS([gnutls/abstract.h],
1221         AC_CHECK_LIB([gnutls], [gnutls_priority_set],
1222           gnutls=true))
1223     AC_CHECK_HEADERS([gnutls/dane.h],
1224         AC_CHECK_LIB([gnutls-dane], [dane_verify_crt_raw],
1225                      gnutls_dane=1))
1226    ])
1227 AM_CONDITIONAL(HAVE_GNUTLS, test x$gnutls = xtrue)
1228 AC_DEFINE_UNQUOTED([HAVE_GNUTLS], $gnutls, [We have GnuTLS])
1229 AM_CONDITIONAL(HAVE_GNUTLS_DANE, test x$gnutls_dane = x1)
1230 AC_DEFINE_UNQUOTED([HAVE_GNUTLS_DANE], $gnutls_dane, [We have GnuTLS with DANE support])
1231
1232
1233 # Test if we are building for superMUC
1234 AC_MSG_CHECKING(if GNUnet is being configured to run on the SuperMUC)
1235 AC_ARG_ENABLE([supermuc],
1236     [AS_HELP_STRING([--enable-supermuc],
1237        [build GNUnet with support to run on the SuperMUC (default is NO)])],
1238     [if test "x$enable_supermuc" = "xno"
1239      then
1240        supermuc=0
1241      else
1242        supermuc=1
1243      fi],
1244     [supermuc=0
1245      enable_supermuc=no])
1246 AC_MSG_RESULT($enable_SUPERMUC)
1247 AM_CONDITIONAL([ENABLE_SUPERMUC], [test "x$supermuc" = "x1"])
1248 AC_DEFINE_UNQUOTED([ENABLE_SUPERMUC], [$supermuc], [Build with support for SuperMUC])
1249
1250 # Check if NSE has to send timestamp information to testbed logger for
1251 # generating histogram of messages received
1252 AC_MSG_CHECKING(if NSE has to send timestamp information to testbed logger)
1253 AC_ARG_ENABLE([nse-histogram],
1254     [AS_HELP_STRING([--enable-nse-histogram],
1255        [have NSE send timestamp information to testbed logger for generating
1256        histogram of received messages.  NOT useful for production (default is
1257        NO)])],
1258     [if test "x$enableval" = "xno"
1259      then
1260        nse_histogram=0
1261      else
1262        nse_histogram=1
1263      fi],
1264     [nse_histogram=0
1265      enable_nse_histogram=no])
1266 AC_MSG_RESULT($enable_nse_histogram)
1267 AM_CONDITIONAL([ENABLE_NSE_HISTOGRAM], [test "x$nse_histogram" = "x1"])
1268 AC_DEFINE_UNQUOTED([ENABLE_NSE_HISTOGRAM], [$nse_histogram],
1269                    [have NSE send timestamp information to testbed logger])
1270
1271 # should 'make check' run tests?
1272 AC_MSG_CHECKING(whether to run tests)
1273 AC_ARG_ENABLE([testruns],
1274    [AS_HELP_STRING([--disable-testruns], [disable running tests on make check (default is YES)])],
1275    [enable_tests_run=${enableval}],
1276    [enable_tests_run=yes])
1277 AC_MSG_RESULT($enable_test_run)
1278 AM_CONDITIONAL([ENABLE_TEST_RUN], [test "x$enable_tests_run" = "xyes"])
1279
1280
1281 # should monkey be used when running (certain) services?
1282 AC_MSG_CHECKING(whether to run with monkey)
1283 AC_ARG_ENABLE([monkey],
1284    [AS_HELP_STRING([--enable-monkey], [enable running with monkey])],
1285    [enable_monkey=${enableval}],
1286    [enable_monkey=no])
1287 AC_MSG_RESULT($enable_monkey)
1288 AM_CONDITIONAL([ENABLE_MONKEY], [test "x$enable_monkey" = "xyes"])
1289 if test "x$enable_monkey" = "xyes"
1290 then
1291   MONKEYPREFIX="pathologist -d $(eval echo ${datarootdir}/gnunet/gnunet.sqlite) -p 30 --"
1292 else
1293   MONKEYPREFIX=""
1294 fi
1295 AC_SUBST(MONKEYPREFIX)
1296
1297
1298 # should expensive tests be run?
1299 AC_MSG_CHECKING(whether to run expensive tests)
1300 AC_ARG_ENABLE([expensivetests],
1301    [AS_HELP_STRING([--enable-expensivetests], [enable running expensive testcases])],
1302    [enable_expensive=${enableval}],
1303    [enable_expensive=no])
1304 AC_MSG_RESULT($enable_expensive)
1305 AM_CONDITIONAL([HAVE_EXPENSIVE_TESTS], [test "x$enable_expensive" = "xyes"])
1306
1307 # should ports be open for Java services?
1308 AC_MSG_CHECKING(whether to enable ports for gnunet-java)
1309 AC_ARG_ENABLE([javaports],
1310    [AS_HELP_STRING([--enable-javaports], [use non-zero ports for services with Java bindings (default is NO)])],
1311    [enable_java_ports=${enableval}],
1312    [enable_java_ports=no])
1313 AC_MSG_RESULT($enable_java_ports)
1314 if test "x$enable_java_ports" = "xyes"
1315 then
1316   JAVAPORT=""
1317 else
1318   JAVAPORT="$UNIXONLY"
1319 fi
1320 AC_SUBST(JAVAPORT)
1321
1322 # should benchmarks be run?
1323 AC_MSG_CHECKING(whether to run benchmarks during make check)
1324 AC_ARG_ENABLE([benchmarks],
1325    [AS_HELP_STRING([--enable-benchmarks], [enable running benchmarks during make check])],
1326    [enable_benchmarks=${enableval}],
1327    [enable_benchmarks=no])
1328 AC_MSG_RESULT($enable_benchmarks)
1329 AM_CONDITIONAL([HAVE_BENCHMARKS], [test "x$enable_benchmarks" = "xyes"])
1330
1331 # should gnunet-testing be compiled
1332 AC_MSG_CHECKING(wether to compile gnunet-testing)
1333 AC_ARG_ENABLE([testing],
1334    [AS_HELP_STRING([--disable-testing], [do not build gnunet-testing])],
1335    [enable_testing=${enableval}],
1336    [enable_testing=yes])
1337 AC_MSG_RESULT($enable_testing)
1338 AM_CONDITIONAL([HAVE_TESTING], [test "x$enable_testing" = "xyes"])
1339
1340 # should experimental code be compiled (code that may not yet compile)?
1341 AC_MSG_CHECKING(whether to compile experimental code)
1342 AC_ARG_ENABLE([experimental],
1343    [AS_HELP_STRING([--enable-experimental], [enable compiling experimental code])],
1344    [enable_experimental=${enableval}],
1345    [enable_experimental=no])
1346 AC_MSG_RESULT($enable_experimental)
1347 AM_CONDITIONAL([HAVE_EXPERIMENTAL], [test "x$enable_experimental" = "xyes"])
1348
1349 # should malicious code be compiled (should only be used for testing)?
1350 AC_MSG_CHECKING(whether to compile malicious code)
1351 AC_ARG_ENABLE([malicious],
1352    [AS_HELP_STRING([--enable-malicious], [enable compiling malicious code])],
1353    [if test "x$enableval" = "xno"
1354      then
1355        malicious=0
1356      else
1357        malicious=1
1358      fi],
1359    [malicious=0
1360     enable_malicious=no])
1361 AC_MSG_RESULT($enable_malicious)
1362 AM_CONDITIONAL([ENABLE_MALICIOUS], [test 1=$malicious])
1363 AC_DEFINE_UNQUOTED([ENABLE_MALICIOUS], [$malicious],
1364                    [enable compilation of malicious code])
1365
1366 # should services be started by default when a peer starts?  Some services may
1367 # choose to never start by default and it is upto the service/module developer to
1368 # decide it by having "AUTOSTART = NO" instead of "AUTOSTART = @AUTOSTART@" in
1369 # the service/module's conf.in file.
1370 AUTOSTART="YES"
1371 AC_MSG_CHECKING(whether to auto-start peer's services by default)
1372 AC_ARG_ENABLE([autostart],
1373    [AS_HELP_STRING([--disable-autostart], [do not start peer's services by default])],
1374    [enable_autostart=${enableval}
1375     if test "x$enable_autostart" == "xno"
1376     then
1377         AUTOSTART="NO"
1378     fi
1379    ],
1380    [enable_autostart=yes])
1381 AC_MSG_RESULT($enable_autostart)
1382 #AM_CONDITIONAL([HAVE_AUTOSTART], [test "x$enable_autostart" = "xyes"])
1383 AC_SUBST(AUTOSTART)
1384
1385 # should memory statistics be kept (very expensive CPU-wise!)
1386 AC_MSG_CHECKING(whether to create expensive statistics on memory use)
1387 AC_ARG_ENABLE([heapstats],
1388    [AS_HELP_STRING([--enable-heapstats], [enable expensive heap statistics])],
1389    [enable_heapstats=1],
1390    [enable_heapstats=0])
1391 AC_MSG_RESULT($enable_heapstats)
1392 AC_DEFINE_UNQUOTED([ENABLE_HEAP_STATISTICS],$enable_heapstats,[enable expensive heap statistics])
1393
1394 # should code be enabled that works around missing OS functionality on Windows?
1395 # used for test cases
1396 if test $build_target = "mingw"
1397 then
1398         workarounds=1
1399
1400 AC_LINK_IFELSE(
1401  [AC_LANG_PROGRAM(
1402   [#include <ws2tcpip.h>
1403   ],[
1404   int s = socket (0, 0, 0);])
1405  ],[
1406   AC_DEFINE_UNQUOTED([HAVE_SOCKET],1,[Define this if socket() is available])
1407  ],[
1408   AC_DEFINE_UNQUOTED([HAVE_SOCKET],0,[Define this if socket() is available])
1409  ])
1410
1411 AC_LINK_IFELSE(
1412  [AC_LANG_PROGRAM(
1413   [#include <ws2tcpip.h>
1414   ],[
1415   int s = select (0, NULL, NULL, NULL, NULL);])
1416  ],[
1417   AC_DEFINE_UNQUOTED([HAVE_SELECT],1,[Define this if select() is available])
1418  ],[
1419   AC_DEFINE_UNQUOTED([HAVE_SELECT],0,[Define this if select() is available])
1420  ])
1421
1422 AC_LINK_IFELSE(
1423  [AC_LANG_PROGRAM(
1424   [#include <ws2tcpip.h>
1425   ],[
1426   struct in_addr i;
1427   char *s = inet_ntoa (i);])
1428  ],[
1429   AC_DEFINE_UNQUOTED([HAVE_INET_NTOA],1,[Define this if inet_ntoa() is available])
1430  ],[
1431   AC_DEFINE_UNQUOTED([HAVE_INET_NTOA],0,[Define this if inet_ntoa() is available])
1432  ])
1433
1434 AC_LINK_IFELSE(
1435  [AC_LANG_PROGRAM(
1436   [#include <ws2tcpip.h>
1437   ],[
1438   int s = getnameinfo (NULL, 0, NULL, 0, NULL, 0, 0);])
1439  ],[
1440   AC_DEFINE_UNQUOTED([HAVE_GETNAMEINFO],1,[Define this if getnameinfo() is available])
1441  ],[
1442   AC_DEFINE_UNQUOTED([HAVE_GETNAMEINFO],0,[Define this if getnameinfo() is available])
1443  ])
1444
1445 AC_LINK_IFELSE(
1446  [AC_LANG_PROGRAM(
1447   [#include <ws2tcpip.h>
1448   ],[
1449   int s = gethostname (NULL, 0);])
1450  ],[
1451   AC_DEFINE_UNQUOTED([HAVE_GETHOSTNAME],1,[Define this if gethostname() is available])
1452  ],[
1453   AC_DEFINE_UNQUOTED([HAVE_GETHOSTNAME],0,[Define this if gethostname() is available])
1454  ])
1455
1456 AC_LINK_IFELSE(
1457  [AC_LANG_PROGRAM(
1458   [#include <ws2tcpip.h>
1459   ],[
1460   void *s = gethostbyname (NULL);])
1461  ],[
1462   AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYNAME],1,[Define this if gethostbyname() is available])
1463  ],[
1464   AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYNAME],0,[Define this if gethostbyname() is available])
1465  ])
1466
1467 AC_LINK_IFELSE(
1468  [AC_LANG_PROGRAM(
1469   [#include <ws2tcpip.h>
1470   ],[
1471   void *s = gethostbyaddr (NULL, 0, 0);])
1472  ],[
1473   AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYADDR],1,[Define this if gethostbyaddr() is available])
1474  ],[
1475   AC_DEFINE_UNQUOTED([HAVE_GETHOSTBYADDR],0,[Define this if gethostbyaddr() is available])
1476  ])
1477
1478 AC_LINK_IFELSE(
1479  [AC_LANG_PROGRAM(
1480   [#include <ws2tcpip.h>
1481   ],[
1482   int s = getaddrinfo (NULL, NULL, NULL, NULL);])
1483  ],[
1484   AC_DEFINE_UNQUOTED([HAVE_GETADDRINFO],1,[Define this if getaddrinfo() is available])
1485  ],[
1486   AC_DEFINE_UNQUOTED([HAVE_GETADDRINFO],1,[Define this if getaddrinfo() is available])
1487  ])
1488
1489 else
1490   AC_MSG_CHECKING(whether to enable windows workarounds)
1491   AC_ARG_ENABLE([windows_workarounds],
1492      [AS_HELP_STRING([--enable-windows_workarounds], [enable workarounds used on Windows (only useful for test cases)])],
1493      [enable_workarounds=${enableval}],
1494      [enable_workarounds=no])
1495   AC_MSG_RESULT($enable_workarounds)
1496   if test x$enable_windows_workarounds = "xyes"
1497   then
1498      workarounds=1
1499   else
1500      workarounds=0
1501    fi
1502 fi
1503 AC_DEFINE_UNQUOTED([ENABLE_WINDOWS_WORKAROUNDS], $workarounds, [enable workarounds used on Windows (only useful for test cases)])
1504
1505 # gcov compilation
1506 AC_MSG_CHECKING(whether to compile with support for code coverage analysis)
1507 AC_ARG_ENABLE([coverage],
1508               AS_HELP_STRING([--enable-coverage],
1509                              [compile the library with code coverage support]),
1510               [use_gcov=${enableval}],
1511               [use_gcov=no])
1512 AC_MSG_RESULT($use_gcov)
1513 AM_CONDITIONAL([USE_COVERAGE], [test "x$use_gcov" = "xyes"])
1514
1515
1516 # version info
1517 AC_PATH_PROG(svnversioncommand, svnversion)
1518 AC_PATH_PROG(gitcommand, git)
1519 AC_MSG_CHECKING(for source being under a VCS)
1520 svn_version=
1521 gitsvn_version=
1522 AS_IF([test ! "X$svnversioncommand" = "X"],
1523 [
1524   svn_version=$(cd $srcdir ; $svnversioncommand -n 2>/dev/null)
1525 ])
1526 AS_IF([test ! "X$gitcommand" = "X"],
1527 [
1528   gitsvn_version=$(cd $srcdir ; git log -1 2>/dev/null | grep "git-svn-id" | sed -e 's/.*@\([[0-9]]\+\) .*/\1/')
1529 ])
1530 AS_IF([test "X$svn_version" = "X" -o "X$svn_version" = "Xexported" -o "X$svn_version" = "XUnversioned directory"],
1531 [
1532   AS_IF([test "X$gitsvn_version" = "X"],
1533   [
1534     vcs_name="no"
1535     vcs_version="\"release\""
1536   ],
1537   [
1538     vcs_name="yes, git-svn"
1539     vcs_version="\"svn-r$gitsvn_version\""
1540   ])
1541 ],
1542 [
1543   vcs_name="yes, svn"
1544   vcs_version="\"svn-r$svn_version\""
1545 ])
1546 AC_MSG_RESULT($vcs_name)
1547
1548 AC_MSG_CHECKING(VCS version)
1549 AC_MSG_RESULT($vcs_version)
1550 AC_DEFINE_UNQUOTED(VCS_VERSION, [$vcs_version], [VCS revision/hash or tarball version])
1551
1552 AC_CONFIG_FILES([
1553 Makefile
1554 contrib/Makefile
1555 doc/Makefile
1556 doc/man/Makefile
1557 doc/doxygen/Makefile
1558 doc/documentation/Makefile
1559 m4/Makefile
1560 po/Makefile.in
1561 src/Makefile
1562 src/arm/Makefile
1563 src/arm/arm.conf
1564 src/ats/Makefile
1565 src/ats/ats.conf
1566 src/ats-tool/Makefile
1567 src/ats-tests/Makefile
1568 src/auction/Makefile
1569 src/block/Makefile
1570 src/cadet/Makefile
1571 src/cadet/cadet.conf
1572 src/core/Makefile
1573 src/core/core.conf
1574 src/consensus/Makefile
1575 src/consensus/consensus.conf
1576 src/conversation/Makefile
1577 src/conversation/conversation.conf
1578 src/curl/Makefile
1579 src/datacache/Makefile
1580 src/datastore/Makefile
1581 src/datastore/datastore.conf
1582 src/dht/Makefile
1583 src/dht/dht.conf
1584 src/dns/Makefile
1585 src/dns/dns.conf
1586 src/exit/Makefile
1587 src/fragmentation/Makefile
1588 src/fs/Makefile
1589 src/fs/fs.conf
1590 src/gns/Makefile
1591 src/gns/gns.conf
1592 src/gns/nss/Makefile
1593 src/gnsrecord/Makefile
1594 src/hello/Makefile
1595 src/identity/Makefile
1596 src/identity/identity.conf
1597 src/credential/Makefile
1598 src/credential/credential.conf
1599 src/include/Makefile
1600 src/integration-tests/Makefile
1601 src/json/Makefile
1602 src/jsonapi/Makefile
1603 src/hostlist/Makefile
1604 src/multicast/Makefile
1605 src/multicast/multicast.conf
1606 src/my/Makefile
1607 src/mysql/Makefile
1608 src/namecache/Makefile
1609 src/namecache/namecache.conf
1610 src/namestore/Makefile
1611 src/namestore/namestore.conf
1612 src/nat/Makefile
1613 src/nat/nat.conf
1614 src/nat-auto/Makefile
1615 src/nat-auto/nat-auto.conf
1616 src/nse/Makefile
1617 src/nse/nse.conf
1618 src/peerinfo/Makefile
1619 src/peerinfo/peerinfo.conf
1620 src/peerinfo-tool/Makefile
1621 src/peerstore/Makefile
1622 src/peerstore/peerstore.conf
1623 src/pq/Makefile
1624 src/psycutil/Makefile
1625 src/psyc/Makefile
1626 src/psyc/psyc.conf
1627 src/psycstore/Makefile
1628 src/psycstore/psycstore.conf
1629 src/pt/Makefile
1630 src/regex/Makefile
1631 src/regex/regex.conf
1632 src/revocation/Makefile
1633 src/revocation/revocation.conf
1634 src/rps/Makefile
1635 src/rps/rps.conf
1636 src/secretsharing/Makefile
1637 src/secretsharing/secretsharing.conf
1638 src/scalarproduct/Makefile
1639 src/scalarproduct/scalarproduct.conf
1640 src/set/Makefile
1641 src/set/set.conf
1642 src/social/Makefile
1643 src/social/social.conf
1644 src/sq/Makefile
1645 src/statistics/Makefile
1646 src/statistics/statistics.conf
1647 src/template/Makefile
1648 src/testbed/Makefile
1649 src/testbed/testbed.conf
1650 src/testbed-logger/Makefile
1651 src/testbed-logger/testbed-logger.conf
1652 src/testing/Makefile
1653 src/topology/Makefile
1654 src/transport/Makefile
1655 src/transport/transport.conf
1656 src/tun/Makefile
1657 src/util/Makefile
1658 src/util/resolver.conf
1659 src/vpn/Makefile
1660 src/vpn/vpn.conf
1661 src/zonemaster/Makefile
1662 src/zonemaster/zonemaster.conf
1663 src/rest/Makefile
1664 src/abe/Makefile
1665 src/identity-attribute/Makefile
1666 src/identity-provider/Makefile
1667 pkgconfig/Makefile
1668 pkgconfig/gnunetarm.pc
1669 pkgconfig/gnunetats.pc
1670 pkgconfig/gnunetblock.pc
1671 pkgconfig/gnunetcadet.pc
1672 pkgconfig/gnunetconsensus.pc
1673 pkgconfig/gnunetconversation.pc
1674 pkgconfig/gnunetcore.pc
1675 pkgconfig/gnunetdatacache.pc
1676 pkgconfig/gnunetdatastore.pc
1677 pkgconfig/gnunetdht.pc
1678 pkgconfig/gnunetdns.pc
1679 pkgconfig/gnunetdnsparser.pc
1680 pkgconfig/gnunetdnsstub.pc
1681 pkgconfig/gnunetdv.pc
1682 pkgconfig/gnunetenv.pc
1683 pkgconfig/gnunetfragmentation.pc
1684 pkgconfig/gnunetfs.pc
1685 pkgconfig/gnunetgns.pc
1686 pkgconfig/gnunethello.pc
1687 pkgconfig/gnunetidentity.pc
1688 pkgconfig/gnunetmicrophone.pc
1689 pkgconfig/gnunetmulticast.pc
1690 pkgconfig/gnunetmysql.pc
1691 pkgconfig/gnunetnamestore.pc
1692 pkgconfig/gnunetnat.pc
1693 pkgconfig/gnunetnse.pc
1694 pkgconfig/gnunetpeerinfo.pc
1695 pkgconfig/gnunetpq.pc
1696 pkgconfig/gnunetpsyc.pc
1697 pkgconfig/gnunetpsycstore.pc
1698 pkgconfig/gnunetregex.pc
1699 pkgconfig/gnunetrevocation.pc
1700 pkgconfig/gnunetrps.pc
1701 pkgconfig/gnunetscalarproduct.pc
1702 pkgconfig/gnunetset.pc
1703 pkgconfig/gnunetsocial.pc
1704 pkgconfig/gnunetspeaker.pc
1705 pkgconfig/gnunetstatistics.pc
1706 pkgconfig/gnunettestbed.pc
1707 pkgconfig/gnunettesting.pc
1708 pkgconfig/gnunettransport.pc
1709 pkgconfig/gnunettun.pc
1710 pkgconfig/gnunetutil.pc
1711 pkgconfig/gnunetvpn.pc
1712 ])
1713 AC_OUTPUT
1714
1715 # Finally: summary!
1716
1717 # warn user if mysql found but not used due to version
1718 if test "$mysqlfail" = "true"
1719 then
1720   AC_MSG_NOTICE([WARNING: MySQL found, but too old. MySQL support will not be compiled.])
1721 fi
1722
1723 # sqlite
1724 if test "x$sqlite" = "x0"
1725 then
1726   AC_MSG_ERROR([ERROR: sqlite3 not found, but sqlite3 is required.])
1727 fi
1728
1729 # libgnurl
1730 if test "$gnurl" = "0"
1731 then
1732   if test "x$curl" = "xfalse"
1733   then
1734     AC_MSG_NOTICE([WARNING: libgnurl not found.  http client support will not be compiled.])
1735     AC_MSG_WARN([ERROR: libgnurl not found.  hostlist daemon will not be compiled, and you probably WANT the hostlist daemon])
1736   else
1737     AC_MSG_NOTICE([WARNING: libgnurl not found, trying to use libcurl-gnutls instead.])
1738   fi
1739 fi
1740
1741
1742 # bluetooth
1743 if test "x$bluetooth" = "x0"
1744 then
1745   AC_MSG_NOTICE([WARNING: bluetooth library not found.  bluetooth support will not be compiled.])
1746 fi
1747
1748 # jansson
1749 if test "x$jansson" = "x0"
1750 then
1751   AC_MSG_NOTICE([WARNING: jansson library not found.  json support will not be compiled.])
1752 fi
1753
1754 #gnutls
1755 if test x$gnutls != xtrue
1756 then
1757   AC_MSG_NOTICE([WARNING: GnuTLS not found, gnunet-gns-proxy will not be built])
1758 else
1759 if test "x$gnutls_dane" != "x1"
1760 then
1761   AC_MSG_NOTICE([WARNING: GnuTLS has no DANE support, DANE validation will not be possible])
1762 fi
1763 fi
1764
1765 # java ports
1766 if test "x$enable_java_ports" = "xyes"
1767 then
1768   AC_MSG_NOTICE([NOTICE: Opening ports for gnunet-java bindings by default.])
1769 fi
1770
1771 # MHD
1772 if test "x$lmhd" != "x1"
1773 then
1774  AC_MSG_NOTICE([WARNING: libmicrohttpd not found, http transport will not be installed.])
1775 fi
1776
1777 # conversation
1778 if test "x$conversation_backend" = "xnone"
1779 then
1780   if test "x$pulse" != "x1"
1781   then
1782     AC_MSG_NOTICE([WARNING: libpulse(audio) not found, conversation will not be built.])
1783   fi
1784   if test "x$opus" != "x1"
1785   then
1786    AC_MSG_NOTICE([WARNING: libopus not found, conversation will not be built.])
1787   fi
1788   if test "x$gst" != "x1"
1789   then
1790    AC_MSG_NOTICE([WARNING: GStreamer not found, conversation will not be built.])
1791   fi
1792 fi
1793
1794 if test "$extractor" != 1
1795 then
1796  AC_MSG_WARN([ERROR: libextractor not found, but various file-sharing functions require it])
1797 fi
1798
1799 AC_MSG_NOTICE([NOTICE: Database support is set to MySQL: $mysql, SQLite: $sqlite, Postgres: $postgres])
1800
1801 if test "$enable_framework_build" = "yes"
1802 then
1803   AC_MSG_NOTICE([Mac OS X framework build enabled.])
1804 fi
1805
1806 AC_MSG_NOTICE([********************************************
1807 Please make sure NOW that you have created a user and group 'gnunet'
1808 and additionally a group 'gnunetdns'. On Debian and Ubuntu GNU/Linux, type:
1809         addgroup gnunetdns
1810         adduser --system --group --disabled-login --home /var/lib/gnunet gnunet
1811
1812 Make sure that '/var/lib/gnunet' is owned (and writable) by user
1813 'gnunet'.  Then, you can compile GNUnet with
1814         make
1815
1816 After that, run (if necessary as 'root')
1817         make install
1818 to install everything.
1819
1820 Each GNUnet user should be added to the 'gnunet' group (may
1821 require fresh login to come into effect):
1822         adduser USERNAME gnunet
1823 (run the above command as root once for each of your users, replacing
1824 "USERNAME" with the respective login names).  If you have a global IP
1825 address, no further configuration is required.
1826
1827 For more detailed setup instructions, see https://gnunet.org/installation
1828
1829 Optionally, download and compile gnunet-gtk to get a GUI for
1830 file-sharing and configuration.  This is particularly recommended
1831 if your network setup is non-trivial, as gnunet-setup can be
1832 used to test in the GUI if your network configuration is working.
1833 gnunet-setup should be run as the "gnunet" user under X.  As it
1834 does very little with the network, running it as "root" is likely
1835 also harmless.  You can also run it as a normal user, but then
1836 you have to copy ~/.gnunet/gnunet.conf" over to the "gnunet" user's
1837 home directory in the end.
1838
1839 Once you have configured your peer, run (as the 'gnunet' user)
1840         gnunet-arm -s
1841 to start the peer.  You can then run the various GNUnet-tools as
1842 your "normal" user (who should only be in the group 'gnunet').
1843 ********************************************])