[gthumb] meson: added some extensions



commit c9076761bf61e4e159cb3a8c12f897d9cba06be3
Author: Paolo Bacchilega <paobac src gnome org>
Date:   Sat Oct 21 15:11:10 2017 +0200

    meson: added some extensions

 .gitignore                                         |    7 ++
 extensions/23hq/23hq.extension.in.in               |    1 -
 extensions/bookmarks/bookmarks.extension.in.in     |   12 +--
 extensions/bookmarks/meson.build                   |   37 +++++++
 extensions/burn_disc/burn_disc.extension.in.in     |    1 -
 extensions/cairo_io/cairo_io.extension.in.in       |    3 +-
 extensions/cairo_io/data/meson.build               |    1 +
 extensions/cairo_io/data/ui/meson.build            |    9 ++
 extensions/cairo_io/gth-image-saver-tiff.c         |    2 +-
 extensions/cairo_io/meson.build                    |   62 +++++++++++
 extensions/catalogs/catalogs.extension.in.in       |   14 +--
 extensions/catalogs/data/meson.build               |    1 +
 extensions/catalogs/data/ui/meson.build            |    7 ++
 extensions/catalogs/meson.build                    |   41 +++++++
 extensions/change_date/change_date.extension.in.in |    1 -
 extensions/comments/comments.extension.in.in       |   11 +-
 extensions/comments/data/meson.build               |    1 +
 extensions/comments/data/ui/meson.build            |    4 +
 extensions/comments/meson.build                    |   40 +++++++
 .../contact_sheet/contact_sheet.extension.in.in    |    1 -
 .../convert_format/convert_format.extension.in.in  |    1 -
 .../desktop_background.extension.in.in             |   11 +-
 extensions/desktop_background/meson.build          |   32 ++++++
 extensions/edit_metadata/data/meson.build          |    1 +
 extensions/edit_metadata/data/ui/meson.build       |    5 +
 .../edit_metadata/edit_metadata.extension.in.in    |   12 +--
 extensions/edit_metadata/meson.build               |   43 ++++++++
 extensions/example/src/example.extension.in.in     |    2 +-
 extensions/exiv2_tools/exiv2-utils.cpp             |    2 +-
 extensions/exiv2_tools/exiv2_tools.extension.in.in |   11 +-
 extensions/exiv2_tools/meson.build                 |   33 ++++++
 .../export_tools/export_tools.extension.in.in      |    3 +-
 extensions/export_tools/meson.build                |   32 ++++++
 extensions/facebook/facebook.extension.in.in       |    1 -
 .../file_manager/file_manager.extension.in.in      |   11 +-
 extensions/file_manager/meson.build                |   34 ++++++
 extensions/file_tools/data/meson.build             |    1 +
 extensions/file_tools/data/ui/meson.build          |   14 +++
 extensions/file_tools/file_tools.extension.in.in   |    3 +-
 extensions/file_tools/gth-curve-preset.c           |    2 +-
 extensions/file_tools/gth-file-tool-crop.c         |    2 +-
 extensions/file_tools/gth-file-tool-rotate.c       |    2 +-
 extensions/file_tools/meson.build                  |  112 ++++++++++++++++++++
 extensions/file_viewer/file_viewer.extension.in.in |    3 +-
 extensions/file_viewer/meson.build                 |   30 +++++
 extensions/find_duplicates/data/meson.build        |    1 +
 extensions/find_duplicates/data/ui/meson.build     |    6 +
 .../find_duplicates.extension.in.in                |   11 +-
 extensions/find_duplicates/meson.build             |   39 +++++++
 extensions/flicker/flicker.extension.in.in         |    1 -
 .../flicker_utils/flicker_utils.extension.in.in    |    1 -
 extensions/gstreamer_tools/data/meson.build        |    1 +
 extensions/gstreamer_tools/data/ui/meson.build     |    5 +
 .../gstreamer_tools.extension.in.in                |   11 +-
 extensions/gstreamer_tools/meson.build             |   38 +++++++
 .../gstreamer_utils.extension.in.in                |    3 +-
 extensions/gstreamer_utils/meson.build             |   30 +++++
 extensions/image_print/data/meson.build            |    1 +
 extensions/image_print/data/ui/meson.build         |    5 +
 extensions/image_print/image_print.extension.in.in |   11 +-
 extensions/image_print/meson.build                 |   39 +++++++
 .../image_rotation/image_rotation.extension.in.in  |   11 +-
 extensions/image_rotation/meson.build              |   35 ++++++
 extensions/image_viewer/data/meson.build           |    1 +
 extensions/image_viewer/data/ui/meson.build        |    4 +
 .../image_viewer/image_viewer.extension.in.in      |    3 +-
 extensions/image_viewer/meson.build                |   43 ++++++++
 extensions/image_viewer/resources.xml              |    2 +-
 extensions/importer/data/meson.build               |    1 +
 extensions/importer/data/ui/meson.build            |    4 +
 extensions/importer/importer.extension.in.in       |    3 +-
 extensions/importer/meson.build                    |   50 +++++++++
 extensions/jpeg_utils/jpeg_utils.extension.in.in   |    3 +-
 extensions/jpeg_utils/meson.build                  |   42 ++++++++
 extensions/list_tools/list_tools.extension.in.in   |   11 +-
 extensions/list_tools/meson.build                  |   38 +++++++
 extensions/map_view/map_view.extension.in.in       |   12 +--
 extensions/map_view/meson.build                    |   30 +++++
 extensions/meson.build                             |   76 +++++++++++++
 extensions/oauth/oauth.extension.in.in             |    1 -
 extensions/photo_importer/meson.build              |   40 +++++++
 .../photo_importer/photo_importer.extension.in.in  |   11 +-
 extensions/picasaweb/picasaweb.extension.in.in     |    1 -
 extensions/raw_files/main.c                        |   17 +---
 extensions/raw_files/meson.build                   |   30 +++++
 extensions/raw_files/raw_files.extension.in.in     |   11 +-
 .../red_eye_removal.extension.in.in                |    1 -
 .../rename_series/rename_series.extension.in.in    |    1 -
 .../resize_images/resize_images.extension.in.in    |    1 -
 extensions/search/data/meson.build                 |    1 +
 extensions/search/data/ui/meson.build              |    4 +
 extensions/search/meson.build                      |   40 +++++++
 extensions/search/search.extension.in.in           |   11 +-
 extensions/selections/meson.build                  |   34 ++++++
 extensions/selections/selections.extension.in.in   |   14 +--
 extensions/slideshow/data/meson.build              |    1 +
 extensions/slideshow/data/ui/meson.build           |    4 +
 extensions/slideshow/meson.build                   |   47 ++++++++
 extensions/slideshow/slideshow.extension.in.in     |   11 +-
 extensions/webalbums/webalbums.extension.in.in     |    1 -
 gthumb/gth-extensions.c                            |    8 +-
 gthumb/gth-extensions.h                            |    1 -
 gthumb/meson.build                                 |   62 +++++++----
 meson.build                                        |   17 ++--
 104 files changed, 1399 insertions(+), 202 deletions(-)
---
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..898c2df
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,7 @@
+*~
+.cproject
+.project
+.settings/
+build/
+_build/
+po/gthumb.pot
diff --git a/extensions/23hq/23hq.extension.in.in b/extensions/23hq/23hq.extension.in.in
index f9ebd63..9d6d033 100644
--- a/extensions/23hq/23hq.extension.in.in
+++ b/extensions/23hq/23hq.extension.in.in
@@ -9,6 +9,5 @@ Category=Exporter
 
 [Loader]
 Type=module
-File=%LIBRARY%
 API=%GTHUMB_API_VERSION%
 Requires=importer;export_tools;flicker_utils
diff --git a/extensions/bookmarks/bookmarks.extension.in.in b/extensions/bookmarks/bookmarks.extension.in.in
index 7b89658..6770344 100644
--- a/extensions/bookmarks/bookmarks.extension.in.in
+++ b/extensions/bookmarks/bookmarks.extension.in.in
@@ -1,13 +1,11 @@
 [Extension]
-_Name=Bookmarks
-_Description=Add bookmarks support.
-_Authors=gthumb development team
+Name=Bookmarks
+Comment=Add bookmarks support.
+Authors=gthumb development team
 Copyright=Copyright © 2008-2013 The Free Software Foundation, Inc.
-Version=%VERSION%
-URL=http://live.gnome.org/Apps/gthumb
+Version=@GTHUMB_VERSION@
 Category=Browser
 
 [Loader]
 Type=module
-File=%LIBRARY%
-API=%GTHUMB_API_VERSION%
+API=@GTHUMB_API_VERSION@
diff --git a/extensions/bookmarks/meson.build b/extensions/bookmarks/meson.build
new file mode 100644
index 0000000..5a4ee4d
--- /dev/null
+++ b/extensions/bookmarks/meson.build
@@ -0,0 +1,37 @@
+source_files = files(
+  'actions.c',
+  'actions.h',
+  'callbacks.c',
+  'callbacks.h',
+  'dlg-bookmarks.c',
+  'dlg-bookmarks.h',
+  'main.c'
+)
+
+gresource_files = gnome.compile_resources('bookmarks-resources', 'resources.xml', c_name : 'gth')
+
+shared_module('bookmarks', 
+  sources : [ source_files, gresource_files ],
+  dependencies : extension_common_deps,
+  include_directories : [ config_inc, gthumb_inc ],
+  c_args : c_args,
+  install : true,
+  install_dir : extensions_install_dir
+)
+
+# .extension file
+
+extension_in_file = configure_file(
+  input : 'bookmarks.extension.in.in',
+  output : 'bookmarks.extension.in',
+  configuration : extension_data
+)
+
+i18n.merge_file(
+  input : extension_in_file,
+  output : 'bookmarks.extension',
+  type : 'desktop',
+  po_dir : po_dir,
+  install : true,
+  install_dir : extensions_install_dir
+)
diff --git a/extensions/burn_disc/burn_disc.extension.in.in b/extensions/burn_disc/burn_disc.extension.in.in
index 3f4ec77..34d08c3 100644
--- a/extensions/burn_disc/burn_disc.extension.in.in
+++ b/extensions/burn_disc/burn_disc.extension.in.in
@@ -9,6 +9,5 @@ Category=Exporter
 
 [Loader]
 Type=module
-File=%LIBRARY%
 API=%GTHUMB_API_VERSION%
 Requires=export_tools
diff --git a/extensions/cairo_io/cairo_io.extension.in.in b/extensions/cairo_io/cairo_io.extension.in.in
index 9cdc5a4..94076a6 100644
--- a/extensions/cairo_io/cairo_io.extension.in.in
+++ b/extensions/cairo_io/cairo_io.extension.in.in
@@ -3,6 +3,5 @@ Mandatory=true
 
 [Loader]
 Type=module
-File=%LIBRARY%
-API=%GTHUMB_API_VERSION%
+API=@GTHUMB_API_VERSION@
 After=jpeg_utils
diff --git a/extensions/cairo_io/data/meson.build b/extensions/cairo_io/data/meson.build
new file mode 100644
index 0000000..36e5b29
--- /dev/null
+++ b/extensions/cairo_io/data/meson.build
@@ -0,0 +1 @@
+subdir('ui')
diff --git a/extensions/cairo_io/data/ui/meson.build b/extensions/cairo_io/data/ui/meson.build
new file mode 100644
index 0000000..27eef9e
--- /dev/null
+++ b/extensions/cairo_io/data/ui/meson.build
@@ -0,0 +1,9 @@
+ui_files = files(
+  'jpeg-options.ui',
+  'png-options.ui',
+  'save-options-preferences.ui',
+  'tga-options.ui',
+  'tiff-options.ui',
+  'webp-options.ui'
+)
+install_data(ui_files, install_dir : ui_install_dir)
diff --git a/extensions/cairo_io/gth-image-saver-tiff.c b/extensions/cairo_io/gth-image-saver-tiff.c
index c7ae2fb..41a9e60 100644
--- a/extensions/cairo_io/gth-image-saver-tiff.c
+++ b/extensions/cairo_io/gth-image-saver-tiff.c
@@ -25,7 +25,7 @@
 #endif /* HAVE_LIBTIFF */
 #include <glib/gi18n.h>
 #include <gthumb.h>
