[evolution-data-server] Splits libebook into two libraries.



commit 70fa6d5902dea98811648967f1a031229a83cdf6
Author: Tristan Van Berkom <tristanvb openismus com>
Date:   Fri Feb 15 17:26:30 2013 +0900

    Splits libebook into two libraries.
    
    This clears the way for Direct Read Access APIs to be integrated,
    since EBookClient now needs to access EDataBook apis, a common
    library is needed to share all the addressbook related objects
    related to EContact so that it can be used by both the server
    side addressbook backends and EDataBook, as well as EBookClient.
    
    Essentially this properly splits things up and avoids a nasty
    circular dependency issue.

 addressbook/Makefile.am                            |    2 +-
 addressbook/libebook-contacts/Makefile.am          |  151 ++++++++++++++++++++
 .../e-address-western.c                            |    0
 .../e-address-western.h                            |    4 +-
 .../e-book-contacts-enumtypes.c.template           |   38 +++++
 .../e-book-contacts-enumtypes.h.template           |   27 ++++
 .../libebook-contacts/e-book-contacts-marshal.list |    6 +
 .../libebook-contacts/e-book-contacts-types.c      |   58 ++++++++
 .../libebook-contacts/e-book-contacts-types.h      |  145 +++++++++++++++++++
 .../{libebook => libebook-contacts}/e-book-query.c |    0
 .../{libebook => libebook-contacts}/e-book-query.h |    6 +-
 .../{libebook => libebook-contacts}/e-contact.c    |    1 -
 .../{libebook => libebook-contacts}/e-contact.h    |    6 +-
 .../e-name-western-tables.h                        |    0
 .../e-name-western-tables.h.in                     |    0
 .../e-name-western.c                               |    0
 .../e-name-western.h                               |    4 +-
 .../e-phone-number-private.cpp                     |    0
 .../e-phone-number-private.h                       |    4 +-
 .../e-phone-number.c                               |    0
 .../e-phone-number.h                               |    4 +-
 .../e-source-backend-summary-setup.c               |    6 +-
 .../e-source-backend-summary-setup.h               |    8 +-
 .../{libebook => libebook-contacts}/e-vcard.c      |    0
 .../{libebook => libebook-contacts}/e-vcard.h      |    4 +-
 .../gen-western-table.py                           |    0
 addressbook/libebook-contacts/libebook-contacts.h  |   39 +++++
 .../libebook-contacts/libebook-contacts.pc.in      |   16 ++
 addressbook/libebook/Makefile.am                   |   44 ++-----
 addressbook/libebook/e-book-client-view.h          |   19 +---
 addressbook/libebook/e-book-client.c               |   53 -------
 addressbook/libebook/e-book-client.h               |   22 +---
 addressbook/libebook/e-book-types.h                |   75 +----------
 addressbook/libebook/e-book.c                      |    2 -
 addressbook/libebook/e-book.h                      |    3 +-
 addressbook/libebook/e-destination.h               |    2 +-
 addressbook/libebook/libebook.h                    |    8 +-
 addressbook/libedata-book/Makefile.am              |    2 +-
 addressbook/libedata-book/e-book-backend-cache.h   |    2 +-
 .../libedata-book/e-book-backend-db-cache.h        |    2 +-
 addressbook/libedata-book/e-book-backend-sexp.h    |    2 +-
 .../libedata-book/e-book-backend-sqlitedb-test.c   |    2 +-
 .../libedata-book/e-book-backend-sqlitedb.h        |    2 +-
 addressbook/libedata-book/e-book-backend-summary.h |    2 +-
 addressbook/libedata-book/e-book-backend.h         |    2 +-
 addressbook/libedata-book/e-data-book-view.h       |    2 +-
 addressbook/libedata-book/e-data-book.c            |    2 +-
 addressbook/libedata-book/libedata-book.h          |    2 +-
 configure.ac                                       |    9 ++
 docs/reference/addressbook/libebook/Makefile.am    |    1 +
 tests/libebook/vcard/Makefile.am                   |    2 +-
 tests/libebook/vcard/dump-vcard.c                  |    2 +-
 vala/EBook-1.2.metadata                            |   23 ---
 vala/EBookContacts-1.2.metadata                    |   23 +++
 vala/Makefile.am                                   |   39 +++++-
 vala/libebook-1.2.deps                             |    2 +-
 ...stom.vala => libebook-contacts-1.2-custom.vala} |    0
 vala/libebook-contacts-1.2.deps                    |    3 +
 58 files changed, 608 insertions(+), 275 deletions(-)
---
diff --git a/addressbook/Makefile.am b/addressbook/Makefile.am
index f61358d..62414f6 100644
--- a/addressbook/Makefile.am
+++ b/addressbook/Makefile.am
@@ -1,3 +1,3 @@
-SUBDIRS = libegdbus libebook libedata-book backends
+SUBDIRS = libegdbus libebook-contacts libedata-book libebook backends
 
 -include $(top_srcdir)/git.mk
diff --git a/addressbook/libebook-contacts/Makefile.am b/addressbook/libebook-contacts/Makefile.am
new file mode 100644
index 0000000..a5284f2
--- /dev/null
+++ b/addressbook/libebook-contacts/Makefile.am
@@ -0,0 +1,151 @@
+CLEANFILES=
+BUILT_SOURCES=
+
+ENUM_TYPES = e-book-contacts-types.h
+
+e-book-contacts-enumtypes.h: e-book-contacts-enumtypes.h.template $(ENUM_TYPES)
+       $(AM_V_GEN) (cd $(srcdir) && $(GLIB_MKENUMS) --template e-book-contacts-enumtypes.h.template 
$(ENUM_TYPES)) > $@
+
+e-book-contacts-enumtypes.c: e-book-contacts-enumtypes.c.template $(ENUM_TYPES)
+       $(AM_V_GEN) (cd $(srcdir) && $(GLIB_MKENUMS) --template e-book-contacts-enumtypes.c.template 
$(ENUM_TYPES)) > $@
+
+ENUM_GENERATED = e-book-contacts-enumtypes.h e-book-contacts-enumtypes.c
+
+# The marshallers
+MARSHAL_GENERATED = e-book-contacts-marshal.c e-book-contacts-marshal.h
+ EVO_MARSHAL_RULE@
+
+# The library
+lib_LTLIBRARIES = libebook-contacts-1.2.la
+
+libebook_contacts_1_2_la_CPPFLAGS = \
+       $(AM_CPPFLAGS)                                  \
+       -DLIBEBOOK_CONTACTS_COMPILATION                 \
+       -DLOCALEDIR=\""$(localedir)"\"                  \
+       -DG_LOG_DOMAIN=\"libebook-contacts\"            \
+       -I$(top_srcdir)                                 \
+       -I$(top_srcdir)/addressbook                     \
+       -I$(top_builddir)                               \
+       -I$(top_builddir)/addressbook                   \
+       $(EVOLUTION_ADDRESSBOOK_CFLAGS)                 \
+       $(CAMEL_CFLAGS)                                 \
+       $(CODE_COVERAGE_CFLAGS)                         \
+       $(NULL)
+
+libebook_contacts_1_2_la_SOURCES =                             \
+       $(ENUM_GENERATED)                               \
+       $(MARSHAL_GENERATED)                            \
+       e-address-western.c                             \
+       e-name-western.c                                \
+       e-name-western-tables.h                         \
+       e-book-query.c                                  \
+       e-contact.c                                     \
+       e-vcard.c                                       \
+       e-phone-number.c                                \
+       e-phone-number-private.h                        \
+       e-book-contacts-types.c                         \
+       e-source-backend-summary-setup.c
+
+libebook_contacts_1_2_la_LIBADD =                                      \
+       $(top_builddir)/camel/libcamel-1.2.la                   \
+       $(top_builddir)/libedataserver/libedataserver-1.2.la    \
+       $(EVOLUTION_ADDRESSBOOK_LIBS)                           \
+       $(CAMEL_LIBS)
+
+if ENABLE_PHONENUMBER
+libebook_contacts_1_2_la_SOURCES += e-phone-number-private.cpp
+libebook_contacts_1_2_la_CPPFLAGS += $(PHONENUMBER_INCLUDES)
+libebook_contacts_1_2_la_LIBADD += $(PHONENUMBER_LIBS)
+endif # ENABLE_PHONENUMBER
+
+libebook_contacts_1_2_la_LDFLAGS =                                                     \
+       -version-info $(LIBEBOOK_CONTACTS_CURRENT):$(LIBEBOOK_CONTACTS_REVISION):$(LIBEBOOK_CONTACTS_AGE) 
$(NO_UNDEFINED) \
+       $(CODE_COVERAGE_LDFLAGS) \
+       $(NULL)
+
+libebookcontactsincludedir = $(privincludedir)/libebook-contacts
+
+libebookcontactsinclude_HEADERS =                      \
+       libebook-contacts.h                             \
+       e-book-contacts-enumtypes.h                     \
+       e-book-contacts-types.h                         \
+       e-book-query.h                                  \
+       e-address-western.h                             \
+       e-name-western.h                                \
+       e-contact.h                                     \
+       e-vcard.h                                       \
+       e-phone-number.h                                \
+       e-source-backend-summary-setup.h
+
+%-$(API_VERSION).pc: %.pc
+        cp $< $@
+
+e-name-western-tables.h: e-name-western-tables.h.in
+       $(AM_V_GEN) ($(PYTHON) ${srcdir}/gen-western-table.py < $< > $  tmp && mv $  tmp $@) || rm -f $  tmp
+
+BUILT_SOURCES += e-name-western-tables.h
+
+pkgconfigdir = $(libdir)/pkgconfig
+pkgconfig_DATA = libebook-contacts-$(API_VERSION).pc
+
+
+-include $(INTROSPECTION_MAKEFILE)
+INTROSPECTION_GIRS =
+INTROSPECTION_SCANNER_ARGS = --add-include-path=$(top_builddir)/libedataserver \
+       --add-include-path=$(srcdir) --identifier-prefix=E --pkg-export \
+       libebook-contacts-1.2 --c-include="libebook-contacts/libebook-contacts.h" --warn-all
+INTROSPECTION_COMPILER_ARGS = --includedir=$(top_builddir)/libedataserver \
+       --includedir=$(srcdir)
+
+if HAVE_INTROSPECTION
+introspection_sources = $(libebook_contacts_1_2_la_SOURCES)
+EBookContacts-1.2.gir: libebook-contacts-1.2.la
+
+EBookContacts_1_2_gir_INCLUDES = GObject-2.0 GLib-2.0 libxml2-2.0 \
+       Gio-2.0 \
+       $(NULL)
+libxml_include = `$(PKG_CONFIG) --cflags libxml-2.0`
+EBookContacts_1_2_gir_CFLAGS = $(INCLUDES) \
+                      $(libxml_include) \
+                      -I$(top_srcdir) \
+                      -I$(top_builddir) \
+                      -I$(top_srcdir)/addressbook/ \
+                      -I$(top_builddir)/addressbook/ \
+                      -I$(top_srcdir)/addressbook/libebook-contacts \
+                      -I$(top_builddir)/addressbook/libebook-contacts \
+                       -DLIBEBOOK_CONTACTS_COMPILATION         \
+                      $(EVOLUTION_ADDRESSBOOK_CFLAGS) \
+                      $(CAMEL_CFLAGS) \
+                       $(NULL)
+EBookContacts_1_2_gir_SCANNERFLAGS = --include-uninstalled=$(top_builddir)/libedataserver/EDataServer-1.2.gir
+EBookContacts_1_2_gir_LIBS = \
+       libebook-contacts-1.2.la $(top_builddir)/libedataserver/libedataserver-1.2.la
+EBookContacts_1_2_gir_FILES = $(libebook_contacts_1_2_la_SOURCES) $(libebookcontactsinclude_HEADERS)
+
+INTROSPECTION_GIRS += EBookContacts-1.2.gir
+
+girdir = $(datadir)/gir-1.0
+dist_gir_DATA = $(INTROSPECTION_GIRS)
+
+typelibdir = $(libdir)/girepository-1.0
+typelib_DATA = $(INTROSPECTION_GIRS:.gir=.typelib)
+
+CLEANFILES += $(dist_gir_DATA) $(typelib_DATA)
+endif
+
+BUILT_SOURCES += $(ENUM_GENERATED) $(MARSHAL_GENERATED)
+CLEANFILES    += $(BUILT_SOURCES)
+DISTCLEANFILES = $(pkgconfig_DATA)
+
+EXTRA_DIST =                                           \
+       $(pkgconfig_DATA:-$(API_VERSION).pc=.pc.in)     \
+       e-book-contacts-enumtypes.h.template                    \
+       e-book-contacts-enumtypes.c.template                    \
+       e-book-contacts-marshal.list    \
+       e-name-western-tables.h.in                      \
+       gen-western-table.py
+
+dist-hook:
+       cd $(distdir); rm -f $(BUILT_SOURCES)
+
+-include $(top_srcdir)/git.mk
diff --git a/addressbook/libebook/e-address-western.c b/addressbook/libebook-contacts/e-address-western.c
similarity index 100%
rename from addressbook/libebook/e-address-western.c
rename to addressbook/libebook-contacts/e-address-western.c
diff --git a/addressbook/libebook/e-address-western.h b/addressbook/libebook-contacts/e-address-western.h
similarity index 76%
rename from addressbook/libebook/e-address-western.h
rename to addressbook/libebook-contacts/e-address-western.h
index aab4c00..a4dd8de 100644
--- a/addressbook/libebook/e-address-western.h
+++ b/addressbook/libebook-contacts/e-address-western.h
@@ -1,5 +1,5 @@
-#if !defined (__LIBEBOOK_H_INSIDE__) && !defined (LIBEBOOK_COMPILATION)
-#error "Only <libebook/libebook.h> should be included directly."
+#if !defined (__LIBEBOOK_CONTACTS_H_INSIDE__) && !defined (LIBEBOOK_CONTACTS_COMPILATION)
+#error "Only <libebook-contacts/libebook-contacts.h> should be included directly."
 #endif
 
 #ifndef __E_ADDRESS_WESTERN_H__
