AC_PROG_LN_S
AC_PROG_MAKE_SET
AM_PROG_CC_C_O
-LT_INIT([disable-static dlopen win32-dll])
+LT_INIT([disable-static dlopen])
AC_SUBST(MKDIR_P)
# allow for different autotools
[*openbsd*],[
LIBS=`echo $LIBS | sed -e "s/-ldl//"`
build_target="openbsd"
+ use_openbsd_libtool=true
LIBPREFIX=
DLLDIR=lib
UNIXONLY="#"
AM_CONDITIONAL(XNETBSD, test "$build_target" = "netbsd")
AM_CONDITIONAL(XFREEBSD, test "$build_target" = "freebsd")
AM_CONDITIONAL(OPENBSD, test "$build_target" = "openbsd")
+# FIXME: We need a define BSD for some binaries like we
+# need define LINUX for some. This does not scale, how
+# can we solve this better?
+AM_CONDITIONAL(XBSD, test "$build_target" = "netbsd" -o "$build_target" = "freebsd" -o "$build_target" = "openbsd")
AM_CONDITIONAL(LINUX, test "$build_target" = "linux")
AM_CONDITIONAL(GNU, test "$build_target" = "gnu")
AC_SUBST([PYTHON])
AM_CONDITIONAL([HAVE_PYTHON], [test "$PYTHON" != :])
+
# perl
AC_PATH_PROG( PERL, perl, ,
$PATH:/usr/local/bin/perl:/usr/bin/:/usr/local/bin )
AC_SUBST([PERL])
+AM_CONDITIONAL([HAVE_PERL], [test -x "$PERL"])
+AS_IF([test -x "$PERL"],
+ [AC_DEFINE_UNQUOTED([HAVE_PERL], [1], [Path to Perl])],
+ [AC_DEFINE_UNQUOTED([HAVE_PERL], [0], [Path to Perl])])
+
+# awk
+AC_PATH_PROGS( AWK_BINARY, [awk gawk], ,$PATH:/usr/bin/:/usr/local/bin )
+AC_SUBST([AWK_BINARY])
+AM_CONDITIONAL([HAVE_AWK], [test -x "$AWK_BINARY"])
+AS_IF([test -x "$AWK_BINARY"],
+ [AC_DEFINE_UNQUOTED([HAVE_AWK], [1], [Path to awk])],
+ [AC_DEFINE_UNQUOTED([HAVE_AWK], [0], [Path to awk])])
+
+# should we install gnunet-logread?
+AC_MSG_CHECKING(whether to install gnunet-logread)
+AC_ARG_WITH([gnunet-logread],
+ [AS_HELP_STRING([--with-gnunet-logread],
+ [Install gnunet-logread])],
+ [logread=${withval}],
+ [logread=no])
+AC_MSG_RESULT($logread)
+AS_IF([test "x$logread" = "xyes"],
+ [AM_CONDITIONAL([GNUNET_LOGREAD], true)
+ AC_DEFINE([GNUNET_LOGREAD],
+ [1],
+ [Installing gnunet-logread])],
+ [AM_CONDITIONAL([GNUNET_LOGREAD],
+ false)
+ AC_DEFINE([GNUNET_LOGREAD],
+ [0],
+ [Not installing gnunet-logread])])
# iptables is a soft requirement to run tests
AC_PATH_TARGET_TOOL(VAR_IPTABLES_BINARY, iptables, false)
[AC_MSG_WARN(['ifconfig' not found.])])
+# Test if 'adduser' binary exists
+MSG_USER_SETUP=true
+AC_PATH_PROG([MSG_USER_SETUP],
+ [adduser],
+ false,
+ [path=$PATH$PATH_SEPARATOR/usr/sbin$PATH_SEPARATOR/sbin])
+
+# Test if 'gnunet' user and the groups exist
+getent passwd gnunet > /dev/null
+HAVE_GNUNET_USER=$?
+getent group gnunet > /dev/null
+AS_IF([test x$? != x0],
+ [HAVE_GNUNET_USER=1])
+getent group gnunetdns > /dev/null
+AS_IF([test x$? != x0],
+ [HAVE_GNUNET_USER=1])
+
AC_PATH_TARGET_TOOL(VAR_SYSCTL_BINARY, sysctl, false)
AC_CHECK_PROG(VAR_SYSCTL_BINARY, sysctl, true, false)
AC_CHECK_DECLS([struct in6_ifreq], [], [], [[#include <linux/if_tun.h>]])
+AC_CHECK_HEADER([if_tun.h],
+ [AC_DEFINE([IF_TUN_HDR], ["if_tun.h"], [if_tun.h include path])],
+ [AC_CHECK_HEADER([linux/if_tun.h],
+ [AC_DEFINE([IF_TUN_HDR], ["linux/if_tun.h"])],
+ [AC_CHECK_HEADER([net/if_tun.h],
+ [AC_DEFINE([IF_TUN_HDR], ["net/if_tun.h"])],
+ [AC_CHECK_HEADER([net/tun/if_tun.h],
+ [AC_DEFINE([IF_TUN_HDR], ["net/tun/if_tun.h"])])])])])
# should the build process be building the documentation?
[0],
[Not building the documentation])])
-# COMMENT: Check wether to transpile texinfo to mdoc.
+# COMMENT: Check whether to transpile texinfo to mdoc.
# COMMENT: This is TRUE when --enable-texi2mdoc-generation
# COMMENT: but ERRORS when texi2mdoc binary is missing in your $PATH
# COMMENT: and makes the configure fail if it is missing.
# COMMENT: There are 2 nested AS_IFs because we need to catch the
# COMMENT: potential non-existence of the texi2mdoc binary.
# COMMENT: Default return value / setting: no
-AC_MSG_CHECKING(wether to include generated texi2mdoc output in installation)
+AC_MSG_CHECKING(whether to include generated texi2mdoc output in installation)
AC_ARG_ENABLE([texi2mdoc-generation],
[AS_HELP_STRING([--enable-texi2mdoc-generation],
[include generated texi2mdoc output in installation])],
[AC_DEFINE([HAVE_LIBBLUETOOTH],[0],[Lacking bluetooth library])])
# check for zbar library
-# TODO: Add checks for: -lSM, -lICE, -lX11, -lXv and -ljpeg
-# TODO: if zbar exists.
+# NOTE: Do not add checks for: -lSM, -lICE, -lX11, -lXv and -ljpeg
+# NOTE: they must be provided by the build environment, not the
+# NOTE: build-system of gnunet, as they are 2nd or 3rd level dependencies.
zbar=0
AC_MSG_CHECKING(for libzbar)
AC_ARG_WITH(zbar,
#endif
int main () { return 0; }
]])
- ],mysql=true,mysql=false)
- AS_IF([test "$mysql" = "false"],
+ ],
+ [mysql=true],
+ [mysql=false])
+ AS_IF([test x$mysql = xfalse],
[
mysqlfail=true
- AC_MSG_RESULT([fail, >= 4.1 required])
+ AC_MSG_WARN([fail, MySQL >= 4.1 required])
],[
+ AC_MSG_NOTICE([success, will keep $mysqlfail])
+ mysqlfail=false
AC_MSG_RESULT(ok)
])
])
+
AM_CONDITIONAL(HAVE_MYSQL, test x$mysql = xtrue)
AM_CONDITIONAL(HAVE_MYSQLE, false)
# restore LIBS
AM_CONDITIONAL([HAVE_BENCHMARKS], [test "x$enable_benchmarks" = "xyes"])
# should gnunet-testing be compiled
-AC_MSG_CHECKING(wether to compile gnunet-testing)
+AC_MSG_CHECKING(whether to compile gnunet-testing)
AC_ARG_ENABLE([testing],
[AS_HELP_STRING([--disable-testing], [do not build gnunet-testing])],
[enable_testing=${enableval}],
AC_CONFIG_FILES([
Makefile
+bin/Makefile
contrib/Makefile
contrib/hellos/Makefile
contrib/services/Makefile
# java ports
AS_IF([test "x$enable_java_ports" = "xyes"],
- [AC_MSG_NOTICE([NOTICE: Opening ports for gnunet-java bindings by default.])])
+ [AC_MSG_NOTICE([Opening TCP ports by default to enable gnunet-java bindings.])])
-####
-#### Lasciate ogne speranza, voi ch'intrate
####
#### This could be moved to the checks above,
#### but for now let's keep it here.
####
-# TODO: We use "WARNING" too often, we need to clarify what
-# TODO: constitutes a WARNING, an ERROR, and a NOTICE, and
-# TODO: other message levels.
-
# -- print message regarding enabled experimental features
AS_IF([test "x$enable_experimental" = "xyes"],
[experimental_msg="experimental features enabled"])
[mdocml_msg="no"])
# -- texi2mdoc
AS_IF([test "x$TEXI2MDOC_BINARY" = "false"],
- [AC_MSG_NOTICE([WARNING: optional texi2mdoc binary not found])
+ [AC_MSG_NOTICE([texi2mdoc binary not found (will not generate mdoc documentation)])
texi2mdoc_msg="no (optional)"],
[texi2mdoc_msg="yes"])
# -- mandoc
AS_IF([test "x$MANDOC_BINARY" = "false"],
- [AC_MSG_NOTICE([WARNING: optional mandoc binary not found])
+ [AC_MSG_NOTICE([mandoc binary not found (will not generate handbook as man page)])
mandoc_msg="no"],
[mandoc_msg="yes"])
# -- texinfo
# -- conversation
AS_IF([test "x$conversation_backend" = "xnone"],
[AS_IF([test "x$pulse" != "x1"],
- [AC_MSG_NOTICE([WARNING: libpulse(audio) not found (required to build conversation against it).])
+ [AC_MSG_WARN([libpulse(audio) not found (required to build conversation).])
libpulse_msg="no"],
[libpulse_msg="yes"])
AS_IF([test "x$opus" != "x1"],
- [AC_MSG_NOTICE([WARNING: libopus not found (conversation)])
+ [AC_MSG_WARN([libopus not found (required to build conversation)])
libopus_msg="no"],
[libopus_msg="yes"])
AS_IF([test "x$gst" != "x1"],
- [AC_MSG_NOTICE([WARNING: GStreamer not found (required to build conversation against it).])
+ [AC_MSG_WARN([GStreamer not found (required to build conversation).])
gstreamer_msg="no"],
[gstreamer_msg="yes"])],
[features_msg="$features_msg conversation"])
[jansson_msg="yes"])
# -- libextractor
AS_IF([test "$extractor" != 1],
- [AC_MSG_WARN([WARNING: libextractor not found, but various file-sharing functions require it])],
+ [AC_MSG_WARN([libextractor not found, but various file-sharing functions require it])],
[libextractor_msg="yes"])
# -- libzbar
AS_IF([test "x$zbar" = "x1"],
[libzbar_msg="yes"
features_msg="$features_msg gnunet-qr"],
- [AC_MSG_NOTICE([WARNING: zbar not found, gnunet-qr will not be built.])
+ [AC_MSG_NOTICE([zbar not found, gnunet-qr will not be built.])
libzbar_msg="no"])
# -- libgnurl
AS_IF([test "$gnurl" = "0"],
[AS_IF([test "x$curl" = "xfalse"],
- [AC_MSG_NOTICE([WARNING: libgnurl not found. http client support will not be compiled.])
- AC_MSG_WARN([ERROR: libgnurl not found. hostlist daemon will not be compiled, and you probably WANT the hostlist daemon])
+ [AC_MSG_WARN([libgnurl not found. http client support will not be compiled.])
+ AC_MSG_WARN([IMPORTANT: No HTTP client library found. HTTP transports and hostlist daemon will not be compiled, and you probably WANT the hostlist daemon])
curl_msg="no"],
- [AC_MSG_NOTICE([WARNING: libgnurl not found, trying to use libcurl-gnutls instead.])
+ [AC_MSG_NOTICE([libgnurl not found, trying to use libcurl-gnutls instead.])
curl_msg="yes"])],
[gnurl_msg="yes"])
# -- ifconfig
AS_IF([test "$VAR_IFCONFIG_BINARY" = "false"],
- [AC_MSG_NOTICE([WARNING: optional ifconfig not found])
+ [AC_MSG_WARN([ifconfig not found, some features will not work])
ifconfig_msg="no (optional)"],
[ifconfig_msg="yes"])
# -- upnpc
AS_IF([test "$VAR_UPNPC_BINARY" = "false"],
- [AC_MSG_NOTICE([WARNING: optional upnpc binary not found])
+ [AC_MSG_WARN([upnpc binary not found, NAT traversal using UPnPc will not work])
upnpc_msg="no (optional)"],
[upnpc_msg="yes"])
# -- iptables
AS_IF([test "$VAR_IPTABLES_BINARY" = "false"],
- [AC_MSG_NOTICE([WARNING: optional iptables not found])
+ [AC_MSG_WARN([iptables not found, DNS query interception will not work])
iptables_msg="no (optional)"],
[iptables_msg="yes"])
# -- bluetooth
AS_IF([test "x$bluetooth" = "x0"],
- [AC_MSG_NOTICE([WARNING: optional bluetooth library not found.])
+ [AC_MSG_NOTICE([bluetooth library not found, will not be able to use Bluetooth])
bluetooth_msg="no (optional)"],
[bluetooth_msg="yes"])
# -- gnutls
AS_IF([test x$gnutls != xtrue],
- [AC_MSG_NOTICE([WARNING: GnuTLS not found, gnunet-gns-proxy will not be built])
+ [AC_MSG_WARN([GnuTLS not found, gnunet-gns-proxy will not be built])
gnutls_msg="no"],
[AS_IF([test "x$gnutls_dane" != "x1"],
- [AC_MSG_NOTICE([WARNING: GnuTLS has no DANE support, DANE validation will not be possible])
+ [AC_MSG_WARN([GnuTLS lacks DANE support, DANE validation will not be possible])
gnutls_msg="yes (without DANE support)"],
[gnutls_msg="yes (with DANE support)"])])
# -- databases
# TODO: this always returns true, the check might
# TODO: not be working as intended (for msqlfail).
-AS_IF([test x$mysqlfail = "true"]
- [AC_MSG_NOTICE([WARNING: optional MySQL not found (or too old)])])
AS_IF([test "$mysql" = true],
[features_msg="$features_msg mysql"
mysql_msg="yes"],
[mysql_msg="no"])
+AS_IF([test x$mysqlfail = xtrue],
+ [AC_MSG_WARN([MySQL not found (or too old), will not create MySQL database support])
+ mysql_msg="unsupported version"])
AS_IF([test "$sqlite" = true],
[features_msg="$features_msg sqlite"
sqlite_msg="yes"],
- [AC_MSG_ERROR([ERROR: sqlite3 not found, but sqlite3 is required.])
+ [AC_MSG_ERROR([sqlite3 not found, but sqlite3 is required.])
sqlite_msg="no"])
AS_IF([test "$postgres" = true],
[features_msg="$features_msg postgres"
AC_MSG_NOTICE([
GNUnet Configuration
+====================
-gnunet version: ${VERSION}
+GNUnet version: ${VERSION}
Host setup: ${host}
Install prefix: ${prefix}
features: ${features_msg}
experimental: ${experimental_msg}
-
-
-IMPORTANT:
-
-Please make sure NOW that you have created a user and group 'gnunet'
-and additionally a group 'gnunetdns'. On Debian and Ubuntu GNU/Linux,
-type:
-
- addgroup gnunetdns
- adduser --system --group --disabled-login --home /var/lib/gnunet gnunet
-
-Make sure that '/var/lib/gnunet' is owned (and writable) by user
-'gnunet'. Then, you can compile GNUnet with
-
- make
-
-After that, run (if necessary as 'root')
-
- make install
-
-to install everything.
-
-Each GNUnet user should be added to the 'gnunet' group (may
-require fresh login to come into effect):
-
- adduser USERNAME gnunet
-
-(run the above command as root once for each of your users, replacing
-"USERNAME" with the respective login names). If you have a global IP
-address, no further configuration is required.
-
-For more detailed setup instructions, see https://docs.gnunet.org/
-
-Optionally, download and compile gnunet-gtk to get a GUI for
-file-sharing and configuration. This is particularly recommended
-if your network setup is non-trivial, as gnunet-setup can be
-used to test in the GUI if your network configuration is working.
-gnunet-setup should be run as the "gnunet" user under X. As it
-does very little with the network, running it as "root" is likely
-also harmless. You can also run it as a normal user, but then
-you have to copy ~/.gnunet/gnunet.conf" over to the "gnunet" user's
-home directory in the end.
-
-Once you have configured your peer, run (as the 'gnunet' user)
-
- gnunet-arm -s
-
-to start the peer. You can then run the various GNUnet-tools as
-your "normal" user (who should only be in the group 'gnunet').
])
+
+AS_IF([test x$MSG_USER_SETUP != xfalse],
+ [AC_MSG_WARN([Please make sure NOW to create a user and group 'gnunet' and additionally a group 'gnunetdns'. Make sure that '/var/lib/gnunet' is owned (and writable) by user 'gnunet'.])
+ AS_IF([test x$HAVE_GNUNET_USER != 0],
+ [AC_MSG_NOTICE([To do this on this system, run:
+# addgroup gnunetdns
+# adduser --system --disabled-login --home /var/lib/gnunet gnunet
+])])
+ AC_MSG_WARN([Each user of GNUnet should be added to the 'gnunet' group.])
+ AS_IF([test x$HAVE_GNUNET_USER != 0],
+ [AC_MSG_NOTICE([To do this on this system, run:
+# adduser USERNAME gnunet
+ for each of your users, replacing \"USERNAME\" with the respective login name. Users may have to login again for the changes to take effect.
+])])])
+
+AC_MSG_NOTICE([For detailed setup instructions, type 'info gnunet' after the installation or visit https://docs.gnunet.org/])