]> git.meshlink.io Git - catta/blobdiff - configure.ac
* Compile tests only when --enable-tests was specified on the configure command line
[catta] / configure.ac
index d56f78b6eb76ad573c1959475612c04c3a49dae6..744a2841cc18ce00ea88fce58dd98e15e3ddc130 100644 (file)
 # USA.
 
 AC_PREREQ(2.57)
-AC_INIT([avahi],[0.3],[avahi (at) lists (dot) freedesktop (dot) org])
+AC_INIT([avahi],[0.6],[avahi (at) lists (dot) freedesktop (dot) org])
 AC_CONFIG_SRCDIR([avahi-core/server.c])
 AC_CONFIG_HEADERS([config.h])
 AM_INIT_AUTOMAKE([foreign 1.9 -Wall])
 
 AC_SUBST(PACKAGE_URL, [http://www.freedesktop.org/Software/Avahi])
 
+AC_SUBST(LIBAVAHI_COMMON_VERSION_INFO, [2:0:2])
+AC_SUBST(LIBAVAHI_CORE_VERSION_INFO, [2:0:1])
+AC_SUBST(LIBAVAHI_CLIENT_VERSION_INFO, [2:0:1])
+AC_SUBST(LIBAVAHI_GLIB_VERSION_INFO, [0:1:0])
+AC_SUBST(LIBAVAHI_QT3_VERSION_INFO, [0:0:0])
+AC_SUBST(LIBAVAHI_QT4_VERSION_INFO, [0:0:0])
+AC_SUBST(LIBAVAHI_COMPAT_LIBDNS_SD_VERSION_INFO, [1:0:0])
+AC_SUBST(LIBAVAHI_COMPAT_HOWL_VERSION_INFO, [0:0:0])
+AC_SUBST(HOWL_COMPAT_VERSION, [0.9.8])
+
 if type -p stow > /dev/null && test -d /usr/local/stow ; then
     AC_MSG_NOTICE([*** Found /usr/local/stow: default install prefix set to /usr/local/stow/${PACKAGE_NAME}-${PACKAGE_VERSION} ***])
     ac_default_prefix="/usr/local/stow/${PACKAGE_NAME}-${PACKAGE_VERSION}"
@@ -46,12 +56,98 @@ AC_PROG_GCC_TRADITIONAL
 # libtool stuff
 AC_PROG_LIBTOOL
 
+ACX_PTHREAD(,AC_MSG_ERROR([Missing POSIX Threads support]))
+
+#
+# Host specific stuffs
+#
+case "$host" in
+  *-netbsd* | *-knetbsd*-gnu)
+    AC_DEFINE([NETBSD],[],[ Support for NetBSD])
+    avahi_platform=netbsd
+    ;;
+  *-openbsd*)
+    AC_DEFINE([OPENBSD],[],[ Support for OpenBSD])
+    avahi_platform=openbsd
+    ;;
+  *-solaris*)
+    AC_DEFINE([SOLARIS],[],[ Support for Sun Solaris])
+    avahi_platform=solaris
+    ;;
+  *-linux*)
+    AC_DEFINE([LINUX],[],[ Support for GNU/Linux])
+    avahi_platform=linux
+    ;;
+  *-freebsd* | *-kfreebsd*-gnu)
+    AC_DEFINE([FREEBSD],[],[ Support for FreeBSD])
+    avahi_platform=freebsd
+    ;;
+  *-apple-darwin*)
+    AC_DEFINE([DARWIN],[],[ Support for AppleDarwin])
+    avahi_platform=darwin
+    ;;
+esac
+
+#
+# Check for netlink.h
+#
+AC_CHECK_HEADER(linux/netlink.h, 
+HAVE_NETLINK=yes
+AC_DEFINE([HAVE_NETLINK],[],[Support for Linux netlink])
+, [], [
+#include <sys/socket.h>
+#include <asm/types.h>
+])
+
+AM_CONDITIONAL(HAVE_NETLINK, [ test x"$HAVE_NETLINK" = xyes ])
+
+#
+# Check for net/route.h
+#
+AC_CHECK_HEADER(net/route.h, 
+HAVE_PF_ROUTE=yes
+AC_DEFINE([HAVE_PF_ROUTE],[],[Support for PF_ROUTE])
+, [], [
+#include <sys/types.h>
+#include <sys/socket.h>
+])
+
+AM_CONDITIONAL(HAVE_PF_ROUTE, [ test x"$HAVE_PF_ROUTE" = xyes ])
+
+#
+# Check for struct ip_mreqn
+#
+AC_MSG_CHECKING(for struct ip_mreqn)
+AC_TRY_COMPILE([#include <netinet/in.h>], [
+       struct ip_mreqn mreq;
+       mreq.imr_address.s_addr = 0;
+], [
+       # Yes, we have it...
+       AC_MSG_RESULT(yes)
+       AC_DEFINE([HAVE_STRUCT_IP_MREQN],[],[Support for struct ip_mreqn])
+], [
+       # We'll just have to try and use struct ip_mreq
+       AC_MSG_RESULT(no)
+       AC_MSG_CHECKING(for struct ip_mreq)
+       AC_TRY_COMPILE([#include <netinet/in.h>], [
+               struct ip_mreq mreq;
+               mreq.imr_interface.s_addr = 0;
+       ], [
+               # Yes, we have it...
+               AC_MSG_RESULT(yes)
+               AC_DEFINE([HAVE_STRUCT_IP_MREQ],[],[Support for struct ip_mreq])
+       ], [
+               # No multicast support
+                       AC_MSG_RESULT(no)
+       ])
+])
+
 #
 # Detecting the linux distribution for specific things like init scripts.
 #
 AC_ARG_WITH(distro, AS_HELP_STRING([--with-distro=DISTRO],[Specify the Linux distribution to target: One of debian, gentoo, archlinux or none]))
 if test "z$with_distro" = "z"; then