diff --git a/addressbook/libebook-contacts/e-book-contacts-enumtypes.c.template 
b/addressbook/libebook-contacts/e-book-contacts-enumtypes.c.template
new file mode 100644
index 0000000..127154b
--- /dev/null
+++ b/addressbook/libebook-contacts/e-book-contacts-enumtypes.c.template
@@ -0,0 +1,38 @@
+/*** BEGIN file-header ***/
+#include "e-book-contacts-enumtypes.h"
+
+/*** END file-header ***/
+
+/*** BEGIN file-production ***/
+/* enumerations from "@filename@" */
+#include "@filename@"
+
+/*** END file-production ***/
+
+/*** BEGIN value-header ***/
+GType
+ enum_name@_get_type (void)
+{
+       static GType the_type = 0;
+       
+       if (the_type == 0) {
+               static const G Type@Value values[] = {
+/*** END value-header ***/
+
+/*** BEGIN value-production ***/
+                       { @VALUENAME@,
+                         "@VALUENAME@",
+                         "@valuenick@" },
+/*** END value-production ***/
+
+/*** BEGIN value-tail ***/
+                       { 0, NULL, NULL }
+               };
+               the_type = g_ type@_register_static (
+                       g_intern_static_string ("@EnumName@"),
+                       values);
+       }
+       return the_type;
+}
+
+/*** END value-tail ***/
diff --git a/addressbook/libebook-contacts/e-book-contacts-enumtypes.h.template 
b/addressbook/libebook-contacts/e-book-contacts-enumtypes.h.template
new file mode 100644
index 0000000..69ff145
--- /dev/null
+++ b/addressbook/libebook-contacts/e-book-contacts-enumtypes.h.template
@@ -0,0 +1,27 @@
+/*** BEGIN file-header ***/
+#ifndef E_BOOK_CONTACTS_ENUMTYPES_H
+#define E_BOOK_CONTACTS_ENUMTYPES_H
+
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+/*** END file-header ***/
+
+/*** BEGIN file-production ***/
+/* Enumerations from "@filename@" */
+
+/*** END file-production ***/
+
+/*** BEGIN enumeration-production ***/
+#define E_TYPE_ ENUMSHORT@     (@enum_name _get_type())
+GType @enum_name _get_type     (void) G_GNUC_CONST;
+
+/*** END enumeration-production ***/
+
+/*** BEGIN file-tail ***/
+G_END_DECLS
+
+#endif /* E_BOOK_ENUMTYPES_H */
+/*** END file-tail ***/
+
diff --git a/addressbook/libebook-contacts/e-book-contacts-marshal.list 
b/addressbook/libebook-contacts/e-book-contacts-marshal.list
new file mode 100644
index 0000000..4f34146
--- /dev/null
+++ b/addressbook/libebook-contacts/e-book-contacts-marshal.list
@@ -0,0 +1,6 @@
+NONE:NONE
+NONE:BOOL
+NONE:POINTER
+NONE:STRING
+NONE:INT
+NONE:UINT,STRING
diff --git a/addressbook/libebook-contacts/e-book-contacts-types.c 
b/addressbook/libebook-contacts/e-book-contacts-types.c
new file mode 100644
index 0000000..5c5f64e
--- /dev/null
+++ b/addressbook/libebook-contacts/e-book-contacts-types.c
@@ -0,0 +1,58 @@
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <glib/gi18n-lib.h>
+
+#include "e-book-contacts-types.h"
+
+G_DEFINE_QUARK (e-book-client-error-quark, e_book_client_error)
+
+/**
+ * e_book_client_error_to_string:
+ *
+ * FIXME: Document me.
+ *
+ * Since: 3.2
+ **/
+const gchar *
+e_book_client_error_to_string (EBookClientError code)
+{
+       switch (code) {
+       case E_BOOK_CLIENT_ERROR_NO_SUCH_BOOK:
+               return _("No such book");
+       case E_BOOK_CLIENT_ERROR_CONTACT_NOT_FOUND:
+               return _("Contact not found");
+       case E_BOOK_CLIENT_ERROR_CONTACT_ID_ALREADY_EXISTS:
+               return _("Contact ID already exists");
+       case E_BOOK_CLIENT_ERROR_NO_SUCH_SOURCE:
+               return _("No such source");
+       case E_BOOK_CLIENT_ERROR_NO_SPACE:
+               return _("No space");
+       }
+
+       return _("Unknown error");
+}
+
+/**
+ * e_book_client_error_create:
+ * @code: an #EBookClientError code to create
+ * @custom_msg: custom message to use for the error; can be %NULL
+ *
+ * Returns: a new #GError containing an E_BOOK_CLIENT_ERROR of the given
+ * @code. If the @custom_msg is NULL, then the error message is
+ * the one returned from e_book_client_error_to_string() for the @code,
+ * otherwise the given message is used.
+ *
+ * Returned pointer should be freed with g_error_free().
+ *
+ * Since: 3.2
+ *
+ * Deprecated: 3.8: Just use the #GError API directly.
+ **/
+GError *
+e_book_client_error_create (EBookClientError code,
+                            const gchar *custom_msg)
+{
+       return g_error_new_literal (E_BOOK_CLIENT_ERROR, code, custom_msg ? custom_msg : 
e_book_client_error_to_string (code));
+}
diff --git a/addressbook/libebook-contacts/e-book-contacts-types.h 
b/addressbook/libebook-contacts/e-book-contacts-types.h
new file mode 100644
index 0000000..98725cb
--- /dev/null
+++ b/addressbook/libebook-contacts/e-book-contacts-types.h
@@ -0,0 +1,145 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * A client-side GObject which exposes the
+ * Evolution:BookListener interface.
+ *
+ * Author:
+ *   Nat Friedman (nat ximian com)
+ *
+ * Copyright (C) 1999-2008 Novell, Inc. (www.novell.com)
+ */
+
+#if !defined (__LIBEBOOK_CONTACTS_H_INSIDE__) && !defined (LIBEBOOK_CONTACTS_COMPILATION)
+#error "Only <libebook-contacts/libebook-contacts.h> should be included directly."
+#endif
+
+#ifndef __E_BOOK_CONTACTS_TYPES_H__
+#define __E_BOOK_CONTACTS_TYPES_H__
+
+#include <libebook-contacts/e-contact.h>
+
+/**
+ * E_BOOK_CLIENT_ERROR:
+ *
+ * FIXME: Document me.
+ *
+ * Since: 3.2
+ **/
+#define E_BOOK_CLIENT_ERROR e_book_client_error_quark ()
+
+G_BEGIN_DECLS
+
+/**
+ * EBookClientViewFlags:
+ * @E_BOOK_CLIENT_VIEW_FLAGS_NONE:
+ *   Symbolic value for no flags
+ * @E_BOOK_CLIENT_VIEW_FLAGS_NOTIFY_INITIAL:
+ *   If this flag is set then all contacts matching the view's query will
+ *   be sent as notifications when starting the view, otherwise only future
+ *   changes will be reported.  The default for a #EBookClientView is %TRUE.
+ *
+ * Flags that control the behaviour of an #EBookClientView.
+ *
+ * Since: 3.4
+ */
+typedef enum {
+       E_BOOK_CLIENT_VIEW_FLAGS_NONE           = 0,
+       E_BOOK_CLIENT_VIEW_FLAGS_NOTIFY_INITIAL = (1 << 0),
+} EBookClientViewFlags;
+
+/**
+ * EBookClientError:
+ *
+ * FIXME: Document me.
+ *
+ * Since: 3.2
+ **/
+typedef enum {
+       E_BOOK_CLIENT_ERROR_NO_SUCH_BOOK,
+       E_BOOK_CLIENT_ERROR_CONTACT_NOT_FOUND,
+       E_BOOK_CLIENT_ERROR_CONTACT_ID_ALREADY_EXISTS,
+       E_BOOK_CLIENT_ERROR_NO_SUCH_SOURCE,
+       E_BOOK_CLIENT_ERROR_NO_SPACE
+} EBookClientError;
+
+/**
+ * EDataBookStatus:
+ *
+ * XXX Document me!
+ *
+ * Since: 3.6
+ **/
+typedef enum {
+       E_DATA_BOOK_STATUS_SUCCESS,
+       E_DATA_BOOK_STATUS_BUSY,
+       E_DATA_BOOK_STATUS_REPOSITORY_OFFLINE,
+       E_DATA_BOOK_STATUS_PERMISSION_DENIED,
+       E_DATA_BOOK_STATUS_CONTACT_NOT_FOUND,
+       E_DATA_BOOK_STATUS_CONTACTID_ALREADY_EXISTS,
+       E_DATA_BOOK_STATUS_AUTHENTICATION_FAILED,
+       E_DATA_BOOK_STATUS_AUTHENTICATION_REQUIRED,
+       E_DATA_BOOK_STATUS_UNSUPPORTED_FIELD,
+       E_DATA_BOOK_STATUS_UNSUPPORTED_AUTHENTICATION_METHOD,
+       E_DATA_BOOK_STATUS_TLS_NOT_AVAILABLE,
+       E_DATA_BOOK_STATUS_NO_SUCH_BOOK,
+       E_DATA_BOOK_STATUS_BOOK_REMOVED,
+       E_DATA_BOOK_STATUS_OFFLINE_UNAVAILABLE,
+       E_DATA_BOOK_STATUS_SEARCH_SIZE_LIMIT_EXCEEDED,
+       E_DATA_BOOK_STATUS_SEARCH_TIME_LIMIT_EXCEEDED,
+       E_DATA_BOOK_STATUS_INVALID_QUERY,
+       E_DATA_BOOK_STATUS_QUERY_REFUSED,
+       E_DATA_BOOK_STATUS_COULD_NOT_CANCEL,
+       E_DATA_BOOK_STATUS_OTHER_ERROR,
+       E_DATA_BOOK_STATUS_INVALID_SERVER_VERSION,
+       E_DATA_BOOK_STATUS_NO_SPACE,
+       E_DATA_BOOK_STATUS_INVALID_ARG,
+       E_DATA_BOOK_STATUS_NOT_SUPPORTED,
+       E_DATA_BOOK_STATUS_NOT_OPENED,
+       E_DATA_BOOK_STATUS_OUT_OF_SYNC
+} EDataBookStatus;
+
+typedef enum {
+       E_BOOK_VIEW_STATUS_OK,
+       E_BOOK_VIEW_STATUS_TIME_LIMIT_EXCEEDED,
+       E_BOOK_VIEW_STATUS_SIZE_LIMIT_EXCEEDED,
+       E_BOOK_VIEW_ERROR_INVALID_QUERY,
+       E_BOOK_VIEW_ERROR_QUERY_REFUSED,
+       E_BOOK_VIEW_ERROR_OTHER_ERROR
+} EBookViewStatus;
+
+typedef enum {
+       E_BOOK_CHANGE_CARD_ADDED,
+       E_BOOK_CHANGE_CARD_DELETED,
+       E_BOOK_CHANGE_CARD_MODIFIED
+} EBookChangeType;
+
+typedef struct {
+       EBookChangeType  change_type;
+       EContact        *contact;
+} EBookChange;
+
+
+/**
+ * EBookIndexType:
+ * @E_BOOK_INDEX_PREFIX: An index suitable for searching contacts with a prefix pattern
+ * @E_BOOK_INDEX_SUFFIX: An index suitable for searching contacts with a suffix pattern
+ *
+ * The type of index defined by e_source_backend_summary_setup_set_indexed_fields()
+ */
+typedef enum {
+       E_BOOK_INDEX_PREFIX = 0,
+       E_BOOK_INDEX_SUFFIX
+} EBookIndexType;
+
+GQuark         e_book_client_error_quark       (void) G_GNUC_CONST;
+const gchar *  e_book_client_error_to_string   (EBookClientError code);
+
+
+#ifndef EDS_DISABLE_DEPRECATED
+GError *       e_book_client_error_create      (EBookClientError code,
+                                                const gchar *custom_msg);
+#endif /* E_BOOK_DISABLE_DEPRECATED */
+
+G_END_DECLS
+
+#endif /* __E_BOOK_CONTACTS_TYPES_H__ */
diff --git a/addressbook/libebook/e-book-query.c b/addressbook/libebook-contacts/e-book-query.c
similarity index 100%
rename from addressbook/libebook/e-book-query.c
rename to addressbook/libebook-contacts/e-book-query.c
diff --git a/addressbook/libebook/e-book-query.h b/addressbook/libebook-contacts/e-book-query.h
similarity index 93%
rename from addressbook/libebook/e-book-query.h
rename to addressbook/libebook-contacts/e-book-query.h
index 6e04f78..10ea1a4 100644
--- a/addressbook/libebook/e-book-query.h
+++ b/addressbook/libebook-contacts/e-book-query.h
@@ -1,12 +1,12 @@
 
