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