-    #AC_CHECK_FILE(/etc/SuSE-release,with_distro="suse")
+    AC_CHECK_FILE(/etc/SuSE-release,with_distro="suse")
     AC_CHECK_FILE(/etc/gentoo-release,with_distro="gentoo")
     AC_CHECK_FILE(/etc/arch-release,with_distro="archlinux")
     AC_CHECK_FILE(/etc/debian_version,with_distro="debian")
@@ -63,7 +159,7 @@ if test "z$with_distro" = "z"; then
     exit 1
 else
 case $with_distro in
-    debian|gentoo|archlinux|none)
+    debian|gentoo|archlinux|suse|none)
      ;;
     *)
      AC_MSG_ERROR([Your distribution (${with_distro}) is not yet supported, init scripts and dbus configuration will not be installed! (patches welcome), you can specify --with-distro=none to skip this check])
@@ -71,7 +167,7 @@ case $with_distro in
 esac
 fi
 
-#AM_CONDITIONAL(TARGET_SUSE, test x"$with_distro" = xsuse)
+AM_CONDITIONAL(TARGET_SUSE, test x"$with_distro" = xsuse)
 AM_CONDITIONAL(TARGET_GENTOO, test x"$with_distro" = xgentoo)
 AM_CONDITIONAL(TARGET_DEBIAN, test x"$with_distro" = xdebian)
 AM_CONDITIONAL(TARGET_ARCHLINUX, test x"$with_distro" = xarchlinux)
@@ -133,13 +229,15 @@ AC_FUNC_MEMCMP
 AC_FUNC_SELECT_ARGTYPES
 AC_FUNC_MALLOC
 AC_FUNC_REALLOC
-AC_CHECK_FUNCS([gethostname memchr memmove memset mkdir select socket strchr strcspn strdup strerror strrchr strspn strstr uname setresuid setreuid strcasecmp gettimeofday putenv strncasecmp])
+AC_CHECK_FUNCS([gethostname memchr memmove memset mkdir select socket strchr strcspn strdup strerror strrchr strspn strstr uname setresuid setreuid strcasecmp gettimeofday putenv strncasecmp strclpy])
 
 AC_FUNC_CHOWN
 AC_FUNC_STAT
 AC_TYPE_MODE_T
 AC_TYPE_PID_T
 