-#if !defined (__LIBEBOOK_H_INSIDE__) && !defined (LIBEBOOK_COMPILATION)
-#error "Only <libebook/libebook.h> should be included directly."
+#if !defined (__LIBEBOOK_CONTACTS_H_INSIDE__) && !defined (LIBEBOOK_CONTACTS_COMPILATION)
+#error "Only <libebook-contacts/libebook-contacts.h> should be included directly."
 #endif
 
 #ifndef __E_BOOK_QUERY_H__
 #define __E_BOOK_QUERY_H__
 
-#include <libebook/e-contact.h>
+#include <libebook-contacts/e-contact.h>
 
 G_BEGIN_DECLS
 
diff --git a/addressbook/libebook/e-contact.c b/addressbook/libebook-contacts/e-contact.c
similarity index 99%
rename from addressbook/libebook/e-contact.c
rename to addressbook/libebook-contacts/e-contact.c
index b918d57..3749b67 100644
--- a/addressbook/libebook/e-contact.c
+++ b/addressbook/libebook-contacts/e-contact.c
@@ -30,7 +30,6 @@
 #include <gio/gio.h>
 #include <glib/gi18n-lib.h>
 #include "e-contact.h"
-#include "e-book.h"
 #include "e-name-western.h"
 
 #ifdef G_OS_WIN32
diff --git a/addressbook/libebook/e-contact.h b/addressbook/libebook-contacts/e-contact.h
similarity index 98%
rename from addressbook/libebook/e-contact.h
rename to addressbook/libebook-contacts/e-contact.h
index 3e56547..e698aa6 100644
--- a/addressbook/libebook/e-contact.h
+++ b/addressbook/libebook-contacts/e-contact.h
@@ -6,8 +6,8 @@
  * Copyright (C) 1999-2008 Novell, Inc. (www.novell.com)
  */
 
-#if !defined (__LIBEBOOK_H_INSIDE__) && !defined (LIBEBOOK_COMPILATION)
-#error "Only <libebook/libebook.h> should be included directly."
+#if !defined (__LIBEBOOK_CONTACTS_H_INSIDE__) && !defined (LIBEBOOK_CONTACTS_COMPILATION)
+#error "Only <libebook-contacts/libebook-contacts.h> should be included directly."
 #endif
 
 #ifndef E_CONTACT_H
