- proper memory usage
[oweals/gnunet.git] / configure.ac
index 0bedbaca950f1086f44891ee5f4c850ac16396d4..1a760b64f19bdff4a047dadf547ec4c0d2a1cd45 100644 (file)
@@ -1,5 +1,5 @@
 # This file is part of GNUnet.
-# (C) 2001--2012 Christian Grothoff (and other contributing authors)
+# (C) 2001--2013 Christian Grothoff (and other contributing authors)
 #
 # GNUnet is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published
 #
 AC_PREREQ(2.61)
 # Checks for programs.
-AC_INIT([gnunet], [0.9.3],[bug-gnunet@gnu.org])
+AC_INIT([gnunet], [0.9.5a],[bug-gnunet@gnu.org])
 
 AC_CANONICAL_TARGET
 AC_CANONICAL_HOST
 AC_CANONICAL_SYSTEM
 
-AM_INIT_AUTOMAKE([gnunet], [0.9.3])
+AM_INIT_AUTOMAKE([gnunet], [0.9.5a])
 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
 AC_CONFIG_HEADERS([gnunet_config.h])
 AH_TOP([#define _GNU_SOURCE  1])
@@ -222,7 +222,7 @@ fi
 # libgcrypt
 gcrypt=0
 NEED_LIBGCRYPT_API=1
-NEED_LIBGCRYPT_VERSION=1.4.2
+NEED_LIBGCRYPT_VERSION=1.6.0
 
 
 AM_PATH_LIBGCRYPT("$NEED_LIBGCRYPT_API:$NEED_LIBGCRYPT_VERSION", gcrypt=1)
@@ -370,12 +370,39 @@ then
 else
        AM_CONDITIONAL(HAVE_LIBCURL, false)
 fi
+
+
+# libidn
+AC_MSG_CHECKING([if Libidn can be used])
+AC_ARG_WITH(libidn, AC_HELP_STRING([--with-libidn=[DIR]],
+                                    [Support IDN (needs GNU Libidn)]),
+libidn=$withval, libidn=yes)
+if test "$libidn" != "no"; then
+  if test "$libidn" != "yes"; then
+     LDFLAGS="${LDFLAGS} -L$libidn/lib"
+     CPPFLAGS="${CPPFLAGS} -I$libidn/include"
+  fi
+  AC_CHECK_HEADER(idna.h,
+  AC_CHECK_LIB(idn, stringprep_check_version,
+    [libidn=yes LIBS="${LIBS} -lidn"], libidn=no),
+     libidn=no)
+fi
+if test "$libidn" != "no" ; then
+  AC_DEFINE(LIBIDN, 1, [Define to 1 if you want IDN support.])
+  else
+  AC_MSG_FAILURE([Libidn not found])
+fi
+AC_MSG_RESULT($libidn)
+
+
+
 # restore LIBS
 LIBS=$SAVE_LIBS
 
 
 AC_CHECK_HEADERS([glpk.h],[glpk=true],[gplk=false])
-AC_CHECK_LIB([glpk],[glp_create_prob],,[gplk=false])
+# GLPK must support glpk_init_env, version >= 4.43
+AC_CHECK_LIB([glpk],[glp_init_env],,[gplk=false]) 
 # GLPK must support atm MLP presolving, version >= 4.32
 AC_CHECK_MEMBERS(glp_iocp.presolve,,[gplk=false],[[#include <glpk.h>]])
 if test x$gplk = xfalse
@@ -387,7 +414,19 @@ else
        AC_DEFINE([HAVE_LIBGLPK],[1],[Have GLPK])
 fi
 
-
+# test for glib
+# Minimum required version for glibtop is 2.6.0
+AM_PATH_GLIB_2_0(2.6.0, [glib2=true] , [glib2=false] ,)
+if test x$glib2 = xfalse
+then
+       AM_CONDITIONAL(HAVE_GLIB2, false)
+       AC_MSG_WARN([GNUnet requires GLIB >= 2.6.0])
+else
+       AM_CONDITIONAL(HAVE_GLIB2, true)
+       AC_DEFINE([HAVE_GLIB2],[1],[Have glib2])
+       LIBS="$LIBS $GLIB_LIBS"
+       CFLAGS="$CFLAGS $GLIB_CFLAGS"
+fi
 
 AC_CHECK_HEADERS([nss.h],[nss=true],[nss=false])
 if test x$nss = xfalse
@@ -572,10 +611,17 @@ AC_ARG_WITH(mysql,
    fi
   ],
   [AC_MSG_RESULT([--with-mysql not specified])
-   LDFLAGS="-L/usr/lib/mysql $LDFLAGS $ZLIBS"
+   if test -d "/usr/lib64/mysql"; then
+    MYSQL_LIBDIR="/usr/lib64/mysql"
+   elif test -d "/usr/lib/mysql"; then
+    MYSQL_LIBDIR="/usr/lib/mysql"
+   else
+    MYSQL_LIBDIR="/usr/lib"
+   fi
+   LDFLAGS="-L$MYSQL_LIBDIR $LDFLAGS $ZLIBS"
    AC_CHECK_LIB(mysqlclient, mysql_init,
     [AC_CHECK_HEADERS(mysql/mysql.h,
-      MYSQL_LDFLAGS="-L/usr/lib/mysql"
+      MYSQL_LDFLAGS="-L$MYSQL_LIBDIR"
       mysql=true
 
      , [], [$CYGWIN_MYSQL_MAGIC])])
@@ -733,7 +779,7 @@ AC_FUNC_VPRINTF
 AC_HEADER_SYS_WAIT
 AC_TYPE_OFF_T
 AC_TYPE_UID_T
-AC_CHECK_FUNCS([atoll stat64 strnlen mremap setrlimit sysconf initgroups strndup gethostbyname2 getpeerucred getpeereid setresuid $funcstocheck getifaddrs freeifaddrs getresgid mallinfo malloc_size malloc_usable_size getrusage])
+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])
 
 # restore LIBS
 LIBS=$SAVE_LIBS
@@ -903,6 +949,44 @@ AM_CONDITIONAL(HAVE_GNUTLS, test x$gnutls = xtrue)
 AC_DEFINE_UNQUOTED([HAVE_GNUTLS], $gnutls, [We have gnutls])
 
 
+# Test if we are building for superMUC
+AC_MSG_CHECKING(if testbed should use IBM LoadLeveler to run on SuperMUC)
+AC_ARG_ENABLE([ll],
+    [AS_HELP_STRING([--enable-ll],
+       [build GNUnet testbed for use with IBM LoadLeveler for running testbed on
+              SuperMUC (default is NO)])],
+    [if test "x$enable_ll" = "xno"
+     then
+       ll=0
+     else
+       ll=1
+     fi],
+    [ll=0
+     enable_ll=no])
+AC_MSG_RESULT($enable_ll)
+AM_CONDITIONAL([ENABLE_LL], [test "x$ll" = "x1"])
+AC_DEFINE_UNQUOTED([ENABLE_LL], [$ll], [Build with LL support])
+
+# Check if NSE has to send timestamp information to testbed logger for
+# generating histogram of messages received
+AC_MSG_CHECKING(if NSE has to send timestamp information to testbed logger)
+AC_ARG_ENABLE([nse-histogram],
+    [AS_HELP_STRING([--enable-nse-histogram],
+       [have NSE send timestamp information to testbed logger for generating
+       histogram of received messages.  NOT useful for production (default is
+       NO)])],
+    [if test "x$enableval" = "xno"
+     then
+       nse_histogram=0
+     else
+       nse_histogram=1
+     fi],
+    [nse_histogram=0
+     enable_nse_histogram=no])
+AC_MSG_RESULT($enable_nse_histogram)
+AM_CONDITIONAL([ENABLE_NSE_HISTOGRAM], [test "x$nse_histogram" = "x1"])
+AC_DEFINE_UNQUOTED([ENABLE_NSE_HISTOGRAM], [$nse_histogram],
+                   [have NSE send timestamp information to testbed logger])
 
 # should 'make check' run tests?
 AC_MSG_CHECKING(whether to run tests)
@@ -973,6 +1057,15 @@ AC_ARG_ENABLE([experimental],
 AC_MSG_RESULT($enable_experimental)
 AM_CONDITIONAL([HAVE_EXPERIMENTAL], [test "x$enable_experimental" = "xyes"])
 
+# should memory statistics be kept (very expensive CPU-wise!)
+AC_MSG_CHECKING(whether to create expensive statistics on memory use)
+AC_ARG_ENABLE([heapstats],
+   [AS_HELP_STRING([--enable-heapstats], [enable expensive heap statistics])],
+   [enable_heapstats=1],
+   [enable_heapstats=0])
+AC_MSG_RESULT($enable_heapstats)
+AC_DEFINE_UNQUOTED([ENABLE_HEAP_STATISTICS],$enable_heapstats,[enable expensive heap statistics])
+
 # should code be enabled that works around missing OS functionality on Windows?
 # used for test cases
 if test $build_target = "mingw"
@@ -1095,6 +1188,27 @@ AC_MSG_RESULT($use_gcov)
 AM_CONDITIONAL([USE_COVERAGE], [test "x$use_gcov" = "xyes"])
 
 
+# version info
+AC_PATH_PROG(svnversioncommand, svnversion)
+AC_PATH_PROG(gitcommand, git)
+if test "X$svnversioncommand" = "X" || test `$svnversioncommand -n '.'` = "exported"
+then
+  if test "X$gitcommand" = "X"
+  then
+    AC_DEFINE_UNQUOTED(VCS_VERSION, ["release"], [repository svn version])
+  else
+    gitver=$(git log -1 | grep "git-svn-id" | sed -e 's/.*@\([[0-9]]\+\) .*/\1/')
+    if test "X$gitver" = "X"
+    then
+      AC_DEFINE_UNQUOTED(VCS_VERSION, ["release"], [repository svn version])
+    else
+      AC_DEFINE_UNQUOTED(VCS_VERSION, ["svn-$gitver"], [repository svn version])
+    fi
+  fi
+else
+  AC_DEFINE_UNQUOTED(VCS_VERSION, ["svn-`svnversion -n`"], [repository svn version])
+fi
+
 AC_CONFIG_FILES([ 
 Makefile
 contrib/Makefile
@@ -1107,11 +1221,14 @@ src/arm/Makefile
 src/arm/arm.conf
 src/ats/Makefile
 src/ats/ats.conf
+src/ats-tool/Makefile
 src/block/Makefile
 src/chat/Makefile
 src/chat/chat.conf
 src/core/Makefile
 src/core/core.conf
+src/consensus/Makefile
+src/consensus/consensus.conf
 src/datacache/Makefile
 src/datastore/Makefile
 src/datastore/datastore.conf
@@ -1148,6 +1265,8 @@ src/peerinfo-tool/Makefile
 src/postgres/Makefile
 src/pt/Makefile
 src/regex/Makefile
+src/set/Makefile
+src/set/set.conf
 src/statistics/Makefile
 src/statistics/statistics.conf
 src/stream/Makefile
@@ -1155,7 +1274,6 @@ src/template/Makefile
 src/testbed/Makefile
 src/testbed/testbed.conf
 src/testing/Makefile
-src/testing_old/Makefile
 src/topology/Makefile
 src/transport/Makefile
 src/transport/transport.conf
@@ -1166,25 +1284,37 @@ src/vpn/Makefile
 src/vpn/vpn.conf
 src/integration-tests/Makefile
 pkgconfig/Makefile
+pkgconfig/gnunetats.pc
 pkgconfig/gnunetarm.pc
 pkgconfig/gnunetblock.pc
 pkgconfig/gnunetcore.pc
 pkgconfig/gnunetdatacache.pc
 pkgconfig/gnunetdatastore.pc
 pkgconfig/gnunetdht.pc
-pkgconfig/gnunetdhtlog.pc
+pkgconfig/gnunetdns.pc
+pkgconfig/gnunetdnsparser.pc
 pkgconfig/gnunetdv.pc
 pkgconfig/gnunetfragmentation.pc
 pkgconfig/gnunetfs.pc
+pkgconfig/gnunetgns.pc
 pkgconfig/gnunethello.pc
+pkgconfig/gnunetlockmanager.pc
+pkgconfig/gnunetmesh.pc
+pkgconfig/gnunetmysql.pc
+pkgconfig/gnunetnamestore.pc
 pkgconfig/gnunetnat.pc
 pkgconfig/gnunetnse.pc
 pkgconfig/gnunetpeerinfo.pc
+pkgconfig/gnunetpostgres.pc
 pkgconfig/gnunetregex.pc
 pkgconfig/gnunetstatistics.pc
+pkgconfig/gnunetstream.pc
+pkgconfig/gnunettestbed.pc
 pkgconfig/gnunettesting.pc
 pkgconfig/gnunettransport.pc
+pkgconfig/gnunettun.pc
 pkgconfig/gnunetutil.pc
+pkgconfig/gnunetvpn.pc
 ])
 AC_OUTPUT