file layout restructuring, take II

Added missing files, finished automatic registration
of backends, Emacs mode for renamed files.


git-svn-id: https://zeitsenke.de/svn/SyncEvolution/trunk@685 15ad00c4-1369-45f4-8270-35d70d36bdcd
This commit is contained in:
Patrick Ohly 2008-07-30 17:30:10 +00:00
parent 5e8fa6eb94
commit 63e14ddc9c
12 changed files with 426 additions and 10 deletions

View File

@ -2,7 +2,7 @@
SUBDIRS = src test
EXTRA_DIST = HACKING description configure-pre.in configure-post.in autogen.sh
EXTRA_DIST = HACKING description configure-pre.in configure-post.in autogen.sh Makefile-gen.am
MAINTAINERCLEANFILES = Makefile.in config.h.in config.guess config.sub configure depcomp install-sh ltmain.sh missing mkinstalldirs
DISTCHECK_CONFIGURE_FLAGS = --with-sync4j=@FUNAMBOL@
@ -80,8 +80,11 @@ doc-pak : README NEWS COPYING
description-pak : description
cp $< $@
# TODO: make configurable
$(srcdir)/configure.in: configure-pre.in configure-post.in src/backends/addressbook/configure-sub.in src/backends/evolution/configure-sub.in src/backends/sqlite/configure-sub.in
# Because backend-related variables need to be substituted in
# Makefile-gen.am and configure.in we need an explicit rule to redo that work
# so that "make" rebuilds derived files correctly.
CONFIG_SUBS = @CONFIG_SUBS@
$(srcdir)/configure.in: configure-pre.in configure-post.in $(CONFIG_SUBS)
rm -f $@
cat $(srcdir)/configure-pre.in >>$@
for sub in $(srcdir)/src/backends/*/configure-sub.in; do \
@ -94,3 +97,7 @@ $(srcdir)/configure.in: configure-pre.in configure-post.in src/backends/addressb
echo BACKEND_REGISTRIES = `echo $(srcdir)/src/backends/*/*Register.cpp | sed -e 's;$(srcdir)/;;'` >>$@
echo "AC_SUBST(BACKEND_REGISTRIES)" >>$@
cat $(srcdir)/configure-post.in >>$@
$(srcdir)/Makefile.am: Makefile-gen.am
sed -e 's;[@]CONFIG_SUBS[@];$(CONFIG_SUBS);' \
$< >$@

View File

@ -7,8 +7,10 @@ set -e
rm -f configure.in
cat configure-pre.in >>configure.in
BACKENDS=
SUBS=
for sub in src/backends/*/configure-sub.in; do
BACKENDS="$BACKENDS `dirname $sub | sed -e 's;^src/;;'`"
SUBS="$SUBS $sub"
echo "# vvvvvvvvvvvvvv $sub vvvvvvvvvvvvvv" >>configure.in
cat $sub >>configure.in
echo "AC_CONFIG_FILES(`echo $sub | sed -e s/configure-sub.in/Makefile/`)" >>configure.in
@ -19,7 +21,10 @@ cat configure-post.in >>configure.in
sed -e "s;@BACKEND_REGISTRIES@;`echo src/backends/*/*Register.cpp | sed -e s%src/%%g`;" \
-e "s;@BACKENDS@;$BACKENDS;" \
src/Makefile.am.gen >src/Makefile.am
src/Makefile-gen.am >src/Makefile.am
sed -e "s;@CONFIG_SUBS@;$SUBS;" \
Makefile-gen.am >Makefile.am
libtoolize -c
aclocal

83
configure-post.in Normal file
View File

@ -0,0 +1,83 @@
dnl -*- mode: Autoconf; -*-
dnl Invoke autogen.sh to produce a configure script.
dnl configure-pre.in and src/backends/*/configure-sub.in and configure-post.in come before this part
AC_SUBST(BACKEND_CPPFLAGS)
enable_any="no"
backend_is_enabled () {
eval echo \${enable_${1}}
}
for backend in $BACKENDS; do
if test `backend_is_enabled $backend` == "yes"; then
enable_any="yes"
SYNCEVOLUTION_MODULES="$SYNCEVOLUTION_MODULES src/backends/sync${backend}.la"
fi
done
if test "$enable_any" = "no"; then
AC_MSG_ERROR([no backend enabled - refusing to continue: $anymissing])
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 glib initialization is done only if requested by some configure-sub.in,
dnl for not needed otherwise even if found
if test "$need_glib" != "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
AM_CONDITIONAL([ENABLE_MODULES], [test "$enable_shared" == "yes"])
if test "$enable_shared" == "yes"; then
AC_DEFINE(ENABLE_MODULES, 1, [enable dynamically opening sync source backends])
fi
AC_SUBST(SYNCEVOLUTION_LDADD)
dnl CXXFLAGS gets applied to SyncEvolution and the client library.
dnl For e.g. "-Wall -Werror" this might not be such a good idea;
dnl SYNCEVOLUTION_CXXFLAGS can be used instead. It applies only
dnl to the sources in the SyncEvolution repository.
AC_SUBST(SYNCEVOLUTION_CXXFLAGS)
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])
DEVICE_TYPE=iPhone
fi
dnl This string is sent as part of the SyncML DevInf (device
dnl information) structure to the server. All SyncEvolution platforms
dnl use "SyncEvolution" as HTTP user agent and "Mod" (model), so the
dnl device type is the only way how different kinds of clients can be
dnl distinguished.
AC_DEFINE_UNQUOTED(DEVICE_TYPE, "$DEVICE_TYPE", "SyncML DevInf DevType")
AC_CHECK_HEADERS(stdarg.h valgrind/valgrind.h execinfo.h)
echo
echo CONFIGURATION SUMMARY
for backend in $BACKENDS; do
eval echo $backend: \${enable_${backend}}
done
echo
AC_CONFIG_FILES(Makefile src/Makefile src/core/Makefile test/Makefile)
AC_OUTPUT

