201 lines
4.0 KiB
Meson
201 lines
4.0 KiB
Meson
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',
|
|
'floating_sel',
|
|
'font',
|
|
'font_select',
|
|
'fonts',
|
|
'pika',
|
|
'pikarc',
|
|
'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',
|
|
'resource',
|
|
'selection',
|
|
'text_layer',
|
|
'text_tool',
|
|
'unit',
|
|
'vectors',
|
|
]
|
|
|
|
pdb_sources = []
|
|
foreach name : pdb_names
|
|
pdb_sources += files('groups' / name + '.pdb')
|
|
endforeach
|
|
|
|
|
|
enum_headers = [
|
|
meson.project_source_root() + '/libpikabase/pikabaseenums.h',
|
|
meson.project_source_root() + '/libpikaconfig/pikaconfigenums.h',
|
|
meson.project_source_root() + '/app/operations/operations-enums.h',
|
|
meson.project_source_root() + '/app/core/core-enums.h',
|
|
meson.project_source_root() + '/app/paint/paint-enums.h'
|
|
]
|
|
|
|
# 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.project_build_root(),
|
|
'builddir=' + meson.project_build_root(),
|
|
]
|
|
perl_opts = [
|
|
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.project_source_root(), meson.project_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.project_source_root(), meson.project_build_root()
|
|
],
|
|
)
|
|
|
|
|
|
stamp_enumcode = custom_target('stamp-enum-code',
|
|
input : [ 'enumcode.pl', ],
|
|
output: [ 'stamp-enum-code', ],
|
|
command: [
|
|
env, perl_env, perl_opts, '@INPUT0@',
|
|
],
|
|
)
|
|
endif
|