syncevolution/configure-pre.in

512 lines
23 KiB
Plaintext
Raw Normal View History

dnl -*- mode: Autoconf; -*-
dnl Invoke autogen.sh to produce a configure script.
AC_INIT([syncevolution], [0.9.1+1.0alpha1])
AM_INIT_AUTOMAKE([tar-ustar])
AC_CONFIG_MACRO_DIR([m4])
define([SYNTHESISSRC_REPO], [])
dnl Specify git revisions/branches without prefix, i.e., without 'origin'.
dnl We'll sort that out below.
define([SYNTHESISSRC_REVISION], [syncevolution-0.9])
AM_CONFIG_HEADER(config.h)
AC_LIBTOOL_DLOPEN
dnl default device type (see AC_DEFINE below)
DEVICE_TYPE=workstation
AC_ARG_WITH(synthesis-src,
AS_HELP_STRING([--with-synthesis-src=<base directory|svn URL|git URL>],
[Specifies location of the Synthesis root directory.
Use this when the Synthesis library is to
be compiled as part of the SyncEvolution compilation. In release
versions of SyncEvolution, a copy of the Synthesis code is bundled
under 'src/synthesis' and compiled unless something else is
specified. --with-synthesis-src can be given a path to sources
checked out already, a Subversion repository URL or a git repository
URL. When given a repository URL, then the configure script
will checkout the sources into 'src/synthesis-workdir' or
update that working copy if the directory already exists.
Default: bundled source in src/synthesis (in released SyncEvolution sources),
SYNTHESISSRC_REPO otherwise.]),
[SYNTHESISSRC="$withval"
test "$SYNTHESISSRC" != "yes" || AC_MSG_ERROR([--with-synthesis-src requires a parameter (base directory, svn URL or git URL)])],
[SYNTHESISSRC="$SYNTHESISSRC_DEF"; REVISION="SYNTHESISSRC_REVISION"])
AC_ARG_WITH(syncml-engines,
AS_HELP_STRING([--with-syncml-engines=client|server|both],
[Determines which kind of support for SyncML is compiled and linked into SyncEvolution. Default is both. Currently has no effect.]),
[SYNCML_ENGINES="$withval"], SYNCML_ENGINES=both)
case $SYNCML_ENGINES in both|client) AC_DEFINE(ENABLE_SYNCML_CLIENT, 1, [SyncML client support available]);; esac
case $SYNCML_ENGINES in both|server) AC_DEFINE(ENABLE_SYNCML_SERVER, 1, [SyncML server support available]);; esac
case $SYNCML_ENGINES in both|server|client) true;; *) AC_ERROR([Invalid value for --with-syncml-engines: $SYNCML_ENGINES]);; esac
AC_ARG_WITH(synthesis-username,
AS_HELP_STRING([--with-synthesis-username=<svn username>],
[username to use when checking out --with-synthesis-src sources from Subversion, default 'guest']),
[USERNAME="$withval"], [USERNAME="guest"])
AC_ARG_WITH(synthesis-revision,
AS_HELP_STRING([--with-synthesis-revision=<git tag/branch/hash or Subversion revision>],
[Identifies which source revision to use from --with-synthesis-src repository, empty string stands for latest. Default for default --synthesis-src: SYNTHESISSRC_REVISION]),
[REVISION="$withval"])
AC_ARG_ENABLE(shared,
AS_HELP_STRING([--enable-shared],
[build backends as dynamically loadable modules]),
enable_shared="$enableval", enable_shared="no")
AC_ARG_ENABLE(static,
AS_HELP_STRING([--enable-static],
[build backends also as static libraries]),
enable_static="$enableval", enable_static="no")
AC_ARG_ENABLE(unit-tests,
AS_HELP_STRING([--enable-unit-tests],
[enables tests embedded in the source code of the library (changes content of executable)]),
enable_unit_tests="$enableval", enable_unit_tests="no")
AC_ARG_ENABLE(integration-tests,
AS_HELP_STRING([--enable-integration-tests],
[enables tests outside of the library (can be used together with normal builds of the library)]),
enable_integration_tests="$enableval", enable_integration_tests="no")
AC_ARG_ENABLE(static-cxx,
AS_HELP_STRING([--enable-static-cxx],
[build executables which contain libstdc++ instead of requiring suitable libstdc++.so to run]),
enable_static_cxx="$enableval", enable_static_cxx="no")
AC_ARG_ENABLE(evolution-compatibility,
AS_HELP_STRING([--enable-evolution-compatibility],
[build executables which only call Evolution via dlopen/dlsym: this avoids all hard dependencies on EDS shared objects, but might lead to crashes when their ABI changes]),
enable_evolution_compatibility="$enableval", enable_evolution_compatibility="no")
AC_ARG_ENABLE(developer-mode,
AC_HELP_STRING([--enable-developer-mode],
[The dynamic loadble backend libraries is loaded from current build directory instead of the standard library path]),
enable_developer_mode="$enableval", enable_developer_mode="no")
# Maemo hacks:
# - set the (non-standard!) DBUS_DEFAULT_TIMEOUT
# - wrap e_book_from_string() to fix invalid parameter
# - don't use UTF-8 encoding in Perl script
AC_ARG_ENABLE(maemo,
AS_HELP_STRING([--enable-maemo],
[enables some hacks which work around problems with the Maemo 2.0 until at least 3.0 EDS-Dbus]),
[AC_DEFINE(ENABLE_MAEMO, 1, [enable Maemo hacks])
DEVICE_TYPE=Maemo
MODIFY_SYNCCOMPARE='-e "s/use encoding/#use encoding/;" -e "s/:utf8//;"'])
AC_SUBST(MODIFY_SYNCCOMPARE)
AC_CHECK_HEADERS(signal.h dlfcn.h)
# cppunit needed?
if test $enable_unit_tests == "yes" || test $enable_integration_tests == yes; then
CPPUNIT_CXXFLAGS=`cppunit-config --cflags` || AC_MSG_ERROR("cppunit-config --cflags failed - is it installed?")
CPPUNIT_LDFLAGS=`cppunit-config --libs` || AC_MSG_ERROR("cppunit-config --libs failed - is it installed?")
fi
AC_SUBST(CPPUNIT_CXXFLAGS)
AC_SUBST(CPPUNIT_LDFLAGS)
if test "$enable_unit_tests" = "yes"; then
AC_DEFINE(ENABLE_UNIT_TESTS, 1, [enable unit tests inside the library's source code])
fi
AM_CONDITIONAL([ENABLE_UNIT_TESTS], [test "$enable_unit_tests" = "yes"])
AM_CONDITIONAL([ENABLE_TESTING], [test "$enable_unit_tests" = "yes" || test "$enable_integration_tests" = "yes" ])
if test $enable_static_cxx == "yes"; then
LIBS="$LIBS -L."
CORE_LDADD_DEP=libstdc++.a
fi
AC_SUBST(CORE_LDADD_DEP)
# Check for transport layer.
# Both curl and libsoup can be enabled and disabled explicitly.
# The default is to use libsoup if available, otherwise curl.
AC_MSG_CHECKING([for libcurl])
if LIBCURL_LIBS=`sh -c 'curl-config --libs' 2>&AS_MESSAGE_LOG_FD` && \
LIBCURL_CFLAGS=`sh -c 'curl-config --cflags' 2>&AS_MESSAGE_LOG_FD`; then
AC_MSG_RESULT([yes])
have_libcurl="yes"
else
AC_MSG_RESULT([no])
have_libcurl="no"
fi
PKG_CHECK_MODULES(LIBSOUP, libsoup-gnome-2.4,
[have_libsoup="yes"
AC_DEFINE(HAVE_LIBSOUP_SOUP_GNOME_FEATURES_H, 1, [enable GNOME specific libsoup])],
[PKG_CHECK_MODULES(LIBSOUP, libsoup-2.4,
have_libsoup="yes",
have_libsoup="no")])
OBEX Client Transport: in-process OBEX client (binding over Bluetooth, #5188) Outgoing OBEX connection implementation, only binds over Bluetooth now. Integrates with gmainloop so that the opertaions in the transport will not block the whole application. It uses Bluetooth sdp to automatically discovery the corresponding service channel providing SyncML service; the process is asynchronous. Callback sdp_source_cb and sdp_callback are used for this purpose. sdp_source_cb is a GIOChannel watch event callback which poll the underlying sdp socket, the sdp_callback is invoked by Bluez during processing sdp packets. Callback obex_fd_source and obex_callback are related to the OBEX processing (Connect, Put, Get, Disconnect). obex_fd_source is a GIOChannel event source callback which poll the underlying OBEX interface, the obex_callback is invoked by libopenobex when it needs to delivering events to the application. Connect is splited by several steps, see CONNECT_STATUS for more detail. Disconnect will be invoked when shutDown is called or processing in obex_fd_source_cb is failed, timeout occurs or user suspention. It will first try to send a "Disconnect" command to server and waiting for response. If such opertaion is failed it will disconnect anyway. It is important to call wait after shutdown to ensure the transport is properly cleaned up. Each callback function is protected by a "Try-catch" block to ensure no exception is thrown in the C stack. This is important otherwise the application will abort if an exception is really thrown. Using several smart pointers to avoid potential resource leak. After initialized the resource is held by ObexTransportAgent. Copy the smart pointer to the local stack entering a function and return to ObexTransportAgent if the whole process is correct and we want to continue. First, it ensures the resource is released at least during ObexTransportAgent destructing; Second, it can also try to release the resource as early as possible. For example cxxptr<ObexEvent> will release the resource during each wait() so that the underlying poll will not be processed if no transport activity is expected by the application. "SyncURL" is used consistently for the address of the remote peer to contact with.
2009-11-13 06:13:12 +01:00
PKG_CHECK_MODULES(LIBOPENOBEX, openobex, have_obex="yes", have_obex="no")
if test $have_obex == "yes"; then
AC_DEFINE(ENABLE_OBEX, 1, [define if openobex library is available])
PKG_CHECK_MODULES(BLUEZ, bluez, have_bluez="yes", have_bluez="no")
if test $have_bluez == "yes"; then
AC_DEFINE(ENABLE_BLUETOOTH, 1, [define if bluez library is available])
fi
fi
AM_CONDITIONAL([ENABLE_OBEX], [test "$have_obex" = "yes"])
AM_CONDITIONAL([ENABLE_BLUETOOTH], [test "$have_bluez" = "yes"])
AC_SUBST(LIBOPENOBEX_CFLAGS)
AC_SUBST(LIBOPENOBEX_LIBS)
AC_SUBST(BLUEZ_CFLAGS)
AC_SUBST(BLUEZ_LIBS)
TRANSPORT=
TRANSPORT_LIBS=
TRANSPORT_CFLAGS=
AC_ARG_WITH(ca-certificates,
AS_HELP_STRING([--with-ca-certificates=<colon separated list of files>],
[Specifies location of one or more CA certificate files.
This sets the default value for the SSLServerCertificates option.
Default: empty when using libcurl (because it has its own default),
a list of paths known to work for Debian and Red Hat otherwise.]),
[CA_CERTIFICATES="$withval"])
# choose default transport (mirrors code in EvolutionSyncClient::createTransportAgent())
if test "$have_libsoup" = "yes"; then
default_transport="libsoup"
elif test "$have_libcurl" = "yes"; then
default_transport="libcurl"
fi
AC_ARG_ENABLE(libcurl,
AC_HELP_STRING([--enable-libcurl],
[enable libcurl as transport layer]),
[ if test "$enableval" = "yes"; then
test "$have_libcurl" = "yes" || AC_MSG_ERROR([libcurl not found])
TRANSPORT="$TRANSPORT libcurl"
TRANSPORT_LIBS="$TRANSPORT_LIBS $LIBCURL_LIBS"
TRANSPORT_CFLAGS="$TRANSPORT_CFLAGS $LIBCURL_CFLAGS"
AC_DEFINE(ENABLE_LIBCURL, 1, [enable libcurl transport])
else
libcurl_disabled="yes"
fi ],
[ if test "$have_libcurl" = "yes" && test "$default_transport" = "libcurl" ; then
TRANSPORT="$TRANSPORT libcurl"
TRANSPORT_LIBS="$TRANSPORT_LIBS $LIBCURL_LIBS"
TRANSPORT_CFLAGS="$TRANSPORT_CFLAGS $LIBCURL_CFLAGS"
AC_DEFINE(ENABLE_LIBCURL, 1, [enable libcurl transport])
fi ])
AC_ARG_ENABLE(libsoup,
AC_HELP_STRING([--enable-libsoup],
[enable libsoup as transport layer]),
[ if test "$enableval" = "yes"; then
test "$have_libsoup" = "yes" || AC_MSG_ERROR([libsoup not found])
TRANSPORT="$TRANSPORT libsoup"
TRANSPORT_LIBS="$TRANSPORT_LIBS $LIBSOUP_LIBS"
TRANSPORT_CFLAGS="$TRANSPORT_CFLAGS $LIBSOUP_CFLAGS"
AC_DEFINE(ENABLE_LIBSOUP, 1, [enable libsoup transport])
else
libsoup_disabled="yes"
fi ],
[ if test "$have_libsoup" = "yes" && test "$default_transport" = "libsoup"; then
TRANSPORT="$TRANSPORT libsoup"
TRANSPORT_LIBS="$TRANSPORT_LIBS $LIBSOUP_LIBS"
TRANSPORT_CFLAGS="$TRANSPORT_CFLAGS $LIBSOUP_CFLAGS"
AC_DEFINE(ENABLE_LIBSOUP, 1, [enable libsoup transport])
fi ])
if test ! "$TRANSPORT" &&
test "$libsoup_disabled" != "yes" &&
OBEX Client Transport: in-process OBEX client (binding over Bluetooth, #5188) Outgoing OBEX connection implementation, only binds over Bluetooth now. Integrates with gmainloop so that the opertaions in the transport will not block the whole application. It uses Bluetooth sdp to automatically discovery the corresponding service channel providing SyncML service; the process is asynchronous. Callback sdp_source_cb and sdp_callback are used for this purpose. sdp_source_cb is a GIOChannel watch event callback which poll the underlying sdp socket, the sdp_callback is invoked by Bluez during processing sdp packets. Callback obex_fd_source and obex_callback are related to the OBEX processing (Connect, Put, Get, Disconnect). obex_fd_source is a GIOChannel event source callback which poll the underlying OBEX interface, the obex_callback is invoked by libopenobex when it needs to delivering events to the application. Connect is splited by several steps, see CONNECT_STATUS for more detail. Disconnect will be invoked when shutDown is called or processing in obex_fd_source_cb is failed, timeout occurs or user suspention. It will first try to send a "Disconnect" command to server and waiting for response. If such opertaion is failed it will disconnect anyway. It is important to call wait after shutdown to ensure the transport is properly cleaned up. Each callback function is protected by a "Try-catch" block to ensure no exception is thrown in the C stack. This is important otherwise the application will abort if an exception is really thrown. Using several smart pointers to avoid potential resource leak. After initialized the resource is held by ObexTransportAgent. Copy the smart pointer to the local stack entering a function and return to ObexTransportAgent if the whole process is correct and we want to continue. First, it ensures the resource is released at least during ObexTransportAgent destructing; Second, it can also try to release the resource as early as possible. For example cxxptr<ObexEvent> will release the resource during each wait() so that the underlying poll will not be processed if no transport activity is expected by the application. "SyncURL" is used consistently for the address of the remote peer to contact with.
2009-11-13 06:13:12 +01:00
test "$libcurl_disabled" != "yes" &&
test "$have_bluez" != "yes" ; then
AC_ERROR([no transport library found, configure with --disable-libcurl --disable-libsoup to continue anyway (only useful if users of libsyncevolution provide transport implementation)])
fi
# for libsoup we must specify the SSL certificate file outself
if test "$libsoup_disabled" != "yes" && test -z "$CA_CERTIFICATES"; then
# Debian and Red Hat paths
CA_CERTIFICATES="/etc/ssl/certs/ca-certificates.crt:/etc/pki/tls/certs/ca-bundle.crt:/usr/share/ssl/certs/ca-bundle.crt"
fi
AC_DEFINE_UNQUOTED(SYNCEVOLUTION_SSL_SERVER_CERTIFICATES, "$CA_CERTIFICATES", [default value for SSLServerCertificates option])
AC_SUBST(TRANSPORT_LIBS)
AC_SUBST(TRANSPORT_CFLAGS)
AC_ARG_ENABLE(ssl-certificate-check,
AC_HELP_STRING([--disable-ssl-certificate-check],
[Disable SSL certificate checking in all server
*templates*. Users can still choose to enable or
disable it in their configuration. This is necessary on
platforms where the transport library has problems
verifying the server's certificate (libsoup + Google,
http://bugzilla.moblin.org/show_bug.cgi?id=4551)]),
enable_ssl_certificate_check="$enableval",
enable_ssl_certificate_check="yes")
if test "$enable_ssl_certificate_check" = "yes"; then
AC_DEFINE(ENABLE_SSL_CERTIFICATE_CHECK, 1, [enable SSL certificate check in server templates])
fi
2009-04-07 21:11:55 +02:00
# for dbus interface file mangling
AC_PATH_PROG(XSLT, xsltproc)
AC_ARG_ENABLE(gui,
AS_HELP_STRING([--enable-gui[=gui type]],
[enables building the GTK+ UI that uses the SyncEvolution DBus API.
Options: gtk, moblin, all (builds sync-ui-gtk and sync-ui-moblin)
"gtk" is the default for --enable-gui without type. No GUI is
built when --enable-gui is not used.
--enable-gui implies --enable-dbus.]),
[ if test "$enableval" = "gtk" ; then
enable_gui=gtk
elif test "$enableval" = "yes" ; then
enable_gui=gtk
elif test "$enableval" = "moblin" ; then
enable_gui=moblin
elif test "$enableval" = "no" ; then
enable_gui=no
elif test "$enableval" = "all" ; then
enable_gui=all
else
AC_ERROR([Unknown gui type: '$enableval'])
fi
],
[ enable_gui=no ])
AM_CONDITIONAL([COND_GUI], [test "$enable_gui" != "no"])
if test $enable_gui == "moblin"; then
AC_DEFINE(USE_MOBLIN_UX, 1, [Use the MUX widget library])
fi
AC_ARG_ENABLE(dbus-service,
AS_HELP_STRING([--enable-dbus-service],
[enables building the dbus service executable and the wrapper library for it]),
enable_dbus_service="$enableval",
[if test $enable_gui == "no"; then
enable_dbus_service="no"
else
enable_dbus_service="yes"
fi])
AM_CONDITIONAL([COND_DBUS], [test "$enable_dbus_service" = "yes"])
if test $enable_gui != "no" && test $enable_dbus_service == "no"; then
AC_ERROR([cannot build GUI without building the D-Bus service])
fi
PKG_CHECK_MODULES(KEYRING, [gnome-keyring-1], HAVE_KEYRING=yes, HAVE_KEYRING=no)
if test $HAVE_KEYRING == "yes"; then
AC_DEFINE(USE_GNOME_KEYRING, 1, [define if gnome keyring should be used in dbus service])
PKG_CHECK_MODULES([KEYRING_2_20], [gnome-keyring-1 >= 2.20 ], KEYRING220=yes, KEYRING220=no)
if test $KEYRING220 == "yes"; then
AC_DEFINE(GNOME_KEYRING_220, 1, [define if gnome keyring version is above 2.20])
fi
fi
if test $enable_dbus_service == "yes"; then
PKG_CHECK_MODULES(DBUS_GLIB, dbus-glib-1 glib-2.0)
AC_PATH_PROG(DBUS_BINDING_TOOL, dbus-binding-tool)
AC_PATH_PROG(GLIB_GENMARSHAL, glib-genmarshal)
if test -z "$XSLT"; then
AC_ERROR([xsltproc not found, is required for D-Bus service])
fi
PKG_CHECK_MODULES(DBUS, dbus-1, dummy=yes,
AC_MSG_ERROR(libdbus-1 is required))
AC_CHECK_LIB(dbus-1, dbus_watch_get_unix_fd, dummy=yes,
AC_DEFINE(NEED_DBUS_WATCH_GET_UNIX_FD, 1,
[Define to 1 if you need the dbus_watch_get_unix_fd() function.]))
need_glib=yes
fi
AC_SUBST(DBUS_CFLAGS)
AC_SUBST(DBUS_LIBS)
AC_SUBST(DBUS_GLIB_CFLAGS)
AC_SUBST(DBUS_GLIB_LIBS)
AC_SUBST(KEYRING_CFLAGS)
AC_SUBST(KEYRING_LIBS)
AC_SUBST(LIBEXECDIR)
DBUS_SERVICES_DIR="${datadir}/dbus-1/services"
AC_SUBST(DBUS_SERVICES_DIR)
AC_DEFINE_UNQUOTED(DBUS_SERVICES_DIR, "$DBUS_SERVICES_DIR", [Location of D-Bus services directory])
# decide which sync-ui(s) we are building:
# sync-ui (in either GTK or Moblin mode) or both (in separate binaries)
case $enable_gui in
all) GUI_PROGRAMS='sync-ui-gtk${EXEEXT} sync-ui-moblin${EXEEXT}'; GUI_DESKTOP_FILES="sync-gtk.desktop sync-moblin.desktop";;
gtk|moblin) GUI_PROGRAMS='sync-ui${EXEEXT}'; GUI_DESKTOP_FILES="sync.desktop";;
no) GUI_PROGRAMS=; GUI_DESKTOP_FILES=;;
*) AC_ERROR([Unknown enable_gui type: '$enable_gui'])
esac
if test $enable_gui != "no"; then
gui_modules="glib-2.0 dbus-glib-1 >= 0.60 gtk+-2.0 libglade-2.0 gconf-2.0 gio-2.0 gnome-keyring-1"
PKG_CHECK_MODULES(UNIQUE, unique-1.0,
have_unique="yes",
have_unique="no")
if test $have_unique == "yes"; then
gui_modules="$gui_modules unique-1.0"
AC_DEFINE(ENABLE_UNIQUE, 1, [enable single-app-instance functionality])
fi
PKG_CHECK_MODULES(GUI, $gui_modules)
AC_PATH_PROG([GTK_BUILDER_CONV], gtk-builder-convert)
IT_PROG_INTLTOOL([0.37.1])
2009-05-06 09:44:40 +02:00
GETTEXT_PACKAGE=syncevolution
AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE", [The gettext package name])
AM_GLIB_GNU_GETTEXT
SYNCEVOLUTION_LOCALEDIR=[${datadir}/locale]
else
INTLTOOL_UPDATE="true"
USE_NLS="no"
fi
2009-05-06 09:44:40 +02:00
AC_SUBST(SYNCEVOLUTION_LOCALEDIR)
AC_SUBST(GETTEXT_PACKAGE)
AC_SUBST(GUI_CFLAGS)
AC_SUBST(GUI_LIBS)
AC_SUBST(GUI_PROGRAMS)
AC_SUBST(GUI_DESKTOP_FILES)
# Boost headers: boost/foreach.hpp is needed (1.33/Debian Etch
# doesn't have it, 1.34/Ubuntu 8.10 Hardy does). 1.35 is available
# as Debian Etch backport.
AX_BOOST_BASE(1.34)
# absolute patch to source of Synthesis client library
SYNTHESIS_SRC=no-synthesis-source
AC_SUBST(SYNTHESIS_SRC)
if test "$SYNTHESISSRC" && test "$SYNTHESISSRC" != "none"; then
# default: checkout a copy of the sources, remove it during maintainer-clean and distclean
CLEAN_CLIENT_SRC=synthesis-workdir
SYNTHESIS_SRC=$PWD/src/synthesis-workdir
AC_MSG_NOTICE( [updating the content of $SYNTHESIS_SRC from $SYNTHESISSRC] )
case "$SYNTHESISSRC" in
*.git) protocol=git;;
*://*) protocol="`echo $SYNTHESISSRC | sed -e 's;://.*;;'`";;
*) protocol="file";;
esac
mkdir -p src
case $protocol in
file)
# use existing copy of the sources
CLEAN_CLIENT_SRC=
case "$SYNTHESISSRC" in
/*) SYNTHESIS_SRC="$SYNTHESISSRC";;
*) SYNTHESIS_SRC="$PWD/$SYNTHESISSRC";;
esac
;;
*svn*|*http*)
SYNTHESISSRCREV="$SYNTHESISSRC"
if test "$REVISION"; then
revarg="-r $REVISION "
if `echo $SYNTHESISSRC | grep '@[0123456789]*'` >/dev/null; then
:
else
SYNTHESISSRCREV="$SYNTHESISSRC@$REVISION"
fi
fi
if test -d $SYNTHESIS_SRC ; then
( set -x; cd $SYNTHESIS_SRC && svn --username=$USERNAME switch $revarg "$SYNTHESISSRC" ) || AC_ERROR([updating from $SYNTHESISSRC failed])
else
(set -x; svn --username=$USERNAME checkout $revarg "$SYNTHESISSRCREV" $SYNTHESIS_SRC ) || AC_ERROR([checking out $SYNTHESISSRC failed])
fi
;;
*)
if test -d $SYNTHESIS_SRC ; then
( set -x; cd $SYNTHESIS_SRC && git fetch "$SYNTHESISSRC" ) || AC_ERROR([updating from $SYNTHESISSRC failed])
else
( set -x; git clone "$SYNTHESISSRC" $SYNTHESIS_SRC ) || AC_ERROR([cloning $SYNTHESISSRC failed])
fi
if test "$REVISION"; then
# git 1.6 finds tags and branches without explicit prefix, 1.4.4.4 doesn't
( set -x; cd $SYNTHESIS_SRC &&
(git checkout "$REVISION" ||
git checkout "tags/$REVISION" ||
git checkout "origin/$REVISION") ) || AC_ERROR([checking out $SYNTHESISSRC failed])
fi
;;
esac
elif test "$SYNTHESISSRC" != "none" && test -d $srcdir/src/synthesis; then
# use existing copy of the sources; beware of
# out-of-tree compilation
case $srcdir in
/*) SYNTHESIS_SRC="$srcdir/src/synthesis";;
*) SYNTHESIS_SRC="$PWD/$srcdir/src/synthesis";;
esac
elif test "$enable_shared" = "no"; then
# link against engine
PKG_CHECK_MODULES(SYNTHESIS, "synthesis")
SYNTHESIS_ENGINE="$SYNTHESIS_LIBS -lsynthesis"
else
# link against SDK alone, except in client-test
PKG_CHECK_MODULES(SYNTHESIS, "synthesis-sdk")
SYNTHESIS_ENGINE="`echo $SYNTHESIS_LIBS | sed -e 's/-lsynthesisstubs/-lsynthesis/'`"
fi
if test $SYNTHESIS_SRC != "no-synthesis-source"; then
( cd $SYNTHESIS_SRC && ( test -f configure || sh autogen.sh ) ) || AC_MSG_ERROR([--with-synthesis-src=$SYNTHESIS_SRC: no Synthesis configure script found in that directory])
SYNTHESIS_CONFIGURE="$SYNTHESIS_SRC/configure"
chmod u+x $SYNTHESIS_SRC/configure $SYNTHESIS_SRC/config.sub $SYNTHESIS_SRC/config.guess
# use local copy of the sources, with dependencies
# to trigger building the synthesis library
SYNTHESIS_SUBDIR=$PWD/src/build-synthesis
SYNTHESIS_CFLAGS="-I$SYNTHESIS_SUBDIR/src"
SYNTHESIS_LIBS="$SYNTHESIS_SUBDIR/src/libsynthesissdk.la"
if test "$enable_shared" = "no"; then
# link against the engines that were enabled
case $SYNCML_ENGINES in both|client|server) SYNTHESIS_LIBS="$SYNTHESIS_LIBS $SYNTHESIS_SUBDIR/src/libsynthesis.la";; esac
AC_DEFINE(ENABLE_SYNCML_LINKED, 1, [SyncML engines are linked directly])
else
SYNTHESIS_LIBS="$SYNTHESIS_LIBS $SYNTHESIS_SUBDIR/src/libsynthesisstubs.la"
fi
SYNTHESIS_DEP=$SYNTHESIS_LIBS
# for linking client-test
SYNTHESIS_ENGINE="$SYNTHESIS_SUBDIR/src/libsynthesis.la"
AC_MSG_NOTICE( [configuring the Synthesis library] )
if (set -x; mkdir -p $SYNTHESIS_SUBDIR && cd $SYNTHESIS_SUBDIR && eval "\$SHELL \"\$SYNTHESIS_CONFIGURE\" $ac_configure_args \"--srcdir=\$SYNTHESIS_SRC\" " ); then true; else
AC_MSG_ERROR( [configuring Synthesis library failed] )
fi
fi
AC_SUBST(SYNTHESIS_CFLAGS)
AC_SUBST(SYNTHESIS_LIBS)
AC_SUBST(SYNTHESIS)
AC_SUBST(SYNTHESIS_SUBDIR)
AC_SUBST(SYNTHESIS_DEP)
AC_SUBST(SYNTHESIS_ENGINE)
AC_SUBST(SYNTHESIS_LIB)
AC_SUBST(SYNTHESISSRC)
dnl select backends
BACKENDS=""
# AC_ARG_ENABLE_BACKEND(BACKEND, DIR, HELP-STRING, [ACTION-IF-GIVEN],
# [ACTION-IF-NOT-GIVEN])
#
# Same as AC_ARG_ENABLE(), but also tells configure that the
# backend exists.
#
# BACKEND = name of modules built in that dir as .la files without the
# obligatory sync prefix, e.g. "ebook"
# DIR = name of the directory inside src/backends, e.g., "evolution"
AC_DEFUN([AC_ARG_ENABLE_BACKEND],
[
AC_ARG_ENABLE($1, $3, $4, $5)
BACKENDS="$BACKENDS $1"
BACKEND_DEFINES="$BACKEND_DEFINES ENABLE_`echo $1 | tr a-z A-Z`"
for source in $2; do
SYNCSOURCES="$SYNCSOURCES backends/$2/sync$1.la"
done
])
AC_SUBST(SYNCSOURCES)
AC_SUBST(BACKEND_DEFINES)
BACKEND_CPPFLAGS="$SYNTHESIS_CFLAGS $EPACKAGE_CFLAGS $EBOOK_CFLAGS $ECAL_CFLAGS $GLIB_CFLAGS $BOOST_CPPFLAGS"
AC_SUBST(BACKEND_CPPFLAGS)
dnl src/backends/*/configure-sub.in and configure-post.in follow