gplugin/gplugin

Make GPluginFileSource public

2 months ago, Gary Kramlich
7d9e362672b7
Make GPluginFileSource public

This also adds api for managing the paths it looks at. Currently GPluginManager
forwards the existing API to these new methods.

Testing Done:
Ran with the turtles.

Reviewed at https://reviews.imfreedom.org/r/2982/
###############################################################################
# Project Info
###############################################################################
project('gplugin', 'c',
license : 'LGPL-2.0-or-later',
version : '0.43.0-dev',
meson_version : '>=0.61.0',
default_options : ['c_std=c17', 'warning_level=2'])
parts = meson.project_version().split('-')
if parts.length() > 1
extra = parts[1]
else
extra = ''
endif
parts = parts[0].split('.')
GPLUGIN_MAJOR_VERSION = parts[0]
GPLUGIN_MINOR_VERSION = parts[1]
GPLUGIN_MICRO_VERSION = parts[2]
GPLUGIN_EXTRA_VERSION = extra
GPLUGIN_VERSION = meson.project_version()
version_conf = configuration_data()
version_conf.set('GPLUGIN_MAJOR_VERSION', GPLUGIN_MAJOR_VERSION)
version_conf.set('GPLUGIN_MINOR_VERSION', GPLUGIN_MINOR_VERSION)
version_conf.set('GPLUGIN_MICRO_VERSION', GPLUGIN_MICRO_VERSION)
version_conf.set('GPLUGIN_EXTRA_VERSION', GPLUGIN_EXTRA_VERSION)
version_conf.set('GPLUGIN_VERSION', GPLUGIN_VERSION)
###############################################################################
# Dependencies
###############################################################################
gnome = import('gnome')
pkgconfig = import('pkgconfig')
if get_option('help2man')
help2man = find_program('help2man')
endif
GLIB = dependency('glib-2.0', version : '>=2.76.0')
GIO = dependency('gio-2.0')
GOBJECT = dependency('gobject-2.0')
# we separate gmodule out so our test aren't linked to it
GMODULE = dependency('gmodule-2.0')
add_project_arguments(
'-DGLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_76',
'-DGLIB_VERSION_MAX_ALLOWED=GLIB_VERSION_2_76',
language : 'c',
)
###############################################################################
# devenv
#
# This sets up the meson devenv stuff. See
# https://mesonbuild.com/Commands.html#devenv for more information.
###############################################################################
devenv = environment()
config_home = get_option('devenv-config-dir')
if config_home == ''
config_home = meson.project_build_root() / 'config'
endif
devenv.set('XDG_CONFIG_HOME', config_home)
meson.add_devenv(devenv)
###############################################################################
# NLS
###############################################################################
GETTEXT_PACKAGE = 'gplugin'
LOCALE_DIR = get_option('prefix') / get_option('localedir')
add_project_arguments(f'-DLOCALEDIR="@LOCALE_DIR@"', language : 'c')
add_project_arguments(f'-DGETTEXT_PACKAGE="@GETTEXT_PACKAGE@"', language : 'c')
if get_option('nls')
i18n = import('i18n')
endif
###############################################################################
# Build Info
###############################################################################
compiler = meson.get_compiler('c')
add_project_arguments(
'-DPREFIX="@0@"'.format(get_option('prefix')),
'-DLIBDIR="@0@"'.format(get_option('libdir')),
'-DGPLUGIN_WEBSITE="https://keep.imfreedom.org/gplugin/gplugin"',
language : 'c'
)
if compiler.has_argument('-Wformat')
add_project_arguments('-Wformat', language : 'c')
if compiler.has_multi_arguments(['-Wformat', '-Werror=format-security'])
add_project_arguments('-Werror=format-security', language : 'c')
endif
endif
toplevel_inc = include_directories('.')
###############################################################################
# Documentation
###############################################################################
if get_option('doc') and not get_option('introspection')
error('Documentation requires GObject Introspection.')
endif
dependency(
'gi-docgen', version: '>= 2021.1',
fallback: ['gi-docgen', 'dummy_dep'],
required: get_option('doc')
)
gidocgen = find_program('gi-docgen', required : get_option('doc'))
docs_dir = get_option('prefix') / get_option('datadir') / 'doc'
doc_targets = []
###############################################################################
# Subdirectories
###############################################################################
subdir('gplugin')
subdir('gplugin-introspection')
subdir('gplugin-gtk4')
subdir('gplugin-gtk4-viewer', if_found: GTK4)
subdir('gplugin-query')
subdir('po')
subdir('lua')
subdir('python3')
subdir('vala')
if get_option('doc')
alias_target('doc', doc_targets)
endif
if meson.backend() == 'ninja'
run_target('turtles',
command : ['ninja', '-C', '@BUILD_ROOT@', 'gplugin-pot', 'all', 'test'])
endif
###############################################################################
# Install stuff
###############################################################################
# documentation
install_data('ChangeLog', 'INSTALL.md', 'README.md', 'HACKING.md',
install_dir : get_option('datadir') / 'doc' / 'gplugin')
summary({
'api reference' : get_option('doc'),
'GTK4 widgets' : GTK4,
'man pages' : get_option('help2man'),
}, bool_yn : true, section : 'Miscellaneous')
summary({
'introspection' : get_option('introspection'),
'vapi' : get_option('vapi'),
}, bool_yn : true, section : 'Bindings')