Initial checkin of Pika from heckimp
This commit is contained in:
108
menus/meson.build
Normal file
108
menus/meson.build
Normal file
@ -0,0 +1,108 @@
|
||||
menus_dir = prefix / pikadatadir / 'menus'
|
||||
|
||||
ui_menus_files = files(
|
||||
'app-menu.ui',
|
||||
'brush-editor-menu.ui',
|
||||
'brushes-menu.ui',
|
||||
'buffers-menu.ui',
|
||||
'channels-menu.ui',
|
||||
'colormap-menu.ui',
|
||||
'cursor-info-menu.ui',
|
||||
'dashboard-menu.ui',
|
||||
'documents-menu.ui',
|
||||
'dynamics-editor-menu.ui',
|
||||
'dynamics-menu.ui',
|
||||
'error-console-menu.ui',
|
||||
'fonts-menu.ui',
|
||||
'gradient-editor-menu.ui',
|
||||
'gradients-menu.ui',
|
||||
'images-menu.ui',
|
||||
'layers-menu.ui',
|
||||
'mypaint-brushes-menu.ui',
|
||||
'palette-editor-menu.ui',
|
||||
'palettes-menu.ui',
|
||||
'patterns-menu.ui',
|
||||
'quick-mask-menu.ui',
|
||||
'sample-points-menu.ui',
|
||||
'selection-menu.ui',
|
||||
'templates-menu.ui',
|
||||
'text-editor-toolbar.ui',
|
||||
'text-tool-menu.ui',
|
||||
'tool-options-menu.ui',
|
||||
'tool-preset-editor-menu.ui',
|
||||
'tool-presets-menu.ui',
|
||||
'undo-menu.ui',
|
||||
'vector-toolpath-menu.ui',
|
||||
'vectors-menu.ui',
|
||||
)
|
||||
|
||||
install_data(ui_menus_files,
|
||||
install_dir: menus_dir,
|
||||
)
|
||||
|
||||
unstable_menus_args = stable ? [] : [ '--stringparam', 'unstable-menus', 'yes' ]
|
||||
|
||||
menus_ui_built_files = []
|
||||
foreach menu_filegen : [ 'dockable-menu.ui', 'image-menu.ui', ]
|
||||
# This does look a bit overly complicated, but I encountered 2 issues:
|
||||
# 1. The simpler solution was to do first the custom_target() then a single
|
||||
# configure_file() per file. It didn't work out because of meson complex
|
||||
# dependency logic (see https://github.com/mesonbuild/meson/issues/8123).
|
||||
# 2. So I inverted, but now xsltproc was the one acting up by adding the
|
||||
# 'xml:base' attribute when the included and including XML files are in
|
||||
# different folders. This is why I added a second configure_file() to have
|
||||
# both XML files in the same folder.
|
||||
conf = configuration_data()
|
||||
if menu_filegen == 'dockable-menu.ui'
|
||||
group = 'dockable'
|
||||
else
|
||||
group = 'dialogs'
|
||||
endif
|
||||
conf.set('GROUP', group)
|
||||
included_file = configure_file(
|
||||
input: 'dialogs-menuitems.ui.in',
|
||||
output: group + '-dialogs-menuitems.ui',
|
||||
configuration: conf,
|
||||
)
|
||||
|
||||
pre_built_file = configure_file(
|
||||
input: menu_filegen + '.in.in',
|
||||
output: menu_filegen + '.in',
|
||||
configuration: conf,
|
||||
)
|
||||
|
||||
menus_ui_built_files += custom_target(menu_filegen,
|
||||
input : [ pre_built_file, 'menus.xsl', included_file],
|
||||
output: [ menu_filegen ],
|
||||
command: [
|
||||
xsltproc,
|
||||
'--xinclude',
|
||||
unstable_menus_args,
|
||||
'--path',
|
||||
meson.current_build_dir(),
|
||||
'--output', '@OUTPUT@',
|
||||
'@INPUT1@',
|
||||
'@INPUT0@',
|
||||
],
|
||||
install: true,
|
||||
install_dir: menus_dir,
|
||||
)
|
||||
endforeach
|
||||
|
||||
if xmllint.found()
|
||||
# XXX: no DTD validation as GtkBuilder UI format does not have a DTD (as far as
|
||||
# we could find).
|
||||
custom_target('validate_ui_menus',
|
||||
command: [
|
||||
xmllint,
|
||||
'--output', '@OUTPUT@',
|
||||
'--path', meson.current_source_dir(),
|
||||
ui_menus_files, menus_ui_built_files
|
||||
],
|
||||
# The output file is only useful as a flag file, so that the command
|
||||
# knows if it has been run already.
|
||||
output: [ 'validate_ui_menus-output.xml' ],
|
||||
build_by_default: true,
|
||||
install: false
|
||||
)
|
||||
endif
|
||||
Reference in New Issue
Block a user