[libgdata: 1/2] build: Port from Autotools to meson



commit d3ba69233a9ef1f415b10efc44ea186a6d58a2bb
Author: Mayank Sharma <mayank8019 gmail com>
Date:   Tue Jun 25 11:22:01 2019 +0000

    build: Port from Autotools to meson
    
    Automake 1.16.1 has issues with generating a valid Makefile. Since,
    libgdata is one of the core-deps of GNOME, it should be ported from
    Autotools + make to meson + ninja.
    
    Significant contributions from both Iñigo Martínez and Mayank Sharma.

 demos/meson.build                                  |   30 +
 docs/reference/gdata-docs.xml                      |    2 +-
 .../{gdata-sections.txt => gdata-sections.txt.in}  |   38 +-
 docs/reference/meson.build                         |   78 ++
 docs/reference/xml/gtkdocentities.ent.in           |    7 +
 docs/reference/xml/meson.build                     |   15 +
 gdata/app/meson.build                              |   10 +
 gdata/atom/meson.build                             |   20 +
 gdata/exif/meson.build                             |    1 +
 gdata/gcontact/meson.build                         |   26 +
 gdata/gd/meson.build                               |   33 +
 gdata/georss/meson.build                           |    1 +
 gdata/media/meson.build                            |   53 +
 gdata/meson.build                                  |  204 ++++
 gdata/services/calendar/meson.build                |   24 +
 gdata/services/contacts/meson.build                |   20 +
 gdata/services/documents/meson.build               |   73 ++
 gdata/services/freebase/meson.build                |   58 +
 gdata/services/meson.build                         |    7 +
 gdata/services/picasaweb/meson.build               |   58 +
 gdata/services/tasks/meson.build                   |   20 +
 gdata/services/youtube/meson.build                 |   62 ++
 gdata/symbol.map                                   | 1136 ++++++++++++++++++++
 gdata/tests/meson.build                            |  101 ++
 gdata/tests/template.test.in                       |    4 +
 meson.build                                        |  175 +++
 meson_options.txt                                  |   45 +
 po/meson.build                                     |    1 +
 28 files changed, 2282 insertions(+), 20 deletions(-)
---
diff --git a/demos/meson.build b/demos/meson.build
new file mode 100644
index 00000000..e07eccfd
--- /dev/null
+++ b/demos/meson.build
@@ -0,0 +1,30 @@
+demos_cargs = [
+  '-DG_LOG_DOMAIN="@0@"'.format(gdata_name),
+  '-DLIBGDATA_DISABLE_DEPRECATED',
+]
+
+# demos = [subdir, executable name, custom objects (for sources)]
+demos = [
+  ['calendar', 'calendar-cli', {'sources': 'calendar/calendar-cli.c'}],
+  ['tasks', 'task-cli', {'sources': 'tasks/tasks-cli.c'}],
+  ['youtube', 'youtube-cli', {'sources': 'youtube/youtube-cli.c'}],
+]
+
+if enable_goa
+  demos += [['docs-list', 'docs-list', {'sources': 'docs-list/docs-list.c'}]]
+endif
+
+if gtk_dep.found()
+  demos += [['scrapbook', 'scrapbook', {'sources': 'scrapbook/scrapbook.c', 'dependencies': [gtk_dep]}]]
+endif
+
+foreach demo: demos
+  kwargs = demo[2] + {'dependencies': [libgdata_dep] + demo[2].get('dependencies', [])}
+
+  executable(
+    demo[1],
+    c_args: demos_cargs,
+    include_directories: top_inc_dir,
+    kwargs: kwargs,
+  )
+endforeach
diff --git a/docs/reference/gdata-docs.xml b/docs/reference/gdata-docs.xml
index 817dfbe3..e71fb12f 100644
--- a/docs/reference/gdata-docs.xml
+++ b/docs/reference/gdata-docs.xml
@@ -55,7 +55,7 @@
                        <xi:include href="xml/gdata-authorizer.xml"/>
                        <xi:include href="xml/gdata-authorization-domain.xml"/>
                        <xi:include href="xml/gdata-client-login-authorizer.xml"/>
-                       <xi:include href="xml/gdata-goa-authorizer.xml"/>
+                       <xi:include href="xml/gdata-goa-authorizer.xml"><xi:fallback /></xi:include>
                        <xi:include href="xml/gdata-oauth1-authorizer.xml"/>
                        <xi:include href="xml/gdata-oauth2-authorizer.xml"/>
                </chapter>
diff --git a/docs/reference/gdata-sections.txt b/docs/reference/gdata-sections.txt.in
similarity index 99%
rename from docs/reference/gdata-sections.txt
rename to docs/reference/gdata-sections.txt.in
index dbd1dd4a..b4569194 100644
--- a/docs/reference/gdata-sections.txt
+++ b/docs/reference/gdata-sections.txt.in
@@ -2356,25 +2356,25 @@ gdata_oauth1_authorizer_get_type
 GDataOAuth1AuthorizerPrivate
 </SECTION>
 
-<SECTION>
-<FILE>gdata-goa-authorizer</FILE>
-<TITLE>GDataGoaAuthorizer</TITLE>
-GDataGoaAuthorizer
-GDataGoaAuthorizerClass
-gdata_goa_authorizer_new
-gdata_goa_authorizer_get_goa_object
-<SUBSECTION Standard>
-GDATA_TYPE_GOA_AUTHORIZER
-GDATA_GOA_AUTHORIZER
-GDATA_GOA_AUTHORIZER_CLASS
-GDATA_IS_GOA_AUTHORIZER
-GDATA_IS_GOA_AUTHORIZER_CLASS
-GDATA_GOA_AUTHORIZER_GET_CLASS
-gdata_goa_authorizer_get_type
-<SUBSECTION Private>
-GDataGoaAuthorizerPrivate
-GOA_API_IS_SUBJECT_TO_CHANGE
-</SECTION>
+@COMMENT@<SECTION>
+@COMMENT@<FILE>gdata-goa-authorizer</FILE>
+@COMMENT@<TITLE>GDataGoaAuthorizer</TITLE>
+@COMMENT@GDataGoaAuthorizer
+@COMMENT@GDataGoaAuthorizerClass
+@COMMENT@gdata_goa_authorizer_new
+@COMMENT@gdata_goa_authorizer_get_goa_object
+@COMMENT@<SUBSECTION Standard>
+@COMMENT@GDATA_TYPE_GOA_AUTHORIZER
+@COMMENT@GDATA_GOA_AUTHORIZER
+@COMMENT@GDATA_GOA_AUTHORIZER_CLASS
+@COMMENT@GDATA_IS_GOA_AUTHORIZER
+@COMMENT@GDATA_IS_GOA_AUTHORIZER_CLASS
+@COMMENT@GDATA_GOA_AUTHORIZER_GET_CLASS
+@COMMENT@gdata_goa_authorizer_get_type
+@COMMENT@<SUBSECTION Private>
+@COMMENT@GDataGoaAuthorizerPrivate
+@COMMENT@GOA_API_IS_SUBJECT_TO_CHANGE
+@COMMENT@</SECTION>
 
 <SECTION>
 <FILE>gdata-commentable</FILE>