+AC_CHECK_DECLS(environ)
+
 # Check for pkg-config manually first, as if its not installed the
 # PKG_PROG_PKG_CONFIG macro won't be defined.
 AC_CHECK_PROG(have_pkg_config, pkg-config, yes, no)
@@ -241,9 +339,6 @@ if test "x$HAVE_GTK" = "xyes" ; then
         PKG_CHECK_MODULES(GLADE20, [ libglade-2.0 >= 2.4.0 ])
         AC_SUBST(GLADE20_CFLAGS)
         AC_SUBST(GLADE20_LIBS)
-
-        interfacesdir="${datadir}/${PACKAGE}/interfaces/"
-        AC_SUBST(interfacesdir)
 fi
 AM_CONDITIONAL(HAVE_GTK, test "x$HAVE_GTK" = "xyes")
 
@@ -265,7 +360,7 @@ AC_ARG_WITH(dbus-system-socket, AS_HELP_STRING([--with-dbus-system-address=<addr
 if test "x$HAVE_DBUS" = "xyes" ; then
     AC_DEFINE(HAVE_DBUS, 1, [Whether we have D-BUS or not])
 
-    PKG_CHECK_MODULES(DBUS, [ dbus-1 >= 0.30 ])
+    PKG_CHECK_MODULES(DBUS, [ dbus-1 >= 0.34 ])
     DBUS_CFLAGS="$DBUS_CFLAGS -DDBUS_API_SUBJECT_TO_CHANGE"
     AC_SUBST(DBUS_CFLAGS)
     AC_SUBST(DBUS_LIBS)
@@ -280,9 +375,19 @@ if test "x$HAVE_DBUS" = "xyes" ; then
     if ! test -z "$with_dbus_system_address" ; then
         DBUS_SYSTEM_BUS_DEFAULT_ADDRESS="$with_dbus_system_address"
     else
-        # Note this default path is hardcoded in D-BUS and should
-        # not use $localstatedir
+        # This is ugly, but D-BUS doesn't export this address for us
+        # so we have to guess, pretty much all setups i've seen have 
+        # it in /var/lib/dbus or /var/run/dbus, and its defaulted to
+        # /var/run upstream so we will try guess first then default
+        # to /var/run/dbus
+
         DBUS_SYSTEM_BUS_DEFAULT_ADDRESS="unix:path=/var/run/dbus/system_bus_socket"
+        TRY_SOCKETS="/var/lib/dbus/system_bus_socket /var/run/dbus/system_bus_socket"
+        for sock in $TRY_SOCKETS; do
+            if test -S $sock; then
+                DBUS_SYSTEM_BUS_DEFAULT_ADDRESS="unix:path=$sock"
+            fi
+        done
     fi
     AC_SUBST(DBUS_SYSTEM_BUS_DEFAULT_ADDRESS)
     
@@ -374,13 +479,65 @@ if test "x$HAVE_PYTHON" = "xyes" ; then
     fi
 
     AM_CHECK_PYMOD(socket,,,[AC_MSG_ERROR(Could not find Python module socket)])
-    AM_CHECK_PYMOD(dbm,,,[AC_MSG_ERROR(Could not find Python module dbm)])
-    AM_CHECK_PYMOD(anydbm,,,[AC_MSG_ERROR(Could not find Python module anydbm)])
+    AM_CHECK_PYMOD(gdbm,,,[AC_MSG_ERROR(Could not find Python module gdbm)])
 fi
 AM_CONDITIONAL(HAVE_PYTHON, [test "x$HAVE_PYTHON" = "xyes" ])
 AM_CONDITIONAL(HAVE_PYGTK, test "x$HAVE_PYGTK" = "xyes")
 AM_CONDITIONAL(HAVE_PYTHON_DBUS, test "x$HAVE_PYTHON_DBUS" = "xyes")
 
+#
+# Check for mono stuff
+#
+AC_ARG_ENABLE(mono,
+        AS_HELP_STRING([--disable-mono],[Disable mono bindings]),
+        [case "${enableval}" in
+                yes) HAVE_MONO=yes ;;
+                no)  HAVE_MONO=no ;;
+                *) AC_MSG_ERROR(bad value ${enableval} for --enable-mono) ;;
+        esac],
+        [HAVE_MONO=yes])
+
+AC_ARG_ENABLE(monodoc,
+        AS_HELP_STRING([--disable-monodoc],[Disable documentation for mono bindings]),
+        [case "${enableval}" in
+                yes) HAVE_MONODOC=yes ;;
+                no)  HAVE_MONODOC=no ;;
+                *) AC_MSG_ERROR(bad value ${enableval} for --enable-monodoc) ;;
+        esac],
+        [HAVE_MONODOC=yes])
+
+if test "x$HAVE_MONO" = "xyes" ; then
+        AC_PATH_PROG(MCS, mcs)
+        if test "x$MCS" = "x" ; then
+               AC_MSG_ERROR([Can not find "mcs" in your PATH])
+        fi
+
+        AC_PATH_PROG(GACUTIL, gacutil)
+        if test "x$GACUTIL" = "x" ; then
+                AC_MSG_ERROR([Can not find "gacutil" in your PATH])
+        fi
+
+        AC_SUBST(MCS)
+        AC_SUBST(GACUTIL)
+fi
+AM_CONDITIONAL(HAVE_MONO, test "x$HAVE_MONO" = "xyes")
+
+#
+# Check for monodoc stuff
+#
+if test "x$HAVE_MONODOC" = "xyes" ; then
+        PKG_CHECK_MODULES(MONODOC, [monodoc >= 1.1.8])
+        MONODOC_DIR=`$PKG_CONFIG --variable=sourcesdir monodoc`        
+
+        AC_PATH_PROG(MONODOCER, monodocer)
+        AC_PATH_PROG(MDASSEMBLER, mdassembler)
+
+        AC_SUBST(MONODOC_DIR)
+        AC_SUBST(MONODOCER)
+        AC_SUBST(MDASSEMBLER)
+fi
+AM_CONDITIONAL(HAVE_MONODOC, test "x$HAVE_MONODOC" = "xyes")
+
 #
 # Defining Avahi User and Group.
 #