-#include "enum-types.h"
+#include "cairo-io-enum-types.h"
 #include "gth-image-saver-tiff.h"
 #include "preferences.h"
 
diff --git a/extensions/cairo_io/meson.build b/extensions/cairo_io/meson.build
new file mode 100644
index 0000000..1b64826
--- /dev/null
+++ b/extensions/cairo_io/meson.build
@@ -0,0 +1,62 @@
+source_files = files(
+  'cairo-image-surface-jpeg.c',
+  'cairo-image-surface-png.c',
+  'cairo-image-surface-xcf.c',
+  'gth-image-saver-jpeg.c',
+  'gth-image-saver-png.c',
+  'gth-image-saver-tga.c',
+  'gth-image-saver-tiff.c',
+  'preferences.c',
+  'main.c'
+)
+
+if use_librsvg
+  source_files += files('cairo-image-surface-svg.c')
+endif
+
+if use_libwebp
+  source_files += files('cairo-image-surface-webp.c', 'gth-image-saver-webp.c')
+endif
+
+if use_libtiff
+  source_files += files('cairo-image-surface-tiff.c')
+endif
+
+enum_files = gnome.mkenums_simple('cairo-io-enum-types', sources: [ 'preferences.h' ])
+
+shared_module('cairo_io', 
+  sources : [ source_files, enum_files ],
+  dependencies : [ 
+    extension_common_deps, 
+    jpeg_deps,
+    use_libtiff ? tiff_deps : [],
+    use_librsvg ? librsvg_dep : [],
+    use_libwebp ? libwebp_dep : []    
+  ],  
+  include_directories : [ config_inc, gthumb_inc ],
+  c_args : c_args,
+  link_with : jpeg_utils_mod,
+  install : true,
+  install_dir : extensions_install_dir
+)
+
+# .extension file
+
+extension_in_file = configure_file(
+  input : 'cairo_io.extension.in.in',
+  output : 'cairo_io.extension.in',
+  configuration : extension_data
+)
+
+i18n.merge_file(
+  input : extension_in_file,
+  output : 'cairo_io.extension',
+  type : 'desktop',
+  po_dir : po_dir,
+  install : true,
+  install_dir : extensions_install_dir
+)
+
+# Subdirectories
+
+subdir('data')
diff --git a/extensions/catalogs/catalogs.extension.in.in b/extensions/catalogs/catalogs.extension.in.in
index c2cd90c..09fdead 100644
--- a/extensions/catalogs/catalogs.extension.in.in
+++ b/extensions/catalogs/catalogs.extension.in.in
@@ -1,14 +1,12 @@
 [Extension]
-_Name=Catalogs
-_Description=Create file collections.
-_Authors=gthumb development team
+Name=Catalogs
+Comment=Create file collections.
+Authors=gthumb development team
 Copyright=Copyright © 2008-2013 The Free Software Foundation, Inc.
-Version=%VERSION%
-URL=http://live.gnome.org/Apps/gthumb
-Icon=file-catalog
+Version=@GTHUMB_VERSION@
+Icon=file-catalog-symbolic
 Category=Browser
 
 [Loader]
 Type=module
-File=%LIBRARY%
-API=%GTHUMB_API_VERSION%
+API=@GTHUMB_API_VERSION@
diff --git a/extensions/catalogs/data/meson.build b/extensions/catalogs/data/meson.build
new file mode 100644
index 0000000..36e5b29
--- /dev/null
+++ b/extensions/catalogs/data/meson.build
@@ -0,0 +1 @@
+subdir('ui')
diff --git a/extensions/catalogs/data/ui/meson.build b/extensions/catalogs/data/ui/meson.build
new file mode 100644
index 0000000..7bdd767
--- /dev/null
+++ b/extensions/catalogs/data/ui/meson.build
@@ -0,0 +1,7 @@
+ui_files = files(
+  'add-to-catalog.ui',
+  'catalog-properties.ui',
+  'organize-files.ui',
+  'organize-files-task.ui'
+)
+install_data(ui_files, install_dir : ui_install_dir)
diff --git a/extensions/catalogs/meson.build b/extensions/catalogs/meson.build
new file mode 100644
index 0000000..4be8b28
--- /dev/null
+++ b/extensions/catalogs/meson.build
@@ -0,0 +1,41 @@
+source_files = files(
+  'actions.c',
+  'callbacks.c',
+  'dlg-add-to-catalog.c',
+  'dlg-catalog-properties.c',
+  'dlg-organize-files.c',
+  'gth-catalog.c',
+  'gth-file-source-catalogs.c',
+  'gth-organize-task.c',
+  'main.c'
+)
+
+catalogs_mod = shared_module('catalogs', 
+  sources : source_files,
+  dependencies : extension_common_deps,
+  include_directories : [ config_inc, gthumb_inc ],
+  c_args : c_args,
+  install : true,
+  install_dir : extensions_install_dir
+)
+
+# .extension file
+
+extension_in_file = configure_file(
+  input : 'catalogs.extension.in.in',
+  output : 'catalogs.extension.in',
+  configuration : extension_data
+)
+
+i18n.merge_file(
+  input : extension_in_file,
+  output : 'catalogs.extension',
+  type : 'desktop',
+  po_dir : po_dir,
+  install : true,
+  install_dir : extensions_install_dir
+)
+
+# Subdirectories
+
+subdir('data')
diff --git a/extensions/change_date/change_date.extension.in.in 
b/extensions/change_date/change_date.extension.in.in
index 8a9cf67..bac3544 100644
--- a/extensions/change_date/change_date.extension.in.in
+++ b/extensions/change_date/change_date.extension.in.in
@@ -8,6 +8,5 @@ Category=List-Tool
 
 [Loader]
 Type=module
-File=%LIBRARY%
 API=%GTHUMB_API_VERSION%
 Requires=list_tools
diff --git a/extensions/comments/comments.extension.in.in b/extensions/comments/comments.extension.in.in
index f5f6026..5202c90 100644
--- a/extensions/comments/comments.extension.in.in
+++ b/extensions/comments/comments.extension.in.in
@@ -1,12 +1,11 @@
 [Extension]
-_Name=Comments and tags
-_Description=Add comments and tags to any file type.
-_Authors=gthumb development team
+Name=Comments and tags
+Comment=Add comments and tags to any file type.
+Authors=gthumb development team
 Copyright=Copyright © 2009-2013 The Free Software Foundation, Inc.
-Version=%VERSION%
+Version=@GTHUMB_VERSION@
 Category=Metadata
 
 [Loader]
 Type=module
-File=%LIBRARY%
-API=%GTHUMB_API_VERSION%
+API=@GTHUMB_API_VERSION@
diff --git a/extensions/comments/data/meson.build b/extensions/comments/data/meson.build
new file mode 100644
index 0000000..36e5b29
--- /dev/null
+++ b/extensions/comments/data/meson.build
@@ -0,0 +1 @@
+subdir('ui')
diff --git a/extensions/comments/data/ui/meson.build b/extensions/comments/data/ui/meson.build
new file mode 100644
index 0000000..3c61eb7
--- /dev/null
+++ b/extensions/comments/data/ui/meson.build
@@ -0,0 +1,4 @@
+ui_files = files(
+  'comments-preferences.ui'
+)
+install_data(ui_files, install_dir : ui_install_dir)
diff --git a/extensions/comments/meson.build b/extensions/comments/meson.build
new file mode 100644
index 0000000..68430e3
--- /dev/null
+++ b/extensions/comments/meson.build
@@ -0,0 +1,40 @@
+source_files = files(
+  'actions.c',
+  'callbacks.c',
+  'dlg-comments-preferences.c',
+  'gth-comment.c',
+  'gth-import-metadata-task.c',
+  'gth-metadata-provider-comment.c',
+  'main.c'
+)
+
+shared_module('comments', 
+  sources : source_files,
+  dependencies : [ extension_common_deps ],
+  include_directories : [ config_inc, gthumb_inc ],
+  c_args : c_args,
+  link_with : use_exiv2 ? exiv2_tools_mod : [],
+  install : true,
+  install_dir : extensions_install_dir
+)
+
+# .extension file
+
+extension_in_file = configure_file(
+  input : 'comments.extension.in.in',
+  output : 'comments.extension.in',
+  configuration : extension_data
+)
+
+i18n.merge_file(
+  input : extension_in_file,
+  output : 'comments.extension',
+  type : 'desktop',
+  po_dir : po_dir,
+  install : true,
+  install_dir : extensions_install_dir
+)
+
+# Subdirectories
+
+subdir('data')
diff --git a/extensions/contact_sheet/contact_sheet.extension.in.in 
b/extensions/contact_sheet/contact_sheet.extension.in.in
index 441fa8a..3671002 100644
--- a/extensions/contact_sheet/contact_sheet.extension.in.in
+++ b/extensions/contact_sheet/contact_sheet.extension.in.in
@@ -8,6 +8,5 @@ Category=Exporter
 
 [Loader]
 Type=module
-File=%LIBRARY%
 API=%GTHUMB_API_VERSION%
 Requires=export_tools
diff --git a/extensions/convert_format/convert_format.extension.in.in 
b/extensions/convert_format/convert_format.extension.in.in
index 9230329..36ded39 100644
--- a/extensions/convert_format/convert_format.extension.in.in
+++ b/extensions/convert_format/convert_format.extension.in.in
@@ -8,6 +8,5 @@ Category=List-Tool
 
 [Loader]
 Type=module
-File=%LIBRARY%
 API=%GTHUMB_API_VERSION%
 Requires=list_tools
diff --git a/extensions/desktop_background/desktop_background.extension.in.in 
b/extensions/desktop_background/desktop_background.extension.in.in
index 08994c5..d3c5314 100644
--- a/extensions/desktop_background/desktop_background.extension.in.in
+++ b/extensions/desktop_background/desktop_background.extension.in.in
@@ -1,14 +1,13 @@
 [Extension]
-_Name=Desktop background
-_Description=Set the image as desktop background
-_Authors=gthumb development team
+Name=Desktop background
+Comment=Set the image as desktop background
+Authors=gthumb development team
 Copyright=Copyright © 2009-2013 The Free Software Foundation, Inc.
-Version=%VERSION%
+Version=@GTHUMB_VERSION@
 Icon=desktop
 Category=List-Tool
 
 [Loader]
 Type=module
-File=%LIBRARY%
-API=%GTHUMB_API_VERSION%
+API=@GTHUMB_API_VERSION@
 After=image_viewer
diff --git a/extensions/desktop_background/meson.build b/extensions/desktop_background/meson.build
new file mode 100644
index 0000000..6e00072
--- /dev/null
+++ b/extensions/desktop_background/meson.build
@@ -0,0 +1,32 @@
+source_files = files(
+  'actions.c',
+  'callbacks.c',
+  'main.c'
+)
+
+shared_module('desktop_background', 
+  sources : source_files,
+  dependencies : extension_common_deps,
+  include_directories : [ config_inc, gthumb_inc ],
+  c_args : c_args,
+  link_with : image_viewer_mod,
+  install : true,
+  install_dir : extensions_install_dir
+)
+
+# .extension file
+
+extension_in_file = configure_file(
+  input : 'desktop_background.extension.in.in',
+  output : 'desktop_background.extension.in',
+  configuration : extension_data
+)
+
+i18n.merge_file(
+  input : extension_in_file,
+  output : 'desktop_background.extension',
+  type : 'desktop',
+  po_dir : po_dir,
+  install : true,
+  install_dir : extensions_install_dir
+)
diff --git a/extensions/edit_metadata/data/meson.build b/extensions/edit_metadata/data/meson.build
new file mode 100644
index 0000000..fb796f4
--- /dev/null
+++ b/extensions/edit_metadata/data/meson.build
@@ -0,0 +1 @@
+subdir('ui')
\ No newline at end of file
diff --git a/extensions/edit_metadata/data/ui/meson.build b/extensions/edit_metadata/data/ui/meson.build
new file mode 100644
index 0000000..760e5f0
--- /dev/null
+++ b/extensions/edit_metadata/data/ui/meson.build
@@ -0,0 +1,5 @@
+ui_files = files(
+  'edit-comment-page.ui', 
+  'tag-chooser.ui'
+)
+install_data(ui_files, install_dir : ui_install_dir)
diff --git a/extensions/edit_metadata/edit_metadata.extension.in.in 
b/extensions/edit_metadata/edit_metadata.extension.in.in
index ccf81e1..2566b71 100644
--- a/extensions/edit_metadata/edit_metadata.extension.in.in
+++ b/extensions/edit_metadata/edit_metadata.extension.in.in
@@ -1,14 +1,12 @@
 [Extension]
