mirror of https://github.com/GNOME/gimp.git
614 lines
15 KiB
Meson
614 lines
15 KiB
Meson
# Similarly to libgimpthumb/gimpthumb-enums.c, libgimp/gimpenums.c is
|
|
# not versionned so we don't use the mkenums_wrap.
|
|
# Moreover it is generated in 2 steps, first with common mkenums
|
|
# arguments, then concatenating with a "tail" file.
|
|
gimpenums_notail = custom_target('gimpenums.c.notail',
|
|
input : [ 'gimpenums.h', stamp_enumcode],
|
|
output: [ 'gimpenums.c.notail', ],
|
|
command: [
|
|
gimp_mkenums,
|
|
'--fhead','#include "config.h"\n'
|
|
+ '#include <gio/gio.h>\n'
|
|
+ '#include <gegl.h>\n'
|
|
+ '#undef GIMP_DISABLE_DEPRECATED\n'
|
|
+ '#include "libgimpbase/gimpbase.h"\n'
|
|
+ '#include "libgimpbase/gimpbase-private.h"\n'
|
|
+ '#include "libgimpconfig/gimpconfigenums.h"\n'
|
|
+ '#include "pdb/stamp-enumcode.h"\n'
|
|
+ '#include "gimpenums.h"\n',
|
|
'--fprod',
|
|
'/* enumerations from "@basename@" */',
|
|
'--vhead',
|
|
'GType\n'+
|
|
'@enum_name@_get_type (void)\n'+
|
|
'{\n'+
|
|
' static const G@Type@Value values[] =\n'+
|
|
' {',
|
|
'--vprod',
|
|
' { @VALUENAME@, "@VALUENAME@", "@valuenick@" },',
|
|
'--vtail',
|
|
' { 0, NULL, NULL }\n'+
|
|
' };\n',
|
|
'--dhead',
|
|
' static const Gimp@Type@Desc descs[] =\n'+
|
|
' {',
|
|
'--dprod',
|
|
' { @VALUENAME@, @valuedesc@, @valuehelp@ },'+
|
|
'@if (\'@valueabbrev@\' ne \'NULL\')@\n'+
|
|
' /* Translators: this is an abbreviated version of @valueudesc@.\n'+
|
|
' Keep it short. */\n'+
|
|
' { @VALUENAME@, @valueabbrev@, NULL },'+
|
|
'@endif@',
|
|
'--dtail',
|
|
libgimp_mkenums_dtails,
|
|
'@INPUT0@',
|
|
],
|
|
capture: true,
|
|
)
|
|
|
|
gimpenums = custom_target('gimpenums.c',
|
|
input : [ gimpenums_notail, 'gimpenums.c.tail', ],
|
|
output: [ 'gimpenums.c', ],
|
|
command: [ 'cat', '@INPUT@' ],
|
|
capture: true,
|
|
)
|
|
|
|
gimpuimarshal = gnome.genmarshal('gimpuimarshal',
|
|
prefix: '_gimpui_marshal',
|
|
sources: 'gimpuimarshal.list',
|
|
install_header: false,
|
|
)
|
|
|
|
pdb_wrappers_sources = [
|
|
'gimp_pdb.c',
|
|
'gimpbrush_pdb.c',
|
|
'gimpbrushes_pdb.c',
|
|
'gimpbrushselect_pdb.c',
|
|
'gimpbuffer_pdb.c',
|
|
'gimpchannel_pdb.c',
|
|
'gimpcontext_pdb.c',
|
|
'gimpdebug_pdb.c',
|
|
'gimpdisplay_pdb.c',
|
|
'gimpdrawable_pdb.c',
|
|
'gimpdrawablecolor_pdb.c',
|
|
'gimpdrawableedit_pdb.c',
|
|
'gimpdrawableselect_pdb.c',
|
|
'gimpdynamics_pdb.c',
|
|
'gimpedit_pdb.c',
|
|
'gimpfile_pdb.c',
|
|
'gimpfloatingsel_pdb.c',
|
|
'gimpfont_pdb.c',
|
|
'gimpfonts_pdb.c',
|
|
'gimpfontselect_pdb.c',
|
|
'gimpgimprc_pdb.c',
|
|
'gimpgradient_pdb.c',
|
|
'gimpgradients_pdb.c',
|
|
'gimpgradientselect_pdb.c',
|
|
'gimpgrouplayer_pdb.c',
|
|
'gimphelp_pdb.c',
|
|
'gimpimage_pdb.c',
|
|
'gimpimagecolorprofile_pdb.c',
|
|
'gimpimageconvert_pdb.c',
|
|
'gimpimagegrid_pdb.c',
|
|
'gimpimageguides_pdb.c',
|
|
'gimpimagesamplepoints_pdb.c',
|
|
'gimpimageselect_pdb.c',
|
|
'gimpimagetransform_pdb.c',
|
|
'gimpimageundo_pdb.c',
|
|
'gimpitem_pdb.c',
|
|
'gimpitemtransform_pdb.c',
|
|
'gimplayer_pdb.c',
|
|
'gimpmessage_pdb.c',
|
|
'gimppainttools_pdb.c',
|
|
'gimppalette_pdb.c',
|
|
'gimppalettes_pdb.c',
|
|
'gimppaletteselect_pdb.c',
|
|
'gimppath_pdb.c',
|
|
'gimppattern_pdb.c',
|
|
'gimppatterns_pdb.c',
|
|
'gimppatternselect_pdb.c',
|
|
'gimpprogress_pdb.c',
|
|
'gimpresource_pdb.c',
|
|
'gimpselection_pdb.c',
|
|
'gimptextlayer_pdb.c',
|
|
'gimptexttool_pdb.c',
|
|
'gimpunit_pdb.c',
|
|
]
|
|
|
|
pdb_wrappers_headers = [
|
|
'gimp_pdb_headers.h',
|
|
'gimp_pdb.h',
|
|
'gimpbrush_pdb.h',
|
|
'gimpbrushes_pdb.h',
|
|
'gimpbrushselect_pdb.h',
|
|
'gimpbuffer_pdb.h',
|
|
'gimpchannel_pdb.h',
|
|
'gimpcontext_pdb.h',
|
|
'gimpdebug_pdb.h',
|
|
'gimpdisplay_pdb.h',
|
|
'gimpdrawable_pdb.h',
|
|
'gimpdrawablecolor_pdb.h',
|
|
'gimpdrawableedit_pdb.h',
|
|
'gimpdrawableselect_pdb.h',
|
|
'gimpdynamics_pdb.h',
|
|
'gimpedit_pdb.h',
|
|
'gimpfile_pdb.h',
|
|
'gimpfloatingsel_pdb.h',
|
|
'gimpfont_pdb.h',
|
|
'gimpfonts_pdb.h',
|
|
'gimpfontselect_pdb.h',
|
|
'gimpgimprc_pdb.h',
|
|
'gimpgradient_pdb.h',
|
|
'gimpgradients_pdb.h',
|
|
'gimpgradientselect_pdb.h',
|
|
'gimpgrouplayer_pdb.h',
|
|
'gimphelp_pdb.h',
|
|
'gimpimage_pdb.h',
|
|
'gimpimagecolorprofile_pdb.h',
|
|
'gimpimageconvert_pdb.h',
|
|
'gimpimagegrid_pdb.h',
|
|
'gimpimageguides_pdb.h',
|
|
'gimpimagesamplepoints_pdb.h',
|
|
'gimpimageselect_pdb.h',
|
|
'gimpimagetransform_pdb.h',
|
|
'gimpimageundo_pdb.h',
|
|
'gimpitem_pdb.h',
|
|
'gimpitemtransform_pdb.h',
|
|
'gimplayer_pdb.h',
|
|
'gimpmessage_pdb.h',
|
|
'gimppainttools_pdb.h',
|
|
'gimppalette_pdb.h',
|
|
'gimppalettes_pdb.h',
|
|
'gimppaletteselect_pdb.h',
|
|
'gimppath_pdb.h',
|
|
'gimppattern_pdb.h',
|
|
'gimppatterns_pdb.h',
|
|
'gimppatternselect_pdb.h',
|
|
'gimpprogress_pdb.h',
|
|
'gimpresource_pdb.h',
|
|
'gimpselection_pdb.h',
|
|
'gimptextlayer_pdb.h',
|
|
'gimptexttool_pdb.h',
|
|
'gimpunit_pdb.h',
|
|
]
|
|
|
|
libgimp_sources_introspectable = [
|
|
'gimp.c',
|
|
'gimpbatchprocedure.c',
|
|
'gimpbrush.c',
|
|
'gimpchannel.c',
|
|
'gimpdisplay.c',
|
|
'gimpdrawable.c',
|
|
'gimpexportoptions.c',
|
|
'gimpfileprocedure.c',
|
|
'gimpfont.c',
|
|
'gimpgimprc.c',
|
|
'gimpgradient.c',
|
|
'gimpgrouplayer.c',
|
|
'gimpimage.c',
|
|
'gimpimagecolorprofile.c',
|
|
'gimpimagemetadata.c',
|
|
'gimpimagemetadata-save.c',
|
|
'gimpimageprocedure.c',
|
|
'gimpitem.c',
|
|
'gimplayer.c',
|
|
'gimplayermask.c',
|
|
'gimploadprocedure.c',
|
|
'gimppalette.c',
|
|
'gimpparamspecs.c',
|
|
'gimppath.c',
|
|
'gimppattern.c',
|
|
'gimppdb.c',
|
|
'gimpplugin.c',
|
|
'gimpprocedure.c',
|
|
'gimpprocedure-params.c',
|
|
'gimpprocedureconfig.c',
|
|
'gimpprogress.c',
|
|
'gimpresource.c',
|
|
'gimpresourceselect.c',
|
|
'gimpexportprocedure.c',
|
|
'gimpselection.c',
|
|
'gimptextlayer.c',
|
|
'gimpthumbnailprocedure.c',
|
|
'gimpvectorloadprocedure.c',
|
|
gimpenums,
|
|
pdb_wrappers_sources,
|
|
]
|
|
|
|
libgimp_sources = [
|
|
libgimp_sources_introspectable,
|
|
'gimp-debug.c',
|
|
'gimp-shm.c',
|
|
'gimpgpparams.c',
|
|
'gimpparamspecs-desc.c',
|
|
'gimppdb_pdb.c',
|
|
'gimppdbprocedure.c',
|
|
'gimppixbuf.c',
|
|
'gimpplugin_pdb.c',
|
|
'gimptilebackendplugin.c',
|
|
]
|
|
|
|
libgimp_headers_introspectable = [
|
|
# Order matters. Leave these headers at the top.
|
|
'gimp.h',
|
|
'gimptypes.h',
|
|
'gimpenums.h',
|
|
|
|
# Other headers
|
|
'gimpbatchprocedure.h',
|
|
'gimpbrush.h',
|
|
'gimpchannel.h',
|
|
'gimpdisplay.h',
|
|
'gimpdrawable.h',
|
|
'gimpexportoptions.h',
|
|
'gimpfileprocedure.h',
|
|
'gimpfont.h',
|
|
'gimpgimprc.h',
|
|
'gimpgradient.h',
|
|
'gimpgrouplayer.h',
|
|
'gimpimage.h',
|
|
'gimpimagecolorprofile.h',
|
|
'gimpimagemetadata.h',
|
|
'gimpimageprocedure.h',
|
|
'gimpitem.h',
|
|
'gimplayer.h',
|
|
'gimplayermask.h',
|
|
'gimploadprocedure.h',
|
|
'gimppalette.h',
|
|
'gimpparamspecs.h',
|
|
'gimppath.h',
|
|
'gimppattern.h',
|
|
'gimppdb.h',
|
|
'gimpplugin.h',
|
|
'gimpprocedure.h',
|
|
'gimpprocedure-params.h',
|
|
'gimpprocedureconfig.h',
|
|
'gimpprogress.h',
|
|
'gimpresource.h',
|
|
'gimpresourceselect.h',
|
|
'gimpexportprocedure.h',
|
|
'gimpselection.h',
|
|
'gimptextlayer.h',
|
|
'gimpthumbnailprocedure.h',
|
|
'gimpvectorloadprocedure.h',
|
|
pdb_wrappers_headers,
|
|
]
|
|
|
|
libgimp_headers = [
|
|
libgimp_headers_introspectable,
|
|
]
|
|
|
|
libgimpui_sources_introspectable = [
|
|
'gimpaspectpreview.c',
|
|
'gimpbrushchooser.c',
|
|
'gimpdrawablechooser.c',
|
|
'gimpdrawablepreview.c',
|
|
'gimpfontchooser.c',
|
|
'gimpgradientchooser.c',
|
|
'gimpimagecombobox.c',
|
|
'gimpitemcombobox.c',
|
|
'gimppalettechooser.c',
|
|
'gimppatternchooser.c',
|
|
'gimpprocbrowserdialog.c',
|
|
'gimpproceduredialog.c',
|
|
'gimpprocview.c',
|
|
'gimpprogressbar.c',
|
|
'gimppropwidgets.c',
|
|
'gimpresourcechooser.c',
|
|
'gimpexportproceduredialog.c',
|
|
'gimpui.c',
|
|
'gimpzoompreview.c',
|
|
'gimpvectorloadproceduredialog.c',
|
|
]
|
|
|
|
libgimpui_sources = [
|
|
libgimpui_sources_introspectable,
|
|
gimpuimarshal,
|
|
|
|
# TODO: eventually move to libgimpwidgets.
|
|
'gimpresolutionentry-private.c'
|
|
]
|
|
|
|
libgimpui_headers_introspectable = [
|
|
# Order matters. Leave these headers at the top.
|
|
'gimpui.h',
|
|
'gimpuitypes.h',
|
|
|
|
# Other headers
|
|
'gimpaspectpreview.h',
|
|
'gimpbrushchooser.h',
|
|
'gimpdrawablechooser.h',
|
|
'gimpdrawablepreview.h',
|
|
'gimpfontchooser.h',
|
|
'gimpgradientchooser.h',
|
|
'gimpimagecombobox.h',
|
|
'gimpitemcombobox.h',
|
|
'gimppalettechooser.h',
|
|
'gimppatternchooser.h',
|
|
'gimpprocbrowserdialog.h',
|
|
'gimpproceduredialog.h',
|
|
'gimpprocview.h',
|
|
'gimpprogressbar.h',
|
|
'gimppropwidgets.h',
|
|
'gimpresourcechooser.h',
|
|
'gimpexportproceduredialog.h',
|
|
'gimpvectorloadproceduredialog.h',
|
|
'gimpzoompreview.h',
|
|
]
|
|
|
|
libgimp_introspectable = [
|
|
libgimp_sources_introspectable,
|
|
libgimp_headers_introspectable,
|
|
]
|
|
|
|
libgimpui_introspectable = [
|
|
libgimpui_sources_introspectable,
|
|
libgimpui_headers_introspectable,
|
|
]
|
|
|
|
|
|
libgimp = library('gimp-'+ gimp_api_version,
|
|
libgimp_sources,
|
|
include_directories: rootInclude,
|
|
dependencies: [
|
|
cairo,
|
|
gdk_pixbuf,
|
|
gegl,
|
|
gexiv2,
|
|
drmingw,
|
|
math,
|
|
pango,
|
|
pangoft2,
|
|
],
|
|
sources: [
|
|
pdbgen
|
|
],
|
|
c_args: [ '-DG_LOG_DOMAIN="LibGimp"', '-DGIMP_COMPILATION', ],
|
|
link_with: [
|
|
libgimpbase,
|
|
libgimpcolor,
|
|
libgimpconfig,
|
|
libgimpmodule,
|
|
],
|
|
vs_module_defs: 'gimp.def',
|
|
install: true,
|
|
version: so_version,
|
|
)
|
|
|
|
# Define an internal dependency for ease of reuse
|
|
libgimp_dep = declare_dependency(
|
|
dependencies: [
|
|
cairo,
|
|
gdk_pixbuf,
|
|
gegl,
|
|
],
|
|
link_with: [
|
|
libgimp,
|
|
libgimpbase,
|
|
libgimpcolor,
|
|
libgimpconfig,
|
|
libgimpmath,
|
|
libgimpmodule,
|
|
],
|
|
include_directories: rootInclude,
|
|
)
|
|
|
|
|
|
libgimpui = library('gimpui-'+ gimp_api_version,
|
|
libgimpui_sources,
|
|
dependencies: [
|
|
libgimp_dep,
|
|
gexiv2,
|
|
gtk3,
|
|
],
|
|
sources: [
|
|
pdbgen
|
|
],
|
|
c_args: [ '-DG_LOG_DOMAIN="LibGimpUI"', '-DGIMP_COMPILATION', ],
|
|
link_with: [
|
|
libgimpwidgets,
|
|
],
|
|
vs_module_defs: 'gimpui.def',
|
|
install: true,
|
|
version: so_version,
|
|
)
|
|
|
|
# Define an internal dependency for ease of reuse
|
|
libgimpui_dep = declare_dependency(
|
|
dependencies: [
|
|
libgimp_dep,
|
|
gtk3,
|
|
],
|
|
link_with: [
|
|
libgimpui,
|
|
libgimpwidgets,
|
|
],
|
|
include_directories: rootInclude,
|
|
)
|
|
|
|
|
|
install_headers(
|
|
libgimp_headers,
|
|
libgimpui_headers_introspectable,
|
|
subdir: gimp_api_name / 'libgimp',
|
|
)
|
|
|
|
|
|
|
|
### GObject introspection
|
|
|
|
libgimp_introspectable_files = [
|
|
libgimp_introspectable,
|
|
libgimpbase_introspectable,
|
|
libgimpcolor_introspectable,
|
|
libgimpconfig_introspectable,
|
|
libgimpmath_introspectable,
|
|
libgimpmodule_introspectable,
|
|
'gimpparamspecs-body.c'
|
|
]
|
|
|
|
libgimpui_introspectable_files = [
|
|
libgimpui_introspectable,
|
|
libgimpwidgets_introspectable,
|
|
]
|
|
|
|
if meson.is_cross_build() and not get_option('can-crosscompile-gir')
|
|
have_gobject_introspection = false
|
|
gobject_introspection_warning = '\n '.join(['',
|
|
'GObject Introspection is disabled while cross-compiling because',
|
|
'GI tools do not manage to properly generate introspection data',
|
|
'while cross-compiling. Nevertheless we consider our introspected',
|
|
'API as a core component of GIMP, thus you are expected to build',
|
|
'this data natively.',
|
|
'To forcefully build with GObject Introspection, set:',
|
|
'-Dcan-crosscompile-gir=true'
|
|
])
|
|
warning(gobject_introspection_warning)
|
|
warnings += gobject_introspection_warning
|
|
elif get_option('b_sanitize') != 'none'
|
|
have_gobject_introspection = false
|
|
gobject_introspection_warning = '\n '.join(['',
|
|
'GObject Introspection is disabled while building with a sanitizer.',
|
|
'See: https://gitlab.gnome.org/GNOME/gobject-introspection/-/issues/375'
|
|
])
|
|
warning(gobject_introspection_warning)
|
|
warnings += gobject_introspection_warning
|
|
else
|
|
have_gobject_introspection = true
|
|
libgimp_gir_includes = [
|
|
'Babl-0.1',
|
|
'cairo-1.0',
|
|
'GdkPixbuf-2.0',
|
|
'Gegl-0.4',
|
|
'Gio-2.0',
|
|
'GLib-2.0',
|
|
'GObject-2.0',
|
|
'Pango-1.0',
|
|
]
|
|
|
|
gir_args = [
|
|
'-DGIMP_COMPILATION',
|
|
'-DGIMP_BASE_COMPILATION',
|
|
'-DGIMP_COLOR_COMPILATION',
|
|
'-DGIMP_CONFIG_COMPILATION',
|
|
'-DGIMP_MATH_COMPILATION',
|
|
'-DGIMP_MODULE_COMPILATION',
|
|
'-DGIMP_THUMB_COMPILATION',
|
|
'-DGIMP_WIDGETS_COMPILATION',
|
|
'--quiet',
|
|
]
|
|
|
|
libgimp_gir = gnome.generate_gir(
|
|
libgimp,
|
|
libgimpbase,
|
|
libgimpcolor,
|
|
libgimpconfig,
|
|
libgimpmath,
|
|
libgimpmodule,
|
|
|
|
sources: libgimp_introspectable_files,
|
|
nsversion: gimp_api_version,
|
|
namespace: 'Gimp',
|
|
identifier_prefix: 'Gimp',
|
|
symbol_prefix: 'gimp',
|
|
export_packages: 'gimp-' + gimp_api_version,
|
|
header: 'libgimp/gimp.h',
|
|
includes: libgimp_gir_includes,
|
|
extra_args: gir_args,
|
|
include_directories: rootInclude,
|
|
install: true,
|
|
)
|
|
|
|
libgimpui_gir = gnome.generate_gir(
|
|
libgimpui,
|
|
libgimpwidgets,
|
|
|
|
sources: libgimpui_introspectable_files,
|
|
nsversion: gimp_api_version,
|
|
namespace: 'GimpUi',
|
|
identifier_prefix: 'Gimp',
|
|
symbol_prefix: [ 'gimp_ui', 'gimp' ],
|
|
export_packages: 'gimp-ui-' + gimp_api_version,
|
|
header: 'libgimp/gimpui.h',
|
|
includes: [ libgimp_gir_includes, 'Gtk-3.0', libgimp_gir[0] ],
|
|
extra_args: gir_args,
|
|
include_directories: rootInclude,
|
|
install: true,
|
|
)
|
|
|
|
if platform_osx
|
|
g_ir_compiler = find_program('g-ir-compiler')
|
|
gimp_exe_typelib = custom_target('macos-typelib.stamp',
|
|
output: [ 'macos-typelib.stamp' ],
|
|
command: [
|
|
'make-in-build-typelib.sh', libgimp_gir, libgimpui_gir,
|
|
meson.current_build_dir(), prefix, g_ir_compiler
|
|
],
|
|
build_by_default: true)
|
|
endif
|
|
|
|
if have_vala
|
|
vapi_deps = [
|
|
'babl-0.1',
|
|
'cairo-1.0',
|
|
'gdk-pixbuf-2.0',
|
|
'gegl-0.4',
|
|
'gio-2.0',
|
|
'glib-2.0',
|
|
'gobject-2.0',
|
|
'gtk+-3.0',
|
|
]
|
|
|
|
libgimp_vapi = gnome.generate_vapi('gimp-' + gimp_api_version,
|
|
sources: libgimp_gir[0],
|
|
packages: vapi_deps,
|
|
install: true,
|
|
)
|
|
|
|
libgimpui_vapi = gnome.generate_vapi('gimp-ui-' + gimp_api_version,
|
|
sources: libgimpui_gir[0],
|
|
packages: vapi_deps + [ libgimp_vapi ],
|
|
install: true,
|
|
)
|
|
endif
|
|
endif
|
|
|
|
if not platform_windows and not platform_osx
|
|
# Verify .def files for Windows.
|
|
# Ironically we only check this on non-Windows platform, since the
|
|
# script expects .so libraries, and I'm not sure that the `nm` tool is
|
|
# available on Windows.
|
|
# On the other hand, it is how it always has been, since we used to
|
|
# only run this on dist step (which we historically run on a GNU/Linux
|
|
# machine). And it worked fine until now.
|
|
custom_target('check-def-files',
|
|
input: [
|
|
'../libgimpbase/gimpbase.def',
|
|
'../libgimpcolor/gimpcolor.def',
|
|
'../libgimpconfig/gimpconfig.def',
|
|
'../libgimp/gimp.def',
|
|
'../libgimp/gimpui.def',
|
|
'../libgimpmath/gimpmath.def',
|
|
'../libgimpmodule/gimpmodule.def',
|
|
'../libgimpthumb/gimpthumb.def',
|
|
'../libgimpwidgets/gimpwidgets.def',
|
|
],
|
|
depends: [
|
|
libgimpbase,
|
|
libgimpcolor,
|
|
libgimpconfig,
|
|
libgimp,
|
|
libgimpui,
|
|
libgimpmath,
|
|
libgimpmodule,
|
|
libgimpthumb,
|
|
libgimpwidgets
|
|
],
|
|
output: [ 'check-def-files', ],
|
|
command: [
|
|
python, meson.project_source_root() / 'tools' / 'defcheck.py', meson.project_source_root(),
|
|
],
|
|
build_by_default: true,
|
|
)
|
|
endif
|