View File

@ -194,15 +194,23 @@ AC_SUBST(FUNAMBOLSRC)
dnl select backends
BACKENDS=""
# AC_ARG_ENABLE_BACKEND(BACKEND, HELP-STRING, [ACTION-IF-GIVEN],
# 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, $2, $3, $4)
AC_ARG_ENABLE($1, $3, $4, $5)
BACKENDS="$BACKENDS $1"
for source in $2; do
SYNCSOURCES="$SYNCSOURCES backends/$2/sync$1.la"
done
])
AC_SUBST(SYNCSOURCES)
dnl src/backends/*/configure-sub.in and configure-post.in follow

View File

@ -9,7 +9,7 @@ SYNCEVOLUTION_CXXFLAGS = @SYNCEVOLUTION_CXXFLAGS@
bin_PROGRAMS = syncevolution
bin_SCRIPTS = synccompare
SYNCSOURCES = backends/evolution/syncecal.la backends/evolution/syncebook.la backends/sqlite/syncsqlite.la backends/addressbook/syncaddressbook.la # TODO
SYNCSOURCES = @SYNCSOURCES@
# The Funambol libs should be inherited via libsyncevolution.la, but
# somehow that didn't work when enabling shared objects (probably
# because only a static libfunambol.a is built, which relies on
@ -20,7 +20,7 @@ else
SYNCEVOLUTION_LDADD += $(SYNCSOURCES)
endif
EXTRA_PROGRAMS = client-test
EXTRA_DIST = shlibs.local Makefile.am.gen
EXTRA_DIST = shlibs.local Makefile-gen.am
check_PROGRAMS = @CPPUNIT_TESTS@
TESTS = @CPPUNIT_TESTS@
@ -170,9 +170,9 @@ valgrind : test
valgrind --leak-check=yes --suppressions=valgrind.supp ./test
# Because backend-related variables need to be substituted in
# Makefile.am.gen we need an explicit rule to redo that work
# Makefile-gen.am we need an explicit rule to redo that work
# so that "make" rebuilds derived files correctly.
$(srcdir)/Makefile.am: Makefile.am.gen
$(srcdir)/Makefile.am: Makefile-gen.am
sed -e 's;[@]BACKEND_REGISTRIES[@];$(BACKEND_REGISTRIES);' \
-e 's;[@]BACKENDS[@];$(BACKENDS);' \
$< >$@

View File

@ -0,0 +1,27 @@
AM_CPPFLAGS = -I$(srcdir)/../../core @EPACKAGE_CFLAGS@ @EBOOK_CFLAGS@ @ECAL_CFLAGS@ @GLIB_CFLAGS@ @FUNAMBOL_CFLAGS@
# applies to sources in SyncEvolution repository, but not
# the Funambol C++ client library
SYNCEVOLUTION_CXXFLAGS = @SYNCEVOLUTION_CXXFLAGS@
EXTRA_DIST = configure-sub.in
SYNCSOURCES = syncaddressbook.la
MOSTLYCLEANFILES = $(SYNCSOURCES)
if ENABLE_MODULES
pkglib_LTLIBRARIES = $(SYNCSOURCES)
else
noinst_LTLIBRARIES = $(SYNCSOURCES)
endif
MAINTAINERCLEANFILES = Makefile.in
SYNCADDRESSBOOK_SOURCES = \
AddressBookSource.h \
AddressBookConstants.cpp \
AddressBookSource.cpp
syncaddressbook_la_SOURCES = $(SYNCADDRESSBOOK_SOURCES)
syncaddressbook_la_LIBADD = @ADDRESSBOOK_LIBS@
syncaddressbook_la_LDFLAGS = -module -rpath '$(pkglibdir)'
syncaddressbook_la_CXXFLAGS = $(SYNCEVOLUTION_CXXFLAGS)

View File

@ -0,0 +1,23 @@
dnl -*- mode: Autoconf; -*-
dnl Invoke autogen.sh to produce a configure script.
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)
BACKEND_CPPFLAGS="$BACKEND_CPPFLAGS $ADDRESSBOOK_CFLAGS"
AC_ARG_ENABLE_BACKEND(addressbook, addressbook,
AS_HELP_STRING([--enable-addressbook], [enable access to Mac OS X address book (default off)]),
[enable_addressbook="$enableval"], [enable_addressbook="no"])
if test "$enable_addressbook" = "yes"; then
AC_DEFINE(ENABLE_ADDRESSBOOK, 1, [addressbook available])
DEVICE_TYPE=MacOS_X
enable_any="yes"
else
ADDRESSBOOK_LIBS=
fi

View File

@ -0,0 +1,52 @@
AM_CPPFLAGS = -I$(srcdir)/../../core @EPACKAGE_CFLAGS@ @EBOOK_CFLAGS@ @ECAL_CFLAGS@ @GLIB_CFLAGS@ @FUNAMBOL_CFLAGS@
# applies to sources in SyncEvolution repository, but not
# the Funambol C++ client library
SYNCEVOLUTION_CXXFLAGS = @SYNCEVOLUTION_CXXFLAGS@
EXTRA_DIST = configure-sub.in
SYNCSOURCES = syncecal.la syncebook.la
MOSTLYCLEANFILES = $(SYNCSOURCES)
if ENABLE_MODULES
pkglib_LTLIBRARIES = $(SYNCSOURCES)
else
noinst_LTLIBRARIES = $(SYNCSOURCES)
endif
MAINTAINERCLEANFILES = Makefile.in
SYNCECAL_SOURCES = \
EvolutionCalendarSource.h \
EvolutionMemoSource.h \
EvolutionCalendarSource.cpp \
EvolutionMemoSource.cpp
if ENABLE_ECAL
SYNCECAL_SOURCES += \
libical/icalstrdup.c \
libical/icalstrdup.h \
e-cal-check-timezones.c \
e-cal-check-timezones.h
endif
SYNCEBOOK_SOURCES = \
EvolutionContactSource.h \
EvolutionContactSource.cpp
syncecal_la_SOURCES = $(SYNCECAL_SOURCES)
syncecal_la_LIBADD = @ECAL_LIBS@ ../../core/libsyncevolution.la
# _GNU_SOURCE and -ldl for libical.c + dlsym():
syncecal_la_CPPFLAGS = -D_GNU_SOURCE \
-De_cal_check_timezones=syncevolution_check_timezones \
-De_cal_tzlookup_ecal=syncevolution_tzlookup_ecal \
-De_cal_tzlookup_icomp=syncevolution_tzlookup_icomp \
-De_cal_match_tzid=syncevolution_match_tzid \
$(AM_CPPFLAGS)
syncecal_la_LDFLAGS = -module -rpath '$(pkglibdir)' -ldl
syncecal_la_CXXFLAGS = $(SYNCEVOLUTION_CXXFLAGS)
syncebook_la_SOURCES = $(SYNCEBOOK_SOURCES)
syncebook_la_LIBADD = @EBOOK_LIBS@ ../../core/libsyncevolution.la
syncebook_la_LDFLAGS = -module -rpath '$(pkglibdir)'
syncebook_la_CXXFLAGS = $(SYNCEVOLUTION_CXXFLAGS)

View File

@ -0,0 +1,94 @@
dnl -*- mode: Autoconf; -*-
dnl Invoke autogen.sh to produce a configure script.
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"
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)
BACKEND_CPPFLAGS="$BACKEND_CPPFLAGS $EPACKAGE_CFLAGS"
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)
BACKEND_CPPFLAGS="$BACKEND_CPPFLAGS $ECAL_CFLAGS"
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)
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])
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])
enable_evo="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"
fi
AM_CONDITIONAL([ENABLE_ECAL], [test "$enable_ecal" == "yes"])
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"
fi
need_glib="yes"
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

View File

@ -0,0 +1,28 @@
AM_CPPFLAGS = -I$(srcdir)/../../core @EPACKAGE_CFLAGS@ @EBOOK_CFLAGS@ @ECAL_CFLAGS@ @SQLITE_CFLAGS@ @FUNAMBOL_CFLAGS@
# applies to sources in SyncEvolution repository, but not
# the Funambol C++ client library
SYNCEVOLUTION_CXXFLAGS = @SYNCEVOLUTION_CXXFLAGS@
EXTRA_DIST = configure-sub.in
SYNCSOURCES = syncsqlite.la
MOSTLYCLEANFILES = $(SYNCSOURCES)
if ENABLE_MODULES
pkglib_LTLIBRARIES = $(SYNCSOURCES)
else
noinst_LTLIBRARIES = $(SYNCSOURCES)
endif
MAINTAINERCLEANFILES = Makefile.in
SYNCSQLITE_SOURCES = \
SQLiteUtil.h \
SQLiteUtil.cpp \
SQLiteContactSource.h \
SQLiteContactSource.cpp
syncsqlite_la_SOURCES = $(SYNCSQLITE_SOURCES)
syncsqlite_la_LIBADD = @SQLITE_LIBS@
syncsqlite_la_LDFLAGS = -module -rpath '$(pkglibdir)'
syncsqlite_la_CXXFLAGS = $(SYNCEVOLUTION_CXXFLAGS)

View File

@ -0,0 +1,18 @@
dnl -*- mode: Autoconf; -*-
dnl Invoke autogen.sh to produce a configure script.
dnl check for sqlite
PKG_CHECK_MODULES(SQLITE, sqlite3, SQLITEFOUND=yes, [SQLITEFOUND=no])
AC_SUBST(SQLITE_CFLAGS)
AC_SUBST(SQLITE_LIBS)
BACKEND_CPPFLAGS="$BACKEND_CPPFLAGS $SQLITE_CFLAGS"
AC_ARG_ENABLE_BACKEND(sqlite, sqlite,
AS_HELP_STRING([--enable-sqlite], [enable access to PIM data stored in SQLite files (experimental, default off)]),
[enable_sqlite="$enableval"], [enable_sqlite="no"])
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])
fi

71
src/core/Makefile.am Normal file
View File

@ -0,0 +1,71 @@
AM_CPPFLAGS = @BACKEND_CPPFLAGS@ @GLIB_CFLAGS@ @FUNAMBOL_CFLAGS@
# applies to sources in SyncEvolution repository, but not
# the Funambol C++ client library
SYNCEVOLUTION_CXXFLAGS = @SYNCEVOLUTION_CXXFLAGS@
SYNCEVOLUTION_LDADD = @SYNCEVOLUTION_LDADD@
MAINTAINERCLEANFILES = Makefile.in
if ENABLE_MODULES
pkglib_LTLIBRARIES = libsyncevolution.la
else
noinst_LTLIBRARIES = libsyncevolution.la
endif
VOCL_SOURCES = \
vocl/VObject.h \
vocl/VProperty.h \
vocl/VConverter.h \
vocl/posixadapter.h \
\
vocl/VObject.cpp \
vocl/VProperty.cpp \
vocl/VConverter.cpp
CORE_SOURCES = \
ConfigTree.h \
ConfigNode.h \
VolatileConfigNode.h \
VolatileConfigTree.h \
EvolutionSmartPtr.h \
\
SyncEvolutionUtil.cpp \
SyncEvolutionUtil.h \
\
SyncEvolutionCmdline.cpp \
SyncEvolutionCmdline.h \
\
EvolutionSyncSource.h \
EvolutionSyncSource.cpp \
\
EvolutionSyncClient.h \
EvolutionSyncClient.cpp \
\
SyncEvolutionConfig.h \
SyncEvolutionConfig.cpp \
\
FilterConfigNode.h \
FilterConfigNode.cpp \
\
SafeConfigNode.h \
SafeConfigNode.cpp \
\
PrefixConfigNode.h \
PrefixConfigNode.cpp \
\
FileConfigNode.h \
FileConfigNode.cpp \
\
FileConfigTree.h \
FileConfigTree.cpp \
\
TrackingSyncSource.h \
TrackingSyncSource.cpp \
\
$(VOCL_SOURCES)
libsyncevolution_la_SOURCES = $(CORE_SOURCES)
libsyncevolution_la_LIBADD = @FUNAMBOL_LIBS@ @EPACKAGE_LIBS@ @GLIB_LIBS@ @LIBS@
libsyncevolution_la_CXXFLAGS = $(SYNCEVOLUTION_CXXFLAGS)