-_Name=Edit metadata
-_Description=Allow to edit files metadata.
-_Authors=gthumb development team
+Name=Edit metadata
+Comment=Allow to edit files metadata.
+Authors=gthumb development team
 Copyright=Copyright © 2009-2013 The Free Software Foundation, Inc.
-Version=%VERSION%
-URL=http://live.gnome.org/Apps/gthumb
+Version=@GTHUMB_VERSION@
 Category=Metadata
 
 [Loader]
 Type=module
-File=%LIBRARY%
-API=%GTHUMB_API_VERSION%
+API=@GTHUMB_API_VERSION@
 After=list_tools
diff --git a/extensions/edit_metadata/meson.build b/extensions/edit_metadata/meson.build
new file mode 100644
index 0000000..be77dbd
--- /dev/null
+++ b/extensions/edit_metadata/meson.build
@@ -0,0 +1,43 @@
+source_files = files(
+  'actions.c',
+  'callbacks.c',
+  'dlg-edit-metadata.c',
+  'gth-delete-metadata-task.c',
+  'gth-edit-comment-dialog.c',
+  'gth-edit-general-page.c',
+  'gth-edit-metadata-dialog.c',
+  'gth-edit-tags-dialog.c',
+  'gth-tag-task.c',
+  'main.c',
+  'utils.c'
+)
+
+edit_metadata_mod = shared_module('edit_metadata', 
+  sources : source_files,
+  dependencies : extension_common_deps,  
+  include_directories : [ config_inc, gthumb_inc ],
+  c_args : c_args,
+  install : true,
+  install_dir : extensions_install_dir
+)
+
+# .extension file
+
+extension_in_file = configure_file(
+  input : 'edit_metadata.extension.in.in',
+  output : 'edit_metadata.extension.in',
+  configuration : extension_data
+)
+
+i18n.merge_file(
+  input : extension_in_file,
+  output : 'edit_metadata.extension',
+  type : 'desktop',
+  po_dir : po_dir,
+  install : true,
+  install_dir : extensions_install_dir
+)
+
+# Subdirectories
+
+subdir('data')
diff --git a/extensions/example/src/example.extension.in.in b/extensions/example/src/example.extension.in.in
index 615e11d..dfe24c4 100644
--- a/extensions/example/src/example.extension.in.in
+++ b/extensions/example/src/example.extension.in.in
@@ -5,8 +5,8 @@ Authors=gthumb development team
 Copyright=Copyright © 2010 The Free Software Foundation, Inc.
 Version=1.0
 Category=Browser
+URL=https://www.example.com
 
 [Loader]
 Type=module
-File=%LIBRARY%
 API=3.0
