dnl Process this file with autoconf to produce a configure script. AC_INIT(src/syncevolution.cpp) AM_INIT_AUTOMAKE(syncevolution, 0.7) AM_CONFIG_HEADER(config.h) AC_LIBTOOL_DLOPEN # command used to configure client library, including options CLIENT_CONFIGURE=$PWD/src/client-api/build/autotools/configure AC_ARG_WITH(sync4j, AS_HELP_STRING([--with-sync4j=], [specifies location of Sync4j client library]), [SYNC4J="$withval"]) AC_ARG_WITH(sync4j-src, AS_HELP_STRING([--with-sync4j-src=], [specifies location of the Sync4j '3x/client-api/native' source code]), [SYNC4JSRC="$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") # 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]) MODIFY_SYNCCOMPARE='-e "s/use encoding/#use encoding/;" -e "s/:utf8//;"']) AC_SUBST(MODIFY_SYNCCOMPARE) # Another Maemo hack: # - link main binaries against precompiled, patched libdbus-1.a AC_ARG_WITH(patched-libdbus, AS_HELP_STRING([--with-patched-libdbus=], [link main executables against special libdbus-1.a, for example one which supports DBUS_DEFAULT_TIMEOUT (required for Maemo)]), [LIBDBUS="-L$withval"]) AC_SUBST(LIBDBUS) AC_CHECK_HEADERS(signal.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?") CPPUNIT_TESTS=client-test fi AC_SUBST(CPPUNIT_CXXFLAGS) AC_SUBST(CPPUNIT_LDFLAGS) AC_SUBST(CPPUNIT_TESTS) if test $enable_unit_tests == "yes"; then CLIENT_CONFIGURE="$CLIENT_CONFIGURE --enable-unit-tests" AC_DEFINE(ENABLE_UNIT_TESTS, 1, [enable unit tests inside the library's source code]) fi if test $enable_integration_tests == "yes"; then CLIENT_CONFIGURE="$CLIENT_CONFIGURE --enable-integration-tests" AC_DEFINE(ENABLE_INTEGRATION_TESTS, 1, [enable unit tests outside of the library's source code]) fi if test $enable_static_cxx == "yes"; then LIBS="$LIBS -L." CORE_LDADD_DEP=libstdc++.a fi AC_SUBST(CORE_LDADD_DEP) # preserve src/client-api by default CLEAN_CLIENT_SRC= AC_SUBST(CLEAN_CLIENT_SRC) if test ! "$SYNC4J"; then if test "$SYNC4JSRC"; then # make a copy of the sources, remove it during maintainer-clean and distclean CLEAN_CLIENT_SRC=client-api AC_MSG_NOTICE( [updating the content of src/client-api from $SYNC4JSRC] ) mkdir -p src/client-api if cp --help 2>/dev/null | grep >/dev/null -e "--update"; then # GNU cp cp_opts="--update --archive" else cp_opts="-r" fi if cp $cp_opts $SYNC4JSRC/* src/client-api; then ( cd src/client-api/build/autotools && ( test -f configure || sh autogen.sh ) ) else AC_MSG_ERROR( [copying $SYNC4JSRC into src/client-api failed] ) fi find src/client-api/build/autotools/win* -name output | xargs rm -rf find src/client-api/build/autotools/include/* src/client-api/build/autotools/src/* -type d | xargs rm -rf find src/client-api -name "*~*" -o -name ".#*" -o -name "*.orig" -o -name "stamp-*" -o -name "*.o" -o -name "*.lo" -o -name .libs -o -name autom4te.cache -o -name config.status | xargs rm -rf else if test ! -d src/client-api; then if test -d $srcdir/src/client-api; then mkdir -p src case $srcdir in /*) ln -s $srcdir/src/client-api src/client-api;; *) ln -s $PWD/$srcdir/src/client-api src/client-api;; esac fi fi fi if test -f src/client-api/build/autotools/configure; then chmod u+x src/client-api/build/autotools/configure src/client-api/build/autotools/config.sub src/client-api/build/autotools/config.guess # use local copy of the sources SYNC4J_SUBDIR=$PWD/src/client-api.build SYNC4J_CFLAGS="-I$SYNC4J_SUBDIR/include/common -I$SYNC4J_SUBDIR/include -I$SYNC4J_SUBDIR/test" SYNC4J_LIBS="-L$SYNC4J_SUBDIR/src -lsync4j" AC_MSG_NOTICE( [configuring the client library] ) if (set -x; mkdir -p $SYNC4J_SUBDIR && cd $SYNC4J_SUBDIR && $CLIENT_CONFIGURE --build=$build_alias --host=$host_alias --target=$target_alias --disable-shared); then true; else AC_MSG_ERROR( [configuring client library failed] ) fi else AC_MSG_ERROR( [either --with-sync4j or --with-sync4j-src have to be used] ) fi else if test -f $SYNC4J/include/sync4j/common/spds/SyncItem.h; then SYNC4J_CFLAGS="-I$SYNC4J/include/sync4j/common -I$SYNC4J/include/sync4j" SYNC4J_LIBS="-L$SYNC4J/lib -lsync4j" else AC_MSG_ERROR( [$SYNC4J does seem to be valid (e.g. include/sync4j/spds/common/SyncItem.h is missing)] ) fi fi AC_SUBST(SYNC4J_CFLAGS) AC_SUBST(SYNC4J_LIBS) AC_SUBST(SYNC4J) AC_SUBST(SYNC4J_SUBDIR) AC_SUBST(SYNC4JSRC) pkg_emodules_10="libedataserver-1.0" pkg_emodules_11="libedataserver-1.1" pkg_emodules_12="libedataserver-1.2" pkg_ebook_10="libebook-1.0" pkg_ebook_11="libebook-1.1" pkg_ebook_12="libebook-1.2" pkg_ecal_10="libecal-1.0" pkg_ecal_11="libecal-1.1" pkg_ecal_12="libecal-1.2" export PKG_CONFIG_PATH=${PKG_CONFIG_PATH}:/usr/lib/pkgconfig:$prefix/lib/pkgconfig:/usr/local/lib/pkgconfig anymissing=" Please install the development packages of Evolution and/or set the PKG_CONFIG_PATH variable so that it points towards the .pc files of libedataserver, libecal and libebook (the latter two are optional). You can check that these packages are available by running pkg-config --list-all." evomissing="No compatible evolution-data-server was found. $anymissing" dnl check for Evolution core packages PKG_CHECK_MODULES(EPACKAGE, [$pkg_emodules_12], EDSFOUND=yes, [EDSFOUND=no]) if test "x${EDSFOUND}" = "xno"; then PKG_CHECK_MODULES(EPACKAGE, [$pkg_emodules_11], EDSFOUND=yes, [EDSFOUND=no]) if test "x${EDSFOUND}" = "xno"; then PKG_CHECK_MODULES(EPACKAGE, [$pkg_emodules_10], EDSFOUND=yes, [EDSFOUND=no]) fi fi AC_SUBST(EPACKAGE_CFLAGS) AC_SUBST(EPACKAGE_LIBS) dnl check for Evolution calendar packages PKG_CHECK_MODULES(ECAL, [$pkg_ecal_12], ECALFOUND=yes, [ECALFOUND=no]) if test "x${ECALFOUND}" = "xno"; then PKG_CHECK_MODULES(ECAL, [$pkg_ecal_11], ECALFOUND=yes, [ECALFOUND=no]) if test "x${ECALFOUND}" = "xno"; then PKG_CHECK_MODULES(ECAL, [$pkg_ecal_10], ECALFOUND=yes, [ECALFOUND=no]) fi fi AC_SUBST(ECAL_CFLAGS) AC_SUBST(ECAL_LIBS) dnl check for Evolution contact packages PKG_CHECK_MODULES(EBOOK, [$pkg_ebook_12], EBOOKFOUND=yes, [EBOOKFOUND=no]) if test "x${EBOOKFOUND}" = "xno"; then PKG_CHECK_MODULES(EBOOK, [$pkg_ebook_11], EBOOKFOUND=yes, [EBOOKFOUND=no]) if test "x${EBOOKFOUND}" = "xno"; then PKG_CHECK_MODULES(EBOOK, [$pkg_ebook_10], EBOOKFOUND=yes, [EBOOKFOUND=no]) fi fi AC_SUBST(EBOOK_CFLAGS) AC_SUBST(EBOOK_LIBS) dnl check for sqlite PKG_CHECK_MODULES(SQLITE, sqlite3, SQLITEFOUND=yes, [SQLITEFOUND=no]) AC_SUBST(SQLITE_CFLAGS) AC_SUBST(SQLITE_LIBS) dnl hard-coded settings for Mac OS X AddressBook ADDRESSBOOK_CFLAGS= ADDRESSBOOK_LIBS="-framework AddressBook -framework CoreFoundation" AC_SUBST(ADDRESSBOOK_CFLAGS) AC_SUBST(ADDRESSBOOK_LIBS) dnl select backends AC_ARG_ENABLE(ebook, AS_HELP_STRING([--disable-ebook], [disable access to addressbooks (default on if available)]), [enable_ebook="$enableval"], [enable_ebook=$EBOOKFOUND]) AC_ARG_ENABLE(ecal, AS_HELP_STRING([--disable-ecal], [disable access to calendars and tasks (default on if available)]), [enable_ecal="$enableval"], [enable_ecal=$ECALFOUND]) AC_ARG_ENABLE(sqlite, AS_HELP_STRING([--enable-sqlite], [enable access to PIM data stored in SQLite files (experimental, default off)]), [enable_sqlite="$enableval"], [enable_sqlite="no"]) AC_ARG_ENABLE(addressbook, AS_HELP_STRING([--enable-addressbook], [enable access to Mac OS X address book (default off)]), [enable_addressbook="$enableval"], [enable_addressbook="no"]) enable_evo="no" enable_any="no" if test "$enable_ebook" = "yes"; then test "x${EBOOKFOUND}" == "xyes" || AC_MSG_ERROR([--enable-ebook requires pkg-config information for libebook, which was not found]) AC_DEFINE(ENABLE_EBOOK, 1, [libebook available]) enable_evo="yes" enable_any="yes" fi if test "$enable_ecal" = "yes"; then test "x${ECALFOUND}" == "xyes" || AC_MSG_ERROR([--enable-ecal requires pkg-config information for libecal, which was not found"]) AC_DEFINE(ENABLE_ECAL, 1, [libecal available]) enable_evo="yes" enable_any="yes" fi if test "$enable_sqlite" = "yes"; then test "x${SQLITEFOUND}" == "xyes" || AC_MSG_ERROR([--enable-sqlite requires pkg-config information for sqlite3, which was not found]) AC_DEFINE(ENABLE_SQLITE, 1, [sqlite available]) enable_any="yes" fi if test "$enable_addressbook" = "yes"; then AC_DEFINE(ENABLE_ADDRESSBOOK, 1, [addressbook available]) enable_any="yes" else ADDRESSBOOK_LIBS= fi if test "$enable_any" = "no"; then AC_MSG_ERROR([no backend enabled - refusing to continue: $anymissing]) fi if test "$enable_evo" = "yes"; then if test "$EDSFOUND" = "yes"; then AC_DEFINE(HAVE_EDS, 1, [evolution-dataserver available]) else AC_MSG_ERROR($evomissing) fi else EPACKAGE_CFLAGS= EPACKAGE_LIBS= 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 AC_SUBST(GLIB_CFLAGS) AC_SUBST(GLIB_LIBS) dnl check for programs. AC_PROG_CXX AC_PROG_LIBTOOL AC_PROG_MAKE_SET dnl which backends are available? if test "$enable_ebook" == "yes"; then SYNCEVOLUTION_MODULES="$SYNCEVOLUTION_MODULES syncebook.la" fi if test "$enable_ecal" == "yes"; then SYNCEVOLUTION_MODULES="$SYNCEVOLUTION_MODULES syncecal.la" fi if test "$enable_sqlite" == "yes"; then SYNCEVOLUTION_MODULES="$SYNCEVOLUTION_MODULES syncsqlite.la" fi if test "$enable_addressbook" == "yes"; then SYNCEVOLUTION_MODULES="$SYNCEVOLUTION_MODULES syncaddressbook.la" fi dnl glib initialization is done only for libebook and libecal, not needed dnl otherwise even if found if test "$enable_ebook" != "yes" && test "$enable_ecal" != "yes"; then GLIB_CFLAGS= GLIB_LIBS= else if test "x${GLIBFOUND}" = "xyes"; then AC_DEFINE(HAVE_GLIB, 1, [glib found]) fi fi dnl figure out whether we link all code statically or as modules if test "$enable_shared" == "yes"; then SYNCEVOLUTION_LTLIBRARIES="$SYNCEVOLUTION_MODULES" AC_DEFINE(ENABLE_MODULES, 1, [enable dynamically opening sync source backends]) SYNCEVOLUTION_LDADD="-Wl,-export-dynamic -rpath '\$(pkglibdir)'" else SYNCEVOLUTION_LDADD="$SYNCEVOLUTION_MODULES" fi AC_SUBST(SYNCEVOLUTION_LTLIBRARIES) AC_SUBST(SYNCEVOLUTION_LDADD) AC_SUBST(SYNCEVOLUTION_MODULES) dnl a quick-and-dirty way to detect compilation for the iPhone if test "$host" == "arm-apple-darwin"; then AC_DEFINE(IPHONE, 1, [compiling for iPhone]) fi AC_CHECK_HEADERS(stdarg.h valgrind/valgrind.h execinfo.h) AC_OUTPUT([ Makefile src/Makefile etc/Makefile test/Makefile ])