pdbgen_backup = false pdbgen_groups = false pdb_names = [ 'brush_select', 'brush', 'brushes', 'buffer', 'channel', 'context', 'debug', 'display', 'drawable_color', 'drawable_edit', 'drawable_select', '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(), 'topsrcdir=' + meson.project_source_root(), ] 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, ) enumgen_run = find_program('meson-enumgen.sh') pdbgen_run = find_program('meson-pdbgen.sh') enumcode_run = find_program('meson-enumcode.sh') enums_pl = custom_target('enums.pl', input : [ 'meson-enumgen.sh', 'enumgen.pl', 'enums-external.pl', enum_headers, ], output: [ 'stamp-enumgen.h', ], env: perl_env, command: [ enumgen_run, perl, meson.project_source_root(), meson.project_build_root(), enum_headers, ], build_by_default: true, ) 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() ], build_by_default: true, ) stamp_enumcode = custom_target('pikaenums.h', input : [ files( 'meson-enumcode.sh', 'enumcode.pl', 'enumgen.pl', 'util.pl', ), enums_pl, enum_headers, ], output: [ 'stamp-enumcode.h', ], env: perl_env, command: [ enumcode_run, perl, meson.project_source_root(), meson.project_build_root() ], build_by_default: true, )