diff --git a/extensions/exiv2_tools/exiv2-utils.cpp b/extensions/exiv2_tools/exiv2-utils.cpp
index b4a8fa5..a1a16ec 100644
--- a/extensions/exiv2_tools/exiv2-utils.cpp
+++ b/extensions/exiv2_tools/exiv2-utils.cpp
@@ -1167,7 +1167,7 @@ exiv2_write_metadata_private (Exiv2::Image::AutoPtr  image,
 
        if (g_file_info_get_attribute_boolean (info, "gth::file::image-changed")) {
                if (software_name == NULL)
-                       software_name = g_strconcat (g_get_application_name (), " ", VERSION, NULL);
+                       software_name = g_strconcat (g_get_application_name (), " ", PACKAGE_VERSION, NULL);
                ed["Exif.Image.ProcessingSoftware"] = software_name;
        }
 
diff --git a/extensions/exiv2_tools/exiv2_tools.extension.in.in 
b/extensions/exiv2_tools/exiv2_tools.extension.in.in
index 60a88b1..a549286 100644
--- a/extensions/exiv2_tools/exiv2_tools.extension.in.in
+++ b/extensions/exiv2_tools/exiv2_tools.extension.in.in
@@ -1,13 +1,12 @@
 [Extension]
-_Name=EXIF, IPTC, XMP support
-_Description=Read and write exif, iptc and xmp metadata.
-_Authors=gthumb development team
+Name=EXIF, IPTC, XMP support
+Comment=Read and write exif, iptc and xmp metadata.
+Authors=gthumb development team
 Copyright=Copyright © 2009-2013 The Free Software Foundation, Inc.
-Version=%VERSION%
+Version=@GTHUMB_VERSION@
 Category=Metadata
 
 [Loader]
 Type=module
-File=%LIBRARY%
-API=%GTHUMB_API_VERSION%
+API=@GTHUMB_API_VERSION@
 After=image_rotation;comments;edit_metadata
diff --git a/extensions/exiv2_tools/meson.build b/extensions/exiv2_tools/meson.build
new file mode 100644
index 0000000..71c5e82
--- /dev/null
+++ b/extensions/exiv2_tools/meson.build
@@ -0,0 +1,33 @@
+source_files = files(
+  'exiv2-utils.cpp',
+  'gth-edit-iptc-page.c',
+  'gth-metadata-provider-exiv2.c',
+  'main.c'
+)
+
+exiv2_tools_mod = shared_module('exiv2_tools', 
+  sources : source_files,
+  dependencies : [ extension_common_deps, exiv2_dep ],  
+  include_directories : [ config_inc, gthumb_inc ],
+  c_args : c_args,
+  link_with : [ edit_metadata_mod ],
+  install : true,
+  install_dir : extensions_install_dir
+)
+
+# .extension file
+
+extension_in_file = configure_file(
+  input : 'exiv2_tools.extension.in.in',
+  output : 'exiv2_tools.extension.in',
+  configuration : extension_data
+)
+
+i18n.merge_file(
+  input : extension_in_file,
+  output : 'exiv2_tools.extension',
+  type : 'desktop',
+  po_dir : po_dir,
+  install : true,
+  install_dir : extensions_install_dir
+)
diff --git a/extensions/export_tools/export_tools.extension.in.in 
b/extensions/export_tools/export_tools.extension.in.in
index ad8b8db..d6f2b8c 100644
--- a/extensions/export_tools/export_tools.extension.in.in
+++ b/extensions/export_tools/export_tools.extension.in.in
@@ -3,5 +3,4 @@ Hidden=true
 
 [Loader]
 Type=module
-File=%LIBRARY%
-API=%GTHUMB_API_VERSION%
+API=@GTHUMB_API_VERSION@
diff --git a/extensions/export_tools/meson.build b/extensions/export_tools/meson.build
new file mode 100644
index 0000000..512dff2
--- /dev/null
+++ b/extensions/export_tools/meson.build
@@ -0,0 +1,32 @@
+source_files = files(
+  'callbacks.c',
+  'main.c'
+)
+
+gresource_files = gnome.compile_resources('export-tools-resources', 'resources.xml', c_name : 'gth')
+
+export_tools_mod = shared_module('export_tools', 
+  sources : [ source_files, gresource_files ],
+  dependencies : extension_common_deps,
+  include_directories : [ config_inc, gthumb_inc ],
+  c_args : c_args,
+  install : true,
+  install_dir : extensions_install_dir
+)
+
+# .extension file
+
+extension_in_file = configure_file(
+  input : 'export_tools.extension.in.in',
+  output : 'export_tools.extension.in',
+  configuration : extension_data
+)
+
+i18n.merge_file(
+  input : extension_in_file,
+  output : 'export_tools.extension',
+  type : 'desktop',
+  po_dir : po_dir,
+  install : true,
+  install_dir : extensions_install_dir
+)
diff --git a/extensions/facebook/facebook.extension.in.in b/extensions/facebook/facebook.extension.in.in
index 65e89e9..5bd2b0b 100644
--- a/extensions/facebook/facebook.extension.in.in
+++ b/extensions/facebook/facebook.extension.in.in
@@ -9,6 +9,5 @@ Category=Exporter
 
 [Loader]
 Type=module
-File=%LIBRARY%
 API=%GTHUMB_API_VERSION%
 Requires=photo_importer;export_tools;oauth
diff --git a/extensions/file_manager/file_manager.extension.in.in 
b/extensions/file_manager/file_manager.extension.in.in
index dc97acb..732de89 100644
--- a/extensions/file_manager/file_manager.extension.in.in
+++ b/extensions/file_manager/file_manager.extension.in.in
@@ -1,13 +1,12 @@
 [Extension]
-_Name=File manager
-_Description=File manager operations.
-_Authors=gthumb development team
+Name=File manager
+Comment=File manager operations.
+Authors=gthumb development team
 Copyright=Copyright © 2009-2013 The Free Software Foundation, Inc.
-Version=%VERSION%
+Version=@GTHUMB_VERSION@
 Icon=system-file-manager
 Category=Browser
 
 [Loader]
 Type=module
-File=%LIBRARY%
-API=%GTHUMB_API_VERSION%
+API=@GTHUMB_API_VERSION@
diff --git a/extensions/file_manager/meson.build b/extensions/file_manager/meson.build
new file mode 100644
index 0000000..c055b89
--- /dev/null
+++ b/extensions/file_manager/meson.build
@@ -0,0 +1,34 @@
+source_files = files(
+  'actions.c',
+  'callbacks.c',
+  'gth-copy-task.c',
+  'gth-duplicate-task.c',
+  'gth-reorder-task.c',
+  'main.c'
+)
+
+shared_module('file_manager', 
+  sources : source_files,
+  dependencies : extension_common_deps,
+  include_directories : [ config_inc, gthumb_inc ],
+  c_args : c_args,
+  install : true,
+  install_dir : extensions_install_dir
+)
+
+# .extension file
+
+extension_in_file = configure_file(
+  input : 'file_manager.extension.in.in',
+  output : 'file_manager.extension.in',
+  configuration : extension_data
+)
+
+i18n.merge_file(
+  input : extension_in_file,
+  output : 'file_manager.extension',
+  type : 'desktop',
+  po_dir : po_dir,
+  install : true,
+  install_dir : extensions_install_dir
+)
diff --git a/extensions/file_tools/data/meson.build b/extensions/file_tools/data/meson.build
new file mode 100644
index 0000000..36e5b29
--- /dev/null
+++ b/extensions/file_tools/data/meson.build
@@ -0,0 +1 @@
+subdir('ui')
diff --git a/extensions/file_tools/data/ui/meson.build b/extensions/file_tools/data/ui/meson.build
new file mode 100644
index 0000000..2d62e9e
--- /dev/null
+++ b/extensions/file_tools/data/ui/meson.build
@@ -0,0 +1,14 @@
+ui_files = files(
+  'adjust-colors-options.ui',
+  'adjust-contrast-options.ui',
+  'color-picker-options.ui',
+  'crop-options.ui',
+  'curve-preset-editor.ui',
+  'curves-options.ui',
+  'effects-options.ui',
+  'grayscale-options.ui',
+  'resize-options.ui',
+  'rotate-options.ui',
+  'sharpen-options.ui'
+)
+install_data(ui_files, install_dir : ui_install_dir)
diff --git a/extensions/file_tools/file_tools.extension.in.in 
b/extensions/file_tools/file_tools.extension.in.in
index 168f639..3ea260c 100644
--- a/extensions/file_tools/file_tools.extension.in.in
+++ b/extensions/file_tools/file_tools.extension.in.in
@@ -3,6 +3,5 @@ Mandatory=true
 
 [Loader]
 Type=module
-File=%LIBRARY%
-API=%GTHUMB_API_VERSION%
+API=@GTHUMB_API_VERSION@
 Requires=image_viewer
diff --git a/extensions/file_tools/gth-curve-preset.c b/extensions/file_tools/gth-curve-preset.c
index 18c2058..7e2b125 100644
--- a/extensions/file_tools/gth-curve-preset.c
+++ b/extensions/file_tools/gth-curve-preset.c
@@ -20,7 +20,7 @@
  */
 
 #include <config.h>
-#include "enum-types.h"
+#include "file-tools-enum-types.h"
 #include "gth-curve-preset.h"
 
 
diff --git a/extensions/file_tools/gth-file-tool-crop.c b/extensions/file_tools/gth-file-tool-crop.c
index 5de968e..8922023 100644
--- a/extensions/file_tools/gth-file-tool-crop.c
+++ b/extensions/file_tools/gth-file-tool-crop.c
@@ -22,7 +22,7 @@
 #include <config.h>
 #include <gthumb.h>
 #include <extensions/image_viewer/image-viewer.h>
-#include "enum-types.h"
+#include "file-tools-enum-types.h"
 #include "gth-file-tool-crop.h"
 #include "preferences.h"
 
diff --git a/extensions/file_tools/gth-file-tool-rotate.c b/extensions/file_tools/gth-file-tool-rotate.c
index fdffe7d..a388450 100644
--- a/extensions/file_tools/gth-file-tool-rotate.c
+++ b/extensions/file_tools/gth-file-tool-rotate.c
@@ -24,7 +24,7 @@
 #include <gthumb.h>
 #include <extensions/image_viewer/image-viewer.h>
 #include "cairo-rotate.h"
-#include "enum-types.h"
+#include "file-tools-enum-types.h"
 #include "gth-file-tool-rotate.h"
 #include "gth-image-line-tool.h"
 #include "gth-image-rotator.h"
diff --git a/extensions/file_tools/meson.build b/extensions/file_tools/meson.build
new file mode 100644
index 0000000..b91ca6b
--- /dev/null
+++ b/extensions/file_tools/meson.build
@@ -0,0 +1,112 @@
+
+header_files = [
+  'cairo-blur.h',
+  'cairo-effects.h',
+  'cairo-rotate.h',
+  'gth-curve.h',
+  'gth-curve-editor.h',
+  'gth-curve-preset.h',
+  'gth-curve-preset-editor-dialog.h',
+  'gth-file-tool-adjust-colors.h',
+  'gth-file-tool-adjust-contrast.h',
+  'gth-file-tool-color-picker.h',
+  'gth-file-tool-crop.h',
+  'gth-file-tool-curves.h',
+  'gth-file-tool-effects.h',
+  'gth-file-tool-flip.h',
+  'gth-file-tool-grayscale.h',
+  'gth-file-tool-lomo.h',
+  'gth-file-tool-mirror.h',
+  'gth-file-tool-negative.h',
+  'gth-file-tool-redo.h',
+  'gth-file-tool-resize.h',
+  'gth-file-tool-rotate.h',
+  'gth-file-tool-rotate-left.h',
+  'gth-file-tool-rotate-right.h',
+  'gth-file-tool-rotate.h',
+  'gth-file-tool-save.h',
+  'gth-file-tool-save-as.h',
+  'gth-file-tool-sharpen.h',
+  'gth-file-tool-undo.h',
+  'gth-image-line-tool.h',
+  'gth-image-rotator.h',
+  'gth-points.h',
+  'gth-preview-tool.h',
+  'preferences.h'
+]
+
+enum_files = gnome.mkenums_simple('file-tools-enum-types', sources: header_files)
+
+source_files = files(
+  'cairo-blur.c',
+  'cairo-effects.c',
+  'cairo-rotate.c',
+  'callbacks.c',
+  'callbacks.h',
+  'gth-curve.c',
+  'gth-curve-editor.c',
+  'gth-curve-preset.c',
+  'gth-curve-preset-editor-dialog.c',
+  'gth-file-tool-adjust-colors.c',
+  'gth-file-tool-adjust-contrast.c',
+  'gth-file-tool-color-picker.c',
+  'gth-file-tool-crop.c',
+  'gth-file-tool-curves.c',
+  'gth-file-tool-effects.c',
+  'gth-file-tool-flip.c',
+  'gth-file-tool-grayscale.c',
+  'gth-file-tool-lomo.c',
+  'gth-file-tool-mirror.c',
+  'gth-file-tool-negative.c',
+  'gth-file-tool-redo.c',
+  'gth-file-tool-resize.c',
+  'gth-file-tool-rotate.c',
+  'gth-file-tool-rotate-left.c',
+  'gth-file-tool-rotate-right.c',
+  'gth-file-tool-save.c',
+  'gth-file-tool-save-as.c',
+  'gth-file-tool-sharpen.c',
+  'gth-file-tool-undo.c',
+  'gth-image-line-tool.c',
+  'gth-image-rotator.c',
+  'gth-points.c',
+  'gth-preview-tool.c',
+  'main.c'
+)
+
+file_tools_mod = shared_module('file_tools', 
+  sources : [ source_files, enum_files ],
+  dependencies : [ 
+    extension_common_deps, 
+    jpeg_deps,
+    use_libtiff ? tiff_deps : [],
+    use_librsvg ? librsvg_dep : [],
+    use_libwebp ? libwebp_dep : []    
+  ],  
+  include_directories : [ config_inc, gthumb_inc ],
+  c_args : c_args,
+  link_with : image_viewer_mod,
+  install : true,
+  install_dir : extensions_install_dir
+)
+
+# .extension file
+
+extension_in_file = configure_file(
+  input : 'file_tools.extension.in.in',
+  output : 'file_tools.extension.in',
+  configuration : extension_data
+)
+
+i18n.merge_file(
+  input : extension_in_file,
+  output : 'file_tools.extension',
+  type : 'desktop',
+  po_dir : po_dir,
+  install : true,
+  install_dir : extensions_install_dir
+)
+
+# Subdirectories
+
+subdir('data')
diff --git a/extensions/file_viewer/file_viewer.extension.in.in 
b/extensions/file_viewer/file_viewer.extension.in.in
index f53d1be..a7fbc81 100644
--- a/extensions/file_viewer/file_viewer.extension.in.in
+++ b/extensions/file_viewer/file_viewer.extension.in.in
@@ -3,5 +3,4 @@ Mandatory=true
 
 [Loader]
 Type=module
-File=%LIBRARY%
-API=%GTHUMB_API_VERSION%
+API=@GTHUMB_API_VERSION@
diff --git a/extensions/file_viewer/meson.build b/extensions/file_viewer/meson.build
new file mode 100644
index 0000000..f4b4696
--- /dev/null
+++ b/extensions/file_viewer/meson.build
@@ -0,0 +1,30 @@
+source_files = files(
+  'gth-file-viewer-page.c',
+  'main.c'
+)
+
+shared_module('file_viewer', 
+  sources : [ source_files ],
+  dependencies : extension_common_deps,
+  include_directories : [ config_inc, gthumb_inc ],
+  c_args : c_args,
+  install : true,
+  install_dir : extensions_install_dir
+)
+
+# .extension file
+
+extension_in_file = configure_file(
+  input : 'file_viewer.extension.in.in',
+  output : 'file_viewer.extension.in',
+  configuration : extension_data
+)
+
+i18n.merge_file(
+  input : extension_in_file,
+  output : 'file_viewer.extension',
+  type : 'desktop',
+  po_dir : po_dir,
+  install : true,
+  install_dir : extensions_install_dir
+)
diff --git a/extensions/find_duplicates/data/meson.build b/extensions/find_duplicates/data/meson.build
new file mode 100644
index 0000000..36e5b29
--- /dev/null
+++ b/extensions/find_duplicates/data/meson.build
@@ -0,0 +1 @@
+subdir('ui')
diff --git a/extensions/find_duplicates/data/ui/meson.build b/extensions/find_duplicates/data/ui/meson.build
new file mode 100644
index 0000000..50bd63f
--- /dev/null
+++ b/extensions/find_duplicates/data/ui/meson.build
@@ -0,0 +1,6 @@
+ui_files = files(
+  'find-duplicates.ui',
+  'find-duplicates-choose-folders.ui',
+  'find-duplicates-dialog.ui'
+)
+install_data(ui_files, install_dir : ui_install_dir)
diff --git a/extensions/find_duplicates/find_duplicates.extension.in.in 
b/extensions/find_duplicates/find_duplicates.extension.in.in
index f4fde03..e89c3d6 100644
--- a/extensions/find_duplicates/find_duplicates.extension.in.in
+++ b/extensions/find_duplicates/find_duplicates.extension.in.in
@@ -1,13 +1,12 @@
 [Extension]
-_Name=Find Duplicates
-_Description=Find duplicated files.
-_Authors=gthumb development team
+Name=Find Duplicates
+Comment=Find duplicated files.
+Authors=gthumb development team
 Copyright=Copyright © 2010-2013 The Free Software Foundation, Inc.
-Version=%VERSION%
+Version=@GTHUMB_VERSION@
 Category=Browser
 
 [Loader]
 Type=module
-File=%LIBRARY%
-API=%GTHUMB_API_VERSION%
+API=@GTHUMB_API_VERSION@
 Requires=catalogs
diff --git a/extensions/find_duplicates/meson.build b/extensions/find_duplicates/meson.build
new file mode 100644
index 0000000..4871a4b
--- /dev/null
+++ b/extensions/find_duplicates/meson.build
@@ -0,0 +1,39 @@
+source_files = files(
+  'actions.c',
+  'callbacks.c',
+  'dlg-find-duplicates.c',
+  'gth-find-duplicates.c',
+  'gth-folder-chooser-dialog.c',
+  'main.c'
+)
+
+shared_module('find_duplicates', 
+  sources : source_files,
+  dependencies : extension_common_deps,
+  include_directories : [ config_inc, gthumb_inc ],
+  c_args : c_args,
+  link_with : catalogs_mod,
+  install : true,
+  install_dir : extensions_install_dir
+)
+
+# .extension file
+
+extension_in_file = configure_file(
+  input : 'find_duplicates.extension.in.in',
+  output : 'find_duplicates.extension.in',
+  configuration : extension_data
+)
+
+i18n.merge_file(
+  input : extension_in_file,
+  output : 'find_duplicates.extension',
+  type : 'desktop',
+  po_dir : po_dir,
+  install : true,
+  install_dir : extensions_install_dir
+)
+
+# Subdirectories
+
+subdir('data')
diff --git a/extensions/flicker/flicker.extension.in.in b/extensions/flicker/flicker.extension.in.in
index 98ec10a..3565d24 100644
--- a/extensions/flicker/flicker.extension.in.in
+++ b/extensions/flicker/flicker.extension.in.in
@@ -9,6 +9,5 @@ Category=Exporter
 
 [Loader]
 Type=module
-File=%LIBRARY%
 API=%GTHUMB_API_VERSION%
 Requires=photo_importer;export_tools;flicker_utils
diff --git a/extensions/flicker_utils/flicker_utils.extension.in.in 
b/extensions/flicker_utils/flicker_utils.extension.in.in
index 89c7cf6..edba346 100644
--- a/extensions/flicker_utils/flicker_utils.extension.in.in
+++ b/extensions/flicker_utils/flicker_utils.extension.in.in
@@ -3,6 +3,5 @@ Hidden=true
 
 [Loader]
 Type=module
-File=%LIBRARY%
 API=%GTHUMB_API_VERSION%
 Requires=importer;export_tools;oauth
diff --git a/extensions/gstreamer_tools/data/meson.build b/extensions/gstreamer_tools/data/meson.build
new file mode 100644
index 0000000..fb796f4
--- /dev/null
+++ b/extensions/gstreamer_tools/data/meson.build
@@ -0,0 +1 @@
+subdir('ui')
\ No newline at end of file
diff --git a/extensions/gstreamer_tools/data/ui/meson.build b/extensions/gstreamer_tools/data/ui/meson.build
new file mode 100644
index 0000000..c546ed5
--- /dev/null
+++ b/extensions/gstreamer_tools/data/ui/meson.build
@@ -0,0 +1,5 @@
+ui_files = files(
+  'mediabar.ui', 
+  'media-viewer-preferences.ui'
+)
+install_data(ui_files, install_dir : ui_install_dir)
diff --git a/extensions/gstreamer_tools/gstreamer_tools.extension.in.in 
b/extensions/gstreamer_tools/gstreamer_tools.extension.in.in
index db66e31..4683eb2 100644
--- a/extensions/gstreamer_tools/gstreamer_tools.extension.in.in
+++ b/extensions/gstreamer_tools/gstreamer_tools.extension.in.in
@@ -1,14 +1,13 @@
 [Extension]
-_Name=Audio/Video support
-_Description=Play audio and video files.
-_Authors=gthumb development team
+Name=Audio/Video support
+Comment=Play audio and video files.
+Authors=gthumb development team
 Copyright=Copyright © 2009-2013 The Free Software Foundation, Inc.
-Version=%VERSION%
+Version=@GTHUMB_VERSION@
 Icon=video-x-generic
 Category=Viewer
 
 [Loader]
 Type=module
-File=%LIBRARY%
-API=%GTHUMB_API_VERSION%
+API=@GTHUMB_API_VERSION@
 Requires=gstreamer_utils
diff --git a/extensions/gstreamer_tools/meson.build b/extensions/gstreamer_tools/meson.build
new file mode 100644
index 0000000..0f4a91c
--- /dev/null
+++ b/extensions/gstreamer_tools/meson.build
@@ -0,0 +1,38 @@
+source_files = files(
+  'actions.c',
+  'dlg-media-viewer-preferences.c',
+  'gth-media-viewer-page.c',
+  'gth-metadata-provider-gstreamer.c',
+  'main.c'
+)
+
+shared_module('gstreamer_tools', 
+  sources : source_files,
+  dependencies : [ extension_common_deps, gstreamer_deps ],
+  include_directories : [ config_inc, gthumb_inc ],
+  c_args : c_args,
+  link_with: gstreamer_utils_mod,
+  install : true,
+  install_dir : extensions_install_dir
+)
+
+# .extension file
+
+extension_in_file = configure_file(
+  input : 'gstreamer_tools.extension.in.in',
+  output : 'gstreamer_tools.extension.in',
+  configuration : extension_data
+)
+
+i18n.merge_file(
+  input : extension_in_file,
+  output : 'gstreamer_tools.extension',
+  type : 'desktop',
+  po_dir : po_dir,
+  install : true,
+  install_dir : extensions_install_dir
+)
+
+# Subdirectories
+
+subdir('data')
diff --git a/extensions/gstreamer_utils/gstreamer_utils.extension.in.in 
b/extensions/gstreamer_utils/gstreamer_utils.extension.in.in
index ad8b8db..d6f2b8c 100644
--- a/extensions/gstreamer_utils/gstreamer_utils.extension.in.in
+++ b/extensions/gstreamer_utils/gstreamer_utils.extension.in.in
@@ -3,5 +3,4 @@ Hidden=true
 
 [Loader]
 Type=module
-File=%LIBRARY%
-API=%GTHUMB_API_VERSION%
+API=@GTHUMB_API_VERSION@
diff --git a/extensions/gstreamer_utils/meson.build b/extensions/gstreamer_utils/meson.build
new file mode 100644
index 0000000..79d18f1
--- /dev/null
+++ b/extensions/gstreamer_utils/meson.build
@@ -0,0 +1,30 @@
+source_files = files(
+  'gstreamer-utils.c',
+  'main.c'
+)
+
+gstreamer_utils_mod = shared_module('gstreamer_utils', 
+  sources : source_files,
+  dependencies : [ extension_common_deps, gstreamer_deps ],
+  include_directories : [ config_inc, gthumb_inc ],
+  c_args : c_args,
+  install : true,
+  install_dir : extensions_install_dir
+)
+
+# .extension file
+
+extension_in_file = configure_file(
+  input : 'gstreamer_utils.extension.in.in',
+  output : 'gstreamer_utils.extension.in',
+  configuration : extension_data
+)
+
+i18n.merge_file(
+  input : extension_in_file,
+  output : 'gstreamer_utils.extension',
+  type : 'desktop',
+  po_dir : po_dir,
+  install : true,
+  install_dir : extensions_install_dir
+)
diff --git a/extensions/image_print/data/meson.build b/extensions/image_print/data/meson.build
new file mode 100644
index 0000000..36e5b29
--- /dev/null
+++ b/extensions/image_print/data/meson.build
@@ -0,0 +1 @@
+subdir('ui')
diff --git a/extensions/image_print/data/ui/meson.build b/extensions/image_print/data/ui/meson.build
new file mode 100644
index 0000000..d8e3103
--- /dev/null
+++ b/extensions/image_print/data/ui/meson.build
@@ -0,0 +1,5 @@
+ui_files = files(
+  'print-layout.ui', 
+  'print-preferences.ui'
+)
+install_data(ui_files, install_dir : ui_install_dir)
diff --git a/extensions/image_print/image_print.extension.in.in 
b/extensions/image_print/image_print.extension.in.in
index a0263fa..340ee68 100644
--- a/extensions/image_print/image_print.extension.in.in
+++ b/extensions/image_print/image_print.extension.in.in
@@ -1,13 +1,12 @@
 [Extension]
-_Name=Image print
-_Description=Allow to print images choosing the page layout.
-_Authors=gthumb development team
+Name=Image print
+Comment=Allow to print images choosing the page layout.
+Authors=gthumb development team
 Copyright=Copyright © 2009-2013 The Free Software Foundation, Inc.
-Version=%VERSION%
+Version=@GTHUMB_VERSION@
 Icon=document-print
 Category=List-Tool
 
 [Loader]
 Type=module
-File=%LIBRARY%
-API=%GTHUMB_API_VERSION%
+API=@GTHUMB_API_VERSION@
diff --git a/extensions/image_print/meson.build b/extensions/image_print/meson.build
new file mode 100644
index 0000000..6a728d2
--- /dev/null
+++ b/extensions/image_print/meson.build
@@ -0,0 +1,39 @@
+source_files = files(
+  'actions.c',
+  'callbacks.c',
+  'gth-image-info.c',
+  'gth-image-print-job.c',
+  'gth-load-image-info-task.c',
+  'preferences.c',
+  'main.c'
+)
+
+shared_module('image_print', 
+  sources : source_files,
+  dependencies : extension_common_deps,
+  include_directories : [ config_inc, gthumb_inc ],
+  c_args : c_args,
+  install : true,
+  install_dir : extensions_install_dir
+)
+
+# .extension file
+
+extension_in_file = configure_file(
+  input : 'image_print.extension.in.in',
+  output : 'image_print.extension.in',
+  configuration : extension_data
+)
+
+i18n.merge_file(
+  input : extension_in_file,
+  output : 'image_print.extension',
+  type : 'desktop',
+  po_dir : po_dir,
+  install : true,
+  install_dir : extensions_install_dir
+)
+
+# Subdirectories
+
+subdir('data')
diff --git a/extensions/image_rotation/image_rotation.extension.in.in 
b/extensions/image_rotation/image_rotation.extension.in.in
index 70bbfc6..a71fd96 100644
--- a/extensions/image_rotation/image_rotation.extension.in.in
+++ b/extensions/image_rotation/image_rotation.extension.in.in
@@ -1,13 +1,12 @@
 [Extension]
-_Name=Image rotation
-_Description=Rotate images without data loss.
-_Authors=gthumb development team
+Name=Image rotation
+Comment=Rotate images without data loss.
+Authors=gthumb development team
 Copyright=Copyright © 2009-2013 The Free Software Foundation, Inc.
-Version=%VERSION%
+Version=@GTHUMB_VERSION@
 Category=List-Tool
 
 [Loader]
 Type=module
-File=%LIBRARY%
-API=%GTHUMB_API_VERSION%
+API=@GTHUMB_API_VERSION@
 Requires=jpeg_utils;list_tools
diff --git a/extensions/image_rotation/meson.build b/extensions/image_rotation/meson.build
new file mode 100644
index 0000000..42b0a45
--- /dev/null
+++ b/extensions/image_rotation/meson.build
@@ -0,0 +1,35 @@
+source_files = files(
+  'actions.c',
+  'callbacks.c',
+  'gth-reset-orientation-task.c',
+  'gth-transform-task.c',
+  'main.c',
+  'rotation-utils.c'
+)
+
+image_rotation_mod = shared_module('image_rotation', 
+  sources : source_files,
+  dependencies : [ common_deps, jpeg_deps ],
+  include_directories : [ config_inc, gthumb_inc ],
+  c_args : c_args,
+  link_with : jpeg_utils_mod,
+  install : true,
+  install_dir : extensions_install_dir
+)
+
+# .extension file
+
+extension_in_file = configure_file(
+  input : 'image_rotation.extension.in.in',
+  output : 'image_rotation.extension.in',
+  configuration : extension_data
+)
+
+i18n.merge_file(
+  input : extension_in_file,
+  output : 'image_rotation.extension',
+  type : 'desktop',
+  po_dir : po_dir,
+  install : true,
+  install_dir : extensions_install_dir
+)
diff --git a/extensions/image_viewer/data/meson.build b/extensions/image_viewer/data/meson.build
new file mode 100644
index 0000000..fb796f4
--- /dev/null
+++ b/extensions/image_viewer/data/meson.build
@@ -0,0 +1 @@
+subdir('ui')
\ No newline at end of file
diff --git a/extensions/image_viewer/data/ui/meson.build b/extensions/image_viewer/data/ui/meson.build
new file mode 100644
index 0000000..8997c5d
--- /dev/null
+++ b/extensions/image_viewer/data/ui/meson.build
@@ -0,0 +1,4 @@
+ui_files = files(
+  'image-viewer-preferences.ui'
+)
+install_data(ui_files, install_dir : ui_install_dir)
diff --git a/extensions/image_viewer/image_viewer.extension.in.in 
b/extensions/image_viewer/image_viewer.extension.in.in
index b409f0e..45ab90d 100644
--- a/extensions/image_viewer/image_viewer.extension.in.in
+++ b/extensions/image_viewer/image_viewer.extension.in.in
@@ -3,6 +3,5 @@ Mandatory=true
 
 [Loader]
 Type=module
-File=%LIBRARY%
-API=%GTHUMB_API_VERSION%
+API=@GTHUMB_API_VERSION@
 After=file_viewer;jpeg_utils
diff --git a/extensions/image_viewer/meson.build b/extensions/image_viewer/meson.build
new file mode 100644
index 0000000..0d6ade7
--- /dev/null
+++ b/extensions/image_viewer/meson.build
@@ -0,0 +1,43 @@
+source_files = files(
+  'actions.c',
+  'gth-image-histogram.c',
+  'gth-image-viewer-page.c',
+  'gth-image-viewer-page-tool.c',
+  'gth-image-viewer-task.c',
+  'gth-metadata-provider-image.c',
+  'main.c',
+  'preferences.c'
+)
+
+gresource_files = gnome.compile_resources('image-viewer-resources', 'resources.xml', c_name : 'gth')
+
+image_viewer_mod = shared_module('image_viewer', 
+  sources : [ source_files, gresource_files ],
+  dependencies : extension_common_deps,  
+  include_directories : [ config_inc, gthumb_inc ],
+  c_args : c_args,
+  link_with : jpeg_utils_mod,
+  install : true,
+  install_dir : extensions_install_dir
+)
+
+# .extension file
+
+extension_in_file = configure_file(
+  input : 'image_viewer.extension.in.in',
+  output : 'image_viewer.extension.in',
+  configuration : extension_data
+)
+
+i18n.merge_file(
+  input : extension_in_file,
+  output : 'image_viewer.extension',
+  type : 'desktop',
+  po_dir : po_dir,
+  install : true,
+  install_dir : extensions_install_dir
+)
+
+# Subdirectories
+
+subdir('data')
diff --git a/extensions/image_viewer/resources.xml b/extensions/image_viewer/resources.xml
index de1f5df..459c711 100644
--- a/extensions/image_viewer/resources.xml
+++ b/extensions/image_viewer/resources.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <gresources>
-  <gresource prefix="/org/gnome/gThumb/image_viewer">
+  <gresource prefix="/org/gnome/gThumb/image_viewer">    
     <file compressed="true">data/ui/toolbar-zoom-menu.ui</file>
   </gresource>
 </gresources>
diff --git a/extensions/importer/data/meson.build b/extensions/importer/data/meson.build
new file mode 100644
index 0000000..36e5b29
--- /dev/null
+++ b/extensions/importer/data/meson.build
@@ -0,0 +1 @@
+subdir('ui')
diff --git a/extensions/importer/data/ui/meson.build b/extensions/importer/data/ui/meson.build
new file mode 100644
index 0000000..d82e226
--- /dev/null
+++ b/extensions/importer/data/ui/meson.build
@@ -0,0 +1,4 @@
+ui_files = files(
+  'import-preferences.ui'
+)
+install_data(ui_files, install_dir : ui_install_dir)
\ No newline at end of file
diff --git a/extensions/importer/importer.extension.in.in b/extensions/importer/importer.extension.in.in
index 8c34ed6..3f04ae8 100644
--- a/extensions/importer/importer.extension.in.in
+++ b/extensions/importer/importer.extension.in.in
@@ -3,6 +3,5 @@ Hidden=true
 
 [Loader]
 Type=module
-File=%LIBRARY%
-API=%GTHUMB_API_VERSION%
+API=@GTHUMB_API_VERSION@
 After=catalogs
diff --git a/extensions/importer/meson.build b/extensions/importer/meson.build
new file mode 100644
index 0000000..8e2514f
--- /dev/null
+++ b/extensions/importer/meson.build
@@ -0,0 +1,50 @@
+source_files = files(
+  'gth-import-destination-button.c',
+  'gth-import-preferences-dialog.c',
+  'gth-import-task.c',
+  'main.c',
+  'utils.c'
+)
+
+header_files = [
+  'gth-import-destination-button.h',
+  'gth-import-preferences-dialog.h',
+  'gth-import-task.h',
+  'preferences.h',
+  'utils.h'
+]
+
+enum_files = gnome.mkenums_simple('gth-import-enum-types', sources: header_files)
+
+importer_mod = shared_module('importer', 
+  sources : [ source_files, enum_files ],
+  dependencies : [ extension_common_deps, jpeg_deps ],
+  include_directories : [ config_inc, gthumb_inc ],
+  c_args : c_args,
+  link_with : [
+    catalogs_mod, 
+    image_rotation_mod,
+    use_exiv2 ? exiv2_tools_mod : []
+  ],
+  install : true,
+  install_dir : extensions_install_dir
+)
+
+# .extension file
+
+extension_in_file = configure_file(
+  input : 'importer.extension.in.in',
+  output : 'importer.extension.in',
+  configuration : extension_data
+)
+
+i18n.merge_file(
+  input : extension_in_file,
+  output : 'importer.extension',
+  type : 'desktop',
+  po_dir : po_dir,
+  install : true,
+  install_dir : extensions_install_dir
+)
+
+subdir('data')
diff --git a/extensions/jpeg_utils/jpeg_utils.extension.in.in 
b/extensions/jpeg_utils/jpeg_utils.extension.in.in
index f53d1be..a7fbc81 100644
--- a/extensions/jpeg_utils/jpeg_utils.extension.in.in
+++ b/extensions/jpeg_utils/jpeg_utils.extension.in.in
@@ -3,5 +3,4 @@ Mandatory=true
 
 [Loader]
 Type=module
-File=%LIBRARY%
-API=%GTHUMB_API_VERSION%
+API=@GTHUMB_API_VERSION@
diff --git a/extensions/jpeg_utils/meson.build b/extensions/jpeg_utils/meson.build
new file mode 100644
index 0000000..35d7596
--- /dev/null
+++ b/extensions/jpeg_utils/meson.build
@@ -0,0 +1,42 @@
+source_files = files(
+  'jmemorydest.c',
+  'jmemorysrc.c',
+  'jpeg-info.c',
+  'jpegtran.c',
+  'main.c'
+)
+
+if have_libjpeg_80
+  source_files += files('transupp-80.c')
+else
+  source_files += files('transupp-62.c')
+endif
+
+jpeg_utils_mod = shared_module('jpeg_utils', 
+  sources : source_files,
+  dependencies : [ 
+    extension_common_deps, 
+    jpeg_deps 
+  ],
+  include_directories : [ config_inc, gthumb_inc ],
+  c_args : c_args,
+  install : true,
+  install_dir : extensions_install_dir
+)
+
+# .extension file
+
+extension_in_file = configure_file(
+  input : 'jpeg_utils.extension.in.in',
+  output : 'jpeg_utils.extension.in',
+  configuration : extension_data
+)
+
+i18n.merge_file(
+  input : extension_in_file,
+  output : 'jpeg_utils.extension',
+  type : 'desktop',
+  po_dir : po_dir,
+  install : true,
+  install_dir : extensions_install_dir
+)
diff --git a/extensions/list_tools/list_tools.extension.in.in 
b/extensions/list_tools/list_tools.extension.in.in
index 206c411..ba4656c 100644
--- a/extensions/list_tools/list_tools.extension.in.in
+++ b/extensions/list_tools/list_tools.extension.in.in
@@ -1,13 +1,12 @@
 [Extension]
-_Name=File list tools
-_Description=Scripting and batch manipulation of files.
-_Authors=gthumb development team
+Name=File list tools
+Comment=Scripting and batch manipulation of files.
+Authors=gthumb development team
 Copyright=Copyright © 2009-2013 The Free Software Foundation, Inc.
-Version=%VERSION%
+Version=@GTHUMB_VERSION@
 Icon=applications-engineering
 Category=List-Tool
 
 [Loader]
 Type=module
-File=%LIBRARY%
-API=%GTHUMB_API_VERSION%
+API=@GTHUMB_API_VERSION@
diff --git a/extensions/list_tools/meson.build b/extensions/list_tools/meson.build
new file mode 100644
index 0000000..609ccd2
--- /dev/null
+++ b/extensions/list_tools/meson.build
@@ -0,0 +1,38 @@
+source_files = files(
+  'actions.c',
+  'callbacks.c',
+  'dlg-personalize-scripts.c',
+  'gth-script.c',
+  'gth-script-editor-dialog.c',
+  'gth-script-file.c',
+  'gth-script-task.c',
+  'main.c'
+)
+
+gresource_files = gnome.compile_resources('list-tools-resources', 'resources.xml', c_name : 'gth')
+
+shared_module('list_tools', 
+  sources : [ source_files, gresource_files ],
+  dependencies : extension_common_deps,
+  include_directories : [ config_inc, gthumb_inc ],
+  c_args : c_args,
+  install : true,
+  install_dir : extensions_install_dir
+)
+
+# .extension file
+
+extension_in_file = configure_file(
+  input : 'list_tools.extension.in.in',
+  output : 'list_tools.extension.in',
+  configuration : extension_data
+)
+
+i18n.merge_file(
+  input : extension_in_file,
+  output : 'list_tools.extension',
+  type : 'desktop',
+  po_dir : po_dir,
+  install : true,
+  install_dir : extensions_install_dir
+)
diff --git a/extensions/map_view/map_view.extension.in.in b/extensions/map_view/map_view.extension.in.in
index 4053697..19823f7 100644
--- a/extensions/map_view/map_view.extension.in.in
+++ b/extensions/map_view/map_view.extension.in.in
@@ -1,13 +1,11 @@
 [Extension]
-_Name=Map
-_Description=View the photo position on the map
-_Authors=gthumb development team
+Name=Map
+Comment=View the photo position on the map
+Authors=gthumb development team
 Copyright=Copyright © 2011-2013 The Free Software Foundation, Inc.
-Version=%VERSION%
-Icon=map
+Version=@GTHUMB_VERSION@
 Category=Viewer
 
 [Loader]
 Type=module
-File=%LIBRARY%
-API=%GTHUMB_API_VERSION%
+API=@GTHUMB_API_VERSION@
diff --git a/extensions/map_view/meson.build b/extensions/map_view/meson.build
new file mode 100644
index 0000000..1310bc8
--- /dev/null
+++ b/extensions/map_view/meson.build
@@ -0,0 +1,30 @@
+source_files = files(
+  'gth-map-view.c',
+  'main.c'
+)
+
+shared_module('map_view', 
+  sources : source_files,
+  dependencies : [ extension_common_deps, libchamplain_deps ],
+  include_directories : [ config_inc, gthumb_inc ],
+  c_args : c_args,
+  install : true,
+  install_dir : extensions_install_dir
+)
+
+# .extension file
+
+extension_in_file = configure_file(
+  input : 'map_view.extension.in.in',
+  output : 'map_view.extension.in',
+  configuration : extension_data
+)
+
+i18n.merge_file(
+  input : extension_in_file,
+  output : 'map_view.extension',
+  type : 'desktop',
+  po_dir : po_dir,
+  install : true,
+  install_dir : extensions_install_dir
+)
diff --git a/extensions/meson.build b/extensions/meson.build
new file mode 100644
index 0000000..7346c18
--- /dev/null
+++ b/extensions/meson.build
@@ -0,0 +1,76 @@
+extension_data = configuration_data()
+extension_data.set('GTHUMB_VERSION', meson.project_version())            
+extension_data.set('GTHUMB_API_VERSION', api_version)
+
+extension_common_deps = [ common_deps, gthumb_h_dep ]
+
+subdir('file_viewer')
+subdir('catalogs')
+subdir('edit_metadata')
+if use_exiv2
+  subdir('exiv2_tools')
+endif
+
+# after exiv2
+subdir('comments')
+
+# jpeg tools
+subdir('jpeg_utils')
+subdir('cairo_io')
+subdir('image_viewer')
+subdir('image_rotation')
+subdir('importer')
+
+# list tools
+subdir('list_tools')
+#subdir('change_date')
+#subdir('convert_format')
+#subdir('rename_series')
+#subdir('resize_images')
+
+# importers 
+subdir('photo_importer')
+  
+# exporters
+subdir('export_tools')
+#subdir('burn_disc')
+#subdir('contact_sheet')
+if with_webservices
+  #subdir('oauth')
+  #subdir('facebook')  
+
+  # flickr exporters
+  #subdir('flicker_utils')
+  #subdir('23hq')
+  #subdir('flicker')
+
+  #subdir('photobucket')
+  #subdir('picasaweb')
+endif
+if with_webalbums
+  #subdir('webalbums')
+endif
+
+# file tools
+subdir('file_tools')
+#subdir('red_eye_removal')
+
+# other tools
+subdir('bookmarks')
+subdir('file_manager')
+if use_gstreamer
+  subdir('gstreamer_utils')
+  subdir('gstreamer_tools')
+endif
+subdir('image_print')
+if use_libchamplain
+  subdir('map_view')
+endif
+if use_libraw
+  subdir('raw_files')
+endif
+subdir('search')
+subdir('selections')
+subdir('slideshow')
+subdir('desktop_background')
+subdir('find_duplicates')
diff --git a/extensions/oauth/oauth.extension.in.in b/extensions/oauth/oauth.extension.in.in
index ad8b8db..1beafb9 100644
--- a/extensions/oauth/oauth.extension.in.in
+++ b/extensions/oauth/oauth.extension.in.in
@@ -3,5 +3,4 @@ Hidden=true
 
 [Loader]
 Type=module
-File=%LIBRARY%
 API=%GTHUMB_API_VERSION%
diff --git a/extensions/photo_importer/meson.build b/extensions/photo_importer/meson.build
new file mode 100644
index 0000000..1c21d07
--- /dev/null
+++ b/extensions/photo_importer/meson.build
@@ -0,0 +1,40 @@
+source_files = files(
+  'actions.c',
+  'callbacks.c',
+  'dlg-photo-importer.c',
+  'dlg-photo-importer-preferences.c',
+  'main.c'
+)
+
+gresource_files = gnome.compile_resources('photo-importer-resources', 'resources.xml', c_name : 'gth')
+
+shared_module('photo_importer', 
+  sources : [ source_files, gresource_files ],
+  dependencies : extension_common_deps,
+  include_directories : [ config_inc, gthumb_inc ],
+  c_args : c_args,
+  link_with : [ 
+    catalogs_mod, 
+    importer_mod,
+    image_rotation_mod, 
+  ],
+  install : true,
+  install_dir : extensions_install_dir
+)
+
+# .extension file
+
+extension_in_file = configure_file(
+  input : 'photo_importer.extension.in.in',
+  output : 'photo_importer.extension.in',
+  configuration : extension_data
+)
+
+i18n.merge_file(
+  input : extension_in_file,
+  output : 'photo_importer.extension',
+  type : 'desktop',
+  po_dir : po_dir,
+  install : true,
+  install_dir : extensions_install_dir
+)
diff --git a/extensions/photo_importer/photo_importer.extension.in.in 
b/extensions/photo_importer/photo_importer.extension.in.in
index 0d16b34..9033270 100644
--- a/extensions/photo_importer/photo_importer.extension.in.in
+++ b/extensions/photo_importer/photo_importer.extension.in.in
@@ -1,14 +1,13 @@
 [Extension]
-_Name=Import photos
-_Description=Import photos from removable devices.
-_Authors=gthumb development team
+Name=Import photos
+Comment=Import photos from removable devices.
+Authors=gthumb development team
 Copyright=Copyright © 2009-2013 The Free Software Foundation, Inc.
-Version=%VERSION%
+Version=@GTHUMB_VERSION@
 Icon=camera-photo
 Category=Importer
 
 [Loader]
 Type=module
-File=%LIBRARY%
-API=%GTHUMB_API_VERSION%
+API=@GTHUMB_API_VERSION@
 Requires=importer
diff --git a/extensions/picasaweb/picasaweb.extension.in.in b/extensions/picasaweb/picasaweb.extension.in.in
index 8d3d7b3..324fcbb 100644
--- a/extensions/picasaweb/picasaweb.extension.in.in
+++ b/extensions/picasaweb/picasaweb.extension.in.in
@@ -9,6 +9,5 @@ Category=Exporter
 
 [Loader]
 Type=module
-File=%LIBRARY%
 API=%GTHUMB_API_VERSION%
 Requires=importer;export_tools;oauth
diff --git a/extensions/raw_files/main.c b/extensions/raw_files/main.c
index 9c55e72..e58b299 100644
--- a/extensions/raw_files/main.c
+++ b/extensions/raw_files/main.c
@@ -23,15 +23,10 @@
 #include <config.h>
 #include <glib.h>
 #include <gthumb.h>
-#include "main.h"
-
-
-#ifdef HAVE_LIBRAW
-
-
 #include <cairo.h>
 #include <gtk/gtk.h>
 #include <libraw.h>
+#include "main.h"
 #include "gth-metadata-provider-raw.h"
 
 
@@ -433,16 +428,6 @@ gthumb_extension_activate (void)
 }
 
 
