summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrick Ohly <patrick.ohly@intel.com>2009-03-27 16:18:32 +0100
committerPatrick Ohly <patrick.ohly@intel.com>2009-03-27 16:22:31 +0100
commitb75f8c952daafcab85636acfb01bd8f7411e497d (patch)
tree34a846d0b15a846ada98a2a0e3ecd8ddb0c0ae88
parentfa3dcb756a3d41187cfa1306542d5994dad21976 (diff)
configure: fixed some checks (glib, boost, EDS)
Configure didn't check correctly for "glib": it invoked glib-config but didn't notice when that command was missing. Removed that check as it has been superseeded by "glib-2.0" anyway. Boost wasn't checked for at all, although the Boost header files are no longer bundled. libecal and libebook are now obligatory unless explicitly disabled. This catches a common mistake made by users: previously syncevolution would compile, but without Evolution support. The drawback is that on platforms without Evolution, support for it now must be disabled explicitly.
-rw-r--r--HACKING5
-rw-r--r--README28
-rw-r--r--configure-post.in8
-rw-r--r--configure-pre.in3
-rw-r--r--m4/ax_boost_base.m4223
-rw-r--r--src/backends/evolution/configure-sub.in12
6 files changed, 258 insertions, 21 deletions
diff --git a/HACKING b/HACKING
index aa1c9832..5967fc18 100644
--- a/HACKING
+++ b/HACKING
@@ -16,7 +16,8 @@ faster compilation) and will bundle the Synthesis sources in source
.tar.gz archives.
For doing development work the recommended configure line is:
- configure CXXFLAGS="-Wall -Werror -Wno-unknown-pragmas" \
+ configure CFLAGS="-g -Wall -Werror -Wno-unknown-pragmas" \
+ CXXFLAGS="-g -Wall -Werror -Wno-unknown-pragmas" \
--enable-unit-tests \
--enable-libcurl
@@ -180,6 +181,7 @@ Compiling for Mac OS X
Configuring for development:
<path>/configure --with-funambol-src=<path> \
--enable-addressbook \
+ --disable-ecal --disable-ebook \
CXXFLAGS="-Wall -Werror -Wno-unknown-pragmas" \
LDFLAGS="-framework Addressbook -framework CoreServices" \
CXXFLAGS=-g \
@@ -189,6 +191,7 @@ Compiling for Mac OS X
Compiling final release:
./configure --enable-addressbook \
+ --disable-ecal --disable-ebook \
CXXFLAGS="-O -g -arch i386 -arch ppc" \
CFLAGS="-O -g -arch i386 -arch ppc" \
LDFLAGS="-arch i386 -arch ppc -framework Addressbook -framework CoreServices" \
diff --git a/README b/README
index 1674bd6c..a479061a 100644
--- a/README
+++ b/README
@@ -644,25 +644,27 @@ source packages and will be used automatically. Instructions for
working with CVS sources directly are contained in the HACKING
document.
-Also needed are the Evolution and libcurl development files. On
-Debian 3.1 (Sarge) you can install them with:
- apt-get install libcurl3-dev evolution-data-server-dev libdb3-dev
-and optionally for the test suite:
- apt-get install libcppunit-dev
-
-On more recent systems like Debian 4.0 (Etch) the libecal and libebook
-development packages need to be installed separately and the name of
-the Curl library has changed. On such a distribution the following
-command installs all packages relevant SyncEvolution:
- apt-get install libcurl3-gnutls-dev evolution-data-server-dev \
- libdb3-dev libecal1.2-dev libebook1.2-dev
-The test framework is still installed with:
+Also needed are the Evolution and Boost development files. For HTTP,
+either Curl or libsoup can be used. Debian based systems the required
+packages can be installed with
+ apt-get install evolution-data-server-dev libdb3-dev \
+ libecal1.2-dev libebook1.2-dev \
+ libsoup2.4-dev \
+ libboost-dev
+
+The test framework also requires CPPUnit:
apt-get install libcppunit-dev
The build system is the normal autotools system. See INSTALL for
general instructions how to use that and "./configure --help" for
SyncEvolution specific options.
+Note that compiling without the Evolution development files is
+possible. But because this is usually not what people want,
+the configure script needs explicit --disable-ecal --disable-ebook
+parameters, otherwise it will refuse to compile without Evolution
+support.
+
Supporting SyncEvolution
------------------------
diff --git a/configure-post.in b/configure-post.in
index 10f8013c..2853fe4f 100644
--- a/configure-post.in
+++ b/configure-post.in
@@ -21,9 +21,11 @@ fi
dnl check for glib - calling g_type_init() is expected on Maemo
PKG_CHECK_MODULES(GLIB, "glib-2.0", GLIBFOUND=yes, GLIBFOUND=no)
-if test "x${GLIBFOUND}" = "xno"; then
- PKG_CHECK_MODULES(GLIB, "glib", GLIBFOUND=yes, GLIBFOUND=no)
-fi
+# This check here is broken on Ubuntu 8.04: it calls glib-config,
+# which isn't found, but the error is not detected by configure.
+#if test "x${GLIBFOUND}" = "xno"; then
+# PKG_CHECK_MODULES(GLIB, "glib", GLIBFOUND=yes, GLIBFOUND=no)
+#fi
AC_SUBST(GLIB_CFLAGS)
AC_SUBST(GLIB_LIBS)
diff --git a/configure-pre.in b/configure-pre.in
index c8bb2274..9751235e 100644
--- a/configure-pre.in
+++ b/configure-pre.in
@@ -185,6 +185,9 @@ fi
AC_SUBST(TRANSPORT_LIBS)
AC_SUBST(TRANSPORT_CFLAGS)
+# need Boost headers
+AX_BOOST_BASE()
+
# absolute patch to source of Synthesis client library
SYNTHESIS_SRC=no-synthesis-source
AC_SUBST(SYNTHESIS_SRC)
diff --git a/m4/ax_boost_base.m4 b/m4/ax_boost_base.m4
new file mode 100644
index 00000000..2e5afd09
--- /dev/null
+++ b/m4/ax_boost_base.m4
@@ -0,0 +1,223 @@
+# ===========================================================================
+# http://autoconf-archive.cryp.to/ax_boost_base.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+# AX_BOOST_BASE([MINIMUM-VERSION])
+#
+# DESCRIPTION
+#
+# Test for the Boost C++ libraries of a particular version (or newer)
+#
+# If no path to the installed boost library is given the macro searchs
+# under /usr, /usr/local, /opt and /opt/local and evaluates the
+# $BOOST_ROOT environment variable. Further documentation is available at
+# <http://randspringer.de/boost/index.html>.
+#
+# This macro calls:
+#
+# AC_SUBST(BOOST_CPPFLAGS) / AC_SUBST(BOOST_LDFLAGS)
+#
+# And sets:
+#
+# HAVE_BOOST
+#
+# LAST MODIFICATION
+#
+# 2008-04-12
+#
+# COPYLEFT
+#
+# Copyright (c) 2008 Thomas Porschberg <thomas@randspringer.de>
+#
+# Copying and distribution of this file, with or without modification, are
+# permitted in any medium without royalty provided the copyright notice
+# and this notice are preserved.
+
+AC_DEFUN([AX_BOOST_BASE],
+[
+AC_ARG_WITH([boost],
+ AS_HELP_STRING([--with-boost@<:@=DIR@:>@], [use boost (default is yes) - it is possible to specify the root directory for boost (optional)]),
+ [
+ if test "$withval" = "no"; then
+ want_boost="no"
+ elif test "$withval" = "yes"; then
+ want_boost="yes"
+ ac_boost_path=""
+ else
+ want_boost="yes"
+ ac_boost_path="$withval"
+ fi
+ ],
+ [want_boost="yes"])
+
+
+AC_ARG_WITH([boost-libdir],
+ AS_HELP_STRING([--with-boost-libdir=LIB_DIR],
+ [Force given directory for boost libraries. Note that this will overwrite library path detection, so use this parameter only if default library detection fails and you know exactly where your boost libraries are located.]),
+ [
+ if test -d $withval
+ then
+ ac_boost_lib_path="$withval"
+ else
+ AC_MSG_ERROR(--with-boost-libdir expected directory name)
+ fi
+ ],
+ [ac_boost_lib_path=""]
+)
+
+if test "x$want_boost" = "xyes"; then
+ boost_lib_version_req=ifelse([$1], ,1.20.0,$1)
+ boost_lib_version_req_shorten=`expr $boost_lib_version_req : '\([[0-9]]*\.[[0-9]]*\)'`
+ boost_lib_version_req_major=`expr $boost_lib_version_req : '\([[0-9]]*\)'`
+ boost_lib_version_req_minor=`expr $boost_lib_version_req : '[[0-9]]*\.\([[0-9]]*\)'`
+ boost_lib_version_req_sub_minor=`expr $boost_lib_version_req : '[[0-9]]*\.[[0-9]]*\.\([[0-9]]*\)'`
+ if test "x$boost_lib_version_req_sub_minor" = "x" ; then
+ boost_lib_version_req_sub_minor="0"
+ fi
+ WANT_BOOST_VERSION=`expr $boost_lib_version_req_major \* 100000 \+ $boost_lib_version_req_minor \* 100 \+ $boost_lib_version_req_sub_minor`
+ AC_MSG_CHECKING(for boostlib >= $boost_lib_version_req)
+ succeeded=no
+
+ dnl first we check the system location for boost libraries
+ dnl this location ist chosen if boost libraries are installed with the --layout=system option
+ dnl or if you install boost with RPM
+ if test "$ac_boost_path" != ""; then
+ BOOST_LDFLAGS="-L$ac_boost_path/lib"
+ BOOST_CPPFLAGS="-I$ac_boost_path/include"
+ else
+ for ac_boost_path_tmp in /usr /usr/local /opt /opt/local ; do
+ if test -d "$ac_boost_path_tmp/include/boost" && test -r "$ac_boost_path_tmp/include/boost"; then
+ BOOST_LDFLAGS="-L$ac_boost_path_tmp/lib"
+ BOOST_CPPFLAGS="-I$ac_boost_path_tmp/include"
+ break;
+ fi
+ done
+ fi
+
+ dnl overwrite ld flags if we have required special directory with
+ dnl --with-boost-libdir parameter
+ if test "$ac_boost_lib_path" != ""; then
+ BOOST_LDFLAGS="-L$ac_boost_lib_path"
+ fi
+
+ CPPFLAGS_SAVED="$CPPFLAGS"
+ CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
+ export CPPFLAGS
+
+ LDFLAGS_SAVED="$LDFLAGS"
+ LDFLAGS="$LDFLAGS $BOOST_LDFLAGS"
+ export LDFLAGS
+
+ AC_LANG_PUSH(C++)
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+ @%:@include <boost/version.hpp>
+ ]], [[
+ #if BOOST_VERSION >= $WANT_BOOST_VERSION
+ // Everything is okay
+ #else
+ # error Boost version is too old
+ #endif
+ ]])],[
+ AC_MSG_RESULT(yes)
+ succeeded=yes
+ found_system=yes
+ ],[
+ ])
+ AC_LANG_POP([C++])
+
+
+
+ dnl if we found no boost with system layout we search for boost libraries
+ dnl built and installed without the --layout=system option or for a staged(not installed) version
+ if test "x$succeeded" != "xyes"; then
+ _version=0
+ if test "$ac_boost_path" != ""; then
+ if test -d "$ac_boost_path" && test -r "$ac_boost_path"; then
+ for i in `ls -d $ac_boost_path/include/boost-* 2>/dev/null`; do
+ _version_tmp=`echo $i | sed "s#$ac_boost_path##" | sed 's/\/include\/boost-//' | sed 's/_/./'`
+ V_CHECK=`expr $_version_tmp \> $_version`
+ if test "$V_CHECK" = "1" ; then
+ _version=$_version_tmp
+ fi
+ VERSION_UNDERSCORE=`echo $_version | sed 's/\./_/'`
+ BOOST_CPPFLAGS="-I$ac_boost_path/include/boost-$VERSION_UNDERSCORE"
+ done
+ fi
+ else
+ for ac_boost_path in /usr /usr/local /opt /opt/local ; do
+ if test -d "$ac_boost_path" && test -r "$ac_boost_path"; then
+ for i in `ls -d $ac_boost_path/include/boost-* 2>/dev/null`; do
+ _version_tmp=`echo $i | sed "s#$ac_boost_path##" | sed 's/\/include\/boost-//' | sed 's/_/./'`
+ V_CHECK=`expr $_version_tmp \> $_version`
+ if test "$V_CHECK" = "1" ; then
+ _version=$_version_tmp
+ best_path=$ac_boost_path
+ fi
+ done
+ fi
+ done
+
+ VERSION_UNDERSCORE=`echo $_version | sed 's/\./_/'`
+ BOOST_CPPFLAGS="-I$best_path/include/boost-$VERSION_UNDERSCORE"
+ if test "$ac_boost_lib_path" = ""
+ then
+ BOOST_LDFLAGS="-L$best_path/lib"
+ fi
+
+ if test "x$BOOST_ROOT" != "x"; then
+ if test -d "$BOOST_ROOT" && test -r "$BOOST_ROOT" && test -d "$BOOST_ROOT/stage/lib" && test -r "$BOOST_ROOT/stage/lib"; then
+ version_dir=`expr //$BOOST_ROOT : '.*/\(.*\)'`
+ stage_version=`echo $version_dir | sed 's/boost_//' | sed 's/_/./g'`
+ stage_version_shorten=`expr $stage_version : '\([[0-9]]*\.[[0-9]]*\)'`
+ V_CHECK=`expr $stage_version_shorten \>\= $_version`
+ if test "$V_CHECK" = "1" -a "$ac_boost_lib_path" = "" ; then
+ AC_MSG_NOTICE(We will use a staged boost library from $BOOST_ROOT)
+ BOOST_CPPFLAGS="-I$BOOST_ROOT"
+ BOOST_LDFLAGS="-L$BOOST_ROOT/stage/lib"
+ fi
+ fi
+ fi
+ fi
+
+ CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
+ export CPPFLAGS
+ LDFLAGS="$LDFLAGS $BOOST_LDFLAGS"
+ export LDFLAGS
+
+ AC_LANG_PUSH(C++)
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+ @%:@include <boost/version.hpp>
+ ]], [[
+ #if BOOST_VERSION >= $WANT_BOOST_VERSION
+ // Everything is okay
+ #else
+ # error Boost version is too old
+ #endif
+ ]])],[
+ AC_MSG_RESULT(yes)
+ succeeded=yes
+ found_system=yes
+ ],[
+ ])
+ AC_LANG_POP([C++])
+ fi
+
+ if test "$succeeded" != "yes" ; then
+ if test "$_version" = "0" ; then
+ AC_MSG_ERROR([[We could not detect the boost libraries (version $boost_lib_version_req_shorten or higher). If you have a staged boost library (still not installed) please specify \$BOOST_ROOT in your environment and do not give a PATH to --with-boost option. If you are sure you have boost installed, then check your version number looking in <boost/version.hpp>. See http://randspringer.de/boost for more documentation.]])
+ else
+ AC_MSG_NOTICE([Your boost libraries seems to old (version $_version).])
+ fi
+ else
+ AC_SUBST(BOOST_CPPFLAGS)
+ AC_SUBST(BOOST_LDFLAGS)
+ AC_DEFINE(HAVE_BOOST,,[define if the Boost library is available])
+ fi
+
+ CPPFLAGS="$CPPFLAGS_SAVED"
+ LDFLAGS="$LDFLAGS_SAVED"
+fi
+
+])
diff --git a/src/backends/evolution/configure-sub.in b/src/backends/evolution/configure-sub.in
index ebee3169..37a9c949 100644
--- a/src/backends/evolution/configure-sub.in
+++ b/src/backends/evolution/configure-sub.in
@@ -60,11 +60,15 @@ AC_SUBST(EBOOK_LIBS)
BACKEND_CPPFLAGS="$BACKEND_CPPFLAGS $EBOOK_CFLAGS"
AC_ARG_ENABLE_BACKEND(ebook, evolution,
- AS_HELP_STRING([--disable-ebook], [disable access to Evolution addressbooks (default on if available)]),
- [enable_ebook="$enableval"], [enable_ebook=$EBOOKFOUND])
+ AS_HELP_STRING([--disable-ebook], [disable access to Evolution addressbooks (must be used to compile without it)]),
+ [enable_ebook="$enableval"],
+ [test "$EBOOKFOUND" = "yes" && enable_ebook="yes" ||
+ AC_MSG_ERROR([libebook not found. Use --disable-ebook to compile without or install the necessary development files.])])
AC_ARG_ENABLE_BACKEND(ecal, evolution,
- AS_HELP_STRING([--disable-ecal], [disable access to Evolution calendars and tasks (default on if available)]),
- [enable_ecal="$enableval"], [enable_ecal=$ECALFOUND])
+ AS_HELP_STRING([--disable-ecal], [disable access to Evolution calendars and tasks (must be used to compile without it)]),
+ [enable_ecal="$enableval"],
+ [test "$ECALFOUND" = "yes" && enable_ecal="yes" ||
+ AC_MSG_ERROR([libecal not found. Use --disable-ecal to compile without or install the necessary development files.])])
enable_evo="no"
if test "$enable_ebook" = "yes"; then