diff --git a/meson.build b/meson.build index 16b2e86646..82f2782673 100644 --- a/meson.build +++ b/meson.build @@ -2681,6 +2681,20 @@ gen_export_kwargs = { +### +### Helpers for custom targets used across the tree +### + +catalog_pm = files('src/backend/catalog/Catalog.pm') +perfect_hash_pm = files('src/tools/PerfectHash.pm') +gen_kwlist_deps = [perfect_hash_pm] +gen_kwlist_cmd = [ + perl, '-I', '@SOURCE_ROOT@/src/tools', + files('src/tools/gen_keywordlist.pl'), + '--output', '@OUTDIR@', '@INPUT@'] + + + ### ### windows resources related stuff ### diff --git a/src/common/meson.build b/src/common/meson.build index 41bd58ebdf..9efc80ac02 100644 --- a/src/common/meson.build +++ b/src/common/meson.build @@ -54,8 +54,8 @@ endif common_kwlist = custom_target('kwlist', input: files('../include/parser/kwlist.h'), output: 'kwlist_d.h', - command: [perl, '-I', '@SOURCE_ROOT@/src/tools', files('../tools/gen_keywordlist.pl'), - '--extern', '--output', '@OUTDIR@', '@INPUT@']) + depend_files: gen_kwlist_deps, + command: [gen_kwlist_cmd, '--extern']) generated_sources += common_kwlist common_sources += common_kwlist diff --git a/src/common/unicode/meson.build b/src/common/unicode/meson.build index 1ffece1550..9033c4a3dc 100644 --- a/src/common/unicode/meson.build +++ b/src/common/unicode/meson.build @@ -28,6 +28,7 @@ update_unicode_targets += \ custom_target('unicode_norm_table.h', input: [unicode_data['UnicodeData.txt'], unicode_data['CompositionExclusions.txt']], output: ['unicode_norm_table.h', 'unicode_norm_hashfunc.h'], + depend_files: perfect_hash_pm, command: [ perl, files('generate-unicode_norm_table.pl'), '--outdir', '@OUTDIR@', '@INPUT@'], @@ -38,6 +39,7 @@ update_unicode_targets += \ custom_target('unicode_nonspacing_table.h', input: [unicode_data['UnicodeData.txt']], output: ['unicode_nonspacing_table.h'], + depend_files: perfect_hash_pm, command: [perl, files('generate-unicode_nonspacing_table.pl'), '@INPUT@'], build_by_default: false, capture: true, @@ -56,6 +58,7 @@ update_unicode_targets += \ custom_target('unicode_normprops_table.h', input: [unicode_data['DerivedNormalizationProps.txt']], output: ['unicode_normprops_table.h'], + depend_files: perfect_hash_pm, command: [perl, files('generate-unicode_normprops_table.pl'), '@INPUT@'], build_by_default: false, capture: true, diff --git a/src/include/catalog/meson.build b/src/include/catalog/meson.build index 3179be09d3..c3fd05d027 100644 --- a/src/include/catalog/meson.build +++ b/src/include/catalog/meson.build @@ -111,7 +111,7 @@ generated_catalog_headers = custom_target('generated_catalog_headers', output: output_files, install_dir: output_install, input: input, - depend_files: bki_data_f, + depend_files: bki_data_f + catalog_pm, build_by_default: true, install: true, command: [ diff --git a/src/include/nodes/meson.build b/src/include/nodes/meson.build index 9a8e85c4a5..626dc696d5 100644 --- a/src/include/nodes/meson.build +++ b/src/include/nodes/meson.build @@ -50,6 +50,7 @@ node_support_install = [ generated_nodes = custom_target('nodetags.h', input: node_support_input, output: node_support_output, + depend_files: catalog_pm, command: [ perl, files('../../backend/nodes/gen_node_support.pl'), '-o', '@OUTDIR@', diff --git a/src/include/utils/meson.build b/src/include/utils/meson.build index 2fed1e3f8e..c212c4091f 100644 --- a/src/include/utils/meson.build +++ b/src/include/utils/meson.build @@ -44,6 +44,7 @@ fmgrtab_output = ['fmgroids.h', 'fmgrprotos.h', 'fmgrtab.c'] fmgrtab_target = custom_target('fmgrtab', input: '../catalog/pg_proc.dat', output : fmgrtab_output, + depend_files: catalog_pm, command: [perl, '-I', '@SOURCE_ROOT@/src/backend/catalog/', files('../../backend/utils/Gen_fmgrtab.pl'), '--include-path=@SOURCE_ROOT@/src/include', '--output=@OUTDIR@', '@INPUT@'], install: true, install_dir: [dir_include_server / 'utils', dir_include_server / 'utils', false], diff --git a/src/interfaces/ecpg/preproc/meson.build b/src/interfaces/ecpg/preproc/meson.build index 08d772d261..eef8f1864f 100644 --- a/src/interfaces/ecpg/preproc/meson.build +++ b/src/interfaces/ecpg/preproc/meson.build @@ -69,14 +69,8 @@ c_kwlist = custom_target('c_kwlist_d.h', input: ['c_kwlist.h'], output: ['c_kwlist_d.h'], depends: check_rules, - command: [ - perl, - '-I', '@SOURCE_ROOT@/src/tools', - '@SOURCE_ROOT@/src/tools/gen_keywordlist.pl', - '--output', '@OUTDIR@', - '--varname', 'ScanCKeywords', - '--no-case-fold', '@INPUT0@', - ], + depend_files: gen_kwlist_deps, + command: [gen_kwlist_cmd, '--varname', 'ScanCKeywords', '--no-case-fold'], ) generated_sources += c_kwlist ecpg_sources += c_kwlist @@ -84,13 +78,8 @@ ecpg_sources += c_kwlist ecpg_kwlist = custom_target('ecpg_kwlist_d.h', input: ['ecpg_kwlist.h'], output: ['ecpg_kwlist_d.h'], - command: [ - perl, '-I', - '@SOURCE_ROOT@/src/tools', - '@SOURCE_ROOT@/src/tools/gen_keywordlist.pl', - '--output', '@OUTDIR@', - '--varname', 'ScanECPGKeywords', '@INPUT0@', - ] + depend_files: gen_kwlist_deps, + command: [gen_kwlist_cmd, '--varname', 'ScanECPGKeywords'], ) generated_sources += ecpg_kwlist ecpg_sources += ecpg_kwlist diff --git a/src/pl/plpgsql/src/meson.build b/src/pl/plpgsql/src/meson.build index e185a87024..85e7293b37 100644 --- a/src/pl/plpgsql/src/meson.build +++ b/src/pl/plpgsql/src/meson.build @@ -25,11 +25,11 @@ pl_errcodes = custom_target('plerrcodes', generated_sources += pl_errcodes plpgsql_sources += pl_errcodes -gen_keywordlist = files('../../../../src/tools/gen_keywordlist.pl') pl_reserved = custom_target('pl_reserved_kwlist', input: ['pl_reserved_kwlist.h'], output: ['pl_reserved_kwlist_d.h'], - command: [perl, '-I', '@SOURCE_ROOT@/src/tools', gen_keywordlist, '--output', '@OUTDIR@', '--varname', 'ReservedPLKeywords', '@INPUT@'] + depend_files: gen_kwlist_deps, + command: [gen_kwlist_cmd, '--varname', 'ReservedPLKeywords'], ) generated_sources += pl_reserved plpgsql_sources += pl_reserved @@ -37,7 +37,8 @@ plpgsql_sources += pl_reserved pl_unreserved = custom_target('pl_unreserved_kwlist', input: ['pl_unreserved_kwlist.h'], output: ['pl_unreserved_kwlist_d.h'], - command: [perl, '-I', '@SOURCE_ROOT@/src/tools', gen_keywordlist, '--output', '@OUTDIR@', '--varname', 'UnreservedPLKeywords', '@INPUT@'] + depend_files: gen_kwlist_deps, + command: [gen_kwlist_cmd, '--varname', 'UnreservedPLKeywords'], ) generated_sources += pl_unreserved plpgsql_sources += pl_unreserved