diff --git a/docs/reference/meson.build b/docs/reference/meson.build
new file mode 100644
index 00000000..82a1aedd
--- /dev/null
+++ b/docs/reference/meson.build
@@ -0,0 +1,78 @@
+subdir('xml')
+
+doc_module = 'gdata'
+
+ignore_headers = [
+  'common.h',
+  'gdata-batch-feed.h',
+  'gdata-batch-private.h',
+  'gdata-buffer.h',
+  'gdata-documents-enums.h',
+  'gdata-documents-utils.h',
+  'gdata-dummy-authorizer.h',
+  'gdata-enums.h',
+  'gdata-exif-tags.h',
+  'gdata-gd-feed-link.h',
+  'gdata-georss-where.h',
+  'gdata-marshal.h',
+  'gdata-media-enums.h',
+  'gdata-media-group.h',
+  'gdata-parser.h',
+  'gdata-picasaweb-enums.h',
+  'gdata-private.h',
+  'gdata-youtube-enums.h',
+  'mock-resolver.h',
+  'mock-server.h',
+  # FIXME: theses files are created by enums workaround
+  'gdata-documents-enums-in.h',
+  'gdata-enums-in.h',
+  'gdata-freebase-enums-in.h',
+  'gdata-media-enums-in.h',
+  'gdata-picasaweb-enums-in.h',
+  'gdata-youtube-enums-in.h',
+]
+
+ignore_files = []
+
+if not enable_goa
+  ignore_headers += ['gdata-goa-authorizer.h']
+  ignore_files += ['gdata-goa-authorizer.c']
+endif
+
+scan_args = [
+  '--rebuild-types',
+  '--deprecated-guards=LIBGDATA_DISABLE_DEPRECATED',
+]
+
+content_files = [
+  'gdata-overview.xml',
+  'gdata-running.xml',
+]
+
+# Images to copy into HTML directory.
+html_assets = [
+  'structure.png',
+  'data-flow.png',
+  'cancellation.png',
+]
+
+content_files += configure_file(
+  input: 'gdata-sections.txt.in',
+  output: '@BASENAME@',
+  configuration: {'COMMENT': (enable_goa) ? '': '#'},
+)
+
+gnome.gtkdoc(
+  doc_module,
+  main_xml: doc_module + '-docs.xml',
+  src_dir: gdata_inc_dir,
+  ignore_headers: ignore_headers,
+  dependencies: libgdata_dep,
+  namespace: doc_module,
+  scan_args: scan_args,
+  mkdb_args: '--ignore-files=' + ' '.join(ignore_files),
+  fixxref_args: '--html-dir=' + (gdata_prefix / gnome.gtkdoc_html_dir(gdata_name)),
+  content_files: content_files,
+  html_assets: html_assets,
+  install: true,
+)
diff --git a/docs/reference/xml/gtkdocentities.ent.in b/docs/reference/xml/gtkdocentities.ent.in
new file mode 100644
index 00000000..fd86c165
--- /dev/null
+++ b/docs/reference/xml/gtkdocentities.ent.in
@@ -0,0 +1,7 @@
+<!ENTITY package "@PACKAGE@">
+<!ENTITY package_bugreport "@PACKAGE_BUGREPORT@">
+<!ENTITY package_name "@PACKAGE_NAME@">
+<!ENTITY package_string "@PACKAGE_STRING@">
+<!ENTITY package_tarname "@PACKAGE_TARNAME@">
+<!ENTITY package_url "@PACKAGE_URL@">
+<!ENTITY package_version "@PACKAGE_VERSION@">
diff --git a/docs/reference/xml/meson.build b/docs/reference/xml/meson.build
new file mode 100644
index 00000000..2c9564f3
--- /dev/null
+++ b/docs/reference/xml/meson.build
@@ -0,0 +1,15 @@
+ent_conf = {
+  'PACKAGE': gdata_name,
+  'PACKAGE_BUGREPORT': 'https://gitlab.gnome.org/GNOME/libgdata/issues',
+  'PACKAGE_NAME': gdata_name,
+  'PACKAGE_STRING': '@0@ @1@'.format(gdata_name, gdata_version),
+  'PACKAGE_TARNAME': gdata_name,
+  'PACKAGE_URL': 'https://wiki.gnome.org/Projects/libgdata',
+  'PACKAGE_VERSION': gdata_version,
+}
+
+configure_file(
+  input: 'gtkdocentities.ent.in',
+  output: '@BASENAME@',
+  configuration: ent_conf,
+)
diff --git a/gdata/app/meson.build b/gdata/app/meson.build
new file mode 100644
index 00000000..e5553c11
--- /dev/null
+++ b/gdata/app/meson.build
@@ -0,0 +1,10 @@
+headers = files('gdata-app-categories.h')
+
+install_headers(
+  headers,
+  subdir: gdata_include_subdir / 'app',
+)
+
+gir_headers += headers
+
+sources += files('gdata-app-categories.c')
diff --git a/gdata/atom/meson.build b/gdata/atom/meson.build
new file mode 100644
index 00000000..9a436955
--- /dev/null
+++ b/gdata/atom/meson.build
@@ -0,0 +1,20 @@
+headers = files(
+  'gdata-author.h',
+  'gdata-category.h',
+  'gdata-generator.h',
+  'gdata-link.h',
+)
+
+install_headers(
+  headers,
+  subdir: gdata_include_subdir / 'atom',
+)
+
+gir_headers += headers
+
+sources += files(
+  'gdata-author.c',
+  'gdata-category.c',
+  'gdata-generator.c',
+  'gdata-link.c',
+)
diff --git a/gdata/exif/meson.build b/gdata/exif/meson.build
new file mode 100644
index 00000000..a9000859
--- /dev/null
+++ b/gdata/exif/meson.build
@@ -0,0 +1 @@
+sources += files('gdata-exif-tags.c')
diff --git a/gdata/gcontact/meson.build b/gdata/gcontact/meson.build
new file mode 100644
index 00000000..7dbcd1e0
--- /dev/null
+++ b/gdata/gcontact/meson.build
@@ -0,0 +1,26 @@
+headers = files(
+  'gdata-gcontact-calendar.h',
+  'gdata-gcontact-event.h',
+  'gdata-gcontact-external-id.h',
+  'gdata-gcontact-jot.h',
+  'gdata-gcontact-language.h',
+  'gdata-gcontact-relation.h',
+  'gdata-gcontact-website.h',
+)
+
+install_headers(
+  headers,
+  subdir: gdata_include_subdir / 'gcontact',
+)
+
+gir_headers += headers
+
+sources += files(
+  'gdata-gcontact-calendar.c',
+  'gdata-gcontact-event.c',
+  'gdata-gcontact-external-id.c',
+  'gdata-gcontact-jot.c',
+  'gdata-gcontact-language.c',
+  'gdata-gcontact-relation.c',
+  'gdata-gcontact-website.c',
+)
diff --git a/gdata/gd/meson.build b/gdata/gd/meson.build
new file mode 100644
index 00000000..40a9784c
--- /dev/null
+++ b/gdata/gd/meson.build
@@ -0,0 +1,33 @@
+headers = files(
+  'gdata-gd-email-address.h',
+  'gdata-gd-im-address.h',
+  'gdata-gd-name.h',
+  'gdata-gd-organization.h',
+  'gdata-gd-phone-number.h',
+  'gdata-gd-postal-address.h',
+  'gdata-gd-reminder.h',
+  'gdata-gd-when.h',
+  'gdata-gd-where.h',
+  'gdata-gd-who.h',
+)
+
+install_headers(
+  headers,
+  subdir: gdata_include_subdir / 'gd',
+)
+
+gir_headers += headers
+
+sources += files(
+  'gdata-gd-email-address.c',
+  'gdata-gd-feed-link.c',
+  'gdata-gd-im-address.c',
+  'gdata-gd-name.c',
+  'gdata-gd-organization.c',
+  'gdata-gd-phone-number.c',
+  'gdata-gd-postal-address.c',
+  'gdata-gd-reminder.c',
+  'gdata-gd-when.c',
+  'gdata-gd-where.c',
+  'gdata-gd-who.c',
+)
diff --git a/gdata/georss/meson.build b/gdata/georss/meson.build
new file mode 100644
index 00000000..69c2ce38
--- /dev/null
+++ b/gdata/georss/meson.build
@@ -0,0 +1 @@
+sources += files('gdata-georss-where.c')
diff --git a/gdata/media/meson.build b/gdata/media/meson.build
new file mode 100644
index 00000000..eef13ffc
--- /dev/null
+++ b/gdata/media/meson.build
@@ -0,0 +1,53 @@
+incs += include_directories('.')
+
+include_subdir = gdata_include_subdir / 'media'
+
+headers = files(
+  'gdata-media-category.h',
+  'gdata-media-content.h',
+  'gdata-media-credit.h',
+  'gdata-media-thumbnail.h',
+)
+
+install_headers(
+  headers,
+  subdir: include_subdir,
+)
+
+gir_headers += headers
+
+sources += files(
+  'gdata-media-category.c',
+  'gdata-media-content.c',
+  'gdata-media-credit.c',
+  'gdata-media-group.c',
+  'gdata-media-thumbnail.c',
+)
+
+enums = 'gdata-media-enums'
+
+enums_in = gnome.mkenums_simple(
+  enums + '-in',
+  sources: headers,
+)
+
+# FIXME: Work around the namespace being incorrectly detected
+# by glib-mkenums. This needs to be fixed by changing the
+# namespace in libgdata. See !6.
+sources += custom_target(
+  enums + '.c',
+  input: enums_in[0],
+  output: enums + '.c',
+  command: enum_source_cmd,
+  capture: true,
+)
+
+enum_headers += custom_target(
+  enums + '.h',
+  input: enums_in[1],
+  output: enums + '.h',
+  command: enum_header_cmd,
+  capture: true,
+  install: true,
+  install_dir: gdata_includedir / include_subdir,
+)
diff --git a/gdata/meson.build b/gdata/meson.build
new file mode 100644
index 00000000..87cb702a
--- /dev/null
+++ b/gdata/meson.build
@@ -0,0 +1,204 @@
+gdata_inc_dir = include_directories('.')
+
+enum_headers = []
+gir_headers = []
+
+sources = []
+
+incs = [
+  gdata_inc_dir,
+  top_inc_dir,
+]
+
+subdir('app')
+subdir('atom')
+subdir('exif')
+subdir('gcontact')
+subdir('gd')
+subdir('georss')
+subdir('media')
+subdir('services')
+
+headers = files(
+  'gdata.h',
+  'gdata-access-handler.h',
+  'gdata-access-rule.h',
+  'gdata-authorization-domain.h',
+  'gdata-authorizer.h',
+  'gdata-batch-operation.h',
+  'gdata-batchable.h',
+  'gdata-client-login-authorizer.h',
+  'gdata-comment.h',
+  'gdata-commentable.h',
+  'gdata-comparable.h',
+  'gdata-download-stream.h',
+  'gdata-entry.h',
+  'gdata-feed.h',
+  'gdata-oauth1-authorizer.h',
+  'gdata-oauth2-authorizer.h',
+  'gdata-parsable.h',
+  'gdata-query.h',
+  'gdata-service.h',
+  'gdata-types.h',
+  'gdata-upload-stream.h',
+)
+
+sources += files(
+  'gdata-access-handler.c',
+  'gdata-access-rule.c',
+  'gdata-authorization-domain.c',
+  'gdata-authorizer.c',
+  'gdata-batch-feed.c',
+  'gdata-batch-operation.c',
+  'gdata-batchable.c',
+  'gdata-buffer.c',
+  'gdata-client-login-authorizer.c',
+  'gdata-comment.c',
+  'gdata-commentable.c',
+  'gdata-comparable.c',
+  'gdata-download-stream.c',
+  'gdata-entry.c',
+  'gdata-feed.c',
+  'gdata-oauth1-authorizer.c',
+  'gdata-oauth2-authorizer.c',
+  'gdata-parsable.c',
+  'gdata-parser.c',
+  'gdata-query.c',
+  'gdata-service.c',
+  'gdata-types.c',
+  'gdata-upload-stream.c',
+)
+
+if enable_goa
+  headers += files('gdata-goa-authorizer.h')
+  sources += files('gdata-goa-authorizer.c')
+endif
+
+install_headers(
+  headers,
+  subdir: gdata_include_subdir,
+)
+
+version_conf = {
+  'GDATA_VERSION_MAJOR': gdata_version_major,
+  'GDATA_VERSION_MINOR': gdata_version_minor,
+  'GDATA_VERSION_MICRO': gdata_version_micro,
+}
+
+headers += configure_file(
+  input: 'gdata-version.h.in',
+  output: '@BASENAME@',
+  configuration: version_conf,
+  install: true,
+  install_dir: gdata_includedir / gdata_include_subdir,
+)
+
+gir_headers += headers
+
+marshal = 'gdata-marshal'
+
+marshal_files = gnome.genmarshal(
+  marshal,
+  sources: marshal + '.list',
+  prefix: marshal.underscorify(),
+)
+
+enums = 'gdata-enums'
+
+enums_in = gnome.mkenums_simple(
+  enums + '-in',
+  sources: headers,
+)
+
+# FIXME: Work around the namespace being incorrectly detected
+# by glib-mkenums. This needs to be fixed by changing the
+# namespace in libgdata. See !6.
+sources += custom_target(
+  enums + '.c',
+  input: enums_in[0],
+  output: enums + '.c',
+  command: enum_source_cmd,
+  capture: true,
+)
+
+enum_headers += custom_target(
+  enums + '.h',
+  input: enums_in[1],
+  output: enums + '.h',
+  command: enum_header_cmd,
+  capture: true,
+  install: true,
+  install_dir: gdata_includedir / gdata_include_subdir,
+)
+
+symbol_map = meson.current_source_dir() / 'symbol.map'
+ldflags = cc.get_supported_link_arguments('-Wl,--version-script,' + symbol_map)
+
+libgdata_lib = shared_library(
+  'gdata',
+  include_directories: incs,
+  sources: sources + enum_headers + marshal_files,
+  dependencies: gdata_deps + gdata_private_deps,
+  link_args: ldflags,
+  link_depends: symbol_map,
+  install: true,
+  soversion: gdata_soversion,
+  gnu_symbol_visibility: 'default',
+)
+
+libgdata_dep = declare_dependency(
+  sources: enum_headers,
+  include_directories: gdata_inc_dir,
+  dependencies: gdata_deps,
+  link_with: libgdata_lib,
+)
+
+pkgconfig.generate(
+  name: 'libgdata',
+  description: 'GData client library',
+  subdirs: 'libgdata',
+  libraries: libgdata_lib,
+  requires: gdata_deps,
+  requires_private: gdata_private_deps,
+  filebase: 'libgdata',
+  version: gdata_version,
+  variables: [
+    'exec_prefix=${prefix}',
+    'goa_enabled=' + goa_dep.found().to_string(),
+  ],
+)
+
+if get_option('introspection')
+  gdata_gir_includes = ['GObject-2.0', 'libxml2-2.0', 'Soup-2.4', 'Json-1.0']
+  gdata_vapi_deps = ['libxml-2.0', 'libsoup-2.4', 'json-glib-1.0']
+
+  if enable_goa
+    gdata_gir_includes += ['Goa-1.0']
+    gdata_vapi_deps += ['goa-1.0']
+  endif
+
+  libgdata_gir = gnome.generate_gir(
+    libgdata_lib,
+    sources: sources + gir_headers + enum_headers,
+    nsversion: '@0@.@1@'.format(gdata_api_version_major, gdata_api_version_minor),
+    namespace: 'GData',
+    symbol_prefix: 'gdata',
+    includes: gdata_gir_includes,
+    header: 'gdata/gdata.h',
+    install: true,
+    export_packages: gdata_name,
+  )
+
+  if get_option('vapi')
+    libgdata_vapi = gnome.generate_vapi(gdata_name,
+      sources: libgdata_gir[0],
+      packages: gdata_vapi_deps,
+      install: true,
+    )
+  endif
+endif
+
+
+if always_build_tests
+  subdir('tests')
+endif
diff --git a/gdata/services/calendar/meson.build b/gdata/services/calendar/meson.build
new file mode 100644
index 00000000..5eaa8165
--- /dev/null
+++ b/gdata/services/calendar/meson.build
@@ -0,0 +1,24 @@
+headers = files(
+  'gdata-calendar-access-rule.h',
+  'gdata-calendar-calendar.h',
+  'gdata-calendar-event.h',
+  'gdata-calendar-feed.h',
+  'gdata-calendar-query.h',
+  'gdata-calendar-service.h',
+)
+
+install_headers(
+  headers,
+  subdir: gdata_include_subdir / 'services/calendar',
+)
+
+gir_headers += headers
+
+sources += files(
+  'gdata-calendar-access-rule.c',
+  'gdata-calendar-calendar.c',
+  'gdata-calendar-event.c',
+  'gdata-calendar-feed.c',
+  'gdata-calendar-query.c',
+  'gdata-calendar-service.c',
+)
diff --git a/gdata/services/contacts/meson.build b/gdata/services/contacts/meson.build
new file mode 100644
index 00000000..1627a7e4
--- /dev/null
+++ b/gdata/services/contacts/meson.build
@@ -0,0 +1,20 @@
+headers = files(
+  'gdata-contacts-contact.h',
+  'gdata-contacts-group.h',
+  'gdata-contacts-query.h',
+  'gdata-contacts-service.h',
+)
+
+install_headers(
+  headers,
+  subdir: gdata_include_subdir / 'services/contacts',
+)
+
+gir_headers += headers
+
+sources += files(
+  'gdata-contacts-contact.c',
+  'gdata-contacts-group.c',
+  'gdata-contacts-query.c',
+  'gdata-contacts-service.c',
+)
diff --git a/gdata/services/documents/meson.build b/gdata/services/documents/meson.build
new file mode 100644
index 00000000..6ff2bec1
--- /dev/null
+++ b/gdata/services/documents/meson.build
@@ -0,0 +1,73 @@
+incs += include_directories('.')
+
+include_subdir = gdata_include_subdir / 'services/documents'
+
+headers = files(
+  'gdata-documents-access-rule.h',
+  'gdata-documents-document.h',
+  'gdata-documents-drawing.h',
+  'gdata-documents-entry.h',
+  'gdata-documents-feed.h',
+  'gdata-documents-folder.h',
+  'gdata-documents-metadata.h',
+  'gdata-documents-pdf.h',
+  'gdata-documents-presentation.h',
+  'gdata-documents-query.h',
+  'gdata-documents-service.h',
+  'gdata-documents-spreadsheet.h',
+  'gdata-documents-text.h',
+  'gdata-documents-upload-query.h',
+)
+
+install_headers(
+  headers,
+  subdir: include_subdir,
+)
+
+gir_headers += headers
+
+sources += files(
+  'gdata-documents-access-rule.c',
+  'gdata-documents-document.c',
+  'gdata-documents-drawing.c',
+  'gdata-documents-entry.c',
+  'gdata-documents-feed.c',
+  'gdata-documents-folder.c',
+  'gdata-documents-metadata.c',
+  'gdata-documents-pdf.c',
+  'gdata-documents-presentation.c',
+  'gdata-documents-query.c',
+  'gdata-documents-service.c',
+  'gdata-documents-spreadsheet.c',
+  'gdata-documents-text.c',
+  'gdata-documents-upload-query.c',
+  'gdata-documents-utils.c',
+)
+
+enums = 'gdata-documents-enums'
+
+# FIXME: Work around the namespace being incorrectly detected
+# by glib-mkenums. This needs to be fixed by changing the
+# namespace in libgdata. See !6.
+enums_in = gnome.mkenums_simple(
+  enums + '-in',
+  sources: headers,
+)
+
+sources += custom_target(
+  enums + '.c',
+  input: enums_in[0],
+  output: enums + '.c',
+  command: enum_source_cmd,
+  capture: true,
+)
+
+enum_headers += custom_target(
+  enums + '.h',
+  input: enums_in[1],
+  output: enums + '.h',
+  command: enum_header_cmd,
+  capture: true,
+  install: true,
+  install_dir: gdata_includedir / include_subdir,
+)
diff --git a/gdata/services/freebase/meson.build b/gdata/services/freebase/meson.build
new file mode 100644
index 00000000..7ed419a4
--- /dev/null
+++ b/gdata/services/freebase/meson.build
@@ -0,0 +1,58 @@
+incs += include_directories('.')
+
+include_subdir = gdata_include_subdir / 'services/freebase'
+
+headers = files(
+  'gdata-freebase-query.h',
+  'gdata-freebase-result.h',
+  'gdata-freebase-search-query.h',
+  'gdata-freebase-search-result.h',
+  'gdata-freebase-service.h',
+  'gdata-freebase-topic-query.h',
+  'gdata-freebase-topic-result.h',
+)
+
+install_headers(
+  headers,
+  subdir: include_subdir,
+)
+
+gir_headers += headers
+
+sources += files(
+  'gdata-freebase-query.c',
+  'gdata-freebase-result.c',
+  'gdata-freebase-search-query.c',
+  'gdata-freebase-search-result.c',
+  'gdata-freebase-service.c',
+  'gdata-freebase-topic-query.c',
+  'gdata-freebase-topic-result.c',
+)
+
+enums = 'gdata-freebase-enums'
+
+enums_in = gnome.mkenums_simple(
+  enums + '-in',
+  sources: headers,
+)
+
+# FIXME: Work around the namespace being incorrectly detected
+# by glib-mkenums. This needs to be fixed by changing the
+# namespace in libgdata. See !6.
+sources += custom_target(
+  enums + '.c',
+  input: enums_in[0],
+  output: enums + '.c',
+  command: enum_source_cmd,
+  capture: true,
+)
+
+enum_headers += custom_target(
+  enums + '.h',
+  input: enums_in[1],
+  output: enums + '.h',
+  command: enum_header_cmd,
+  capture: true,
+  install: true,
+  install_dir: gdata_includedir / include_subdir,
+)
diff --git a/gdata/services/meson.build b/gdata/services/meson.build
new file mode 100644
index 00000000..f9879c71
--- /dev/null
+++ b/gdata/services/meson.build
@@ -0,0 +1,7 @@
+subdir('calendar')
+subdir('contacts')
+subdir('documents')
+subdir('freebase')
+subdir('picasaweb')
+subdir('tasks')
+subdir('youtube')
diff --git a/gdata/services/picasaweb/meson.build b/gdata/services/picasaweb/meson.build
new file mode 100644
index 00000000..edab0ce5
--- /dev/null
+++ b/gdata/services/picasaweb/meson.build
@@ -0,0 +1,58 @@
+incs += include_directories('.')
+
+include_subdir = gdata_include_subdir / 'services/picasaweb'
+
+headers = files(
+  'gdata-picasaweb-album.h',
+  'gdata-picasaweb-comment.h',
+  'gdata-picasaweb-feed.h',
+  'gdata-picasaweb-file.h',
+  'gdata-picasaweb-query.h',
+  'gdata-picasaweb-service.h',
+  'gdata-picasaweb-user.h',
+)
+
+install_headers(
+  headers,
+  subdir: include_subdir,
+)
+
+gir_headers += headers
+
+sources += files(
+  'gdata-picasaweb-album.c',
+  'gdata-picasaweb-comment.c',
+  'gdata-picasaweb-feed.c',
+  'gdata-picasaweb-file.c',
+  'gdata-picasaweb-query.c',
+  'gdata-picasaweb-service.c',
+  'gdata-picasaweb-user.c',
+)
+
+enums = 'gdata-picasaweb-enums'
+
+enums_in = gnome.mkenums_simple(
+  enums + '-in',
+  sources: headers,
+)
+
+# FIXME: Work around the namespace being incorrectly detected
+# by glib-mkenums. This needs to be fixed by changing the
+# namespace in libgdata. See !6.
+sources += custom_target(
+  enums + '.c',
+  input: enums_in[0],
+  output: enums + '.c',
+  command: [sed, '-e', 's/-in//', '-e', 's/g_data_picasa_web/gdata_picasaweb/', build_root / '@INPUT@'],
+  capture: true,
+)
+
+enum_headers += custom_target(
+  enums + '.h',
+  input: enums_in[1],
+  output: enums + '.h',
+  command: [sed, '-e', 's/g_data_picasa_web/gdata_picasaweb/', '-e', 
's/G_TYPE_DATA_PICASA_WEB/GDATA_TYPE_PICASAWEB/',  build_root / '@INPUT@'],
+  capture: true,
+  install: true,
+  install_dir: gdata_includedir / include_subdir,
+)
diff --git a/gdata/services/tasks/meson.build b/gdata/services/tasks/meson.build
new file mode 100644
index 00000000..76ad4238
--- /dev/null
+++ b/gdata/services/tasks/meson.build
@@ -0,0 +1,20 @@
+headers = files(
+  'gdata-tasks-query.h',
+  'gdata-tasks-service.h',
+  'gdata-tasks-task.h',
+  'gdata-tasks-tasklist.h',
+)
+
+install_headers(
+  headers,
+  subdir: gdata_include_subdir / 'services/tasks',
+)
+
+gir_headers += headers
+
+sources += files(
+  'gdata-tasks-query.c',
+  'gdata-tasks-service.c',
+  'gdata-tasks-task.c',
+  'gdata-tasks-tasklist.c',
+)
diff --git a/gdata/services/youtube/meson.build b/gdata/services/youtube/meson.build
new file mode 100644
index 00000000..84b21237
--- /dev/null
+++ b/gdata/services/youtube/meson.build
@@ -0,0 +1,62 @@
+incs += include_directories('.')
+
+include_subdir = gdata_include_subdir / 'services/youtube'
+
+headers = files(
+  'gdata-youtube-category.h',
+  'gdata-youtube-comment.h',
+  'gdata-youtube-content.h',
+  'gdata-youtube-credit.h',
+  'gdata-youtube-feed.h',
+  'gdata-youtube-query.h',
+  'gdata-youtube-service.h',
+  'gdata-youtube-state.h',
+  'gdata-youtube-video.h',
+)
+
+install_headers(
+  headers,
+  subdir: include_subdir,
+)
+
+gir_headers += headers
+
+sources += files(
+  'gdata-youtube-category.c',
+  'gdata-youtube-comment.c',
+  'gdata-youtube-content.c',
+  'gdata-youtube-credit.c',
+  'gdata-youtube-feed.c',
+  'gdata-youtube-query.c',
+  'gdata-youtube-service.c',
+  'gdata-youtube-state.c',
+  'gdata-youtube-video.c',
+)
+
+enums = 'gdata-youtube-enums'
+
+enums_in = gnome.mkenums_simple(
+  enums + '-in',
+  sources: headers,
+)
+
+# FIXME: Work around the namespace being incorrectly detected
+# by glib-mkenums. This needs to be fixed by changing the
+# namespace in libgdata. See !6.
+sources += custom_target(
+  enums + '.c',
+  input: enums_in[0],
+  output: enums + '.c',
+  command: [sed, '-e', 's/-in//', '-e', 's/g_data_you_tube/gdata_youtube/', build_root / '@INPUT@'],
+  capture: true,
+)
+
+enum_headers += custom_target(
+  enums + '.h',
+  input: enums_in[1],
+  output: enums + '.h',
+  command: [sed, '-e', 's/g_data_you_tube/gdata_youtube/', '-e', 
's/G_TYPE_DATA_YOU_TUBE/GDATA_TYPE_YOUTUBE/', build_root / '@INPUT@'],
+  capture: true,
+  install: true,
+  install_dir: gdata_includedir / include_subdir,
+)
diff --git a/gdata/symbol.map b/gdata/symbol.map
new file mode 100644
index 00000000..e84d1d0a
--- /dev/null
+++ b/gdata/symbol.map
@@ -0,0 +1,1136 @@
+{
+global:
+       gdata_access_handler_get_rules;
+       gdata_access_handler_get_rules_async;
+       gdata_access_handler_get_type;
+       gdata_access_rule_get_edited;
+       gdata_access_rule_get_key;
+       gdata_access_rule_get_role;
+       gdata_access_rule_get_scope;
+       gdata_access_rule_get_type;
+       gdata_access_rule_new;
+       gdata_access_rule_set_role;
+       gdata_access_rule_set_scope;
+       gdata_app_categories_get_categories;
+       gdata_app_categories_get_type;
+       gdata_app_categories_is_fixed;
+       gdata_author_get_email_address;
+       gdata_author_get_name;
+       gdata_author_get_type;
+       gdata_author_get_uri;
+       gdata_author_new;
+       gdata_author_set_email_address;
+       gdata_author_set_name;
+       gdata_author_set_uri;
+       gdata_authorization_domain_get_scope;
+       gdata_authorization_domain_get_service_name;
+       gdata_authorization_domain_get_type;
+       gdata_authorizer_get_type;
+       gdata_authorizer_is_authorized_for_domain;
+       gdata_authorizer_process_request;
+       gdata_authorizer_refresh_authorization;
+       gdata_authorizer_refresh_authorization_async;
+       gdata_authorizer_refresh_authorization_finish;
+       gdata_batch_operation_add_deletion;
+       gdata_batch_operation_add_insertion;
+       gdata_batch_operation_add_query;
+       gdata_batch_operation_add_update;
+       gdata_batch_operation_get_authorization_domain;
+       gdata_batch_operation_get_feed_uri;
+       gdata_batch_operation_get_service;
+       gdata_batch_operation_get_type;
+       gdata_batch_operation_run;
+       gdata_batch_operation_run_async;
+       gdata_batch_operation_run_finish;
+       gdata_batch_operation_type_get_type;
+       gdata_batchable_create_operation;
+       gdata_batchable_get_type;
+       gdata_calendar_access_rule_get_type;
+       gdata_calendar_access_rule_new;
+       gdata_calendar_calendar_get_access_level;
+       gdata_calendar_calendar_get_color;
+       gdata_calendar_calendar_get_edited;
+       gdata_calendar_calendar_get_times_cleaned;
+       gdata_calendar_calendar_get_timezone;
+       gdata_calendar_calendar_get_type;
+       gdata_calendar_calendar_is_hidden;
+       gdata_calendar_calendar_is_selected;
+       gdata_calendar_calendar_new;
+       gdata_calendar_calendar_set_color;
+       gdata_calendar_calendar_set_is_hidden;
+       gdata_calendar_calendar_set_is_selected;
+       gdata_calendar_calendar_set_timezone;
+       gdata_calendar_event_add_person;
+       gdata_calendar_event_add_place;
+       gdata_calendar_event_add_time;
+       gdata_calendar_event_get_anyone_can_add_self;
+       gdata_calendar_event_get_edited;
+       gdata_calendar_event_get_guests_can_invite_others;
+       gdata_calendar_event_get_guests_can_modify;
+       gdata_calendar_event_get_guests_can_see_guests;
+       gdata_calendar_event_get_original_event_details;
+       gdata_calendar_event_get_people;
+       gdata_calendar_event_get_places;
+       gdata_calendar_event_get_primary_time;
+       gdata_calendar_event_get_recurrence;
+       gdata_calendar_event_get_sequence;
+       gdata_calendar_event_get_status;
+       gdata_calendar_event_get_times;
+       gdata_calendar_event_get_transparency;
+       gdata_calendar_event_get_type;
+       gdata_calendar_event_get_uid;
+       gdata_calendar_event_get_visibility;
+       gdata_calendar_event_is_exception;
+       gdata_calendar_event_new;
+       gdata_calendar_event_set_anyone_can_add_self;
+       gdata_calendar_event_set_guests_can_invite_others;
+       gdata_calendar_event_set_guests_can_modify;
+       gdata_calendar_event_set_guests_can_see_guests;
+       gdata_calendar_event_set_recurrence;
+       gdata_calendar_event_set_sequence;
+       gdata_calendar_event_set_status;
+       gdata_calendar_event_set_transparency;
+       gdata_calendar_event_set_uid;
+       gdata_calendar_event_set_visibility;
+       gdata_calendar_feed_get_times_cleaned;
+       gdata_calendar_feed_get_timezone;
+       gdata_calendar_feed_get_type;
+       gdata_calendar_query_get_future_events;
+       gdata_calendar_query_get_max_attendees;
+       gdata_calendar_query_get_order_by;
+       gdata_calendar_query_get_recurrence_expansion_end;
+       gdata_calendar_query_get_recurrence_expansion_start;
+       gdata_calendar_query_get_single_events;
+       gdata_calendar_query_get_sort_order;
+       gdata_calendar_query_get_start_max;
+       gdata_calendar_query_get_start_min;
+       gdata_calendar_query_get_timezone;
+       gdata_calendar_query_get_type;
+       gdata_calendar_query_new;
+       gdata_calendar_query_new_with_limits;
+       gdata_calendar_query_set_future_events;
+       gdata_calendar_query_set_max_attendees;
+       gdata_calendar_query_set_order_by;
+       gdata_calendar_query_set_recurrence_expansion_end;
+       gdata_calendar_query_set_recurrence_expansion_start;
+       gdata_calendar_query_set_show_deleted;
+       gdata_calendar_query_set_single_events;
+       gdata_calendar_query_set_sort_order;
+       gdata_calendar_query_set_start_max;
+       gdata_calendar_query_set_start_min;
+       gdata_calendar_query_set_timezone;
+       gdata_calendar_query_show_deleted;
+       gdata_calendar_service_get_primary_authorization_domain;
+       gdata_calendar_service_get_type;
+       gdata_calendar_service_insert_calendar_event;
+       gdata_calendar_service_insert_calendar_event_async;
+       gdata_calendar_service_insert_event;
+       gdata_calendar_service_insert_event_async;
+       gdata_calendar_service_new;
+       gdata_calendar_service_query_all_calendars;
+       gdata_calendar_service_query_all_calendars_async;
+       gdata_calendar_service_query_events;
+       gdata_calendar_service_query_events_async;
+       gdata_calendar_service_query_own_calendars;
+       gdata_calendar_service_query_own_calendars_async;
+       gdata_category_get_label;
+       gdata_category_get_scheme;
+       gdata_category_get_term;
+       gdata_category_get_type;
+       gdata_category_new;
+       gdata_category_set_label;
+       gdata_category_set_scheme;
+       gdata_category_set_term;
+       gdata_client_login_authorizer_authenticate;
+       gdata_client_login_authorizer_authenticate_async;
+       gdata_client_login_authorizer_authenticate_finish;
+       gdata_client_login_authorizer_error_get_type;
+       gdata_client_login_authorizer_error_quark;
+       gdata_client_login_authorizer_get_client_id;
+       gdata_client_login_authorizer_get_password;
+       gdata_client_login_authorizer_get_proxy_resolver;
+       gdata_client_login_authorizer_get_proxy_uri;
+       gdata_client_login_authorizer_get_timeout;
+       gdata_client_login_authorizer_get_type;
+       gdata_client_login_authorizer_get_username;
+       gdata_client_login_authorizer_new;
+       gdata_client_login_authorizer_new_for_authorization_domains;
+       gdata_client_login_authorizer_set_proxy_resolver;
+       gdata_client_login_authorizer_set_proxy_uri;
+       gdata_client_login_authorizer_set_timeout;
+       gdata_color_from_hexadecimal;
+       gdata_color_get_type;
+       gdata_color_to_hexadecimal;
+       gdata_comment_get_type;
+       gdata_commentable_delete_comment;
+       gdata_commentable_delete_comment_async;
+       gdata_commentable_delete_comment_finish;
+       gdata_commentable_get_type;
+       gdata_commentable_insert_comment;
+       gdata_commentable_insert_comment_async;
+       gdata_commentable_insert_comment_finish;
+       gdata_commentable_query_comments;
+       gdata_commentable_query_comments_async;
+       gdata_commentable_query_comments_finish;
+       gdata_comparable_compare;
+       gdata_comparable_get_type;
+       gdata_contacts_contact_add_calendar;
+       gdata_contacts_contact_add_email_address;
+       gdata_contacts_contact_add_event;
+       gdata_contacts_contact_add_external_id;
+       gdata_contacts_contact_add_group;
+       gdata_contacts_contact_add_hobby;
+       gdata_contacts_contact_add_im_address;
+       gdata_contacts_contact_add_jot;
+       gdata_contacts_contact_add_language;
+       gdata_contacts_contact_add_organization;
+       gdata_contacts_contact_add_phone_number;
+       gdata_contacts_contact_add_postal_address;
+       gdata_contacts_contact_add_relation;
+       gdata_contacts_contact_add_website;
+       gdata_contacts_contact_get_billing_information;
+       gdata_contacts_contact_get_birthday;
+       gdata_contacts_contact_get_calendars;
+       gdata_contacts_contact_get_directory_server;
+       gdata_contacts_contact_get_edited;
+       gdata_contacts_contact_get_email_addresses;
+       gdata_contacts_contact_get_events;
+       gdata_contacts_contact_get_extended_properties;
+       gdata_contacts_contact_get_extended_property;
+       gdata_contacts_contact_get_external_ids;
+       gdata_contacts_contact_get_file_as;
+       gdata_contacts_contact_get_gender;
+       gdata_contacts_contact_get_groups;
+       gdata_contacts_contact_get_hobbies;
+       gdata_contacts_contact_get_im_addresses;
+       gdata_contacts_contact_get_initials;
+       gdata_contacts_contact_get_jots;
+       gdata_contacts_contact_get_languages;
+       gdata_contacts_contact_get_maiden_name;
+       gdata_contacts_contact_get_mileage;
+       gdata_contacts_contact_get_name;
+       gdata_contacts_contact_get_nickname;
+       gdata_contacts_contact_get_occupation;
+       gdata_contacts_contact_get_organizations;
+       gdata_contacts_contact_get_phone_numbers;
+       gdata_contacts_contact_get_photo;
+       gdata_contacts_contact_get_photo_async;
+       gdata_contacts_contact_get_photo_etag;
+       gdata_contacts_contact_get_photo_finish;
+       gdata_contacts_contact_get_postal_addresses;
+       gdata_contacts_contact_get_primary_calendar;
+       gdata_contacts_contact_get_primary_email_address;
+       gdata_contacts_contact_get_primary_im_address;
+       gdata_contacts_contact_get_primary_organization;
+       gdata_contacts_contact_get_primary_phone_number;
+       gdata_contacts_contact_get_primary_postal_address;
+       gdata_contacts_contact_get_primary_website;
+       gdata_contacts_contact_get_priority;
+       gdata_contacts_contact_get_relations;
+       gdata_contacts_contact_get_sensitivity;
+       gdata_contacts_contact_get_short_name;
+       gdata_contacts_contact_get_subject;
+       gdata_contacts_contact_get_type;
+       gdata_contacts_contact_get_user_defined_field;
+       gdata_contacts_contact_get_user_defined_fields;
+       gdata_contacts_contact_get_websites;
+       gdata_contacts_contact_is_deleted;
+       gdata_contacts_contact_is_group_deleted;
+       gdata_contacts_contact_new;
+       gdata_contacts_contact_remove_all_calendars;
+       gdata_contacts_contact_remove_all_email_addresses;
+       gdata_contacts_contact_remove_all_events;
+       gdata_contacts_contact_remove_all_external_ids;
+       gdata_contacts_contact_remove_all_hobbies;
+       gdata_contacts_contact_remove_all_im_addresses;
+       gdata_contacts_contact_remove_all_jots;
+       gdata_contacts_contact_remove_all_languages;
+       gdata_contacts_contact_remove_all_organizations;
+       gdata_contacts_contact_remove_all_phone_numbers;
+       gdata_contacts_contact_remove_all_postal_addresses;
+       gdata_contacts_contact_remove_all_relations;
+       gdata_contacts_contact_remove_all_websites;
+       gdata_contacts_contact_remove_group;
+       gdata_contacts_contact_set_billing_information;
+       gdata_contacts_contact_set_birthday;
+       gdata_contacts_contact_set_directory_server;
+       gdata_contacts_contact_set_extended_property;
+       gdata_contacts_contact_set_file_as;
+       gdata_contacts_contact_set_gender;
+       gdata_contacts_contact_set_initials;
+       gdata_contacts_contact_set_maiden_name;
+       gdata_contacts_contact_set_mileage;
+       gdata_contacts_contact_set_name;
+       gdata_contacts_contact_set_nickname;
+       gdata_contacts_contact_set_occupation;
+       gdata_contacts_contact_set_photo;
+       gdata_contacts_contact_set_photo_async;
+       gdata_contacts_contact_set_photo_finish;
+       gdata_contacts_contact_set_priority;
+       gdata_contacts_contact_set_sensitivity;
+       gdata_contacts_contact_set_short_name;
+       gdata_contacts_contact_set_subject;
+       gdata_contacts_contact_set_user_defined_field;
+       gdata_contacts_group_get_edited;
+       gdata_contacts_group_get_extended_properties;
+       gdata_contacts_group_get_extended_property;
+       gdata_contacts_group_get_system_group_id;
+       gdata_contacts_group_get_type;
+       gdata_contacts_group_is_deleted;
+       gdata_contacts_group_new;
+       gdata_contacts_group_set_extended_property;
+       gdata_contacts_query_get_group;
+       gdata_contacts_query_get_order_by;
+       gdata_contacts_query_get_sort_order;
+       gdata_contacts_query_get_type;
+       gdata_contacts_query_new;
+       gdata_contacts_query_new_with_limits;
+       gdata_contacts_query_set_group;
+       gdata_contacts_query_set_order_by;
+       gdata_contacts_query_set_show_deleted;
+       gdata_contacts_query_set_sort_order;
+       gdata_contacts_query_show_deleted;
+       gdata_contacts_service_get_primary_authorization_domain;
+       gdata_contacts_service_get_type;
+       gdata_contacts_service_insert_contact;
+       gdata_contacts_service_insert_contact_async;
+       gdata_contacts_service_insert_group;
+       gdata_contacts_service_insert_group_async;
+       gdata_contacts_service_new;
+       gdata_contacts_service_query_contacts;
+       gdata_contacts_service_query_contacts_async;
+       gdata_contacts_service_query_groups;
+       gdata_contacts_service_query_groups_async;
+       gdata_documents_access_rule_get_type;
+       gdata_documents_access_rule_new;
+       gdata_documents_document_download;
+       gdata_documents_document_get_download_uri;
+       gdata_documents_document_get_thumbnail_uri;
+       gdata_documents_document_get_type;
+       gdata_documents_document_new;
+       gdata_documents_drawing_get_type;
+       gdata_documents_drawing_new;
+       gdata_documents_entry_get_document_id;
+       gdata_documents_entry_get_edited;
+       gdata_documents_entry_get_file_size;
+       gdata_documents_entry_get_last_modified_by;
+       gdata_documents_entry_get_last_viewed;
+       gdata_documents_entry_get_path;
+       gdata_documents_entry_get_quota_used;
+       gdata_documents_entry_get_resource_id;
+       gdata_documents_entry_get_type;
+       gdata_documents_entry_is_deleted;
+       gdata_documents_entry_set_writers_can_invite;
+       gdata_documents_entry_writers_can_invite;
+       gdata_documents_feed_get_type;
+       gdata_documents_folder_get_type;
+       gdata_documents_folder_new;
+       gdata_documents_metadata_get_quota_total;
+       gdata_documents_metadata_get_quota_used;
+       gdata_documents_metadata_get_type;
+       gdata_documents_pdf_get_type;
+       gdata_documents_pdf_new;
+       gdata_documents_presentation_get_type;
+       gdata_documents_presentation_new;
+       gdata_documents_query_add_collaborator;
+       gdata_documents_query_add_reader;
+       gdata_documents_query_get_collaborator_addresses;
+       gdata_documents_query_get_exact_title;
+       gdata_documents_query_get_folder_id;
+       gdata_documents_query_get_reader_addresses;
+       gdata_documents_query_get_title;
+       gdata_documents_query_get_type;
+       gdata_documents_query_new;
+       gdata_documents_query_new_with_limits;
+       gdata_documents_query_set_folder_id;
+       gdata_documents_query_set_show_deleted;
+       gdata_documents_query_set_show_folders;
+       gdata_documents_query_set_title;
+       gdata_documents_query_show_deleted;
+       gdata_documents_query_show_folders;
+       gdata_documents_service_add_entry_to_folder;
+       gdata_documents_service_add_entry_to_folder_async;
+       gdata_documents_service_add_entry_to_folder_finish;
+       gdata_documents_service_copy_document;
+       gdata_documents_service_copy_document_async;
+       gdata_documents_service_copy_document_finish;
+       gdata_documents_service_error_get_type;
+       gdata_documents_service_error_quark;
+       gdata_documents_service_finish_upload;
+       gdata_documents_service_get_metadata;
+       gdata_documents_service_get_metadata_async;
+       gdata_documents_service_get_metadata_finish;
+       gdata_documents_service_get_primary_authorization_domain;
+       gdata_documents_service_get_spreadsheet_authorization_domain;
+       gdata_documents_service_get_type;
+       gdata_documents_service_get_upload_uri;
+       gdata_documents_service_new;
+       gdata_documents_service_query_documents;
+       gdata_documents_service_query_documents_async;
+       gdata_documents_service_remove_entry_from_folder;
+       gdata_documents_service_remove_entry_from_folder_async;
+       gdata_documents_service_remove_entry_from_folder_finish;
+       gdata_documents_service_update_document;
+       gdata_documents_service_update_document_resumable;
+       gdata_documents_service_upload_document;
+       gdata_documents_service_upload_document_resumable;
+       gdata_documents_spreadsheet_get_download_uri;
+       gdata_documents_spreadsheet_get_type;
+       gdata_documents_spreadsheet_new;
+       gdata_documents_text_get_type;
+       gdata_documents_text_new;
+       gdata_documents_upload_query_build_uri;
+       gdata_documents_upload_query_get_convert;
+       gdata_documents_upload_query_get_folder;
+       gdata_documents_upload_query_get_type;
+       gdata_documents_upload_query_new;
+       gdata_documents_upload_query_set_convert;
+       gdata_documents_upload_query_set_folder;
+       gdata_download_stream_get_authorization_domain;
+       gdata_download_stream_get_cancellable;
+       gdata_download_stream_get_content_length;
+       gdata_download_stream_get_content_type;
+       gdata_download_stream_get_download_uri;
+       gdata_download_stream_get_service;
+       gdata_download_stream_get_type;
+       gdata_download_stream_new;
+       gdata_entry_add_author;
+       gdata_entry_add_category;
+       gdata_entry_add_link;
+       gdata_entry_get_authors;
+       gdata_entry_get_categories;
+       gdata_entry_get_content;
+       gdata_entry_get_content_uri;
+       gdata_entry_get_etag;
+       gdata_entry_get_id;
+       gdata_entry_get_published;
+       gdata_entry_get_rights;
+       gdata_entry_get_summary;
+       gdata_entry_get_title;
+       gdata_entry_get_type;
+       gdata_entry_get_updated;
+       gdata_entry_is_inserted;
+       gdata_entry_look_up_link;
+       gdata_entry_look_up_links;
+       gdata_entry_new;
+       gdata_entry_remove_link;
+       gdata_entry_set_content;
+       gdata_entry_set_content_uri;
+       gdata_entry_set_rights;
+       gdata_entry_set_summary;
+       gdata_entry_set_title;
+       gdata_feed_get_authors;
+       gdata_feed_get_categories;
+       gdata_feed_get_entries;
+       gdata_feed_get_etag;
+       gdata_feed_get_generator;
+       gdata_feed_get_icon;
+       gdata_feed_get_id;
+       gdata_feed_get_items_per_page;
+       gdata_feed_get_links;
+       gdata_feed_get_logo;
+       gdata_feed_get_next_page_token;
+       gdata_feed_get_rights;
+       gdata_feed_get_start_index;
+       gdata_feed_get_subtitle;
+       gdata_feed_get_title;
+       gdata_feed_get_total_results;
+       gdata_feed_get_type;
+       gdata_feed_get_updated;
+       gdata_feed_look_up_entry;
+       gdata_feed_look_up_link;
+       gdata_freebase_query_get_type;
+       gdata_freebase_query_new;
+       gdata_freebase_query_new_from_variant;
+       gdata_freebase_result_dup_variant;
+       gdata_freebase_result_get_type;
+       gdata_freebase_result_new;
+       gdata_freebase_search_filter_type_get_type;
+       gdata_freebase_search_query_add_filter;
+       gdata_freebase_search_query_add_location;
+       gdata_freebase_search_query_close_filter;
+       gdata_freebase_search_query_get_language;
+       gdata_freebase_search_query_get_stemmed;
+       gdata_freebase_search_query_get_type;
+       gdata_freebase_search_query_new;
+       gdata_freebase_search_query_open_filter;
+       gdata_freebase_search_query_set_language;
+       gdata_freebase_search_query_set_stemmed;
+       gdata_freebase_search_result_get_item;
+       gdata_freebase_search_result_get_num_items;
+       gdata_freebase_search_result_get_total_hits;
+       gdata_freebase_search_result_get_type;
+       gdata_freebase_search_result_item_get_id;
+       gdata_freebase_search_result_item_get_language;
+       gdata_freebase_search_result_item_get_mid;
+       gdata_freebase_search_result_item_get_name;
+       gdata_freebase_search_result_item_get_notable_id;
+       gdata_freebase_search_result_item_get_notable_name;
+       gdata_freebase_search_result_item_get_score;
+       gdata_freebase_search_result_item_get_type;
+       gdata_freebase_search_result_new;
+       gdata_freebase_service_get_image;
+       gdata_freebase_service_get_topic;
+       gdata_freebase_service_get_topic_async;
+       gdata_freebase_service_get_type;
+       gdata_freebase_service_new;
+       gdata_freebase_service_query;
+       gdata_freebase_service_query_async;
+       gdata_freebase_service_search;
+       gdata_freebase_service_search_async;
+       gdata_freebase_topic_object_get_id;
+       gdata_freebase_topic_object_get_property_count;
+       gdata_freebase_topic_object_get_property_hits;
+       gdata_freebase_topic_object_get_property_value;
+       gdata_freebase_topic_object_get_type;
+       gdata_freebase_topic_object_list_properties;
+       gdata_freebase_topic_object_ref;
+       gdata_freebase_topic_object_unref;
+       gdata_freebase_topic_query_get_filter;
+       gdata_freebase_topic_query_get_language;
+       gdata_freebase_topic_query_get_type;
+       gdata_freebase_topic_query_new;
+       gdata_freebase_topic_query_set_filter;
+       gdata_freebase_topic_query_set_language;
+       gdata_freebase_topic_result_dup_object;
+       gdata_freebase_topic_result_get_type;
+       gdata_freebase_topic_result_new;
+       gdata_freebase_topic_value_copy_value;
+       gdata_freebase_topic_value_get_creator;
+       gdata_freebase_topic_value_get_double;
+       gdata_freebase_topic_value_get_int;
+       gdata_freebase_topic_value_get_language;
+       gdata_freebase_topic_value_get_object;
+       gdata_freebase_topic_value_get_property;
+       gdata_freebase_topic_value_get_string;
+       gdata_freebase_topic_value_get_text;
+       gdata_freebase_topic_value_get_timestamp;
+       gdata_freebase_topic_value_get_type;
+       gdata_freebase_topic_value_get_value_type;
+       gdata_freebase_topic_value_is_image;
+       gdata_freebase_topic_value_ref;
+       gdata_freebase_topic_value_unref;
+       gdata_gcontact_calendar_get_label;
+       gdata_gcontact_calendar_get_relation_type;
+       gdata_gcontact_calendar_get_type;
+       gdata_gcontact_calendar_get_uri;
+       gdata_gcontact_calendar_is_primary;
+       gdata_gcontact_calendar_new;
+       gdata_gcontact_calendar_set_is_primary;
+       gdata_gcontact_calendar_set_label;
+       gdata_gcontact_calendar_set_relation_type;
+       gdata_gcontact_calendar_set_uri;
+       gdata_gcontact_event_get_date;
+       gdata_gcontact_event_get_label;
+       gdata_gcontact_event_get_relation_type;
+       gdata_gcontact_event_get_type;
+       gdata_gcontact_event_new;
+       gdata_gcontact_event_set_date;
+       gdata_gcontact_event_set_label;
+       gdata_gcontact_event_set_relation_type;
+       gdata_gcontact_external_id_get_label;
+       gdata_gcontact_external_id_get_relation_type;
+       gdata_gcontact_external_id_get_type;
+       gdata_gcontact_external_id_get_value;
+       gdata_gcontact_external_id_new;
+       gdata_gcontact_external_id_set_label;
+       gdata_gcontact_external_id_set_relation_type;
+       gdata_gcontact_external_id_set_value;
+       gdata_gcontact_jot_get_content;
+       gdata_gcontact_jot_get_relation_type;
+       gdata_gcontact_jot_get_type;
+       gdata_gcontact_jot_new;
+       gdata_gcontact_jot_set_content;
+       gdata_gcontact_jot_set_relation_type;
+       gdata_gcontact_language_get_code;
+       gdata_gcontact_language_get_label;
+       gdata_gcontact_language_get_type;
+       gdata_gcontact_language_new;
+       gdata_gcontact_language_set_code;
+       gdata_gcontact_language_set_label;
+       gdata_gcontact_relation_get_label;
+       gdata_gcontact_relation_get_name;
+       gdata_gcontact_relation_get_relation_type;
+       gdata_gcontact_relation_get_type;
+       gdata_gcontact_relation_new;
+       gdata_gcontact_relation_set_label;
+       gdata_gcontact_relation_set_name;
+       gdata_gcontact_relation_set_relation_type;
+       gdata_gcontact_website_get_label;
+       gdata_gcontact_website_get_relation_type;
+       gdata_gcontact_website_get_type;
+       gdata_gcontact_website_get_uri;
+       gdata_gcontact_website_is_primary;
+       gdata_gcontact_website_new;
+       gdata_gcontact_website_set_is_primary;
+       gdata_gcontact_website_set_label;
+       gdata_gcontact_website_set_relation_type;
+       gdata_gcontact_website_set_uri;
+       gdata_gd_email_address_get_address;
+       gdata_gd_email_address_get_display_name;
+       gdata_gd_email_address_get_label;
+       gdata_gd_email_address_get_relation_type;
+       gdata_gd_email_address_get_type;
+       gdata_gd_email_address_is_primary;
+       gdata_gd_email_address_new;
+       gdata_gd_email_address_set_address;
+       gdata_gd_email_address_set_display_name;
+       gdata_gd_email_address_set_is_primary;
+       gdata_gd_email_address_set_label;
+       gdata_gd_email_address_set_relation_type;
+       gdata_gd_im_address_get_address;
+       gdata_gd_im_address_get_label;
+       gdata_gd_im_address_get_protocol;
+       gdata_gd_im_address_get_relation_type;
+       gdata_gd_im_address_get_type;
+       gdata_gd_im_address_is_primary;
+       gdata_gd_im_address_new;
+       gdata_gd_im_address_set_address;
+       gdata_gd_im_address_set_is_primary;
+       gdata_gd_im_address_set_label;
+       gdata_gd_im_address_set_protocol;
+       gdata_gd_im_address_set_relation_type;
+       gdata_gd_name_get_additional_name;
+       gdata_gd_name_get_family_name;
+       gdata_gd_name_get_full_name;
+       gdata_gd_name_get_given_name;
+       gdata_gd_name_get_prefix;
+       gdata_gd_name_get_suffix;
+       gdata_gd_name_get_type;
+       gdata_gd_name_new;
+       gdata_gd_name_set_additional_name;
+       gdata_gd_name_set_family_name;
+       gdata_gd_name_set_full_name;
+       gdata_gd_name_set_given_name;
+       gdata_gd_name_set_prefix;
+       gdata_gd_name_set_suffix;
+       gdata_gd_organization_get_department;
+       gdata_gd_organization_get_job_description;
+       gdata_gd_organization_get_label;
+       gdata_gd_organization_get_location;
+       gdata_gd_organization_get_name;
+       gdata_gd_organization_get_relation_type;
+       gdata_gd_organization_get_symbol;
+       gdata_gd_organization_get_title;
+       gdata_gd_organization_get_type;
+       gdata_gd_organization_is_primary;
+       gdata_gd_organization_new;
+       gdata_gd_organization_set_department;
+       gdata_gd_organization_set_is_primary;
+       gdata_gd_organization_set_job_description;
+       gdata_gd_organization_set_label;
+       gdata_gd_organization_set_location;
+       gdata_gd_organization_set_name;
+       gdata_gd_organization_set_relation_type;
+       gdata_gd_organization_set_symbol;
+       gdata_gd_organization_set_title;
+       gdata_gd_phone_number_get_label;
+       gdata_gd_phone_number_get_number;
+       gdata_gd_phone_number_get_relation_type;
+       gdata_gd_phone_number_get_type;
+       gdata_gd_phone_number_get_uri;
+       gdata_gd_phone_number_is_primary;
+       gdata_gd_phone_number_new;
+       gdata_gd_phone_number_set_is_primary;
+       gdata_gd_phone_number_set_label;
+       gdata_gd_phone_number_set_number;
+       gdata_gd_phone_number_set_relation_type;
+       gdata_gd_phone_number_set_uri;
+       gdata_gd_postal_address_get_address;
+       gdata_gd_postal_address_get_agent;
+       gdata_gd_postal_address_get_city;
+       gdata_gd_postal_address_get_country;
+       gdata_gd_postal_address_get_country_code;
+       gdata_gd_postal_address_get_house_name;
+       gdata_gd_postal_address_get_label;
+       gdata_gd_postal_address_get_mail_class;
+       gdata_gd_postal_address_get_neighborhood;
+       gdata_gd_postal_address_get_po_box;
+       gdata_gd_postal_address_get_postcode;
+       gdata_gd_postal_address_get_region;
+       gdata_gd_postal_address_get_relation_type;
+       gdata_gd_postal_address_get_street;
+       gdata_gd_postal_address_get_subregion;
+       gdata_gd_postal_address_get_type;
+       gdata_gd_postal_address_get_usage;
+       gdata_gd_postal_address_is_primary;
+       gdata_gd_postal_address_new;
+       gdata_gd_postal_address_set_address;
+       gdata_gd_postal_address_set_agent;
+       gdata_gd_postal_address_set_city;
+       gdata_gd_postal_address_set_country;
+       gdata_gd_postal_address_set_house_name;
+       gdata_gd_postal_address_set_is_primary;
+       gdata_gd_postal_address_set_label;
+       gdata_gd_postal_address_set_mail_class;
+       gdata_gd_postal_address_set_neighborhood;
+       gdata_gd_postal_address_set_po_box;
+       gdata_gd_postal_address_set_postcode;
+       gdata_gd_postal_address_set_region;
+       gdata_gd_postal_address_set_relation_type;
+       gdata_gd_postal_address_set_street;
+       gdata_gd_postal_address_set_subregion;
+       gdata_gd_postal_address_set_usage;
+       gdata_gd_reminder_get_absolute_time;
+       gdata_gd_reminder_get_method;
+       gdata_gd_reminder_get_relative_time;
+       gdata_gd_reminder_get_type;
+       gdata_gd_reminder_is_absolute_time;
+       gdata_gd_reminder_new;
+       gdata_gd_reminder_set_absolute_time;
+       gdata_gd_reminder_set_method;
+       gdata_gd_reminder_set_relative_time;
+       gdata_gd_when_add_reminder;
+       gdata_gd_when_get_end_time;
+       gdata_gd_when_get_reminders;
+       gdata_gd_when_get_start_time;
+       gdata_gd_when_get_type;
+       gdata_gd_when_get_value_string;
+       gdata_gd_when_is_date;
+       gdata_gd_when_new;
+       gdata_gd_when_set_end_time;
+       gdata_gd_when_set_is_date;
+       gdata_gd_when_set_start_time;
+       gdata_gd_when_set_value_string;
+       gdata_gd_where_get_label;
+       gdata_gd_where_get_relation_type;
+       gdata_gd_where_get_type;
+       gdata_gd_where_get_value_string;
+       gdata_gd_where_new;
+       gdata_gd_where_set_label;
+       gdata_gd_where_set_relation_type;
+       gdata_gd_where_set_value_string;
+       gdata_gd_who_get_email_address;
+       gdata_gd_who_get_relation_type;
+       gdata_gd_who_get_type;
+       gdata_gd_who_get_value_string;
+       gdata_gd_who_new;
+       gdata_gd_who_set_email_address;
+       gdata_gd_who_set_relation_type;
+       gdata_gd_who_set_value_string;
+       gdata_generator_get_name;
+       gdata_generator_get_type;
+       gdata_generator_get_uri;
+       gdata_generator_get_version;
+       gdata_goa_authorizer_get_goa_object;
+       gdata_goa_authorizer_get_type;
+       gdata_goa_authorizer_new;
+       gdata_link_get_content_type;
+       gdata_link_get_language;
+       gdata_link_get_length;
+       gdata_link_get_relation_type;
+       gdata_link_get_title;
+       gdata_link_get_type;
+       gdata_link_get_uri;
+       gdata_link_new;
+       gdata_link_set_content_type;
+       gdata_link_set_language;
+       gdata_link_set_length;
+       gdata_link_set_relation_type;
+       gdata_link_set_title;
+       gdata_link_set_uri;
+       gdata_media_category_get_category;
+       gdata_media_category_get_label;
+       gdata_media_category_get_scheme;
+       gdata_media_category_get_type;
+       gdata_media_category_new;
+       gdata_media_category_set_category;
+       gdata_media_category_set_label;
+       gdata_media_category_set_scheme;
+       gdata_media_content_download;
+       gdata_media_content_get_content_type;
+       gdata_media_content_get_duration;
+       gdata_media_content_get_expression;
+       gdata_media_content_get_filesize;
+       gdata_media_content_get_height;
+       gdata_media_content_get_medium;
+       gdata_media_content_get_type;
+       gdata_media_content_get_uri;
+       gdata_media_content_get_width;
+       gdata_media_content_is_default;
+       gdata_media_credit_get_credit;
+       gdata_media_credit_get_role;
+       gdata_media_credit_get_scheme;
+       gdata_media_credit_get_type;
+       gdata_media_expression_get_type;
+       gdata_media_medium_get_type;
+       gdata_media_thumbnail_download;
+       gdata_media_thumbnail_get_height;
+       gdata_media_thumbnail_get_time;
+       gdata_media_thumbnail_get_type;
+       gdata_media_thumbnail_get_uri;
+       gdata_media_thumbnail_get_width;
+       gdata_oauth1_authorizer_get_application_name;
+       gdata_oauth1_authorizer_get_locale;
+       gdata_oauth1_authorizer_get_proxy_resolver;
+       gdata_oauth1_authorizer_get_proxy_uri;
+       gdata_oauth1_authorizer_get_timeout;
+       gdata_oauth1_authorizer_get_type;
+       gdata_oauth1_authorizer_new;
+       gdata_oauth1_authorizer_new_for_authorization_domains;
+       gdata_oauth1_authorizer_request_authentication_uri;
+       gdata_oauth1_authorizer_request_authentication_uri_async;
+       gdata_oauth1_authorizer_request_authentication_uri_finish;
+       gdata_oauth1_authorizer_request_authorization;
+       gdata_oauth1_authorizer_request_authorization_async;
+       gdata_oauth1_authorizer_request_authorization_finish;
+       gdata_oauth1_authorizer_set_locale;
+       gdata_oauth1_authorizer_set_proxy_resolver;
+       gdata_oauth1_authorizer_set_proxy_uri;
+       gdata_oauth1_authorizer_set_timeout;
+       gdata_oauth2_authorizer_build_authentication_uri;
+       gdata_oauth2_authorizer_dup_refresh_token;
+       gdata_oauth2_authorizer_get_client_id;
+       gdata_oauth2_authorizer_get_client_secret;
+       gdata_oauth2_authorizer_get_locale;
+       gdata_oauth2_authorizer_get_proxy_resolver;
+       gdata_oauth2_authorizer_get_redirect_uri;
+       gdata_oauth2_authorizer_get_timeout;
+       gdata_oauth2_authorizer_get_type;
+       gdata_oauth2_authorizer_new;
+       gdata_oauth2_authorizer_new_for_authorization_domains;
+       gdata_oauth2_authorizer_request_authorization;
+       gdata_oauth2_authorizer_request_authorization_async;
+       gdata_oauth2_authorizer_request_authorization_finish;
+       gdata_oauth2_authorizer_set_locale;
+       gdata_oauth2_authorizer_set_proxy_resolver;
+       gdata_oauth2_authorizer_set_refresh_token;
+       gdata_oauth2_authorizer_set_timeout;
+       gdata_operation_type_get_type;
+       gdata_parsable_get_content_type;
+       gdata_parsable_get_json;
+       gdata_parsable_get_type;
+       gdata_parsable_get_xml;
+       gdata_parsable_new_from_json;
+       gdata_parsable_new_from_xml;
+       gdata_parser_error_get_type;
+       gdata_parser_error_quark;
+       gdata_picasaweb_album_get_bytes_used;
+       gdata_picasaweb_album_get_comment_count;
+       gdata_picasaweb_album_get_contents;
+       gdata_picasaweb_album_get_coordinates;
+       gdata_picasaweb_album_get_edited;
+       gdata_picasaweb_album_get_id;
+       gdata_picasaweb_album_get_location;
+       gdata_picasaweb_album_get_nickname;
+       gdata_picasaweb_album_get_num_photos;
+       gdata_picasaweb_album_get_num_photos_remaining;
+       gdata_picasaweb_album_get_tags;
+       gdata_picasaweb_album_get_thumbnails;
+       gdata_picasaweb_album_get_timestamp;
+       gdata_picasaweb_album_get_type;
+       gdata_picasaweb_album_get_user;
+       gdata_picasaweb_album_get_visibility;
+       gdata_picasaweb_album_is_commenting_enabled;
+       gdata_picasaweb_album_new;
+       gdata_picasaweb_album_set_coordinates;
+       gdata_picasaweb_album_set_is_commenting_enabled;
+       gdata_picasaweb_album_set_location;
+       gdata_picasaweb_album_set_tags;
+       gdata_picasaweb_album_set_timestamp;
+       gdata_picasaweb_album_set_visibility;
+       gdata_picasaweb_comment_get_type;
+       gdata_picasaweb_comment_new;
+       gdata_picasaweb_feed_get_type;
+       gdata_picasaweb_file_get_album_id;
+       gdata_picasaweb_file_get_caption;
+       gdata_picasaweb_file_get_checksum;
+       gdata_picasaweb_file_get_comment_count;
+       gdata_picasaweb_file_get_contents;
+       gdata_picasaweb_file_get_coordinates;
+       gdata_picasaweb_file_get_credit;
+       gdata_picasaweb_file_get_distance;
+       gdata_picasaweb_file_get_edited;
+       gdata_picasaweb_file_get_exposure;
+       gdata_picasaweb_file_get_flash;
+       gdata_picasaweb_file_get_focal_length;
+       gdata_picasaweb_file_get_fstop;
+       gdata_picasaweb_file_get_height;
+       gdata_picasaweb_file_get_id;
+       gdata_picasaweb_file_get_image_unique_id;
+       gdata_picasaweb_file_get_iso;
+       gdata_picasaweb_file_get_make;
+       gdata_picasaweb_file_get_model;
+       gdata_picasaweb_file_get_rotation;
+       gdata_picasaweb_file_get_size;
+       gdata_picasaweb_file_get_tags;
+       gdata_picasaweb_file_get_thumbnails;
+       gdata_picasaweb_file_get_timestamp;
+       gdata_picasaweb_file_get_type;
+       gdata_picasaweb_file_get_version;
+       gdata_picasaweb_file_get_video_status;
+       gdata_picasaweb_file_get_width;
+       gdata_picasaweb_file_is_commenting_enabled;
+       gdata_picasaweb_file_new;
+       gdata_picasaweb_file_set_album_id;
+       gdata_picasaweb_file_set_caption;
+       gdata_picasaweb_file_set_checksum;
+       gdata_picasaweb_file_set_coordinates;
+       gdata_picasaweb_file_set_is_commenting_enabled;
+       gdata_picasaweb_file_set_rotation;
+       gdata_picasaweb_file_set_tags;
+       gdata_picasaweb_file_set_timestamp;
+       gdata_picasaweb_query_get_bounding_box;
+       gdata_picasaweb_query_get_image_size;
+       gdata_picasaweb_query_get_location;
+       gdata_picasaweb_query_get_tag;
+       gdata_picasaweb_query_get_thumbnail_size;
+       gdata_picasaweb_query_get_type;
+       gdata_picasaweb_query_get_visibility;
+       gdata_picasaweb_query_new;
+       gdata_picasaweb_query_new_with_limits;
+       gdata_picasaweb_query_set_bounding_box;
+       gdata_picasaweb_query_set_image_size;
+       gdata_picasaweb_query_set_location;
+       gdata_picasaweb_query_set_tag;
+       gdata_picasaweb_query_set_thumbnail_size;
+       gdata_picasaweb_query_set_visibility;
+       gdata_picasaweb_service_finish_file_upload;
+       gdata_picasaweb_service_get_primary_authorization_domain;
+       gdata_picasaweb_service_get_type;
+       gdata_picasaweb_service_get_user;
+       gdata_picasaweb_service_get_user_async;
+       gdata_picasaweb_service_get_user_finish;
+       gdata_picasaweb_service_insert_album;
+       gdata_picasaweb_service_insert_album_async;
+       gdata_picasaweb_service_new;
+       gdata_picasaweb_service_query_all_albums;
+       gdata_picasaweb_service_query_all_albums_async;
+       gdata_picasaweb_service_query_files;
+       gdata_picasaweb_service_query_files_async;
+       gdata_picasaweb_service_upload_file;
+       gdata_picasaweb_user_get_max_photos_per_album;
+       gdata_picasaweb_user_get_nickname;
+       gdata_picasaweb_user_get_quota_current;
+       gdata_picasaweb_user_get_quota_limit;
+       gdata_picasaweb_user_get_thumbnail_uri;
+       gdata_picasaweb_user_get_type;
+       gdata_picasaweb_user_get_user;
+       gdata_picasaweb_visibility_get_type;
+       gdata_query_get_author;
+       gdata_query_get_categories;
+       gdata_query_get_etag;
+       gdata_query_get_max_results;
+       gdata_query_get_published_max;
+       gdata_query_get_published_min;
+       gdata_query_get_q;
+       gdata_query_get_query_uri;
+       gdata_query_get_start_index;
+       gdata_query_get_type;
+       gdata_query_get_updated_max;
+       gdata_query_get_updated_min;
+       gdata_query_is_strict;
+       gdata_query_new;
+       gdata_query_new_with_limits;
+       gdata_query_next_page;
+       gdata_query_previous_page;
+       gdata_query_set_author;
+       gdata_query_set_categories;
+       gdata_query_set_etag;
+       gdata_query_set_is_strict;
+       gdata_query_set_max_results;
+       gdata_query_set_published_max;
+       gdata_query_set_published_min;
+       gdata_query_set_q;
+       gdata_query_set_start_index;
+       gdata_query_set_updated_max;
+       gdata_query_set_updated_min;
+       gdata_service_delete_entry;
+       gdata_service_delete_entry_async;
+       gdata_service_delete_entry_finish;
+       gdata_service_error_get_type;
+       gdata_service_error_quark;
+       gdata_service_get_authorization_domains;
+       gdata_service_get_authorizer;
+       gdata_service_get_locale;
+       gdata_service_get_proxy_resolver;
+       gdata_service_get_proxy_uri;
+       gdata_service_get_timeout;
+       gdata_service_get_type;
+       gdata_service_insert_entry;
+       gdata_service_insert_entry_async;
+       gdata_service_insert_entry_finish;
+       gdata_service_is_authorized;
+       gdata_service_query;
+       gdata_service_query_async;
+       gdata_service_query_finish;
+       gdata_service_query_single_entry;
+       gdata_service_query_single_entry_async;
+       gdata_service_query_single_entry_finish;
+       gdata_service_set_authorizer;
+       gdata_service_set_locale;
+       gdata_service_set_proxy_resolver;
+       gdata_service_set_proxy_uri;
+       gdata_service_set_timeout;
+       gdata_service_update_entry;
+       gdata_service_update_entry_async;
+       gdata_service_update_entry_finish;
+       gdata_tasks_query_get_completed_max;
+       gdata_tasks_query_get_completed_min;
+       gdata_tasks_query_get_due_max;
+       gdata_tasks_query_get_due_min;
+       gdata_tasks_query_get_show_completed;
+       gdata_tasks_query_get_show_deleted;
+       gdata_tasks_query_get_show_hidden;
+       gdata_tasks_query_get_type;
+       gdata_tasks_query_new;
+       gdata_tasks_query_set_completed_max;
+       gdata_tasks_query_set_completed_min;
+       gdata_tasks_query_set_due_max;
+       gdata_tasks_query_set_due_min;
+       gdata_tasks_query_set_show_completed;
+       gdata_tasks_query_set_show_deleted;
+       gdata_tasks_query_set_show_hidden;
+       gdata_tasks_service_delete_task;
+       gdata_tasks_service_delete_task_async;
+       gdata_tasks_service_delete_tasklist;
+       gdata_tasks_service_delete_tasklist_async;
+       gdata_tasks_service_get_primary_authorization_domain;
+       gdata_tasks_service_get_type;
+       gdata_tasks_service_insert_task;
+       gdata_tasks_service_insert_task_async;
+       gdata_tasks_service_insert_tasklist;
+       gdata_tasks_service_insert_tasklist_async;
+       gdata_tasks_service_new;
+       gdata_tasks_service_query_all_tasklists;
+       gdata_tasks_service_query_all_tasklists_async;
+       gdata_tasks_service_query_tasks;
+       gdata_tasks_service_query_tasks_async;
+       gdata_tasks_service_update_task;
+       gdata_tasks_service_update_task_async;
+       gdata_tasks_service_update_tasklist;
+       gdata_tasks_service_update_tasklist_async;
+       gdata_tasks_task_get_completed;
+       gdata_tasks_task_get_due;
+       gdata_tasks_task_get_notes;
+       gdata_tasks_task_get_parent;
+       gdata_tasks_task_get_position;
+       gdata_tasks_task_get_status;
+       gdata_tasks_task_get_type;
+       gdata_tasks_task_is_deleted;
+       gdata_tasks_task_is_hidden;
+       gdata_tasks_task_new;
+       gdata_tasks_task_set_completed;
+       gdata_tasks_task_set_due;
+       gdata_tasks_task_set_is_deleted;
+       gdata_tasks_task_set_notes;
+       gdata_tasks_task_set_parent;
+       gdata_tasks_task_set_position;
+       gdata_tasks_task_set_status;
+       gdata_tasks_tasklist_get_type;
+       gdata_tasks_tasklist_new;
+       gdata_upload_stream_get_authorization_domain;
+       gdata_upload_stream_get_cancellable;
+       gdata_upload_stream_get_content_length;
+       gdata_upload_stream_get_content_type;
+       gdata_upload_stream_get_entry;
+       gdata_upload_stream_get_method;
+       gdata_upload_stream_get_service;
+       gdata_upload_stream_get_slug;
+       gdata_upload_stream_get_type;
+       gdata_upload_stream_get_upload_uri;
+       gdata_upload_stream_new;
+       gdata_upload_stream_new_resumable;
+       gdata_youtube_age_get_type;
+       gdata_youtube_category_get_type;
+       gdata_youtube_category_is_assignable;
+       gdata_youtube_category_is_browsable;
+       gdata_youtube_category_is_deprecated;
+       gdata_youtube_comment_get_parent_comment_uri;
+       gdata_youtube_comment_get_type;
+       gdata_youtube_comment_new;
+       gdata_youtube_comment_set_parent_comment_uri;
+       gdata_youtube_content_get_format;
+       gdata_youtube_content_get_type;
+       gdata_youtube_credit_get_entity_type;
+       gdata_youtube_credit_get_type;
+       gdata_youtube_feed_get_type;
+       gdata_youtube_format_get_type;
+       gdata_youtube_permission_get_type;
+       gdata_youtube_query_get_age;
+       gdata_youtube_query_get_format;
+       gdata_youtube_query_get_language;
+       gdata_youtube_query_get_license;
+       gdata_youtube_query_get_location;
+       gdata_youtube_query_get_order_by;
+       gdata_youtube_query_get_restriction;
+       gdata_youtube_query_get_safe_search;
+       gdata_youtube_query_get_sort_order;
+       gdata_youtube_query_get_type;
+       gdata_youtube_query_get_uploader;
+       gdata_youtube_query_new;
+       gdata_youtube_query_set_age;
+       gdata_youtube_query_set_format;
+       gdata_youtube_query_set_language;
+       gdata_youtube_query_set_license;
+       gdata_youtube_query_set_location;
+       gdata_youtube_query_set_order_by;
+       gdata_youtube_query_set_restriction;
+       gdata_youtube_query_set_safe_search;
+       gdata_youtube_query_set_sort_order;
+       gdata_youtube_query_set_uploader;
+       gdata_youtube_safe_search_get_type;
+       gdata_youtube_service_error_get_type;
+       gdata_youtube_service_error_quark;
+       gdata_youtube_service_finish_video_upload;
+       gdata_youtube_service_get_categories;
+       gdata_youtube_service_get_categories_async;
+       gdata_youtube_service_get_categories_finish;
+       gdata_youtube_service_get_developer_key;
+       gdata_youtube_service_get_primary_authorization_domain;
+       gdata_youtube_service_get_type;
+       gdata_youtube_service_new;
+       gdata_youtube_service_query_related;
+       gdata_youtube_service_query_related_async;
+       gdata_youtube_service_query_standard_feed;
+       gdata_youtube_service_query_standard_feed_async;
+       gdata_youtube_service_query_videos;
+       gdata_youtube_service_query_videos_async;
+       gdata_youtube_service_upload_video;
+       gdata_youtube_sort_order_get_type;
+       gdata_youtube_standard_feed_type_get_type;
+       gdata_youtube_state_get_help_uri;
+       gdata_youtube_state_get_message;
+       gdata_youtube_state_get_name;
+       gdata_youtube_state_get_reason_code;
+       gdata_youtube_state_get_type;
+       gdata_youtube_uploader_get_type;
+       gdata_youtube_video_get_access_control;
+       gdata_youtube_video_get_aspect_ratio;
+       gdata_youtube_video_get_category;
+       gdata_youtube_video_get_coordinates;
+       gdata_youtube_video_get_credit;
+       gdata_youtube_video_get_description;
+       gdata_youtube_video_get_duration;
+       gdata_youtube_video_get_favorite_count;
+       gdata_youtube_video_get_keywords;
+       gdata_youtube_video_get_location;
+       gdata_youtube_video_get_media_rating;
+       gdata_youtube_video_get_player_uri;
+       gdata_youtube_video_get_rating;
+       gdata_youtube_video_get_recorded;
+       gdata_youtube_video_get_state;
+       gdata_youtube_video_get_thumbnails;
+       gdata_youtube_video_get_type;
+       gdata_youtube_video_get_uploaded;
+       gdata_youtube_video_get_video_id;
+       gdata_youtube_video_get_video_id_from_uri;
+       gdata_youtube_video_get_view_count;
+       gdata_youtube_video_is_draft;
+       gdata_youtube_video_is_private;
+       gdata_youtube_video_is_restricted_in_country;
+       gdata_youtube_video_look_up_content;
+       gdata_youtube_video_new;
+       gdata_youtube_video_set_access_control;
+       gdata_youtube_video_set_aspect_ratio;
+       gdata_youtube_video_set_category;
+       gdata_youtube_video_set_coordinates;
+       gdata_youtube_video_set_description;
+       gdata_youtube_video_set_is_draft;
+       gdata_youtube_video_set_is_private;
+       gdata_youtube_video_set_keywords;
+       gdata_youtube_video_set_location;
+       gdata_youtube_video_set_recorded;
+local:
+       *;
+};
diff --git a/gdata/tests/meson.build b/gdata/tests/meson.build
new file mode 100644
index 00000000..52154e7a
--- /dev/null
+++ b/gdata/tests/meson.build
@@ -0,0 +1,101 @@
+tests_execdir = gdata_libexecdir / 'installed-tests' / gdata_name
+tests_metadir = gdata_datadir / 'installed-tests' / gdata_name
+
+tests_sources = files(
+  'common.c',
+  'gdata-dummy-authorizer.c',
+)
+
+common_deps = [
+  libgdata_dep,
+  libuhttpmock_dep,
+]
+
+# The empty objects may be used in future for keeping custom
+# arguments for each test
+tests = {
+  'authorization': {},
+  'buffer': {},
+  'calendar': {},
+  'contacts': {},
+  'documents': {
+    'dependencies': [gdk_pixbuf_dep],
+    'should_fail': true,
+  },
+  'general': {},
+  'oauth1-authorizer': {},
+  'oauth2-authorizer': {},
+  'perf': {},
+  'picasaweb': {
+    'dependencies': [gdk_pixbuf_dep],
+    'should_fail': true,
+  },
+  'streams': {},
+  'tasks': {},
+  'youtube': {},
+}
+
+test_env = environment()
+test_env.set('G_TEST_SRCDIR', meson.current_source_dir())
+test_env.set('G_TEST_BUILDDIR', meson.current_build_dir())
+
+foreach test_name, extra_args: tests
+  exe = executable(
+    test_name,
+    test_name + '.c',
+    c_args: '-DG_LOG_DOMAIN="@0@"'.format(gdata_name),
+    include_directories: top_inc_dir,
+    dependencies: common_deps + extra_args.get('dependencies', []),
+    sources: tests_sources,
+    install: install_tests,
+    install_dir: tests_execdir,
+  )
+
+  test(
+    test_name,
+    exe,
+    env: test_env,
+    should_fail: extra_args.get('should_fail', false),
+  )
+endforeach
+
+if install_tests
+  foreach test_name, extra_args: tests
+    tests_conf = {
+      'TEST_TYPE': 'session',
+      'TEST_ABS_PATH': gdata_prefix / tests_execdir / test_name,
+    }
+
+    configure_file (
+      input: 'template.test.in',
+      output: test_name + '.test',
+      configuration: tests_conf,
+      install: true,
+      install_dir: tests_metadir,
+    )
+  endforeach
+
+  install_subdir(
+    'traces',
+    install_dir: tests_execdir,
+  )
+
+  test_data = [
+    'cert.pem',
+    'key.pem',
+    'photo.jpg',
+    'sample.ogg',
+    'test.doc',
+    'test.ods',
+    'test.odt',
+    'test.ppt',
+    'test_updated.odt',
+    'test_updated_file.ppt',
+    'test.xls',
+  ]
+
+  install_data(
+    test_data,
+    install_dir: tests_execdir,
+  )
+endif
diff --git a/gdata/tests/template.test.in b/gdata/tests/template.test.in
new file mode 100644
index 00000000..81cf1c1e
--- /dev/null
+++ b/gdata/tests/template.test.in
@@ -0,0 +1,4 @@
+[Test]
+Type=@TEST_TYPE@
+Exec=@TEST_ABS_PATH@ --tap
+Output=TAP
diff --git a/meson.build b/meson.build
new file mode 100644
index 00000000..df058198
--- /dev/null
+++ b/meson.build
@@ -0,0 +1,175 @@
+project(
+  'libgdata', 'c',
+  version: '0.17.10',
+  license: 'LGPL2+',
+  default_options: 'buildtype=debugoptimized',
+  meson_version: '>= 0.50.0',
+)
+
+gdata_name = meson.project_name()
+gdata_version = meson.project_version()
+
+ver_arr = gdata_version.split('.')
+gdata_version_major = ver_arr[0].to_int()
+gdata_version_minor = ver_arr[1].to_int()
+gdata_version_micro = ver_arr[2].to_int()
+
+# API version
+gdata_api_version_major = 0
+gdata_api_version_minor = 0
+
+# Define the install directories
+gdata_prefix = get_option('prefix')
+gdata_datadir = get_option('datadir')
+gdata_libexecdir = get_option('libexecdir')
+gdata_includedir = get_option('includedir')
+
+gdata_include_subdir = gdata_name / 'gdata'
+
+# Before making a release, the GDATA_LT_VERSION string should be modified. The string is of the form c:r:a. 
Follow these instructions sequentially:
+#
+#  1. If the library source code has changed at all since the last update, then increment revision (‘c:r:a’ 
becomes ‘c:r+1:a’).
+#  2. If any interfaces have been added, removed, or changed since the last update, increment current, and 
set revision to 0.
+#  3. If any interfaces have been added since the last public release, then increment age.
+#  4. If any interfaces have been removed or changed since the last public release, then set age to 0.
+#
+# Note that versioning started at 2:0:0 to ensure no conflicts with e-d-s' libgdata library, whose maximum 
version was 1:0:0
+current = 25
+revision = 0
+age = 3
+gdata_soversion = '@0@.@1@.@2@'.format(current - age, age, revision)
+
+top_inc_dir = include_directories('.')
+
+########################
+# Configuration begins #
+########################
+
+config_h = configuration_data()
+
+config_h.set_quoted('VERSION', gdata_version)
+
+# Globally define _GNU_SOURCE and therefore enable the GNU extensions
+config_h.set('_GNU_SOURCE', true)
+
+config_h.set_quoted('GETTEXT_PACKAGE', 'intltest')
+
+gnome = import('gnome')
+pkgconfig = import('pkgconfig')
+
+# Internationalisation support
+i18n = import('i18n')
+
+build_root = meson.current_build_dir()
+
+# FIXME: Work around the namespace being incorrectly detected
+# by glib-mkenums. This needs to be fixed by changing the
+# namespace in libgdata. See !6.
+sed = find_program('sed')
+enum_source_cmd = [sed, '-e', 's/-in//', '-e', 's/g_data/gdata/', build_root / '@INPUT@']
+enum_header_cmd = [sed, '-e', 's/g_data/gdata/', '-e', 's/G_TYPE_DATA/GDATA_TYPE/', build_root / '@INPUT@']
+
+top_inc_dir = include_directories('.')
+
+cc = meson.get_compiler('c')
+
+# Requirements
+gdata_deps = [
+  dependency('gobject-2.0'),
+  dependency('glib-2.0', version: '>= 2.44.0'),
+  dependency('gio-2.0', version: '>= 2.44.0'),
+  dependency('gio-unix-2.0'),
+  dependency('json-glib-1.0', version: '>= 0.15'),
+  dependency('libxml-2.0'),
+]
+
+# Private dependencies for libgdata (specifically used for pkgconfig)
+gdata_private_deps = [
+  dependency('gthread-2.0'),
+  dependency('oauth', version: '>= 0.9.4'),
+]
+
+libsoup_dep = dependency('libsoup-2.4', version: '>= 2.42.0')
+gdata_deps += libsoup_dep
+# libsoup 2.47.3 is needed for the new SoupServer API; but it contained a bug in
+# soup_server_set_ssl_cert_file() which was only fixed in 2.55.90.
+config_h.set10('HAVE_LIBSOUP_2_55_90', libsoup_dep.version().version_compare('>= 2.55.90'))
+
+# Check for gtk
+gtk_dep_req_version = '>= 2.91.2'
+gtk_dep = dependency(
+  'gtk+-3.0',
+  version: gtk_dep_req_version,
+  required: get_option('gtk'),
+  not_found_message: 'GTK+ support requested but gtk+-3.0 ' + gtk_dep_req_version + ' could not be found',
+)
+
+# GNOME support, which pulls in gcr-base-3 to provide non-pageable memory
+enable_gnome = get_option('gnome')
+
+# Check for goa
+# GNOME Online Accounts support -- only used if GNOME support is also enabled
+# Pulls in gdata/gdata-goa-authorizer.[ch]
+goa_dep = dependency('goa-1.0', version: '>= 3.8', required: get_option('goa'))
+enable_goa = goa_dep.found()
+if enable_goa
+  gdata_deps += goa_dep
+  gdata_private_deps += dependency('gcr-base-3')
+endif
+config_h.set10('HAVE_GOA', goa_dep.found())
+
+# Enable always building tests (default: yes) enable_always_build_tests = get_option('always_build_tests')
+# Install test programs (default: no)
+always_build_tests = get_option('always_build_tests')
+install_tests = get_option('installed_tests')
+
+if always_build_tests
+  libuhttpmock_dep = dependency('libuhttpmock-0.0', version: '>= 0.5.0')
+
+  gdk_pixbuf_dep = dependency('gdk-pixbuf-2.0', version: '>= 2.14')
+  config_h.set10('HAVE_GDK_PIXBUF', gdk_pixbuf_dep.found())
+endif
+
+check_functions = [
+  'memset',
+  'setlocale',
+  'strchr',
+  'strstr',
+]
+
+check_functions += [
+  'CFLocaleCopyCurrent',
+  'CFPreferencesCopyAppValue',
+]
+
+foreach func: check_functions
+  config_h.set10('HAVE_' + func.to_upper(), cc.has_function(func))
+endforeach
+
+check_headers = [
+  'arpa/inet.h',
+  'locale.h',
+  'memory.h',
+  'netinet/in.h',
+  'stdlib.h',
+  'string.h',
+  'strings.h',
+  'sys/socket.h',
+  'sys/time.h',
+  'sys/types.h',
+  'unistd.h',
+]
+
+foreach func: check_headers
+  cc.has_header(func)
+endforeach
+
+subdir('gdata')
+subdir('demos')
+subdir('po')
+if get_option('gtk_doc')
+  subdir('docs/reference')
+endif
+
+# Create the `config.h` file from the `config_h` data
+configure_file(output: 'config.h', configuration: config_h)
diff --git a/meson_options.txt b/meson_options.txt
new file mode 100644
index 00000000..25cc6b55
--- /dev/null
+++ b/meson_options.txt
@@ -0,0 +1,45 @@
+option('gtk',
+  type: 'feature',
+  value: 'auto',
+  description: 'enable gtk+-3.0 support')
+
+option('gnome',
+  type: 'feature',
+  value: 'enabled',
+  description: 'enable GNOME support')
+
+option('goa',
+  type: 'feature',
+  value: 'enabled',
+  description: 'enable Gnome Online Accounts (goa) support')
+
+# Enable always building tests (default: yes)
+option('always_build_tests',
+  type: 'boolean',
+  value: true,
+  description: 'Enable always building tests (default: true)')
+
+option('installed_tests',
+  type: 'boolean',
+  value: true,
+  description: 'Install test programs (default: false)')
+
+option('man',
+  type: 'boolean',
+  value: false,
+  description: 'generate man pages')
+
+option('gtk_doc',
+  type: 'boolean',
+  value: true,
+  description: 'use gtk-doc to build documentation (default: false)')
+
+option('introspection',
+  type: 'boolean',
+  value: true,
+  description: 'Enable creation of GObject Introspection files')
+
+option('vapi',
+  type: 'boolean',
+  value: true,
+  description: 'Enable creation of vapi files')
diff --git a/po/meson.build b/po/meson.build
new file mode 100644
index 00000000..c5849b6d
--- /dev/null
+++ b/po/meson.build
@@ -0,0 +1 @@
+i18n.gettext('libgdata', preset: 'glib')


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