@@ -410,6 +567,13 @@ avahi_socket="${avahi_runtime_dir}/avahi-daemon/socket"
 AC_SUBST(avahi_runtime_dir)
 AC_SUBST(avahi_socket)
 
+#
+# Avahi interfaces dir
+#
+if test "x$HAVE_PYTHON_DBUS" = "xyes" -o "x$HAVE_GTK" = "xyes"; then
+       interfacesdir="${datadir}/${PACKAGE}/interfaces/"
+       AC_SUBST(interfacesdir)
+fi
 
 #
 # Doxygen
@@ -450,6 +614,49 @@ fi
 
 AM_CONDITIONAL([USE_XMLTOMAN], [test "x$xmltoman" = xyes])
 
+#
+# Conditionally compile test and example programs
+#
+AC_ARG_ENABLE(tests,
+        AS_HELP_STRING([--enable-tests],[Enable building of tests and examples]),
+        [case "${enableval}" in
+                yes) ENABLE_TESTS=yes ;;
+                no)  ENABLE_TESTS=no ;;
+                *) AC_MSG_ERROR(bad value ${enableval} for --enable-tests) ;;
+        esac],
+        [ENABLE_TESTS=no])
+
+AM_CONDITIONAL([ENABLE_TESTS], [test "x$ENABLE_TESTS" = "xyes"])
+
+#
+# Optionally enable libdns_sd compatibility support
+#
+AC_ARG_ENABLE(compat-libdns_sd,
+        AS_HELP_STRING([--enable-compat-libdns_sd],[Enable compatibility layer for libdns_sd]),
+        [case "${enableval}" in
+                yes) ENABLE_COMPAT_LIBDNS_SD=yes ;;
+                no)  ENABLE_COMPAT_LIBDNS_SD=no ;;
+                *) AC_MSG_ERROR(bad value ${enableval} for --enable-compat-libdns_sd) ;;
+        esac],
+        [ENABLE_COMPAT_LIBDNS_SD=no])
+
+AM_CONDITIONAL([ENABLE_COMPAT_LIBDNS_SD], [test "x$ENABLE_COMPAT_LIBDNS_SD" = "xyes"])
+
+#
+# Optionally enable HOWL compatibility support
+#
+AC_ARG_ENABLE(compat-howl,
+        AS_HELP_STRING([--enable-compat-howl],[Enable compatibility layer for HOWL]),
+        [case "${enableval}" in
+                yes) ENABLE_COMPAT_HOWL=yes ;;
+                no)  ENABLE_COMPAT_HOWL=no ;;
+                *) AC_MSG_ERROR(bad value ${enableval} for --enable-compat-howl) ;;
+        esac],
+        [ENABLE_COMPAT_HOWL=no])
+
+AM_CONDITIONAL([ENABLE_COMPAT_HOWL], [test "x$ENABLE_COMPAT_HOWL" = "xyes"])
+
+
 # ==========================================================================
 AC_CONFIG_FILES([
 Makefile 
@@ -465,6 +672,7 @@ initscript/Makefile
 initscript/debian/Makefile
 initscript/gentoo/Makefile
 initscript/archlinux/Makefile
+initscript/suse/Makefile
 avahi-dnsconfd/Makefile
 avahi-utils/Makefile
 avahi-utils/avahi/Makefile
@@ -473,6 +681,10 @@ common/Makefile
 man/Makefile
 tests/Makefile
 service-type-database/Makefile
+avahi-sharp/Makefile
+avahi-compat-libdns_sd/Makefile
+avahi-compat-howl/Makefile
+avahi-compat-howl/samples/Makefile
 ])
 AC_OUTPUT
 
