gimp/pdb/meson.build

199 lines
3.9 KiB
Meson
Raw Normal View History

2017-11-01 21:27:13 +08:00
pdbgen_backup = false
pdbgen_groups = false
pdb_names = [
'brush_select',
'brush',
'brushes',
'buffer',
'channel',
'context',
'debug',
'display',
'drawable_color',
'drawable_edit',
'drawable',
'dynamics',
'edit',
'file',
2017-11-01 21:27:13 +08:00
'floating_sel',
'font_select',
'fonts',
'gimp',
'gimprc',
'gradient_select',
'gradient',
'gradients',
'help',
'image_color_profile',
'image_convert',
'image_grid',
'image_guides',
'image_sample_points',
'image_select',
'image_transform',
'image_undo',
'image',
'item_transform',
'item',
'layer',
'message',
'paint_tools',
'palette_select',
'palette',
'palettes',
'pattern_select',
'pattern',
'patterns',
'pdb',
'plug_in_compat',
'plug_in',
'progress',
'selection',
'text_layer',
'text_tool',
'unit',
'vectors',
]
pdb_sources = []
foreach name : pdb_names
pdb_sources += files('groups' / name + '.pdb')
endforeach
enum_headers = [
meson.source_root() + '/libgimpbase/gimpbaseenums.h',
meson.source_root() + '/libgimpconfig/gimpconfigenums.h',
meson.source_root() + '/app/operations/operations-enums.h',
meson.source_root() + '/app/core/core-enums.h',
meson.source_root() + '/app/paint/paint-enums.h'
2017-11-01 21:27:13 +08:00
]
# Perl environment
perlsrcdir = meson.current_source_dir()
perlbindir = meson.current_build_dir()
perl_env = [
'PDBGEN_BACKUP=' + (pdbgen_backup ? '1' : '0'),
'PDBGEN_GROUPS=' + (pdbgen_groups ? '1' : '0'),
'rootme=' + perlbindir,
'srcdir=' + perlsrcdir,
'destdir=' + meson.build_root(),
'builddir=' + meson.build_root(),
]
perl_opts = [
2017-11-01 21:27:13 +08:00
perl,
'-I', perlbindir,
'-I', perlsrcdir,
]
groups_pl_content = '# This file is autogenerated\n'
groups_pl_content += '@groups = qw(\n'
foreach source : pdb_names
groups_pl_content += ' '+ source +'\n'
endforeach
groups_pl_content += ');\n'
# All perl files
groups_pl = custom_target('groups.pl',
input : [ ],
output: [ 'groups.pl', ],
command: [ 'echo', groups_pl_content, ],
capture: true,
)
pdbgen_run = find_program('meson-pdbgen.sh')
if meson.version().version_compare('>=0.57.0')
enums_pl = custom_target('enums.pl',
input : [ 'enumgen.pl', 'enums-external.pl', enum_headers, ],
output: [ 'enums.pl', ],
env: perl_env,
command: [
perl, '@INPUT0@',
enum_headers,
],
)
pdbgen = custom_target('stamp-pdbgen.h',
input : [
files(
'meson-pdbgen.sh',
'pdbgen.pl',
'app.pl',
'lib.pl',
'pdb.pl',
'stddefs.pdb',
'util.pl',
),
enums_pl,
groups_pl,
pdb_sources,
],
output: [ 'stamp-pdbgen.h', ],
env: perl_env,
command: [
pdbgen_run, perl, meson.source_root(), meson.build_root()
],
)
stamp_enumcode = custom_target('stamp-enum-code',
input : [ 'enumcode.pl', ],
output: [ 'stamp-enum-code', ],
env: perl_env,
command: [
perl_opts, '@INPUT0@',
],
)
else
# TODO: remove this workaround when we bump meson requirement to >= 0.57.0
# See MR !506.
# In the meantime, make sure the 2 if/else blocks are well synced.
env = find_program('env')
enums_pl = custom_target('enums.pl',
input : [ 'enumgen.pl', 'enums-external.pl', enum_headers, ],
output: [ 'enums.pl', ],
command: [
env, perl_env, perl_opts, '@INPUT0@',
enum_headers,
],
)
pdbgen = custom_target('stamp-pdbgen.h',
input : [
files(
'meson-pdbgen.sh',
'pdbgen.pl',
'app.pl',
'lib.pl',
'pdb.pl',
'stddefs.pdb',
'util.pl',
),
enums_pl,
groups_pl,
pdb_sources,
],
output: [ 'stamp-pdbgen.h', ],
command: [
env, perl_env, pdbgen_run, perl, meson.source_root(), meson.build_root()
],
)
stamp_enumcode = custom_target('stamp-enum-code',
input : [ 'enumcode.pl', ],
output: [ 'stamp-enum-code', ],
command: [
env, perl_env, perl_opts, '@INPUT0@',
],
)
endif