-#else
-
-G_MODULE_EXPORT void
-gthumb_extension_activate (void)
-{
-}
-
-#endif
-
-
 G_MODULE_EXPORT void
 gthumb_extension_deactivate (void)
 {
diff --git a/extensions/raw_files/meson.build b/extensions/raw_files/meson.build
new file mode 100644
index 0000000..2bd2b2a
--- /dev/null
+++ b/extensions/raw_files/meson.build
@@ -0,0 +1,30 @@
+source_files = files(
+  'main.c',
+  'gth-metadata-provider-raw.c'
+)
+
+shared_module('raw_files', 
+  sources : source_files,
+  dependencies : [ extension_common_deps, libraw_dep ],
+  include_directories : [ config_inc, gthumb_inc ],
+  c_args : c_args,
+  install : true,
+  install_dir : extensions_install_dir
+)
+
+# .extension file
+
+extension_in_file = configure_file(
+  input : 'raw_files.extension.in.in',
+  output : 'raw_files.extension.in',
+  configuration : extension_data
+)
+
+i18n.merge_file(
+  input : extension_in_file,
+  output : 'raw_files.extension',
+  type : 'desktop',
+  po_dir : po_dir,
+  install : true,
+  install_dir : extensions_install_dir
+)
diff --git a/extensions/raw_files/raw_files.extension.in.in b/extensions/raw_files/raw_files.extension.in.in
index 0ee9417..3807c5e 100644
--- a/extensions/raw_files/raw_files.extension.in.in
+++ b/extensions/raw_files/raw_files.extension.in.in
@@ -1,12 +1,11 @@
 [Extension]
-_Name=Raw format support
-_Description=Allow to load raw format images.
-_Authors=gthumb development team
+Name=Raw format support
+Comment=Allow to load raw format images.
+Authors=gthumb development team
 Copyright=Copyright © 2009-2013 The Free Software Foundation, Inc.
-Version=%VERSION%
+Version=@GTHUMB_VERSION@
 Category=Viewer
 
 [Loader]
 Type=module
-File=%LIBRARY%
-API=%GTHUMB_API_VERSION%
+API=@GTHUMB_API_VERSION@
diff --git a/extensions/red_eye_removal/red_eye_removal.extension.in.in 
b/extensions/red_eye_removal/red_eye_removal.extension.in.in
index 89acb78..a0d474e 100644
--- a/extensions/red_eye_removal/red_eye_removal.extension.in.in
+++ b/extensions/red_eye_removal/red_eye_removal.extension.in.in
@@ -8,6 +8,5 @@ Category=File-Tool
 
 [Loader]
 Type=module
-File=%LIBRARY%
 API=%GTHUMB_API_VERSION%
 Requires=image_viewer;file_tools
diff --git a/extensions/rename_series/rename_series.extension.in.in 
b/extensions/rename_series/rename_series.extension.in.in
index a1d0ad5..14f42e5 100644
--- a/extensions/rename_series/rename_series.extension.in.in
+++ b/extensions/rename_series/rename_series.extension.in.in
@@ -8,6 +8,5 @@ Category=List-Tool
 
 [Loader]
 Type=module
-File=%LIBRARY%
 API=%GTHUMB_API_VERSION%
 Requires=file_manager
diff --git a/extensions/resize_images/resize_images.extension.in.in 
b/extensions/resize_images/resize_images.extension.in.in
index eedb805..f228953 100644
--- a/extensions/resize_images/resize_images.extension.in.in
+++ b/extensions/resize_images/resize_images.extension.in.in
@@ -8,6 +8,5 @@ Category=List-Tool
 
 [Loader]
 Type=module
-File=%LIBRARY%
 API=%GTHUMB_API_VERSION%
 Requires=image_viewer;list_tools
diff --git a/extensions/search/data/meson.build b/extensions/search/data/meson.build
new file mode 100644
index 0000000..36e5b29
--- /dev/null
+++ b/extensions/search/data/meson.build
@@ -0,0 +1 @@
+subdir('ui')
diff --git a/extensions/search/data/ui/meson.build b/extensions/search/data/ui/meson.build
new file mode 100644
index 0000000..918cca0
--- /dev/null
+++ b/extensions/search/data/ui/meson.build
@@ -0,0 +1,4 @@
+ui_files = files(
+  'search-editor.ui'
+)
+install_data(ui_files, install_dir : ui_install_dir)
diff --git a/extensions/search/meson.build b/extensions/search/meson.build
new file mode 100644
index 0000000..6451b9e
--- /dev/null
+++ b/extensions/search/meson.build
@@ -0,0 +1,40 @@
+source_files = files(
+  'actions.c',
+  'callbacks.c',
+  'gth-search.c',
+  'gth-search-editor.c',
+  'gth-search-editor-dialog.c',
+  'gth-search-task.c',
+  'main.c'
+)
+
+shared_module('search', 
+  sources : [ source_files, gresource_files ],
+  dependencies : extension_common_deps,
+  include_directories : [ config_inc, gthumb_inc ],
+  c_args : c_args,
+  link_with : catalogs_mod,
+  install : true,
+  install_dir : extensions_install_dir
+)
+
+# .extension file
+
+extension_in_file = configure_file(
+  input : 'search.extension.in.in',
+  output : 'search.extension.in',
+  configuration : extension_data
+)
+
+i18n.merge_file(
+  input : extension_in_file,
+  output : 'search.extension',
+  type : 'desktop',
+  po_dir : po_dir,
+  install : true,
+  install_dir : extensions_install_dir
+)
+
+# Subdirectories
+
+subdir('data')
diff --git a/extensions/search/search.extension.in.in b/extensions/search/search.extension.in.in
index fbb76ce..2260eb6 100644
--- a/extensions/search/search.extension.in.in
+++ b/extensions/search/search.extension.in.in
@@ -1,14 +1,13 @@
 [Extension]
-_Name=Search
-_Description=File search tool.
-_Authors=gthumb development team
+Name=Search
+Comment=File search tool.
+Authors=gthumb development team
 Copyright=Copyright © 2008-2013 The Free Software Foundation, Inc.
-Version=%VERSION%
+Version=@GTHUMB_VERSION@
 Icon=edit-find
 Category=Browser
 
 [Loader]
 Type=module
-File=%LIBRARY%
-API=%GTHUMB_API_VERSION%
+API=@GTHUMB_API_VERSION@
 Requires=catalogs
diff --git a/extensions/selections/meson.build b/extensions/selections/meson.build
new file mode 100644
index 0000000..a050415
--- /dev/null
+++ b/extensions/selections/meson.build
@@ -0,0 +1,34 @@
+source_files = files(
+  'actions.c',
+  'callbacks.c',
+  'gth-file-source-selections.c',
+  'gth-metadata-provider-selections.c',
+  'gth-selections-manager.c',
+  'main.c'
+)
+
+shared_module('selections', 
+  sources : source_files,
+  dependencies : extension_common_deps,
+  include_directories : [ config_inc, gthumb_inc ],
+  c_args : c_args,
+  install : true,
+  install_dir : extensions_install_dir
+)
+
+# .extension file
+
+extension_in_file = configure_file(
+  input : 'selections.extension.in.in',
+  output : 'selections.extension.in',
+  configuration : extension_data
+)
+
+i18n.merge_file(
+  input : extension_in_file,
+  output : 'selections.extension',
+  type : 'desktop',
+  po_dir : po_dir,
+  install : true,
+  install_dir : extensions_install_dir
+)
diff --git a/extensions/selections/selections.extension.in.in 
b/extensions/selections/selections.extension.in.in
index 56acbf7..171b0cb 100644
--- a/extensions/selections/selections.extension.in.in
+++ b/extensions/selections/selections.extension.in.in
@@ -1,14 +1,12 @@
 [Extension]
-_Name=Selections
-_Description=Advanced file selection.
-_Authors=gthumb development team
+Name=Selections
+Comment=Advanced file selection.
+Authors=gthumb development team
 Copyright=Copyright © 2008-2013 The Free Software Foundation, Inc.
-Version=%VERSION%
-Icon=selection
-URL=http://live.gnome.org/Apps/gthumb
+Version=@GTHUMB_VERSION@
+Icon=emblem-flag-gray
 Category=Browser
 
 [Loader]
 Type=module
-File=%LIBRARY%
-API=%GTHUMB_API_VERSION%
+API=@GTHUMB_API_VERSION@
diff --git a/extensions/slideshow/data/meson.build b/extensions/slideshow/data/meson.build
new file mode 100644
index 0000000..fb796f4
--- /dev/null
+++ b/extensions/slideshow/data/meson.build
@@ -0,0 +1 @@
+subdir('ui')
\ No newline at end of file
diff --git a/extensions/slideshow/data/ui/meson.build b/extensions/slideshow/data/ui/meson.build
new file mode 100644
index 0000000..61efc92
--- /dev/null
+++ b/extensions/slideshow/data/ui/meson.build
@@ -0,0 +1,4 @@
+ui_files = files(
+  'slideshow-preferences.ui'
+)
+install_data(ui_files, install_dir : ui_install_dir)
diff --git a/extensions/slideshow/meson.build b/extensions/slideshow/meson.build
new file mode 100644
index 0000000..45adeca
--- /dev/null
+++ b/extensions/slideshow/meson.build
@@ -0,0 +1,47 @@
+source_files = files(
+  'actions.c',
+  'callbacks.c',
+  'gth-slideshow.c',
+  'gth-slideshow-preferences.c',
+  'gth-transition.c',
+  'main.c',
+  'preferences.c'
+)
+
+shared_module('slideshow', 
+  sources : source_files,
+  dependencies : [
+    extension_common_deps,
+    use_clutter ? clutter_deps : [],
+    use_gstreamer ? gstreamer_deps : []
+  ],
+  include_directories : [ config_inc, gthumb_inc ],
+  c_args : c_args,
+  link_with : [
+    catalogs_mod,
+    use_gstreamer ? gstreamer_utils_mod : []
+  ],
+  install : true,
+  install_dir : extensions_install_dir
+)
+
+# .extension file
+
+extension_in_file = configure_file(
+  input : 'slideshow.extension.in.in',
+  output : 'slideshow.extension.in',
+  configuration : extension_data
+)
+
+i18n.merge_file(
+  input : extension_in_file,
+  output : 'slideshow.extension',
+  type : 'desktop',
+  po_dir : po_dir,
+  install : true,
+  install_dir : extensions_install_dir
+)
+
+# Subdirectories
+
+subdir('data')
diff --git a/extensions/slideshow/slideshow.extension.in.in b/extensions/slideshow/slideshow.extension.in.in
index 526a036..467ec0c 100644
--- a/extensions/slideshow/slideshow.extension.in.in
+++ b/extensions/slideshow/slideshow.extension.in.in
@@ -1,14 +1,13 @@
 [Extension]
-_Name=Slideshow
-_Description=View images as a slideshow.
-_Authors=gthumb development team
+Name=Slideshow
+Comment=View images as a slideshow.
+Authors=gthumb development team
 Copyright=Copyright © 2008-2013 The Free Software Foundation, Inc.
-Version=%VERSION%
+Version=@GTHUMB_VERSION@
 Icon=x-office-presentation
 Category=Browser
 
 [Loader]
 Type=module
-File=%LIBRARY%
-API=%GTHUMB_API_VERSION%
+API=@GTHUMB_API_VERSION@
 After=catalogs;image_viewer
diff --git a/extensions/webalbums/webalbums.extension.in.in b/extensions/webalbums/webalbums.extension.in.in
index 5637d97..6c36366 100644
--- a/extensions/webalbums/webalbums.extension.in.in
+++ b/extensions/webalbums/webalbums.extension.in.in
@@ -8,6 +8,5 @@ Category=Exporter
 
 [Loader]
 Type=module
-File=%LIBRARY%
 API=%GTHUMB_API_VERSION%
 Requires=export_tools
diff --git a/gthumb/gth-extensions.c b/gthumb/gth-extensions.c
index 379df05..aa46c0a 100644
--- a/gthumb/gth-extensions.c
+++ b/gthumb/gth-extensions.c
@@ -188,7 +188,7 @@ gth_extension_module_real_open (GthExtension  *base,
        {
                char *extension_dir;
 
-               extension_dir = g_build_filename (GTHUMB_EXTENSIONS_DIR, self->priv->module_name, ".libs", 
NULL);
+               extension_dir = g_build_filename (GTHUMB_EXTENSIONS_DIR, self->priv->module_name, NULL);
                file_name = g_module_build_path (extension_dir, self->priv->module_name);
                g_free (extension_dir);
        }
@@ -416,7 +416,6 @@ gth_extension_description_finalize (GObject *obj)
        g_free (self->url);
        g_free (self->category);
        g_free (self->loader_type);
-       g_free (self->loader_file);
        g_strfreev (self->loader_requires);
        g_strfreev (self->loader_after);
        _g_object_unref (self->priv->extension);
@@ -470,7 +469,9 @@ gth_extension_description_load_from_file (GthExtensionDescription *desc,
        basename = g_file_get_basename (file);
        desc->id = _g_uri_remove_extension (basename);
        desc->name = g_key_file_get_locale_string (key_file, "Extension", "Name", NULL, NULL);
-       desc->description = g_key_file_get_locale_string (key_file, "Extension", "Description", NULL, NULL);
+       desc->description = g_key_file_get_locale_string (key_file, "Extension", "Comment", NULL, NULL);
+       if (desc->description == NULL)
+               desc->description = g_key_file_get_locale_string (key_file, "Extension", "Description", NULL, 
NULL);
        desc->version = g_key_file_get_locale_string (key_file, "Extension", "Version", NULL, NULL);
        desc->authors = g_key_file_get_locale_string_list (key_file, "Extension", "Authors", NULL, NULL, 
NULL);
        desc->copyright = g_key_file_get_locale_string (key_file, "Extension", "Copyright", NULL, NULL);
@@ -480,7 +481,6 @@ gth_extension_description_load_from_file (GthExtensionDescription *desc,
        desc->mandatory = g_key_file_get_boolean (key_file, "Extension", "Mandatory", NULL);
        desc->hidden = g_key_file_get_boolean (key_file, "Extension", "Hidden", NULL);
        desc->loader_type = g_key_file_get_string (key_file, "Loader", "Type", NULL);
-       desc->loader_file = g_key_file_get_string (key_file, "Loader", "File", NULL);
        desc->loader_requires = g_key_file_get_string_list (key_file, "Loader", "Requires", NULL, NULL);
        desc->loader_after = g_key_file_get_string_list (key_file, "Loader", "After", NULL, NULL);
 
diff --git a/gthumb/gth-extensions.h b/gthumb/gth-extensions.h
index 0e341f2..987aab3 100644
--- a/gthumb/gth-extensions.h
+++ b/gthumb/gth-extensions.h
@@ -116,7 +116,6 @@ struct _GthExtensionDescription {
        char      *url;
        char      *category;
        char      *loader_type;
-       char      *loader_file;
        char     **loader_requires;
        char     **loader_after;
        gboolean   mandatory;
diff --git a/gthumb/meson.build b/gthumb/meson.build
index c80a388..85521db 100644
--- a/gthumb/meson.build
+++ b/gthumb/meson.build
@@ -110,25 +110,40 @@ public_header_files = [
   'zlib-utils.h'
 ]
 
-enum_files = gnome.mkenums_simple('gth-enum-types', sources: files(public_header_files))
+install_headers(
+  public_header_files, 
+  install_dir : pkgincludedir
+)
 
-marshal_files = gnome.genmarshal('gth-marshal', prefix : 'gth_marshal', sources : 'gth-marshal.list' )
+enum_files = gnome.mkenums_simple('gth-enum-types', 
+  sources: files(public_header_files),
+  install_header : true,
+  install_dir : pkgincludedir,
+)
 
-public_header_files += [ 'gth-enum-types.h', 'gth-marshal.h' ]
+marshal_files = gnome.genmarshal('gth-marshal', 
+  prefix : 'gth_marshal', 
+  sources : 'gth-marshal.list',
+  install_header : true,
+  install_dir : pkgincludedir,
+)
 
 gthumb_h = custom_target('gthumb.h',
-  input : 'gthumb.h.template',
+  input : [ 'gthumb.h.template' ],
   output : 'gthumb.h',
-  command : [ find_program('make-header.sh'), '@OUTPUT@', '@INPUT@', public_header_files ],
-  build_by_default : true
+  command : [ find_program('make-header.sh'), '@OUTPUT@', '@INPUT@', 'gth-enum-types.h', 'gth-marshal.h', 
public_header_files ],
+  install : true,
+  install_dir : pkgincludedir  
 )
 
+gthumb_h_dep = declare_dependency(sources : [ enum_files, marshal_files, gthumb_h ])
+
 authors_tab = custom_target('authors.tab',
   input : join_paths(meson.source_root(), 'AUTHORS'),
   output : 'AUTHORS.tab',
-  command : [ find_program('make-authors-tab.sh'), '@INPUT@', '@OUTPUT@' ],
-  build_by_default : true
+  command : [ find_program('make-authors-tab.sh'), '@INPUT@', '@OUTPUT@' ]
 )
+authors_dep = declare_dependency(sources : [ authors_tab ])
 
 gresource_files = gnome.compile_resources('gth-resources', 'gthumb.gresource.xml', c_name : 'gth')
 
@@ -263,34 +278,39 @@ other_files = files(
   'gnome-thumbnail-pixbuf-utils.c'
 )
 
+gthumb_inc = include_directories('.')
+
 # Build targets
 
-executable('gthumb', 
+gthumb_exe = executable('gthumb', 
   sources : [ 
     config_file, 
+    marshal_files,
+    enum_files,
     source_files, 
     other_files,
-    gresource_files, 
-    marshal_files,
-    enum_files
-  ],     
+    gresource_files
+  ],
   dependencies : [ 
-    common_dep,    
+    common_deps,     
+    jpeg_deps,  
     exiv2_dep,
     clutter_deps,
     gstreamer_deps,
-    libchamplain_deps,
+    use_libchamplain ? libchamplain_deps : [],
     lcms2_dep,
     colord_dep,
-    tiff_dep,
-    libwebp_dep,
-    libraw_dep,
-    librsvg_dep,
+    use_libtiff ? tiff_deps : [],
+    use_libwebp ? libwebp_dep : [],
+    use_libraw ? libraw_dep : [],
+    use_librsvg ? librsvg_dep : [],
     webkit2_dep,
     libsecret_dep,
-    libbrasero_dep    
+    libbrasero_dep,
+    authors_dep
   ],
-  include_directories : config_inc,
+  include_directories : [ config_inc, gthumb_inc ],
   c_args : c_args,
+  implib : true,
   install : true
 )
diff --git a/meson.build b/meson.build
index 79f08a1..2082064 100644
--- a/meson.build
+++ b/meson.build
@@ -41,10 +41,12 @@ icons_install_dir = join_paths(pkgdatadir, 'icons')
 if get_option('run-in-place')
   ui_data_dir = join_paths(meson.source_root(), 'data', 'ui')
   icons_data_dir = join_paths(meson.source_root(), 'data', 'icons')
+  extensions_ui_data_dir = join_paths(meson.source_root(), 'extensions')
   extensions_data_dir = join_paths(meson.build_root(), 'extensions')
 else
   ui_data_dir = ui_install_dir
   icons_data_dir = icons_install_dir
+  extensions_ui_data_dir = ui_data_dir
   extensions_data_dir = extensions_install_dir  
 endif
 
@@ -121,7 +123,7 @@ libz_dep = dependency('zlib')
 libm_dep = c_comp.find_library('m')
 libjpeg_dep = c_comp.find_library('jpeg')
 if libjpeg_dep.found()
-  jpeg_dep = [ libm_dep, libz_dep, libjpeg_dep ]
+  jpeg_deps = [ libm_dep, libz_dep, libjpeg_dep ]
 endif
 
 code = '''#include <stdio.h>
@@ -130,16 +132,16 @@ code = '''#include <stdio.h>
 #error "wrong version"
 #endif
 int main(int c, char**v) { return 0; }'''
-have_libjpeg_80 = c_comp.compiles(code, name : 'libjpeg version is 8 or greater', dependencies : jpeg_dep)
+have_libjpeg_80 = c_comp.compiles(code, name : 'libjpeg version is 8 or greater', dependencies : jpeg_deps)
 
-have_progressive_jpeg = c_comp.has_function('jpeg_simple_progression', prefix : '#include 
<stdio.h>\n#include<jpeglib.h>', dependencies : jpeg_dep)
+have_progressive_jpeg = c_comp.has_function('jpeg_simple_progression', prefix : '#include 
<stdio.h>\n#include<jpeglib.h>', dependencies : jpeg_deps)
 
 # tiff
 
 if get_option('libtiff')
   libtiff_dep = c_comp.find_library('tiff')
   use_libtiff = libtiff_dep.found()
-  tiff_dep = [ libm_dep, libz_dep, libtiff_dep ]  
+  tiff_deps = [ libm_dep, libz_dep, libtiff_dep ]  
 else
   use_libtiff = false
 endif
@@ -195,7 +197,7 @@ with_webalbums = bison.found() and flex.found()
 
 vector_ops = (c_comp.get_id() == 'gcc') and (c_comp.version().version_compare('>=4.0.7'))
 
-common_dep = [
+common_deps = [
   libm_dep,
   dependency('threads'),
   dependency('glib-2.0', version : glib_version),
@@ -205,7 +207,6 @@ common_dep = [
   dependency('gtk+-3.0', version : gtk_version),
   dependency('libpng'),
   dependency('zlib'),
-  jpeg_dep,
   dependency('gsettings-desktop-schemas')
 ]
 
@@ -219,7 +220,7 @@ config_data.set_quoted('GTHUMB_API_VERSION', api_version)
 config_data.set_quoted('GTHUMB_LOCALEDIR', join_paths(prefix, get_option('localedir')))
 config_data.set_quoted('GTHUMB_UI_DIR', ui_data_dir)
 config_data.set_quoted('GTHUMB_ICON_DIR', icons_data_dir)
-config_data.set_quoted('GTHUMB_EXTENSIONS_UI_DIR', ui_data_dir)
+config_data.set_quoted('GTHUMB_EXTENSIONS_UI_DIR', extensions_ui_data_dir)
 config_data.set_quoted('GTHUMB_EXTENSIONS_DIR', extensions_data_dir)
 if get_option('buildtype').contains('debug')
   config_data.set('DEBUG', 1)
@@ -312,8 +313,8 @@ c_args += c_comp.get_supported_arguments(test_args)
 
 # Subdirectories
 
-#subdir('extensions')
 subdir('gthumb')
+subdir('extensions')
 subdir('data')
 subdir('help')
 subdir('po')


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