PIKApp/pdb/meson.build

165 lines
3.3 KiB
Meson

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,
)