diff options
| author | mbkma <[email protected]> | 2026-03-22 10:18:37 +0100 |
|---|---|---|
| committer | mbkma <[email protected]> | 2026-03-22 22:08:28 +0100 |
| commit | 4a14e878c1187d6cc1f76b87a24a6007314d996e (patch) | |
| tree | 14e01a5357bd807b95d368da78202cb495658718 | |
| parent | f1fd658bda21506fac8966821fcdb4c2a154b590 (diff) | |
| download | pluma-meson.tar.bz2 pluma-meson.tar.xz | |
add meson supportmeson
32 files changed, 1157 insertions, 2 deletions
diff --git a/data/meson.build b/data/meson.build new file mode 100644 index 00000000..8e936a3d --- /dev/null +++ b/data/meson.build @@ -0,0 +1,80 @@ +desktop_conf = configuration_data() +desktop_conf.set('VERSION', meson.project_version()) +desktop_conf.set('FULL_LIBEXECDIR', join_paths(libexecdir, 'pluma')) +desktop_in = configure_file( + input: 'pluma.desktop.in.in', + output: 'pluma.desktop.in', + configuration: desktop_conf, +) +i18n.merge_file( + input: desktop_in, + output: 'pluma.desktop', + type: 'desktop', + po_dir: join_paths(meson.project_source_root(), 'po'), + install: true, + install_dir: join_paths(datadir, 'applications'), +) + +appdata_conf = configuration_data() +appdata_conf.set('VERSION', meson.project_version()) +appdata_in = configure_file( + input: 'pluma.appdata.xml.in.in', + output: 'pluma.appdata.xml.in', + configuration: appdata_conf, +) +i18n.merge_file( + input: appdata_in, + output: 'pluma.appdata.xml', + type: 'xml', + po_dir: join_paths(meson.project_source_root(), 'po'), + install: true, + install_dir: join_paths(datadir, 'metainfo'), +) + +schema_conf = configuration_data() +schema_conf.set('GETTEXT_PACKAGE', 'pluma') +schema_conf.set('TOOLBAR_STYLE', 'PLUMA_TOOLBAR_SYSTEM') +schema_xml = configure_file( + input: 'org.mate.pluma.gschema.xml.in', + output: 'org.mate.pluma.gschema.xml', + configuration: schema_conf, + install: true, + install_dir: join_paths(datadir, 'glib-2.0', 'schemas'), +) + +glib_compile_schemas = find_program('glib-compile-schemas') +gsettings_schema_builddir = meson.current_build_dir() +gsettings_schema_target = custom_target( + 'gsettings-schema-compiled', + output: 'gschemas.compiled', + input: schema_xml, + command: [glib_compile_schemas, '--targetdir', gsettings_schema_builddir, gsettings_schema_builddir], + build_by_default: true, +) + +install_man('pluma.1') + +pluma_pc_conf = configuration_data() +pluma_pc_conf.set('prefix', prefix) +pluma_pc_conf.set('exec_prefix', '${prefix}') +pluma_pc_conf.set('libdir', libdir) +pluma_pc_conf.set('includedir', includedir) +pluma_pc_conf.set('VERSION', meson.project_version()) +configure_file( + input: 'pluma.pc.in', + output: 'pluma.pc', + configuration: pluma_pc_conf, + install: true, + install_dir: join_paths(libdir, 'pkgconfig'), +) + +bugreport_conf = configuration_data() +bugreport_conf.set('libexecdir', libexecdir) +configure_file( + input: 'pluma-bugreport.sh.in', + output: 'pluma-bugreport.sh', + configuration: bugreport_conf, + install: true, + install_dir: join_paths(libexecdir, 'pluma'), + install_mode: 'rwxr-xr-x', +) diff --git a/help/meson.build b/help/meson.build new file mode 100644 index 00000000..d0e05eba --- /dev/null +++ b/help/meson.build @@ -0,0 +1,11 @@ +gnome.yelp( + 'pluma', + sources: [ + 'index.docbook', + 'legal.xml', + ], + media: [ + 'figures/pluma_window.png', + 'figures/pluma_recent_files_menu_icon.png', + ], +) diff --git a/meson.build b/meson.build new file mode 100644 index 00000000..6bd3108e --- /dev/null +++ b/meson.build @@ -0,0 +1,141 @@ +project( + 'pluma', 'c', + version: '1.28.1', + meson_version: '>= 0.61.2', + license: 'GPL2', + default_options: ['warning_level=1', 'buildtype=debugoptimized', 'c_std=gnu11'], +) + +gnome = import('gnome') +i18n = import('i18n') +cc = meson.get_compiler('c') + +version_arr = meson.project_version().split('.') +pluma_major_version = version_arr[0].to_int() +pluma_minor_version = version_arr[1].to_int() +pluma_micro_version = version_arr[2].to_int() + +prefix = get_option('prefix') +bindir = join_paths(prefix, get_option('bindir')) +libdir = join_paths(prefix, get_option('libdir')) +datadir = join_paths(prefix, get_option('datadir')) +includedir = join_paths(prefix, get_option('includedir')) +libexecdir = join_paths(prefix, get_option('libexecdir')) +localedir = join_paths(prefix, get_option('localedir')) +pkgdatadir = join_paths(datadir, 'pluma') +pkglibdir = join_paths(libdir, 'pluma') +pluginsdir = join_paths(pkglibdir, 'plugins') + +config_h = configuration_data() +config_h.set_quoted('PACKAGE', 'pluma') +config_h.set_quoted('PACKAGE_URL', 'https://github.com/mate-desktop/pluma') +config_h.set_quoted('VERSION', meson.project_version()) +config_h.set_quoted('GETTEXT_PACKAGE', 'pluma') +config_h.set_quoted('DATADIR', datadir) +config_h.set_quoted('PLUMA_DATADIR', pkgdatadir) +config_h.set_quoted('LIBDIR', libdir) +config_h.set_quoted('PLUMA_LIBDIR', pkglibdir) +config_h.set_quoted('PLUMA_LOCALEDIR', localedir) +config_h.set('PLUMA_MAJOR_VERSION', pluma_major_version) +config_h.set('PLUMA_MINOR_VERSION', pluma_minor_version) +config_h.set('PLUMA_MICRO_VERSION', pluma_micro_version) + +add_project_arguments('-DHAVE_CONFIG_H', language: 'c') +add_project_arguments('-I' + meson.project_build_root(), language: 'c') + +if get_option('gvfs-metadata') + config_h.set('ENABLE_GVFS_METADATA', 1) +endif + +# Required dependencies +libxml_dep = dependency('libxml-2.0', version: '>= 2.5.0') +glib_dep = dependency('glib-2.0', version: '>= 2.50.0') +gmodule_dep = dependency('gmodule-2.0', required: false) +gthread_dep = dependency('gthread-2.0', version: '>= 2.13.0') +gio_dep = dependency('gio-2.0', version: '>= 2.50.0') +gtk_dep = dependency('gtk+-3.0', version: '>= 3.22.0') +gtksourceview_dep = dependency('gtksourceview-4', version: '>= 4.0.2') +libpeas_dep = dependency('libpeas-1.0', version: '>= 1.2.0') +libpeas_gtk_dep = dependency('libpeas-gtk-1.0', version: '>= 1.2.0') +mate_desktop_dep = dependency('mate-desktop-2.0', version: '>= 1.27.1') +x11_dep = dependency('x11') +sm_dep = dependency('sm', version: '>= 1.0.0') +ice_dep = dependency('ice', version: '>= 1.0.0') +m_dep = cc.find_library('m', required: false) + +mate_submodules_dep = dependency('mate-submodules', version: '1.24.0', + fallback: ['mate-submodules', 'mate_submodules_dep']) + +pluma_deps = [ + libxml_dep, + glib_dep, + gthread_dep, + gio_dep, + gtk_dep, + gtksourceview_dep, + libpeas_dep, + libpeas_gtk_dep, + mate_desktop_dep, + x11_dep, +] +if m_dep.found() + pluma_deps += [m_dep] +endif +if gmodule_dep.found() + pluma_deps += [gmodule_dep] +endif + +# Optional: GObject Introspection +have_introspection = false +gobject_introspection_dep = dependency('gobject-introspection-1.0', + version: '>= 0.9.3', + required: get_option('introspection')) +if gobject_introspection_dep.found() + have_introspection = true + config_h.set('HAVE_INTROSPECTION', 1) +endif + +# Optional: Spell plugin (enchant + iso-codes) +have_enchant = false +if get_option('spell') + enchant_dep = dependency('enchant-2', version: '>= 1.6.0', required: false) + if not enchant_dep.found() + enchant_dep = dependency('enchant', version: '>= 1.6.0', required: false) + endif + if enchant_dep.found() + iso_codes_dep = dependency('iso-codes', version: '>= 0.35', required: false) + if iso_codes_dep.found() + have_enchant = true + config_h.set('HAVE_ISO_CODES', 1) + config_h.set_quoted('ISO_CODES_PREFIX', + iso_codes_dep.get_variable(pkgconfig: 'prefix')) + else + error('iso-codes is required for spell plugin. Use -Dspell=false to disable.') + endif + endif +endif + +configure_file(output: 'config.h', configuration: config_h) + +root_inc = include_directories('.') + +subdir('pluma') +subdir('data') +subdir('po') +subdir('plugins') +subdir('help') +if get_option('tests') + subdir('tests') +endif + +gnome.post_install( + glib_compile_schemas: true, + update_desktop_database: find_program('update-desktop-database', required: false).found(), +) + +summary({ + 'GObject introspection': have_introspection, + 'Spell checking': have_enchant, + 'GVFS metadata': get_option('gvfs-metadata'), + 'Tests': get_option('tests'), +}) diff --git a/meson_options.txt b/meson_options.txt new file mode 100644 index 00000000..44ac7f9d --- /dev/null +++ b/meson_options.txt @@ -0,0 +1,20 @@ +option('gvfs-metadata', + type: 'boolean', + value: true, + description: 'Use GVfs to store metadata', +) +option('spell', + type: 'boolean', + value: true, + description: 'Enable spell check plugin (requires enchant and iso-codes)', +) +option('tests', + type: 'boolean', + value: true, + description: 'Build tests', +) +option('introspection', + type: 'feature', + value: 'auto', + description: 'Enable GObject introspection', +) diff --git a/plugins/docinfo/meson.build b/plugins/docinfo/meson.build new file mode 100644 index 00000000..d49151f2 --- /dev/null +++ b/plugins/docinfo/meson.build @@ -0,0 +1,33 @@ +plugin_conf = configuration_data() +plugin_conf.set('PACKAGE_URL', 'https://github.com/mate-desktop/pluma') + +plugin_in = configure_file( + input: 'docinfo.plugin.desktop.in.in', + output: 'docinfo.plugin.desktop.in', + configuration: plugin_conf, +) +i18n.merge_file( + input: plugin_in, + output: 'docinfo.plugin', + po_dir: join_paths(meson.project_source_root(), 'po'), + type: 'desktop', + install: true, + install_dir: pluginsdir, +) + +shared_module( + 'docinfo', + sources: [ + 'pluma-docinfo-plugin.c', + 'pluma-docinfo-plugin.h', + ], + include_directories: [root_inc, pluma_inc], + dependencies: pluma_deps, + link_with: libpluma, + c_args: plugin_cflags, + name_prefix: 'lib', + install: true, + install_dir: pluginsdir, +) + +install_data('docinfo.ui', install_dir: join_paths(datadir, 'pluma', 'plugins', 'docinfo')) diff --git a/plugins/externaltools/data/meson.build b/plugins/externaltools/data/meson.build new file mode 100644 index 00000000..5dceaa03 --- /dev/null +++ b/plugins/externaltools/data/meson.build @@ -0,0 +1,32 @@ +tool_files = [ + 'build', + 'open-terminal-here', + 'remove-trailing-spaces', + 'run-command', + 'search-recursive', + 'switch-c', +] + +tool_merge = find_program('perl') +merge_script = join_paths(meson.project_source_root(), 'plugins', 'externaltools', 'scripts', 'pluma-tool-merge.pl') + +tool_targets = [] +foreach t : tool_files + desktop_in = t + '.desktop.in' + desktop = i18n.merge_file( + input: desktop_in, + output: t + '.desktop', + po_dir: join_paths(meson.project_source_root(), 'po'), + type: 'desktop', + ) + + tool_target = custom_target( + t, + input: [t + '.tool.in', desktop], + output: t, + command: [tool_merge, merge_script, '-o', '@OUTPUT@', '@INPUT0@', '@INPUT1@'], + install: true, + install_dir: join_paths(datadir, 'pluma', 'plugins', 'externaltools', 'tools'), + ) + tool_targets += [tool_target] +endforeach diff --git a/plugins/externaltools/meson.build b/plugins/externaltools/meson.build new file mode 100644 index 00000000..76fd4bc1 --- /dev/null +++ b/plugins/externaltools/meson.build @@ -0,0 +1,20 @@ +subdir('tools') +subdir('data') +subdir('scripts') + +plugin_conf = configuration_data() +plugin_conf.set('PACKAGE_URL', 'https://github.com/mate-desktop/pluma') + +plugin_in = configure_file( + input: 'externaltools.plugin.desktop.in.in', + output: 'externaltools.plugin.desktop.in', + configuration: plugin_conf, +) +i18n.merge_file( + input: plugin_in, + output: 'externaltools.plugin', + po_dir: join_paths(meson.project_source_root(), 'po'), + type: 'desktop', + install: true, + install_dir: pluginsdir, +) diff --git a/plugins/externaltools/scripts/meson.build b/plugins/externaltools/scripts/meson.build new file mode 100644 index 00000000..1b8a8d8a --- /dev/null +++ b/plugins/externaltools/scripts/meson.build @@ -0,0 +1 @@ +install_data('pluma-tool-merge.pl', install_dir: join_paths(datadir, 'pluma', 'plugins', 'externaltools', 'scripts')) diff --git a/plugins/externaltools/tools/meson.build b/plugins/externaltools/tools/meson.build new file mode 100644 index 00000000..c97bd6b0 --- /dev/null +++ b/plugins/externaltools/tools/meson.build @@ -0,0 +1,17 @@ +install_data( + '__init__.py', + 'capture.py', + 'library.py', + 'functions.py', + 'manager.py', + 'outputpanel.py', + 'filelookup.py', + 'linkparsing.py', + install_dir: join_paths(pluginsdir, 'externaltools'), +) + +install_data( + 'tools.ui', + 'outputpanel.ui', + install_dir: join_paths(datadir, 'pluma', 'plugins', 'externaltools', 'ui'), +) diff --git a/plugins/filebrowser/meson.build b/plugins/filebrowser/meson.build new file mode 100644 index 00000000..c6bf332a --- /dev/null +++ b/plugins/filebrowser/meson.build @@ -0,0 +1,110 @@ +plugin_conf = configuration_data() +plugin_conf.set('PACKAGE_URL', 'https://github.com/mate-desktop/pluma') + +plugin_in = configure_file( + input: 'filebrowser.plugin.desktop.in.in', + output: 'filebrowser.plugin.desktop.in', + configuration: plugin_conf, +) +i18n.merge_file( + input: plugin_in, + output: 'filebrowser.plugin', + po_dir: join_paths(meson.project_source_root(), 'po'), + type: 'desktop', + install: true, + install_dir: pluginsdir, +) + +filebrowser_enum_headers = files( + 'pluma-file-bookmarks-store.h', + 'pluma-file-browser-store.h', + 'pluma-file-browser-view.h', + 'pluma-file-browser-widget.h', + 'pluma-file-browser-error.h', + 'pluma-file-browser-utils.h', + 'pluma-file-browser-plugin.h', + 'pluma-file-browser-messages.h', +) + +glib_mkenums = find_program('glib-mkenums') + +filebrowser_enum_types_h = custom_target( + 'pluma-file-browser-enum-types.h', + input: filebrowser_enum_headers, + output: 'pluma-file-browser-enum-types.h', + command: [ + glib_mkenums, + '--template', meson.current_source_dir() / 'pluma-file-browser-enum-types.h.template', + '@INPUT@', + ], + capture: true, +) + +filebrowser_enum_types_c_part = custom_target( + 'pluma-file-browser-enum-types.c.part', + input: filebrowser_enum_headers, + output: 'pluma-file-browser-enum-types.c.part', + command: [ + glib_mkenums, + '--template', meson.current_source_dir() / 'pluma-file-browser-enum-types.c.template', + '@INPUT@', + ], + capture: true, +) + +filebrowser_enum_register_c_part = custom_target( + 'pluma-file-browser-enum-register.c.part', + input: filebrowser_enum_headers, + output: 'pluma-file-browser-enum-register.c.part', + command: [ + glib_mkenums, + '--template', meson.current_source_dir() / 'pluma-file-browser-enum-register.c.template', + '@INPUT@', + ], + capture: true, +) + +filebrowser_enum_types_c = custom_target( + 'pluma-file-browser-enum-types.c', + input: [filebrowser_enum_types_c_part, filebrowser_enum_register_c_part], + output: 'pluma-file-browser-enum-types.c', + command: ['cat', '@INPUT@'], + capture: true, +) + +shared_module( + 'filebrowser', + sources: [ + filebrowser_enum_types_h, + filebrowser_enum_types_c, + 'pluma-file-bookmarks-store.c', + 'pluma-file-browser-store.c', + 'pluma-file-browser-view.c', + 'pluma-file-browser-widget.c', + 'pluma-file-browser-utils.c', + 'pluma-file-browser-plugin.c', + 'pluma-file-browser-messages.c', + ], + include_directories: [root_inc, pluma_inc], + dependencies: pluma_deps, + link_with: libpluma, + c_args: plugin_cflags, + name_prefix: 'lib', + install: true, + install_dir: pluginsdir, +) + +install_data( + 'pluma-file-browser-widget-ui.xml', + install_dir: join_paths(datadir, 'pluma', 'plugins', 'filebrowser'), +) + +schema_conf = configuration_data() +schema_conf.set('GETTEXT_PACKAGE', 'pluma') +configure_file( + input: 'org.mate.pluma.plugins.filebrowser.gschema.xml.in', + output: 'org.mate.pluma.plugins.filebrowser.gschema.xml', + configuration: schema_conf, + install: true, + install_dir: join_paths(datadir, 'glib-2.0', 'schemas'), +) diff --git a/plugins/meson.build b/plugins/meson.build new file mode 100644 index 00000000..93d78b2d --- /dev/null +++ b/plugins/meson.build @@ -0,0 +1,19 @@ +plugin_cflags = [ + '-I' + meson.project_source_root(), + '-I' + meson.project_source_root() / 'pluma', +] + +subdir('docinfo') +subdir('externaltools') +subdir('filebrowser') +subdir('modelines') +subdir('pythonconsole') +subdir('quickopen') +subdir('snippets') +subdir('sort') +subdir('taglist') +subdir('time') +subdir('trailsave') +if have_enchant + subdir('spell') +endif diff --git a/plugins/modelines/meson.build b/plugins/modelines/meson.build new file mode 100644 index 00000000..cb3f3a78 --- /dev/null +++ b/plugins/modelines/meson.build @@ -0,0 +1,38 @@ +plugin_conf = configuration_data() +plugin_conf.set('PACKAGE_URL', 'https://github.com/mate-desktop/pluma') + +plugin_in = configure_file( + input: 'modelines.plugin.desktop.in.in', + output: 'modelines.plugin.desktop.in', + configuration: plugin_conf, +) +i18n.merge_file( + input: plugin_in, + output: 'modelines.plugin', + po_dir: join_paths(meson.project_source_root(), 'po'), + type: 'desktop', + install: true, + install_dir: pluginsdir, +) + +shared_module( + 'modelines', + sources: [ + 'pluma-modeline-plugin.c', + 'pluma-modeline-plugin.h', + 'modeline-parser.c', + 'modeline-parser.h', + ], + include_directories: [root_inc, pluma_inc], + dependencies: pluma_deps, + link_with: libpluma, + c_args: plugin_cflags, + name_prefix: 'lib', + install: true, + install_dir: pluginsdir, +) + +install_data( + 'language-mappings', + install_dir: join_paths(datadir, 'pluma', 'plugins', 'modelines'), +) diff --git a/plugins/pythonconsole/meson.build b/plugins/pythonconsole/meson.build new file mode 100644 index 00000000..80a11519 --- /dev/null +++ b/plugins/pythonconsole/meson.build @@ -0,0 +1,28 @@ +subdir('pythonconsole') + +plugin_conf = configuration_data() +plugin_conf.set('PACKAGE_URL', 'https://github.com/mate-desktop/pluma') + +plugin_in = configure_file( + input: 'pythonconsole.plugin.desktop.in.in', + output: 'pythonconsole.plugin.desktop.in', + configuration: plugin_conf, +) +i18n.merge_file( + input: plugin_in, + output: 'pythonconsole.plugin', + po_dir: join_paths(meson.project_source_root(), 'po'), + type: 'desktop', + install: true, + install_dir: pluginsdir, +) + +schema_conf = configuration_data() +schema_conf.set('GETTEXT_PACKAGE', 'pluma') +configure_file( + input: 'org.mate.pluma.plugins.pythonconsole.gschema.xml.in', + output: 'org.mate.pluma.plugins.pythonconsole.gschema.xml', + configuration: schema_conf, + install: true, + install_dir: join_paths(datadir, 'glib-2.0', 'schemas'), +) diff --git a/plugins/pythonconsole/pythonconsole/meson.build b/plugins/pythonconsole/pythonconsole/meson.build new file mode 100644 index 00000000..be572f72 --- /dev/null +++ b/plugins/pythonconsole/pythonconsole/meson.build @@ -0,0 +1,11 @@ +install_data( + '__init__.py', + 'console.py', + 'config.py', + install_dir: join_paths(pluginsdir, 'pythonconsole'), +) + +install_data( + 'config.ui', + install_dir: join_paths(datadir, 'pluma', 'plugins', 'pythonconsole', 'ui'), +) diff --git a/plugins/quickopen/meson.build b/plugins/quickopen/meson.build new file mode 100644 index 00000000..806c5648 --- /dev/null +++ b/plugins/quickopen/meson.build @@ -0,0 +1,18 @@ +subdir('quickopen') + +plugin_conf = configuration_data() +plugin_conf.set('PACKAGE_URL', 'https://github.com/mate-desktop/pluma') + +plugin_in = configure_file( + input: 'quickopen.plugin.desktop.in.in', + output: 'quickopen.plugin.desktop.in', + configuration: plugin_conf, +) +i18n.merge_file( + input: plugin_in, + output: 'quickopen.plugin', + po_dir: join_paths(meson.project_source_root(), 'po'), + type: 'desktop', + install: true, + install_dir: pluginsdir, +) diff --git a/plugins/quickopen/quickopen/meson.build b/plugins/quickopen/quickopen/meson.build new file mode 100644 index 00000000..2f6b8785 --- /dev/null +++ b/plugins/quickopen/quickopen/meson.build @@ -0,0 +1,7 @@ +install_data( + '__init__.py', + 'popup.py', + 'virtualdirs.py', + 'windowhelper.py', + install_dir: join_paths(pluginsdir, 'quickopen'), +) diff --git a/plugins/snippets/data/lang/meson.build b/plugins/snippets/data/lang/meson.build new file mode 100644 index 00000000..a7c371d9 --- /dev/null +++ b/plugins/snippets/data/lang/meson.build @@ -0,0 +1,4 @@ +install_data( + 'snippets.lang', + install_dir: join_paths(datadir, 'pluma', 'plugins', 'snippets', 'lang'), +) diff --git a/plugins/snippets/data/meson.build b/plugins/snippets/data/meson.build new file mode 100644 index 00000000..32925564 --- /dev/null +++ b/plugins/snippets/data/meson.build @@ -0,0 +1,28 @@ +subdir('lang') + +install_data( + 'css.xml', + 'c.xml', + 'cpp.xml', + 'chdr.xml', + 'docbook.xml', + 'fortran.xml', + 'global.xml', + 'haskell.xml', + 'html.xml', + 'idl.xml', + 'javascript.xml', + 'java.xml', + 'latex.xml', + 'mallard.xml', + 'perl.xml', + 'php.xml', + 'python.xml', + 'ruby.xml', + 'sh.xml', + 'snippets.xml', + 'tcl.xml', + 'xml.xml', + 'xslt.xml', + install_dir: join_paths(datadir, 'pluma', 'plugins', 'snippets'), +) diff --git a/plugins/snippets/meson.build b/plugins/snippets/meson.build new file mode 100644 index 00000000..283b2f2d --- /dev/null +++ b/plugins/snippets/meson.build @@ -0,0 +1,19 @@ +subdir('snippets') +subdir('data') + +plugin_conf = configuration_data() +plugin_conf.set('PACKAGE_URL', 'https://github.com/mate-desktop/pluma') + +plugin_in = configure_file( + input: 'snippets.plugin.desktop.in.in', + output: 'snippets.plugin.desktop.in', + configuration: plugin_conf, +) +i18n.merge_file( + input: plugin_in, + output: 'snippets.plugin', + po_dir: join_paths(meson.project_source_root(), 'po'), + type: 'desktop', + install: true, + install_dir: pluginsdir, +) diff --git a/plugins/snippets/snippets/meson.build b/plugins/snippets/snippets/meson.build new file mode 100644 index 00000000..ac60aa5a --- /dev/null +++ b/plugins/snippets/snippets/meson.build @@ -0,0 +1,23 @@ +install_data( + '__init__.py', + 'WindowHelper.py', + 'Document.py', + 'Library.py', + 'Snippet.py', + 'Parser.py', + 'Placeholder.py', + 'Manager.py', + 'Helper.py', + 'SubstitutionParser.py', + 'Importer.py', + 'Exporter.py', + 'LanguageManager.py', + 'Completion.py', + 'comment.py', + install_dir: join_paths(pluginsdir, 'snippets'), +) + +install_data( + 'snippets.ui', + install_dir: join_paths(datadir, 'pluma', 'plugins', 'snippets', 'ui'), +) diff --git a/plugins/sort/meson.build b/plugins/sort/meson.build new file mode 100644 index 00000000..e4827594 --- /dev/null +++ b/plugins/sort/meson.build @@ -0,0 +1,33 @@ +plugin_conf = configuration_data() +plugin_conf.set('PACKAGE_URL', 'https://github.com/mate-desktop/pluma') + +plugin_in = configure_file( + input: 'sort.plugin.desktop.in.in', + output: 'sort.plugin.desktop.in', + configuration: plugin_conf, +) +i18n.merge_file( + input: plugin_in, + output: 'sort.plugin', + po_dir: join_paths(meson.project_source_root(), 'po'), + type: 'desktop', + install: true, + install_dir: pluginsdir, +) + +shared_module( + 'sort', + sources: [ + 'pluma-sort-plugin.c', + 'pluma-sort-plugin.h', + ], + include_directories: [root_inc, pluma_inc], + dependencies: pluma_deps, + link_with: libpluma, + c_args: plugin_cflags, + name_prefix: 'lib', + install: true, + install_dir: pluginsdir, +) + +install_data('sort.ui', install_dir: join_paths(datadir, 'pluma', 'plugins', 'sort')) diff --git a/plugins/spell/meson.build b/plugins/spell/meson.build new file mode 100644 index 00000000..e0b99e0f --- /dev/null +++ b/plugins/spell/meson.build @@ -0,0 +1,60 @@ +plugin_conf = configuration_data() +plugin_conf.set('PACKAGE_URL', 'https://github.com/mate-desktop/pluma') + +plugin_in = configure_file( + input: 'spell.plugin.desktop.in.in', + output: 'spell.plugin.desktop.in', + configuration: plugin_conf, +) +i18n.merge_file( + input: plugin_in, + output: 'spell.plugin', + po_dir: join_paths(meson.project_source_root(), 'po'), + type: 'desktop', + install: true, + install_dir: pluginsdir, +) + +shared_module( + 'spell', + sources: [ + 'pluma-spell-plugin.c', + 'pluma-spell-plugin.h', + 'pluma-spell-checker.c', + 'pluma-spell-checker.h', + 'pluma-spell-checker-dialog.c', + 'pluma-spell-checker-dialog.h', + 'pluma-spell-checker-language.c', + 'pluma-spell-checker-language.h', + 'pluma-spell-language-dialog.c', + 'pluma-spell-language-dialog.h', + 'pluma-automatic-spell-checker.c', + 'pluma-automatic-spell-checker.h', + 'pluma-spell-utils.c', + 'pluma-spell-utils.h', + ], + include_directories: [root_inc, pluma_inc], + dependencies: pluma_deps + [enchant_dep, mate_desktop_dep], + link_with: libpluma, + c_args: plugin_cflags, + name_prefix: 'lib', + install: true, + install_dir: pluginsdir, +) + +install_data( + 'spell-checker.ui', + 'languages-dialog.ui', + 'pluma-spell-setup-dialog.ui', + install_dir: join_paths(datadir, 'pluma', 'plugins', 'spell'), +) + +schema_conf = configuration_data() +schema_conf.set('GETTEXT_PACKAGE', 'pluma') +configure_file( + input: 'org.mate.pluma.plugins.spell.gschema.xml.in', + output: 'org.mate.pluma.plugins.spell.gschema.xml', + configuration: schema_conf, + install: true, + install_dir: join_paths(datadir, 'glib-2.0', 'schemas'), +) diff --git a/plugins/taglist/meson.build b/plugins/taglist/meson.build new file mode 100644 index 00000000..0d5f75e9 --- /dev/null +++ b/plugins/taglist/meson.build @@ -0,0 +1,64 @@ +plugin_conf = configuration_data() +plugin_conf.set('PACKAGE_URL', 'https://github.com/mate-desktop/pluma') + +plugin_in = configure_file( + input: 'taglist.plugin.desktop.in.in', + output: 'taglist.plugin.desktop.in', + configuration: plugin_conf, +) +i18n.merge_file( + input: plugin_in, + output: 'taglist.plugin', + po_dir: join_paths(meson.project_source_root(), 'po'), + type: 'desktop', + install: true, + install_dir: pluginsdir, +) + +shared_module( + 'taglist', + sources: [ + 'pluma-taglist-plugin-parser.c', + 'pluma-taglist-plugin-parser.h', + 'pluma-taglist-plugin-panel.c', + 'pluma-taglist-plugin-panel.h', + 'pluma-taglist-plugin.c', + 'pluma-taglist-plugin.h', + ], + include_directories: [root_inc, pluma_inc], + dependencies: pluma_deps, + link_with: libpluma, + c_args: plugin_cflags, + name_prefix: 'lib', + install: true, + install_dir: pluginsdir, +) + +taglist_files = [ + 'HTML.tags.xml.in', + 'Latex.tags.xml.in', + 'XSLT.tags.xml.in', + 'XUL.tags.xml.in', +] + +gzip = find_program('gzip') +foreach tf : taglist_files + stem = tf.replace('.tags.xml.in', '') + xml_translated = i18n.merge_file( + input: tf, + output: stem + '.tags.xml', + type: 'xml', + po_dir: join_paths(meson.project_source_root(), 'po'), + data_dirs: [meson.project_source_root()], + ) + tags_gz = custom_target( + stem + '.tags.gz', + input: xml_translated, + output: stem + '.tags.gz', + command: [gzip, '-9', '-n', '-c', '@INPUT@'], + capture: true, + build_by_default: true, + install: true, + install_dir: join_paths(datadir, 'pluma', 'plugins', 'taglist'), + ) +endforeach diff --git a/plugins/time/meson.build b/plugins/time/meson.build new file mode 100644 index 00000000..cbe6e842 --- /dev/null +++ b/plugins/time/meson.build @@ -0,0 +1,47 @@ +plugin_conf = configuration_data() +plugin_conf.set('PACKAGE_URL', 'https://github.com/mate-desktop/pluma') + +plugin_in = configure_file( + input: 'time.plugin.desktop.in.in', + output: 'time.plugin.desktop.in', + configuration: plugin_conf, +) +i18n.merge_file( + input: plugin_in, + output: 'time.plugin', + po_dir: join_paths(meson.project_source_root(), 'po'), + type: 'desktop', + install: true, + install_dir: pluginsdir, +) + +shared_module( + 'time', + sources: [ + 'pluma-time-plugin.c', + 'pluma-time-plugin.h', + ], + include_directories: [root_inc, pluma_inc], + dependencies: pluma_deps, + link_with: libpluma, + c_args: plugin_cflags, + name_prefix: 'lib', + install: true, + install_dir: pluginsdir, +) + +install_data( + 'pluma-time-dialog.ui', + 'pluma-time-setup-dialog.ui', + install_dir: join_paths(datadir, 'pluma', 'plugins', 'time'), +) + +schema_conf = configuration_data() +schema_conf.set('GETTEXT_PACKAGE', 'pluma') +configure_file( + input: 'org.mate.pluma.plugins.time.gschema.xml.in', + output: 'org.mate.pluma.plugins.time.gschema.xml', + configuration: schema_conf, + install: true, + install_dir: join_paths(datadir, 'glib-2.0', 'schemas'), +) diff --git a/plugins/trailsave/meson.build b/plugins/trailsave/meson.build new file mode 100644 index 00000000..59673dc6 --- /dev/null +++ b/plugins/trailsave/meson.build @@ -0,0 +1,31 @@ +plugin_conf = configuration_data() +plugin_conf.set('PACKAGE_URL', 'https://github.com/mate-desktop/pluma') + +plugin_in = configure_file( + input: 'trailsave.plugin.desktop.in.in', + output: 'trailsave.plugin.desktop.in', + configuration: plugin_conf, +) +i18n.merge_file( + input: plugin_in, + output: 'trailsave.plugin', + po_dir: join_paths(meson.project_source_root(), 'po'), + type: 'desktop', + install: true, + install_dir: pluginsdir, +) + +shared_module( + 'trailsave', + sources: [ + 'pluma-trail-save-plugin.c', + 'pluma-trail-save-plugin.h', + ], + include_directories: [root_inc, pluma_inc], + dependencies: pluma_deps, + link_with: libpluma, + c_args: plugin_cflags, + name_prefix: 'lib', + install: true, + install_dir: pluginsdir, +) diff --git a/pluma/dialogs/meson.build b/pluma/dialogs/meson.build new file mode 100644 index 00000000..35d24f8c --- /dev/null +++ b/pluma/dialogs/meson.build @@ -0,0 +1,24 @@ +libdialogs_sources = [ + 'pluma-preferences-dialog.c', + 'pluma-close-confirmation-dialog.c', + 'pluma-encodings-dialog.c', + 'pluma-search-dialog.c', +] + +libdialogs_inc = include_directories('.') + +libdialogs = static_library( + 'dialogs', + sources: libdialogs_sources, + include_directories: [root_inc, pluma_inc], + dependencies: pluma_deps, + c_args: ['-DPLUMA_DATADIR="@0@"'.format(pkgdatadir)], + install: false, +) + +install_data( + 'pluma-encodings-dialog.ui', + 'pluma-preferences-dialog.ui', + 'pluma-search-dialog.ui', + install_dir: join_paths(pkgdatadir, 'ui'), +) diff --git a/pluma/mate-submodules b/pluma/mate-submodules -Subproject 54fff1b15efa5c88d4bb19ebbae9476a03f9db3 +Subproject 4074560e3642a53ace07b31baaf3f04c060dcd0 diff --git a/pluma/meson.build b/pluma/meson.build new file mode 100644 index 00000000..ef142d14 --- /dev/null +++ b/pluma/meson.build @@ -0,0 +1,179 @@ +pluma_enum_types = gnome.mkenums_simple( + 'pluma-enum-types', + sources: [ + 'pluma-app-activatable.h', + 'pluma-app.h', + 'pluma-application.h', + 'pluma-commands.h', + 'pluma-debug.h', + 'pluma-document.h', + 'pluma-encodings.h', + 'pluma-encodings-combo-box.h', + 'pluma-help.h', + 'pluma-message-bus.h', + 'pluma-message-type.h', + 'pluma-message.h', + 'pluma-notebook.h', + 'pluma-panel.h', + 'pluma-progress-message-area.h', + 'pluma-statusbar.h', + 'pluma-status-combo-box.h', + 'pluma-tab.h', + 'pluma-utils.h', + 'pluma-view.h', + 'pluma-view-activatable.h', + 'pluma-window.h', + 'pluma-window-activatable.h', + ], + install_header: false, +) + +libpluma_c_files = [ + 'pluma-app.c', + 'pluma-app-activatable.c', + 'pluma-application.c', + 'pluma-close-button.c', + 'pluma-commands-documents.c', + 'pluma-commands-edit.c', + 'pluma-commands-file.c', + 'pluma-commands-file-print.c', + 'pluma-commands-help.c', + 'pluma-commands-search.c', + 'pluma-commands-view.c', + 'pluma-debug.c', + 'pluma-dirs.c', + 'pluma-document.c', + 'pluma-document-input-stream.c', + 'pluma-document-loader.c', + 'pluma-document-output-stream.c', + 'pluma-document-saver.c', + 'pluma-documents-panel.c', + 'pluma-encodings.c', + 'pluma-encodings-combo-box.c', + 'pluma-file-chooser-dialog.c', + 'pluma-help.c', + 'pluma-history-entry.c', + 'pluma-io-error-message-area.c', + 'pluma-language-manager.c', + 'pluma-message-bus.c', + 'pluma-message-type.c', + 'pluma-message.c', + 'pluma-notebook.c', + 'pluma-panel.c', + 'pluma-pango.c', + 'pluma-plugins-engine.c', + 'pluma-print-job.c', + 'pluma-print-preview.c', + 'pluma-progress-message-area.c', + 'pluma-session.c', + 'pluma-settings.c', + 'pluma-smart-charset-converter.c', + 'pluma-statusbar.c', + 'pluma-status-combo-box.c', + 'pluma-style-scheme-manager.c', + 'pluma-tab.c', + 'pluma-tab-label.c', + 'pluma-utils.c', + 'pluma-view.c', + 'pluma-view-activatable.c', + 'pluma-window.c', + 'pluma-window-activatable.c', + 'plumatextregion.c', + 'bacon-message-connection.c', +] + +libpluma_inst_headers = [ + 'pluma-app.h', + 'pluma-app-activatable.h', + 'pluma-application.h', + 'pluma-commands.h', + 'pluma-debug.h', + 'pluma-document.h', + 'pluma-encodings.h', + 'pluma-encodings-combo-box.h', + 'pluma-help.h', + 'pluma-message-bus.h', + 'pluma-message-type.h', + 'pluma-message.h', + 'pluma-notebook.h', + 'pluma-panel.h', + 'pluma-progress-message-area.h', + 'pluma-statusbar.h', + 'pluma-status-combo-box.h', + 'pluma-tab.h', + 'pluma-utils.h', + 'pluma-view.h', + 'pluma-view-activatable.h', + 'pluma-window.h', + 'pluma-window-activatable.h', +] + +if not get_option('gvfs-metadata') + libpluma_c_files += ['pluma-metadata-manager.c'] + libpluma_inst_headers += ['pluma-metadata-manager.h'] +endif + +install_headers(libpluma_inst_headers, subdir: 'pluma') + +pluma_inc = include_directories('.') +pluma_dialogs_inc = include_directories('dialogs') + +subdir('dialogs') + +pluma_cflags = [ + '-I' + meson.current_source_dir(), + '-DDATADIR="@0@"'.format(datadir), + '-DPLUMA_DATADIR="@0@"'.format(pkgdatadir), + '-DPLUMA_LOCALEDIR="@0@"'.format(localedir), + '-DLIBDIR="@0@"'.format(libdir), + '-DPLUMA_LIBDIR="@0@"'.format(pkglibdir), +] + +libpluma = static_library( + 'pluma', + sources: libpluma_c_files + pluma_enum_types, + include_directories: [root_inc, pluma_inc, pluma_dialogs_inc], + dependencies: pluma_deps + [mate_submodules_dep], + link_with: [libdialogs], + c_args: pluma_cflags, + install: false, +) + +pluma_bin = executable( + 'pluma', + sources: 'pluma.c', + include_directories: [root_inc, pluma_inc], + dependencies: pluma_deps + [mate_submodules_dep], + link_with: libpluma, + c_args: pluma_cflags, + export_dynamic: true, + install: true, + install_dir: bindir, +) + +install_data( + 'pluma.about', + install_dir: pkgdatadir, +) +install_data( + 'pluma-ui.xml', + 'pluma-print-preferences.ui', + install_dir: join_paths(pkgdatadir, 'ui'), +) + +if have_introspection + pluma_gir = gnome.generate_gir( + pluma_bin, + sources: libpluma_inst_headers + libpluma_c_files + pluma_enum_types, + namespace: 'Pluma', + nsversion: '1.0', + symbol_prefix: 'pluma', + identifier_prefix: 'Pluma', + export_packages: 'pluma', + includes: ['GObject-2.0', 'Gtk-3.0', 'GtkSource-4'], + extra_args: ['--warn-all', '-I' + meson.current_source_dir()], + install: true, + install_dir_gir: join_paths(datadir, 'gir-1.0'), + install_dir_typelib: join_paths(libdir, 'girepository-1.0'), + ) +endif diff --git a/po/meson.build b/po/meson.build new file mode 100644 index 00000000..3d8796d1 --- /dev/null +++ b/po/meson.build @@ -0,0 +1 @@ +i18n.gettext('pluma', preset: 'glib') diff --git a/subprojects/mate-submodules.wrap b/subprojects/mate-submodules.wrap new file mode 100644 index 00000000..0463bf51 --- /dev/null +++ b/subprojects/mate-submodules.wrap @@ -0,0 +1,9 @@ +[wrap-git] +directory =mate-submodules +url=https://github.com/mate-desktop/mate-submodules.git +push-url=ssh://[email protected]:mate-desktop/mate-submodules.git +revision=master +depth=1 + +[provide] +libegg = libegg_dep diff --git a/tests/document-saver.c b/tests/document-saver.c index 3f012c19..d327eeb4 100644 --- a/tests/document-saver.c +++ b/tests/document-saver.c @@ -154,7 +154,11 @@ mount_ready_callback (GObject *object, } else { - g_assert_no_error (error); + mount_success = FALSE; + if (error) + { + g_error_free (error); + } } mount_completed = TRUE; @@ -223,7 +227,16 @@ test_saver (const gchar *filename_or_uri, uri = g_file_get_uri (file); existed = g_file_query_exists (file, NULL); - ensure_mounted (file); + if (!ensure_mounted (file)) + { + g_test_skip ("Remote mount unavailable"); + + g_free (uri); + g_object_unref (file); + saver_test_data_free (data); + g_object_unref (document); + return; + } pluma_document_save_as (document, uri, pluma_encoding_get_utf8 (), save_flags); @@ -408,6 +421,13 @@ test_permissions (const gchar *uri, GFileInfo *info; guint mode; + if (!ensure_mounted (file)) + { + g_test_skip ("Remote mount unavailable"); + g_object_unref (file); + return; + } + g_file_delete (file, NULL, NULL); stream = g_file_create (file, 0, NULL, &error); diff --git a/tests/meson.build b/tests/meson.build new file mode 100644 index 00000000..e600ca36 --- /dev/null +++ b/tests/meson.build @@ -0,0 +1,27 @@ +test_targets = { + 'smart-converter': 'smart-converter.c', + 'document-input-stream': 'document-input-stream.c', + 'document-output-stream': 'document-output-stream.c', + 'document-loader': 'document-loader.c', + 'document-saver': 'document-saver.c', +} + +test_env = environment() +test_env.set('GSETTINGS_SCHEMA_DIR', gsettings_schema_builddir) + +foreach t, src : test_targets + test_exe = executable( + t, + sources: src, + include_directories: [root_inc, pluma_inc], + dependencies: pluma_deps, + link_with: libpluma, + c_args: pluma_cflags, + ) + test( + t, + test_exe, + env: test_env, + depends: gsettings_schema_target, + ) +endforeach |
