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.
This commit is contained in:
Patrick Ohly 2009-03-27 16:18:32 +01:00
parent fa3dcb756a
commit b75f8c952d
6 changed files with 257 additions and 20 deletions

View file

@ -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" \

26
README
View file

@ -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
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
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:
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
------------------------

View file

@ -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)

View file

@ -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)

223
m4/ax_boost_base.m4 Normal file
View file

@ -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
])

View file

@ -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