@@ -482,6 +694,8 @@ echo "
 
     prefix:                 ${prefix}
     sysconfdir:             ${sysconfdir}
+    localstatedir:          ${localstatedir}
+    avahi socket:           ${avahi_socket}
     dbus-1 system.d dir:    ${DBUS_SYS_DIR}
     dbus-1 version:         `pkg-config dbus-1 --modversion`
     dbus-1 system socket    ${DBUS_SYSTEM_BUS_DEFAULT_ADDRESS}
@@ -497,6 +711,7 @@ echo "
     Enable python-dbus:     ${HAVE_PYTHON_DBUS}
     Enable QT3:             ${HAVE_QT3}
     Enable QT4:             ${HAVE_QT4}
+    Enable Mono:            ${HAVE_MONO}
     Linux Distro:           ${with_distro}
     User for Avahi:         ${AVAHI_USER}
     Group for Avahi:        ${AVAHI_GROUP}
@@ -520,6 +735,14 @@ if test "x$BUILD_DAEMON" = "xyes" -a "x$HAVE_DBUS" = "xyes" ; then
     BUILD_CLIENT=yes
 fi
 
+if test "x$ENABLE_COMPAT_LIBDNS_SD" = "xyes" -a "x$BUILD_CLIENT" != "xyes" ; then
+   AC_MSG_ERROR([building avahi-compat-libdns_sd without building libavahi-client doesn't work])
+fi
+if test "x$ENABLE_COMPAT_HOWL" = "xyes" -a "x$BUILD_CLIENT" != "xyes" ; then
+   AC_MSG_ERROR([building avahi-compat-howl without building libavahi-client doesn't work])
+fi
+
+
 echo "
     Building libavahi-core              yes
     Building avahi-daemon:              ${BUILD_DAEMON}
@@ -530,4 +753,8 @@ echo "
     Building avahi-discover-standalone: ${HAVE_GTK}
     Building libavahi-qt3:              ${HAVE_QT3}
     Building libavahi-qt4:              ${HAVE_QT4}
+    Building avahi-sharp:               ${HAVE_MONO}
+    Building avahi-compat-libdns_sd:    ${ENABLE_COMPAT_LIBDNS_SD}
+    Building avahi-compat-howl:         ${ENABLE_COMPAT_HOWL}
+    Building tests:                     ${ENABLE_TESTS}
 "