@@ -15,7 +15,7 @@
 
 #include <time.h>
 #include <stdio.h>
-#include <libebook/e-vcard.h>
+#include <libebook-contacts/e-vcard.h>
 
 /* Standard GObject macros */
 #define E_TYPE_CONTACT \
diff --git a/addressbook/libebook/e-name-western-tables.h 
b/addressbook/libebook-contacts/e-name-western-tables.h
similarity index 100%
rename from addressbook/libebook/e-name-western-tables.h
rename to addressbook/libebook-contacts/e-name-western-tables.h
diff --git a/addressbook/libebook/e-name-western-tables.h.in 
b/addressbook/libebook-contacts/e-name-western-tables.h.in
similarity index 100%
rename from addressbook/libebook/e-name-western-tables.h.in
rename to addressbook/libebook-contacts/e-name-western-tables.h.in
diff --git a/addressbook/libebook/e-name-western.c b/addressbook/libebook-contacts/e-name-western.c
similarity index 100%
rename from addressbook/libebook/e-name-western.c
rename to addressbook/libebook-contacts/e-name-western.c
diff --git a/addressbook/libebook/e-name-western.h b/addressbook/libebook-contacts/e-name-western.h
similarity index 71%
rename from addressbook/libebook/e-name-western.h
rename to addressbook/libebook-contacts/e-name-western.h
index e2515bf..e1e6f1e 100644
--- a/addressbook/libebook/e-name-western.h
+++ b/addressbook/libebook-contacts/e-name-western.h
@@ -1,8 +1,8 @@
 #ifndef __E_NAME_WESTERN_H__
 #define __E_NAME_WESTERN_H__
 
-#if !defined (__LIBEBOOK_H_INSIDE__) && !defined (LIBEBOOK_COMPILATION)
-#error "Only <libebook/libebook.h> should be included directly."
+#if !defined (__LIBEBOOK_CONTACTS_H_INSIDE__) && !defined (LIBEBOOK_CONTACTS_COMPILATION)
+#error "Only <libebook-contacts/libebook-contacts.h> should be included directly."
 #endif
 
 #include <glib.h>
diff --git a/addressbook/libebook/e-phone-number-private.cpp 
b/addressbook/libebook-contacts/e-phone-number-private.cpp
similarity index 100%
rename from addressbook/libebook/e-phone-number-private.cpp
rename to addressbook/libebook-contacts/e-phone-number-private.cpp
diff --git a/addressbook/libebook/e-phone-number-private.h 
b/addressbook/libebook-contacts/e-phone-number-private.h
similarity index 94%
rename from addressbook/libebook/e-phone-number-private.h
rename to addressbook/libebook-contacts/e-phone-number-private.h
index 0817c38..ec9c6fe 100644
--- a/addressbook/libebook/e-phone-number-private.h
+++ b/addressbook/libebook-contacts/e-phone-number-private.h
@@ -31,8 +31,8 @@
  * phone numbers. Under the hood it uses Google's libphonenumber.
  **/
 
-#if !defined (__LIBEBOOK_H_INSIDE__) && !defined (LIBEBOOK_COMPILATION)
-#error "Only <libebook/libebook.h> should be included directly."
+#if !defined (__LIBEBOOK_CONTACTS_H_INSIDE__) && !defined (LIBEBOOK_CONTACTS_COMPILATION)
+#error "Only <libebook-contacts/libebook-contacts.h> should be included directly."
 #endif
 
 #ifndef E_PHONE_NUMBER_PRIVATE_H
diff --git a/addressbook/libebook/e-phone-number.c b/addressbook/libebook-contacts/e-phone-number.c
similarity index 100%
rename from addressbook/libebook/e-phone-number.c
rename to addressbook/libebook-contacts/e-phone-number.c
diff --git a/addressbook/libebook/e-phone-number.h b/addressbook/libebook-contacts/e-phone-number.h
similarity index 97%
rename from addressbook/libebook/e-phone-number.h
rename to addressbook/libebook-contacts/e-phone-number.h
index a4c6a40..3c39a40 100644
--- a/addressbook/libebook/e-phone-number.h
+++ b/addressbook/libebook-contacts/e-phone-number.h
@@ -28,8 +28,8 @@
  * phone numbers. Under the hood it uses Google's libphonenumber.
  **/
 
-#if !defined (__LIBEBOOK_H_INSIDE__) && !defined (LIBEBOOK_COMPILATION)
-#error "Only <libebook/libebook.h> should be included directly."
+#if !defined (__LIBEBOOK_CONTACTS_H_INSIDE__) && !defined (LIBEBOOK_CONTACTS_COMPILATION)
+#error "Only <libebook-contacts/libebook-contacts.h> should be included directly."
 #endif
 
 #ifndef E_PHONE_NUMBER_H
diff --git a/addressbook/libebook/e-source-backend-summary-setup.c 
b/addressbook/libebook-contacts/e-source-backend-summary-setup.c
similarity index 99%
rename from addressbook/libebook/e-source-backend-summary-setup.c
rename to addressbook/libebook-contacts/e-source-backend-summary-setup.c
index 018a941..fc134a9 100644
--- a/addressbook/libebook/e-source-backend-summary-setup.c
+++ b/addressbook/libebook-contacts/e-source-backend-summary-setup.c
@@ -22,7 +22,7 @@
 
 /**
  * SECTION: e-source-backend-summary-setup
- * @include: libebook/libebook.h
+ * @include: libebook-contacts/libebook-contacts.h
  * @short_description: #ESource extension to configure summary fields
  *
  * The #ESourceBackendSummarySetup extension configures which #EContactFields
@@ -32,7 +32,7 @@
  * Access the extension as follows:
  *
  * |[
- *   #include <libebook/libebook.h>
+ *   #include <libebook-contacts/libebook-contacts.h>
  *
  *   ESourceBackendSummarySetup *extension;
  *
@@ -46,7 +46,7 @@
  **/
 
 #include "e-source-backend-summary-setup.h"
