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