-#include "e-book-enumtypes.h"
+#include "e-book-contacts-enumtypes.h"
 
 #define E_SOURCE_BACKEND_SUMMARY_GET_PRIVATE(obj)      \
        (G_TYPE_INSTANCE_GET_PRIVATE                    \
diff --git a/addressbook/libebook/e-source-backend-summary-setup.h 
b/addressbook/libebook-contacts/e-source-backend-summary-setup.h
similarity index 93%
rename from addressbook/libebook/e-source-backend-summary-setup.h
rename to addressbook/libebook-contacts/e-source-backend-summary-setup.h
index ecea646..8950a0e 100644
--- a/addressbook/libebook/e-source-backend-summary-setup.h
+++ b/addressbook/libebook-contacts/e-source-backend-summary-setup.h
@@ -20,16 +20,16 @@
  * Authors: Tristan Van Berkom <tristanvb openismus com>
  */
 
-#if !defined (__LIBEBOOK_H_INSIDE__) && !defined (LIBEBOOK_COMPILATION)
-#error "Only <libebook/libebook.h> should be included directly."
+#if !defined (__LIBEBOOK_CONTACTS_H_INSIDE__) && !defined (LIBEBOOK_CONTACTS_COMPILATION)
+#error "Only <libebook-contacts/libebook-contacts.h> should be included directly."
 #endif
 
 #ifndef E_SOURCE_BACKEND_SUMMARY_SETUP_H
 #define E_SOURCE_BACKEND_SUMMARY_SETUP_H
 
 #include <libedataserver/libedataserver.h>
-#include <libebook/e-contact.h>
-#include <libebook/e-book-types.h>
+#include <libebook-contacts/e-contact.h>
+#include <libebook-contacts/e-book-contacts-types.h>
 
 /* Standard GObject macros */
 #define E_TYPE_SOURCE_BACKEND_SUMMARY_SETUP \
diff --git a/addressbook/libebook/e-vcard.c b/addressbook/libebook-contacts/e-vcard.c
similarity index 100%
rename from addressbook/libebook/e-vcard.c
rename to addressbook/libebook-contacts/e-vcard.c
diff --git a/addressbook/libebook/e-vcard.h b/addressbook/libebook-contacts/e-vcard.h
similarity index 98%
rename from addressbook/libebook/e-vcard.h
rename to addressbook/libebook-contacts/e-vcard.h
index 5f4156c..9a39c0f 100644
--- a/addressbook/libebook/e-vcard.h
+++ b/addressbook/libebook-contacts/e-vcard.h
@@ -20,8 +20,8 @@
  * Author: Chris Toshok (toshok ximian com)
  */
 
-#if !defined (__LIBEBOOK_H_INSIDE__) && !defined (LIBEBOOK_COMPILATION)
-#error "Only <libebook/libebook.h> should be included directly."
+#if !defined (__LIBEBOOK_CONTACTS_H_INSIDE__) && !defined (LIBEBOOK_CONTACTS_COMPILATION)
+#error "Only <libebook-contacts/libebook-contacts.h> should be included directly."
 #endif
 
 #ifndef _EVCARD_H
diff --git a/addressbook/libebook/gen-western-table.py b/addressbook/libebook-contacts/gen-western-table.py
similarity index 100%
rename from addressbook/libebook/gen-western-table.py
rename to addressbook/libebook-contacts/gen-western-table.py
diff --git a/addressbook/libebook-contacts/libebook-contacts.h 
b/addressbook/libebook-contacts/libebook-contacts.h
new file mode 100644
index 0000000..1d02bf1
--- /dev/null
+++ b/addressbook/libebook-contacts/libebook-contacts.h
@@ -0,0 +1,39 @@
+/*
+ * libebook-contacts.h
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) version 3.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with the program; if not, see <http://www.gnu.org/licenses/>
+ *
+ */
+
+#ifndef LIBEBOOK_CONTACTS_H
+#define LIBEBOOK_CONTACTS_H
+
+#define __LIBEBOOK_CONTACTS_H_INSIDE__
+
+#include <libedataserver/libedataserver.h>
+
+#include <libebook-contacts/e-book-contacts-types.h>
+#include <libebook-contacts/e-book-query.h>
+#include <libebook-contacts/e-name-western.h>
+#include <libebook-contacts/e-address-western.h>
+#include <libebook-contacts/e-contact.h>
+#include <libebook-contacts/e-vcard.h>
+#include <libebook-contacts/e-book-contacts-enumtypes.h>
+#include <libebook-contacts/e-source-backend-summary-setup.h>
+#include <libebook-contacts/e-phone-number.h>
+
+#undef __LIBEBOOK_CONTACTS_H_INSIDE__
+
+#endif /* LIBEBOOK_CONTACTS_H */
+
diff --git a/addressbook/libebook-contacts/libebook-contacts.pc.in 
b/addressbook/libebook-contacts/libebook-contacts.pc.in
new file mode 100644
index 0000000..d1396fb
--- /dev/null
+++ b/addressbook/libebook-contacts/libebook-contacts.pc.in
@@ -0,0 +1,16 @@
+prefix= prefix@
+exec_prefix= exec_prefix@
+libdir= libdir@
+includedir= includedir@
+datarootdir= datarootdir@
+datadir= datadir@
+
+privincludedir= privincludedir@
+
+Name: libebook-contacts
+Description: Client library for evolution contacts and vcard structures
+Version: @VERSION@
+Requires: libedataserver-1.2
+Requires.private: camel-1.2
+Libs: -L${libdir} -lebook-contacts-1.2
+Cflags: -I${privincludedir}
diff --git a/addressbook/libebook/Makefile.am b/addressbook/libebook/Makefile.am
index de3cb06..221a488 100644
--- a/addressbook/libebook/Makefile.am
+++ b/addressbook/libebook/Makefile.am
@@ -40,27 +40,22 @@ libebook_1_2_la_CPPFLAGS = \
 libebook_1_2_la_SOURCES =                              \
        $(ENUM_GENERATED)                               \
        $(MARSHAL_GENERATED)                            \
-       e-address-western.c                             \
        e-book-client.c                                 \
        e-book-client-view.c                            \
-       e-book-query.c                                  \
        e-book-view-private.h                           \
        e-book-view.c                                   \
        e-book.c                                        \
-       e-contact.c                                     \
        e-destination.c                                 \
-       e-name-western.c                                \
-       e-name-western-tables.h                         \
-       e-phone-number.c                                \
-       e-phone-number-private.h                        \
-       e-source-backend-summary-setup.c                \
-       e-vcard.c                                       \
        e-error.h
 
 libebook_1_2_la_LIBADD =                                       \
+       $(top_builddir)/addressbook/libebook-contacts/libebook-contacts-1.2.la \
+       $(top_builddir)/addressbook/libedata-book/libedata-book-1.2.la \
        $(top_builddir)/addressbook/libegdbus/libegdbus-book.la \
        $(top_builddir)/camel/libcamel-1.2.la                   \
        $(top_builddir)/libedataserver/libedataserver-1.2.la    \
+       $(top_builddir)/libebackend/libebackend-1.2.la \
+       $(top_builddir)/addressbook/libedata-book/libedata-book-1.2.la  \
        $(EVOLUTION_ADDRESSBOOK_LIBS)                           \
        $(CAMEL_LIBS)
 
@@ -69,39 +64,21 @@ libebook_1_2_la_LDFLAGS =                                                   \
        $(CODE_COVERAGE_LDFLAGS) \
        $(NULL)
 
-if ENABLE_PHONENUMBER
-libebook_1_2_la_SOURCES += e-phone-number-private.cpp
-libebook_1_2_la_CPPFLAGS += $(PHONENUMBER_INCLUDES)
-libebook_1_2_la_LIBADD += $(PHONENUMBER_LIBS)
-endif # ENABLE_PHONENUMBER
-
 libebookincludedir = $(privincludedir)/libebook
 
 libebookinclude_HEADERS =                              \
        libebook.h                                      \
-       e-address-western.h                             \
        e-book-client.h                                 \
        e-book-client-view.h                            \
        e-book-enumtypes.h                              \
-       e-book-query.h                                  \
        e-book-view.h                                   \
        e-book-types.h                                  \
-       e-book.h                                        \
-       e-contact.h                                     \
        e-destination.h                                 \
-       e-name-western.h                                \
-       e-phone-number.h                                \
-       e-source-backend-summary-setup.h                \
-       e-vcard.h
+       e-book.h
 
 %-$(API_VERSION).pc: %.pc
         cp $< $@
 
-e-name-western-tables.h: e-name-western-tables.h.in
-       $(AM_V_GEN) ($(PYTHON) ${srcdir}/gen-western-table.py < $< > $  tmp && mv $  tmp $@) || rm -f $  tmp
-
-BUILT_SOURCES += e-name-western-tables.h
-
 pkgconfigdir = $(libdir)/pkgconfig
 pkgconfig_DATA = libebook-$(API_VERSION).pc
 
@@ -116,6 +93,7 @@ INTROSPECTION_SCANNER_ARGS = \
        --c-include="libebook/libebook.h" \
        $(NULL)
 INTROSPECTION_COMPILER_ARGS = \
+       --includedir=$(top_builddir)/addressbook/libebook-contacts \
        --includedir=$(top_builddir)/libedataserver \
        --includedir=$(srcdir) \
        $(NULL)
@@ -141,15 +119,15 @@ EBook_1_2_gir_CFLAGS = \
        $(NULL)
 EBook_1_2_gir_SCANNERFLAGS = \
        --include-uninstalled=$(top_builddir)/libedataserver/EDataServer-1.2.gir \
+       --include-uninstalled=$(top_builddir)/addressbook/libebook-contacts/EBookContacts-1.2.gir \
        $(NULL)
 EBook_1_2_gir_LIBS = \
-       libebook-1.2.la \
-       $(top_builddir)/libedataserver/libedataserver-1.2.la \
-       $(NULL)
+       $(top_builddir)/addressbook/libebook-contacts/libebook-contacts-1.2.la \
+       $(top_builddir)/addressbook/libedata-book/libedata-book-1.2.la \
+       libebook-1.2.la $(top_builddir)/libedataserver/libedataserver-1.2.la
 EBook_1_2_gir_FILES = \
        $(libebook_1_2_la_SOURCES) \
-       $(libebookinclude_HEADERS) \
-       $(NULL)
+       $(libebookinclude_HEADERS)
 
 INTROSPECTION_GIRS += EBook-1.2.gir
 
diff --git a/addressbook/libebook/e-book-client-view.h b/addressbook/libebook/e-book-client-view.h
index 176df48..ad45644 100644
--- a/addressbook/libebook/e-book-client-view.h
+++ b/addressbook/libebook/e-book-client-view.h
@@ -26,6 +26,7 @@
 #define E_BOOK_CLIENT_VIEW_H
 
 #include <glib-object.h>
+#include <libebook-contacts/libebook-contacts.h>
 
 /* Standard GObject macros */
 #define E_TYPE_BOOK_CLIENT_VIEW \
@@ -55,24 +56,6 @@ typedef struct _EBookClientViewPrivate EBookClientViewPrivate;
 struct _EBookClient;
 
 /**
- * EBookClientViewFlags:
- * @E_BOOK_CLIENT_VIEW_FLAGS_NONE:
- *   Symbolic value for no flags
- * @E_BOOK_CLIENT_VIEW_FLAGS_NOTIFY_INITIAL:
- *   If this flag is set then all contacts matching the view's query will
- *   be sent as notifications when starting the view, otherwise only future
- *   changes will be reported.  The default for a #EBookClientView is %TRUE.
- *
- * Flags that control the behaviour of an #EBookClientView.
- *
- * Since: 3.4
- */
-typedef enum {
-       E_BOOK_CLIENT_VIEW_FLAGS_NONE           = 0,
-       E_BOOK_CLIENT_VIEW_FLAGS_NOTIFY_INITIAL = (1 << 0),
-} EBookClientViewFlags;
-
-/**
  * EBookClientView:
  *
  * Contains only private data the should be read and manipulated using the
diff --git a/addressbook/libebook/e-book-client.c b/addressbook/libebook/e-book-client.c
index 3d5bcda..cc35453 100644
--- a/addressbook/libebook/e-book-client.c
+++ b/addressbook/libebook/e-book-client.c
@@ -34,8 +34,6 @@
 #include <libedataserver/e-client-private.h>
 
 #include "e-book-client.h"
-#include "e-contact.h"
-#include "e-name-western.h"
 
 #define E_BOOK_CLIENT_GET_PRIVATE(obj) \
        (G_TYPE_INSTANCE_GET_PRIVATE \
@@ -176,57 +174,6 @@ run_in_thread_closure_free (RunInThreadClosure *run_in_thread_closure)
  *   @CLIENT_BACKEND_PROPERTY_CACHE_DIR, @CLIENT_BACKEND_PROPERTY_CAPABILITIES
  */
 
-G_DEFINE_QUARK (e-book-client-error-quark, e_book_client_error)
-
-/**
- * e_book_client_error_to_string:
- *
- * FIXME: Document me.
- *
- * Since: 3.2
- **/
-const gchar *
-e_book_client_error_to_string (EBookClientError code)
-{
-       switch (code) {
-       case E_BOOK_CLIENT_ERROR_NO_SUCH_BOOK:
-               return _("No such book");
-       case E_BOOK_CLIENT_ERROR_CONTACT_NOT_FOUND:
-               return _("Contact not found");
-       case E_BOOK_CLIENT_ERROR_CONTACT_ID_ALREADY_EXISTS:
-               return _("Contact ID already exists");
-       case E_BOOK_CLIENT_ERROR_NO_SUCH_SOURCE:
-               return _("No such source");
-       case E_BOOK_CLIENT_ERROR_NO_SPACE:
-               return _("No space");
-       }
-
-       return _("Unknown error");
-}
-
-/**
- * e_book_client_error_create:
- * @code: an #EBookClientError code to create
- * @custom_msg: custom message to use for the error; can be %NULL
- *
- * Returns: a new #GError containing an E_BOOK_CLIENT_ERROR of the given
- * @code. If the @custom_msg is NULL, then the error message is
- * the one returned from e_book_client_error_to_string() for the @code,
- * otherwise the given message is used.
- *
- * Returned pointer should be freed with g_error_free().
- *
- * Since: 3.2
- *
- * Deprecated: 3.8: Just use the #GError API directly.
- **/
-GError *
-e_book_client_error_create (EBookClientError code,
-                            const gchar *custom_msg)
-{
-       return g_error_new_literal (E_BOOK_CLIENT_ERROR, code, custom_msg ? custom_msg : 
e_book_client_error_to_string (code));
-}
-
 /*
  * If the specified GError is a remote error, then create a new error
  * representing the remote error.  If the error is anything else, then
diff --git a/addressbook/libebook/e-book-client.h b/addressbook/libebook/e-book-client.h
index 7125fe4..7caaa61 100644
--- a/addressbook/libebook/e-book-client.h
+++ b/addressbook/libebook/e-book-client.h
@@ -29,7 +29,7 @@
 #include <libedataserver/libedataserver.h>
 
 #include <libebook/e-book-client-view.h>
-#include <libebook/e-contact.h>
+#include <libebook-contacts/libebook-contacts.h>
 
 /* Standard GObject macros */
 #define E_TYPE_BOOK_CLIENT \
@@ -79,21 +79,6 @@
 
 G_BEGIN_DECLS
 
-/**
- * EBookClientError:
- *
- * FIXME: Document me.
- *
- * Since: 3.2
- **/
-typedef enum {
-       E_BOOK_CLIENT_ERROR_NO_SUCH_BOOK,
-       E_BOOK_CLIENT_ERROR_CONTACT_NOT_FOUND,
-       E_BOOK_CLIENT_ERROR_CONTACT_ID_ALREADY_EXISTS,
-       E_BOOK_CLIENT_ERROR_NO_SUCH_SOURCE,
-       E_BOOK_CLIENT_ERROR_NO_SPACE
-} EBookClientError;
-
 typedef struct _EBookClient        EBookClient;
 typedef struct _EBookClientClass   EBookClientClass;
 typedef struct _EBookClientPrivate EBookClientPrivate;
@@ -115,9 +100,6 @@ struct _EBookClientClass {
        EClientClass parent_class;
 };
 
-GQuark         e_book_client_error_quark       (void) G_GNUC_CONST;
-const gchar *  e_book_client_error_to_string   (EBookClientError code);
-
 GType          e_book_client_get_type          (void) G_GNUC_CONST;
 EClient *      e_book_client_connect_sync      (ESource *source,
                                                 GCancellable *cancellable,
@@ -310,8 +292,6 @@ gboolean    e_book_client_get_view_sync     (EBookClient *client,
 
 EBookClient *  e_book_client_new               (ESource *source,
                                                 GError **error);
-GError *       e_book_client_error_create      (EBookClientError code,
-                                                const gchar *custom_msg);
 #endif /* E_BOOK_DISABLE_DEPRECATED */
 
 G_END_DECLS
diff --git a/addressbook/libebook/e-book-types.h b/addressbook/libebook/e-book-types.h
index f7d896f..0ba8067 100644
--- a/addressbook/libebook/e-book-types.h
+++ b/addressbook/libebook/e-book-types.h
@@ -16,7 +16,7 @@
 #ifndef __E_BOOK_TYPES_H__
 #define __E_BOOK_TYPES_H__
 
-#include <libebook/e-contact.h>
+#include <libebook-contacts/libebook-contacts.h>
 
 G_BEGIN_DECLS
 
@@ -52,80 +52,9 @@ typedef enum {
        E_BOOK_ERROR_NOT_SUPPORTED
 } EBookStatus;
 
-/**
- * EDataBookStatus:
- *
- * XXX Document me!
- *
- * Since: 3.6
- **/
-typedef enum {
-       E_DATA_BOOK_STATUS_SUCCESS,
-       E_DATA_BOOK_STATUS_BUSY,
-       E_DATA_BOOK_STATUS_REPOSITORY_OFFLINE,
-       E_DATA_BOOK_STATUS_PERMISSION_DENIED,
-       E_DATA_BOOK_STATUS_CONTACT_NOT_FOUND,
-       E_DATA_BOOK_STATUS_CONTACTID_ALREADY_EXISTS,
-       E_DATA_BOOK_STATUS_AUTHENTICATION_FAILED,
-       E_DATA_BOOK_STATUS_AUTHENTICATION_REQUIRED,
-       E_DATA_BOOK_STATUS_UNSUPPORTED_FIELD,
-       E_DATA_BOOK_STATUS_UNSUPPORTED_AUTHENTICATION_METHOD,
-       E_DATA_BOOK_STATUS_TLS_NOT_AVAILABLE,
-       E_DATA_BOOK_STATUS_NO_SUCH_BOOK,
-       E_DATA_BOOK_STATUS_BOOK_REMOVED,
-       E_DATA_BOOK_STATUS_OFFLINE_UNAVAILABLE,
-       E_DATA_BOOK_STATUS_SEARCH_SIZE_LIMIT_EXCEEDED,
-       E_DATA_BOOK_STATUS_SEARCH_TIME_LIMIT_EXCEEDED,
-       E_DATA_BOOK_STATUS_INVALID_QUERY,
-       E_DATA_BOOK_STATUS_QUERY_REFUSED,
-       E_DATA_BOOK_STATUS_COULD_NOT_CANCEL,
-       E_DATA_BOOK_STATUS_OTHER_ERROR,
-       E_DATA_BOOK_STATUS_INVALID_SERVER_VERSION,
-       E_DATA_BOOK_STATUS_NO_SPACE,
-       E_DATA_BOOK_STATUS_INVALID_ARG,
-       E_DATA_BOOK_STATUS_NOT_SUPPORTED,
-       E_DATA_BOOK_STATUS_NOT_OPENED,
-       E_DATA_BOOK_STATUS_OUT_OF_SYNC
-} EDataBookStatus;
-
-#ifndef EDS_DISABLE_DEPRECATED
+#ifndef E_BOOK_DISABLE_DEPRECATED
 #define E_BOOK_ERROR_CORBA_EXCEPTION E_BOOK_ERROR_DBUS_EXCEPTION
 #endif
 
-typedef enum {
-       E_BOOK_VIEW_STATUS_OK,
-       E_BOOK_VIEW_STATUS_TIME_LIMIT_EXCEEDED,
-       E_BOOK_VIEW_STATUS_SIZE_LIMIT_EXCEEDED,
-       E_BOOK_VIEW_ERROR_INVALID_QUERY,
-       E_BOOK_VIEW_ERROR_QUERY_REFUSED,
-       E_BOOK_VIEW_ERROR_OTHER_ERROR
-} EBookViewStatus;
-
-typedef enum {
-       E_BOOK_CHANGE_CARD_ADDED,
-       E_BOOK_CHANGE_CARD_DELETED,
-       E_BOOK_CHANGE_CARD_MODIFIED
-} EBookChangeType;
-
-typedef struct {
-       EBookChangeType  change_type;
-       EContact        *contact;
-} EBookChange;
-
-/**
- * EBookIndexType:
- * @E_BOOK_INDEX_PREFIX: An index suitable for searching contacts with a prefix pattern
- * @E_BOOK_INDEX_SUFFIX: An index suitable for searching contacts with a suffix pattern
- *
- * The type of index defined for e_source_backend_summary_setup_set_indexed_fields()
- *
- * Since: 3.8
- */
-typedef enum {
-       E_BOOK_INDEX_PREFIX = 0,
-       E_BOOK_INDEX_SUFFIX
-} EBookIndexType;
-
-G_END_DECLS
 
 #endif /* __E_BOOK_TYPES_H__ */
diff --git a/addressbook/libebook/e-book.c b/addressbook/libebook/e-book.c
index 492f94d..ed54972 100644
--- a/addressbook/libebook/e-book.c
+++ b/addressbook/libebook/e-book.c
@@ -40,8 +40,6 @@
 #include <glib/gi18n-lib.h>
 #include "e-book.h"
 #include "e-error.h"
-#include "e-contact.h"
-#include "e-name-western.h"
 #include "e-book-view-private.h"
 #include "e-book-marshal.h"
 
diff --git a/addressbook/libebook/e-book.h b/addressbook/libebook/e-book.h
index 91d12e8..3d920d1 100644
--- a/addressbook/libebook/e-book.h
+++ b/addressbook/libebook/e-book.h
@@ -22,8 +22,7 @@
 
 #include <libedataserver/libedataserver.h>
 
-#include <libebook/e-contact.h>
-#include <libebook/e-book-query.h>
+#include <libebook-contacts/libebook-contacts.h>
 #include <libebook/e-book-view.h>
 #include <libebook/e-book-types.h>
 
diff --git a/addressbook/libebook/e-destination.h b/addressbook/libebook/e-destination.h
index 7cb65c5..7526037 100644
--- a/addressbook/libebook/e-destination.h
+++ b/addressbook/libebook/e-destination.h
@@ -32,8 +32,8 @@
 #ifndef __E_DESTINATION_H__
 #define __E_DESTINATION_H__
 
+#include <libebook-contacts/libebook-contacts.h>
 #include <libebook/e-book.h>
-#include <libebook/e-contact.h>
 #include <libebook/e-book-client.h>
 #include <libxml/tree.h>
 
diff --git a/addressbook/libebook/libebook.h b/addressbook/libebook/libebook.h
index f8eafb0..ae1ad0e 100644
--- a/addressbook/libebook/libebook.h
+++ b/addressbook/libebook/libebook.h
@@ -22,21 +22,15 @@
 #define __LIBEBOOK_H_INSIDE__
 
 #include <libedataserver/libedataserver.h>
+#include <libebook-contacts/libebook-contacts.h>
 
-#include <libebook/e-address-western.h>
 #include <libebook/e-book-client-view.h>
 #include <libebook/e-book-client.h>
 #include <libebook/e-book-enumtypes.h>
-#include <libebook/e-book-query.h>
 #include <libebook/e-book-types.h>
 #include <libebook/e-book-view.h>
 #include <libebook/e-book.h>
-#include <libebook/e-contact.h>
 #include <libebook/e-destination.h>
-#include <libebook/e-name-western.h>
-#include <libebook/e-phone-number.h>
-#include <libebook/e-source-backend-summary-setup.h>
-#include <libebook/e-vcard.h>
 
 #undef __LIBEBOOK_H_INSIDE__
 
diff --git a/addressbook/libedata-book/Makefile.am b/addressbook/libedata-book/Makefile.am
index 7bb0326..eb9e1d7 100644
--- a/addressbook/libedata-book/Makefile.am
+++ b/addressbook/libedata-book/Makefile.am
@@ -35,7 +35,7 @@ libedata_book_1_2_la_SOURCES = \
        ximian-vcard.h
 
 libedata_book_1_2_la_LIBADD = \
-       $(top_builddir)/addressbook/libebook/libebook-1.2.la \
+       $(top_builddir)/addressbook/libebook-contacts/libebook-contacts-1.2.la \
        $(top_builddir)/addressbook/libegdbus/libegdbus-book.la \
        $(top_builddir)/libedataserver/libedataserver-1.2.la \
        $(top_builddir)/libebackend/libebackend-1.2.la \
diff --git a/addressbook/libedata-book/e-book-backend-cache.h 
b/addressbook/libedata-book/e-book-backend-cache.h
index 35b3d0f..ed0163a 100644
--- a/addressbook/libedata-book/e-book-backend-cache.h
+++ b/addressbook/libedata-book/e-book-backend-cache.h
@@ -27,7 +27,7 @@
 #ifndef E_BOOK_BACKEND_CACHE_H
 #define E_BOOK_BACKEND_CACHE_H
 
-#include <libebook/libebook.h>
+#include <libebook-contacts/libebook-contacts.h>
 #include <libebackend/libebackend.h>
 
 /* Standard GObject macros */
diff --git a/addressbook/libedata-book/e-book-backend-db-cache.h 
b/addressbook/libedata-book/e-book-backend-db-cache.h
index b26e5f1..41c47fb 100644
--- a/addressbook/libedata-book/e-book-backend-db-cache.h
+++ b/addressbook/libedata-book/e-book-backend-db-cache.h
@@ -26,7 +26,7 @@
 #ifndef E_BOOK_BACKEND_DB_CACHE_H
 #define E_BOOK_BACKEND_DB_CACHE_H
 
-#include <libebook/libebook.h>
+#include <libebook-contacts/libebook-contacts.h>
 
 G_BEGIN_DECLS
 
diff --git a/addressbook/libedata-book/e-book-backend-sexp.h b/addressbook/libedata-book/e-book-backend-sexp.h
index cf98bbf..9f58207 100644
--- a/addressbook/libedata-book/e-book-backend-sexp.h
+++ b/addressbook/libedata-book/e-book-backend-sexp.h
@@ -28,7 +28,7 @@
 #ifndef E_BOOK_BACKEND_SEXP_H
 #define E_BOOK_BACKEND_SEXP_H
 
-#include <libebook/libebook.h>
+#include <libebook-contacts/libebook-contacts.h>
 
 /* Standard GObject macros */
 #define E_TYPE_BOOK_BACKEND_SEXP \
diff --git a/addressbook/libedata-book/e-book-backend-sqlitedb-test.c 
b/addressbook/libedata-book/e-book-backend-sqlitedb-test.c
index 1d26528..68e3b19 100644
--- a/addressbook/libedata-book/e-book-backend-sqlitedb-test.c
+++ b/addressbook/libedata-book/e-book-backend-sqlitedb-test.c
@@ -20,7 +20,7 @@
  */
 
 #include <config.h>
-#include <libebook/libebook.h>
+#include <libebook-contacts/libebook-contacts.h>
 #include "e-book-backend-sqlitedb.h"
 
 static GMainLoop *main_loop;
diff --git a/addressbook/libedata-book/e-book-backend-sqlitedb.h 
b/addressbook/libedata-book/e-book-backend-sqlitedb.h
index cfc33e6..a451415 100644
--- a/addressbook/libedata-book/e-book-backend-sqlitedb.h
+++ b/addressbook/libedata-book/e-book-backend-sqlitedb.h
@@ -26,7 +26,7 @@
 #ifndef E_BOOK_BACKEND_SQLITEDB_H
 #define E_BOOK_BACKEND_SQLITEDB_H
 
-#include <libebook/libebook.h>
+#include <libebook-contacts/libebook-contacts.h>
 
 /* Standard GObject macros */
 #define E_TYPE_BOOK_BACKEND_SQLITEDB \
diff --git a/addressbook/libedata-book/e-book-backend-summary.h 
b/addressbook/libedata-book/e-book-backend-summary.h
index c914616..b229d19 100644
--- a/addressbook/libedata-book/e-book-backend-summary.h
+++ b/addressbook/libedata-book/e-book-backend-summary.h
@@ -28,7 +28,7 @@
 #ifndef E_BOOK_BACKEND_SUMMARY_H
 #define E_BOOK_BACKEND_SUMMARY_H
 
-#include <libebook/libebook.h>
+#include <libebook-contacts/libebook-contacts.h>
 
 /* Standard GObject macros */
 #define E_TYPE_BOOK_BACKEND_SUMMARY \
diff --git a/addressbook/libedata-book/e-book-backend.h b/addressbook/libedata-book/e-book-backend.h
index 6358805..272e911 100644
--- a/addressbook/libedata-book/e-book-backend.h
+++ b/addressbook/libedata-book/e-book-backend.h
@@ -26,7 +26,7 @@
 #ifndef E_BOOK_BACKEND_H
 #define E_BOOK_BACKEND_H
 
-#include <libebook/libebook.h>
+#include <libebook-contacts/libebook-contacts.h>
 #include <libebackend/libebackend.h>
 
 #include <libedata-book/e-data-book.h>
diff --git a/addressbook/libedata-book/e-data-book-view.h b/addressbook/libedata-book/e-data-book-view.h
index 5cda7ca..fe626e5 100644
--- a/addressbook/libedata-book/e-data-book-view.h
+++ b/addressbook/libedata-book/e-data-book-view.h
@@ -28,7 +28,7 @@
 #ifndef E_DATA_BOOK_VIEW_H
 #define E_DATA_BOOK_VIEW_H
 
-#include <libebook/libebook.h>
+#include <libebook-contacts/libebook-contacts.h>
 
 #include <libedata-book/e-book-backend-sexp.h>
 
diff --git a/addressbook/libedata-book/e-data-book.c b/addressbook/libedata-book/e-data-book.c
index 2b3ea6d..3918152 100644
--- a/addressbook/libedata-book/e-data-book.c
+++ b/addressbook/libedata-book/e-data-book.c
@@ -28,7 +28,7 @@
 /* Private D-Bus classes. */
 #include <e-dbus-address-book.h>
 
-#include <libebook/libebook.h>
+#include <libebook-contacts/libebook-contacts.h>
 
 #include "e-data-book-factory.h"
 #include "e-data-book.h"
diff --git a/addressbook/libedata-book/libedata-book.h b/addressbook/libedata-book/libedata-book.h
index ecd52ec..bd5457c 100644
--- a/addressbook/libedata-book/libedata-book.h
+++ b/addressbook/libedata-book/libedata-book.h
@@ -21,7 +21,7 @@
 
 #define __LIBEDATA_BOOK_H_INSIDE__
 
-#include <libebook/libebook.h>
+#include <libebook-contacts/libebook-contacts.h>
 #include <libebackend/libebackend.h>
 
 #include <libedata-book/e-book-backend-cache.h>
diff --git a/configure.ac b/configure.ac
index 710fa98..2a012dd 100644
--- a/configure.ac
+++ b/configure.ac
@@ -126,6 +126,10 @@ LIBEBOOK_CURRENT=17
 LIBEBOOK_REVISION=1
 LIBEBOOK_AGE=3
 
+LIBEBOOK_CONTACTS_CURRENT=0
+LIBEBOOK_CONTACTS_REVISION=0
+LIBEBOOK_CONTACTS_AGE=0
+
 LIBCAMEL_CURRENT=43
 LIBCAMEL_REVISION=0
 LIBCAMEL_AGE=0
@@ -149,6 +153,9 @@ AC_SUBST(LIBEDATACAL_AGE)
 AC_SUBST(LIBEBOOK_CURRENT)
 AC_SUBST(LIBEBOOK_REVISION)
 AC_SUBST(LIBEBOOK_AGE)
+AC_SUBST(LIBEBOOK_CONTACTS_CURRENT)
+AC_SUBST(LIBEBOOK_CONTACTS_REVISION)
+AC_SUBST(LIBEBOOK_CONTACTS_AGE)
 AC_SUBST(LIBEDATABOOK_CURRENT)
 AC_SUBST(LIBEDATABOOK_REVISION)
 AC_SUBST(LIBEDATABOOK_AGE)
@@ -1653,6 +1660,8 @@ evolution-data-server.pc
 addressbook/Makefile
 addressbook/libebook/Makefile
 addressbook/libebook/libebook.pc
+addressbook/libebook-contacts/Makefile
+addressbook/libebook-contacts/libebook-contacts.pc
 addressbook/libedata-book/Makefile
 addressbook/libedata-book/libedata-book.pc
 addressbook/libegdbus/Makefile
diff --git a/docs/reference/addressbook/libebook/Makefile.am b/docs/reference/addressbook/libebook/Makefile.am
index 7c1fb1f..9f1e30b 100644
--- a/docs/reference/addressbook/libebook/Makefile.am
+++ b/docs/reference/addressbook/libebook/Makefile.am
@@ -36,6 +36,7 @@ GTKDOC_CFLAGS = \
        $(CAMEL_CFLAGS)
 
 GTKDOC_LIBS = \
+       $(top_builddir)/addressbook/libebook-contacts/libebook-contacts-1.2.la          \
        $(top_builddir)/addressbook/libebook/libebook-1.2.la    \
        $(top_builddir)/libedataserver/libedataserver-1.2.la    \
        $(EVOLUTION_ADDRESSBOOK_LIBS)                           \
diff --git a/tests/libebook/vcard/Makefile.am b/tests/libebook/vcard/Makefile.am
index bc20146..91f39f1 100644
--- a/tests/libebook/vcard/Makefile.am
+++ b/tests/libebook/vcard/Makefile.am
@@ -9,7 +9,7 @@ dump_vcard_CPPFLAGS = \
        $(CAMEL_CFLAGS)
 
 dump_vcard_LDADD =                                             \
-       $(top_builddir)/addressbook/libebook/libebook-1.2.la    \
+       $(top_builddir)/addressbook/libebook-contacts/libebook-contacts-1.2.la  \
        $(top_builddir)/libedataserver/libedataserver-1.2.la    \
        $(EVOLUTION_ADDRESSBOOK_LIBS)                           \
        $(CAMEL_LIBS)
diff --git a/tests/libebook/vcard/dump-vcard.c b/tests/libebook/vcard/dump-vcard.c
index 60d7458..a108041 100644
--- a/tests/libebook/vcard/dump-vcard.c
+++ b/tests/libebook/vcard/dump-vcard.c
@@ -1,7 +1,7 @@
 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
 
 #include <stdio.h>
-#include <libebook/libebook.h>
+#include <libebook-contacts/libebook-contacts.h>
 
 gint
 main (gint argc,
diff --git a/vala/EBook-1.2.metadata b/vala/EBook-1.2.metadata
index 8e0106c..69015ed 100644
--- a/vala/EBook-1.2.metadata
+++ b/vala/EBook-1.2.metadata
@@ -1,26 +1,3 @@
 BookClientView.objects_added#signal.object type="GLib.List<weak void*>"
 BookClientView.objects_removed#signal.object type="GLib.List<weak void*>"
 BookClientView.objects_modified#signal.object type="GLib.List<weak void*>"
-Contact.get skip
-Contact.get_const skip
-Contact.set skip
-ContactName.family unowned=false
-ContactName.given unowned=false
-ContactName.additional unowned=false
-ContactName.prefixes unowned=false
-ContactName.suffixes unowned=false
-ContactAddress.address_format unowned=false
-ContactAddress.code unowned=false
-ContactAddress.country unowned=false
-ContactAddress.ext unowned=false
-ContactAddress.locality unowned=false
-ContactAddress.po unowned=false
-ContactAddress.region unowned=false
-ContactAddress.street unowned=false
-ContactPhoto.get_inlined nullable=true
-ContactPhoto.get_mime_type nullable=true
-ContactPhoto.get_uri nullable=true
-VCard.get_attribute nullable=true
-VCard.get_attribute_if_parsed nullable=true
-VCardAttribute.get_group nullable=true
-VCardAttribute.get_value nullable=true
diff --git a/vala/EBookContacts-1.2.metadata b/vala/EBookContacts-1.2.metadata
new file mode 100644
index 0000000..7b30232
--- /dev/null
+++ b/vala/EBookContacts-1.2.metadata
@@ -0,0 +1,23 @@
+Contact.get skip
+Contact.get_const skip
+Contact.set skip
+ContactName.family unowned=false
+ContactName.given unowned=false
+ContactName.additional unowned=false
+ContactName.prefixes unowned=false
+ContactName.suffixes unowned=false
+ContactAddress.address_format unowned=false
+ContactAddress.code unowned=false
+ContactAddress.country unowned=false
+ContactAddress.ext unowned=false
+ContactAddress.locality unowned=false
+ContactAddress.po unowned=false
+ContactAddress.region unowned=false
+ContactAddress.street unowned=false
+ContactPhoto.get_inlined nullable=true
+ContactPhoto.get_mime_type nullable=true
+ContactPhoto.get_uri nullable=true
+VCard.get_attribute nullable=true
+VCard.get_attribute_if_parsed nullable=true
+VCardAttribute.get_group nullable=true
+VCardAttribute.get_value nullable=true
diff --git a/vala/Makefile.am b/vala/Makefile.am
index 44913da..5265332 100644
--- a/vala/Makefile.am
+++ b/vala/Makefile.am
@@ -2,15 +2,21 @@ vapidir = $(datarootdir)/vala/vapi
 vapi_DATA = \
        libedataserver-1.2.vapi \
        libebook-1.2.vapi \
+       libebook-contacts-1.2.vapi \
+       libecalendar-1.2.vapi \
        $(NULL)
 dist_vapi_DATA = \
        libedataserver-1.2.deps \
        libebook-1.2.deps \
+       libebook-contacts-1.2.deps \
+       libecalendar-1.2.deps \
        $(NULL)
 
 EXTRA_DIST = \
        EBook-1.2.metadata \
-       libebook-1.2-custom.vala \
+       EBookContacts-1.2.metadata \
+       libebook-contacts-1.2-custom.vala \
+       ECalendar-1.2.metadata \
        EDataServer-1.2.metadata \
        $(NULL)
 
@@ -32,18 +38,45 @@ libedataserver-1.2.vapi: $(top_builddir)/libedataserver/EDataServer-1.2.gir  lib
                $< \
                $(NULL)
 
-libebook-1.2.vapi: $(top_builddir)/addressbook/libebook/EBook-1.2.gir libedataserver-1.2.vapi 
libebook-1.2-custom.vala libebook-1.2.deps
+libecalendar-1.2.vapi: $(top_builddir)/calendar/libecal/ECalendar-1.2.gir libedataserver-1.2.vapi
+       $(VAPIGEN_V)$(VAPIGEN) \
+               --vapidir=. \
+               --girdir=$(top_builddir)/libedataserver \
+               --pkg libedataserver-1.2 \
+               --pkg gio-2.0 \
+               --pkg libxml-2.0 \
+               --library libecalendar-1.2 \
+               --metadatadir=$(srcdir) \
+               $< \
+               $(NULL)
+
+libebook-contacts-1.2.vapi: $(top_builddir)/addressbook/libebook-contacts/EBookContacts-1.2.gir 
libedataserver-1.2.vapi libebook-contacts-1.2-custom.vala
+       $(VAPIGEN_V)$(VAPIGEN) \
+               --vapidir=. \
+               --vapidir=$(srcdir) \
+               --girdir=$(top_builddir)/libedataserver \
+               --pkg libedataserver-1.2 \
+               --pkg gio-2.0 \
+               --pkg libxml-2.0 \
+               --library libebook-contacts-1.2 \
+               --metadatadir=$(srcdir) \
+               $< \
+               $(srcdir)/libebook-contacts-1.2-custom.vala \
+               $(NULL)
+
+libebook-1.2.vapi: $(top_builddir)/addressbook/libebook/EBook-1.2.gir libedataserver-1.2.vapi 
libebook-contacts-1.2.vapi
        $(VAPIGEN_V)$(VAPIGEN) \
                --vapidir=. \
                --vapidir=$(srcdir) \
                --girdir=$(top_builddir)/libedataserver \
+               --girdir=$(top_builddir)/addressbook/libebook-contacts \
                --pkg libedataserver-1.2 \
+               --pkg libebook-contacts-1.2 \
                --pkg gio-2.0 \
                --pkg libxml-2.0 \
                --library libebook-1.2 \
                --metadatadir=$(srcdir) \
                $< \
-               $(srcdir)/libebook-1.2-custom.vala \
                $(NULL)
 
 CLEANFILES = \
diff --git a/vala/libebook-1.2.deps b/vala/libebook-1.2.deps
index ef26377..dd769f0 100644
--- a/vala/libebook-1.2.deps
+++ b/vala/libebook-1.2.deps
@@ -1,3 +1,3 @@
-libedataserver-1.2
+libebook-contacts-1.2
 libxml-2.0
 gio-2.0
diff --git a/vala/libebook-1.2-custom.vala b/vala/libebook-contacts-1.2-custom.vala
similarity index 100%
rename from vala/libebook-1.2-custom.vala
rename to vala/libebook-contacts-1.2-custom.vala
diff --git a/vala/libebook-contacts-1.2.deps b/vala/libebook-contacts-1.2.deps
new file mode 100644
index 0000000..ef26377
--- /dev/null
+++ b/vala/libebook-contacts-1.2.deps
@@ -0,0 +1,3 @@
+libedataserver-1.2
+libxml-2.0
+gio-2.0


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]