agora inbox for [email protected]help / color / mirror / Atom feed
[PATCH v15 05/14] meson: Add windows resource files 6+ messages / 2 participants [nested] [flat]
* [PATCH v15 05/14] meson: Add windows resource files @ 2022-09-21 18:03 Andres Freund <[email protected]> 0 siblings, 0 replies; 6+ messages in thread From: Andres Freund @ 2022-09-21 18:03 UTC (permalink / raw) Author: Andres Freund <[email protected]> Author: Nazir Bilal Yavuz <[email protected]> --- src/backend/jit/llvm/meson.build | 6 + .../replication/libpqwalreceiver/meson.build | 6 + src/backend/replication/pgoutput/meson.build | 6 + src/backend/snowball/meson.build | 6 + .../utils/mb/conversion_procs/meson.build | 144 ++++++++++++++---- src/bin/initdb/meson.build | 6 + src/bin/pg_amcheck/meson.build | 8 +- src/bin/pg_archivecleanup/meson.build | 12 +- src/bin/pg_basebackup/meson.build | 38 ++++- src/bin/pg_checksums/meson.build | 12 +- src/bin/pg_config/meson.build | 12 +- src/bin/pg_controldata/meson.build | 12 +- src/bin/pg_ctl/meson.build | 12 +- src/bin/pg_dump/meson.build | 18 +++ src/bin/pg_resetwal/meson.build | 12 +- src/bin/pg_rewind/meson.build | 6 + src/bin/pg_test_fsync/meson.build | 10 +- src/bin/pg_test_timing/meson.build | 12 +- src/bin/pg_upgrade/meson.build | 6 + src/bin/pg_verifybackup/meson.build | 6 + src/bin/pg_waldump/meson.build | 6 + src/bin/pgbench/meson.build | 6 + src/bin/pgevent/meson.build | 6 + src/bin/psql/meson.build | 6 + src/bin/scripts/meson.build | 10 +- src/interfaces/libpq/meson.build | 5 + src/interfaces/libpq/test/meson.build | 25 ++- src/pl/plperl/meson.build | 7 + src/pl/plpgsql/src/meson.build | 6 + src/pl/plpython/meson.build | 6 + src/pl/tcl/meson.build | 6 + contrib/adminpack/meson.build | 12 +- contrib/amcheck/meson.build | 17 ++- contrib/auth_delay/meson.build | 12 +- contrib/auto_explain/meson.build | 12 +- contrib/basebackup_to_shell/meson.build | 6 + contrib/basic_archive/meson.build | 6 + contrib/bloom/meson.build | 6 + contrib/bool_plperl/meson.build | 6 + contrib/btree_gin/meson.build | 12 +- contrib/btree_gist/meson.build | 6 + contrib/citext/meson.build | 6 + contrib/cube/meson.build | 6 + contrib/dblink/meson.build | 6 + contrib/dict_int/meson.build | 12 +- contrib/dict_xsyn/meson.build | 12 +- contrib/earthdistance/meson.build | 12 +- contrib/file_fdw/meson.build | 12 +- contrib/fuzzystrmatch/meson.build | 16 +- contrib/hstore/meson.build | 24 ++- contrib/hstore_plperl/meson.build | 6 + contrib/hstore_plpython/meson.build | 6 + contrib/intarray/meson.build | 6 + contrib/isn/meson.build | 6 + contrib/jsonb_plperl/meson.build | 6 + contrib/jsonb_plpython/meson.build | 6 + contrib/lo/meson.build | 6 + contrib/ltree/meson.build | 6 + contrib/ltree_plpython/meson.build | 6 + contrib/oid2name/meson.build | 12 +- contrib/old_snapshot/meson.build | 6 + contrib/pageinspect/meson.build | 6 + contrib/passwordcheck/meson.build | 6 + contrib/pg_buffercache/meson.build | 14 +- contrib/pg_freespacemap/meson.build | 14 +- contrib/pg_prewarm/meson.build | 16 +- contrib/pg_stat_statements/meson.build | 12 +- contrib/pg_surgery/meson.build | 14 +- contrib/pg_trgm/meson.build | 20 ++- contrib/pg_visibility/meson.build | 14 +- contrib/pg_walinspect/meson.build | 6 + contrib/pgcrypto/meson.build | 6 + contrib/pgrowlocks/meson.build | 14 +- contrib/pgstattuple/meson.build | 18 ++- contrib/postgres_fdw/meson.build | 6 + contrib/seg/meson.build | 6 + contrib/sepgsql/meson.build | 6 + contrib/spi/meson.build | 48 +++++- contrib/sslinfo/meson.build | 14 +- contrib/tablefunc/meson.build | 14 +- contrib/tcn/meson.build | 14 +- contrib/test_decoding/meson.build | 6 + contrib/tsm_system_rows/meson.build | 14 +- contrib/tsm_system_time/meson.build | 14 +- contrib/unaccent/meson.build | 14 +- contrib/uuid-ossp/meson.build | 14 +- contrib/vacuumlo/meson.build | 12 +- contrib/xml2/meson.build | 16 +- src/interfaces/ecpg/compatlib/meson.build | 6 +- src/interfaces/ecpg/preproc/meson.build | 6 + src/interfaces/ecpg/test/meson.build | 6 + src/test/isolation/meson.build | 13 ++ src/test/modules/delay_execution/meson.build | 13 +- src/test/modules/dummy_index_am/meson.build | 13 +- src/test/modules/dummy_seclabel/meson.build | 13 +- src/test/modules/libpq_pipeline/meson.build | 14 +- src/test/modules/plsample/meson.build | 13 +- src/test/modules/spgist_name_ops/meson.build | 13 +- .../ssl_passphrase_callback/meson.build | 13 +- src/test/modules/test_bloomfilter/meson.build | 13 +- src/test/modules/test_ddl_deparse/meson.build | 13 +- .../modules/test_ginpostinglist/meson.build | 13 +- src/test/modules/test_integerset/meson.build | 13 +- src/test/modules/test_lfind/meson.build | 13 +- src/test/modules/test_oat_hooks/meson.build | 13 +- src/test/modules/test_parser/meson.build | 13 +- src/test/modules/test_predtest/meson.build | 13 +- src/test/modules/test_rbtree/meson.build | 13 +- src/test/modules/test_regex/meson.build | 13 +- src/test/modules/test_rls_hooks/meson.build | 13 +- src/test/modules/test_shm_mq/meson.build | 19 ++- src/test/modules/worker_spi/meson.build | 15 +- src/test/regress/meson.build | 6 + meson.build | 61 ++++++++ src/timezone/meson.build | 6 + src/tools/rcgen | 99 ++++++++++++ 116 files changed, 1383 insertions(+), 159 deletions(-) create mode 100755 src/tools/rcgen diff --git a/src/backend/jit/llvm/meson.build b/src/backend/jit/llvm/meson.build index de2e624ab58..5fb63768358 100644 --- a/src/backend/jit/llvm/meson.build +++ b/src/backend/jit/llvm/meson.build @@ -20,6 +20,12 @@ llvmjit_sources += files( 'llvmjit_expr.c', ) +if host_system == 'windows' + llvmjit_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'llvmjit', + '--FILEDESC', 'llvmjit - JIT using LLVM',]) +endif + llvmjit = shared_module('llvmjit', llvmjit_sources, kwargs: pg_mod_args + { diff --git a/src/backend/replication/libpqwalreceiver/meson.build b/src/backend/replication/libpqwalreceiver/meson.build index 3fc786c80a0..4c653a05d36 100644 --- a/src/backend/replication/libpqwalreceiver/meson.build +++ b/src/backend/replication/libpqwalreceiver/meson.build @@ -2,6 +2,12 @@ libpqwalreceiver_sources = files( 'libpqwalreceiver.c', ) +if host_system == 'windows' + libpqwalreceiver_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pqwalreceiver', + '--FILEDESC', 'libpqwalreceiver - receive WAL during streaming replication',]) +endif + libpqwalreceiver = shared_module('pqwalreceiver', libpqwalreceiver_sources, kwargs: pg_mod_args + { diff --git a/src/backend/replication/pgoutput/meson.build b/src/backend/replication/pgoutput/meson.build index ab956361a62..5df27d7b764 100644 --- a/src/backend/replication/pgoutput/meson.build +++ b/src/backend/replication/pgoutput/meson.build @@ -2,6 +2,12 @@ pgoutput_sources = files( 'pgoutput.c', ) +if host_system == 'windows' + pgoutput_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pgoutput', + '--FILEDESC', 'pgoutput - standard logical replication output plugin',]) +endif + pgoutput = shared_module('pgoutput', pgoutput_sources, kwargs: pg_mod_args, diff --git a/src/backend/snowball/meson.build b/src/backend/snowball/meson.build index 8c6f685cb32..974401d187e 100644 --- a/src/backend/snowball/meson.build +++ b/src/backend/snowball/meson.build @@ -58,6 +58,12 @@ dict_snowball_sources += files( # see comment in src/include/snowball/header.h stemmer_inc = include_directories('../../include/snowball') +if host_system == 'windows' + dict_snowball_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'dict_snowball', + '--FILEDESC', 'snowball - natural language stemmers',]) +endif + dict_snowball = shared_module('dict_snowball', dict_snowball_sources, kwargs: pg_mod_args + { diff --git a/src/backend/utils/mb/conversion_procs/meson.build b/src/backend/utils/mb/conversion_procs/meson.build index 1bc971d1945..00e721a2453 100644 --- a/src/backend/utils/mb/conversion_procs/meson.build +++ b/src/backend/utils/mb/conversion_procs/meson.build @@ -1,36 +1,122 @@ encodings = { - 'cyrillic_and_mic': ['cyrillic_and_mic/cyrillic_and_mic.c'], - 'euc2004_sjis2004': ['euc2004_sjis2004/euc2004_sjis2004.c'], - 'euc_cn_and_mic': ['euc_cn_and_mic/euc_cn_and_mic.c'], - 'euc_jp_and_sjis': ['euc_jp_and_sjis/euc_jp_and_sjis.c'], - 'euc_kr_and_mic': ['euc_kr_and_mic/euc_kr_and_mic.c'], - 'euc_tw_and_big5': [ - 'euc_tw_and_big5/euc_tw_and_big5.c', - 'euc_tw_and_big5/big5.c', - ], - 'latin2_and_win1250': ['latin2_and_win1250/latin2_and_win1250.c'], - 'latin_and_mic': ['latin_and_mic/latin_and_mic.c'], - 'utf8_and_big5': ['utf8_and_big5/utf8_and_big5.c'], - 'utf8_and_cyrillic': ['utf8_and_cyrillic/utf8_and_cyrillic.c'], - 'utf8_and_euc2004': ['utf8_and_euc2004/utf8_and_euc2004.c'], - 'utf8_and_euc_cn': ['utf8_and_euc_cn/utf8_and_euc_cn.c'], - 'utf8_and_euc_jp': ['utf8_and_euc_jp/utf8_and_euc_jp.c'], - 'utf8_and_euc_kr': ['utf8_and_euc_kr/utf8_and_euc_kr.c'], - 'utf8_and_euc_tw': ['utf8_and_euc_tw/utf8_and_euc_tw.c'], - 'utf8_and_gb18030': ['utf8_and_gb18030/utf8_and_gb18030.c'], - 'utf8_and_gbk': ['utf8_and_gbk/utf8_and_gbk.c'], - 'utf8_and_iso8859': ['utf8_and_iso8859/utf8_and_iso8859.c'], - 'utf8_and_iso8859_1': ['utf8_and_iso8859_1/utf8_and_iso8859_1.c'], - 'utf8_and_johab': ['utf8_and_johab/utf8_and_johab.c'], - 'utf8_and_sjis': ['utf8_and_sjis/utf8_and_sjis.c'], - 'utf8_and_sjis2004': ['utf8_and_sjis2004/utf8_and_sjis2004.c'], - 'utf8_and_uhc': ['utf8_and_uhc/utf8_and_uhc.c'], - 'utf8_and_win': ['utf8_and_win/utf8_and_win.c'], + 'cyrillic_and_mic': { + 'sources': ['cyrillic_and_mic/cyrillic_and_mic.c'], + 'description': 'cyrillic <-> mic text conversions', + }, + 'euc2004_sjis2004': { + 'sources': ['euc2004_sjis2004/euc2004_sjis2004.c'], + 'description': 'euc2004 <-> sjis2004 text conversions', + }, + 'euc_cn_and_mic': { + 'sources': ['euc_cn_and_mic/euc_cn_and_mic.c'], + 'description': 'euc_cn <-> mic text conversions', + }, + 'euc_jp_and_sjis': { + 'sources': ['euc_jp_and_sjis/euc_jp_and_sjis.c'], + 'description': 'euc_jp <-> sjis text conversions', + }, + 'euc_kr_and_mic': { + 'sources': ['euc_kr_and_mic/euc_kr_and_mic.c'], + 'description': 'euc_kr <-> mic text conversions', + }, + 'euc_tw_and_big5': { + 'sources': [ + 'euc_tw_and_big5/euc_tw_and_big5.c', + 'euc_tw_and_big5/big5.c', + ], + 'description': 'euc_tw <-> big5 text conversions', + }, + 'latin2_and_win1250': { + 'sources': ['latin2_and_win1250/latin2_and_win1250.c'], + 'description': 'latin2 <-> win1250 text conversions', + }, + 'latin_and_mic': { + 'sources': ['latin_and_mic/latin_and_mic.c'], + 'description': 'latin <-> mic text conversions', + }, + 'utf8_and_big5': { + 'sources': ['utf8_and_big5/utf8_and_big5.c'], + 'description': 'utf8 <-> big5 text conversions', + }, + 'utf8_and_cyrillic': { + 'sources': ['utf8_and_cyrillic/utf8_and_cyrillic.c'], + 'description': 'utf8 <-> cyrillic text conversions', + }, + 'utf8_and_euc2004': { + 'sources': ['utf8_and_euc2004/utf8_and_euc2004.c'], + 'description': 'utf8 <-> euc2004 text conversions', + }, + 'utf8_and_euc_cn': { + 'sources': ['utf8_and_euc_cn/utf8_and_euc_cn.c'], + 'description': 'utf8 <-> euc_cn text conversions', + }, + 'utf8_and_euc_jp': { + 'sources': ['utf8_and_euc_jp/utf8_and_euc_jp.c'], + 'description': 'utf8 <-> euc_jp text conversions', + }, + 'utf8_and_euc_kr': { + 'sources': ['utf8_and_euc_kr/utf8_and_euc_kr.c'], + 'description': 'utf8 <-> euc_kr text conversions', + }, + 'utf8_and_euc_tw': { + 'sources': ['utf8_and_euc_tw/utf8_and_euc_tw.c'], + 'description': 'utf8 <-> euc_tw text conversions', + }, + 'utf8_and_gb18030': { + 'sources': ['utf8_and_gb18030/utf8_and_gb18030.c'], + 'description': 'utf8 <-> gb18030 text conversions', + }, + 'utf8_and_gbk': { + 'sources': ['utf8_and_gbk/utf8_and_gbk.c'], + 'description': 'utf8 <-> gbk text conversions', + }, + 'utf8_and_iso8859': { + 'sources': ['utf8_and_iso8859/utf8_and_iso8859.c'], + 'description': 'utf8 <-> iso8859 text conversions', + }, + 'utf8_and_iso8859_1': { + 'sources': ['utf8_and_iso8859_1/utf8_and_iso8859_1.c'], + 'description': 'utf8 <-> iso8859_1 text conversions', + }, + 'utf8_and_johab': { + 'sources': ['utf8_and_johab/utf8_and_johab.c'], + 'description': 'utf8 <-> johab text conversions', + }, + 'utf8_and_sjis': { + 'sources': ['utf8_and_sjis/utf8_and_sjis.c'], + 'description': 'utf8 <-> sjis text conversions', + }, + 'utf8_and_sjis2004': { + 'sources': ['utf8_and_sjis2004/utf8_and_sjis2004.c'], + 'description': 'utf8 <-> sjis2004 text conversions', + }, + 'utf8_and_uhc': { + 'sources': ['utf8_and_uhc/utf8_and_uhc.c'], + 'description': 'utf8 <-> uhc text conversions', + }, + 'utf8_and_win': { + 'sources': ['utf8_and_win/utf8_and_win.c'], + 'description': 'utf8 <-> win text conversions', + }, } -foreach encoding, sources : encodings +foreach encoding, values: encodings + sources = values['sources'] + description = values['description'] + + source_files = files() + foreach source: sources + source_files += files(source) + endforeach + + if host_system == 'windows' + source_files += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', encoding, + '--FILEDESC', description,]) + endif + backend_targets += shared_module(encoding, - sources, + source_files, kwargs: pg_mod_args, ) endforeach diff --git a/src/bin/initdb/meson.build b/src/bin/initdb/meson.build index 9f213274d2f..6ced9a31b80 100644 --- a/src/bin/initdb/meson.build +++ b/src/bin/initdb/meson.build @@ -7,6 +7,12 @@ initdb_sources += timezone_localtime_source #fixme: reimplement libpq_pgport logic +if host_system == 'windows' + initdb_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'initdb', + '--FILEDESC', 'initdb - initialize a new database cluster',]) +endif + initdb = executable('initdb', initdb_sources, include_directories: [timezone_inc], diff --git a/src/bin/pg_amcheck/meson.build b/src/bin/pg_amcheck/meson.build index 8e197eba5f3..25f5e7a0948 100644 --- a/src/bin/pg_amcheck/meson.build +++ b/src/bin/pg_amcheck/meson.build @@ -1,7 +1,13 @@ pg_amcheck_sources = files( - 'pg_amcheck.c' + 'pg_amcheck.c', ) +if host_system == 'windows' + pg_amcheck_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_amcheck', + '--FILEDESC', 'pg_amcheck - detect corruption within database relations',]) +endif + pg_amcheck = executable('pg_amcheck', pg_amcheck_sources, dependencies: [frontend_code, libpq], diff --git a/src/bin/pg_archivecleanup/meson.build b/src/bin/pg_archivecleanup/meson.build index 87a0d980c4f..aaa2e76977f 100644 --- a/src/bin/pg_archivecleanup/meson.build +++ b/src/bin/pg_archivecleanup/meson.build @@ -1,5 +1,15 @@ +pg_archivecleanup_sources = files( + 'pg_archivecleanup.c', +) + +if host_system == 'windows' + pg_archivecleanup_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_archivecleanup', + '--FILEDESC', 'pg_archivecleanup - cleans archive when used with streaming replication',]) +endif + pg_archivecleanup = executable('pg_archivecleanup', - ['pg_archivecleanup.c'], + pg_archivecleanup_sources, dependencies: [frontend_code], kwargs: default_bin_args, ) diff --git a/src/bin/pg_basebackup/meson.build b/src/bin/pg_basebackup/meson.build index d26fed9cd8a..2c934e0c26e 100644 --- a/src/bin/pg_basebackup/meson.build +++ b/src/bin/pg_basebackup/meson.build @@ -17,24 +17,56 @@ pg_basebackup_common = static_library('libpg_basebackup_common', kwargs: internal_lib_args, ) -pg_basebackup = executable('pg_basebackup', +pg_basebackup_sources = files( 'pg_basebackup.c', +) + +if host_system == 'windows' + pg_basebackup_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_basebackup', + '--FILEDESC', 'pg_basebackup - streaming WAL and backup receivers',]) +endif + +pg_basebackup = executable('pg_basebackup', + pg_basebackup_sources, link_with: [pg_basebackup_common], dependencies: pg_basebackup_deps, kwargs: default_bin_args, ) bin_targets += pg_basebackup -pg_receivewal = executable('pg_receivewal', + +pg_receivewal_sources = files( 'pg_receivewal.c', +) + +if host_system == 'windows' + pg_receivewal_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_receivewal', + '--FILEDESC', 'pg_receivewal - streaming WAL and backup receivers',]) +endif + +pg_receivewal = executable('pg_receivewal', + pg_receivewal_sources, link_with: [pg_basebackup_common], dependencies: pg_basebackup_deps, kwargs: default_bin_args, ) bin_targets += pg_receivewal -pg_recvlogical = executable('pg_recvlogical', + +pg_recvlogical_sources = files( 'pg_recvlogical.c', +) + +if host_system == 'windows' + pg_recvlogical_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_recvlogical', + '--FILEDESC', 'pg_recvlogical - streaming WAL and backup receivers',]) +endif + +pg_recvlogical = executable('pg_recvlogical', + pg_recvlogical_sources, link_with: [pg_basebackup_common], dependencies: pg_basebackup_deps, kwargs: default_bin_args, diff --git a/src/bin/pg_checksums/meson.build b/src/bin/pg_checksums/meson.build index ee1f367bac3..d07ebc999b3 100644 --- a/src/bin/pg_checksums/meson.build +++ b/src/bin/pg_checksums/meson.build @@ -1,5 +1,15 @@ +pg_checksums_sources = files( + 'pg_checksums.c', +) + +if host_system == 'windows' + pg_checksums_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_checksums', + '--FILEDESC', 'pg_checksums - verify data checksums in an offline cluster',]) +endif + pg_checksums = executable('pg_checksums', - ['pg_checksums.c'], + pg_checksums_sources, include_directories: [timezone_inc], dependencies: [frontend_code], kwargs: default_bin_args, diff --git a/src/bin/pg_config/meson.build b/src/bin/pg_config/meson.build index 0ecbf2f9d28..4be2fdc84ae 100644 --- a/src/bin/pg_config/meson.build +++ b/src/bin/pg_config/meson.build @@ -1,5 +1,15 @@ +pg_config_sources = files( + 'pg_config.c', +) + +if host_system == 'windows' + pg_config_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_config', + '--FILEDESC', 'pg_config - report configuration information',]) +endif + pg_config = executable('pg_config', - ['pg_config.c'], + pg_config_sources, dependencies: [frontend_code], kwargs: default_bin_args, ) diff --git a/src/bin/pg_controldata/meson.build b/src/bin/pg_controldata/meson.build index 557e672beb7..7fc239dbe65 100644 --- a/src/bin/pg_controldata/meson.build +++ b/src/bin/pg_controldata/meson.build @@ -1,5 +1,15 @@ +pg_controldata_sources = files( + 'pg_controldata.c', +) + +if host_system == 'windows' + pg_controldata_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_controldata', + '--FILEDESC', 'pg_controldata - reads the data from pg_control',]) +endif + pg_controldata = executable('pg_controldata', - ['pg_controldata.c'], + pg_controldata_sources, dependencies: [frontend_code], kwargs: default_bin_args, ) diff --git a/src/bin/pg_ctl/meson.build b/src/bin/pg_ctl/meson.build index 6812e73e329..96f962fa762 100644 --- a/src/bin/pg_ctl/meson.build +++ b/src/bin/pg_ctl/meson.build @@ -1,5 +1,15 @@ +pg_ctl_sources = files( + 'pg_ctl.c', +) + +if host_system == 'windows' + pg_ctl_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_ctl', + '--FILEDESC', 'pg_ctl - starts/stops/restarts the PostgreSQL server',]) +endif + pg_ctl = executable('pg_ctl', - ['pg_ctl.c'], + pg_ctl_sources, dependencies: [frontend_code, libpq], kwargs: default_bin_args, ) diff --git a/src/bin/pg_dump/meson.build b/src/bin/pg_dump/meson.build index 785ec094dbd..3527a25c288 100644 --- a/src/bin/pg_dump/meson.build +++ b/src/bin/pg_dump/meson.build @@ -24,6 +24,12 @@ pg_dump_sources = files( 'pg_dump_sort.c', ) +if host_system == 'windows' + pg_dump_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_dump', + '--FILEDESC', 'pg_dump - backup one PostgreSQL database',]) +endif + pg_dump = executable('pg_dump', pg_dump_sources, link_with: [pg_dump_common], @@ -37,6 +43,12 @@ pg_dumpall_sources = files( 'pg_dumpall.c', ) +if host_system == 'windows' + pg_dumpall_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_dumpall', + '--FILEDESC', 'pg_dumpall - backup PostgreSQL databases']) +endif + pg_dumpall = executable('pg_dumpall', pg_dumpall_sources, link_with: [pg_dump_common], @@ -50,6 +62,12 @@ pg_restore_sources = files( 'pg_restore.c', ) +if host_system == 'windows' + pg_restore_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_restore', + '--FILEDESC', 'pg_restore - restore PostgreSQL databases']) +endif + pg_restore = executable('pg_restore', pg_restore_sources, link_with: [pg_dump_common], diff --git a/src/bin/pg_resetwal/meson.build b/src/bin/pg_resetwal/meson.build index 7c5de134ac0..d503db97b71 100644 --- a/src/bin/pg_resetwal/meson.build +++ b/src/bin/pg_resetwal/meson.build @@ -1,5 +1,15 @@ +pg_resetwal_sources = files( + 'pg_resetwal.c', +) + +if host_system == 'windows' + pg_resetwal_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_resetwal', + '--FILEDESC', 'pg_resetwal - reset PostgreSQL WAL log']) +endif + pg_resetwal = executable('pg_resetwal', - files('pg_resetwal.c'), + pg_resetwal_sources, dependencies: [frontend_code], kwargs: default_bin_args, ) diff --git a/src/bin/pg_rewind/meson.build b/src/bin/pg_rewind/meson.build index d8ec9e482d5..6cd970909a2 100644 --- a/src/bin/pg_rewind/meson.build +++ b/src/bin/pg_rewind/meson.build @@ -11,6 +11,12 @@ pg_rewind_sources = files( pg_rewind_sources += xlogreader_sources +if host_system == 'windows' + pg_rewind_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_rewind', + '--FILEDESC', 'pg_rewind - synchronize a data directory with another one forked from']) +endif + pg_rewind = executable('pg_rewind', pg_rewind_sources, dependencies: [frontend_code, libpq, lz4, zstd], diff --git a/src/bin/pg_test_fsync/meson.build b/src/bin/pg_test_fsync/meson.build index 2c01831e11f..31d288ba6da 100644 --- a/src/bin/pg_test_fsync/meson.build +++ b/src/bin/pg_test_fsync/meson.build @@ -1,4 +1,12 @@ -test_fsync_sources = files('pg_test_fsync.c') +test_fsync_sources = files( + 'pg_test_fsync.c', +) + +if host_system == 'windows' + test_fsync_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_test_fsync', + '--FILEDESC', 'pg_test_fsync - test various disk sync methods']) +endif pg_test_fsync = executable('pg_test_fsync', test_fsync_sources, diff --git a/src/bin/pg_test_timing/meson.build b/src/bin/pg_test_timing/meson.build index 0a3068f1657..0aed03ea32f 100644 --- a/src/bin/pg_test_timing/meson.build +++ b/src/bin/pg_test_timing/meson.build @@ -1,5 +1,15 @@ +pg_test_timing_sources = files( + 'pg_test_timing.c' +) + +if host_system == 'windows' + pg_test_timing_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_test_timing', + '--FILEDESC', 'pg_test_timing - test timing overhead']) +endif + pg_test_timing = executable('pg_test_timing', - ['pg_test_timing.c'], + pg_test_timing_sources, dependencies: [frontend_code], kwargs: default_bin_args, ) diff --git a/src/bin/pg_upgrade/meson.build b/src/bin/pg_upgrade/meson.build index 02f030e0ccf..a7b927a45c7 100644 --- a/src/bin/pg_upgrade/meson.build +++ b/src/bin/pg_upgrade/meson.build @@ -16,6 +16,12 @@ pg_upgrade_sources = files( 'version.c', ) +if host_system == 'windows' + pg_upgrade_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_upgrade', + '--FILEDESC', 'pg_upgrade - an in-place binary upgrade utility']) +endif + pg_upgrade = executable('pg_upgrade', pg_upgrade_sources, dependencies: [frontend_code, libpq], diff --git a/src/bin/pg_verifybackup/meson.build b/src/bin/pg_verifybackup/meson.build index 4c3b2bb5f97..b934a408443 100644 --- a/src/bin/pg_verifybackup/meson.build +++ b/src/bin/pg_verifybackup/meson.build @@ -3,6 +3,12 @@ pg_verifybackup_sources = files( 'pg_verifybackup.c' ) +if host_system == 'windows' + pg_verifybackup_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_verifybackup', + '--FILEDESC', 'pg_verifybackup - verify a backup against using a backup manifest']) +endif + pg_verifybackup = executable('pg_verifybackup', pg_verifybackup_sources, dependencies: [frontend_code, libpq], diff --git a/src/bin/pg_waldump/meson.build b/src/bin/pg_waldump/meson.build index 95872652ffd..9605976870d 100644 --- a/src/bin/pg_waldump/meson.build +++ b/src/bin/pg_waldump/meson.build @@ -8,6 +8,12 @@ pg_waldump_sources += rmgr_desc_sources pg_waldump_sources += xlogreader_sources pg_waldump_sources += files('../../backend/access/transam/xlogstats.c') +if host_system == 'windows' + pg_waldump_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_waldump', + '--FILEDESC', 'pg_waldump - decode and display WA']) +endif + pg_waldump = executable('pg_waldump', pg_waldump_sources, dependencies: [frontend_code, lz4, zstd], diff --git a/src/bin/pgbench/meson.build b/src/bin/pgbench/meson.build index 6564e54029c..a32eb51fe07 100644 --- a/src/bin/pgbench/meson.build +++ b/src/bin/pgbench/meson.build @@ -17,6 +17,12 @@ exprparse = custom_target('exprparse', generated_sources += exprparse.to_list() pgbench_sources += exprparse +if host_system == 'windows' + pgbench_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pgbench', + '--FILEDESC', 'pgbench - a simple program for running benchmark tests']) +endif + pgbench = executable('pgbench', pgbench_sources, dependencies: [frontend_code, libpq, thread_dep], diff --git a/src/bin/pgevent/meson.build b/src/bin/pgevent/meson.build index 7a468879fd2..2e9aea4b0e1 100644 --- a/src/bin/pgevent/meson.build +++ b/src/bin/pgevent/meson.build @@ -6,6 +6,12 @@ pgevent_sources = files( 'pgevent.c', ) +pgevent_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pgevent', + '--FILEDESC', 'Eventlog message formatter',]) + +pgevent_sources += windows.compile_resources('pgmsgevent.rc') + # FIXME: copied from Mkvcbuild.pm, but I don't think that's the right approach pgevent_link_args = [] if cc.get_id() == 'msvc' diff --git a/src/bin/psql/meson.build b/src/bin/psql/meson.build index ea850c8fdf5..3474389d3b6 100644 --- a/src/bin/psql/meson.build +++ b/src/bin/psql/meson.build @@ -38,6 +38,12 @@ generated_sources += sql_help.to_list() psql_sources += sql_help bin_targets += sql_help +if host_system == 'windows' + psql_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'psql', + '--FILEDESC', 'psql - the PostgreSQL interactive terminal',]) +endif + psql = executable('psql', psql_sources, include_directories: include_directories('.'), diff --git a/src/bin/scripts/meson.build b/src/bin/scripts/meson.build index eaf250c7f73..837562c24e5 100644 --- a/src/bin/scripts/meson.build +++ b/src/bin/scripts/meson.build @@ -16,8 +16,16 @@ binaries = [ ] foreach binary : binaries + binary_sources = files('@[email protected]'.format(binary)) + + if host_system == 'windows' + binary_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', binary, + '--FILEDESC', '@0@ - PostgreSQL utility'.format(binary),]) + endif + binary = executable(binary, - files(binary + '.c'), + binary_sources, link_with: [scripts_common], dependencies: [frontend_code, libpq], kwargs: default_bin_args, diff --git a/src/interfaces/libpq/meson.build b/src/interfaces/libpq/meson.build index bc047e00d62..2c9edeaa088 100644 --- a/src/interfaces/libpq/meson.build +++ b/src/interfaces/libpq/meson.build @@ -16,9 +16,13 @@ libpq_sources = files( 'libpq-events.c', 'pqexpbuffer.c', ) +libpq_so_sources = [] # only for shared lib, in addition to above if host_system == 'windows' libpq_sources += files('pthread-win32.c', 'win32.c') + libpq_so_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'libpq', + '--FILEDESC', 'PostgreSQL Access Library',]) endif if ssl.found() @@ -52,6 +56,7 @@ libpq_st = static_library('libpq', # not using both_libraries here, causes problems with precompiled headers and # resource files with msbuild libpq_so = shared_library('libpq', + libpq_so_sources, dependencies: libpq_deps, include_directories: [libpq_inc, postgres_inc], c_args: ['-DSO_MAJOR_VERSION=5'], diff --git a/src/interfaces/libpq/test/meson.build b/src/interfaces/libpq/test/meson.build index 16f94c1ed8b..017f729d435 100644 --- a/src/interfaces/libpq/test/meson.build +++ b/src/interfaces/libpq/test/meson.build @@ -1,13 +1,34 @@ +libpq_uri_regress_sources = files( + 'libpq_uri_regress.c', +) + +if host_system == 'windows' + libpq_uri_regress_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'libpq_uri_regress', + '--FILEDESC', 'libpq test program',]) +endif + executable('libpq_uri_regress', - files('libpq_uri_regress.c'), + libpq_uri_regress_sources, dependencies: [frontend_code, libpq], kwargs: default_bin_args + { 'install': false, } ) + +libpq_testclient_sources = files( + 'libpq_testclient.c', +) + +if host_system == 'windows' + libpq_testclient_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'libpq_testclient', + '--FILEDESC', 'libpq test program',]) +endif + executable('libpq_testclient', - files('libpq_testclient.c'), + libpq_testclient_sources, dependencies: [frontend_code, libpq], kwargs: default_bin_args + { 'install': false, diff --git a/src/pl/plperl/meson.build b/src/pl/plperl/meson.build index 73b733dd50b..535660085dd 100644 --- a/src/pl/plperl/meson.build +++ b/src/pl/plperl/meson.build @@ -36,6 +36,13 @@ foreach n : ['SPI', 'Util'] endforeach plperl_inc = include_directories('.') + +if host_system == 'windows' + plperl_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'plperl', + '--FILEDESC', 'PL/Perl - procedural language',]) +endif + plperl = shared_module('plperl', plperl_sources, include_directories: [plperl_inc, postgres_inc], diff --git a/src/pl/plpgsql/src/meson.build b/src/pl/plpgsql/src/meson.build index dd499fdd151..c46c0a1da2a 100644 --- a/src/pl/plpgsql/src/meson.build +++ b/src/pl/plpgsql/src/meson.build @@ -40,6 +40,12 @@ pl_unreserved = custom_target('pl_unreserved_kwlist', generated_sources += pl_unreserved plpgsql_sources += pl_unreserved +if host_system == 'windows' + plpgsql_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'plpgsql', + '--FILEDESC', 'PL/pgSQL - procedural language',]) +endif + plpgsql = shared_module('plpgsql', plpgsql_sources, include_directories: include_directories('.'), diff --git a/src/pl/plpython/meson.build b/src/pl/plpython/meson.build index 366b3b171ac..40888386b5f 100644 --- a/src/pl/plpython/meson.build +++ b/src/pl/plpython/meson.build @@ -28,6 +28,12 @@ plpython_sources += custom_target('spiexceptions.h', # FIXME: need to duplicate import library ugliness? plpython_inc = include_directories('.') +if host_system == 'windows' + plpython_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'plpython3', + '--FILEDESC', 'PL/Python - procedural language',]) +endif + plpython = shared_module('plpython3', plpython_sources, include_directories: [plpython_inc, postgres_inc], diff --git a/src/pl/tcl/meson.build b/src/pl/tcl/meson.build index 9b6addd7fd5..f09bb14c950 100644 --- a/src/pl/tcl/meson.build +++ b/src/pl/tcl/meson.build @@ -14,6 +14,12 @@ pltcl_sources += custom_target('pltclerrcodes.h', command: [perl, gen_pltclerrcodes, '@INPUT@'] ) +if host_system == 'windows' + pltcl_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pltcl', + '--FILEDESC', 'PL/Tcl - procedural language',]) +endif + pltcl = shared_module('pltcl', pltcl_sources, include_directories: [include_directories('.'), postgres_inc], diff --git a/contrib/adminpack/meson.build b/contrib/adminpack/meson.build index fc2368d02cf..7efec0efbc0 100644 --- a/contrib/adminpack/meson.build +++ b/contrib/adminpack/meson.build @@ -1,5 +1,15 @@ +adminpack_sources = files( + 'adminpack.c', +) + +if host_system == 'windows' + adminpack_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'adminpack', + '--FILEDESC', 'adminpack - support functions for pgAdmin',]) +endif + adminpack = shared_module('adminpack', - ['adminpack.c'], + adminpack_sources, kwargs: contrib_mod_args, ) contrib_targets += adminpack diff --git a/contrib/amcheck/meson.build b/contrib/amcheck/meson.build index 1db3d20349e..fa807b72d98 100644 --- a/contrib/amcheck/meson.build +++ b/contrib/amcheck/meson.build @@ -1,7 +1,16 @@ -amcheck = shared_module('amcheck', [ - 'verify_heapam.c', - 'verify_nbtree.c', - ], +amcheck_sources = files( + 'verify_heapam.c', + 'verify_nbtree.c', +) + +if host_system == 'windows' + amcheck_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'amcheck', + '--FILEDESC', 'amcheck - function for verifying relation integrity',]) +endif + +amcheck = shared_module('amcheck', + amcheck_sources, kwargs: contrib_mod_args, ) contrib_targets += amcheck diff --git a/contrib/auth_delay/meson.build b/contrib/auth_delay/meson.build index d2e01968f54..c4ffb0663bc 100644 --- a/contrib/auth_delay/meson.build +++ b/contrib/auth_delay/meson.build @@ -1,5 +1,15 @@ +auth_delay_sources = files( + 'auth_delay.c', +) + +if host_system == 'windows' + auth_delay_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'auth_delay', + '--FILEDESC', 'auth_delay - delay authentication failure reports',]) +endif + autoinc = shared_module('auth_delay', - ['auth_delay.c'], + auth_delay_sources, kwargs: contrib_mod_args, ) contrib_targets += autoinc diff --git a/contrib/auto_explain/meson.build b/contrib/auto_explain/meson.build index 249a8376faa..76f86617850 100644 --- a/contrib/auto_explain/meson.build +++ b/contrib/auto_explain/meson.build @@ -1,5 +1,15 @@ +auto_explain_sources = files( + 'auto_explain.c', +) + +if host_system == 'windows' + auto_explain_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'auto_explain', + '--FILEDESC', 'auto_explain - logging facility for execution plans',]) +endif + auto_explain = shared_module('auto_explain', - files('auto_explain.c'), + auto_explain_sources, kwargs: contrib_mod_args, ) contrib_targets += auto_explain diff --git a/contrib/basebackup_to_shell/meson.build b/contrib/basebackup_to_shell/meson.build index 9f0517f1701..3a389de9175 100644 --- a/contrib/basebackup_to_shell/meson.build +++ b/contrib/basebackup_to_shell/meson.build @@ -2,6 +2,12 @@ basebackup_to_shell_sources = files( 'basebackup_to_shell.c', ) +if host_system == 'windows' + basebackup_to_shell_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'basebackup_to_shell', + '--FILEDESC', 'basebackup_to_shell - target basebackup to shell command',]) +endif + basebackup_to_shell = shared_module('basebackup_to_shell', basebackup_to_shell_sources, kwargs: contrib_mod_args, diff --git a/contrib/basic_archive/meson.build b/contrib/basic_archive/meson.build index b67cbef60bd..c30dcfa5d41 100644 --- a/contrib/basic_archive/meson.build +++ b/contrib/basic_archive/meson.build @@ -2,6 +2,12 @@ basic_archive_sources = files( 'basic_archive.c', ) +if host_system == 'windows' + basic_archive_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'basic_archive', + '--FILEDESC', 'basic_archive - basic archive module',]) +endif + basic_archive = shared_module('basic_archive', basic_archive_sources, kwargs: contrib_mod_args, diff --git a/contrib/bloom/meson.build b/contrib/bloom/meson.build index 1fe7632bdbe..16f3b83e4d2 100644 --- a/contrib/bloom/meson.build +++ b/contrib/bloom/meson.build @@ -7,6 +7,12 @@ bloom_sources = files( 'blvalidate.c', ) +if host_system == 'windows' + bloom_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'bloom', + '--FILEDESC', 'bloom access method - signature file based index',]) +endif + bloom = shared_module('bloom', bloom_sources, kwargs: contrib_mod_args, diff --git a/contrib/bool_plperl/meson.build b/contrib/bool_plperl/meson.build index c20b667d75f..a68daab0dcd 100644 --- a/contrib/bool_plperl/meson.build +++ b/contrib/bool_plperl/meson.build @@ -6,6 +6,12 @@ bool_plperl_sources = files( 'bool_plperl.c', ) +if host_system == 'windows' + bool_plperl_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'bool_plperl', + '--FILEDESC', 'bool_plperl - bool transform for plperl',]) +endif + bool_plperl = shared_module('bool_plperl', bool_plperl_sources, include_directories: [plperl_inc, include_directories('.')], diff --git a/contrib/btree_gin/meson.build b/contrib/btree_gin/meson.build index 15d6d31a6ee..fd4c76767a7 100644 --- a/contrib/btree_gin/meson.build +++ b/contrib/btree_gin/meson.build @@ -1,5 +1,15 @@ +btree_gin_sources = files( + 'btree_gin.c', +) + +if host_system == 'windows' + btree_gin_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'btree_gin', + '--FILEDESC', 'btree_gin - B-tree equivalent GIN operator classes',]) +endif + btree_gin = shared_module('btree_gin', - files('btree_gin.c'), + btree_gin_sources, kwargs: contrib_mod_args, ) contrib_targets += btree_gin diff --git a/contrib/btree_gist/meson.build b/contrib/btree_gist/meson.build index c0a8d238540..e98c91dacc8 100644 --- a/contrib/btree_gist/meson.build +++ b/contrib/btree_gist/meson.build @@ -25,6 +25,12 @@ btree_gist_sources = files( 'btree_uuid.c', ) +if host_system == 'windows' + btree_gist_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'btree_gist', + '--FILEDESC', 'btree_gist - B-tree equivalent GiST operator classes',]) +endif + btree_gist = shared_module('btree_gist', btree_gist_sources, kwargs: contrib_mod_args, diff --git a/contrib/citext/meson.build b/contrib/citext/meson.build index ca60eded80b..26a101a19bd 100644 --- a/contrib/citext/meson.build +++ b/contrib/citext/meson.build @@ -2,6 +2,12 @@ citext_sources = files( 'citext.c', ) +if host_system == 'windows' + citext_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'citext', + '--FILEDESC', 'citext - case-insensitive character string data type',]) +endif + citext = shared_module('citext', citext_sources, kwargs: contrib_mod_args, diff --git a/contrib/cube/meson.build b/contrib/cube/meson.build index 72342b0c82c..041acf95a90 100644 --- a/contrib/cube/meson.build +++ b/contrib/cube/meson.build @@ -17,6 +17,12 @@ cube_parse = custom_target('cubeparse', generated_sources += cube_parse.to_list() cube_sources += cube_parse +if host_system == 'windows' + cube_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'cube', + '--FILEDESC', 'cube - multidimensional cube data type',]) +endif + cube = shared_module('cube', cube_sources, include_directories: include_directories('.'), diff --git a/contrib/dblink/meson.build b/contrib/dblink/meson.build index d35f7b5d49e..66eeb03b736 100644 --- a/contrib/dblink/meson.build +++ b/contrib/dblink/meson.build @@ -2,6 +2,12 @@ dblink_sources = files( 'dblink.c', ) +if host_system == 'windows' + dblink_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'dblink', + '--FILEDESC', 'dblink - connect to other PostgreSQL databases',]) +endif + dblink = shared_module('dblink', dblink_sources, kwargs: contrib_mod_args + { diff --git a/contrib/dict_int/meson.build b/contrib/dict_int/meson.build index f00e8085619..6fff921adda 100644 --- a/contrib/dict_int/meson.build +++ b/contrib/dict_int/meson.build @@ -1,5 +1,15 @@ +dict_int_sources = files( + 'dict_int.c', +) + +if host_system == 'windows' + dict_int_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'dict_int', + '--FILEDESC', 'dict_int - add-on dictionary template for full-text search',]) +endif + dict_int = shared_module('dict_int', - files('dict_int.c'), + dict_int_sources, kwargs: contrib_mod_args, ) contrib_targets += dict_int diff --git a/contrib/dict_xsyn/meson.build b/contrib/dict_xsyn/meson.build index be53f55bb79..fabd505a7df 100644 --- a/contrib/dict_xsyn/meson.build +++ b/contrib/dict_xsyn/meson.build @@ -1,5 +1,15 @@ +dict_xsyn_sources = files( + 'dict_xsyn.c', +) + +if host_system == 'windows' + dict_xsyn_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'dict_xsyn', + '--FILEDESC', 'dict_xsyn - add-on dictionary template for full-text search',]) +endif + dict_xsyn = shared_module('dict_xsyn', - files('dict_xsyn.c'), + dict_xsyn_sources, kwargs: contrib_mod_args, ) contrib_targets += dict_xsyn diff --git a/contrib/earthdistance/meson.build b/contrib/earthdistance/meson.build index 807f5cb7de3..78dc29c3da3 100644 --- a/contrib/earthdistance/meson.build +++ b/contrib/earthdistance/meson.build @@ -1,5 +1,15 @@ +earthdistance_sources = files( + 'earthdistance.c', +) + +if host_system == 'windows' + earthdistance_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'earthdistance', + '--FILEDESC', 'earthdistance - calculate distances on the surface of the Earth',]) +endif + earthdistance = shared_module('earthdistance', - files('earthdistance.c'), + earthdistance_sources, kwargs: contrib_mod_args, ) contrib_targets += earthdistance diff --git a/contrib/file_fdw/meson.build b/contrib/file_fdw/meson.build index f13efb6e38e..c4071faa669 100644 --- a/contrib/file_fdw/meson.build +++ b/contrib/file_fdw/meson.build @@ -1,5 +1,15 @@ +file_fdw_sources = files( + 'file_fdw.c', +) + +if host_system == 'windows' + file_fdw_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'file_fdw', + '--FILEDESC', 'file_fdw - foreign data wrapper for files',]) +endif + file_fdw = shared_module('file_fdw', - files('file_fdw.c'), + file_fdw_sources, kwargs: contrib_mod_args, ) contrib_targets += file_fdw diff --git a/contrib/fuzzystrmatch/meson.build b/contrib/fuzzystrmatch/meson.build index ec278a6211e..e6d06149cec 100644 --- a/contrib/fuzzystrmatch/meson.build +++ b/contrib/fuzzystrmatch/meson.build @@ -1,8 +1,16 @@ +fuzzystrmatch_sources = files( + 'fuzzystrmatch.c', + 'dmetaphone.c', +) + +if host_system == 'windows' + fuzzystrmatch_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'fuzzystrmatch', + '--FILEDESC', 'fuzzystrmatch - similarities and distance between strings',]) +endif + fuzzystrmatch = shared_module('fuzzystrmatch', - files( - 'fuzzystrmatch.c', - 'dmetaphone.c' - ), + fuzzystrmatch_sources, kwargs: contrib_mod_args, ) contrib_targets += fuzzystrmatch diff --git a/contrib/hstore/meson.build b/contrib/hstore/meson.build index 07c59f40a97..2bb26bb772b 100644 --- a/contrib/hstore/meson.build +++ b/contrib/hstore/meson.build @@ -1,15 +1,23 @@ # .. so that includes of hstore/hstore.h work hstore_inc = include_directories('.', '../') +hstore_sources = files( + 'hstore_compat.c', + 'hstore_gin.c', + 'hstore_gist.c', + 'hstore_io.c', + 'hstore_op.c', + 'hstore_subs.c', +) + +if host_system == 'windows' + hstore_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'hstore', + '--FILEDESC', 'hstore - key/value pair data type',]) +endif + hstore = shared_module('hstore', - files( - 'hstore_compat.c', - 'hstore_gin.c', - 'hstore_gist.c', - 'hstore_io.c', - 'hstore_op.c', - 'hstore_subs.c', - ), + hstore_sources, kwargs: contrib_mod_args, ) contrib_targets += hstore diff --git a/contrib/hstore_plperl/meson.build b/contrib/hstore_plperl/meson.build index bbafa0221bd..a238fee6a26 100644 --- a/contrib/hstore_plperl/meson.build +++ b/contrib/hstore_plperl/meson.build @@ -6,6 +6,12 @@ hstore_plperl_sources = files( 'hstore_plperl.c', ) +if host_system == 'windows' + hstore_plperl_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'hstore_plperl', + '--FILEDESC', 'hstore_plperl - hstore transform for plperl',]) +endif + hstore_plperl = shared_module('hstore_plperl', hstore_plperl_sources, include_directories: [plperl_inc, hstore_inc], diff --git a/contrib/hstore_plpython/meson.build b/contrib/hstore_plpython/meson.build index 214b48519a9..6071aaeb4b3 100644 --- a/contrib/hstore_plpython/meson.build +++ b/contrib/hstore_plpython/meson.build @@ -6,6 +6,12 @@ hstore_plpython_sources = files( 'hstore_plpython.c', ) +if host_system == 'windows' + hstore_plpython_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'hstore_plpython3', + '--FILEDESC', 'hstore_plpython - hstore transform for plpython',]) +endif + hstore_plpython = shared_module('hstore_plpython3', hstore_plpython_sources, include_directories: [plpython_inc, hstore_inc, ], diff --git a/contrib/intarray/meson.build b/contrib/intarray/meson.build index 1655bcbb3fd..b7cf1ce0cad 100644 --- a/contrib/intarray/meson.build +++ b/contrib/intarray/meson.build @@ -8,6 +8,12 @@ intarray_sources = files( '_intbig_gist.c', ) +if host_system == 'windows' + intarray_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', '_int', + '--FILEDESC', 'intarray - functions and operators for arrays of integers',]) +endif + intarray = shared_module('_int', intarray_sources, kwargs: contrib_mod_args, diff --git a/contrib/isn/meson.build b/contrib/isn/meson.build index cc30bbeb55c..db68a718313 100644 --- a/contrib/isn/meson.build +++ b/contrib/isn/meson.build @@ -2,6 +2,12 @@ isn_sources = files( 'isn.c', ) +if host_system == 'windows' + isn_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'isn', + '--FILEDESC', 'isn - data types for international product numbering standards',]) +endif + isn = shared_module('isn', isn_sources, kwargs: contrib_mod_args, diff --git a/contrib/jsonb_plperl/meson.build b/contrib/jsonb_plperl/meson.build index 5c915d8ed94..071a7a98d2c 100644 --- a/contrib/jsonb_plperl/meson.build +++ b/contrib/jsonb_plperl/meson.build @@ -6,6 +6,12 @@ jsonb_plperl_sources = files( 'jsonb_plperl.c', ) +if host_system == 'windows' + jsonb_plperl_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'jsonb_plperl', + '--FILEDESC', 'jsonb_plperl - jsonb transform for plperl',]) +endif + jsonb_plperl = shared_module('jsonb_plperl', jsonb_plperl_sources, include_directories: [plperl_inc], diff --git a/contrib/jsonb_plpython/meson.build b/contrib/jsonb_plpython/meson.build index de8e1105c6a..84dc1161e8b 100644 --- a/contrib/jsonb_plpython/meson.build +++ b/contrib/jsonb_plpython/meson.build @@ -6,6 +6,12 @@ jsonb_plpython_sources = files( 'jsonb_plpython.c', ) +if host_system == 'windows' + jsonb_plpython_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'jsonb_plpython3', + '--FILEDESC', 'jsonb_plpython - jsonb transform for plpython',]) +endif + jsonb_plpython = shared_module('jsonb_plpython3', jsonb_plpython_sources, include_directories: [plpython_inc], diff --git a/contrib/lo/meson.build b/contrib/lo/meson.build index 9082d5713c7..61ae131f1cc 100644 --- a/contrib/lo/meson.build +++ b/contrib/lo/meson.build @@ -2,6 +2,12 @@ lo_sources = files( 'lo.c', ) +if host_system == 'windows' + lo_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'lo', + '--FILEDESC', 'lo - management for large objects',]) +endif + lo = shared_module('lo', lo_sources, kwargs: contrib_mod_args, diff --git a/contrib/ltree/meson.build b/contrib/ltree/meson.build index 9463fc2c5e5..421292cea9d 100644 --- a/contrib/ltree/meson.build +++ b/contrib/ltree/meson.build @@ -13,6 +13,12 @@ ltree_sources = files( # .. so that includes of ltree/ltree.h work ltree_inc = include_directories('.', '../') +if host_system == 'windows' + ltree_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'ltree', + '--FILEDESC', 'ltree - hierarchical label data type',]) +endif + ltree = shared_module('ltree', ltree_sources, kwargs: contrib_mod_args, diff --git a/contrib/ltree_plpython/meson.build b/contrib/ltree_plpython/meson.build index 429d75006aa..acf5e4a6fc8 100644 --- a/contrib/ltree_plpython/meson.build +++ b/contrib/ltree_plpython/meson.build @@ -6,6 +6,12 @@ ltree_plpython_sources = files( 'ltree_plpython.c', ) +if host_system == 'windows' + ltree_plpython_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'ltree_plpython3', + '--FILEDESC', 'ltree_plpython - ltree transform for plpython',]) +endif + ltree_plpython = shared_module('ltree_plpython3', ltree_plpython_sources, include_directories: [plpython_inc, ltree_inc], diff --git a/contrib/oid2name/meson.build b/contrib/oid2name/meson.build index 1dad5d8f6e7..1a248f19260 100644 --- a/contrib/oid2name/meson.build +++ b/contrib/oid2name/meson.build @@ -1,5 +1,15 @@ +oid2name_sources = files( + 'oid2name.c', +) + +if host_system == 'windows' + oid2name_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'oid2name', + '--FILEDESC', 'oid2name - examine the file structure',]) +endif + oid2name = executable('oid2name', - ['oid2name.c'], + oid2name_sources, dependencies: [frontend_code, libpq], kwargs: default_bin_args, ) diff --git a/contrib/old_snapshot/meson.build b/contrib/old_snapshot/meson.build index 8e7ee09a43a..77276c3715a 100644 --- a/contrib/old_snapshot/meson.build +++ b/contrib/old_snapshot/meson.build @@ -2,6 +2,12 @@ old_snapshot_sources = files( 'time_mapping.c', ) +if host_system == 'windows' + old_snapshot_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'old_snapshot', + '--FILEDESC', 'old_snapshot - utilities in support of old_snapshot_threshold',]) +endif + old_snapshot = shared_module('old_snapshot', old_snapshot_sources, kwargs: contrib_mod_args, diff --git a/contrib/pageinspect/meson.build b/contrib/pageinspect/meson.build index 4af8153e4fd..3ec50b9445e 100644 --- a/contrib/pageinspect/meson.build +++ b/contrib/pageinspect/meson.build @@ -9,6 +9,12 @@ pageinspect_sources = files( 'rawpage.c', ) +if host_system == 'windows' + pageinspect_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pageinspect', + '--FILEDESC', 'pageinspect - functions to inspect contents of database pages',]) +endif + pageinspect = shared_module('pageinspect', pageinspect_sources, kwargs: contrib_mod_args, diff --git a/contrib/passwordcheck/meson.build b/contrib/passwordcheck/meson.build index 7da47d02f1d..383d7df372a 100644 --- a/contrib/passwordcheck/meson.build +++ b/contrib/passwordcheck/meson.build @@ -9,6 +9,12 @@ passwordcheck_deps = [] # passwordcheck_c_args += ['-DUSE_CRACKLIB', '-DCRACKLIB_DICTPATH="/usr/lib/cracklib_dict"'] # passwordcheck_deps += [cc.find_library('crack')] +if host_system == 'windows' + passwordcheck_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'passwordcheck', + '--FILEDESC', 'passwordcheck - strengthen user password checks',]) +endif + passwordcheck = shared_module('passwordcheck', passwordcheck_sources, c_args: passwordcheck_c_args, diff --git a/contrib/pg_buffercache/meson.build b/contrib/pg_buffercache/meson.build index 2c69eae3ea2..dd9948e5f0b 100644 --- a/contrib/pg_buffercache/meson.build +++ b/contrib/pg_buffercache/meson.build @@ -1,7 +1,15 @@ +pg_buffercache_sources = files( + 'pg_buffercache_pages.c', +) + +if host_system == 'windows' + pg_buffercache_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_buffercache', + '--FILEDESC', 'pg_buffercache - monitoring of shared buffer cache in real-time',]) +endif + pg_buffercache = shared_module('pg_buffercache', - files( - 'pg_buffercache_pages.c', - ), + pg_buffercache_sources, kwargs: contrib_mod_args, ) contrib_targets += pg_buffercache diff --git a/contrib/pg_freespacemap/meson.build b/contrib/pg_freespacemap/meson.build index f795014d7ca..904b37b6e9b 100644 --- a/contrib/pg_freespacemap/meson.build +++ b/contrib/pg_freespacemap/meson.build @@ -1,7 +1,15 @@ +pg_freespacemap_sources = files( + 'pg_freespacemap.c', +) + +if host_system == 'windows' + pg_freespacemap_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_freespacemap', + '--FILEDESC', 'pg_freespacemap - monitoring of free space map',]) +endif + pg_freespacemap = shared_module('pg_freespacemap', - files( - 'pg_freespacemap.c', - ), + pg_freespacemap_sources, kwargs: contrib_mod_args, ) contrib_targets += pg_freespacemap diff --git a/contrib/pg_prewarm/meson.build b/contrib/pg_prewarm/meson.build index bdca9af4f27..b7140cee34b 100644 --- a/contrib/pg_prewarm/meson.build +++ b/contrib/pg_prewarm/meson.build @@ -1,8 +1,16 @@ +pg_prewarm_sources = files( + 'autoprewarm.c', + 'pg_prewarm.c', +) + +if host_system == 'windows' + pg_prewarm_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_prewarm', + '--FILEDESC', 'pg_prewarm - preload relation data into system buffer cache',]) +endif + pg_prewarm = shared_module('pg_prewarm', - files( - 'autoprewarm.c', - 'pg_prewarm.c', - ), + pg_prewarm_sources, kwargs: contrib_mod_args, ) contrib_targets += pg_prewarm diff --git a/contrib/pg_stat_statements/meson.build b/contrib/pg_stat_statements/meson.build index ac117d2fc1d..854df138e76 100644 --- a/contrib/pg_stat_statements/meson.build +++ b/contrib/pg_stat_statements/meson.build @@ -1,5 +1,15 @@ +pg_stat_statements_sources = files( + 'pg_stat_statements.c', +) + +if host_system == 'windows' + pg_stat_statements_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_stat_statements', + '--FILEDESC', 'pg_stat_statements - execution statistics of SQL statements',]) +endif + pg_stat_statements = shared_module('pg_stat_statements', - files('pg_stat_statements.c'), + pg_stat_statements_sources, kwargs: contrib_mod_args + { 'dependencies': contrib_mod_args['dependencies'], }, diff --git a/contrib/pg_surgery/meson.build b/contrib/pg_surgery/meson.build index ac71caa5276..7b5c5999f4b 100644 --- a/contrib/pg_surgery/meson.build +++ b/contrib/pg_surgery/meson.build @@ -1,7 +1,15 @@ +pg_surgery_sources = files( + 'heap_surgery.c', +) + +if host_system == 'windows' + pg_surgery_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_surgery', + '--FILEDESC', 'pg_surgery - perform surgery on a damaged relation',]) +endif + pg_surgery = shared_module('pg_surgery', - files( - 'heap_surgery.c', - ), + pg_surgery_sources, kwargs: contrib_mod_args, ) contrib_targets += pg_surgery diff --git a/contrib/pg_trgm/meson.build b/contrib/pg_trgm/meson.build index a90628d23c6..c8c7c07b308 100644 --- a/contrib/pg_trgm/meson.build +++ b/contrib/pg_trgm/meson.build @@ -1,10 +1,18 @@ +pg_trgm_sources = files( + 'trgm_gin.c', + 'trgm_gist.c', + 'trgm_op.c', + 'trgm_regexp.c', +) + +if host_system == 'windows' + pg_trgm_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_trgm', + '--FILEDESC', 'pg_trgm - trigram matching',]) +endif + pg_trgm = shared_module('pg_trgm', - files( - 'trgm_gin.c', - 'trgm_gist.c', - 'trgm_op.c', - 'trgm_regexp.c', - ), + pg_trgm_sources, kwargs: contrib_mod_args, ) contrib_targets += pg_trgm diff --git a/contrib/pg_visibility/meson.build b/contrib/pg_visibility/meson.build index 933dc99ac4d..263a0d08b82 100644 --- a/contrib/pg_visibility/meson.build +++ b/contrib/pg_visibility/meson.build @@ -1,7 +1,15 @@ +pg_visibility_sources = files( + 'pg_visibility.c', +) + +if host_system == 'windows' + pg_visibility_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_visibility', + '--FILEDESC', 'pg_visibility - page visibility information',]) +endif + pg_visibility = shared_module('pg_visibility', - files( - 'pg_visibility.c', - ), + pg_visibility_sources, kwargs: contrib_mod_args, ) contrib_targets += pg_visibility diff --git a/contrib/pg_walinspect/meson.build b/contrib/pg_walinspect/meson.build index d6b27877dd0..4314a3182a2 100644 --- a/contrib/pg_walinspect/meson.build +++ b/contrib/pg_walinspect/meson.build @@ -1,5 +1,11 @@ pg_walinspect_sources = files('pg_walinspect.c') +if host_system == 'windows' + pg_walinspect_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_walinspect', + '--FILEDESC', 'pg_walinspect - functions to inspect contents of PostgreSQL Write-Ahead Log',]) +endif + pg_walinspect = shared_module('pg_walinspect', pg_walinspect_sources, kwargs: contrib_mod_args + { diff --git a/contrib/pgcrypto/meson.build b/contrib/pgcrypto/meson.build index fe0851bf8e8..7fc7bbc7ca1 100644 --- a/contrib/pgcrypto/meson.build +++ b/contrib/pgcrypto/meson.build @@ -69,6 +69,12 @@ else pgcrypto_regress += 'pgp-zlib-DISABLED' endif +if host_system == 'windows' + pgcrypto_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pgcrypto', + '--FILEDESC', 'pgcrypto - cryptographic functions',]) +endif + pgcrypto = shared_module('pgcrypto', pgcrypto_sources, link_with: pgcrypto_link_with, diff --git a/contrib/pgrowlocks/meson.build b/contrib/pgrowlocks/meson.build index 1b41691a2a3..8092f0d4a64 100644 --- a/contrib/pgrowlocks/meson.build +++ b/contrib/pgrowlocks/meson.build @@ -1,7 +1,15 @@ +pgrowlocks_sources = files( + 'pgrowlocks.c', +) + +if host_system == 'windows' + pgrowlocks_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pgrowlocks', + '--FILEDESC', 'pgrowlocks - display row locking information',]) +endif + pgrowlocks = shared_module('pgrowlocks', - files( - 'pgrowlocks.c', - ), + pgrowlocks_sources, kwargs: contrib_mod_args, ) contrib_targets += pgrowlocks diff --git a/contrib/pgstattuple/meson.build b/contrib/pgstattuple/meson.build index 8e828692d5c..05e4cd46a5c 100644 --- a/contrib/pgstattuple/meson.build +++ b/contrib/pgstattuple/meson.build @@ -1,9 +1,17 @@ +pgstattuple_sources = files( + 'pgstatapprox.c', + 'pgstatindex.c', + 'pgstattuple.c', +) + +if host_system == 'windows' + pgstattuple_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pgstattuple', + '--FILEDESC', 'pgstattuple - tuple-level statistics',]) +endif + pgstattuple = shared_module('pgstattuple', - files( - 'pgstatapprox.c', - 'pgstatindex.c', - 'pgstattuple.c', - ), + pgstattuple_sources, kwargs: contrib_mod_args, ) contrib_targets += pgstattuple diff --git a/contrib/postgres_fdw/meson.build b/contrib/postgres_fdw/meson.build index 378885ec93b..d3746ff135c 100644 --- a/contrib/postgres_fdw/meson.build +++ b/contrib/postgres_fdw/meson.build @@ -6,6 +6,12 @@ postgres_fdw_sources = files( 'shippable.c', ) +if host_system == 'windows' + postgres_fdw_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'postgres_fdw', + '--FILEDESC', 'postgres_fdw - foreign data wrapper for PostgreSQL',]) +endif + postgres_fdw = shared_module('postgres_fdw', postgres_fdw_sources, kwargs: contrib_mod_args + { diff --git a/contrib/seg/meson.build b/contrib/seg/meson.build index e476eab2a77..c6fbb22999b 100644 --- a/contrib/seg/meson.build +++ b/contrib/seg/meson.build @@ -17,6 +17,12 @@ seg_parse = custom_target('segparse', generated_sources += seg_parse.to_list() seg_sources += seg_parse +if host_system == 'windows' + seg_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'seg', + '--FILEDESC', 'seg - line segment data type',]) +endif + seg = shared_module('seg', seg_sources, include_directories: include_directories('.'), diff --git a/contrib/sepgsql/meson.build b/contrib/sepgsql/meson.build index 60a95e17c2f..8bef239e3c2 100644 --- a/contrib/sepgsql/meson.build +++ b/contrib/sepgsql/meson.build @@ -14,6 +14,12 @@ sepgsql_sources = files( 'uavc.c', ) +if host_system == 'windows' + sepgsql_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'sepgsql', + '--FILEDESC', 'sepgsql - SELinux integration',]) +endif + sepgsql = shared_module('sepgsql', sepgsql_sources, kwargs: contrib_mod_args + { diff --git a/contrib/spi/meson.build b/contrib/spi/meson.build index 98008980ec2..e7d78189ef5 100644 --- a/contrib/spi/meson.build +++ b/contrib/spi/meson.build @@ -1,5 +1,15 @@ +autoinc_sources = files( + 'autoinc.c', +) + +if host_system == 'windows' + autoinc_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'autoinc', + '--FILEDESC', 'spi - examples of using SPI and triggers',]) +endif + autoinc = shared_module('autoinc', - ['autoinc.c'], + autoinc_sources, kwargs: contrib_mod_args, ) contrib_targets += autoinc @@ -9,8 +19,18 @@ install_data('autoinc.control', 'autoinc--1.0.sql', ) +insert_username_sources = files( + 'insert_username.c', +) + +if host_system == 'windows' + insert_username_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'insert_username', + '--FILEDESC', 'spi - examples of using SPI and triggers',]) +endif + insert_username = shared_module('insert_username', - ['insert_username.c'], + insert_username_sources, kwargs: contrib_mod_args, ) contrib_targets += insert_username @@ -22,8 +42,18 @@ install_data( ) +moddatetime_sources = files( + 'moddatetime.c', +) + +if host_system == 'windows' + moddatetime_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'moddatetime', + '--FILEDESC', 'spi - examples of using SPI and triggers',]) +endif + moddatetime = shared_module('moddatetime', - ['moddatetime.c'], + moddatetime_sources, kwargs: contrib_mod_args, ) contrib_targets += moddatetime @@ -38,8 +68,18 @@ install_data( # comment out if you want a quieter refint package for other uses refint_cflags = ['-DREFINT_VERBOSE'] +refint_sources = files( + 'refint.c', +) + +if host_system == 'windows' + refint_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'refint', + '--FILEDESC', 'spi - examples of using SPI and triggers',]) +endif + refint = shared_module('refint', - ['refint.c'], + refint_sources, c_args: refint_cflags, kwargs: contrib_mod_args, ) diff --git a/contrib/sslinfo/meson.build b/contrib/sslinfo/meson.build index 53f752a08ac..136983e783d 100644 --- a/contrib/sslinfo/meson.build +++ b/contrib/sslinfo/meson.build @@ -2,10 +2,18 @@ if not ssl.found() subdir_done() endif +sslinfo_sources = files( + 'sslinfo.c', +) + +if host_system == 'windows' + sslinfo_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'sslinfo', + '--FILEDESC', 'sslinfo - information about client SSL certificate',]) +endif + sslinfo = shared_module('sslinfo', - files( - 'sslinfo.c', - ), + sslinfo_sources, kwargs: contrib_mod_args + { 'dependencies': [ssl, contrib_mod_args['dependencies']], } diff --git a/contrib/tablefunc/meson.build b/contrib/tablefunc/meson.build index f4230096c0c..d2ddc8d3b39 100644 --- a/contrib/tablefunc/meson.build +++ b/contrib/tablefunc/meson.build @@ -1,7 +1,15 @@ +tablefunc_sources = files( + 'tablefunc.c', +) + +if host_system == 'windows' + tablefunc_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'tablefunc', + '--FILEDESC', 'tablefunc - various functions that return tables',]) +endif + tablefunc = shared_module('tablefunc', - files( - 'tablefunc.c', - ), + tablefunc_sources, kwargs: contrib_mod_args, ) contrib_targets += tablefunc diff --git a/contrib/tcn/meson.build b/contrib/tcn/meson.build index c3a025247d4..71261c3b0a2 100644 --- a/contrib/tcn/meson.build +++ b/contrib/tcn/meson.build @@ -1,7 +1,15 @@ +tcn_sources = files( + 'tcn.c', +) + +if host_system == 'windows' + tcn_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'tcn', + '--FILEDESC', 'tcn - trigger function notifying listeners',]) +endif + tcn = shared_module('tcn', - files( - 'tcn.c', - ), + tcn_sources, kwargs: contrib_mod_args, ) contrib_targets += tcn diff --git a/contrib/test_decoding/meson.build b/contrib/test_decoding/meson.build index dd7cb0101ad..6376103c689 100644 --- a/contrib/test_decoding/meson.build +++ b/contrib/test_decoding/meson.build @@ -2,6 +2,12 @@ test_decoding_sources = files( 'test_decoding.c', ) +if host_system == 'windows' + test_decoding_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'test_decoding', + '--FILEDESC', 'test_decoding - example of a logical decoding output plugin',]) +endif + test_decoding = shared_module('test_decoding', test_decoding_sources, kwargs: contrib_mod_args, diff --git a/contrib/tsm_system_rows/meson.build b/contrib/tsm_system_rows/meson.build index b9cd42115a8..380abb49883 100644 --- a/contrib/tsm_system_rows/meson.build +++ b/contrib/tsm_system_rows/meson.build @@ -1,7 +1,15 @@ +tsm_system_rows_sources = files( + 'tsm_system_rows.c', +) + +if host_system == 'windows' + tsm_system_rows_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'tsm_system_rows', + '--FILEDESC', 'tsm_system_rows - TABLESAMPLE method which accepts number of rows as a limit',]) +endif + tsm_system_rows = shared_module('tsm_system_rows', - files( - 'tsm_system_rows.c', - ), + tsm_system_rows_sources, kwargs: contrib_mod_args, ) contrib_targets += tsm_system_rows diff --git a/contrib/tsm_system_time/meson.build b/contrib/tsm_system_time/meson.build index 18015912ffb..e57a2702c60 100644 --- a/contrib/tsm_system_time/meson.build +++ b/contrib/tsm_system_time/meson.build @@ -1,7 +1,15 @@ +tsm_system_time_sources = files( + 'tsm_system_time.c', +) + +if host_system == 'windows' + tsm_system_time_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'tsm_system_time', + '--FILEDESC', 'tsm_system_time - TABLESAMPLE method which accepts time in milliseconds as a limit',]) +endif + tsm_system_time = shared_module('tsm_system_time', - files( - 'tsm_system_time.c', - ), + tsm_system_time_sources, kwargs: contrib_mod_args, ) contrib_targets += tsm_system_time diff --git a/contrib/unaccent/meson.build b/contrib/unaccent/meson.build index 872b76e3223..438035132f8 100644 --- a/contrib/unaccent/meson.build +++ b/contrib/unaccent/meson.build @@ -1,7 +1,15 @@ +unaccent_sources = files( + 'unaccent.c', +) + +if host_system == 'windows' + unaccent_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'unaccent', + '--FILEDESC', 'unaccent - text search dictionary that removes accents',]) +endif + unaccent = shared_module('unaccent', - files( - 'unaccent.c', - ), + unaccent_sources, kwargs: contrib_mod_args, ) contrib_targets += unaccent diff --git a/contrib/uuid-ossp/meson.build b/contrib/uuid-ossp/meson.build index da6d1d75c12..28730f398f0 100644 --- a/contrib/uuid-ossp/meson.build +++ b/contrib/uuid-ossp/meson.build @@ -2,10 +2,18 @@ if not uuid.found() subdir_done() endif +uuid_ossp_sources = files( + 'uuid-ossp.c', +) + +if host_system == 'windows' + uuid_ossp_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'uuid-ossp', + '--FILEDESC', 'uuid-ossp - UUID generation',]) +endif + uuid_ossp = shared_module('uuid-ossp', - files( - 'uuid-ossp.c', - ), + uuid_ossp_sources, kwargs: contrib_mod_args + { 'dependencies': [uuid, contrib_mod_args['dependencies']], }, diff --git a/contrib/vacuumlo/meson.build b/contrib/vacuumlo/meson.build index 7a632b87d1b..846de47dbd1 100644 --- a/contrib/vacuumlo/meson.build +++ b/contrib/vacuumlo/meson.build @@ -1,5 +1,15 @@ +vacuumlo_sources = files( + 'vacuumlo.c', +) + +if host_system == 'windows' + vacuumlo_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'vacuumlo', + '--FILEDESC', 'vacuumlo - removes orphaned large objects',]) +endif + vacuumlo = executable('vacuumlo', - ['vacuumlo.c'], + vacuumlo_sources, dependencies: [frontend_code, libpq], kwargs: default_bin_args, ) diff --git a/contrib/xml2/meson.build b/contrib/xml2/meson.build index 9c0b56f01f6..89b0d677516 100644 --- a/contrib/xml2/meson.build +++ b/contrib/xml2/meson.build @@ -2,11 +2,19 @@ if not libxml.found() subdir_done() endif +xml2_sources = files( + 'xpath.c', + 'xslt_proc.c', +) + +if host_system == 'windows' + xml2_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pgxml', + '--FILEDESC', 'xml2 - XPath querying and XSLT',]) +endif + xml2 = shared_module('pgxml', - files( - 'xpath.c', - 'xslt_proc.c', - ), + xml2_sources, kwargs: contrib_mod_args + { 'dependencies': [libxml, libxslt, contrib_mod_args['dependencies']], }, diff --git a/src/interfaces/ecpg/compatlib/meson.build b/src/interfaces/ecpg/compatlib/meson.build index 5887cb92b52..e5dc0edc04b 100644 --- a/src/interfaces/ecpg/compatlib/meson.build +++ b/src/interfaces/ecpg/compatlib/meson.build @@ -1,7 +1,11 @@ export_file = custom_target('libpq.exports', kwargs: gen_export_kwargs) -ecpg_compat = both_libraries('libecpg_compat', +ecpg_compat_sources = files( 'informix.c', +) + +ecpg_compat = both_libraries('libecpg_compat', + ecpg_compat_sources, include_directories: ['.', ecpg_inc, postgres_inc, libpq_inc], c_args: ['-DSO_MAJOR_VERSION=3'], dependencies: [frontend_code, thread_dep], diff --git a/src/interfaces/ecpg/preproc/meson.build b/src/interfaces/ecpg/preproc/meson.build index 1be49c8c27f..74876f039c9 100644 --- a/src/interfaces/ecpg/preproc/meson.build +++ b/src/interfaces/ecpg/preproc/meson.build @@ -93,6 +93,12 @@ ecpg_kwlist = custom_target('ecpg_kwlist_d.h', generated_sources += ecpg_kwlist ecpg_sources += ecpg_kwlist +if host_system == 'windows' + ecpg_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'ecpg', + '--FILEDESC', 'ecpg - embedded SQL precompiler for C',]) +endif + ecpg_exe = executable('ecpg', ecpg_sources, include_directories: ['.', ecpg_inc, postgres_inc, libpq_inc], diff --git a/src/interfaces/ecpg/test/meson.build b/src/interfaces/ecpg/test/meson.build index f0ace641f0c..f67f2dffb71 100644 --- a/src/interfaces/ecpg/test/meson.build +++ b/src/interfaces/ecpg/test/meson.build @@ -7,6 +7,12 @@ pg_regress_ecpg_sources = pg_regress_c + files( 'pg_regress_ecpg.c', ) +if host_system == 'windows' + pg_regress_ecpg_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_regress_ecpg', + '--FILEDESC', 'ECPG Test - regression tests for ECPG',]) +endif + pg_regress_ecpg = executable('pg_regress_ecpg', pg_regress_ecpg_sources, c_args: pg_regress_cflags, diff --git a/src/test/isolation/meson.build b/src/test/isolation/meson.build index c7656fd4609..ba27b8c1d44 100644 --- a/src/test/isolation/meson.build +++ b/src/test/isolation/meson.build @@ -23,6 +23,12 @@ spec_parser = custom_target('specparse', isolationtester_sources += spec_parser generated_sources += spec_parser.to_list() +if host_system == 'windows' + isolation_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_isolation_regress', + '--FILEDESC', 'pg_isolation_regress - multi-client test driver',]) +endif + pg_isolation_regress = executable('pg_isolation_regress', isolation_sources, c_args: pg_regress_cflags, @@ -34,6 +40,13 @@ pg_isolation_regress = executable('pg_isolation_regress', ) bin_targets += pg_isolation_regress + +if host_system == 'windows' + isolationtester_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'isolationtester', + '--FILEDESC', 'isolationtester - multi-client test driver',]) +endif + isolationtester = executable('isolationtester', isolationtester_sources, include_directories: include_directories('.'), diff --git a/src/test/modules/delay_execution/meson.build b/src/test/modules/delay_execution/meson.build index cf4bdaba637..a0c3ab6afe7 100644 --- a/src/test/modules/delay_execution/meson.build +++ b/src/test/modules/delay_execution/meson.build @@ -1,6 +1,17 @@ # FIXME: prevent install during main install, but not during test :/ + +delay_execution_sources = files( + 'delay_execution.c', +) + +if host_system == 'windows' + delay_execution_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'delay_execution', + '--FILEDESC', 'delay_execution - allow delay between parsing and execution',]) +endif + delay_execution = shared_module('delay_execution', - ['delay_execution.c'], + delay_execution_sources, kwargs: pg_mod_args, ) testprep_targets += delay_execution diff --git a/src/test/modules/dummy_index_am/meson.build b/src/test/modules/dummy_index_am/meson.build index 56ff5f48001..4ce82491135 100644 --- a/src/test/modules/dummy_index_am/meson.build +++ b/src/test/modules/dummy_index_am/meson.build @@ -1,6 +1,17 @@ # FIXME: prevent install during main install, but not during test :/ + +dummy_index_am_sources = files( + 'dummy_index_am.c', +) + +if host_system == 'windows' + dummy_index_am_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'dummy_index_am', + '--FILEDESC', 'dummy_index_am - index access method template',]) +endif + dummy_index_am = shared_module('dummy_index_am', - ['dummy_index_am.c'], + dummy_index_am_sources, kwargs: pg_mod_args, ) testprep_targets += dummy_index_am diff --git a/src/test/modules/dummy_seclabel/meson.build b/src/test/modules/dummy_seclabel/meson.build index 21b7cf8f353..81b626e496c 100644 --- a/src/test/modules/dummy_seclabel/meson.build +++ b/src/test/modules/dummy_seclabel/meson.build @@ -1,6 +1,17 @@ # FIXME: prevent install during main install, but not during test :/ + +dummy_seclabel_sources = files( + 'dummy_seclabel.c', +) + +if host_system == 'windows' + dummy_seclabel_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'dummy_seclabel', + '--FILEDESC', 'dummy_seclabel - regression testing of the SECURITY LABEL statement',]) +endif + dummy_seclabel = shared_module('dummy_seclabel', - ['dummy_seclabel.c'], + dummy_seclabel_sources, kwargs: pg_mod_args, ) testprep_targets += dummy_seclabel diff --git a/src/test/modules/libpq_pipeline/meson.build b/src/test/modules/libpq_pipeline/meson.build index 8384b6e3b2a..de0e2d15626 100644 --- a/src/test/modules/libpq_pipeline/meson.build +++ b/src/test/modules/libpq_pipeline/meson.build @@ -1,7 +1,15 @@ +libpq_pipeline_sources = files( + 'libpq_pipeline.c', +) + +if host_system == 'windows' + libpq_pipeline_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'libpq_pipeline', + '--FILEDESC', 'libpq_pipeline - test program for pipeline execution',]) +endif + libpq_pipeline = executable('libpq_pipeline', - files( - 'libpq_pipeline.c', - ), + libpq_pipeline_sources, dependencies: [frontend_code, libpq], kwargs: default_bin_args + { 'install': false, diff --git a/src/test/modules/plsample/meson.build b/src/test/modules/plsample/meson.build index 45de3f1990d..e1ea2c7a16f 100644 --- a/src/test/modules/plsample/meson.build +++ b/src/test/modules/plsample/meson.build @@ -1,6 +1,17 @@ # FIXME: prevent install during main install, but not during test :/ + +plsample_sources = files( + 'plsample.c', +) + +if host_system == 'windows' + plsample_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'plsample', + '--FILEDESC', 'PL/Sample - template for procedural language',]) +endif + plsample = shared_module('plsample', - ['plsample.c'], + plsample_sources, kwargs: pg_mod_args, ) testprep_targets += plsample diff --git a/src/test/modules/spgist_name_ops/meson.build b/src/test/modules/spgist_name_ops/meson.build index 857fc7e140e..445296fee0b 100644 --- a/src/test/modules/spgist_name_ops/meson.build +++ b/src/test/modules/spgist_name_ops/meson.build @@ -1,6 +1,17 @@ # FIXME: prevent install during main install, but not during test :/ + +spgist_name_ops_sources = files( + 'spgist_name_ops.c', +) + +if host_system == 'windows' + spgist_name_ops_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'spgist_name_ops', + '--FILEDESC', 'spgist_name_ops - test opclass for SP-GiST',]) +endif + spgist_name_ops = shared_module('spgist_name_ops', - ['spgist_name_ops.c'], + spgist_name_ops_sources, kwargs: pg_mod_args, ) testprep_targets += spgist_name_ops diff --git a/src/test/modules/ssl_passphrase_callback/meson.build b/src/test/modules/ssl_passphrase_callback/meson.build index a57bd0693a3..a9eb4c564da 100644 --- a/src/test/modules/ssl_passphrase_callback/meson.build +++ b/src/test/modules/ssl_passphrase_callback/meson.build @@ -3,8 +3,19 @@ if not ssl.found() endif # FIXME: prevent install during main install, but not during test :/ + +ssl_passphrase_callback_sources = files( + 'ssl_passphrase_func.c', +) + +if host_system == 'windows' + ssl_passphrase_callback_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'ssl_passphrase_func', + '--FILEDESC', 'callback function to provide a passphrase',]) +endif + ssl_passphrase_callback = shared_module('ssl_passphrase_func', - ['ssl_passphrase_func.c'], + ssl_passphrase_callback_sources, kwargs: pg_mod_args + { 'dependencies': [ssl, pg_mod_args['dependencies']], }, diff --git a/src/test/modules/test_bloomfilter/meson.build b/src/test/modules/test_bloomfilter/meson.build index 945eb5a70c4..3cf6b05754f 100644 --- a/src/test/modules/test_bloomfilter/meson.build +++ b/src/test/modules/test_bloomfilter/meson.build @@ -1,6 +1,17 @@ # FIXME: prevent install during main install, but not during test :/ + +test_bloomfilter_sources = files( + 'test_bloomfilter.c', +) + +if host_system == 'windows' + test_bloomfilter_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'test_bloomfilter', + '--FILEDESC', 'test_bloomfilter - test code for Bloom filter library',]) +endif + test_bloomfilter = shared_module('test_bloomfilter', - ['test_bloomfilter.c'], + test_bloomfilter_sources, kwargs: pg_mod_args, ) testprep_targets += test_bloomfilter diff --git a/src/test/modules/test_ddl_deparse/meson.build b/src/test/modules/test_ddl_deparse/meson.build index 81ad5adc526..54d44f9b2b4 100644 --- a/src/test/modules/test_ddl_deparse/meson.build +++ b/src/test/modules/test_ddl_deparse/meson.build @@ -1,6 +1,17 @@ # FIXME: prevent install during main install, but not during test :/ + +test_ddl_deparse_sources = files( + 'test_ddl_deparse.c', +) + +if host_system == 'windows' + test_ddl_deparse_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'test_ddl_deparse', + '--FILEDESC', 'test_ddl_deparse - regression testing for DDL deparsing',]) +endif + test_ddl_deparse = shared_module('test_ddl_deparse', - ['test_ddl_deparse.c'], + test_ddl_deparse_sources, kwargs: pg_mod_args, ) testprep_targets += test_ddl_deparse diff --git a/src/test/modules/test_ginpostinglist/meson.build b/src/test/modules/test_ginpostinglist/meson.build index abf0a3b0430..b3b49c56122 100644 --- a/src/test/modules/test_ginpostinglist/meson.build +++ b/src/test/modules/test_ginpostinglist/meson.build @@ -1,6 +1,17 @@ # FIXME: prevent install during main install, but not during test :/ + +test_ginpostinglist_sources = files( + 'test_ginpostinglist.c', +) + +if host_system == 'windows' + test_ginpostinglist_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'test_ginpostinglist', + '--FILEDESC', 'test_ginpostinglist - test code for src/backend/access/gin//ginpostinglist.c',]) +endif + test_ginpostinglist = shared_module('test_ginpostinglist', - ['test_ginpostinglist.c'], + test_ginpostinglist_sources, kwargs: pg_mod_args, ) testprep_targets += test_ginpostinglist diff --git a/src/test/modules/test_integerset/meson.build b/src/test/modules/test_integerset/meson.build index c32c469c69a..4bd75af4b5e 100644 --- a/src/test/modules/test_integerset/meson.build +++ b/src/test/modules/test_integerset/meson.build @@ -1,6 +1,17 @@ # FIXME: prevent install during main install, but not during test :/ + +test_integerset_sources = files( + 'test_integerset.c', +) + +if host_system == 'windows' + test_integerset_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'test_integerset', + '--FILEDESC', 'test_integerset - test code for src/backend/lib/integerset.c',]) +endif + test_integerset = shared_module('test_integerset', - ['test_integerset.c'], + test_integerset_sources, kwargs: pg_mod_args, ) testprep_targets += test_integerset diff --git a/src/test/modules/test_lfind/meson.build b/src/test/modules/test_lfind/meson.build index a388de1156a..c5405b8f878 100644 --- a/src/test/modules/test_lfind/meson.build +++ b/src/test/modules/test_lfind/meson.build @@ -1,6 +1,17 @@ # FIXME: prevent install during main install, but not during test :/ + +test_lfind_sources = files( + 'test_lfind.c', +) + +if host_system == 'windows' + test_lfind_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'test_lfind', + '--FILEDESC', 'test_lfind - test code for optimized linear search functions',]) +endif + test_lfind = shared_module('test_lfind', - ['test_lfind.c'], + test_lfind_sources, kwargs: pg_mod_args, ) testprep_targets += test_lfind diff --git a/src/test/modules/test_oat_hooks/meson.build b/src/test/modules/test_oat_hooks/meson.build index 5faf0459777..8802bbbac55 100644 --- a/src/test/modules/test_oat_hooks/meson.build +++ b/src/test/modules/test_oat_hooks/meson.build @@ -1,6 +1,17 @@ # FIXME: prevent install during main install, but not during test :/ + +test_oat_hooks_sources = files( + 'test_oat_hooks.c', +) + +if host_system == 'windows' + test_oat_hooks_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'test_oat_hooks', + '--FILEDESC', 'test_oat_hooks - example use of object access hooks',]) +endif + test_oat_hooks = shared_module('test_oat_hooks', - ['test_oat_hooks.c'], + test_oat_hooks_sources, kwargs: pg_mod_args, ) testprep_targets += test_oat_hooks diff --git a/src/test/modules/test_parser/meson.build b/src/test/modules/test_parser/meson.build index b59960f615e..1c17113347f 100644 --- a/src/test/modules/test_parser/meson.build +++ b/src/test/modules/test_parser/meson.build @@ -1,6 +1,17 @@ # FIXME: prevent install during main install, but not during test :/ + +test_parser_sources = files( + 'test_parser.c', +) + +if host_system == 'windows' + test_parser_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'test_parser', + '--FILEDESC', 'test_parser - example of a custom parser for full-text search',]) +endif + test_parser = shared_module('test_parser', - ['test_parser.c'], + test_parser_sources, kwargs: pg_mod_args, ) testprep_targets += test_parser diff --git a/src/test/modules/test_predtest/meson.build b/src/test/modules/test_predtest/meson.build index 1cfa84b3609..9a5be43c9c0 100644 --- a/src/test/modules/test_predtest/meson.build +++ b/src/test/modules/test_predtest/meson.build @@ -1,6 +1,17 @@ # FIXME: prevent install during main install, but not during test :/ + +test_predtest_sources = files( + 'test_predtest.c', +) + +if host_system == 'windows' + test_predtest_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'test_predtest', + '--FILEDESC', 'test_predtest - test code for optimizer/util/predtest.c',]) +endif + test_predtest = shared_module('test_predtest', - ['test_predtest.c'], + test_predtest_sources, kwargs: pg_mod_args, ) testprep_targets += test_predtest diff --git a/src/test/modules/test_rbtree/meson.build b/src/test/modules/test_rbtree/meson.build index 34cbc3e1624..f067e08d321 100644 --- a/src/test/modules/test_rbtree/meson.build +++ b/src/test/modules/test_rbtree/meson.build @@ -1,6 +1,17 @@ # FIXME: prevent install during main install, but not during test :/ + +test_rbtree_sources = files( + 'test_rbtree.c', +) + +if host_system == 'windows' + test_rbtree_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'test_rbtree', + '--FILEDESC', 'test_rbtree - test code for red-black tree library',]) +endif + test_rbtree = shared_module('test_rbtree', - ['test_rbtree.c'], + test_rbtree_sources, kwargs: pg_mod_args, ) testprep_targets += test_rbtree diff --git a/src/test/modules/test_regex/meson.build b/src/test/modules/test_regex/meson.build index 867a64e57c3..cfb938d9f1e 100644 --- a/src/test/modules/test_regex/meson.build +++ b/src/test/modules/test_regex/meson.build @@ -1,6 +1,17 @@ # FIXME: prevent install during main install, but not during test :/ + +test_regex_sources = files( + 'test_regex.c', +) + +if host_system == 'windows' + test_regex_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'test_regex', + '--FILEDESC', 'test_regex - test code for backend/regex/',]) +endif + test_regex = shared_module('test_regex', - ['test_regex.c'], + test_regex_sources, kwargs: pg_mod_args, ) testprep_targets += test_regex diff --git a/src/test/modules/test_rls_hooks/meson.build b/src/test/modules/test_rls_hooks/meson.build index 80d8adda332..3fb273b2934 100644 --- a/src/test/modules/test_rls_hooks/meson.build +++ b/src/test/modules/test_rls_hooks/meson.build @@ -1,6 +1,17 @@ # FIXME: prevent install during main install, but not during test :/ + +test_rls_hooks_sources = files( + 'test_rls_hooks.c', +) + +if host_system == 'windows' + test_rls_hooks_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'test_rls_hooks', + '--FILEDESC', 'test_rls_hooks - example use of RLS hooks',]) +endif + test_rls_hooks = shared_module('test_rls_hooks', - ['test_rls_hooks.c'], + test_rls_hooks_sources, kwargs: pg_mod_args, ) testprep_targets += test_rls_hooks diff --git a/src/test/modules/test_shm_mq/meson.build b/src/test/modules/test_shm_mq/meson.build index b663543d616..16c8fdb57f4 100644 --- a/src/test/modules/test_shm_mq/meson.build +++ b/src/test/modules/test_shm_mq/meson.build @@ -1,10 +1,19 @@ # FIXME: prevent install during main install, but not during test :/ + +test_shm_mq_sources = files( + 'setup.c', + 'test.c', + 'worker.c', +) + +if host_system == 'windows' + test_shm_mq_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'test_shm_mq', + '--FILEDESC', 'test_shm_mq - example use of shared memory message queue',]) +endif + test_shm_mq = shared_module('test_shm_mq', - files( - 'setup.c', - 'test.c', - 'worker.c', - ), + test_shm_mq_sources, kwargs: pg_mod_args, ) testprep_targets += test_shm_mq diff --git a/src/test/modules/worker_spi/meson.build b/src/test/modules/worker_spi/meson.build index 32acad883b2..a4a158c75b9 100644 --- a/src/test/modules/worker_spi/meson.build +++ b/src/test/modules/worker_spi/meson.build @@ -1,8 +1,17 @@ # FIXME: prevent install during main install, but not during test :/ + +test_worker_spi_sources = files( + 'worker_spi.c', +) + +if host_system == 'windows' + test_worker_spi_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'worker_spi', + '--FILEDESC', 'worker_spi - background worker example',]) +endif + test_worker_spi = shared_module('worker_spi', - files( - 'worker_spi.c', - ), + test_worker_spi_sources, kwargs: pg_mod_args, ) testprep_targets += test_worker_spi diff --git a/src/test/regress/meson.build b/src/test/regress/meson.build index fd8ee995b79..963c0f64ed5 100644 --- a/src/test/regress/meson.build +++ b/src/test/regress/meson.build @@ -8,6 +8,12 @@ regress_sources = pg_regress_c + files( pg_regress_cflags = ['-DHOST_TUPLE="frak"', '-DSHELLPROG="/bin/sh"'] +if host_system == 'windows' + regress_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_regress', + '--FILEDESC', 'pg_regress - test driver',]) +endif + pg_regress = executable('pg_regress', regress_sources, c_args: pg_regress_cflags, diff --git a/meson.build b/meson.build index 6ffae59ba03..4ad06b25213 100644 --- a/meson.build +++ b/meson.build @@ -2523,6 +2523,67 @@ gen_export_kwargs = { +### +### windows resources related stuff +### + +if host_system == 'windows' + pg_ico = meson.source_root() / 'src' / 'port' / 'win32.ico' + win32ver_rc = files('src/port/win32ver.rc') + rcgen = find_program('src/tools/rcgen', native: true) + + rcgen_base_args = [ + '--srcdir', '@SOURCE_DIR@', + '--builddir', meson.build_root(), + '--rcout', '@OUTPUT0@', + '--out', '@OUTPUT1@', + '--input', '@INPUT@', + '@EXTRA_ARGS@', + ] + + if cc.get_argument_syntax() == 'msvc' + rcgen_base_args += [ + '--rc', find_program('rc', required: true).path(), + ] + rcgen_outputs = ['@[email protected]', '@[email protected]'] + else + rcgen_base_args += [ + '--windres', find_program('windres', required: true).path(), + ] + rcgen_outputs = ['@[email protected]', '@[email protected]'] + endif + + # msbuild backend doesn't support this atm + if meson.backend() == 'ninja' + rcgen_base_args += ['--depfile', '@DEPFILE@'] + endif + + rcgen_bin_args = rcgen_base_args + [ + '--VFT_TYPE', 'VFT_APP', + '--FILEENDING', 'exe', + '--ICO', pg_ico + ] + + rcgen_lib_args = rcgen_base_args + [ + '--VFT_TYPE', 'VFT_DLL', + '--FILEENDING', 'dll', + ] + + rc_bin_gen = generator(rcgen, + depfile: '@[email protected]', + arguments: rcgen_bin_args, + output: rcgen_outputs, + ) + + rc_lib_gen = generator(rcgen, + depfile: '@[email protected]', + arguments: rcgen_lib_args, + output: rcgen_outputs, + ) +endif + + + # headers that the whole build tree depends on generated_headers = [] # headers that the backend build depends on diff --git a/src/timezone/meson.build b/src/timezone/meson.build index 16f082ecfa8..9e0934c000b 100644 --- a/src/timezone/meson.build +++ b/src/timezone/meson.build @@ -28,6 +28,12 @@ if get_option('system_tzdata') == '' if meson.is_cross_build() zic = find_program(get_option('ZIC'), native: true, required: true) else + if host_system == 'windows' + zic_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'zic', + '--FILEDESC', 'zic - time zone compiler',]) + endif + zic = executable('zic', zic_sources, dependencies: [frontend_code], kwargs: default_bin_args + {'install': false} diff --git a/src/tools/rcgen b/src/tools/rcgen new file mode 100755 index 00000000000..5b62bfe5410 --- /dev/null +++ b/src/tools/rcgen @@ -0,0 +1,99 @@ +#!/usr/bin/env python3 + +import argparse +import os +import subprocess +import sys + +parser = argparse.ArgumentParser(description='generate PostgreSQL rc file') + +parser.add_argument('--srcdir', type=os.path.abspath, + required=True) +parser.add_argument('--builddir', type=os.path.abspath, + required=True) + +binaries = parser.add_argument_group('binaries') +binaries.add_argument('--windres', type=os.path.abspath) +binaries.add_argument('--rc', type=os.path.abspath) + +inout = parser.add_argument_group('inout') +inout.add_argument('--depfile', type=argparse.FileType('w')) +inout.add_argument('--input', type=argparse.FileType('r'), + required=True) +inout.add_argument('--rcout', type=argparse.FileType('w'), + required=True) +inout.add_argument('--out', type=str, + required=True) + +replacements = parser.add_argument_group('replacements') +replacements.add_argument('--FILEDESC', type=str) +replacements.add_argument('--NAME', type=str, required=True) +replacements.add_argument('--VFT_TYPE', type=str, required=True) +replacements.add_argument('--FILEENDING', type=str, required=True) +replacements.add_argument('--ICO', type=str) + +args = parser.parse_args() + +# determine replacement strings + +internal_name = '"{0}"'.format(args.NAME) +original_name = '"{0}.{1}"'.format(args.NAME, args.FILEENDING) + +# if no description is passed in, generate one based on the name +if args.FILEDESC: + filedesc = args.FILEDESC +elif args.NAME: + if args.VFT_TYPE == 'VFT_DLL': + filedesc = 'PostgreSQL {0} library'.format(args.NAME) + else: + filedesc = 'PostgreSQL {0} binary'.format(args.NAME) +filedesc = '"{0}"'.format(filedesc) + + +if args.ICO: + ico = 'IDI_ICON ICON "{0}"'.format(args.ICO) + if args.depfile: + args.depfile.write("{0} : {1}\n".format(args.rcout.name, args.ICO)) +else: + ico = '' + + +data = args.input.read() + +data = data.replace('VFT_APP', args.VFT_TYPE) +data = data.replace('_INTERNAL_NAME_', internal_name) +data = data.replace('_ORIGINAL_NAME_', original_name) +data = data.replace('FILEDESC', filedesc) +data = data.replace("_ICO_", ico) + +args.rcout.write(data) +args.rcout.close() + +if args.windres: + cmd = [ + args.windres, + '-I{0}/src/include/'.format(args.builddir), + '-I{0}/src/include/'.format(args.srcdir), + '-o', args.out, '-i', args.rcout.name, + ] +elif args.rc: + cmd = [ + args.rc, '/nologo', + '-I{0}/src/include/'.format(args.builddir), + '-I{0}/src/include/'.format(args.srcdir), + '/fo', args.out, args.rcout.name, + ] +else: + sys.exit('either --windres or --rc needs to be specified') + +sp = subprocess.run(cmd) +if sp.returncode != 0: + sys.exit(sp.returncode) + +# It'd be nicer if we could generate correct dependencies here, but 'rc' +# doesn't support doing so. It's unlikely we'll ever need more, so... +if args.depfile: + args.depfile.write("{0} : {1}\n".format( + args.rcout.name, args.input.name)) + args.depfile.write("{0} : {1}/{2}\n".format( + args.out, args.builddir, 'src/include/pg_config.h')) -- 2.37.3.542.gdd3f6c4cae --ayx3t42hstokjw3l Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v15-0006-meson-Add-support-for-relative-rpaths-fixing-tes.patch" ^ permalink raw reply [nested|flat] 6+ messages in thread
* [PATCH v16 04/16] meson: Add windows resource files @ 2022-09-21 18:03 Andres Freund <[email protected]> 0 siblings, 0 replies; 6+ messages in thread From: Andres Freund @ 2022-09-21 18:03 UTC (permalink / raw) Author: Andres Freund <[email protected]> Author: Nazir Bilal Yavuz <[email protected]> --- src/backend/jit/llvm/meson.build | 6 + .../replication/libpqwalreceiver/meson.build | 6 + src/backend/replication/pgoutput/meson.build | 6 + src/backend/snowball/meson.build | 6 + .../utils/mb/conversion_procs/meson.build | 144 ++++++++++++++---- src/bin/initdb/meson.build | 6 + src/bin/pg_amcheck/meson.build | 8 +- src/bin/pg_archivecleanup/meson.build | 12 +- src/bin/pg_basebackup/meson.build | 38 ++++- src/bin/pg_checksums/meson.build | 12 +- src/bin/pg_config/meson.build | 12 +- src/bin/pg_controldata/meson.build | 12 +- src/bin/pg_ctl/meson.build | 12 +- src/bin/pg_dump/meson.build | 18 +++ src/bin/pg_resetwal/meson.build | 12 +- src/bin/pg_rewind/meson.build | 6 + src/bin/pg_test_fsync/meson.build | 10 +- src/bin/pg_test_timing/meson.build | 12 +- src/bin/pg_upgrade/meson.build | 6 + src/bin/pg_verifybackup/meson.build | 6 + src/bin/pg_waldump/meson.build | 6 + src/bin/pgbench/meson.build | 6 + src/bin/pgevent/meson.build | 6 + src/bin/psql/meson.build | 6 + src/bin/scripts/meson.build | 10 +- src/interfaces/libpq/meson.build | 5 + src/interfaces/libpq/test/meson.build | 25 ++- src/pl/plperl/meson.build | 7 + src/pl/plpgsql/src/meson.build | 6 + src/pl/plpython/meson.build | 6 + src/pl/tcl/meson.build | 6 + contrib/adminpack/meson.build | 12 +- contrib/amcheck/meson.build | 17 ++- contrib/auth_delay/meson.build | 12 +- contrib/auto_explain/meson.build | 12 +- contrib/basebackup_to_shell/meson.build | 6 + contrib/basic_archive/meson.build | 6 + contrib/bloom/meson.build | 6 + contrib/bool_plperl/meson.build | 6 + contrib/btree_gin/meson.build | 12 +- contrib/btree_gist/meson.build | 6 + contrib/citext/meson.build | 6 + contrib/cube/meson.build | 6 + contrib/dblink/meson.build | 6 + contrib/dict_int/meson.build | 12 +- contrib/dict_xsyn/meson.build | 12 +- contrib/earthdistance/meson.build | 12 +- contrib/file_fdw/meson.build | 12 +- contrib/fuzzystrmatch/meson.build | 16 +- contrib/hstore/meson.build | 24 ++- contrib/hstore_plperl/meson.build | 6 + contrib/hstore_plpython/meson.build | 6 + contrib/intarray/meson.build | 6 + contrib/isn/meson.build | 6 + contrib/jsonb_plperl/meson.build | 6 + contrib/jsonb_plpython/meson.build | 6 + contrib/lo/meson.build | 6 + contrib/ltree/meson.build | 6 + contrib/ltree_plpython/meson.build | 6 + contrib/oid2name/meson.build | 12 +- contrib/old_snapshot/meson.build | 6 + contrib/pageinspect/meson.build | 6 + contrib/passwordcheck/meson.build | 6 + contrib/pg_buffercache/meson.build | 14 +- contrib/pg_freespacemap/meson.build | 14 +- contrib/pg_prewarm/meson.build | 16 +- contrib/pg_stat_statements/meson.build | 12 +- contrib/pg_surgery/meson.build | 14 +- contrib/pg_trgm/meson.build | 20 ++- contrib/pg_visibility/meson.build | 14 +- contrib/pg_walinspect/meson.build | 6 + contrib/pgcrypto/meson.build | 6 + contrib/pgrowlocks/meson.build | 14 +- contrib/pgstattuple/meson.build | 18 ++- contrib/postgres_fdw/meson.build | 6 + contrib/seg/meson.build | 6 + contrib/sepgsql/meson.build | 6 + contrib/spi/meson.build | 48 +++++- contrib/sslinfo/meson.build | 14 +- contrib/tablefunc/meson.build | 14 +- contrib/tcn/meson.build | 14 +- contrib/test_decoding/meson.build | 6 + contrib/tsm_system_rows/meson.build | 14 +- contrib/tsm_system_time/meson.build | 14 +- contrib/unaccent/meson.build | 14 +- contrib/uuid-ossp/meson.build | 14 +- contrib/vacuumlo/meson.build | 12 +- contrib/xml2/meson.build | 16 +- src/interfaces/ecpg/compatlib/meson.build | 6 +- src/interfaces/ecpg/preproc/meson.build | 6 + src/interfaces/ecpg/test/meson.build | 6 + src/test/isolation/meson.build | 13 ++ src/test/modules/delay_execution/meson.build | 13 +- src/test/modules/dummy_index_am/meson.build | 13 +- src/test/modules/dummy_seclabel/meson.build | 13 +- src/test/modules/libpq_pipeline/meson.build | 14 +- src/test/modules/plsample/meson.build | 13 +- src/test/modules/spgist_name_ops/meson.build | 13 +- .../ssl_passphrase_callback/meson.build | 13 +- src/test/modules/test_bloomfilter/meson.build | 13 +- src/test/modules/test_ddl_deparse/meson.build | 13 +- .../modules/test_ginpostinglist/meson.build | 13 +- src/test/modules/test_integerset/meson.build | 13 +- src/test/modules/test_lfind/meson.build | 13 +- src/test/modules/test_oat_hooks/meson.build | 13 +- src/test/modules/test_parser/meson.build | 13 +- src/test/modules/test_predtest/meson.build | 13 +- src/test/modules/test_rbtree/meson.build | 13 +- src/test/modules/test_regex/meson.build | 13 +- src/test/modules/test_rls_hooks/meson.build | 13 +- src/test/modules/test_shm_mq/meson.build | 19 ++- src/test/modules/worker_spi/meson.build | 15 +- src/test/regress/meson.build | 6 + meson.build | 61 ++++++++ src/timezone/meson.build | 6 + src/tools/rcgen | 99 ++++++++++++ 116 files changed, 1383 insertions(+), 159 deletions(-) create mode 100755 src/tools/rcgen diff --git a/src/backend/jit/llvm/meson.build b/src/backend/jit/llvm/meson.build index de2e624ab58..5fb63768358 100644 --- a/src/backend/jit/llvm/meson.build +++ b/src/backend/jit/llvm/meson.build @@ -20,6 +20,12 @@ llvmjit_sources += files( 'llvmjit_expr.c', ) +if host_system == 'windows' + llvmjit_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'llvmjit', + '--FILEDESC', 'llvmjit - JIT using LLVM',]) +endif + llvmjit = shared_module('llvmjit', llvmjit_sources, kwargs: pg_mod_args + { diff --git a/src/backend/replication/libpqwalreceiver/meson.build b/src/backend/replication/libpqwalreceiver/meson.build index 3fc786c80a0..4c653a05d36 100644 --- a/src/backend/replication/libpqwalreceiver/meson.build +++ b/src/backend/replication/libpqwalreceiver/meson.build @@ -2,6 +2,12 @@ libpqwalreceiver_sources = files( 'libpqwalreceiver.c', ) +if host_system == 'windows' + libpqwalreceiver_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pqwalreceiver', + '--FILEDESC', 'libpqwalreceiver - receive WAL during streaming replication',]) +endif + libpqwalreceiver = shared_module('pqwalreceiver', libpqwalreceiver_sources, kwargs: pg_mod_args + { diff --git a/src/backend/replication/pgoutput/meson.build b/src/backend/replication/pgoutput/meson.build index ab956361a62..5df27d7b764 100644 --- a/src/backend/replication/pgoutput/meson.build +++ b/src/backend/replication/pgoutput/meson.build @@ -2,6 +2,12 @@ pgoutput_sources = files( 'pgoutput.c', ) +if host_system == 'windows' + pgoutput_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pgoutput', + '--FILEDESC', 'pgoutput - standard logical replication output plugin',]) +endif + pgoutput = shared_module('pgoutput', pgoutput_sources, kwargs: pg_mod_args, diff --git a/src/backend/snowball/meson.build b/src/backend/snowball/meson.build index 8c6f685cb32..974401d187e 100644 --- a/src/backend/snowball/meson.build +++ b/src/backend/snowball/meson.build @@ -58,6 +58,12 @@ dict_snowball_sources += files( # see comment in src/include/snowball/header.h stemmer_inc = include_directories('../../include/snowball') +if host_system == 'windows' + dict_snowball_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'dict_snowball', + '--FILEDESC', 'snowball - natural language stemmers',]) +endif + dict_snowball = shared_module('dict_snowball', dict_snowball_sources, kwargs: pg_mod_args + { diff --git a/src/backend/utils/mb/conversion_procs/meson.build b/src/backend/utils/mb/conversion_procs/meson.build index 1bc971d1945..00e721a2453 100644 --- a/src/backend/utils/mb/conversion_procs/meson.build +++ b/src/backend/utils/mb/conversion_procs/meson.build @@ -1,36 +1,122 @@ encodings = { - 'cyrillic_and_mic': ['cyrillic_and_mic/cyrillic_and_mic.c'], - 'euc2004_sjis2004': ['euc2004_sjis2004/euc2004_sjis2004.c'], - 'euc_cn_and_mic': ['euc_cn_and_mic/euc_cn_and_mic.c'], - 'euc_jp_and_sjis': ['euc_jp_and_sjis/euc_jp_and_sjis.c'], - 'euc_kr_and_mic': ['euc_kr_and_mic/euc_kr_and_mic.c'], - 'euc_tw_and_big5': [ - 'euc_tw_and_big5/euc_tw_and_big5.c', - 'euc_tw_and_big5/big5.c', - ], - 'latin2_and_win1250': ['latin2_and_win1250/latin2_and_win1250.c'], - 'latin_and_mic': ['latin_and_mic/latin_and_mic.c'], - 'utf8_and_big5': ['utf8_and_big5/utf8_and_big5.c'], - 'utf8_and_cyrillic': ['utf8_and_cyrillic/utf8_and_cyrillic.c'], - 'utf8_and_euc2004': ['utf8_and_euc2004/utf8_and_euc2004.c'], - 'utf8_and_euc_cn': ['utf8_and_euc_cn/utf8_and_euc_cn.c'], - 'utf8_and_euc_jp': ['utf8_and_euc_jp/utf8_and_euc_jp.c'], - 'utf8_and_euc_kr': ['utf8_and_euc_kr/utf8_and_euc_kr.c'], - 'utf8_and_euc_tw': ['utf8_and_euc_tw/utf8_and_euc_tw.c'], - 'utf8_and_gb18030': ['utf8_and_gb18030/utf8_and_gb18030.c'], - 'utf8_and_gbk': ['utf8_and_gbk/utf8_and_gbk.c'], - 'utf8_and_iso8859': ['utf8_and_iso8859/utf8_and_iso8859.c'], - 'utf8_and_iso8859_1': ['utf8_and_iso8859_1/utf8_and_iso8859_1.c'], - 'utf8_and_johab': ['utf8_and_johab/utf8_and_johab.c'], - 'utf8_and_sjis': ['utf8_and_sjis/utf8_and_sjis.c'], - 'utf8_and_sjis2004': ['utf8_and_sjis2004/utf8_and_sjis2004.c'], - 'utf8_and_uhc': ['utf8_and_uhc/utf8_and_uhc.c'], - 'utf8_and_win': ['utf8_and_win/utf8_and_win.c'], + 'cyrillic_and_mic': { + 'sources': ['cyrillic_and_mic/cyrillic_and_mic.c'], + 'description': 'cyrillic <-> mic text conversions', + }, + 'euc2004_sjis2004': { + 'sources': ['euc2004_sjis2004/euc2004_sjis2004.c'], + 'description': 'euc2004 <-> sjis2004 text conversions', + }, + 'euc_cn_and_mic': { + 'sources': ['euc_cn_and_mic/euc_cn_and_mic.c'], + 'description': 'euc_cn <-> mic text conversions', + }, + 'euc_jp_and_sjis': { + 'sources': ['euc_jp_and_sjis/euc_jp_and_sjis.c'], + 'description': 'euc_jp <-> sjis text conversions', + }, + 'euc_kr_and_mic': { + 'sources': ['euc_kr_and_mic/euc_kr_and_mic.c'], + 'description': 'euc_kr <-> mic text conversions', + }, + 'euc_tw_and_big5': { + 'sources': [ + 'euc_tw_and_big5/euc_tw_and_big5.c', + 'euc_tw_and_big5/big5.c', + ], + 'description': 'euc_tw <-> big5 text conversions', + }, + 'latin2_and_win1250': { + 'sources': ['latin2_and_win1250/latin2_and_win1250.c'], + 'description': 'latin2 <-> win1250 text conversions', + }, + 'latin_and_mic': { + 'sources': ['latin_and_mic/latin_and_mic.c'], + 'description': 'latin <-> mic text conversions', + }, + 'utf8_and_big5': { + 'sources': ['utf8_and_big5/utf8_and_big5.c'], + 'description': 'utf8 <-> big5 text conversions', + }, + 'utf8_and_cyrillic': { + 'sources': ['utf8_and_cyrillic/utf8_and_cyrillic.c'], + 'description': 'utf8 <-> cyrillic text conversions', + }, + 'utf8_and_euc2004': { + 'sources': ['utf8_and_euc2004/utf8_and_euc2004.c'], + 'description': 'utf8 <-> euc2004 text conversions', + }, + 'utf8_and_euc_cn': { + 'sources': ['utf8_and_euc_cn/utf8_and_euc_cn.c'], + 'description': 'utf8 <-> euc_cn text conversions', + }, + 'utf8_and_euc_jp': { + 'sources': ['utf8_and_euc_jp/utf8_and_euc_jp.c'], + 'description': 'utf8 <-> euc_jp text conversions', + }, + 'utf8_and_euc_kr': { + 'sources': ['utf8_and_euc_kr/utf8_and_euc_kr.c'], + 'description': 'utf8 <-> euc_kr text conversions', + }, + 'utf8_and_euc_tw': { + 'sources': ['utf8_and_euc_tw/utf8_and_euc_tw.c'], + 'description': 'utf8 <-> euc_tw text conversions', + }, + 'utf8_and_gb18030': { + 'sources': ['utf8_and_gb18030/utf8_and_gb18030.c'], + 'description': 'utf8 <-> gb18030 text conversions', + }, + 'utf8_and_gbk': { + 'sources': ['utf8_and_gbk/utf8_and_gbk.c'], + 'description': 'utf8 <-> gbk text conversions', + }, + 'utf8_and_iso8859': { + 'sources': ['utf8_and_iso8859/utf8_and_iso8859.c'], + 'description': 'utf8 <-> iso8859 text conversions', + }, + 'utf8_and_iso8859_1': { + 'sources': ['utf8_and_iso8859_1/utf8_and_iso8859_1.c'], + 'description': 'utf8 <-> iso8859_1 text conversions', + }, + 'utf8_and_johab': { + 'sources': ['utf8_and_johab/utf8_and_johab.c'], + 'description': 'utf8 <-> johab text conversions', + }, + 'utf8_and_sjis': { + 'sources': ['utf8_and_sjis/utf8_and_sjis.c'], + 'description': 'utf8 <-> sjis text conversions', + }, + 'utf8_and_sjis2004': { + 'sources': ['utf8_and_sjis2004/utf8_and_sjis2004.c'], + 'description': 'utf8 <-> sjis2004 text conversions', + }, + 'utf8_and_uhc': { + 'sources': ['utf8_and_uhc/utf8_and_uhc.c'], + 'description': 'utf8 <-> uhc text conversions', + }, + 'utf8_and_win': { + 'sources': ['utf8_and_win/utf8_and_win.c'], + 'description': 'utf8 <-> win text conversions', + }, } -foreach encoding, sources : encodings +foreach encoding, values: encodings + sources = values['sources'] + description = values['description'] + + source_files = files() + foreach source: sources + source_files += files(source) + endforeach + + if host_system == 'windows' + source_files += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', encoding, + '--FILEDESC', description,]) + endif + backend_targets += shared_module(encoding, - sources, + source_files, kwargs: pg_mod_args, ) endforeach diff --git a/src/bin/initdb/meson.build b/src/bin/initdb/meson.build index 9f213274d2f..6ced9a31b80 100644 --- a/src/bin/initdb/meson.build +++ b/src/bin/initdb/meson.build @@ -7,6 +7,12 @@ initdb_sources += timezone_localtime_source #fixme: reimplement libpq_pgport logic +if host_system == 'windows' + initdb_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'initdb', + '--FILEDESC', 'initdb - initialize a new database cluster',]) +endif + initdb = executable('initdb', initdb_sources, include_directories: [timezone_inc], diff --git a/src/bin/pg_amcheck/meson.build b/src/bin/pg_amcheck/meson.build index 8e197eba5f3..25f5e7a0948 100644 --- a/src/bin/pg_amcheck/meson.build +++ b/src/bin/pg_amcheck/meson.build @@ -1,7 +1,13 @@ pg_amcheck_sources = files( - 'pg_amcheck.c' + 'pg_amcheck.c', ) +if host_system == 'windows' + pg_amcheck_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_amcheck', + '--FILEDESC', 'pg_amcheck - detect corruption within database relations',]) +endif + pg_amcheck = executable('pg_amcheck', pg_amcheck_sources, dependencies: [frontend_code, libpq], diff --git a/src/bin/pg_archivecleanup/meson.build b/src/bin/pg_archivecleanup/meson.build index 87a0d980c4f..aaa2e76977f 100644 --- a/src/bin/pg_archivecleanup/meson.build +++ b/src/bin/pg_archivecleanup/meson.build @@ -1,5 +1,15 @@ +pg_archivecleanup_sources = files( + 'pg_archivecleanup.c', +) + +if host_system == 'windows' + pg_archivecleanup_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_archivecleanup', + '--FILEDESC', 'pg_archivecleanup - cleans archive when used with streaming replication',]) +endif + pg_archivecleanup = executable('pg_archivecleanup', - ['pg_archivecleanup.c'], + pg_archivecleanup_sources, dependencies: [frontend_code], kwargs: default_bin_args, ) diff --git a/src/bin/pg_basebackup/meson.build b/src/bin/pg_basebackup/meson.build index d26fed9cd8a..2c934e0c26e 100644 --- a/src/bin/pg_basebackup/meson.build +++ b/src/bin/pg_basebackup/meson.build @@ -17,24 +17,56 @@ pg_basebackup_common = static_library('libpg_basebackup_common', kwargs: internal_lib_args, ) -pg_basebackup = executable('pg_basebackup', +pg_basebackup_sources = files( 'pg_basebackup.c', +) + +if host_system == 'windows' + pg_basebackup_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_basebackup', + '--FILEDESC', 'pg_basebackup - streaming WAL and backup receivers',]) +endif + +pg_basebackup = executable('pg_basebackup', + pg_basebackup_sources, link_with: [pg_basebackup_common], dependencies: pg_basebackup_deps, kwargs: default_bin_args, ) bin_targets += pg_basebackup -pg_receivewal = executable('pg_receivewal', + +pg_receivewal_sources = files( 'pg_receivewal.c', +) + +if host_system == 'windows' + pg_receivewal_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_receivewal', + '--FILEDESC', 'pg_receivewal - streaming WAL and backup receivers',]) +endif + +pg_receivewal = executable('pg_receivewal', + pg_receivewal_sources, link_with: [pg_basebackup_common], dependencies: pg_basebackup_deps, kwargs: default_bin_args, ) bin_targets += pg_receivewal -pg_recvlogical = executable('pg_recvlogical', + +pg_recvlogical_sources = files( 'pg_recvlogical.c', +) + +if host_system == 'windows' + pg_recvlogical_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_recvlogical', + '--FILEDESC', 'pg_recvlogical - streaming WAL and backup receivers',]) +endif + +pg_recvlogical = executable('pg_recvlogical', + pg_recvlogical_sources, link_with: [pg_basebackup_common], dependencies: pg_basebackup_deps, kwargs: default_bin_args, diff --git a/src/bin/pg_checksums/meson.build b/src/bin/pg_checksums/meson.build index ee1f367bac3..d07ebc999b3 100644 --- a/src/bin/pg_checksums/meson.build +++ b/src/bin/pg_checksums/meson.build @@ -1,5 +1,15 @@ +pg_checksums_sources = files( + 'pg_checksums.c', +) + +if host_system == 'windows' + pg_checksums_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_checksums', + '--FILEDESC', 'pg_checksums - verify data checksums in an offline cluster',]) +endif + pg_checksums = executable('pg_checksums', - ['pg_checksums.c'], + pg_checksums_sources, include_directories: [timezone_inc], dependencies: [frontend_code], kwargs: default_bin_args, diff --git a/src/bin/pg_config/meson.build b/src/bin/pg_config/meson.build index 0ecbf2f9d28..4be2fdc84ae 100644 --- a/src/bin/pg_config/meson.build +++ b/src/bin/pg_config/meson.build @@ -1,5 +1,15 @@ +pg_config_sources = files( + 'pg_config.c', +) + +if host_system == 'windows' + pg_config_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_config', + '--FILEDESC', 'pg_config - report configuration information',]) +endif + pg_config = executable('pg_config', - ['pg_config.c'], + pg_config_sources, dependencies: [frontend_code], kwargs: default_bin_args, ) diff --git a/src/bin/pg_controldata/meson.build b/src/bin/pg_controldata/meson.build index 557e672beb7..7fc239dbe65 100644 --- a/src/bin/pg_controldata/meson.build +++ b/src/bin/pg_controldata/meson.build @@ -1,5 +1,15 @@ +pg_controldata_sources = files( + 'pg_controldata.c', +) + +if host_system == 'windows' + pg_controldata_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_controldata', + '--FILEDESC', 'pg_controldata - reads the data from pg_control',]) +endif + pg_controldata = executable('pg_controldata', - ['pg_controldata.c'], + pg_controldata_sources, dependencies: [frontend_code], kwargs: default_bin_args, ) diff --git a/src/bin/pg_ctl/meson.build b/src/bin/pg_ctl/meson.build index 6812e73e329..96f962fa762 100644 --- a/src/bin/pg_ctl/meson.build +++ b/src/bin/pg_ctl/meson.build @@ -1,5 +1,15 @@ +pg_ctl_sources = files( + 'pg_ctl.c', +) + +if host_system == 'windows' + pg_ctl_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_ctl', + '--FILEDESC', 'pg_ctl - starts/stops/restarts the PostgreSQL server',]) +endif + pg_ctl = executable('pg_ctl', - ['pg_ctl.c'], + pg_ctl_sources, dependencies: [frontend_code, libpq], kwargs: default_bin_args, ) diff --git a/src/bin/pg_dump/meson.build b/src/bin/pg_dump/meson.build index 785ec094dbd..3527a25c288 100644 --- a/src/bin/pg_dump/meson.build +++ b/src/bin/pg_dump/meson.build @@ -24,6 +24,12 @@ pg_dump_sources = files( 'pg_dump_sort.c', ) +if host_system == 'windows' + pg_dump_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_dump', + '--FILEDESC', 'pg_dump - backup one PostgreSQL database',]) +endif + pg_dump = executable('pg_dump', pg_dump_sources, link_with: [pg_dump_common], @@ -37,6 +43,12 @@ pg_dumpall_sources = files( 'pg_dumpall.c', ) +if host_system == 'windows' + pg_dumpall_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_dumpall', + '--FILEDESC', 'pg_dumpall - backup PostgreSQL databases']) +endif + pg_dumpall = executable('pg_dumpall', pg_dumpall_sources, link_with: [pg_dump_common], @@ -50,6 +62,12 @@ pg_restore_sources = files( 'pg_restore.c', ) +if host_system == 'windows' + pg_restore_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_restore', + '--FILEDESC', 'pg_restore - restore PostgreSQL databases']) +endif + pg_restore = executable('pg_restore', pg_restore_sources, link_with: [pg_dump_common], diff --git a/src/bin/pg_resetwal/meson.build b/src/bin/pg_resetwal/meson.build index 7c5de134ac0..d503db97b71 100644 --- a/src/bin/pg_resetwal/meson.build +++ b/src/bin/pg_resetwal/meson.build @@ -1,5 +1,15 @@ +pg_resetwal_sources = files( + 'pg_resetwal.c', +) + +if host_system == 'windows' + pg_resetwal_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_resetwal', + '--FILEDESC', 'pg_resetwal - reset PostgreSQL WAL log']) +endif + pg_resetwal = executable('pg_resetwal', - files('pg_resetwal.c'), + pg_resetwal_sources, dependencies: [frontend_code], kwargs: default_bin_args, ) diff --git a/src/bin/pg_rewind/meson.build b/src/bin/pg_rewind/meson.build index d8ec9e482d5..6cd970909a2 100644 --- a/src/bin/pg_rewind/meson.build +++ b/src/bin/pg_rewind/meson.build @@ -11,6 +11,12 @@ pg_rewind_sources = files( pg_rewind_sources += xlogreader_sources +if host_system == 'windows' + pg_rewind_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_rewind', + '--FILEDESC', 'pg_rewind - synchronize a data directory with another one forked from']) +endif + pg_rewind = executable('pg_rewind', pg_rewind_sources, dependencies: [frontend_code, libpq, lz4, zstd], diff --git a/src/bin/pg_test_fsync/meson.build b/src/bin/pg_test_fsync/meson.build index 2c01831e11f..31d288ba6da 100644 --- a/src/bin/pg_test_fsync/meson.build +++ b/src/bin/pg_test_fsync/meson.build @@ -1,4 +1,12 @@ -test_fsync_sources = files('pg_test_fsync.c') +test_fsync_sources = files( + 'pg_test_fsync.c', +) + +if host_system == 'windows' + test_fsync_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_test_fsync', + '--FILEDESC', 'pg_test_fsync - test various disk sync methods']) +endif pg_test_fsync = executable('pg_test_fsync', test_fsync_sources, diff --git a/src/bin/pg_test_timing/meson.build b/src/bin/pg_test_timing/meson.build index 0a3068f1657..0aed03ea32f 100644 --- a/src/bin/pg_test_timing/meson.build +++ b/src/bin/pg_test_timing/meson.build @@ -1,5 +1,15 @@ +pg_test_timing_sources = files( + 'pg_test_timing.c' +) + +if host_system == 'windows' + pg_test_timing_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_test_timing', + '--FILEDESC', 'pg_test_timing - test timing overhead']) +endif + pg_test_timing = executable('pg_test_timing', - ['pg_test_timing.c'], + pg_test_timing_sources, dependencies: [frontend_code], kwargs: default_bin_args, ) diff --git a/src/bin/pg_upgrade/meson.build b/src/bin/pg_upgrade/meson.build index 02f030e0ccf..a7b927a45c7 100644 --- a/src/bin/pg_upgrade/meson.build +++ b/src/bin/pg_upgrade/meson.build @@ -16,6 +16,12 @@ pg_upgrade_sources = files( 'version.c', ) +if host_system == 'windows' + pg_upgrade_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_upgrade', + '--FILEDESC', 'pg_upgrade - an in-place binary upgrade utility']) +endif + pg_upgrade = executable('pg_upgrade', pg_upgrade_sources, dependencies: [frontend_code, libpq], diff --git a/src/bin/pg_verifybackup/meson.build b/src/bin/pg_verifybackup/meson.build index 4c3b2bb5f97..b934a408443 100644 --- a/src/bin/pg_verifybackup/meson.build +++ b/src/bin/pg_verifybackup/meson.build @@ -3,6 +3,12 @@ pg_verifybackup_sources = files( 'pg_verifybackup.c' ) +if host_system == 'windows' + pg_verifybackup_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_verifybackup', + '--FILEDESC', 'pg_verifybackup - verify a backup against using a backup manifest']) +endif + pg_verifybackup = executable('pg_verifybackup', pg_verifybackup_sources, dependencies: [frontend_code, libpq], diff --git a/src/bin/pg_waldump/meson.build b/src/bin/pg_waldump/meson.build index 95872652ffd..9605976870d 100644 --- a/src/bin/pg_waldump/meson.build +++ b/src/bin/pg_waldump/meson.build @@ -8,6 +8,12 @@ pg_waldump_sources += rmgr_desc_sources pg_waldump_sources += xlogreader_sources pg_waldump_sources += files('../../backend/access/transam/xlogstats.c') +if host_system == 'windows' + pg_waldump_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_waldump', + '--FILEDESC', 'pg_waldump - decode and display WA']) +endif + pg_waldump = executable('pg_waldump', pg_waldump_sources, dependencies: [frontend_code, lz4, zstd], diff --git a/src/bin/pgbench/meson.build b/src/bin/pgbench/meson.build index 6564e54029c..a32eb51fe07 100644 --- a/src/bin/pgbench/meson.build +++ b/src/bin/pgbench/meson.build @@ -17,6 +17,12 @@ exprparse = custom_target('exprparse', generated_sources += exprparse.to_list() pgbench_sources += exprparse +if host_system == 'windows' + pgbench_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pgbench', + '--FILEDESC', 'pgbench - a simple program for running benchmark tests']) +endif + pgbench = executable('pgbench', pgbench_sources, dependencies: [frontend_code, libpq, thread_dep], diff --git a/src/bin/pgevent/meson.build b/src/bin/pgevent/meson.build index 7a468879fd2..2e9aea4b0e1 100644 --- a/src/bin/pgevent/meson.build +++ b/src/bin/pgevent/meson.build @@ -6,6 +6,12 @@ pgevent_sources = files( 'pgevent.c', ) +pgevent_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pgevent', + '--FILEDESC', 'Eventlog message formatter',]) + +pgevent_sources += windows.compile_resources('pgmsgevent.rc') + # FIXME: copied from Mkvcbuild.pm, but I don't think that's the right approach pgevent_link_args = [] if cc.get_id() == 'msvc' diff --git a/src/bin/psql/meson.build b/src/bin/psql/meson.build index 410788e4767..1264fc19fbd 100644 --- a/src/bin/psql/meson.build +++ b/src/bin/psql/meson.build @@ -36,6 +36,12 @@ sql_help = custom_target('psql_help', generated_sources += sql_help.to_list() psql_sources += sql_help +if host_system == 'windows' + psql_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'psql', + '--FILEDESC', 'psql - the PostgreSQL interactive terminal',]) +endif + psql = executable('psql', psql_sources, include_directories: include_directories('.'), diff --git a/src/bin/scripts/meson.build b/src/bin/scripts/meson.build index eaf250c7f73..837562c24e5 100644 --- a/src/bin/scripts/meson.build +++ b/src/bin/scripts/meson.build @@ -16,8 +16,16 @@ binaries = [ ] foreach binary : binaries + binary_sources = files('@[email protected]'.format(binary)) + + if host_system == 'windows' + binary_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', binary, + '--FILEDESC', '@0@ - PostgreSQL utility'.format(binary),]) + endif + binary = executable(binary, - files(binary + '.c'), + binary_sources, link_with: [scripts_common], dependencies: [frontend_code, libpq], kwargs: default_bin_args, diff --git a/src/interfaces/libpq/meson.build b/src/interfaces/libpq/meson.build index bc047e00d62..2c9edeaa088 100644 --- a/src/interfaces/libpq/meson.build +++ b/src/interfaces/libpq/meson.build @@ -16,9 +16,13 @@ libpq_sources = files( 'libpq-events.c', 'pqexpbuffer.c', ) +libpq_so_sources = [] # only for shared lib, in addition to above if host_system == 'windows' libpq_sources += files('pthread-win32.c', 'win32.c') + libpq_so_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'libpq', + '--FILEDESC', 'PostgreSQL Access Library',]) endif if ssl.found() @@ -52,6 +56,7 @@ libpq_st = static_library('libpq', # not using both_libraries here, causes problems with precompiled headers and # resource files with msbuild libpq_so = shared_library('libpq', + libpq_so_sources, dependencies: libpq_deps, include_directories: [libpq_inc, postgres_inc], c_args: ['-DSO_MAJOR_VERSION=5'], diff --git a/src/interfaces/libpq/test/meson.build b/src/interfaces/libpq/test/meson.build index 16f94c1ed8b..017f729d435 100644 --- a/src/interfaces/libpq/test/meson.build +++ b/src/interfaces/libpq/test/meson.build @@ -1,13 +1,34 @@ +libpq_uri_regress_sources = files( + 'libpq_uri_regress.c', +) + +if host_system == 'windows' + libpq_uri_regress_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'libpq_uri_regress', + '--FILEDESC', 'libpq test program',]) +endif + executable('libpq_uri_regress', - files('libpq_uri_regress.c'), + libpq_uri_regress_sources, dependencies: [frontend_code, libpq], kwargs: default_bin_args + { 'install': false, } ) + +libpq_testclient_sources = files( + 'libpq_testclient.c', +) + +if host_system == 'windows' + libpq_testclient_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'libpq_testclient', + '--FILEDESC', 'libpq test program',]) +endif + executable('libpq_testclient', - files('libpq_testclient.c'), + libpq_testclient_sources, dependencies: [frontend_code, libpq], kwargs: default_bin_args + { 'install': false, diff --git a/src/pl/plperl/meson.build b/src/pl/plperl/meson.build index 73b733dd50b..535660085dd 100644 --- a/src/pl/plperl/meson.build +++ b/src/pl/plperl/meson.build @@ -36,6 +36,13 @@ foreach n : ['SPI', 'Util'] endforeach plperl_inc = include_directories('.') + +if host_system == 'windows' + plperl_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'plperl', + '--FILEDESC', 'PL/Perl - procedural language',]) +endif + plperl = shared_module('plperl', plperl_sources, include_directories: [plperl_inc, postgres_inc], diff --git a/src/pl/plpgsql/src/meson.build b/src/pl/plpgsql/src/meson.build index dd499fdd151..c46c0a1da2a 100644 --- a/src/pl/plpgsql/src/meson.build +++ b/src/pl/plpgsql/src/meson.build @@ -40,6 +40,12 @@ pl_unreserved = custom_target('pl_unreserved_kwlist', generated_sources += pl_unreserved plpgsql_sources += pl_unreserved +if host_system == 'windows' + plpgsql_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'plpgsql', + '--FILEDESC', 'PL/pgSQL - procedural language',]) +endif + plpgsql = shared_module('plpgsql', plpgsql_sources, include_directories: include_directories('.'), diff --git a/src/pl/plpython/meson.build b/src/pl/plpython/meson.build index 366b3b171ac..40888386b5f 100644 --- a/src/pl/plpython/meson.build +++ b/src/pl/plpython/meson.build @@ -28,6 +28,12 @@ plpython_sources += custom_target('spiexceptions.h', # FIXME: need to duplicate import library ugliness? plpython_inc = include_directories('.') +if host_system == 'windows' + plpython_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'plpython3', + '--FILEDESC', 'PL/Python - procedural language',]) +endif + plpython = shared_module('plpython3', plpython_sources, include_directories: [plpython_inc, postgres_inc], diff --git a/src/pl/tcl/meson.build b/src/pl/tcl/meson.build index 9b6addd7fd5..f09bb14c950 100644 --- a/src/pl/tcl/meson.build +++ b/src/pl/tcl/meson.build @@ -14,6 +14,12 @@ pltcl_sources += custom_target('pltclerrcodes.h', command: [perl, gen_pltclerrcodes, '@INPUT@'] ) +if host_system == 'windows' + pltcl_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pltcl', + '--FILEDESC', 'PL/Tcl - procedural language',]) +endif + pltcl = shared_module('pltcl', pltcl_sources, include_directories: [include_directories('.'), postgres_inc], diff --git a/contrib/adminpack/meson.build b/contrib/adminpack/meson.build index fc2368d02cf..7efec0efbc0 100644 --- a/contrib/adminpack/meson.build +++ b/contrib/adminpack/meson.build @@ -1,5 +1,15 @@ +adminpack_sources = files( + 'adminpack.c', +) + +if host_system == 'windows' + adminpack_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'adminpack', + '--FILEDESC', 'adminpack - support functions for pgAdmin',]) +endif + adminpack = shared_module('adminpack', - ['adminpack.c'], + adminpack_sources, kwargs: contrib_mod_args, ) contrib_targets += adminpack diff --git a/contrib/amcheck/meson.build b/contrib/amcheck/meson.build index 1db3d20349e..fa807b72d98 100644 --- a/contrib/amcheck/meson.build +++ b/contrib/amcheck/meson.build @@ -1,7 +1,16 @@ -amcheck = shared_module('amcheck', [ - 'verify_heapam.c', - 'verify_nbtree.c', - ], +amcheck_sources = files( + 'verify_heapam.c', + 'verify_nbtree.c', +) + +if host_system == 'windows' + amcheck_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'amcheck', + '--FILEDESC', 'amcheck - function for verifying relation integrity',]) +endif + +amcheck = shared_module('amcheck', + amcheck_sources, kwargs: contrib_mod_args, ) contrib_targets += amcheck diff --git a/contrib/auth_delay/meson.build b/contrib/auth_delay/meson.build index d2e01968f54..c4ffb0663bc 100644 --- a/contrib/auth_delay/meson.build +++ b/contrib/auth_delay/meson.build @@ -1,5 +1,15 @@ +auth_delay_sources = files( + 'auth_delay.c', +) + +if host_system == 'windows' + auth_delay_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'auth_delay', + '--FILEDESC', 'auth_delay - delay authentication failure reports',]) +endif + autoinc = shared_module('auth_delay', - ['auth_delay.c'], + auth_delay_sources, kwargs: contrib_mod_args, ) contrib_targets += autoinc diff --git a/contrib/auto_explain/meson.build b/contrib/auto_explain/meson.build index 249a8376faa..76f86617850 100644 --- a/contrib/auto_explain/meson.build +++ b/contrib/auto_explain/meson.build @@ -1,5 +1,15 @@ +auto_explain_sources = files( + 'auto_explain.c', +) + +if host_system == 'windows' + auto_explain_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'auto_explain', + '--FILEDESC', 'auto_explain - logging facility for execution plans',]) +endif + auto_explain = shared_module('auto_explain', - files('auto_explain.c'), + auto_explain_sources, kwargs: contrib_mod_args, ) contrib_targets += auto_explain diff --git a/contrib/basebackup_to_shell/meson.build b/contrib/basebackup_to_shell/meson.build index 9f0517f1701..3a389de9175 100644 --- a/contrib/basebackup_to_shell/meson.build +++ b/contrib/basebackup_to_shell/meson.build @@ -2,6 +2,12 @@ basebackup_to_shell_sources = files( 'basebackup_to_shell.c', ) +if host_system == 'windows' + basebackup_to_shell_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'basebackup_to_shell', + '--FILEDESC', 'basebackup_to_shell - target basebackup to shell command',]) +endif + basebackup_to_shell = shared_module('basebackup_to_shell', basebackup_to_shell_sources, kwargs: contrib_mod_args, diff --git a/contrib/basic_archive/meson.build b/contrib/basic_archive/meson.build index b67cbef60bd..c30dcfa5d41 100644 --- a/contrib/basic_archive/meson.build +++ b/contrib/basic_archive/meson.build @@ -2,6 +2,12 @@ basic_archive_sources = files( 'basic_archive.c', ) +if host_system == 'windows' + basic_archive_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'basic_archive', + '--FILEDESC', 'basic_archive - basic archive module',]) +endif + basic_archive = shared_module('basic_archive', basic_archive_sources, kwargs: contrib_mod_args, diff --git a/contrib/bloom/meson.build b/contrib/bloom/meson.build index 1fe7632bdbe..16f3b83e4d2 100644 --- a/contrib/bloom/meson.build +++ b/contrib/bloom/meson.build @@ -7,6 +7,12 @@ bloom_sources = files( 'blvalidate.c', ) +if host_system == 'windows' + bloom_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'bloom', + '--FILEDESC', 'bloom access method - signature file based index',]) +endif + bloom = shared_module('bloom', bloom_sources, kwargs: contrib_mod_args, diff --git a/contrib/bool_plperl/meson.build b/contrib/bool_plperl/meson.build index c20b667d75f..a68daab0dcd 100644 --- a/contrib/bool_plperl/meson.build +++ b/contrib/bool_plperl/meson.build @@ -6,6 +6,12 @@ bool_plperl_sources = files( 'bool_plperl.c', ) +if host_system == 'windows' + bool_plperl_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'bool_plperl', + '--FILEDESC', 'bool_plperl - bool transform for plperl',]) +endif + bool_plperl = shared_module('bool_plperl', bool_plperl_sources, include_directories: [plperl_inc, include_directories('.')], diff --git a/contrib/btree_gin/meson.build b/contrib/btree_gin/meson.build index 15d6d31a6ee..fd4c76767a7 100644 --- a/contrib/btree_gin/meson.build +++ b/contrib/btree_gin/meson.build @@ -1,5 +1,15 @@ +btree_gin_sources = files( + 'btree_gin.c', +) + +if host_system == 'windows' + btree_gin_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'btree_gin', + '--FILEDESC', 'btree_gin - B-tree equivalent GIN operator classes',]) +endif + btree_gin = shared_module('btree_gin', - files('btree_gin.c'), + btree_gin_sources, kwargs: contrib_mod_args, ) contrib_targets += btree_gin diff --git a/contrib/btree_gist/meson.build b/contrib/btree_gist/meson.build index c0a8d238540..e98c91dacc8 100644 --- a/contrib/btree_gist/meson.build +++ b/contrib/btree_gist/meson.build @@ -25,6 +25,12 @@ btree_gist_sources = files( 'btree_uuid.c', ) +if host_system == 'windows' + btree_gist_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'btree_gist', + '--FILEDESC', 'btree_gist - B-tree equivalent GiST operator classes',]) +endif + btree_gist = shared_module('btree_gist', btree_gist_sources, kwargs: contrib_mod_args, diff --git a/contrib/citext/meson.build b/contrib/citext/meson.build index ca60eded80b..26a101a19bd 100644 --- a/contrib/citext/meson.build +++ b/contrib/citext/meson.build @@ -2,6 +2,12 @@ citext_sources = files( 'citext.c', ) +if host_system == 'windows' + citext_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'citext', + '--FILEDESC', 'citext - case-insensitive character string data type',]) +endif + citext = shared_module('citext', citext_sources, kwargs: contrib_mod_args, diff --git a/contrib/cube/meson.build b/contrib/cube/meson.build index 72342b0c82c..041acf95a90 100644 --- a/contrib/cube/meson.build +++ b/contrib/cube/meson.build @@ -17,6 +17,12 @@ cube_parse = custom_target('cubeparse', generated_sources += cube_parse.to_list() cube_sources += cube_parse +if host_system == 'windows' + cube_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'cube', + '--FILEDESC', 'cube - multidimensional cube data type',]) +endif + cube = shared_module('cube', cube_sources, include_directories: include_directories('.'), diff --git a/contrib/dblink/meson.build b/contrib/dblink/meson.build index d35f7b5d49e..66eeb03b736 100644 --- a/contrib/dblink/meson.build +++ b/contrib/dblink/meson.build @@ -2,6 +2,12 @@ dblink_sources = files( 'dblink.c', ) +if host_system == 'windows' + dblink_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'dblink', + '--FILEDESC', 'dblink - connect to other PostgreSQL databases',]) +endif + dblink = shared_module('dblink', dblink_sources, kwargs: contrib_mod_args + { diff --git a/contrib/dict_int/meson.build b/contrib/dict_int/meson.build index f00e8085619..6fff921adda 100644 --- a/contrib/dict_int/meson.build +++ b/contrib/dict_int/meson.build @@ -1,5 +1,15 @@ +dict_int_sources = files( + 'dict_int.c', +) + +if host_system == 'windows' + dict_int_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'dict_int', + '--FILEDESC', 'dict_int - add-on dictionary template for full-text search',]) +endif + dict_int = shared_module('dict_int', - files('dict_int.c'), + dict_int_sources, kwargs: contrib_mod_args, ) contrib_targets += dict_int diff --git a/contrib/dict_xsyn/meson.build b/contrib/dict_xsyn/meson.build index be53f55bb79..fabd505a7df 100644 --- a/contrib/dict_xsyn/meson.build +++ b/contrib/dict_xsyn/meson.build @@ -1,5 +1,15 @@ +dict_xsyn_sources = files( + 'dict_xsyn.c', +) + +if host_system == 'windows' + dict_xsyn_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'dict_xsyn', + '--FILEDESC', 'dict_xsyn - add-on dictionary template for full-text search',]) +endif + dict_xsyn = shared_module('dict_xsyn', - files('dict_xsyn.c'), + dict_xsyn_sources, kwargs: contrib_mod_args, ) contrib_targets += dict_xsyn diff --git a/contrib/earthdistance/meson.build b/contrib/earthdistance/meson.build index 807f5cb7de3..78dc29c3da3 100644 --- a/contrib/earthdistance/meson.build +++ b/contrib/earthdistance/meson.build @@ -1,5 +1,15 @@ +earthdistance_sources = files( + 'earthdistance.c', +) + +if host_system == 'windows' + earthdistance_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'earthdistance', + '--FILEDESC', 'earthdistance - calculate distances on the surface of the Earth',]) +endif + earthdistance = shared_module('earthdistance', - files('earthdistance.c'), + earthdistance_sources, kwargs: contrib_mod_args, ) contrib_targets += earthdistance diff --git a/contrib/file_fdw/meson.build b/contrib/file_fdw/meson.build index f13efb6e38e..c4071faa669 100644 --- a/contrib/file_fdw/meson.build +++ b/contrib/file_fdw/meson.build @@ -1,5 +1,15 @@ +file_fdw_sources = files( + 'file_fdw.c', +) + +if host_system == 'windows' + file_fdw_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'file_fdw', + '--FILEDESC', 'file_fdw - foreign data wrapper for files',]) +endif + file_fdw = shared_module('file_fdw', - files('file_fdw.c'), + file_fdw_sources, kwargs: contrib_mod_args, ) contrib_targets += file_fdw diff --git a/contrib/fuzzystrmatch/meson.build b/contrib/fuzzystrmatch/meson.build index ec278a6211e..e6d06149cec 100644 --- a/contrib/fuzzystrmatch/meson.build +++ b/contrib/fuzzystrmatch/meson.build @@ -1,8 +1,16 @@ +fuzzystrmatch_sources = files( + 'fuzzystrmatch.c', + 'dmetaphone.c', +) + +if host_system == 'windows' + fuzzystrmatch_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'fuzzystrmatch', + '--FILEDESC', 'fuzzystrmatch - similarities and distance between strings',]) +endif + fuzzystrmatch = shared_module('fuzzystrmatch', - files( - 'fuzzystrmatch.c', - 'dmetaphone.c' - ), + fuzzystrmatch_sources, kwargs: contrib_mod_args, ) contrib_targets += fuzzystrmatch diff --git a/contrib/hstore/meson.build b/contrib/hstore/meson.build index 07c59f40a97..2bb26bb772b 100644 --- a/contrib/hstore/meson.build +++ b/contrib/hstore/meson.build @@ -1,15 +1,23 @@ # .. so that includes of hstore/hstore.h work hstore_inc = include_directories('.', '../') +hstore_sources = files( + 'hstore_compat.c', + 'hstore_gin.c', + 'hstore_gist.c', + 'hstore_io.c', + 'hstore_op.c', + 'hstore_subs.c', +) + +if host_system == 'windows' + hstore_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'hstore', + '--FILEDESC', 'hstore - key/value pair data type',]) +endif + hstore = shared_module('hstore', - files( - 'hstore_compat.c', - 'hstore_gin.c', - 'hstore_gist.c', - 'hstore_io.c', - 'hstore_op.c', - 'hstore_subs.c', - ), + hstore_sources, kwargs: contrib_mod_args, ) contrib_targets += hstore diff --git a/contrib/hstore_plperl/meson.build b/contrib/hstore_plperl/meson.build index bbafa0221bd..a238fee6a26 100644 --- a/contrib/hstore_plperl/meson.build +++ b/contrib/hstore_plperl/meson.build @@ -6,6 +6,12 @@ hstore_plperl_sources = files( 'hstore_plperl.c', ) +if host_system == 'windows' + hstore_plperl_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'hstore_plperl', + '--FILEDESC', 'hstore_plperl - hstore transform for plperl',]) +endif + hstore_plperl = shared_module('hstore_plperl', hstore_plperl_sources, include_directories: [plperl_inc, hstore_inc], diff --git a/contrib/hstore_plpython/meson.build b/contrib/hstore_plpython/meson.build index 214b48519a9..6071aaeb4b3 100644 --- a/contrib/hstore_plpython/meson.build +++ b/contrib/hstore_plpython/meson.build @@ -6,6 +6,12 @@ hstore_plpython_sources = files( 'hstore_plpython.c', ) +if host_system == 'windows' + hstore_plpython_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'hstore_plpython3', + '--FILEDESC', 'hstore_plpython - hstore transform for plpython',]) +endif + hstore_plpython = shared_module('hstore_plpython3', hstore_plpython_sources, include_directories: [plpython_inc, hstore_inc, ], diff --git a/contrib/intarray/meson.build b/contrib/intarray/meson.build index 1655bcbb3fd..b7cf1ce0cad 100644 --- a/contrib/intarray/meson.build +++ b/contrib/intarray/meson.build @@ -8,6 +8,12 @@ intarray_sources = files( '_intbig_gist.c', ) +if host_system == 'windows' + intarray_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', '_int', + '--FILEDESC', 'intarray - functions and operators for arrays of integers',]) +endif + intarray = shared_module('_int', intarray_sources, kwargs: contrib_mod_args, diff --git a/contrib/isn/meson.build b/contrib/isn/meson.build index cc30bbeb55c..db68a718313 100644 --- a/contrib/isn/meson.build +++ b/contrib/isn/meson.build @@ -2,6 +2,12 @@ isn_sources = files( 'isn.c', ) +if host_system == 'windows' + isn_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'isn', + '--FILEDESC', 'isn - data types for international product numbering standards',]) +endif + isn = shared_module('isn', isn_sources, kwargs: contrib_mod_args, diff --git a/contrib/jsonb_plperl/meson.build b/contrib/jsonb_plperl/meson.build index 5c915d8ed94..071a7a98d2c 100644 --- a/contrib/jsonb_plperl/meson.build +++ b/contrib/jsonb_plperl/meson.build @@ -6,6 +6,12 @@ jsonb_plperl_sources = files( 'jsonb_plperl.c', ) +if host_system == 'windows' + jsonb_plperl_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'jsonb_plperl', + '--FILEDESC', 'jsonb_plperl - jsonb transform for plperl',]) +endif + jsonb_plperl = shared_module('jsonb_plperl', jsonb_plperl_sources, include_directories: [plperl_inc], diff --git a/contrib/jsonb_plpython/meson.build b/contrib/jsonb_plpython/meson.build index de8e1105c6a..84dc1161e8b 100644 --- a/contrib/jsonb_plpython/meson.build +++ b/contrib/jsonb_plpython/meson.build @@ -6,6 +6,12 @@ jsonb_plpython_sources = files( 'jsonb_plpython.c', ) +if host_system == 'windows' + jsonb_plpython_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'jsonb_plpython3', + '--FILEDESC', 'jsonb_plpython - jsonb transform for plpython',]) +endif + jsonb_plpython = shared_module('jsonb_plpython3', jsonb_plpython_sources, include_directories: [plpython_inc], diff --git a/contrib/lo/meson.build b/contrib/lo/meson.build index 9082d5713c7..61ae131f1cc 100644 --- a/contrib/lo/meson.build +++ b/contrib/lo/meson.build @@ -2,6 +2,12 @@ lo_sources = files( 'lo.c', ) +if host_system == 'windows' + lo_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'lo', + '--FILEDESC', 'lo - management for large objects',]) +endif + lo = shared_module('lo', lo_sources, kwargs: contrib_mod_args, diff --git a/contrib/ltree/meson.build b/contrib/ltree/meson.build index 9463fc2c5e5..421292cea9d 100644 --- a/contrib/ltree/meson.build +++ b/contrib/ltree/meson.build @@ -13,6 +13,12 @@ ltree_sources = files( # .. so that includes of ltree/ltree.h work ltree_inc = include_directories('.', '../') +if host_system == 'windows' + ltree_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'ltree', + '--FILEDESC', 'ltree - hierarchical label data type',]) +endif + ltree = shared_module('ltree', ltree_sources, kwargs: contrib_mod_args, diff --git a/contrib/ltree_plpython/meson.build b/contrib/ltree_plpython/meson.build index 429d75006aa..acf5e4a6fc8 100644 --- a/contrib/ltree_plpython/meson.build +++ b/contrib/ltree_plpython/meson.build @@ -6,6 +6,12 @@ ltree_plpython_sources = files( 'ltree_plpython.c', ) +if host_system == 'windows' + ltree_plpython_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'ltree_plpython3', + '--FILEDESC', 'ltree_plpython - ltree transform for plpython',]) +endif + ltree_plpython = shared_module('ltree_plpython3', ltree_plpython_sources, include_directories: [plpython_inc, ltree_inc], diff --git a/contrib/oid2name/meson.build b/contrib/oid2name/meson.build index 1dad5d8f6e7..1a248f19260 100644 --- a/contrib/oid2name/meson.build +++ b/contrib/oid2name/meson.build @@ -1,5 +1,15 @@ +oid2name_sources = files( + 'oid2name.c', +) + +if host_system == 'windows' + oid2name_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'oid2name', + '--FILEDESC', 'oid2name - examine the file structure',]) +endif + oid2name = executable('oid2name', - ['oid2name.c'], + oid2name_sources, dependencies: [frontend_code, libpq], kwargs: default_bin_args, ) diff --git a/contrib/old_snapshot/meson.build b/contrib/old_snapshot/meson.build index 8e7ee09a43a..77276c3715a 100644 --- a/contrib/old_snapshot/meson.build +++ b/contrib/old_snapshot/meson.build @@ -2,6 +2,12 @@ old_snapshot_sources = files( 'time_mapping.c', ) +if host_system == 'windows' + old_snapshot_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'old_snapshot', + '--FILEDESC', 'old_snapshot - utilities in support of old_snapshot_threshold',]) +endif + old_snapshot = shared_module('old_snapshot', old_snapshot_sources, kwargs: contrib_mod_args, diff --git a/contrib/pageinspect/meson.build b/contrib/pageinspect/meson.build index 4af8153e4fd..3ec50b9445e 100644 --- a/contrib/pageinspect/meson.build +++ b/contrib/pageinspect/meson.build @@ -9,6 +9,12 @@ pageinspect_sources = files( 'rawpage.c', ) +if host_system == 'windows' + pageinspect_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pageinspect', + '--FILEDESC', 'pageinspect - functions to inspect contents of database pages',]) +endif + pageinspect = shared_module('pageinspect', pageinspect_sources, kwargs: contrib_mod_args, diff --git a/contrib/passwordcheck/meson.build b/contrib/passwordcheck/meson.build index 7da47d02f1d..383d7df372a 100644 --- a/contrib/passwordcheck/meson.build +++ b/contrib/passwordcheck/meson.build @@ -9,6 +9,12 @@ passwordcheck_deps = [] # passwordcheck_c_args += ['-DUSE_CRACKLIB', '-DCRACKLIB_DICTPATH="/usr/lib/cracklib_dict"'] # passwordcheck_deps += [cc.find_library('crack')] +if host_system == 'windows' + passwordcheck_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'passwordcheck', + '--FILEDESC', 'passwordcheck - strengthen user password checks',]) +endif + passwordcheck = shared_module('passwordcheck', passwordcheck_sources, c_args: passwordcheck_c_args, diff --git a/contrib/pg_buffercache/meson.build b/contrib/pg_buffercache/meson.build index 2c69eae3ea2..dd9948e5f0b 100644 --- a/contrib/pg_buffercache/meson.build +++ b/contrib/pg_buffercache/meson.build @@ -1,7 +1,15 @@ +pg_buffercache_sources = files( + 'pg_buffercache_pages.c', +) + +if host_system == 'windows' + pg_buffercache_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_buffercache', + '--FILEDESC', 'pg_buffercache - monitoring of shared buffer cache in real-time',]) +endif + pg_buffercache = shared_module('pg_buffercache', - files( - 'pg_buffercache_pages.c', - ), + pg_buffercache_sources, kwargs: contrib_mod_args, ) contrib_targets += pg_buffercache diff --git a/contrib/pg_freespacemap/meson.build b/contrib/pg_freespacemap/meson.build index f795014d7ca..904b37b6e9b 100644 --- a/contrib/pg_freespacemap/meson.build +++ b/contrib/pg_freespacemap/meson.build @@ -1,7 +1,15 @@ +pg_freespacemap_sources = files( + 'pg_freespacemap.c', +) + +if host_system == 'windows' + pg_freespacemap_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_freespacemap', + '--FILEDESC', 'pg_freespacemap - monitoring of free space map',]) +endif + pg_freespacemap = shared_module('pg_freespacemap', - files( - 'pg_freespacemap.c', - ), + pg_freespacemap_sources, kwargs: contrib_mod_args, ) contrib_targets += pg_freespacemap diff --git a/contrib/pg_prewarm/meson.build b/contrib/pg_prewarm/meson.build index bdca9af4f27..b7140cee34b 100644 --- a/contrib/pg_prewarm/meson.build +++ b/contrib/pg_prewarm/meson.build @@ -1,8 +1,16 @@ +pg_prewarm_sources = files( + 'autoprewarm.c', + 'pg_prewarm.c', +) + +if host_system == 'windows' + pg_prewarm_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_prewarm', + '--FILEDESC', 'pg_prewarm - preload relation data into system buffer cache',]) +endif + pg_prewarm = shared_module('pg_prewarm', - files( - 'autoprewarm.c', - 'pg_prewarm.c', - ), + pg_prewarm_sources, kwargs: contrib_mod_args, ) contrib_targets += pg_prewarm diff --git a/contrib/pg_stat_statements/meson.build b/contrib/pg_stat_statements/meson.build index ac117d2fc1d..854df138e76 100644 --- a/contrib/pg_stat_statements/meson.build +++ b/contrib/pg_stat_statements/meson.build @@ -1,5 +1,15 @@ +pg_stat_statements_sources = files( + 'pg_stat_statements.c', +) + +if host_system == 'windows' + pg_stat_statements_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_stat_statements', + '--FILEDESC', 'pg_stat_statements - execution statistics of SQL statements',]) +endif + pg_stat_statements = shared_module('pg_stat_statements', - files('pg_stat_statements.c'), + pg_stat_statements_sources, kwargs: contrib_mod_args + { 'dependencies': contrib_mod_args['dependencies'], }, diff --git a/contrib/pg_surgery/meson.build b/contrib/pg_surgery/meson.build index ac71caa5276..7b5c5999f4b 100644 --- a/contrib/pg_surgery/meson.build +++ b/contrib/pg_surgery/meson.build @@ -1,7 +1,15 @@ +pg_surgery_sources = files( + 'heap_surgery.c', +) + +if host_system == 'windows' + pg_surgery_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_surgery', + '--FILEDESC', 'pg_surgery - perform surgery on a damaged relation',]) +endif + pg_surgery = shared_module('pg_surgery', - files( - 'heap_surgery.c', - ), + pg_surgery_sources, kwargs: contrib_mod_args, ) contrib_targets += pg_surgery diff --git a/contrib/pg_trgm/meson.build b/contrib/pg_trgm/meson.build index a90628d23c6..c8c7c07b308 100644 --- a/contrib/pg_trgm/meson.build +++ b/contrib/pg_trgm/meson.build @@ -1,10 +1,18 @@ +pg_trgm_sources = files( + 'trgm_gin.c', + 'trgm_gist.c', + 'trgm_op.c', + 'trgm_regexp.c', +) + +if host_system == 'windows' + pg_trgm_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_trgm', + '--FILEDESC', 'pg_trgm - trigram matching',]) +endif + pg_trgm = shared_module('pg_trgm', - files( - 'trgm_gin.c', - 'trgm_gist.c', - 'trgm_op.c', - 'trgm_regexp.c', - ), + pg_trgm_sources, kwargs: contrib_mod_args, ) contrib_targets += pg_trgm diff --git a/contrib/pg_visibility/meson.build b/contrib/pg_visibility/meson.build index 933dc99ac4d..263a0d08b82 100644 --- a/contrib/pg_visibility/meson.build +++ b/contrib/pg_visibility/meson.build @@ -1,7 +1,15 @@ +pg_visibility_sources = files( + 'pg_visibility.c', +) + +if host_system == 'windows' + pg_visibility_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_visibility', + '--FILEDESC', 'pg_visibility - page visibility information',]) +endif + pg_visibility = shared_module('pg_visibility', - files( - 'pg_visibility.c', - ), + pg_visibility_sources, kwargs: contrib_mod_args, ) contrib_targets += pg_visibility diff --git a/contrib/pg_walinspect/meson.build b/contrib/pg_walinspect/meson.build index d6b27877dd0..4314a3182a2 100644 --- a/contrib/pg_walinspect/meson.build +++ b/contrib/pg_walinspect/meson.build @@ -1,5 +1,11 @@ pg_walinspect_sources = files('pg_walinspect.c') +if host_system == 'windows' + pg_walinspect_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_walinspect', + '--FILEDESC', 'pg_walinspect - functions to inspect contents of PostgreSQL Write-Ahead Log',]) +endif + pg_walinspect = shared_module('pg_walinspect', pg_walinspect_sources, kwargs: contrib_mod_args + { diff --git a/contrib/pgcrypto/meson.build b/contrib/pgcrypto/meson.build index fe0851bf8e8..7fc7bbc7ca1 100644 --- a/contrib/pgcrypto/meson.build +++ b/contrib/pgcrypto/meson.build @@ -69,6 +69,12 @@ else pgcrypto_regress += 'pgp-zlib-DISABLED' endif +if host_system == 'windows' + pgcrypto_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pgcrypto', + '--FILEDESC', 'pgcrypto - cryptographic functions',]) +endif + pgcrypto = shared_module('pgcrypto', pgcrypto_sources, link_with: pgcrypto_link_with, diff --git a/contrib/pgrowlocks/meson.build b/contrib/pgrowlocks/meson.build index 1b41691a2a3..8092f0d4a64 100644 --- a/contrib/pgrowlocks/meson.build +++ b/contrib/pgrowlocks/meson.build @@ -1,7 +1,15 @@ +pgrowlocks_sources = files( + 'pgrowlocks.c', +) + +if host_system == 'windows' + pgrowlocks_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pgrowlocks', + '--FILEDESC', 'pgrowlocks - display row locking information',]) +endif + pgrowlocks = shared_module('pgrowlocks', - files( - 'pgrowlocks.c', - ), + pgrowlocks_sources, kwargs: contrib_mod_args, ) contrib_targets += pgrowlocks diff --git a/contrib/pgstattuple/meson.build b/contrib/pgstattuple/meson.build index 8e828692d5c..05e4cd46a5c 100644 --- a/contrib/pgstattuple/meson.build +++ b/contrib/pgstattuple/meson.build @@ -1,9 +1,17 @@ +pgstattuple_sources = files( + 'pgstatapprox.c', + 'pgstatindex.c', + 'pgstattuple.c', +) + +if host_system == 'windows' + pgstattuple_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pgstattuple', + '--FILEDESC', 'pgstattuple - tuple-level statistics',]) +endif + pgstattuple = shared_module('pgstattuple', - files( - 'pgstatapprox.c', - 'pgstatindex.c', - 'pgstattuple.c', - ), + pgstattuple_sources, kwargs: contrib_mod_args, ) contrib_targets += pgstattuple diff --git a/contrib/postgres_fdw/meson.build b/contrib/postgres_fdw/meson.build index 378885ec93b..d3746ff135c 100644 --- a/contrib/postgres_fdw/meson.build +++ b/contrib/postgres_fdw/meson.build @@ -6,6 +6,12 @@ postgres_fdw_sources = files( 'shippable.c', ) +if host_system == 'windows' + postgres_fdw_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'postgres_fdw', + '--FILEDESC', 'postgres_fdw - foreign data wrapper for PostgreSQL',]) +endif + postgres_fdw = shared_module('postgres_fdw', postgres_fdw_sources, kwargs: contrib_mod_args + { diff --git a/contrib/seg/meson.build b/contrib/seg/meson.build index e476eab2a77..c6fbb22999b 100644 --- a/contrib/seg/meson.build +++ b/contrib/seg/meson.build @@ -17,6 +17,12 @@ seg_parse = custom_target('segparse', generated_sources += seg_parse.to_list() seg_sources += seg_parse +if host_system == 'windows' + seg_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'seg', + '--FILEDESC', 'seg - line segment data type',]) +endif + seg = shared_module('seg', seg_sources, include_directories: include_directories('.'), diff --git a/contrib/sepgsql/meson.build b/contrib/sepgsql/meson.build index 60a95e17c2f..8bef239e3c2 100644 --- a/contrib/sepgsql/meson.build +++ b/contrib/sepgsql/meson.build @@ -14,6 +14,12 @@ sepgsql_sources = files( 'uavc.c', ) +if host_system == 'windows' + sepgsql_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'sepgsql', + '--FILEDESC', 'sepgsql - SELinux integration',]) +endif + sepgsql = shared_module('sepgsql', sepgsql_sources, kwargs: contrib_mod_args + { diff --git a/contrib/spi/meson.build b/contrib/spi/meson.build index 98008980ec2..e7d78189ef5 100644 --- a/contrib/spi/meson.build +++ b/contrib/spi/meson.build @@ -1,5 +1,15 @@ +autoinc_sources = files( + 'autoinc.c', +) + +if host_system == 'windows' + autoinc_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'autoinc', + '--FILEDESC', 'spi - examples of using SPI and triggers',]) +endif + autoinc = shared_module('autoinc', - ['autoinc.c'], + autoinc_sources, kwargs: contrib_mod_args, ) contrib_targets += autoinc @@ -9,8 +19,18 @@ install_data('autoinc.control', 'autoinc--1.0.sql', ) +insert_username_sources = files( + 'insert_username.c', +) + +if host_system == 'windows' + insert_username_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'insert_username', + '--FILEDESC', 'spi - examples of using SPI and triggers',]) +endif + insert_username = shared_module('insert_username', - ['insert_username.c'], + insert_username_sources, kwargs: contrib_mod_args, ) contrib_targets += insert_username @@ -22,8 +42,18 @@ install_data( ) +moddatetime_sources = files( + 'moddatetime.c', +) + +if host_system == 'windows' + moddatetime_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'moddatetime', + '--FILEDESC', 'spi - examples of using SPI and triggers',]) +endif + moddatetime = shared_module('moddatetime', - ['moddatetime.c'], + moddatetime_sources, kwargs: contrib_mod_args, ) contrib_targets += moddatetime @@ -38,8 +68,18 @@ install_data( # comment out if you want a quieter refint package for other uses refint_cflags = ['-DREFINT_VERBOSE'] +refint_sources = files( + 'refint.c', +) + +if host_system == 'windows' + refint_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'refint', + '--FILEDESC', 'spi - examples of using SPI and triggers',]) +endif + refint = shared_module('refint', - ['refint.c'], + refint_sources, c_args: refint_cflags, kwargs: contrib_mod_args, ) diff --git a/contrib/sslinfo/meson.build b/contrib/sslinfo/meson.build index 53f752a08ac..136983e783d 100644 --- a/contrib/sslinfo/meson.build +++ b/contrib/sslinfo/meson.build @@ -2,10 +2,18 @@ if not ssl.found() subdir_done() endif +sslinfo_sources = files( + 'sslinfo.c', +) + +if host_system == 'windows' + sslinfo_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'sslinfo', + '--FILEDESC', 'sslinfo - information about client SSL certificate',]) +endif + sslinfo = shared_module('sslinfo', - files( - 'sslinfo.c', - ), + sslinfo_sources, kwargs: contrib_mod_args + { 'dependencies': [ssl, contrib_mod_args['dependencies']], } diff --git a/contrib/tablefunc/meson.build b/contrib/tablefunc/meson.build index f4230096c0c..d2ddc8d3b39 100644 --- a/contrib/tablefunc/meson.build +++ b/contrib/tablefunc/meson.build @@ -1,7 +1,15 @@ +tablefunc_sources = files( + 'tablefunc.c', +) + +if host_system == 'windows' + tablefunc_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'tablefunc', + '--FILEDESC', 'tablefunc - various functions that return tables',]) +endif + tablefunc = shared_module('tablefunc', - files( - 'tablefunc.c', - ), + tablefunc_sources, kwargs: contrib_mod_args, ) contrib_targets += tablefunc diff --git a/contrib/tcn/meson.build b/contrib/tcn/meson.build index c3a025247d4..71261c3b0a2 100644 --- a/contrib/tcn/meson.build +++ b/contrib/tcn/meson.build @@ -1,7 +1,15 @@ +tcn_sources = files( + 'tcn.c', +) + +if host_system == 'windows' + tcn_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'tcn', + '--FILEDESC', 'tcn - trigger function notifying listeners',]) +endif + tcn = shared_module('tcn', - files( - 'tcn.c', - ), + tcn_sources, kwargs: contrib_mod_args, ) contrib_targets += tcn diff --git a/contrib/test_decoding/meson.build b/contrib/test_decoding/meson.build index dd7cb0101ad..6376103c689 100644 --- a/contrib/test_decoding/meson.build +++ b/contrib/test_decoding/meson.build @@ -2,6 +2,12 @@ test_decoding_sources = files( 'test_decoding.c', ) +if host_system == 'windows' + test_decoding_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'test_decoding', + '--FILEDESC', 'test_decoding - example of a logical decoding output plugin',]) +endif + test_decoding = shared_module('test_decoding', test_decoding_sources, kwargs: contrib_mod_args, diff --git a/contrib/tsm_system_rows/meson.build b/contrib/tsm_system_rows/meson.build index b9cd42115a8..380abb49883 100644 --- a/contrib/tsm_system_rows/meson.build +++ b/contrib/tsm_system_rows/meson.build @@ -1,7 +1,15 @@ +tsm_system_rows_sources = files( + 'tsm_system_rows.c', +) + +if host_system == 'windows' + tsm_system_rows_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'tsm_system_rows', + '--FILEDESC', 'tsm_system_rows - TABLESAMPLE method which accepts number of rows as a limit',]) +endif + tsm_system_rows = shared_module('tsm_system_rows', - files( - 'tsm_system_rows.c', - ), + tsm_system_rows_sources, kwargs: contrib_mod_args, ) contrib_targets += tsm_system_rows diff --git a/contrib/tsm_system_time/meson.build b/contrib/tsm_system_time/meson.build index 18015912ffb..e57a2702c60 100644 --- a/contrib/tsm_system_time/meson.build +++ b/contrib/tsm_system_time/meson.build @@ -1,7 +1,15 @@ +tsm_system_time_sources = files( + 'tsm_system_time.c', +) + +if host_system == 'windows' + tsm_system_time_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'tsm_system_time', + '--FILEDESC', 'tsm_system_time - TABLESAMPLE method which accepts time in milliseconds as a limit',]) +endif + tsm_system_time = shared_module('tsm_system_time', - files( - 'tsm_system_time.c', - ), + tsm_system_time_sources, kwargs: contrib_mod_args, ) contrib_targets += tsm_system_time diff --git a/contrib/unaccent/meson.build b/contrib/unaccent/meson.build index 872b76e3223..438035132f8 100644 --- a/contrib/unaccent/meson.build +++ b/contrib/unaccent/meson.build @@ -1,7 +1,15 @@ +unaccent_sources = files( + 'unaccent.c', +) + +if host_system == 'windows' + unaccent_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'unaccent', + '--FILEDESC', 'unaccent - text search dictionary that removes accents',]) +endif + unaccent = shared_module('unaccent', - files( - 'unaccent.c', - ), + unaccent_sources, kwargs: contrib_mod_args, ) contrib_targets += unaccent diff --git a/contrib/uuid-ossp/meson.build b/contrib/uuid-ossp/meson.build index da6d1d75c12..28730f398f0 100644 --- a/contrib/uuid-ossp/meson.build +++ b/contrib/uuid-ossp/meson.build @@ -2,10 +2,18 @@ if not uuid.found() subdir_done() endif +uuid_ossp_sources = files( + 'uuid-ossp.c', +) + +if host_system == 'windows' + uuid_ossp_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'uuid-ossp', + '--FILEDESC', 'uuid-ossp - UUID generation',]) +endif + uuid_ossp = shared_module('uuid-ossp', - files( - 'uuid-ossp.c', - ), + uuid_ossp_sources, kwargs: contrib_mod_args + { 'dependencies': [uuid, contrib_mod_args['dependencies']], }, diff --git a/contrib/vacuumlo/meson.build b/contrib/vacuumlo/meson.build index 7a632b87d1b..846de47dbd1 100644 --- a/contrib/vacuumlo/meson.build +++ b/contrib/vacuumlo/meson.build @@ -1,5 +1,15 @@ +vacuumlo_sources = files( + 'vacuumlo.c', +) + +if host_system == 'windows' + vacuumlo_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'vacuumlo', + '--FILEDESC', 'vacuumlo - removes orphaned large objects',]) +endif + vacuumlo = executable('vacuumlo', - ['vacuumlo.c'], + vacuumlo_sources, dependencies: [frontend_code, libpq], kwargs: default_bin_args, ) diff --git a/contrib/xml2/meson.build b/contrib/xml2/meson.build index 9c0b56f01f6..89b0d677516 100644 --- a/contrib/xml2/meson.build +++ b/contrib/xml2/meson.build @@ -2,11 +2,19 @@ if not libxml.found() subdir_done() endif +xml2_sources = files( + 'xpath.c', + 'xslt_proc.c', +) + +if host_system == 'windows' + xml2_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pgxml', + '--FILEDESC', 'xml2 - XPath querying and XSLT',]) +endif + xml2 = shared_module('pgxml', - files( - 'xpath.c', - 'xslt_proc.c', - ), + xml2_sources, kwargs: contrib_mod_args + { 'dependencies': [libxml, libxslt, contrib_mod_args['dependencies']], }, diff --git a/src/interfaces/ecpg/compatlib/meson.build b/src/interfaces/ecpg/compatlib/meson.build index 5887cb92b52..e5dc0edc04b 100644 --- a/src/interfaces/ecpg/compatlib/meson.build +++ b/src/interfaces/ecpg/compatlib/meson.build @@ -1,7 +1,11 @@ export_file = custom_target('libpq.exports', kwargs: gen_export_kwargs) -ecpg_compat = both_libraries('libecpg_compat', +ecpg_compat_sources = files( 'informix.c', +) + +ecpg_compat = both_libraries('libecpg_compat', + ecpg_compat_sources, include_directories: ['.', ecpg_inc, postgres_inc, libpq_inc], c_args: ['-DSO_MAJOR_VERSION=3'], dependencies: [frontend_code, thread_dep], diff --git a/src/interfaces/ecpg/preproc/meson.build b/src/interfaces/ecpg/preproc/meson.build index 1be49c8c27f..74876f039c9 100644 --- a/src/interfaces/ecpg/preproc/meson.build +++ b/src/interfaces/ecpg/preproc/meson.build @@ -93,6 +93,12 @@ ecpg_kwlist = custom_target('ecpg_kwlist_d.h', generated_sources += ecpg_kwlist ecpg_sources += ecpg_kwlist +if host_system == 'windows' + ecpg_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'ecpg', + '--FILEDESC', 'ecpg - embedded SQL precompiler for C',]) +endif + ecpg_exe = executable('ecpg', ecpg_sources, include_directories: ['.', ecpg_inc, postgres_inc, libpq_inc], diff --git a/src/interfaces/ecpg/test/meson.build b/src/interfaces/ecpg/test/meson.build index f0ace641f0c..f67f2dffb71 100644 --- a/src/interfaces/ecpg/test/meson.build +++ b/src/interfaces/ecpg/test/meson.build @@ -7,6 +7,12 @@ pg_regress_ecpg_sources = pg_regress_c + files( 'pg_regress_ecpg.c', ) +if host_system == 'windows' + pg_regress_ecpg_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_regress_ecpg', + '--FILEDESC', 'ECPG Test - regression tests for ECPG',]) +endif + pg_regress_ecpg = executable('pg_regress_ecpg', pg_regress_ecpg_sources, c_args: pg_regress_cflags, diff --git a/src/test/isolation/meson.build b/src/test/isolation/meson.build index c7656fd4609..ba27b8c1d44 100644 --- a/src/test/isolation/meson.build +++ b/src/test/isolation/meson.build @@ -23,6 +23,12 @@ spec_parser = custom_target('specparse', isolationtester_sources += spec_parser generated_sources += spec_parser.to_list() +if host_system == 'windows' + isolation_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_isolation_regress', + '--FILEDESC', 'pg_isolation_regress - multi-client test driver',]) +endif + pg_isolation_regress = executable('pg_isolation_regress', isolation_sources, c_args: pg_regress_cflags, @@ -34,6 +40,13 @@ pg_isolation_regress = executable('pg_isolation_regress', ) bin_targets += pg_isolation_regress + +if host_system == 'windows' + isolationtester_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'isolationtester', + '--FILEDESC', 'isolationtester - multi-client test driver',]) +endif + isolationtester = executable('isolationtester', isolationtester_sources, include_directories: include_directories('.'), diff --git a/src/test/modules/delay_execution/meson.build b/src/test/modules/delay_execution/meson.build index cf4bdaba637..a0c3ab6afe7 100644 --- a/src/test/modules/delay_execution/meson.build +++ b/src/test/modules/delay_execution/meson.build @@ -1,6 +1,17 @@ # FIXME: prevent install during main install, but not during test :/ + +delay_execution_sources = files( + 'delay_execution.c', +) + +if host_system == 'windows' + delay_execution_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'delay_execution', + '--FILEDESC', 'delay_execution - allow delay between parsing and execution',]) +endif + delay_execution = shared_module('delay_execution', - ['delay_execution.c'], + delay_execution_sources, kwargs: pg_mod_args, ) testprep_targets += delay_execution diff --git a/src/test/modules/dummy_index_am/meson.build b/src/test/modules/dummy_index_am/meson.build index 56ff5f48001..4ce82491135 100644 --- a/src/test/modules/dummy_index_am/meson.build +++ b/src/test/modules/dummy_index_am/meson.build @@ -1,6 +1,17 @@ # FIXME: prevent install during main install, but not during test :/ + +dummy_index_am_sources = files( + 'dummy_index_am.c', +) + +if host_system == 'windows' + dummy_index_am_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'dummy_index_am', + '--FILEDESC', 'dummy_index_am - index access method template',]) +endif + dummy_index_am = shared_module('dummy_index_am', - ['dummy_index_am.c'], + dummy_index_am_sources, kwargs: pg_mod_args, ) testprep_targets += dummy_index_am diff --git a/src/test/modules/dummy_seclabel/meson.build b/src/test/modules/dummy_seclabel/meson.build index 21b7cf8f353..81b626e496c 100644 --- a/src/test/modules/dummy_seclabel/meson.build +++ b/src/test/modules/dummy_seclabel/meson.build @@ -1,6 +1,17 @@ # FIXME: prevent install during main install, but not during test :/ + +dummy_seclabel_sources = files( + 'dummy_seclabel.c', +) + +if host_system == 'windows' + dummy_seclabel_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'dummy_seclabel', + '--FILEDESC', 'dummy_seclabel - regression testing of the SECURITY LABEL statement',]) +endif + dummy_seclabel = shared_module('dummy_seclabel', - ['dummy_seclabel.c'], + dummy_seclabel_sources, kwargs: pg_mod_args, ) testprep_targets += dummy_seclabel diff --git a/src/test/modules/libpq_pipeline/meson.build b/src/test/modules/libpq_pipeline/meson.build index 8384b6e3b2a..de0e2d15626 100644 --- a/src/test/modules/libpq_pipeline/meson.build +++ b/src/test/modules/libpq_pipeline/meson.build @@ -1,7 +1,15 @@ +libpq_pipeline_sources = files( + 'libpq_pipeline.c', +) + +if host_system == 'windows' + libpq_pipeline_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'libpq_pipeline', + '--FILEDESC', 'libpq_pipeline - test program for pipeline execution',]) +endif + libpq_pipeline = executable('libpq_pipeline', - files( - 'libpq_pipeline.c', - ), + libpq_pipeline_sources, dependencies: [frontend_code, libpq], kwargs: default_bin_args + { 'install': false, diff --git a/src/test/modules/plsample/meson.build b/src/test/modules/plsample/meson.build index 45de3f1990d..e1ea2c7a16f 100644 --- a/src/test/modules/plsample/meson.build +++ b/src/test/modules/plsample/meson.build @@ -1,6 +1,17 @@ # FIXME: prevent install during main install, but not during test :/ + +plsample_sources = files( + 'plsample.c', +) + +if host_system == 'windows' + plsample_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'plsample', + '--FILEDESC', 'PL/Sample - template for procedural language',]) +endif + plsample = shared_module('plsample', - ['plsample.c'], + plsample_sources, kwargs: pg_mod_args, ) testprep_targets += plsample diff --git a/src/test/modules/spgist_name_ops/meson.build b/src/test/modules/spgist_name_ops/meson.build index 857fc7e140e..445296fee0b 100644 --- a/src/test/modules/spgist_name_ops/meson.build +++ b/src/test/modules/spgist_name_ops/meson.build @@ -1,6 +1,17 @@ # FIXME: prevent install during main install, but not during test :/ + +spgist_name_ops_sources = files( + 'spgist_name_ops.c', +) + +if host_system == 'windows' + spgist_name_ops_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'spgist_name_ops', + '--FILEDESC', 'spgist_name_ops - test opclass for SP-GiST',]) +endif + spgist_name_ops = shared_module('spgist_name_ops', - ['spgist_name_ops.c'], + spgist_name_ops_sources, kwargs: pg_mod_args, ) testprep_targets += spgist_name_ops diff --git a/src/test/modules/ssl_passphrase_callback/meson.build b/src/test/modules/ssl_passphrase_callback/meson.build index a57bd0693a3..a9eb4c564da 100644 --- a/src/test/modules/ssl_passphrase_callback/meson.build +++ b/src/test/modules/ssl_passphrase_callback/meson.build @@ -3,8 +3,19 @@ if not ssl.found() endif # FIXME: prevent install during main install, but not during test :/ + +ssl_passphrase_callback_sources = files( + 'ssl_passphrase_func.c', +) + +if host_system == 'windows' + ssl_passphrase_callback_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'ssl_passphrase_func', + '--FILEDESC', 'callback function to provide a passphrase',]) +endif + ssl_passphrase_callback = shared_module('ssl_passphrase_func', - ['ssl_passphrase_func.c'], + ssl_passphrase_callback_sources, kwargs: pg_mod_args + { 'dependencies': [ssl, pg_mod_args['dependencies']], }, diff --git a/src/test/modules/test_bloomfilter/meson.build b/src/test/modules/test_bloomfilter/meson.build index 945eb5a70c4..3cf6b05754f 100644 --- a/src/test/modules/test_bloomfilter/meson.build +++ b/src/test/modules/test_bloomfilter/meson.build @@ -1,6 +1,17 @@ # FIXME: prevent install during main install, but not during test :/ + +test_bloomfilter_sources = files( + 'test_bloomfilter.c', +) + +if host_system == 'windows' + test_bloomfilter_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'test_bloomfilter', + '--FILEDESC', 'test_bloomfilter - test code for Bloom filter library',]) +endif + test_bloomfilter = shared_module('test_bloomfilter', - ['test_bloomfilter.c'], + test_bloomfilter_sources, kwargs: pg_mod_args, ) testprep_targets += test_bloomfilter diff --git a/src/test/modules/test_ddl_deparse/meson.build b/src/test/modules/test_ddl_deparse/meson.build index 81ad5adc526..54d44f9b2b4 100644 --- a/src/test/modules/test_ddl_deparse/meson.build +++ b/src/test/modules/test_ddl_deparse/meson.build @@ -1,6 +1,17 @@ # FIXME: prevent install during main install, but not during test :/ + +test_ddl_deparse_sources = files( + 'test_ddl_deparse.c', +) + +if host_system == 'windows' + test_ddl_deparse_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'test_ddl_deparse', + '--FILEDESC', 'test_ddl_deparse - regression testing for DDL deparsing',]) +endif + test_ddl_deparse = shared_module('test_ddl_deparse', - ['test_ddl_deparse.c'], + test_ddl_deparse_sources, kwargs: pg_mod_args, ) testprep_targets += test_ddl_deparse diff --git a/src/test/modules/test_ginpostinglist/meson.build b/src/test/modules/test_ginpostinglist/meson.build index abf0a3b0430..b3b49c56122 100644 --- a/src/test/modules/test_ginpostinglist/meson.build +++ b/src/test/modules/test_ginpostinglist/meson.build @@ -1,6 +1,17 @@ # FIXME: prevent install during main install, but not during test :/ + +test_ginpostinglist_sources = files( + 'test_ginpostinglist.c', +) + +if host_system == 'windows' + test_ginpostinglist_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'test_ginpostinglist', + '--FILEDESC', 'test_ginpostinglist - test code for src/backend/access/gin//ginpostinglist.c',]) +endif + test_ginpostinglist = shared_module('test_ginpostinglist', - ['test_ginpostinglist.c'], + test_ginpostinglist_sources, kwargs: pg_mod_args, ) testprep_targets += test_ginpostinglist diff --git a/src/test/modules/test_integerset/meson.build b/src/test/modules/test_integerset/meson.build index c32c469c69a..4bd75af4b5e 100644 --- a/src/test/modules/test_integerset/meson.build +++ b/src/test/modules/test_integerset/meson.build @@ -1,6 +1,17 @@ # FIXME: prevent install during main install, but not during test :/ + +test_integerset_sources = files( + 'test_integerset.c', +) + +if host_system == 'windows' + test_integerset_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'test_integerset', + '--FILEDESC', 'test_integerset - test code for src/backend/lib/integerset.c',]) +endif + test_integerset = shared_module('test_integerset', - ['test_integerset.c'], + test_integerset_sources, kwargs: pg_mod_args, ) testprep_targets += test_integerset diff --git a/src/test/modules/test_lfind/meson.build b/src/test/modules/test_lfind/meson.build index a388de1156a..c5405b8f878 100644 --- a/src/test/modules/test_lfind/meson.build +++ b/src/test/modules/test_lfind/meson.build @@ -1,6 +1,17 @@ # FIXME: prevent install during main install, but not during test :/ + +test_lfind_sources = files( + 'test_lfind.c', +) + +if host_system == 'windows' + test_lfind_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'test_lfind', + '--FILEDESC', 'test_lfind - test code for optimized linear search functions',]) +endif + test_lfind = shared_module('test_lfind', - ['test_lfind.c'], + test_lfind_sources, kwargs: pg_mod_args, ) testprep_targets += test_lfind diff --git a/src/test/modules/test_oat_hooks/meson.build b/src/test/modules/test_oat_hooks/meson.build index 5faf0459777..8802bbbac55 100644 --- a/src/test/modules/test_oat_hooks/meson.build +++ b/src/test/modules/test_oat_hooks/meson.build @@ -1,6 +1,17 @@ # FIXME: prevent install during main install, but not during test :/ + +test_oat_hooks_sources = files( + 'test_oat_hooks.c', +) + +if host_system == 'windows' + test_oat_hooks_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'test_oat_hooks', + '--FILEDESC', 'test_oat_hooks - example use of object access hooks',]) +endif + test_oat_hooks = shared_module('test_oat_hooks', - ['test_oat_hooks.c'], + test_oat_hooks_sources, kwargs: pg_mod_args, ) testprep_targets += test_oat_hooks diff --git a/src/test/modules/test_parser/meson.build b/src/test/modules/test_parser/meson.build index b59960f615e..1c17113347f 100644 --- a/src/test/modules/test_parser/meson.build +++ b/src/test/modules/test_parser/meson.build @@ -1,6 +1,17 @@ # FIXME: prevent install during main install, but not during test :/ + +test_parser_sources = files( + 'test_parser.c', +) + +if host_system == 'windows' + test_parser_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'test_parser', + '--FILEDESC', 'test_parser - example of a custom parser for full-text search',]) +endif + test_parser = shared_module('test_parser', - ['test_parser.c'], + test_parser_sources, kwargs: pg_mod_args, ) testprep_targets += test_parser diff --git a/src/test/modules/test_predtest/meson.build b/src/test/modules/test_predtest/meson.build index 1cfa84b3609..9a5be43c9c0 100644 --- a/src/test/modules/test_predtest/meson.build +++ b/src/test/modules/test_predtest/meson.build @@ -1,6 +1,17 @@ # FIXME: prevent install during main install, but not during test :/ + +test_predtest_sources = files( + 'test_predtest.c', +) + +if host_system == 'windows' + test_predtest_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'test_predtest', + '--FILEDESC', 'test_predtest - test code for optimizer/util/predtest.c',]) +endif + test_predtest = shared_module('test_predtest', - ['test_predtest.c'], + test_predtest_sources, kwargs: pg_mod_args, ) testprep_targets += test_predtest diff --git a/src/test/modules/test_rbtree/meson.build b/src/test/modules/test_rbtree/meson.build index 34cbc3e1624..f067e08d321 100644 --- a/src/test/modules/test_rbtree/meson.build +++ b/src/test/modules/test_rbtree/meson.build @@ -1,6 +1,17 @@ # FIXME: prevent install during main install, but not during test :/ + +test_rbtree_sources = files( + 'test_rbtree.c', +) + +if host_system == 'windows' + test_rbtree_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'test_rbtree', + '--FILEDESC', 'test_rbtree - test code for red-black tree library',]) +endif + test_rbtree = shared_module('test_rbtree', - ['test_rbtree.c'], + test_rbtree_sources, kwargs: pg_mod_args, ) testprep_targets += test_rbtree diff --git a/src/test/modules/test_regex/meson.build b/src/test/modules/test_regex/meson.build index 867a64e57c3..cfb938d9f1e 100644 --- a/src/test/modules/test_regex/meson.build +++ b/src/test/modules/test_regex/meson.build @@ -1,6 +1,17 @@ # FIXME: prevent install during main install, but not during test :/ + +test_regex_sources = files( + 'test_regex.c', +) + +if host_system == 'windows' + test_regex_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'test_regex', + '--FILEDESC', 'test_regex - test code for backend/regex/',]) +endif + test_regex = shared_module('test_regex', - ['test_regex.c'], + test_regex_sources, kwargs: pg_mod_args, ) testprep_targets += test_regex diff --git a/src/test/modules/test_rls_hooks/meson.build b/src/test/modules/test_rls_hooks/meson.build index 80d8adda332..3fb273b2934 100644 --- a/src/test/modules/test_rls_hooks/meson.build +++ b/src/test/modules/test_rls_hooks/meson.build @@ -1,6 +1,17 @@ # FIXME: prevent install during main install, but not during test :/ + +test_rls_hooks_sources = files( + 'test_rls_hooks.c', +) + +if host_system == 'windows' + test_rls_hooks_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'test_rls_hooks', + '--FILEDESC', 'test_rls_hooks - example use of RLS hooks',]) +endif + test_rls_hooks = shared_module('test_rls_hooks', - ['test_rls_hooks.c'], + test_rls_hooks_sources, kwargs: pg_mod_args, ) testprep_targets += test_rls_hooks diff --git a/src/test/modules/test_shm_mq/meson.build b/src/test/modules/test_shm_mq/meson.build index b663543d616..16c8fdb57f4 100644 --- a/src/test/modules/test_shm_mq/meson.build +++ b/src/test/modules/test_shm_mq/meson.build @@ -1,10 +1,19 @@ # FIXME: prevent install during main install, but not during test :/ + +test_shm_mq_sources = files( + 'setup.c', + 'test.c', + 'worker.c', +) + +if host_system == 'windows' + test_shm_mq_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'test_shm_mq', + '--FILEDESC', 'test_shm_mq - example use of shared memory message queue',]) +endif + test_shm_mq = shared_module('test_shm_mq', - files( - 'setup.c', - 'test.c', - 'worker.c', - ), + test_shm_mq_sources, kwargs: pg_mod_args, ) testprep_targets += test_shm_mq diff --git a/src/test/modules/worker_spi/meson.build b/src/test/modules/worker_spi/meson.build index 32acad883b2..a4a158c75b9 100644 --- a/src/test/modules/worker_spi/meson.build +++ b/src/test/modules/worker_spi/meson.build @@ -1,8 +1,17 @@ # FIXME: prevent install during main install, but not during test :/ + +test_worker_spi_sources = files( + 'worker_spi.c', +) + +if host_system == 'windows' + test_worker_spi_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'worker_spi', + '--FILEDESC', 'worker_spi - background worker example',]) +endif + test_worker_spi = shared_module('worker_spi', - files( - 'worker_spi.c', - ), + test_worker_spi_sources, kwargs: pg_mod_args, ) testprep_targets += test_worker_spi diff --git a/src/test/regress/meson.build b/src/test/regress/meson.build index fd8ee995b79..963c0f64ed5 100644 --- a/src/test/regress/meson.build +++ b/src/test/regress/meson.build @@ -8,6 +8,12 @@ regress_sources = pg_regress_c + files( pg_regress_cflags = ['-DHOST_TUPLE="frak"', '-DSHELLPROG="/bin/sh"'] +if host_system == 'windows' + regress_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_regress', + '--FILEDESC', 'pg_regress - test driver',]) +endif + pg_regress = executable('pg_regress', regress_sources, c_args: pg_regress_cflags, diff --git a/meson.build b/meson.build index 6ffae59ba03..4ad06b25213 100644 --- a/meson.build +++ b/meson.build @@ -2523,6 +2523,67 @@ gen_export_kwargs = { +### +### windows resources related stuff +### + +if host_system == 'windows' + pg_ico = meson.source_root() / 'src' / 'port' / 'win32.ico' + win32ver_rc = files('src/port/win32ver.rc') + rcgen = find_program('src/tools/rcgen', native: true) + + rcgen_base_args = [ + '--srcdir', '@SOURCE_DIR@', + '--builddir', meson.build_root(), + '--rcout', '@OUTPUT0@', + '--out', '@OUTPUT1@', + '--input', '@INPUT@', + '@EXTRA_ARGS@', + ] + + if cc.get_argument_syntax() == 'msvc' + rcgen_base_args += [ + '--rc', find_program('rc', required: true).path(), + ] + rcgen_outputs = ['@[email protected]', '@[email protected]'] + else + rcgen_base_args += [ + '--windres', find_program('windres', required: true).path(), + ] + rcgen_outputs = ['@[email protected]', '@[email protected]'] + endif + + # msbuild backend doesn't support this atm + if meson.backend() == 'ninja' + rcgen_base_args += ['--depfile', '@DEPFILE@'] + endif + + rcgen_bin_args = rcgen_base_args + [ + '--VFT_TYPE', 'VFT_APP', + '--FILEENDING', 'exe', + '--ICO', pg_ico + ] + + rcgen_lib_args = rcgen_base_args + [ + '--VFT_TYPE', 'VFT_DLL', + '--FILEENDING', 'dll', + ] + + rc_bin_gen = generator(rcgen, + depfile: '@[email protected]', + arguments: rcgen_bin_args, + output: rcgen_outputs, + ) + + rc_lib_gen = generator(rcgen, + depfile: '@[email protected]', + arguments: rcgen_lib_args, + output: rcgen_outputs, + ) +endif + + + # headers that the whole build tree depends on generated_headers = [] # headers that the backend build depends on diff --git a/src/timezone/meson.build b/src/timezone/meson.build index 16f082ecfa8..9e0934c000b 100644 --- a/src/timezone/meson.build +++ b/src/timezone/meson.build @@ -28,6 +28,12 @@ if get_option('system_tzdata') == '' if meson.is_cross_build() zic = find_program(get_option('ZIC'), native: true, required: true) else + if host_system == 'windows' + zic_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'zic', + '--FILEDESC', 'zic - time zone compiler',]) + endif + zic = executable('zic', zic_sources, dependencies: [frontend_code], kwargs: default_bin_args + {'install': false} diff --git a/src/tools/rcgen b/src/tools/rcgen new file mode 100755 index 00000000000..5b62bfe5410 --- /dev/null +++ b/src/tools/rcgen @@ -0,0 +1,99 @@ +#!/usr/bin/env python3 + +import argparse +import os +import subprocess +import sys + +parser = argparse.ArgumentParser(description='generate PostgreSQL rc file') + +parser.add_argument('--srcdir', type=os.path.abspath, + required=True) +parser.add_argument('--builddir', type=os.path.abspath, + required=True) + +binaries = parser.add_argument_group('binaries') +binaries.add_argument('--windres', type=os.path.abspath) +binaries.add_argument('--rc', type=os.path.abspath) + +inout = parser.add_argument_group('inout') +inout.add_argument('--depfile', type=argparse.FileType('w')) +inout.add_argument('--input', type=argparse.FileType('r'), + required=True) +inout.add_argument('--rcout', type=argparse.FileType('w'), + required=True) +inout.add_argument('--out', type=str, + required=True) + +replacements = parser.add_argument_group('replacements') +replacements.add_argument('--FILEDESC', type=str) +replacements.add_argument('--NAME', type=str, required=True) +replacements.add_argument('--VFT_TYPE', type=str, required=True) +replacements.add_argument('--FILEENDING', type=str, required=True) +replacements.add_argument('--ICO', type=str) + +args = parser.parse_args() + +# determine replacement strings + +internal_name = '"{0}"'.format(args.NAME) +original_name = '"{0}.{1}"'.format(args.NAME, args.FILEENDING) + +# if no description is passed in, generate one based on the name +if args.FILEDESC: + filedesc = args.FILEDESC +elif args.NAME: + if args.VFT_TYPE == 'VFT_DLL': + filedesc = 'PostgreSQL {0} library'.format(args.NAME) + else: + filedesc = 'PostgreSQL {0} binary'.format(args.NAME) +filedesc = '"{0}"'.format(filedesc) + + +if args.ICO: + ico = 'IDI_ICON ICON "{0}"'.format(args.ICO) + if args.depfile: + args.depfile.write("{0} : {1}\n".format(args.rcout.name, args.ICO)) +else: + ico = '' + + +data = args.input.read() + +data = data.replace('VFT_APP', args.VFT_TYPE) +data = data.replace('_INTERNAL_NAME_', internal_name) +data = data.replace('_ORIGINAL_NAME_', original_name) +data = data.replace('FILEDESC', filedesc) +data = data.replace("_ICO_", ico) + +args.rcout.write(data) +args.rcout.close() + +if args.windres: + cmd = [ + args.windres, + '-I{0}/src/include/'.format(args.builddir), + '-I{0}/src/include/'.format(args.srcdir), + '-o', args.out, '-i', args.rcout.name, + ] +elif args.rc: + cmd = [ + args.rc, '/nologo', + '-I{0}/src/include/'.format(args.builddir), + '-I{0}/src/include/'.format(args.srcdir), + '/fo', args.out, args.rcout.name, + ] +else: + sys.exit('either --windres or --rc needs to be specified') + +sp = subprocess.run(cmd) +if sp.returncode != 0: + sys.exit(sp.returncode) + +# It'd be nicer if we could generate correct dependencies here, but 'rc' +# doesn't support doing so. It's unlikely we'll ever need more, so... +if args.depfile: + args.depfile.write("{0} : {1}\n".format( + args.rcout.name, args.input.name)) + args.depfile.write("{0} : {1}/{2}\n".format( + args.out, args.builddir, 'src/include/pg_config.h')) -- 2.37.3.542.gdd3f6c4cae --ngschxobz5ssor62 Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v16-0005-meson-Add-support-for-relative-rpaths-fixing-tes.patch" ^ permalink raw reply [nested|flat] 6+ messages in thread
* [PATCH v17 06/23] meson: Add windows resource files @ 2022-09-26 17:32 Andres Freund <[email protected]> 0 siblings, 0 replies; 6+ messages in thread From: Andres Freund @ 2022-09-26 17:32 UTC (permalink / raw) The generated resource files aren't exactly the same ones as the old buildsystems generate. Previously "InternalName" and "OriginalFileName" were mostly wrong / not set (despite being required), but that was hard to fix in at least the make build. Additionally, the meson build falls back to a "auto-generated" description when not set, and doesn't set it in a few cases - unlikely that anybody looks at these descriptions in detail. Author: Andres Freund <[email protected]> Author: Nazir Bilal Yavuz <[email protected]> --- src/backend/jit/llvm/meson.build | 6 ++ .../replication/libpqwalreceiver/meson.build | 6 ++ src/backend/replication/pgoutput/meson.build | 6 ++ src/backend/snowball/meson.build | 6 ++ .../utils/mb/conversion_procs/meson.build | 9 +- src/bin/initdb/meson.build | 6 ++ src/bin/pg_amcheck/meson.build | 8 +- src/bin/pg_archivecleanup/meson.build | 12 ++- src/bin/pg_basebackup/meson.build | 38 ++++++- src/bin/pg_checksums/meson.build | 12 ++- src/bin/pg_config/meson.build | 12 ++- src/bin/pg_controldata/meson.build | 12 ++- src/bin/pg_ctl/meson.build | 12 ++- src/bin/pg_dump/meson.build | 18 ++++ src/bin/pg_resetwal/meson.build | 12 ++- src/bin/pg_rewind/meson.build | 6 ++ src/bin/pg_test_fsync/meson.build | 10 +- src/bin/pg_test_timing/meson.build | 12 ++- src/bin/pg_upgrade/meson.build | 6 ++ src/bin/pg_verifybackup/meson.build | 6 ++ src/bin/pg_waldump/meson.build | 6 ++ src/bin/pgbench/meson.build | 6 ++ src/bin/pgevent/meson.build | 6 ++ src/bin/psql/meson.build | 6 ++ src/bin/scripts/meson.build | 10 +- src/interfaces/libpq/meson.build | 5 + src/interfaces/libpq/test/meson.build | 25 ++++- src/pl/plperl/meson.build | 7 ++ src/pl/plpgsql/src/meson.build | 6 ++ src/pl/plpython/meson.build | 6 ++ src/pl/tcl/meson.build | 6 ++ contrib/adminpack/meson.build | 12 ++- contrib/amcheck/meson.build | 17 +++- contrib/auth_delay/meson.build | 12 ++- contrib/auto_explain/meson.build | 12 ++- contrib/basebackup_to_shell/meson.build | 6 ++ contrib/basic_archive/meson.build | 6 ++ contrib/bloom/meson.build | 6 ++ contrib/bool_plperl/meson.build | 6 ++ contrib/btree_gin/meson.build | 12 ++- contrib/btree_gist/meson.build | 6 ++ contrib/citext/meson.build | 6 ++ contrib/cube/meson.build | 6 ++ contrib/dblink/meson.build | 6 ++ contrib/dict_int/meson.build | 12 ++- contrib/dict_xsyn/meson.build | 12 ++- contrib/earthdistance/meson.build | 12 ++- contrib/file_fdw/meson.build | 12 ++- contrib/fuzzystrmatch/meson.build | 16 ++- contrib/hstore/meson.build | 24 +++-- contrib/hstore_plperl/meson.build | 6 ++ contrib/hstore_plpython/meson.build | 6 ++ contrib/intarray/meson.build | 6 ++ contrib/isn/meson.build | 6 ++ contrib/jsonb_plperl/meson.build | 6 ++ contrib/jsonb_plpython/meson.build | 6 ++ contrib/lo/meson.build | 6 ++ contrib/ltree/meson.build | 6 ++ contrib/ltree_plpython/meson.build | 6 ++ contrib/oid2name/meson.build | 12 ++- contrib/old_snapshot/meson.build | 6 ++ contrib/pageinspect/meson.build | 6 ++ contrib/passwordcheck/meson.build | 6 ++ contrib/pg_buffercache/meson.build | 14 ++- contrib/pg_freespacemap/meson.build | 14 ++- contrib/pg_prewarm/meson.build | 16 ++- contrib/pg_stat_statements/meson.build | 12 ++- contrib/pg_surgery/meson.build | 14 ++- contrib/pg_trgm/meson.build | 20 ++-- contrib/pg_visibility/meson.build | 14 ++- contrib/pg_walinspect/meson.build | 6 ++ contrib/pgcrypto/meson.build | 6 ++ contrib/pgrowlocks/meson.build | 14 ++- contrib/pgstattuple/meson.build | 18 +++- contrib/postgres_fdw/meson.build | 6 ++ contrib/seg/meson.build | 6 ++ contrib/sepgsql/meson.build | 6 ++ contrib/spi/meson.build | 48 ++++++++- contrib/sslinfo/meson.build | 14 ++- contrib/tablefunc/meson.build | 14 ++- contrib/tcn/meson.build | 14 ++- contrib/test_decoding/meson.build | 6 ++ contrib/tsm_system_rows/meson.build | 14 ++- contrib/tsm_system_time/meson.build | 14 ++- contrib/unaccent/meson.build | 14 ++- contrib/uuid-ossp/meson.build | 14 ++- contrib/vacuumlo/meson.build | 12 ++- contrib/xml2/meson.build | 16 ++- src/interfaces/ecpg/compatlib/meson.build | 6 ++ src/interfaces/ecpg/ecpglib/meson.build | 6 ++ src/interfaces/ecpg/pgtypeslib/meson.build | 6 ++ src/interfaces/ecpg/preproc/meson.build | 6 ++ src/interfaces/ecpg/test/meson.build | 5 + src/test/isolation/meson.build | 13 +++ src/test/modules/delay_execution/meson.build | 13 ++- src/test/modules/dummy_index_am/meson.build | 13 ++- src/test/modules/dummy_seclabel/meson.build | 13 ++- src/test/modules/libpq_pipeline/meson.build | 14 ++- src/test/modules/plsample/meson.build | 13 ++- src/test/modules/spgist_name_ops/meson.build | 13 ++- .../ssl_passphrase_callback/meson.build | 13 ++- src/test/modules/test_bloomfilter/meson.build | 13 ++- src/test/modules/test_ddl_deparse/meson.build | 13 ++- .../modules/test_ginpostinglist/meson.build | 13 ++- src/test/modules/test_integerset/meson.build | 13 ++- src/test/modules/test_lfind/meson.build | 13 ++- src/test/modules/test_oat_hooks/meson.build | 13 ++- src/test/modules/test_parser/meson.build | 13 ++- src/test/modules/test_predtest/meson.build | 13 ++- src/test/modules/test_rbtree/meson.build | 13 ++- src/test/modules/test_regex/meson.build | 13 ++- src/test/modules/test_rls_hooks/meson.build | 13 ++- src/test/modules/test_shm_mq/meson.build | 19 +++- src/test/modules/worker_spi/meson.build | 15 ++- src/test/regress/meson.build | 6 ++ meson.build | 59 +++++++++++ src/timezone/meson.build | 6 ++ src/tools/rcgen | 99 +++++++++++++++++++ 118 files changed, 1286 insertions(+), 130 deletions(-) create mode 100755 src/tools/rcgen diff --git a/src/backend/jit/llvm/meson.build b/src/backend/jit/llvm/meson.build index de2e624ab58..5fb63768358 100644 --- a/src/backend/jit/llvm/meson.build +++ b/src/backend/jit/llvm/meson.build @@ -20,6 +20,12 @@ llvmjit_sources += files( 'llvmjit_expr.c', ) +if host_system == 'windows' + llvmjit_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'llvmjit', + '--FILEDESC', 'llvmjit - JIT using LLVM',]) +endif + llvmjit = shared_module('llvmjit', llvmjit_sources, kwargs: pg_mod_args + { diff --git a/src/backend/replication/libpqwalreceiver/meson.build b/src/backend/replication/libpqwalreceiver/meson.build index 3fc786c80a0..4c653a05d36 100644 --- a/src/backend/replication/libpqwalreceiver/meson.build +++ b/src/backend/replication/libpqwalreceiver/meson.build @@ -2,6 +2,12 @@ libpqwalreceiver_sources = files( 'libpqwalreceiver.c', ) +if host_system == 'windows' + libpqwalreceiver_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pqwalreceiver', + '--FILEDESC', 'libpqwalreceiver - receive WAL during streaming replication',]) +endif + libpqwalreceiver = shared_module('pqwalreceiver', libpqwalreceiver_sources, kwargs: pg_mod_args + { diff --git a/src/backend/replication/pgoutput/meson.build b/src/backend/replication/pgoutput/meson.build index ab956361a62..5df27d7b764 100644 --- a/src/backend/replication/pgoutput/meson.build +++ b/src/backend/replication/pgoutput/meson.build @@ -2,6 +2,12 @@ pgoutput_sources = files( 'pgoutput.c', ) +if host_system == 'windows' + pgoutput_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pgoutput', + '--FILEDESC', 'pgoutput - standard logical replication output plugin',]) +endif + pgoutput = shared_module('pgoutput', pgoutput_sources, kwargs: pg_mod_args, diff --git a/src/backend/snowball/meson.build b/src/backend/snowball/meson.build index 8c6f685cb32..974401d187e 100644 --- a/src/backend/snowball/meson.build +++ b/src/backend/snowball/meson.build @@ -58,6 +58,12 @@ dict_snowball_sources += files( # see comment in src/include/snowball/header.h stemmer_inc = include_directories('../../include/snowball') +if host_system == 'windows' + dict_snowball_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'dict_snowball', + '--FILEDESC', 'snowball - natural language stemmers',]) +endif + dict_snowball = shared_module('dict_snowball', dict_snowball_sources, kwargs: pg_mod_args + { diff --git a/src/backend/utils/mb/conversion_procs/meson.build b/src/backend/utils/mb/conversion_procs/meson.build index 1bc971d1945..1c18f2ac85a 100644 --- a/src/backend/utils/mb/conversion_procs/meson.build +++ b/src/backend/utils/mb/conversion_procs/meson.build @@ -29,8 +29,15 @@ encodings = { } foreach encoding, sources : encodings + source_files = files(sources) + + if host_system == 'windows' + source_files += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', encoding]) + endif + backend_targets += shared_module(encoding, - sources, + source_files, kwargs: pg_mod_args, ) endforeach diff --git a/src/bin/initdb/meson.build b/src/bin/initdb/meson.build index 9f213274d2f..6ced9a31b80 100644 --- a/src/bin/initdb/meson.build +++ b/src/bin/initdb/meson.build @@ -7,6 +7,12 @@ initdb_sources += timezone_localtime_source #fixme: reimplement libpq_pgport logic +if host_system == 'windows' + initdb_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'initdb', + '--FILEDESC', 'initdb - initialize a new database cluster',]) +endif + initdb = executable('initdb', initdb_sources, include_directories: [timezone_inc], diff --git a/src/bin/pg_amcheck/meson.build b/src/bin/pg_amcheck/meson.build index 8e197eba5f3..25f5e7a0948 100644 --- a/src/bin/pg_amcheck/meson.build +++ b/src/bin/pg_amcheck/meson.build @@ -1,7 +1,13 @@ pg_amcheck_sources = files( - 'pg_amcheck.c' + 'pg_amcheck.c', ) +if host_system == 'windows' + pg_amcheck_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_amcheck', + '--FILEDESC', 'pg_amcheck - detect corruption within database relations',]) +endif + pg_amcheck = executable('pg_amcheck', pg_amcheck_sources, dependencies: [frontend_code, libpq], diff --git a/src/bin/pg_archivecleanup/meson.build b/src/bin/pg_archivecleanup/meson.build index 87a0d980c4f..aaa2e76977f 100644 --- a/src/bin/pg_archivecleanup/meson.build +++ b/src/bin/pg_archivecleanup/meson.build @@ -1,5 +1,15 @@ +pg_archivecleanup_sources = files( + 'pg_archivecleanup.c', +) + +if host_system == 'windows' + pg_archivecleanup_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_archivecleanup', + '--FILEDESC', 'pg_archivecleanup - cleans archive when used with streaming replication',]) +endif + pg_archivecleanup = executable('pg_archivecleanup', - ['pg_archivecleanup.c'], + pg_archivecleanup_sources, dependencies: [frontend_code], kwargs: default_bin_args, ) diff --git a/src/bin/pg_basebackup/meson.build b/src/bin/pg_basebackup/meson.build index d26fed9cd8a..2c934e0c26e 100644 --- a/src/bin/pg_basebackup/meson.build +++ b/src/bin/pg_basebackup/meson.build @@ -17,24 +17,56 @@ pg_basebackup_common = static_library('libpg_basebackup_common', kwargs: internal_lib_args, ) -pg_basebackup = executable('pg_basebackup', +pg_basebackup_sources = files( 'pg_basebackup.c', +) + +if host_system == 'windows' + pg_basebackup_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_basebackup', + '--FILEDESC', 'pg_basebackup - streaming WAL and backup receivers',]) +endif + +pg_basebackup = executable('pg_basebackup', + pg_basebackup_sources, link_with: [pg_basebackup_common], dependencies: pg_basebackup_deps, kwargs: default_bin_args, ) bin_targets += pg_basebackup -pg_receivewal = executable('pg_receivewal', + +pg_receivewal_sources = files( 'pg_receivewal.c', +) + +if host_system == 'windows' + pg_receivewal_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_receivewal', + '--FILEDESC', 'pg_receivewal - streaming WAL and backup receivers',]) +endif + +pg_receivewal = executable('pg_receivewal', + pg_receivewal_sources, link_with: [pg_basebackup_common], dependencies: pg_basebackup_deps, kwargs: default_bin_args, ) bin_targets += pg_receivewal -pg_recvlogical = executable('pg_recvlogical', + +pg_recvlogical_sources = files( 'pg_recvlogical.c', +) + +if host_system == 'windows' + pg_recvlogical_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_recvlogical', + '--FILEDESC', 'pg_recvlogical - streaming WAL and backup receivers',]) +endif + +pg_recvlogical = executable('pg_recvlogical', + pg_recvlogical_sources, link_with: [pg_basebackup_common], dependencies: pg_basebackup_deps, kwargs: default_bin_args, diff --git a/src/bin/pg_checksums/meson.build b/src/bin/pg_checksums/meson.build index ee1f367bac3..d07ebc999b3 100644 --- a/src/bin/pg_checksums/meson.build +++ b/src/bin/pg_checksums/meson.build @@ -1,5 +1,15 @@ +pg_checksums_sources = files( + 'pg_checksums.c', +) + +if host_system == 'windows' + pg_checksums_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_checksums', + '--FILEDESC', 'pg_checksums - verify data checksums in an offline cluster',]) +endif + pg_checksums = executable('pg_checksums', - ['pg_checksums.c'], + pg_checksums_sources, include_directories: [timezone_inc], dependencies: [frontend_code], kwargs: default_bin_args, diff --git a/src/bin/pg_config/meson.build b/src/bin/pg_config/meson.build index 0ecbf2f9d28..4be2fdc84ae 100644 --- a/src/bin/pg_config/meson.build +++ b/src/bin/pg_config/meson.build @@ -1,5 +1,15 @@ +pg_config_sources = files( + 'pg_config.c', +) + +if host_system == 'windows' + pg_config_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_config', + '--FILEDESC', 'pg_config - report configuration information',]) +endif + pg_config = executable('pg_config', - ['pg_config.c'], + pg_config_sources, dependencies: [frontend_code], kwargs: default_bin_args, ) diff --git a/src/bin/pg_controldata/meson.build b/src/bin/pg_controldata/meson.build index 557e672beb7..7fc239dbe65 100644 --- a/src/bin/pg_controldata/meson.build +++ b/src/bin/pg_controldata/meson.build @@ -1,5 +1,15 @@ +pg_controldata_sources = files( + 'pg_controldata.c', +) + +if host_system == 'windows' + pg_controldata_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_controldata', + '--FILEDESC', 'pg_controldata - reads the data from pg_control',]) +endif + pg_controldata = executable('pg_controldata', - ['pg_controldata.c'], + pg_controldata_sources, dependencies: [frontend_code], kwargs: default_bin_args, ) diff --git a/src/bin/pg_ctl/meson.build b/src/bin/pg_ctl/meson.build index 6812e73e329..96f962fa762 100644 --- a/src/bin/pg_ctl/meson.build +++ b/src/bin/pg_ctl/meson.build @@ -1,5 +1,15 @@ +pg_ctl_sources = files( + 'pg_ctl.c', +) + +if host_system == 'windows' + pg_ctl_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_ctl', + '--FILEDESC', 'pg_ctl - starts/stops/restarts the PostgreSQL server',]) +endif + pg_ctl = executable('pg_ctl', - ['pg_ctl.c'], + pg_ctl_sources, dependencies: [frontend_code, libpq], kwargs: default_bin_args, ) diff --git a/src/bin/pg_dump/meson.build b/src/bin/pg_dump/meson.build index 785ec094dbd..3527a25c288 100644 --- a/src/bin/pg_dump/meson.build +++ b/src/bin/pg_dump/meson.build @@ -24,6 +24,12 @@ pg_dump_sources = files( 'pg_dump_sort.c', ) +if host_system == 'windows' + pg_dump_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_dump', + '--FILEDESC', 'pg_dump - backup one PostgreSQL database',]) +endif + pg_dump = executable('pg_dump', pg_dump_sources, link_with: [pg_dump_common], @@ -37,6 +43,12 @@ pg_dumpall_sources = files( 'pg_dumpall.c', ) +if host_system == 'windows' + pg_dumpall_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_dumpall', + '--FILEDESC', 'pg_dumpall - backup PostgreSQL databases']) +endif + pg_dumpall = executable('pg_dumpall', pg_dumpall_sources, link_with: [pg_dump_common], @@ -50,6 +62,12 @@ pg_restore_sources = files( 'pg_restore.c', ) +if host_system == 'windows' + pg_restore_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_restore', + '--FILEDESC', 'pg_restore - restore PostgreSQL databases']) +endif + pg_restore = executable('pg_restore', pg_restore_sources, link_with: [pg_dump_common], diff --git a/src/bin/pg_resetwal/meson.build b/src/bin/pg_resetwal/meson.build index 7c5de134ac0..d503db97b71 100644 --- a/src/bin/pg_resetwal/meson.build +++ b/src/bin/pg_resetwal/meson.build @@ -1,5 +1,15 @@ +pg_resetwal_sources = files( + 'pg_resetwal.c', +) + +if host_system == 'windows' + pg_resetwal_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_resetwal', + '--FILEDESC', 'pg_resetwal - reset PostgreSQL WAL log']) +endif + pg_resetwal = executable('pg_resetwal', - files('pg_resetwal.c'), + pg_resetwal_sources, dependencies: [frontend_code], kwargs: default_bin_args, ) diff --git a/src/bin/pg_rewind/meson.build b/src/bin/pg_rewind/meson.build index d8ec9e482d5..6cd970909a2 100644 --- a/src/bin/pg_rewind/meson.build +++ b/src/bin/pg_rewind/meson.build @@ -11,6 +11,12 @@ pg_rewind_sources = files( pg_rewind_sources += xlogreader_sources +if host_system == 'windows' + pg_rewind_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_rewind', + '--FILEDESC', 'pg_rewind - synchronize a data directory with another one forked from']) +endif + pg_rewind = executable('pg_rewind', pg_rewind_sources, dependencies: [frontend_code, libpq, lz4, zstd], diff --git a/src/bin/pg_test_fsync/meson.build b/src/bin/pg_test_fsync/meson.build index 2c01831e11f..31d288ba6da 100644 --- a/src/bin/pg_test_fsync/meson.build +++ b/src/bin/pg_test_fsync/meson.build @@ -1,4 +1,12 @@ -test_fsync_sources = files('pg_test_fsync.c') +test_fsync_sources = files( + 'pg_test_fsync.c', +) + +if host_system == 'windows' + test_fsync_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_test_fsync', + '--FILEDESC', 'pg_test_fsync - test various disk sync methods']) +endif pg_test_fsync = executable('pg_test_fsync', test_fsync_sources, diff --git a/src/bin/pg_test_timing/meson.build b/src/bin/pg_test_timing/meson.build index 0a3068f1657..0aed03ea32f 100644 --- a/src/bin/pg_test_timing/meson.build +++ b/src/bin/pg_test_timing/meson.build @@ -1,5 +1,15 @@ +pg_test_timing_sources = files( + 'pg_test_timing.c' +) + +if host_system == 'windows' + pg_test_timing_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_test_timing', + '--FILEDESC', 'pg_test_timing - test timing overhead']) +endif + pg_test_timing = executable('pg_test_timing', - ['pg_test_timing.c'], + pg_test_timing_sources, dependencies: [frontend_code], kwargs: default_bin_args, ) diff --git a/src/bin/pg_upgrade/meson.build b/src/bin/pg_upgrade/meson.build index 02f030e0ccf..a7b927a45c7 100644 --- a/src/bin/pg_upgrade/meson.build +++ b/src/bin/pg_upgrade/meson.build @@ -16,6 +16,12 @@ pg_upgrade_sources = files( 'version.c', ) +if host_system == 'windows' + pg_upgrade_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_upgrade', + '--FILEDESC', 'pg_upgrade - an in-place binary upgrade utility']) +endif + pg_upgrade = executable('pg_upgrade', pg_upgrade_sources, dependencies: [frontend_code, libpq], diff --git a/src/bin/pg_verifybackup/meson.build b/src/bin/pg_verifybackup/meson.build index 4c3b2bb5f97..b934a408443 100644 --- a/src/bin/pg_verifybackup/meson.build +++ b/src/bin/pg_verifybackup/meson.build @@ -3,6 +3,12 @@ pg_verifybackup_sources = files( 'pg_verifybackup.c' ) +if host_system == 'windows' + pg_verifybackup_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_verifybackup', + '--FILEDESC', 'pg_verifybackup - verify a backup against using a backup manifest']) +endif + pg_verifybackup = executable('pg_verifybackup', pg_verifybackup_sources, dependencies: [frontend_code, libpq], diff --git a/src/bin/pg_waldump/meson.build b/src/bin/pg_waldump/meson.build index 95872652ffd..9605976870d 100644 --- a/src/bin/pg_waldump/meson.build +++ b/src/bin/pg_waldump/meson.build @@ -8,6 +8,12 @@ pg_waldump_sources += rmgr_desc_sources pg_waldump_sources += xlogreader_sources pg_waldump_sources += files('../../backend/access/transam/xlogstats.c') +if host_system == 'windows' + pg_waldump_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_waldump', + '--FILEDESC', 'pg_waldump - decode and display WA']) +endif + pg_waldump = executable('pg_waldump', pg_waldump_sources, dependencies: [frontend_code, lz4, zstd], diff --git a/src/bin/pgbench/meson.build b/src/bin/pgbench/meson.build index 6564e54029c..a32eb51fe07 100644 --- a/src/bin/pgbench/meson.build +++ b/src/bin/pgbench/meson.build @@ -17,6 +17,12 @@ exprparse = custom_target('exprparse', generated_sources += exprparse.to_list() pgbench_sources += exprparse +if host_system == 'windows' + pgbench_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pgbench', + '--FILEDESC', 'pgbench - a simple program for running benchmark tests']) +endif + pgbench = executable('pgbench', pgbench_sources, dependencies: [frontend_code, libpq, thread_dep], diff --git a/src/bin/pgevent/meson.build b/src/bin/pgevent/meson.build index 7a468879fd2..2e9aea4b0e1 100644 --- a/src/bin/pgevent/meson.build +++ b/src/bin/pgevent/meson.build @@ -6,6 +6,12 @@ pgevent_sources = files( 'pgevent.c', ) +pgevent_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pgevent', + '--FILEDESC', 'Eventlog message formatter',]) + +pgevent_sources += windows.compile_resources('pgmsgevent.rc') + # FIXME: copied from Mkvcbuild.pm, but I don't think that's the right approach pgevent_link_args = [] if cc.get_id() == 'msvc' diff --git a/src/bin/psql/meson.build b/src/bin/psql/meson.build index 410788e4767..1264fc19fbd 100644 --- a/src/bin/psql/meson.build +++ b/src/bin/psql/meson.build @@ -36,6 +36,12 @@ sql_help = custom_target('psql_help', generated_sources += sql_help.to_list() psql_sources += sql_help +if host_system == 'windows' + psql_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'psql', + '--FILEDESC', 'psql - the PostgreSQL interactive terminal',]) +endif + psql = executable('psql', psql_sources, include_directories: include_directories('.'), diff --git a/src/bin/scripts/meson.build b/src/bin/scripts/meson.build index eaf250c7f73..837562c24e5 100644 --- a/src/bin/scripts/meson.build +++ b/src/bin/scripts/meson.build @@ -16,8 +16,16 @@ binaries = [ ] foreach binary : binaries + binary_sources = files('@[email protected]'.format(binary)) + + if host_system == 'windows' + binary_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', binary, + '--FILEDESC', '@0@ - PostgreSQL utility'.format(binary),]) + endif + binary = executable(binary, - files(binary + '.c'), + binary_sources, link_with: [scripts_common], dependencies: [frontend_code, libpq], kwargs: default_bin_args, diff --git a/src/interfaces/libpq/meson.build b/src/interfaces/libpq/meson.build index c203372a35b..63ab2fbacc2 100644 --- a/src/interfaces/libpq/meson.build +++ b/src/interfaces/libpq/meson.build @@ -16,9 +16,13 @@ libpq_sources = files( 'libpq-events.c', 'pqexpbuffer.c', ) +libpq_so_sources = [] # only for shared lib, in addition to above if host_system == 'windows' libpq_sources += files('pthread-win32.c', 'win32.c') + libpq_so_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'libpq', + '--FILEDESC', 'PostgreSQL Access Library',]) endif if ssl.found() @@ -52,6 +56,7 @@ libpq_st = static_library('libpq', # not using both_libraries() here as the resource file should only be in the # shared library libpq_so = shared_library('libpq', + libpq_so_sources, dependencies: libpq_deps, include_directories: [libpq_inc, postgres_inc], c_args: ['-DSO_MAJOR_VERSION=5'], diff --git a/src/interfaces/libpq/test/meson.build b/src/interfaces/libpq/test/meson.build index 16f94c1ed8b..017f729d435 100644 --- a/src/interfaces/libpq/test/meson.build +++ b/src/interfaces/libpq/test/meson.build @@ -1,13 +1,34 @@ +libpq_uri_regress_sources = files( + 'libpq_uri_regress.c', +) + +if host_system == 'windows' + libpq_uri_regress_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'libpq_uri_regress', + '--FILEDESC', 'libpq test program',]) +endif + executable('libpq_uri_regress', - files('libpq_uri_regress.c'), + libpq_uri_regress_sources, dependencies: [frontend_code, libpq], kwargs: default_bin_args + { 'install': false, } ) + +libpq_testclient_sources = files( + 'libpq_testclient.c', +) + +if host_system == 'windows' + libpq_testclient_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'libpq_testclient', + '--FILEDESC', 'libpq test program',]) +endif + executable('libpq_testclient', - files('libpq_testclient.c'), + libpq_testclient_sources, dependencies: [frontend_code, libpq], kwargs: default_bin_args + { 'install': false, diff --git a/src/pl/plperl/meson.build b/src/pl/plperl/meson.build index 73b733dd50b..535660085dd 100644 --- a/src/pl/plperl/meson.build +++ b/src/pl/plperl/meson.build @@ -36,6 +36,13 @@ foreach n : ['SPI', 'Util'] endforeach plperl_inc = include_directories('.') + +if host_system == 'windows' + plperl_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'plperl', + '--FILEDESC', 'PL/Perl - procedural language',]) +endif + plperl = shared_module('plperl', plperl_sources, include_directories: [plperl_inc, postgres_inc], diff --git a/src/pl/plpgsql/src/meson.build b/src/pl/plpgsql/src/meson.build index dd499fdd151..c46c0a1da2a 100644 --- a/src/pl/plpgsql/src/meson.build +++ b/src/pl/plpgsql/src/meson.build @@ -40,6 +40,12 @@ pl_unreserved = custom_target('pl_unreserved_kwlist', generated_sources += pl_unreserved plpgsql_sources += pl_unreserved +if host_system == 'windows' + plpgsql_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'plpgsql', + '--FILEDESC', 'PL/pgSQL - procedural language',]) +endif + plpgsql = shared_module('plpgsql', plpgsql_sources, include_directories: include_directories('.'), diff --git a/src/pl/plpython/meson.build b/src/pl/plpython/meson.build index 366b3b171ac..40888386b5f 100644 --- a/src/pl/plpython/meson.build +++ b/src/pl/plpython/meson.build @@ -28,6 +28,12 @@ plpython_sources += custom_target('spiexceptions.h', # FIXME: need to duplicate import library ugliness? plpython_inc = include_directories('.') +if host_system == 'windows' + plpython_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'plpython3', + '--FILEDESC', 'PL/Python - procedural language',]) +endif + plpython = shared_module('plpython3', plpython_sources, include_directories: [plpython_inc, postgres_inc], diff --git a/src/pl/tcl/meson.build b/src/pl/tcl/meson.build index 9b6addd7fd5..f09bb14c950 100644 --- a/src/pl/tcl/meson.build +++ b/src/pl/tcl/meson.build @@ -14,6 +14,12 @@ pltcl_sources += custom_target('pltclerrcodes.h', command: [perl, gen_pltclerrcodes, '@INPUT@'] ) +if host_system == 'windows' + pltcl_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pltcl', + '--FILEDESC', 'PL/Tcl - procedural language',]) +endif + pltcl = shared_module('pltcl', pltcl_sources, include_directories: [include_directories('.'), postgres_inc], diff --git a/contrib/adminpack/meson.build b/contrib/adminpack/meson.build index fc2368d02cf..7efec0efbc0 100644 --- a/contrib/adminpack/meson.build +++ b/contrib/adminpack/meson.build @@ -1,5 +1,15 @@ +adminpack_sources = files( + 'adminpack.c', +) + +if host_system == 'windows' + adminpack_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'adminpack', + '--FILEDESC', 'adminpack - support functions for pgAdmin',]) +endif + adminpack = shared_module('adminpack', - ['adminpack.c'], + adminpack_sources, kwargs: contrib_mod_args, ) contrib_targets += adminpack diff --git a/contrib/amcheck/meson.build b/contrib/amcheck/meson.build index 1db3d20349e..fa807b72d98 100644 --- a/contrib/amcheck/meson.build +++ b/contrib/amcheck/meson.build @@ -1,7 +1,16 @@ -amcheck = shared_module('amcheck', [ - 'verify_heapam.c', - 'verify_nbtree.c', - ], +amcheck_sources = files( + 'verify_heapam.c', + 'verify_nbtree.c', +) + +if host_system == 'windows' + amcheck_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'amcheck', + '--FILEDESC', 'amcheck - function for verifying relation integrity',]) +endif + +amcheck = shared_module('amcheck', + amcheck_sources, kwargs: contrib_mod_args, ) contrib_targets += amcheck diff --git a/contrib/auth_delay/meson.build b/contrib/auth_delay/meson.build index d2e01968f54..c4ffb0663bc 100644 --- a/contrib/auth_delay/meson.build +++ b/contrib/auth_delay/meson.build @@ -1,5 +1,15 @@ +auth_delay_sources = files( + 'auth_delay.c', +) + +if host_system == 'windows' + auth_delay_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'auth_delay', + '--FILEDESC', 'auth_delay - delay authentication failure reports',]) +endif + autoinc = shared_module('auth_delay', - ['auth_delay.c'], + auth_delay_sources, kwargs: contrib_mod_args, ) contrib_targets += autoinc diff --git a/contrib/auto_explain/meson.build b/contrib/auto_explain/meson.build index 249a8376faa..76f86617850 100644 --- a/contrib/auto_explain/meson.build +++ b/contrib/auto_explain/meson.build @@ -1,5 +1,15 @@ +auto_explain_sources = files( + 'auto_explain.c', +) + +if host_system == 'windows' + auto_explain_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'auto_explain', + '--FILEDESC', 'auto_explain - logging facility for execution plans',]) +endif + auto_explain = shared_module('auto_explain', - files('auto_explain.c'), + auto_explain_sources, kwargs: contrib_mod_args, ) contrib_targets += auto_explain diff --git a/contrib/basebackup_to_shell/meson.build b/contrib/basebackup_to_shell/meson.build index 9f0517f1701..3a389de9175 100644 --- a/contrib/basebackup_to_shell/meson.build +++ b/contrib/basebackup_to_shell/meson.build @@ -2,6 +2,12 @@ basebackup_to_shell_sources = files( 'basebackup_to_shell.c', ) +if host_system == 'windows' + basebackup_to_shell_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'basebackup_to_shell', + '--FILEDESC', 'basebackup_to_shell - target basebackup to shell command',]) +endif + basebackup_to_shell = shared_module('basebackup_to_shell', basebackup_to_shell_sources, kwargs: contrib_mod_args, diff --git a/contrib/basic_archive/meson.build b/contrib/basic_archive/meson.build index b67cbef60bd..c30dcfa5d41 100644 --- a/contrib/basic_archive/meson.build +++ b/contrib/basic_archive/meson.build @@ -2,6 +2,12 @@ basic_archive_sources = files( 'basic_archive.c', ) +if host_system == 'windows' + basic_archive_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'basic_archive', + '--FILEDESC', 'basic_archive - basic archive module',]) +endif + basic_archive = shared_module('basic_archive', basic_archive_sources, kwargs: contrib_mod_args, diff --git a/contrib/bloom/meson.build b/contrib/bloom/meson.build index 1fe7632bdbe..16f3b83e4d2 100644 --- a/contrib/bloom/meson.build +++ b/contrib/bloom/meson.build @@ -7,6 +7,12 @@ bloom_sources = files( 'blvalidate.c', ) +if host_system == 'windows' + bloom_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'bloom', + '--FILEDESC', 'bloom access method - signature file based index',]) +endif + bloom = shared_module('bloom', bloom_sources, kwargs: contrib_mod_args, diff --git a/contrib/bool_plperl/meson.build b/contrib/bool_plperl/meson.build index c20b667d75f..a68daab0dcd 100644 --- a/contrib/bool_plperl/meson.build +++ b/contrib/bool_plperl/meson.build @@ -6,6 +6,12 @@ bool_plperl_sources = files( 'bool_plperl.c', ) +if host_system == 'windows' + bool_plperl_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'bool_plperl', + '--FILEDESC', 'bool_plperl - bool transform for plperl',]) +endif + bool_plperl = shared_module('bool_plperl', bool_plperl_sources, include_directories: [plperl_inc, include_directories('.')], diff --git a/contrib/btree_gin/meson.build b/contrib/btree_gin/meson.build index 15d6d31a6ee..fd4c76767a7 100644 --- a/contrib/btree_gin/meson.build +++ b/contrib/btree_gin/meson.build @@ -1,5 +1,15 @@ +btree_gin_sources = files( + 'btree_gin.c', +) + +if host_system == 'windows' + btree_gin_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'btree_gin', + '--FILEDESC', 'btree_gin - B-tree equivalent GIN operator classes',]) +endif + btree_gin = shared_module('btree_gin', - files('btree_gin.c'), + btree_gin_sources, kwargs: contrib_mod_args, ) contrib_targets += btree_gin diff --git a/contrib/btree_gist/meson.build b/contrib/btree_gist/meson.build index c0a8d238540..e98c91dacc8 100644 --- a/contrib/btree_gist/meson.build +++ b/contrib/btree_gist/meson.build @@ -25,6 +25,12 @@ btree_gist_sources = files( 'btree_uuid.c', ) +if host_system == 'windows' + btree_gist_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'btree_gist', + '--FILEDESC', 'btree_gist - B-tree equivalent GiST operator classes',]) +endif + btree_gist = shared_module('btree_gist', btree_gist_sources, kwargs: contrib_mod_args, diff --git a/contrib/citext/meson.build b/contrib/citext/meson.build index ca60eded80b..26a101a19bd 100644 --- a/contrib/citext/meson.build +++ b/contrib/citext/meson.build @@ -2,6 +2,12 @@ citext_sources = files( 'citext.c', ) +if host_system == 'windows' + citext_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'citext', + '--FILEDESC', 'citext - case-insensitive character string data type',]) +endif + citext = shared_module('citext', citext_sources, kwargs: contrib_mod_args, diff --git a/contrib/cube/meson.build b/contrib/cube/meson.build index 72342b0c82c..041acf95a90 100644 --- a/contrib/cube/meson.build +++ b/contrib/cube/meson.build @@ -17,6 +17,12 @@ cube_parse = custom_target('cubeparse', generated_sources += cube_parse.to_list() cube_sources += cube_parse +if host_system == 'windows' + cube_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'cube', + '--FILEDESC', 'cube - multidimensional cube data type',]) +endif + cube = shared_module('cube', cube_sources, include_directories: include_directories('.'), diff --git a/contrib/dblink/meson.build b/contrib/dblink/meson.build index d35f7b5d49e..66eeb03b736 100644 --- a/contrib/dblink/meson.build +++ b/contrib/dblink/meson.build @@ -2,6 +2,12 @@ dblink_sources = files( 'dblink.c', ) +if host_system == 'windows' + dblink_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'dblink', + '--FILEDESC', 'dblink - connect to other PostgreSQL databases',]) +endif + dblink = shared_module('dblink', dblink_sources, kwargs: contrib_mod_args + { diff --git a/contrib/dict_int/meson.build b/contrib/dict_int/meson.build index f00e8085619..6fff921adda 100644 --- a/contrib/dict_int/meson.build +++ b/contrib/dict_int/meson.build @@ -1,5 +1,15 @@ +dict_int_sources = files( + 'dict_int.c', +) + +if host_system == 'windows' + dict_int_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'dict_int', + '--FILEDESC', 'dict_int - add-on dictionary template for full-text search',]) +endif + dict_int = shared_module('dict_int', - files('dict_int.c'), + dict_int_sources, kwargs: contrib_mod_args, ) contrib_targets += dict_int diff --git a/contrib/dict_xsyn/meson.build b/contrib/dict_xsyn/meson.build index be53f55bb79..fabd505a7df 100644 --- a/contrib/dict_xsyn/meson.build +++ b/contrib/dict_xsyn/meson.build @@ -1,5 +1,15 @@ +dict_xsyn_sources = files( + 'dict_xsyn.c', +) + +if host_system == 'windows' + dict_xsyn_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'dict_xsyn', + '--FILEDESC', 'dict_xsyn - add-on dictionary template for full-text search',]) +endif + dict_xsyn = shared_module('dict_xsyn', - files('dict_xsyn.c'), + dict_xsyn_sources, kwargs: contrib_mod_args, ) contrib_targets += dict_xsyn diff --git a/contrib/earthdistance/meson.build b/contrib/earthdistance/meson.build index 807f5cb7de3..78dc29c3da3 100644 --- a/contrib/earthdistance/meson.build +++ b/contrib/earthdistance/meson.build @@ -1,5 +1,15 @@ +earthdistance_sources = files( + 'earthdistance.c', +) + +if host_system == 'windows' + earthdistance_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'earthdistance', + '--FILEDESC', 'earthdistance - calculate distances on the surface of the Earth',]) +endif + earthdistance = shared_module('earthdistance', - files('earthdistance.c'), + earthdistance_sources, kwargs: contrib_mod_args, ) contrib_targets += earthdistance diff --git a/contrib/file_fdw/meson.build b/contrib/file_fdw/meson.build index f13efb6e38e..c4071faa669 100644 --- a/contrib/file_fdw/meson.build +++ b/contrib/file_fdw/meson.build @@ -1,5 +1,15 @@ +file_fdw_sources = files( + 'file_fdw.c', +) + +if host_system == 'windows' + file_fdw_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'file_fdw', + '--FILEDESC', 'file_fdw - foreign data wrapper for files',]) +endif + file_fdw = shared_module('file_fdw', - files('file_fdw.c'), + file_fdw_sources, kwargs: contrib_mod_args, ) contrib_targets += file_fdw diff --git a/contrib/fuzzystrmatch/meson.build b/contrib/fuzzystrmatch/meson.build index ec278a6211e..e6d06149cec 100644 --- a/contrib/fuzzystrmatch/meson.build +++ b/contrib/fuzzystrmatch/meson.build @@ -1,8 +1,16 @@ +fuzzystrmatch_sources = files( + 'fuzzystrmatch.c', + 'dmetaphone.c', +) + +if host_system == 'windows' + fuzzystrmatch_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'fuzzystrmatch', + '--FILEDESC', 'fuzzystrmatch - similarities and distance between strings',]) +endif + fuzzystrmatch = shared_module('fuzzystrmatch', - files( - 'fuzzystrmatch.c', - 'dmetaphone.c' - ), + fuzzystrmatch_sources, kwargs: contrib_mod_args, ) contrib_targets += fuzzystrmatch diff --git a/contrib/hstore/meson.build b/contrib/hstore/meson.build index 07c59f40a97..2bb26bb772b 100644 --- a/contrib/hstore/meson.build +++ b/contrib/hstore/meson.build @@ -1,15 +1,23 @@ # .. so that includes of hstore/hstore.h work hstore_inc = include_directories('.', '../') +hstore_sources = files( + 'hstore_compat.c', + 'hstore_gin.c', + 'hstore_gist.c', + 'hstore_io.c', + 'hstore_op.c', + 'hstore_subs.c', +) + +if host_system == 'windows' + hstore_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'hstore', + '--FILEDESC', 'hstore - key/value pair data type',]) +endif + hstore = shared_module('hstore', - files( - 'hstore_compat.c', - 'hstore_gin.c', - 'hstore_gist.c', - 'hstore_io.c', - 'hstore_op.c', - 'hstore_subs.c', - ), + hstore_sources, kwargs: contrib_mod_args, ) contrib_targets += hstore diff --git a/contrib/hstore_plperl/meson.build b/contrib/hstore_plperl/meson.build index bbafa0221bd..a238fee6a26 100644 --- a/contrib/hstore_plperl/meson.build +++ b/contrib/hstore_plperl/meson.build @@ -6,6 +6,12 @@ hstore_plperl_sources = files( 'hstore_plperl.c', ) +if host_system == 'windows' + hstore_plperl_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'hstore_plperl', + '--FILEDESC', 'hstore_plperl - hstore transform for plperl',]) +endif + hstore_plperl = shared_module('hstore_plperl', hstore_plperl_sources, include_directories: [plperl_inc, hstore_inc], diff --git a/contrib/hstore_plpython/meson.build b/contrib/hstore_plpython/meson.build index 214b48519a9..6071aaeb4b3 100644 --- a/contrib/hstore_plpython/meson.build +++ b/contrib/hstore_plpython/meson.build @@ -6,6 +6,12 @@ hstore_plpython_sources = files( 'hstore_plpython.c', ) +if host_system == 'windows' + hstore_plpython_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'hstore_plpython3', + '--FILEDESC', 'hstore_plpython - hstore transform for plpython',]) +endif + hstore_plpython = shared_module('hstore_plpython3', hstore_plpython_sources, include_directories: [plpython_inc, hstore_inc, ], diff --git a/contrib/intarray/meson.build b/contrib/intarray/meson.build index 1655bcbb3fd..b7cf1ce0cad 100644 --- a/contrib/intarray/meson.build +++ b/contrib/intarray/meson.build @@ -8,6 +8,12 @@ intarray_sources = files( '_intbig_gist.c', ) +if host_system == 'windows' + intarray_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', '_int', + '--FILEDESC', 'intarray - functions and operators for arrays of integers',]) +endif + intarray = shared_module('_int', intarray_sources, kwargs: contrib_mod_args, diff --git a/contrib/isn/meson.build b/contrib/isn/meson.build index cc30bbeb55c..db68a718313 100644 --- a/contrib/isn/meson.build +++ b/contrib/isn/meson.build @@ -2,6 +2,12 @@ isn_sources = files( 'isn.c', ) +if host_system == 'windows' + isn_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'isn', + '--FILEDESC', 'isn - data types for international product numbering standards',]) +endif + isn = shared_module('isn', isn_sources, kwargs: contrib_mod_args, diff --git a/contrib/jsonb_plperl/meson.build b/contrib/jsonb_plperl/meson.build index 5c915d8ed94..071a7a98d2c 100644 --- a/contrib/jsonb_plperl/meson.build +++ b/contrib/jsonb_plperl/meson.build @@ -6,6 +6,12 @@ jsonb_plperl_sources = files( 'jsonb_plperl.c', ) +if host_system == 'windows' + jsonb_plperl_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'jsonb_plperl', + '--FILEDESC', 'jsonb_plperl - jsonb transform for plperl',]) +endif + jsonb_plperl = shared_module('jsonb_plperl', jsonb_plperl_sources, include_directories: [plperl_inc], diff --git a/contrib/jsonb_plpython/meson.build b/contrib/jsonb_plpython/meson.build index de8e1105c6a..84dc1161e8b 100644 --- a/contrib/jsonb_plpython/meson.build +++ b/contrib/jsonb_plpython/meson.build @@ -6,6 +6,12 @@ jsonb_plpython_sources = files( 'jsonb_plpython.c', ) +if host_system == 'windows' + jsonb_plpython_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'jsonb_plpython3', + '--FILEDESC', 'jsonb_plpython - jsonb transform for plpython',]) +endif + jsonb_plpython = shared_module('jsonb_plpython3', jsonb_plpython_sources, include_directories: [plpython_inc], diff --git a/contrib/lo/meson.build b/contrib/lo/meson.build index 9082d5713c7..61ae131f1cc 100644 --- a/contrib/lo/meson.build +++ b/contrib/lo/meson.build @@ -2,6 +2,12 @@ lo_sources = files( 'lo.c', ) +if host_system == 'windows' + lo_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'lo', + '--FILEDESC', 'lo - management for large objects',]) +endif + lo = shared_module('lo', lo_sources, kwargs: contrib_mod_args, diff --git a/contrib/ltree/meson.build b/contrib/ltree/meson.build index 9463fc2c5e5..421292cea9d 100644 --- a/contrib/ltree/meson.build +++ b/contrib/ltree/meson.build @@ -13,6 +13,12 @@ ltree_sources = files( # .. so that includes of ltree/ltree.h work ltree_inc = include_directories('.', '../') +if host_system == 'windows' + ltree_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'ltree', + '--FILEDESC', 'ltree - hierarchical label data type',]) +endif + ltree = shared_module('ltree', ltree_sources, kwargs: contrib_mod_args, diff --git a/contrib/ltree_plpython/meson.build b/contrib/ltree_plpython/meson.build index 429d75006aa..acf5e4a6fc8 100644 --- a/contrib/ltree_plpython/meson.build +++ b/contrib/ltree_plpython/meson.build @@ -6,6 +6,12 @@ ltree_plpython_sources = files( 'ltree_plpython.c', ) +if host_system == 'windows' + ltree_plpython_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'ltree_plpython3', + '--FILEDESC', 'ltree_plpython - ltree transform for plpython',]) +endif + ltree_plpython = shared_module('ltree_plpython3', ltree_plpython_sources, include_directories: [plpython_inc, ltree_inc], diff --git a/contrib/oid2name/meson.build b/contrib/oid2name/meson.build index 1dad5d8f6e7..1a248f19260 100644 --- a/contrib/oid2name/meson.build +++ b/contrib/oid2name/meson.build @@ -1,5 +1,15 @@ +oid2name_sources = files( + 'oid2name.c', +) + +if host_system == 'windows' + oid2name_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'oid2name', + '--FILEDESC', 'oid2name - examine the file structure',]) +endif + oid2name = executable('oid2name', - ['oid2name.c'], + oid2name_sources, dependencies: [frontend_code, libpq], kwargs: default_bin_args, ) diff --git a/contrib/old_snapshot/meson.build b/contrib/old_snapshot/meson.build index 8e7ee09a43a..77276c3715a 100644 --- a/contrib/old_snapshot/meson.build +++ b/contrib/old_snapshot/meson.build @@ -2,6 +2,12 @@ old_snapshot_sources = files( 'time_mapping.c', ) +if host_system == 'windows' + old_snapshot_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'old_snapshot', + '--FILEDESC', 'old_snapshot - utilities in support of old_snapshot_threshold',]) +endif + old_snapshot = shared_module('old_snapshot', old_snapshot_sources, kwargs: contrib_mod_args, diff --git a/contrib/pageinspect/meson.build b/contrib/pageinspect/meson.build index 4af8153e4fd..3ec50b9445e 100644 --- a/contrib/pageinspect/meson.build +++ b/contrib/pageinspect/meson.build @@ -9,6 +9,12 @@ pageinspect_sources = files( 'rawpage.c', ) +if host_system == 'windows' + pageinspect_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pageinspect', + '--FILEDESC', 'pageinspect - functions to inspect contents of database pages',]) +endif + pageinspect = shared_module('pageinspect', pageinspect_sources, kwargs: contrib_mod_args, diff --git a/contrib/passwordcheck/meson.build b/contrib/passwordcheck/meson.build index 7da47d02f1d..383d7df372a 100644 --- a/contrib/passwordcheck/meson.build +++ b/contrib/passwordcheck/meson.build @@ -9,6 +9,12 @@ passwordcheck_deps = [] # passwordcheck_c_args += ['-DUSE_CRACKLIB', '-DCRACKLIB_DICTPATH="/usr/lib/cracklib_dict"'] # passwordcheck_deps += [cc.find_library('crack')] +if host_system == 'windows' + passwordcheck_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'passwordcheck', + '--FILEDESC', 'passwordcheck - strengthen user password checks',]) +endif + passwordcheck = shared_module('passwordcheck', passwordcheck_sources, c_args: passwordcheck_c_args, diff --git a/contrib/pg_buffercache/meson.build b/contrib/pg_buffercache/meson.build index 2c69eae3ea2..dd9948e5f0b 100644 --- a/contrib/pg_buffercache/meson.build +++ b/contrib/pg_buffercache/meson.build @@ -1,7 +1,15 @@ +pg_buffercache_sources = files( + 'pg_buffercache_pages.c', +) + +if host_system == 'windows' + pg_buffercache_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_buffercache', + '--FILEDESC', 'pg_buffercache - monitoring of shared buffer cache in real-time',]) +endif + pg_buffercache = shared_module('pg_buffercache', - files( - 'pg_buffercache_pages.c', - ), + pg_buffercache_sources, kwargs: contrib_mod_args, ) contrib_targets += pg_buffercache diff --git a/contrib/pg_freespacemap/meson.build b/contrib/pg_freespacemap/meson.build index f795014d7ca..904b37b6e9b 100644 --- a/contrib/pg_freespacemap/meson.build +++ b/contrib/pg_freespacemap/meson.build @@ -1,7 +1,15 @@ +pg_freespacemap_sources = files( + 'pg_freespacemap.c', +) + +if host_system == 'windows' + pg_freespacemap_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_freespacemap', + '--FILEDESC', 'pg_freespacemap - monitoring of free space map',]) +endif + pg_freespacemap = shared_module('pg_freespacemap', - files( - 'pg_freespacemap.c', - ), + pg_freespacemap_sources, kwargs: contrib_mod_args, ) contrib_targets += pg_freespacemap diff --git a/contrib/pg_prewarm/meson.build b/contrib/pg_prewarm/meson.build index bdca9af4f27..b7140cee34b 100644 --- a/contrib/pg_prewarm/meson.build +++ b/contrib/pg_prewarm/meson.build @@ -1,8 +1,16 @@ +pg_prewarm_sources = files( + 'autoprewarm.c', + 'pg_prewarm.c', +) + +if host_system == 'windows' + pg_prewarm_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_prewarm', + '--FILEDESC', 'pg_prewarm - preload relation data into system buffer cache',]) +endif + pg_prewarm = shared_module('pg_prewarm', - files( - 'autoprewarm.c', - 'pg_prewarm.c', - ), + pg_prewarm_sources, kwargs: contrib_mod_args, ) contrib_targets += pg_prewarm diff --git a/contrib/pg_stat_statements/meson.build b/contrib/pg_stat_statements/meson.build index ac117d2fc1d..854df138e76 100644 --- a/contrib/pg_stat_statements/meson.build +++ b/contrib/pg_stat_statements/meson.build @@ -1,5 +1,15 @@ +pg_stat_statements_sources = files( + 'pg_stat_statements.c', +) + +if host_system == 'windows' + pg_stat_statements_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_stat_statements', + '--FILEDESC', 'pg_stat_statements - execution statistics of SQL statements',]) +endif + pg_stat_statements = shared_module('pg_stat_statements', - files('pg_stat_statements.c'), + pg_stat_statements_sources, kwargs: contrib_mod_args + { 'dependencies': contrib_mod_args['dependencies'], }, diff --git a/contrib/pg_surgery/meson.build b/contrib/pg_surgery/meson.build index ac71caa5276..7b5c5999f4b 100644 --- a/contrib/pg_surgery/meson.build +++ b/contrib/pg_surgery/meson.build @@ -1,7 +1,15 @@ +pg_surgery_sources = files( + 'heap_surgery.c', +) + +if host_system == 'windows' + pg_surgery_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_surgery', + '--FILEDESC', 'pg_surgery - perform surgery on a damaged relation',]) +endif + pg_surgery = shared_module('pg_surgery', - files( - 'heap_surgery.c', - ), + pg_surgery_sources, kwargs: contrib_mod_args, ) contrib_targets += pg_surgery diff --git a/contrib/pg_trgm/meson.build b/contrib/pg_trgm/meson.build index a90628d23c6..c8c7c07b308 100644 --- a/contrib/pg_trgm/meson.build +++ b/contrib/pg_trgm/meson.build @@ -1,10 +1,18 @@ +pg_trgm_sources = files( + 'trgm_gin.c', + 'trgm_gist.c', + 'trgm_op.c', + 'trgm_regexp.c', +) + +if host_system == 'windows' + pg_trgm_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_trgm', + '--FILEDESC', 'pg_trgm - trigram matching',]) +endif + pg_trgm = shared_module('pg_trgm', - files( - 'trgm_gin.c', - 'trgm_gist.c', - 'trgm_op.c', - 'trgm_regexp.c', - ), + pg_trgm_sources, kwargs: contrib_mod_args, ) contrib_targets += pg_trgm diff --git a/contrib/pg_visibility/meson.build b/contrib/pg_visibility/meson.build index 933dc99ac4d..263a0d08b82 100644 --- a/contrib/pg_visibility/meson.build +++ b/contrib/pg_visibility/meson.build @@ -1,7 +1,15 @@ +pg_visibility_sources = files( + 'pg_visibility.c', +) + +if host_system == 'windows' + pg_visibility_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_visibility', + '--FILEDESC', 'pg_visibility - page visibility information',]) +endif + pg_visibility = shared_module('pg_visibility', - files( - 'pg_visibility.c', - ), + pg_visibility_sources, kwargs: contrib_mod_args, ) contrib_targets += pg_visibility diff --git a/contrib/pg_walinspect/meson.build b/contrib/pg_walinspect/meson.build index d6b27877dd0..4314a3182a2 100644 --- a/contrib/pg_walinspect/meson.build +++ b/contrib/pg_walinspect/meson.build @@ -1,5 +1,11 @@ pg_walinspect_sources = files('pg_walinspect.c') +if host_system == 'windows' + pg_walinspect_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_walinspect', + '--FILEDESC', 'pg_walinspect - functions to inspect contents of PostgreSQL Write-Ahead Log',]) +endif + pg_walinspect = shared_module('pg_walinspect', pg_walinspect_sources, kwargs: contrib_mod_args + { diff --git a/contrib/pgcrypto/meson.build b/contrib/pgcrypto/meson.build index fe0851bf8e8..7fc7bbc7ca1 100644 --- a/contrib/pgcrypto/meson.build +++ b/contrib/pgcrypto/meson.build @@ -69,6 +69,12 @@ else pgcrypto_regress += 'pgp-zlib-DISABLED' endif +if host_system == 'windows' + pgcrypto_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pgcrypto', + '--FILEDESC', 'pgcrypto - cryptographic functions',]) +endif + pgcrypto = shared_module('pgcrypto', pgcrypto_sources, link_with: pgcrypto_link_with, diff --git a/contrib/pgrowlocks/meson.build b/contrib/pgrowlocks/meson.build index 1b41691a2a3..8092f0d4a64 100644 --- a/contrib/pgrowlocks/meson.build +++ b/contrib/pgrowlocks/meson.build @@ -1,7 +1,15 @@ +pgrowlocks_sources = files( + 'pgrowlocks.c', +) + +if host_system == 'windows' + pgrowlocks_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pgrowlocks', + '--FILEDESC', 'pgrowlocks - display row locking information',]) +endif + pgrowlocks = shared_module('pgrowlocks', - files( - 'pgrowlocks.c', - ), + pgrowlocks_sources, kwargs: contrib_mod_args, ) contrib_targets += pgrowlocks diff --git a/contrib/pgstattuple/meson.build b/contrib/pgstattuple/meson.build index 8e828692d5c..05e4cd46a5c 100644 --- a/contrib/pgstattuple/meson.build +++ b/contrib/pgstattuple/meson.build @@ -1,9 +1,17 @@ +pgstattuple_sources = files( + 'pgstatapprox.c', + 'pgstatindex.c', + 'pgstattuple.c', +) + +if host_system == 'windows' + pgstattuple_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pgstattuple', + '--FILEDESC', 'pgstattuple - tuple-level statistics',]) +endif + pgstattuple = shared_module('pgstattuple', - files( - 'pgstatapprox.c', - 'pgstatindex.c', - 'pgstattuple.c', - ), + pgstattuple_sources, kwargs: contrib_mod_args, ) contrib_targets += pgstattuple diff --git a/contrib/postgres_fdw/meson.build b/contrib/postgres_fdw/meson.build index 378885ec93b..d3746ff135c 100644 --- a/contrib/postgres_fdw/meson.build +++ b/contrib/postgres_fdw/meson.build @@ -6,6 +6,12 @@ postgres_fdw_sources = files( 'shippable.c', ) +if host_system == 'windows' + postgres_fdw_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'postgres_fdw', + '--FILEDESC', 'postgres_fdw - foreign data wrapper for PostgreSQL',]) +endif + postgres_fdw = shared_module('postgres_fdw', postgres_fdw_sources, kwargs: contrib_mod_args + { diff --git a/contrib/seg/meson.build b/contrib/seg/meson.build index e476eab2a77..c6fbb22999b 100644 --- a/contrib/seg/meson.build +++ b/contrib/seg/meson.build @@ -17,6 +17,12 @@ seg_parse = custom_target('segparse', generated_sources += seg_parse.to_list() seg_sources += seg_parse +if host_system == 'windows' + seg_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'seg', + '--FILEDESC', 'seg - line segment data type',]) +endif + seg = shared_module('seg', seg_sources, include_directories: include_directories('.'), diff --git a/contrib/sepgsql/meson.build b/contrib/sepgsql/meson.build index 60a95e17c2f..8bef239e3c2 100644 --- a/contrib/sepgsql/meson.build +++ b/contrib/sepgsql/meson.build @@ -14,6 +14,12 @@ sepgsql_sources = files( 'uavc.c', ) +if host_system == 'windows' + sepgsql_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'sepgsql', + '--FILEDESC', 'sepgsql - SELinux integration',]) +endif + sepgsql = shared_module('sepgsql', sepgsql_sources, kwargs: contrib_mod_args + { diff --git a/contrib/spi/meson.build b/contrib/spi/meson.build index 98008980ec2..e7d78189ef5 100644 --- a/contrib/spi/meson.build +++ b/contrib/spi/meson.build @@ -1,5 +1,15 @@ +autoinc_sources = files( + 'autoinc.c', +) + +if host_system == 'windows' + autoinc_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'autoinc', + '--FILEDESC', 'spi - examples of using SPI and triggers',]) +endif + autoinc = shared_module('autoinc', - ['autoinc.c'], + autoinc_sources, kwargs: contrib_mod_args, ) contrib_targets += autoinc @@ -9,8 +19,18 @@ install_data('autoinc.control', 'autoinc--1.0.sql', ) +insert_username_sources = files( + 'insert_username.c', +) + +if host_system == 'windows' + insert_username_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'insert_username', + '--FILEDESC', 'spi - examples of using SPI and triggers',]) +endif + insert_username = shared_module('insert_username', - ['insert_username.c'], + insert_username_sources, kwargs: contrib_mod_args, ) contrib_targets += insert_username @@ -22,8 +42,18 @@ install_data( ) +moddatetime_sources = files( + 'moddatetime.c', +) + +if host_system == 'windows' + moddatetime_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'moddatetime', + '--FILEDESC', 'spi - examples of using SPI and triggers',]) +endif + moddatetime = shared_module('moddatetime', - ['moddatetime.c'], + moddatetime_sources, kwargs: contrib_mod_args, ) contrib_targets += moddatetime @@ -38,8 +68,18 @@ install_data( # comment out if you want a quieter refint package for other uses refint_cflags = ['-DREFINT_VERBOSE'] +refint_sources = files( + 'refint.c', +) + +if host_system == 'windows' + refint_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'refint', + '--FILEDESC', 'spi - examples of using SPI and triggers',]) +endif + refint = shared_module('refint', - ['refint.c'], + refint_sources, c_args: refint_cflags, kwargs: contrib_mod_args, ) diff --git a/contrib/sslinfo/meson.build b/contrib/sslinfo/meson.build index 53f752a08ac..136983e783d 100644 --- a/contrib/sslinfo/meson.build +++ b/contrib/sslinfo/meson.build @@ -2,10 +2,18 @@ if not ssl.found() subdir_done() endif +sslinfo_sources = files( + 'sslinfo.c', +) + +if host_system == 'windows' + sslinfo_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'sslinfo', + '--FILEDESC', 'sslinfo - information about client SSL certificate',]) +endif + sslinfo = shared_module('sslinfo', - files( - 'sslinfo.c', - ), + sslinfo_sources, kwargs: contrib_mod_args + { 'dependencies': [ssl, contrib_mod_args['dependencies']], } diff --git a/contrib/tablefunc/meson.build b/contrib/tablefunc/meson.build index f4230096c0c..d2ddc8d3b39 100644 --- a/contrib/tablefunc/meson.build +++ b/contrib/tablefunc/meson.build @@ -1,7 +1,15 @@ +tablefunc_sources = files( + 'tablefunc.c', +) + +if host_system == 'windows' + tablefunc_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'tablefunc', + '--FILEDESC', 'tablefunc - various functions that return tables',]) +endif + tablefunc = shared_module('tablefunc', - files( - 'tablefunc.c', - ), + tablefunc_sources, kwargs: contrib_mod_args, ) contrib_targets += tablefunc diff --git a/contrib/tcn/meson.build b/contrib/tcn/meson.build index c3a025247d4..71261c3b0a2 100644 --- a/contrib/tcn/meson.build +++ b/contrib/tcn/meson.build @@ -1,7 +1,15 @@ +tcn_sources = files( + 'tcn.c', +) + +if host_system == 'windows' + tcn_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'tcn', + '--FILEDESC', 'tcn - trigger function notifying listeners',]) +endif + tcn = shared_module('tcn', - files( - 'tcn.c', - ), + tcn_sources, kwargs: contrib_mod_args, ) contrib_targets += tcn diff --git a/contrib/test_decoding/meson.build b/contrib/test_decoding/meson.build index dd7cb0101ad..6376103c689 100644 --- a/contrib/test_decoding/meson.build +++ b/contrib/test_decoding/meson.build @@ -2,6 +2,12 @@ test_decoding_sources = files( 'test_decoding.c', ) +if host_system == 'windows' + test_decoding_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'test_decoding', + '--FILEDESC', 'test_decoding - example of a logical decoding output plugin',]) +endif + test_decoding = shared_module('test_decoding', test_decoding_sources, kwargs: contrib_mod_args, diff --git a/contrib/tsm_system_rows/meson.build b/contrib/tsm_system_rows/meson.build index b9cd42115a8..380abb49883 100644 --- a/contrib/tsm_system_rows/meson.build +++ b/contrib/tsm_system_rows/meson.build @@ -1,7 +1,15 @@ +tsm_system_rows_sources = files( + 'tsm_system_rows.c', +) + +if host_system == 'windows' + tsm_system_rows_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'tsm_system_rows', + '--FILEDESC', 'tsm_system_rows - TABLESAMPLE method which accepts number of rows as a limit',]) +endif + tsm_system_rows = shared_module('tsm_system_rows', - files( - 'tsm_system_rows.c', - ), + tsm_system_rows_sources, kwargs: contrib_mod_args, ) contrib_targets += tsm_system_rows diff --git a/contrib/tsm_system_time/meson.build b/contrib/tsm_system_time/meson.build index 18015912ffb..e57a2702c60 100644 --- a/contrib/tsm_system_time/meson.build +++ b/contrib/tsm_system_time/meson.build @@ -1,7 +1,15 @@ +tsm_system_time_sources = files( + 'tsm_system_time.c', +) + +if host_system == 'windows' + tsm_system_time_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'tsm_system_time', + '--FILEDESC', 'tsm_system_time - TABLESAMPLE method which accepts time in milliseconds as a limit',]) +endif + tsm_system_time = shared_module('tsm_system_time', - files( - 'tsm_system_time.c', - ), + tsm_system_time_sources, kwargs: contrib_mod_args, ) contrib_targets += tsm_system_time diff --git a/contrib/unaccent/meson.build b/contrib/unaccent/meson.build index 872b76e3223..438035132f8 100644 --- a/contrib/unaccent/meson.build +++ b/contrib/unaccent/meson.build @@ -1,7 +1,15 @@ +unaccent_sources = files( + 'unaccent.c', +) + +if host_system == 'windows' + unaccent_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'unaccent', + '--FILEDESC', 'unaccent - text search dictionary that removes accents',]) +endif + unaccent = shared_module('unaccent', - files( - 'unaccent.c', - ), + unaccent_sources, kwargs: contrib_mod_args, ) contrib_targets += unaccent diff --git a/contrib/uuid-ossp/meson.build b/contrib/uuid-ossp/meson.build index da6d1d75c12..28730f398f0 100644 --- a/contrib/uuid-ossp/meson.build +++ b/contrib/uuid-ossp/meson.build @@ -2,10 +2,18 @@ if not uuid.found() subdir_done() endif +uuid_ossp_sources = files( + 'uuid-ossp.c', +) + +if host_system == 'windows' + uuid_ossp_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'uuid-ossp', + '--FILEDESC', 'uuid-ossp - UUID generation',]) +endif + uuid_ossp = shared_module('uuid-ossp', - files( - 'uuid-ossp.c', - ), + uuid_ossp_sources, kwargs: contrib_mod_args + { 'dependencies': [uuid, contrib_mod_args['dependencies']], }, diff --git a/contrib/vacuumlo/meson.build b/contrib/vacuumlo/meson.build index 7a632b87d1b..846de47dbd1 100644 --- a/contrib/vacuumlo/meson.build +++ b/contrib/vacuumlo/meson.build @@ -1,5 +1,15 @@ +vacuumlo_sources = files( + 'vacuumlo.c', +) + +if host_system == 'windows' + vacuumlo_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'vacuumlo', + '--FILEDESC', 'vacuumlo - removes orphaned large objects',]) +endif + vacuumlo = executable('vacuumlo', - ['vacuumlo.c'], + vacuumlo_sources, dependencies: [frontend_code, libpq], kwargs: default_bin_args, ) diff --git a/contrib/xml2/meson.build b/contrib/xml2/meson.build index 9c0b56f01f6..89b0d677516 100644 --- a/contrib/xml2/meson.build +++ b/contrib/xml2/meson.build @@ -2,11 +2,19 @@ if not libxml.found() subdir_done() endif +xml2_sources = files( + 'xpath.c', + 'xslt_proc.c', +) + +if host_system == 'windows' + xml2_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pgxml', + '--FILEDESC', 'xml2 - XPath querying and XSLT',]) +endif + xml2 = shared_module('pgxml', - files( - 'xpath.c', - 'xslt_proc.c', - ), + xml2_sources, kwargs: contrib_mod_args + { 'dependencies': [libxml, libxslt, contrib_mod_args['dependencies']], }, diff --git a/src/interfaces/ecpg/compatlib/meson.build b/src/interfaces/ecpg/compatlib/meson.build index 7aeb627ee86..aa9ab497832 100644 --- a/src/interfaces/ecpg/compatlib/meson.build +++ b/src/interfaces/ecpg/compatlib/meson.build @@ -7,6 +7,12 @@ ecpg_compat_inc = ['.', ecpg_inc, postgres_inc, libpq_inc] ecpg_compat_c_args = ['-DSO_MAJOR_VERSION=3'] export_file = custom_target('libecpg_compat.exports', kwargs: gen_export_kwargs) +if host_system == 'windows' + ecpg_compat_so_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'libecpg_compat', + '--FILEDESC', 'ECPG compat - compatibility library for ECPG',]) +endif + # not using both_libraries(), as the resource file should only be in the # shared library ecpg_compat_st = static_library('libecpg_compat', diff --git a/src/interfaces/ecpg/ecpglib/meson.build b/src/interfaces/ecpg/ecpglib/meson.build index eb8dd616571..fd40ee86610 100644 --- a/src/interfaces/ecpg/ecpglib/meson.build +++ b/src/interfaces/ecpg/ecpglib/meson.build @@ -16,6 +16,12 @@ ecpglib_inc = ['.', ecpg_inc, postgres_inc] ecpglib_c_args = ['-DSO_MAJOR_VERSION=6'] export_file = custom_target('libecpg.exports', kwargs: gen_export_kwargs) +if host_system == 'windows' + ecpglib_so_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'libecpg', + '--FILEDESC', 'ECPG - embedded SQL in C',]) +endif + # not using both_libraries(), as the resource file should only be in the # shared library ecpglib_st = static_library('libecpg', diff --git a/src/interfaces/ecpg/pgtypeslib/meson.build b/src/interfaces/ecpg/pgtypeslib/meson.build index 5254843f84d..53cdad36422 100644 --- a/src/interfaces/ecpg/pgtypeslib/meson.build +++ b/src/interfaces/ecpg/pgtypeslib/meson.build @@ -12,6 +12,12 @@ export_file = custom_target('libpgtypes.exports', kwargs: gen_export_kwargs) ecpg_pgtypes_inc = ['.', ecpg_inc, postgres_inc] ecpg_pgtypes_c_args = ['-DSO_MAJOR_VERSION=3'] +if host_system == 'windows' + ecpg_pgtypes_so_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pgtypes', + '--FILEDESC', 'pgtypes - library for data type mapping',]) +endif + # not using both_libraries(), as the resource file should only be in the # shared library ecpg_pgtypes_st = static_library('libpgtypes', diff --git a/src/interfaces/ecpg/preproc/meson.build b/src/interfaces/ecpg/preproc/meson.build index 1be49c8c27f..74876f039c9 100644 --- a/src/interfaces/ecpg/preproc/meson.build +++ b/src/interfaces/ecpg/preproc/meson.build @@ -93,6 +93,12 @@ ecpg_kwlist = custom_target('ecpg_kwlist_d.h', generated_sources += ecpg_kwlist ecpg_sources += ecpg_kwlist +if host_system == 'windows' + ecpg_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'ecpg', + '--FILEDESC', 'ecpg - embedded SQL precompiler for C',]) +endif + ecpg_exe = executable('ecpg', ecpg_sources, include_directories: ['.', ecpg_inc, postgres_inc, libpq_inc], diff --git a/src/interfaces/ecpg/test/meson.build b/src/interfaces/ecpg/test/meson.build index 8904aa7fd90..94b26d10314 100644 --- a/src/interfaces/ecpg/test/meson.build +++ b/src/interfaces/ecpg/test/meson.build @@ -7,6 +7,11 @@ pg_regress_ecpg_sources = pg_regress_c + files( 'pg_regress_ecpg.c', ) +if host_system == 'windows' + pg_regress_ecpg_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_regress_ecpg',]) +endif + pg_regress_ecpg = executable('pg_regress_ecpg', pg_regress_ecpg_sources, c_args: pg_regress_cflags, diff --git a/src/test/isolation/meson.build b/src/test/isolation/meson.build index c7656fd4609..ba27b8c1d44 100644 --- a/src/test/isolation/meson.build +++ b/src/test/isolation/meson.build @@ -23,6 +23,12 @@ spec_parser = custom_target('specparse', isolationtester_sources += spec_parser generated_sources += spec_parser.to_list() +if host_system == 'windows' + isolation_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_isolation_regress', + '--FILEDESC', 'pg_isolation_regress - multi-client test driver',]) +endif + pg_isolation_regress = executable('pg_isolation_regress', isolation_sources, c_args: pg_regress_cflags, @@ -34,6 +40,13 @@ pg_isolation_regress = executable('pg_isolation_regress', ) bin_targets += pg_isolation_regress + +if host_system == 'windows' + isolationtester_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'isolationtester', + '--FILEDESC', 'isolationtester - multi-client test driver',]) +endif + isolationtester = executable('isolationtester', isolationtester_sources, include_directories: include_directories('.'), diff --git a/src/test/modules/delay_execution/meson.build b/src/test/modules/delay_execution/meson.build index cf4bdaba637..a0c3ab6afe7 100644 --- a/src/test/modules/delay_execution/meson.build +++ b/src/test/modules/delay_execution/meson.build @@ -1,6 +1,17 @@ # FIXME: prevent install during main install, but not during test :/ + +delay_execution_sources = files( + 'delay_execution.c', +) + +if host_system == 'windows' + delay_execution_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'delay_execution', + '--FILEDESC', 'delay_execution - allow delay between parsing and execution',]) +endif + delay_execution = shared_module('delay_execution', - ['delay_execution.c'], + delay_execution_sources, kwargs: pg_mod_args, ) testprep_targets += delay_execution diff --git a/src/test/modules/dummy_index_am/meson.build b/src/test/modules/dummy_index_am/meson.build index 56ff5f48001..4ce82491135 100644 --- a/src/test/modules/dummy_index_am/meson.build +++ b/src/test/modules/dummy_index_am/meson.build @@ -1,6 +1,17 @@ # FIXME: prevent install during main install, but not during test :/ + +dummy_index_am_sources = files( + 'dummy_index_am.c', +) + +if host_system == 'windows' + dummy_index_am_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'dummy_index_am', + '--FILEDESC', 'dummy_index_am - index access method template',]) +endif + dummy_index_am = shared_module('dummy_index_am', - ['dummy_index_am.c'], + dummy_index_am_sources, kwargs: pg_mod_args, ) testprep_targets += dummy_index_am diff --git a/src/test/modules/dummy_seclabel/meson.build b/src/test/modules/dummy_seclabel/meson.build index 21b7cf8f353..81b626e496c 100644 --- a/src/test/modules/dummy_seclabel/meson.build +++ b/src/test/modules/dummy_seclabel/meson.build @@ -1,6 +1,17 @@ # FIXME: prevent install during main install, but not during test :/ + +dummy_seclabel_sources = files( + 'dummy_seclabel.c', +) + +if host_system == 'windows' + dummy_seclabel_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'dummy_seclabel', + '--FILEDESC', 'dummy_seclabel - regression testing of the SECURITY LABEL statement',]) +endif + dummy_seclabel = shared_module('dummy_seclabel', - ['dummy_seclabel.c'], + dummy_seclabel_sources, kwargs: pg_mod_args, ) testprep_targets += dummy_seclabel diff --git a/src/test/modules/libpq_pipeline/meson.build b/src/test/modules/libpq_pipeline/meson.build index 8384b6e3b2a..de0e2d15626 100644 --- a/src/test/modules/libpq_pipeline/meson.build +++ b/src/test/modules/libpq_pipeline/meson.build @@ -1,7 +1,15 @@ +libpq_pipeline_sources = files( + 'libpq_pipeline.c', +) + +if host_system == 'windows' + libpq_pipeline_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'libpq_pipeline', + '--FILEDESC', 'libpq_pipeline - test program for pipeline execution',]) +endif + libpq_pipeline = executable('libpq_pipeline', - files( - 'libpq_pipeline.c', - ), + libpq_pipeline_sources, dependencies: [frontend_code, libpq], kwargs: default_bin_args + { 'install': false, diff --git a/src/test/modules/plsample/meson.build b/src/test/modules/plsample/meson.build index 45de3f1990d..e1ea2c7a16f 100644 --- a/src/test/modules/plsample/meson.build +++ b/src/test/modules/plsample/meson.build @@ -1,6 +1,17 @@ # FIXME: prevent install during main install, but not during test :/ + +plsample_sources = files( + 'plsample.c', +) + +if host_system == 'windows' + plsample_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'plsample', + '--FILEDESC', 'PL/Sample - template for procedural language',]) +endif + plsample = shared_module('plsample', - ['plsample.c'], + plsample_sources, kwargs: pg_mod_args, ) testprep_targets += plsample diff --git a/src/test/modules/spgist_name_ops/meson.build b/src/test/modules/spgist_name_ops/meson.build index 857fc7e140e..445296fee0b 100644 --- a/src/test/modules/spgist_name_ops/meson.build +++ b/src/test/modules/spgist_name_ops/meson.build @@ -1,6 +1,17 @@ # FIXME: prevent install during main install, but not during test :/ + +spgist_name_ops_sources = files( + 'spgist_name_ops.c', +) + +if host_system == 'windows' + spgist_name_ops_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'spgist_name_ops', + '--FILEDESC', 'spgist_name_ops - test opclass for SP-GiST',]) +endif + spgist_name_ops = shared_module('spgist_name_ops', - ['spgist_name_ops.c'], + spgist_name_ops_sources, kwargs: pg_mod_args, ) testprep_targets += spgist_name_ops diff --git a/src/test/modules/ssl_passphrase_callback/meson.build b/src/test/modules/ssl_passphrase_callback/meson.build index a57bd0693a3..a9eb4c564da 100644 --- a/src/test/modules/ssl_passphrase_callback/meson.build +++ b/src/test/modules/ssl_passphrase_callback/meson.build @@ -3,8 +3,19 @@ if not ssl.found() endif # FIXME: prevent install during main install, but not during test :/ + +ssl_passphrase_callback_sources = files( + 'ssl_passphrase_func.c', +) + +if host_system == 'windows' + ssl_passphrase_callback_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'ssl_passphrase_func', + '--FILEDESC', 'callback function to provide a passphrase',]) +endif + ssl_passphrase_callback = shared_module('ssl_passphrase_func', - ['ssl_passphrase_func.c'], + ssl_passphrase_callback_sources, kwargs: pg_mod_args + { 'dependencies': [ssl, pg_mod_args['dependencies']], }, diff --git a/src/test/modules/test_bloomfilter/meson.build b/src/test/modules/test_bloomfilter/meson.build index 945eb5a70c4..3cf6b05754f 100644 --- a/src/test/modules/test_bloomfilter/meson.build +++ b/src/test/modules/test_bloomfilter/meson.build @@ -1,6 +1,17 @@ # FIXME: prevent install during main install, but not during test :/ + +test_bloomfilter_sources = files( + 'test_bloomfilter.c', +) + +if host_system == 'windows' + test_bloomfilter_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'test_bloomfilter', + '--FILEDESC', 'test_bloomfilter - test code for Bloom filter library',]) +endif + test_bloomfilter = shared_module('test_bloomfilter', - ['test_bloomfilter.c'], + test_bloomfilter_sources, kwargs: pg_mod_args, ) testprep_targets += test_bloomfilter diff --git a/src/test/modules/test_ddl_deparse/meson.build b/src/test/modules/test_ddl_deparse/meson.build index 81ad5adc526..54d44f9b2b4 100644 --- a/src/test/modules/test_ddl_deparse/meson.build +++ b/src/test/modules/test_ddl_deparse/meson.build @@ -1,6 +1,17 @@ # FIXME: prevent install during main install, but not during test :/ + +test_ddl_deparse_sources = files( + 'test_ddl_deparse.c', +) + +if host_system == 'windows' + test_ddl_deparse_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'test_ddl_deparse', + '--FILEDESC', 'test_ddl_deparse - regression testing for DDL deparsing',]) +endif + test_ddl_deparse = shared_module('test_ddl_deparse', - ['test_ddl_deparse.c'], + test_ddl_deparse_sources, kwargs: pg_mod_args, ) testprep_targets += test_ddl_deparse diff --git a/src/test/modules/test_ginpostinglist/meson.build b/src/test/modules/test_ginpostinglist/meson.build index abf0a3b0430..b3b49c56122 100644 --- a/src/test/modules/test_ginpostinglist/meson.build +++ b/src/test/modules/test_ginpostinglist/meson.build @@ -1,6 +1,17 @@ # FIXME: prevent install during main install, but not during test :/ + +test_ginpostinglist_sources = files( + 'test_ginpostinglist.c', +) + +if host_system == 'windows' + test_ginpostinglist_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'test_ginpostinglist', + '--FILEDESC', 'test_ginpostinglist - test code for src/backend/access/gin//ginpostinglist.c',]) +endif + test_ginpostinglist = shared_module('test_ginpostinglist', - ['test_ginpostinglist.c'], + test_ginpostinglist_sources, kwargs: pg_mod_args, ) testprep_targets += test_ginpostinglist diff --git a/src/test/modules/test_integerset/meson.build b/src/test/modules/test_integerset/meson.build index c32c469c69a..4bd75af4b5e 100644 --- a/src/test/modules/test_integerset/meson.build +++ b/src/test/modules/test_integerset/meson.build @@ -1,6 +1,17 @@ # FIXME: prevent install during main install, but not during test :/ + +test_integerset_sources = files( + 'test_integerset.c', +) + +if host_system == 'windows' + test_integerset_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'test_integerset', + '--FILEDESC', 'test_integerset - test code for src/backend/lib/integerset.c',]) +endif + test_integerset = shared_module('test_integerset', - ['test_integerset.c'], + test_integerset_sources, kwargs: pg_mod_args, ) testprep_targets += test_integerset diff --git a/src/test/modules/test_lfind/meson.build b/src/test/modules/test_lfind/meson.build index a388de1156a..c5405b8f878 100644 --- a/src/test/modules/test_lfind/meson.build +++ b/src/test/modules/test_lfind/meson.build @@ -1,6 +1,17 @@ # FIXME: prevent install during main install, but not during test :/ + +test_lfind_sources = files( + 'test_lfind.c', +) + +if host_system == 'windows' + test_lfind_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'test_lfind', + '--FILEDESC', 'test_lfind - test code for optimized linear search functions',]) +endif + test_lfind = shared_module('test_lfind', - ['test_lfind.c'], + test_lfind_sources, kwargs: pg_mod_args, ) testprep_targets += test_lfind diff --git a/src/test/modules/test_oat_hooks/meson.build b/src/test/modules/test_oat_hooks/meson.build index 5faf0459777..8802bbbac55 100644 --- a/src/test/modules/test_oat_hooks/meson.build +++ b/src/test/modules/test_oat_hooks/meson.build @@ -1,6 +1,17 @@ # FIXME: prevent install during main install, but not during test :/ + +test_oat_hooks_sources = files( + 'test_oat_hooks.c', +) + +if host_system == 'windows' + test_oat_hooks_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'test_oat_hooks', + '--FILEDESC', 'test_oat_hooks - example use of object access hooks',]) +endif + test_oat_hooks = shared_module('test_oat_hooks', - ['test_oat_hooks.c'], + test_oat_hooks_sources, kwargs: pg_mod_args, ) testprep_targets += test_oat_hooks diff --git a/src/test/modules/test_parser/meson.build b/src/test/modules/test_parser/meson.build index b59960f615e..1c17113347f 100644 --- a/src/test/modules/test_parser/meson.build +++ b/src/test/modules/test_parser/meson.build @@ -1,6 +1,17 @@ # FIXME: prevent install during main install, but not during test :/ + +test_parser_sources = files( + 'test_parser.c', +) + +if host_system == 'windows' + test_parser_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'test_parser', + '--FILEDESC', 'test_parser - example of a custom parser for full-text search',]) +endif + test_parser = shared_module('test_parser', - ['test_parser.c'], + test_parser_sources, kwargs: pg_mod_args, ) testprep_targets += test_parser diff --git a/src/test/modules/test_predtest/meson.build b/src/test/modules/test_predtest/meson.build index 1cfa84b3609..9a5be43c9c0 100644 --- a/src/test/modules/test_predtest/meson.build +++ b/src/test/modules/test_predtest/meson.build @@ -1,6 +1,17 @@ # FIXME: prevent install during main install, but not during test :/ + +test_predtest_sources = files( + 'test_predtest.c', +) + +if host_system == 'windows' + test_predtest_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'test_predtest', + '--FILEDESC', 'test_predtest - test code for optimizer/util/predtest.c',]) +endif + test_predtest = shared_module('test_predtest', - ['test_predtest.c'], + test_predtest_sources, kwargs: pg_mod_args, ) testprep_targets += test_predtest diff --git a/src/test/modules/test_rbtree/meson.build b/src/test/modules/test_rbtree/meson.build index 34cbc3e1624..f067e08d321 100644 --- a/src/test/modules/test_rbtree/meson.build +++ b/src/test/modules/test_rbtree/meson.build @@ -1,6 +1,17 @@ # FIXME: prevent install during main install, but not during test :/ + +test_rbtree_sources = files( + 'test_rbtree.c', +) + +if host_system == 'windows' + test_rbtree_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'test_rbtree', + '--FILEDESC', 'test_rbtree - test code for red-black tree library',]) +endif + test_rbtree = shared_module('test_rbtree', - ['test_rbtree.c'], + test_rbtree_sources, kwargs: pg_mod_args, ) testprep_targets += test_rbtree diff --git a/src/test/modules/test_regex/meson.build b/src/test/modules/test_regex/meson.build index 867a64e57c3..cfb938d9f1e 100644 --- a/src/test/modules/test_regex/meson.build +++ b/src/test/modules/test_regex/meson.build @@ -1,6 +1,17 @@ # FIXME: prevent install during main install, but not during test :/ + +test_regex_sources = files( + 'test_regex.c', +) + +if host_system == 'windows' + test_regex_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'test_regex', + '--FILEDESC', 'test_regex - test code for backend/regex/',]) +endif + test_regex = shared_module('test_regex', - ['test_regex.c'], + test_regex_sources, kwargs: pg_mod_args, ) testprep_targets += test_regex diff --git a/src/test/modules/test_rls_hooks/meson.build b/src/test/modules/test_rls_hooks/meson.build index 80d8adda332..3fb273b2934 100644 --- a/src/test/modules/test_rls_hooks/meson.build +++ b/src/test/modules/test_rls_hooks/meson.build @@ -1,6 +1,17 @@ # FIXME: prevent install during main install, but not during test :/ + +test_rls_hooks_sources = files( + 'test_rls_hooks.c', +) + +if host_system == 'windows' + test_rls_hooks_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'test_rls_hooks', + '--FILEDESC', 'test_rls_hooks - example use of RLS hooks',]) +endif + test_rls_hooks = shared_module('test_rls_hooks', - ['test_rls_hooks.c'], + test_rls_hooks_sources, kwargs: pg_mod_args, ) testprep_targets += test_rls_hooks diff --git a/src/test/modules/test_shm_mq/meson.build b/src/test/modules/test_shm_mq/meson.build index b663543d616..16c8fdb57f4 100644 --- a/src/test/modules/test_shm_mq/meson.build +++ b/src/test/modules/test_shm_mq/meson.build @@ -1,10 +1,19 @@ # FIXME: prevent install during main install, but not during test :/ + +test_shm_mq_sources = files( + 'setup.c', + 'test.c', + 'worker.c', +) + +if host_system == 'windows' + test_shm_mq_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'test_shm_mq', + '--FILEDESC', 'test_shm_mq - example use of shared memory message queue',]) +endif + test_shm_mq = shared_module('test_shm_mq', - files( - 'setup.c', - 'test.c', - 'worker.c', - ), + test_shm_mq_sources, kwargs: pg_mod_args, ) testprep_targets += test_shm_mq diff --git a/src/test/modules/worker_spi/meson.build b/src/test/modules/worker_spi/meson.build index 32acad883b2..a4a158c75b9 100644 --- a/src/test/modules/worker_spi/meson.build +++ b/src/test/modules/worker_spi/meson.build @@ -1,8 +1,17 @@ # FIXME: prevent install during main install, but not during test :/ + +test_worker_spi_sources = files( + 'worker_spi.c', +) + +if host_system == 'windows' + test_worker_spi_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'worker_spi', + '--FILEDESC', 'worker_spi - background worker example',]) +endif + test_worker_spi = shared_module('worker_spi', - files( - 'worker_spi.c', - ), + test_worker_spi_sources, kwargs: pg_mod_args, ) testprep_targets += test_worker_spi diff --git a/src/test/regress/meson.build b/src/test/regress/meson.build index fd8ee995b79..963c0f64ed5 100644 --- a/src/test/regress/meson.build +++ b/src/test/regress/meson.build @@ -8,6 +8,12 @@ regress_sources = pg_regress_c + files( pg_regress_cflags = ['-DHOST_TUPLE="frak"', '-DSHELLPROG="/bin/sh"'] +if host_system == 'windows' + regress_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_regress', + '--FILEDESC', 'pg_regress - test driver',]) +endif + pg_regress = executable('pg_regress', regress_sources, c_args: pg_regress_cflags, diff --git a/meson.build b/meson.build index 38b2c3aae2e..774a8c2e05f 100644 --- a/meson.build +++ b/meson.build @@ -2536,6 +2536,65 @@ gen_export_kwargs = { +### +### windows resources related stuff +### + +if host_system == 'windows' + pg_ico = meson.source_root() / 'src' / 'port' / 'win32.ico' + win32ver_rc = files('src/port/win32ver.rc') + rcgen = find_program('src/tools/rcgen', native: true) + + rcgen_base_args = [ + '--srcdir', '@SOURCE_DIR@', + '--builddir', meson.build_root(), + '--rcout', '@OUTPUT0@', + '--out', '@OUTPUT1@', + '--input', '@INPUT@', + '@EXTRA_ARGS@', + ] + + if cc.get_argument_syntax() == 'msvc' + rc = find_program('rc', required: true) + rcgen_base_args += ['--rc', rc.path()] + rcgen_outputs = ['@[email protected]', '@[email protected]'] + else + windres = find_program('windres', required: true) + rcgen_base_args += ['--windres', windres.path()] + rcgen_outputs = ['@[email protected]', '@[email protected]'] + endif + + # msbuild backend doesn't support this atm + if meson.backend() == 'ninja' + rcgen_base_args += ['--depfile', '@DEPFILE@'] + endif + + rcgen_bin_args = rcgen_base_args + [ + '--VFT_TYPE', 'VFT_APP', + '--FILEENDING', 'exe', + '--ICO', pg_ico + ] + + rcgen_lib_args = rcgen_base_args + [ + '--VFT_TYPE', 'VFT_DLL', + '--FILEENDING', 'dll', + ] + + rc_bin_gen = generator(rcgen, + depfile: '@[email protected]', + arguments: rcgen_bin_args, + output: rcgen_outputs, + ) + + rc_lib_gen = generator(rcgen, + depfile: '@[email protected]', + arguments: rcgen_lib_args, + output: rcgen_outputs, + ) +endif + + + # headers that the whole build tree depends on generated_headers = [] # headers that the backend build depends on diff --git a/src/timezone/meson.build b/src/timezone/meson.build index 16f082ecfa8..9e0934c000b 100644 --- a/src/timezone/meson.build +++ b/src/timezone/meson.build @@ -28,6 +28,12 @@ if get_option('system_tzdata') == '' if meson.is_cross_build() zic = find_program(get_option('ZIC'), native: true, required: true) else + if host_system == 'windows' + zic_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'zic', + '--FILEDESC', 'zic - time zone compiler',]) + endif + zic = executable('zic', zic_sources, dependencies: [frontend_code], kwargs: default_bin_args + {'install': false} diff --git a/src/tools/rcgen b/src/tools/rcgen new file mode 100755 index 00000000000..5b62bfe5410 --- /dev/null +++ b/src/tools/rcgen @@ -0,0 +1,99 @@ +#!/usr/bin/env python3 + +import argparse +import os +import subprocess +import sys + +parser = argparse.ArgumentParser(description='generate PostgreSQL rc file') + +parser.add_argument('--srcdir', type=os.path.abspath, + required=True) +parser.add_argument('--builddir', type=os.path.abspath, + required=True) + +binaries = parser.add_argument_group('binaries') +binaries.add_argument('--windres', type=os.path.abspath) +binaries.add_argument('--rc', type=os.path.abspath) + +inout = parser.add_argument_group('inout') +inout.add_argument('--depfile', type=argparse.FileType('w')) +inout.add_argument('--input', type=argparse.FileType('r'), + required=True) +inout.add_argument('--rcout', type=argparse.FileType('w'), + required=True) +inout.add_argument('--out', type=str, + required=True) + +replacements = parser.add_argument_group('replacements') +replacements.add_argument('--FILEDESC', type=str) +replacements.add_argument('--NAME', type=str, required=True) +replacements.add_argument('--VFT_TYPE', type=str, required=True) +replacements.add_argument('--FILEENDING', type=str, required=True) +replacements.add_argument('--ICO', type=str) + +args = parser.parse_args() + +# determine replacement strings + +internal_name = '"{0}"'.format(args.NAME) +original_name = '"{0}.{1}"'.format(args.NAME, args.FILEENDING) + +# if no description is passed in, generate one based on the name +if args.FILEDESC: + filedesc = args.FILEDESC +elif args.NAME: + if args.VFT_TYPE == 'VFT_DLL': + filedesc = 'PostgreSQL {0} library'.format(args.NAME) + else: + filedesc = 'PostgreSQL {0} binary'.format(args.NAME) +filedesc = '"{0}"'.format(filedesc) + + +if args.ICO: + ico = 'IDI_ICON ICON "{0}"'.format(args.ICO) + if args.depfile: + args.depfile.write("{0} : {1}\n".format(args.rcout.name, args.ICO)) +else: + ico = '' + + +data = args.input.read() + +data = data.replace('VFT_APP', args.VFT_TYPE) +data = data.replace('_INTERNAL_NAME_', internal_name) +data = data.replace('_ORIGINAL_NAME_', original_name) +data = data.replace('FILEDESC', filedesc) +data = data.replace("_ICO_", ico) + +args.rcout.write(data) +args.rcout.close() + +if args.windres: + cmd = [ + args.windres, + '-I{0}/src/include/'.format(args.builddir), + '-I{0}/src/include/'.format(args.srcdir), + '-o', args.out, '-i', args.rcout.name, + ] +elif args.rc: + cmd = [ + args.rc, '/nologo', + '-I{0}/src/include/'.format(args.builddir), + '-I{0}/src/include/'.format(args.srcdir), + '/fo', args.out, args.rcout.name, + ] +else: + sys.exit('either --windres or --rc needs to be specified') + +sp = subprocess.run(cmd) +if sp.returncode != 0: + sys.exit(sp.returncode) + +# It'd be nicer if we could generate correct dependencies here, but 'rc' +# doesn't support doing so. It's unlikely we'll ever need more, so... +if args.depfile: + args.depfile.write("{0} : {1}\n".format( + args.rcout.name, args.input.name)) + args.depfile.write("{0} : {1}/{2}\n".format( + args.out, args.builddir, 'src/include/pg_config.h')) -- 2.37.3.542.gdd3f6c4cae --losgcde4yzp6hbli Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v17-0007-meson-Add-docs-for-building-with-meson.patch" ^ permalink raw reply [nested|flat] 6+ messages in thread
* [PATCH v18 04/22] meson: Add windows resource files @ 2022-10-01 18:54 Andres Freund <[email protected]> 0 siblings, 0 replies; 6+ messages in thread From: Andres Freund @ 2022-10-01 18:54 UTC (permalink / raw) The generated resource files aren't exactly the same ones as the old buildsystems generate. Previously "InternalName" and "OriginalFileName" were mostly wrong / not set (despite being required), but that was hard to fix in at least the make build. Additionally, the meson build falls back to a "auto-generated" description when not set, and doesn't set it in a few cases - unlikely that anybody looks at these descriptions in detail. Author: Andres Freund <[email protected]> Author: Nazir Bilal Yavuz <[email protected]> Reviewed-by: Peter Eisentraut <[email protected]> --- src/backend/jit/llvm/meson.build | 6 + .../replication/libpqwalreceiver/meson.build | 6 + src/backend/replication/pgoutput/meson.build | 6 + src/backend/snowball/meson.build | 6 + .../utils/mb/conversion_procs/meson.build | 9 +- src/bin/initdb/meson.build | 6 + src/bin/pg_amcheck/meson.build | 8 +- src/bin/pg_archivecleanup/meson.build | 12 +- src/bin/pg_basebackup/meson.build | 38 ++++++- src/bin/pg_checksums/meson.build | 12 +- src/bin/pg_config/meson.build | 12 +- src/bin/pg_controldata/meson.build | 12 +- src/bin/pg_ctl/meson.build | 12 +- src/bin/pg_dump/meson.build | 18 +++ src/bin/pg_resetwal/meson.build | 12 +- src/bin/pg_rewind/meson.build | 6 + src/bin/pg_test_fsync/meson.build | 10 +- src/bin/pg_test_timing/meson.build | 12 +- src/bin/pg_upgrade/meson.build | 6 + src/bin/pg_verifybackup/meson.build | 6 + src/bin/pg_waldump/meson.build | 6 + src/bin/pgbench/meson.build | 6 + src/bin/pgevent/meson.build | 6 + src/bin/psql/meson.build | 6 + src/bin/scripts/meson.build | 10 +- src/interfaces/libpq/meson.build | 6 +- src/interfaces/libpq/test/meson.build | 25 ++++- src/pl/plperl/meson.build | 7 ++ src/pl/plpgsql/src/meson.build | 6 + src/pl/plpython/meson.build | 6 + src/pl/tcl/meson.build | 6 + contrib/adminpack/meson.build | 12 +- contrib/amcheck/meson.build | 17 ++- contrib/auth_delay/meson.build | 12 +- contrib/auto_explain/meson.build | 12 +- contrib/basebackup_to_shell/meson.build | 6 + contrib/basic_archive/meson.build | 6 + contrib/bloom/meson.build | 6 + contrib/bool_plperl/meson.build | 6 + contrib/btree_gin/meson.build | 12 +- contrib/btree_gist/meson.build | 6 + contrib/citext/meson.build | 6 + contrib/cube/meson.build | 6 + contrib/dblink/meson.build | 6 + contrib/dict_int/meson.build | 12 +- contrib/dict_xsyn/meson.build | 12 +- contrib/earthdistance/meson.build | 12 +- contrib/file_fdw/meson.build | 12 +- contrib/fuzzystrmatch/meson.build | 16 ++- contrib/hstore/meson.build | 24 ++-- contrib/hstore_plperl/meson.build | 6 + contrib/hstore_plpython/meson.build | 6 + contrib/intarray/meson.build | 6 + contrib/isn/meson.build | 6 + contrib/jsonb_plperl/meson.build | 6 + contrib/jsonb_plpython/meson.build | 6 + contrib/lo/meson.build | 6 + contrib/ltree/meson.build | 6 + contrib/ltree_plpython/meson.build | 6 + contrib/oid2name/meson.build | 12 +- contrib/old_snapshot/meson.build | 6 + contrib/pageinspect/meson.build | 6 + contrib/passwordcheck/meson.build | 6 + contrib/pg_buffercache/meson.build | 14 ++- contrib/pg_freespacemap/meson.build | 14 ++- contrib/pg_prewarm/meson.build | 16 ++- contrib/pg_stat_statements/meson.build | 12 +- contrib/pg_surgery/meson.build | 14 ++- contrib/pg_trgm/meson.build | 20 +++- contrib/pg_visibility/meson.build | 14 ++- contrib/pg_walinspect/meson.build | 6 + contrib/pgcrypto/meson.build | 6 + contrib/pgrowlocks/meson.build | 14 ++- contrib/pgstattuple/meson.build | 18 ++- contrib/postgres_fdw/meson.build | 6 + contrib/seg/meson.build | 6 + contrib/sepgsql/meson.build | 6 + contrib/spi/meson.build | 48 +++++++- contrib/sslinfo/meson.build | 14 ++- contrib/tablefunc/meson.build | 14 ++- contrib/tcn/meson.build | 14 ++- contrib/test_decoding/meson.build | 6 + contrib/tsm_system_rows/meson.build | 14 ++- contrib/tsm_system_time/meson.build | 14 ++- contrib/unaccent/meson.build | 14 ++- contrib/uuid-ossp/meson.build | 14 ++- contrib/vacuumlo/meson.build | 12 +- contrib/xml2/meson.build | 16 ++- src/interfaces/ecpg/compatlib/meson.build | 6 + src/interfaces/ecpg/ecpglib/meson.build | 6 + src/interfaces/ecpg/pgtypeslib/meson.build | 6 + src/interfaces/ecpg/preproc/meson.build | 6 + src/interfaces/ecpg/test/meson.build | 5 + src/test/isolation/meson.build | 13 +++ src/test/modules/delay_execution/meson.build | 13 ++- src/test/modules/dummy_index_am/meson.build | 13 ++- src/test/modules/dummy_seclabel/meson.build | 13 ++- src/test/modules/libpq_pipeline/meson.build | 14 ++- src/test/modules/plsample/meson.build | 13 ++- src/test/modules/spgist_name_ops/meson.build | 13 ++- .../ssl_passphrase_callback/meson.build | 13 ++- src/test/modules/test_bloomfilter/meson.build | 13 ++- src/test/modules/test_ddl_deparse/meson.build | 13 ++- .../modules/test_ginpostinglist/meson.build | 13 ++- src/test/modules/test_integerset/meson.build | 13 ++- src/test/modules/test_lfind/meson.build | 13 ++- src/test/modules/test_oat_hooks/meson.build | 13 ++- src/test/modules/test_parser/meson.build | 13 ++- src/test/modules/test_predtest/meson.build | 13 ++- src/test/modules/test_rbtree/meson.build | 13 ++- src/test/modules/test_regex/meson.build | 13 ++- src/test/modules/test_rls_hooks/meson.build | 13 ++- src/test/modules/test_shm_mq/meson.build | 19 +++- src/test/modules/worker_spi/meson.build | 15 ++- src/test/regress/meson.build | 6 + meson.build | 59 ++++++++++ src/timezone/meson.build | 6 + src/tools/rcgen | 105 ++++++++++++++++++ 118 files changed, 1292 insertions(+), 131 deletions(-) create mode 100755 src/tools/rcgen diff --git a/src/backend/jit/llvm/meson.build b/src/backend/jit/llvm/meson.build index 6ae7aaad015..25c5618e8a3 100644 --- a/src/backend/jit/llvm/meson.build +++ b/src/backend/jit/llvm/meson.build @@ -20,6 +20,12 @@ llvmjit_sources += files( 'llvmjit_expr.c', ) +if host_system == 'windows' + llvmjit_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'llvmjit', + '--FILEDESC', 'llvmjit - JIT using LLVM',]) +endif + llvmjit = shared_module('llvmjit', llvmjit_sources, kwargs: pg_mod_args + { diff --git a/src/backend/replication/libpqwalreceiver/meson.build b/src/backend/replication/libpqwalreceiver/meson.build index 3fc786c80a0..4c653a05d36 100644 --- a/src/backend/replication/libpqwalreceiver/meson.build +++ b/src/backend/replication/libpqwalreceiver/meson.build @@ -2,6 +2,12 @@ libpqwalreceiver_sources = files( 'libpqwalreceiver.c', ) +if host_system == 'windows' + libpqwalreceiver_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pqwalreceiver', + '--FILEDESC', 'libpqwalreceiver - receive WAL during streaming replication',]) +endif + libpqwalreceiver = shared_module('pqwalreceiver', libpqwalreceiver_sources, kwargs: pg_mod_args + { diff --git a/src/backend/replication/pgoutput/meson.build b/src/backend/replication/pgoutput/meson.build index ab956361a62..5df27d7b764 100644 --- a/src/backend/replication/pgoutput/meson.build +++ b/src/backend/replication/pgoutput/meson.build @@ -2,6 +2,12 @@ pgoutput_sources = files( 'pgoutput.c', ) +if host_system == 'windows' + pgoutput_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pgoutput', + '--FILEDESC', 'pgoutput - standard logical replication output plugin',]) +endif + pgoutput = shared_module('pgoutput', pgoutput_sources, kwargs: pg_mod_args, diff --git a/src/backend/snowball/meson.build b/src/backend/snowball/meson.build index 8c6f685cb32..974401d187e 100644 --- a/src/backend/snowball/meson.build +++ b/src/backend/snowball/meson.build @@ -58,6 +58,12 @@ dict_snowball_sources += files( # see comment in src/include/snowball/header.h stemmer_inc = include_directories('../../include/snowball') +if host_system == 'windows' + dict_snowball_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'dict_snowball', + '--FILEDESC', 'snowball - natural language stemmers',]) +endif + dict_snowball = shared_module('dict_snowball', dict_snowball_sources, kwargs: pg_mod_args + { diff --git a/src/backend/utils/mb/conversion_procs/meson.build b/src/backend/utils/mb/conversion_procs/meson.build index 1bc971d1945..1c18f2ac85a 100644 --- a/src/backend/utils/mb/conversion_procs/meson.build +++ b/src/backend/utils/mb/conversion_procs/meson.build @@ -29,8 +29,15 @@ encodings = { } foreach encoding, sources : encodings + source_files = files(sources) + + if host_system == 'windows' + source_files += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', encoding]) + endif + backend_targets += shared_module(encoding, - sources, + source_files, kwargs: pg_mod_args, ) endforeach diff --git a/src/bin/initdb/meson.build b/src/bin/initdb/meson.build index 9f213274d2f..6ced9a31b80 100644 --- a/src/bin/initdb/meson.build +++ b/src/bin/initdb/meson.build @@ -7,6 +7,12 @@ initdb_sources += timezone_localtime_source #fixme: reimplement libpq_pgport logic +if host_system == 'windows' + initdb_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'initdb', + '--FILEDESC', 'initdb - initialize a new database cluster',]) +endif + initdb = executable('initdb', initdb_sources, include_directories: [timezone_inc], diff --git a/src/bin/pg_amcheck/meson.build b/src/bin/pg_amcheck/meson.build index 8e197eba5f3..25f5e7a0948 100644 --- a/src/bin/pg_amcheck/meson.build +++ b/src/bin/pg_amcheck/meson.build @@ -1,7 +1,13 @@ pg_amcheck_sources = files( - 'pg_amcheck.c' + 'pg_amcheck.c', ) +if host_system == 'windows' + pg_amcheck_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_amcheck', + '--FILEDESC', 'pg_amcheck - detect corruption within database relations',]) +endif + pg_amcheck = executable('pg_amcheck', pg_amcheck_sources, dependencies: [frontend_code, libpq], diff --git a/src/bin/pg_archivecleanup/meson.build b/src/bin/pg_archivecleanup/meson.build index 87a0d980c4f..aaa2e76977f 100644 --- a/src/bin/pg_archivecleanup/meson.build +++ b/src/bin/pg_archivecleanup/meson.build @@ -1,5 +1,15 @@ +pg_archivecleanup_sources = files( + 'pg_archivecleanup.c', +) + +if host_system == 'windows' + pg_archivecleanup_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_archivecleanup', + '--FILEDESC', 'pg_archivecleanup - cleans archive when used with streaming replication',]) +endif + pg_archivecleanup = executable('pg_archivecleanup', - ['pg_archivecleanup.c'], + pg_archivecleanup_sources, dependencies: [frontend_code], kwargs: default_bin_args, ) diff --git a/src/bin/pg_basebackup/meson.build b/src/bin/pg_basebackup/meson.build index d26fed9cd8a..2c934e0c26e 100644 --- a/src/bin/pg_basebackup/meson.build +++ b/src/bin/pg_basebackup/meson.build @@ -17,24 +17,56 @@ pg_basebackup_common = static_library('libpg_basebackup_common', kwargs: internal_lib_args, ) -pg_basebackup = executable('pg_basebackup', +pg_basebackup_sources = files( 'pg_basebackup.c', +) + +if host_system == 'windows' + pg_basebackup_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_basebackup', + '--FILEDESC', 'pg_basebackup - streaming WAL and backup receivers',]) +endif + +pg_basebackup = executable('pg_basebackup', + pg_basebackup_sources, link_with: [pg_basebackup_common], dependencies: pg_basebackup_deps, kwargs: default_bin_args, ) bin_targets += pg_basebackup -pg_receivewal = executable('pg_receivewal', + +pg_receivewal_sources = files( 'pg_receivewal.c', +) + +if host_system == 'windows' + pg_receivewal_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_receivewal', + '--FILEDESC', 'pg_receivewal - streaming WAL and backup receivers',]) +endif + +pg_receivewal = executable('pg_receivewal', + pg_receivewal_sources, link_with: [pg_basebackup_common], dependencies: pg_basebackup_deps, kwargs: default_bin_args, ) bin_targets += pg_receivewal -pg_recvlogical = executable('pg_recvlogical', + +pg_recvlogical_sources = files( 'pg_recvlogical.c', +) + +if host_system == 'windows' + pg_recvlogical_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_recvlogical', + '--FILEDESC', 'pg_recvlogical - streaming WAL and backup receivers',]) +endif + +pg_recvlogical = executable('pg_recvlogical', + pg_recvlogical_sources, link_with: [pg_basebackup_common], dependencies: pg_basebackup_deps, kwargs: default_bin_args, diff --git a/src/bin/pg_checksums/meson.build b/src/bin/pg_checksums/meson.build index ee1f367bac3..d07ebc999b3 100644 --- a/src/bin/pg_checksums/meson.build +++ b/src/bin/pg_checksums/meson.build @@ -1,5 +1,15 @@ +pg_checksums_sources = files( + 'pg_checksums.c', +) + +if host_system == 'windows' + pg_checksums_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_checksums', + '--FILEDESC', 'pg_checksums - verify data checksums in an offline cluster',]) +endif + pg_checksums = executable('pg_checksums', - ['pg_checksums.c'], + pg_checksums_sources, include_directories: [timezone_inc], dependencies: [frontend_code], kwargs: default_bin_args, diff --git a/src/bin/pg_config/meson.build b/src/bin/pg_config/meson.build index 0ecbf2f9d28..4be2fdc84ae 100644 --- a/src/bin/pg_config/meson.build +++ b/src/bin/pg_config/meson.build @@ -1,5 +1,15 @@ +pg_config_sources = files( + 'pg_config.c', +) + +if host_system == 'windows' + pg_config_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_config', + '--FILEDESC', 'pg_config - report configuration information',]) +endif + pg_config = executable('pg_config', - ['pg_config.c'], + pg_config_sources, dependencies: [frontend_code], kwargs: default_bin_args, ) diff --git a/src/bin/pg_controldata/meson.build b/src/bin/pg_controldata/meson.build index 557e672beb7..7fc239dbe65 100644 --- a/src/bin/pg_controldata/meson.build +++ b/src/bin/pg_controldata/meson.build @@ -1,5 +1,15 @@ +pg_controldata_sources = files( + 'pg_controldata.c', +) + +if host_system == 'windows' + pg_controldata_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_controldata', + '--FILEDESC', 'pg_controldata - reads the data from pg_control',]) +endif + pg_controldata = executable('pg_controldata', - ['pg_controldata.c'], + pg_controldata_sources, dependencies: [frontend_code], kwargs: default_bin_args, ) diff --git a/src/bin/pg_ctl/meson.build b/src/bin/pg_ctl/meson.build index 6812e73e329..96f962fa762 100644 --- a/src/bin/pg_ctl/meson.build +++ b/src/bin/pg_ctl/meson.build @@ -1,5 +1,15 @@ +pg_ctl_sources = files( + 'pg_ctl.c', +) + +if host_system == 'windows' + pg_ctl_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_ctl', + '--FILEDESC', 'pg_ctl - starts/stops/restarts the PostgreSQL server',]) +endif + pg_ctl = executable('pg_ctl', - ['pg_ctl.c'], + pg_ctl_sources, dependencies: [frontend_code, libpq], kwargs: default_bin_args, ) diff --git a/src/bin/pg_dump/meson.build b/src/bin/pg_dump/meson.build index 785ec094dbd..3527a25c288 100644 --- a/src/bin/pg_dump/meson.build +++ b/src/bin/pg_dump/meson.build @@ -24,6 +24,12 @@ pg_dump_sources = files( 'pg_dump_sort.c', ) +if host_system == 'windows' + pg_dump_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_dump', + '--FILEDESC', 'pg_dump - backup one PostgreSQL database',]) +endif + pg_dump = executable('pg_dump', pg_dump_sources, link_with: [pg_dump_common], @@ -37,6 +43,12 @@ pg_dumpall_sources = files( 'pg_dumpall.c', ) +if host_system == 'windows' + pg_dumpall_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_dumpall', + '--FILEDESC', 'pg_dumpall - backup PostgreSQL databases']) +endif + pg_dumpall = executable('pg_dumpall', pg_dumpall_sources, link_with: [pg_dump_common], @@ -50,6 +62,12 @@ pg_restore_sources = files( 'pg_restore.c', ) +if host_system == 'windows' + pg_restore_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_restore', + '--FILEDESC', 'pg_restore - restore PostgreSQL databases']) +endif + pg_restore = executable('pg_restore', pg_restore_sources, link_with: [pg_dump_common], diff --git a/src/bin/pg_resetwal/meson.build b/src/bin/pg_resetwal/meson.build index 7c5de134ac0..d503db97b71 100644 --- a/src/bin/pg_resetwal/meson.build +++ b/src/bin/pg_resetwal/meson.build @@ -1,5 +1,15 @@ +pg_resetwal_sources = files( + 'pg_resetwal.c', +) + +if host_system == 'windows' + pg_resetwal_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_resetwal', + '--FILEDESC', 'pg_resetwal - reset PostgreSQL WAL log']) +endif + pg_resetwal = executable('pg_resetwal', - files('pg_resetwal.c'), + pg_resetwal_sources, dependencies: [frontend_code], kwargs: default_bin_args, ) diff --git a/src/bin/pg_rewind/meson.build b/src/bin/pg_rewind/meson.build index d8ec9e482d5..6cd970909a2 100644 --- a/src/bin/pg_rewind/meson.build +++ b/src/bin/pg_rewind/meson.build @@ -11,6 +11,12 @@ pg_rewind_sources = files( pg_rewind_sources += xlogreader_sources +if host_system == 'windows' + pg_rewind_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_rewind', + '--FILEDESC', 'pg_rewind - synchronize a data directory with another one forked from']) +endif + pg_rewind = executable('pg_rewind', pg_rewind_sources, dependencies: [frontend_code, libpq, lz4, zstd], diff --git a/src/bin/pg_test_fsync/meson.build b/src/bin/pg_test_fsync/meson.build index 2c01831e11f..31d288ba6da 100644 --- a/src/bin/pg_test_fsync/meson.build +++ b/src/bin/pg_test_fsync/meson.build @@ -1,4 +1,12 @@ -test_fsync_sources = files('pg_test_fsync.c') +test_fsync_sources = files( + 'pg_test_fsync.c', +) + +if host_system == 'windows' + test_fsync_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_test_fsync', + '--FILEDESC', 'pg_test_fsync - test various disk sync methods']) +endif pg_test_fsync = executable('pg_test_fsync', test_fsync_sources, diff --git a/src/bin/pg_test_timing/meson.build b/src/bin/pg_test_timing/meson.build index 0a3068f1657..0aed03ea32f 100644 --- a/src/bin/pg_test_timing/meson.build +++ b/src/bin/pg_test_timing/meson.build @@ -1,5 +1,15 @@ +pg_test_timing_sources = files( + 'pg_test_timing.c' +) + +if host_system == 'windows' + pg_test_timing_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_test_timing', + '--FILEDESC', 'pg_test_timing - test timing overhead']) +endif + pg_test_timing = executable('pg_test_timing', - ['pg_test_timing.c'], + pg_test_timing_sources, dependencies: [frontend_code], kwargs: default_bin_args, ) diff --git a/src/bin/pg_upgrade/meson.build b/src/bin/pg_upgrade/meson.build index 02f030e0ccf..a7b927a45c7 100644 --- a/src/bin/pg_upgrade/meson.build +++ b/src/bin/pg_upgrade/meson.build @@ -16,6 +16,12 @@ pg_upgrade_sources = files( 'version.c', ) +if host_system == 'windows' + pg_upgrade_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_upgrade', + '--FILEDESC', 'pg_upgrade - an in-place binary upgrade utility']) +endif + pg_upgrade = executable('pg_upgrade', pg_upgrade_sources, dependencies: [frontend_code, libpq], diff --git a/src/bin/pg_verifybackup/meson.build b/src/bin/pg_verifybackup/meson.build index 4c3b2bb5f97..b934a408443 100644 --- a/src/bin/pg_verifybackup/meson.build +++ b/src/bin/pg_verifybackup/meson.build @@ -3,6 +3,12 @@ pg_verifybackup_sources = files( 'pg_verifybackup.c' ) +if host_system == 'windows' + pg_verifybackup_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_verifybackup', + '--FILEDESC', 'pg_verifybackup - verify a backup against using a backup manifest']) +endif + pg_verifybackup = executable('pg_verifybackup', pg_verifybackup_sources, dependencies: [frontend_code, libpq], diff --git a/src/bin/pg_waldump/meson.build b/src/bin/pg_waldump/meson.build index 95872652ffd..9605976870d 100644 --- a/src/bin/pg_waldump/meson.build +++ b/src/bin/pg_waldump/meson.build @@ -8,6 +8,12 @@ pg_waldump_sources += rmgr_desc_sources pg_waldump_sources += xlogreader_sources pg_waldump_sources += files('../../backend/access/transam/xlogstats.c') +if host_system == 'windows' + pg_waldump_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_waldump', + '--FILEDESC', 'pg_waldump - decode and display WA']) +endif + pg_waldump = executable('pg_waldump', pg_waldump_sources, dependencies: [frontend_code, lz4, zstd], diff --git a/src/bin/pgbench/meson.build b/src/bin/pgbench/meson.build index 6564e54029c..a32eb51fe07 100644 --- a/src/bin/pgbench/meson.build +++ b/src/bin/pgbench/meson.build @@ -17,6 +17,12 @@ exprparse = custom_target('exprparse', generated_sources += exprparse.to_list() pgbench_sources += exprparse +if host_system == 'windows' + pgbench_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pgbench', + '--FILEDESC', 'pgbench - a simple program for running benchmark tests']) +endif + pgbench = executable('pgbench', pgbench_sources, dependencies: [frontend_code, libpq, thread_dep], diff --git a/src/bin/pgevent/meson.build b/src/bin/pgevent/meson.build index 7a468879fd2..2e9aea4b0e1 100644 --- a/src/bin/pgevent/meson.build +++ b/src/bin/pgevent/meson.build @@ -6,6 +6,12 @@ pgevent_sources = files( 'pgevent.c', ) +pgevent_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pgevent', + '--FILEDESC', 'Eventlog message formatter',]) + +pgevent_sources += windows.compile_resources('pgmsgevent.rc') + # FIXME: copied from Mkvcbuild.pm, but I don't think that's the right approach pgevent_link_args = [] if cc.get_id() == 'msvc' diff --git a/src/bin/psql/meson.build b/src/bin/psql/meson.build index 410788e4767..1264fc19fbd 100644 --- a/src/bin/psql/meson.build +++ b/src/bin/psql/meson.build @@ -36,6 +36,12 @@ sql_help = custom_target('psql_help', generated_sources += sql_help.to_list() psql_sources += sql_help +if host_system == 'windows' + psql_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'psql', + '--FILEDESC', 'psql - the PostgreSQL interactive terminal',]) +endif + psql = executable('psql', psql_sources, include_directories: include_directories('.'), diff --git a/src/bin/scripts/meson.build b/src/bin/scripts/meson.build index eaf250c7f73..837562c24e5 100644 --- a/src/bin/scripts/meson.build +++ b/src/bin/scripts/meson.build @@ -16,8 +16,16 @@ binaries = [ ] foreach binary : binaries + binary_sources = files('@[email protected]'.format(binary)) + + if host_system == 'windows' + binary_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', binary, + '--FILEDESC', '@0@ - PostgreSQL utility'.format(binary),]) + endif + binary = executable(binary, - files(binary + '.c'), + binary_sources, link_with: [scripts_common], dependencies: [frontend_code, libpq], kwargs: default_bin_args, diff --git a/src/interfaces/libpq/meson.build b/src/interfaces/libpq/meson.build index 34cb58c2617..533b2e6f773 100644 --- a/src/interfaces/libpq/meson.build +++ b/src/interfaces/libpq/meson.build @@ -16,9 +16,13 @@ libpq_sources = files( 'libpq-events.c', 'pqexpbuffer.c', ) +libpq_so_sources = [] # for shared lib, in addition to the above if host_system == 'windows' libpq_sources += files('pthread-win32.c', 'win32.c') + libpq_so_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'libpq', + '--FILEDESC', 'PostgreSQL Access Library',]) endif if ssl.found() @@ -59,7 +63,7 @@ libpq_st = static_library('libpq', ) libpq_so = shared_library('libpq', - libpq_sources, + libpq_sources + libpq_so_sources, include_directories: [libpq_inc, postgres_inc], c_args: libpq_c_args, version: '5.' + pg_version_major.to_string(), diff --git a/src/interfaces/libpq/test/meson.build b/src/interfaces/libpq/test/meson.build index 16f94c1ed8b..017f729d435 100644 --- a/src/interfaces/libpq/test/meson.build +++ b/src/interfaces/libpq/test/meson.build @@ -1,13 +1,34 @@ +libpq_uri_regress_sources = files( + 'libpq_uri_regress.c', +) + +if host_system == 'windows' + libpq_uri_regress_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'libpq_uri_regress', + '--FILEDESC', 'libpq test program',]) +endif + executable('libpq_uri_regress', - files('libpq_uri_regress.c'), + libpq_uri_regress_sources, dependencies: [frontend_code, libpq], kwargs: default_bin_args + { 'install': false, } ) + +libpq_testclient_sources = files( + 'libpq_testclient.c', +) + +if host_system == 'windows' + libpq_testclient_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'libpq_testclient', + '--FILEDESC', 'libpq test program',]) +endif + executable('libpq_testclient', - files('libpq_testclient.c'), + libpq_testclient_sources, dependencies: [frontend_code, libpq], kwargs: default_bin_args + { 'install': false, diff --git a/src/pl/plperl/meson.build b/src/pl/plperl/meson.build index 73b733dd50b..535660085dd 100644 --- a/src/pl/plperl/meson.build +++ b/src/pl/plperl/meson.build @@ -36,6 +36,13 @@ foreach n : ['SPI', 'Util'] endforeach plperl_inc = include_directories('.') + +if host_system == 'windows' + plperl_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'plperl', + '--FILEDESC', 'PL/Perl - procedural language',]) +endif + plperl = shared_module('plperl', plperl_sources, include_directories: [plperl_inc, postgres_inc], diff --git a/src/pl/plpgsql/src/meson.build b/src/pl/plpgsql/src/meson.build index dd499fdd151..c46c0a1da2a 100644 --- a/src/pl/plpgsql/src/meson.build +++ b/src/pl/plpgsql/src/meson.build @@ -40,6 +40,12 @@ pl_unreserved = custom_target('pl_unreserved_kwlist', generated_sources += pl_unreserved plpgsql_sources += pl_unreserved +if host_system == 'windows' + plpgsql_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'plpgsql', + '--FILEDESC', 'PL/pgSQL - procedural language',]) +endif + plpgsql = shared_module('plpgsql', plpgsql_sources, include_directories: include_directories('.'), diff --git a/src/pl/plpython/meson.build b/src/pl/plpython/meson.build index 366b3b171ac..40888386b5f 100644 --- a/src/pl/plpython/meson.build +++ b/src/pl/plpython/meson.build @@ -28,6 +28,12 @@ plpython_sources += custom_target('spiexceptions.h', # FIXME: need to duplicate import library ugliness? plpython_inc = include_directories('.') +if host_system == 'windows' + plpython_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'plpython3', + '--FILEDESC', 'PL/Python - procedural language',]) +endif + plpython = shared_module('plpython3', plpython_sources, include_directories: [plpython_inc, postgres_inc], diff --git a/src/pl/tcl/meson.build b/src/pl/tcl/meson.build index 9b6addd7fd5..f09bb14c950 100644 --- a/src/pl/tcl/meson.build +++ b/src/pl/tcl/meson.build @@ -14,6 +14,12 @@ pltcl_sources += custom_target('pltclerrcodes.h', command: [perl, gen_pltclerrcodes, '@INPUT@'] ) +if host_system == 'windows' + pltcl_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pltcl', + '--FILEDESC', 'PL/Tcl - procedural language',]) +endif + pltcl = shared_module('pltcl', pltcl_sources, include_directories: [include_directories('.'), postgres_inc], diff --git a/contrib/adminpack/meson.build b/contrib/adminpack/meson.build index fc2368d02cf..7efec0efbc0 100644 --- a/contrib/adminpack/meson.build +++ b/contrib/adminpack/meson.build @@ -1,5 +1,15 @@ +adminpack_sources = files( + 'adminpack.c', +) + +if host_system == 'windows' + adminpack_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'adminpack', + '--FILEDESC', 'adminpack - support functions for pgAdmin',]) +endif + adminpack = shared_module('adminpack', - ['adminpack.c'], + adminpack_sources, kwargs: contrib_mod_args, ) contrib_targets += adminpack diff --git a/contrib/amcheck/meson.build b/contrib/amcheck/meson.build index 1db3d20349e..fa807b72d98 100644 --- a/contrib/amcheck/meson.build +++ b/contrib/amcheck/meson.build @@ -1,7 +1,16 @@ -amcheck = shared_module('amcheck', [ - 'verify_heapam.c', - 'verify_nbtree.c', - ], +amcheck_sources = files( + 'verify_heapam.c', + 'verify_nbtree.c', +) + +if host_system == 'windows' + amcheck_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'amcheck', + '--FILEDESC', 'amcheck - function for verifying relation integrity',]) +endif + +amcheck = shared_module('amcheck', + amcheck_sources, kwargs: contrib_mod_args, ) contrib_targets += amcheck diff --git a/contrib/auth_delay/meson.build b/contrib/auth_delay/meson.build index d2e01968f54..c4ffb0663bc 100644 --- a/contrib/auth_delay/meson.build +++ b/contrib/auth_delay/meson.build @@ -1,5 +1,15 @@ +auth_delay_sources = files( + 'auth_delay.c', +) + +if host_system == 'windows' + auth_delay_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'auth_delay', + '--FILEDESC', 'auth_delay - delay authentication failure reports',]) +endif + autoinc = shared_module('auth_delay', - ['auth_delay.c'], + auth_delay_sources, kwargs: contrib_mod_args, ) contrib_targets += autoinc diff --git a/contrib/auto_explain/meson.build b/contrib/auto_explain/meson.build index 249a8376faa..76f86617850 100644 --- a/contrib/auto_explain/meson.build +++ b/contrib/auto_explain/meson.build @@ -1,5 +1,15 @@ +auto_explain_sources = files( + 'auto_explain.c', +) + +if host_system == 'windows' + auto_explain_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'auto_explain', + '--FILEDESC', 'auto_explain - logging facility for execution plans',]) +endif + auto_explain = shared_module('auto_explain', - files('auto_explain.c'), + auto_explain_sources, kwargs: contrib_mod_args, ) contrib_targets += auto_explain diff --git a/contrib/basebackup_to_shell/meson.build b/contrib/basebackup_to_shell/meson.build index 9f0517f1701..3a389de9175 100644 --- a/contrib/basebackup_to_shell/meson.build +++ b/contrib/basebackup_to_shell/meson.build @@ -2,6 +2,12 @@ basebackup_to_shell_sources = files( 'basebackup_to_shell.c', ) +if host_system == 'windows' + basebackup_to_shell_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'basebackup_to_shell', + '--FILEDESC', 'basebackup_to_shell - target basebackup to shell command',]) +endif + basebackup_to_shell = shared_module('basebackup_to_shell', basebackup_to_shell_sources, kwargs: contrib_mod_args, diff --git a/contrib/basic_archive/meson.build b/contrib/basic_archive/meson.build index b67cbef60bd..c30dcfa5d41 100644 --- a/contrib/basic_archive/meson.build +++ b/contrib/basic_archive/meson.build @@ -2,6 +2,12 @@ basic_archive_sources = files( 'basic_archive.c', ) +if host_system == 'windows' + basic_archive_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'basic_archive', + '--FILEDESC', 'basic_archive - basic archive module',]) +endif + basic_archive = shared_module('basic_archive', basic_archive_sources, kwargs: contrib_mod_args, diff --git a/contrib/bloom/meson.build b/contrib/bloom/meson.build index 1fe7632bdbe..16f3b83e4d2 100644 --- a/contrib/bloom/meson.build +++ b/contrib/bloom/meson.build @@ -7,6 +7,12 @@ bloom_sources = files( 'blvalidate.c', ) +if host_system == 'windows' + bloom_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'bloom', + '--FILEDESC', 'bloom access method - signature file based index',]) +endif + bloom = shared_module('bloom', bloom_sources, kwargs: contrib_mod_args, diff --git a/contrib/bool_plperl/meson.build b/contrib/bool_plperl/meson.build index c20b667d75f..a68daab0dcd 100644 --- a/contrib/bool_plperl/meson.build +++ b/contrib/bool_plperl/meson.build @@ -6,6 +6,12 @@ bool_plperl_sources = files( 'bool_plperl.c', ) +if host_system == 'windows' + bool_plperl_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'bool_plperl', + '--FILEDESC', 'bool_plperl - bool transform for plperl',]) +endif + bool_plperl = shared_module('bool_plperl', bool_plperl_sources, include_directories: [plperl_inc, include_directories('.')], diff --git a/contrib/btree_gin/meson.build b/contrib/btree_gin/meson.build index 15d6d31a6ee..fd4c76767a7 100644 --- a/contrib/btree_gin/meson.build +++ b/contrib/btree_gin/meson.build @@ -1,5 +1,15 @@ +btree_gin_sources = files( + 'btree_gin.c', +) + +if host_system == 'windows' + btree_gin_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'btree_gin', + '--FILEDESC', 'btree_gin - B-tree equivalent GIN operator classes',]) +endif + btree_gin = shared_module('btree_gin', - files('btree_gin.c'), + btree_gin_sources, kwargs: contrib_mod_args, ) contrib_targets += btree_gin diff --git a/contrib/btree_gist/meson.build b/contrib/btree_gist/meson.build index c0a8d238540..e98c91dacc8 100644 --- a/contrib/btree_gist/meson.build +++ b/contrib/btree_gist/meson.build @@ -25,6 +25,12 @@ btree_gist_sources = files( 'btree_uuid.c', ) +if host_system == 'windows' + btree_gist_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'btree_gist', + '--FILEDESC', 'btree_gist - B-tree equivalent GiST operator classes',]) +endif + btree_gist = shared_module('btree_gist', btree_gist_sources, kwargs: contrib_mod_args, diff --git a/contrib/citext/meson.build b/contrib/citext/meson.build index ca60eded80b..26a101a19bd 100644 --- a/contrib/citext/meson.build +++ b/contrib/citext/meson.build @@ -2,6 +2,12 @@ citext_sources = files( 'citext.c', ) +if host_system == 'windows' + citext_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'citext', + '--FILEDESC', 'citext - case-insensitive character string data type',]) +endif + citext = shared_module('citext', citext_sources, kwargs: contrib_mod_args, diff --git a/contrib/cube/meson.build b/contrib/cube/meson.build index 72342b0c82c..041acf95a90 100644 --- a/contrib/cube/meson.build +++ b/contrib/cube/meson.build @@ -17,6 +17,12 @@ cube_parse = custom_target('cubeparse', generated_sources += cube_parse.to_list() cube_sources += cube_parse +if host_system == 'windows' + cube_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'cube', + '--FILEDESC', 'cube - multidimensional cube data type',]) +endif + cube = shared_module('cube', cube_sources, include_directories: include_directories('.'), diff --git a/contrib/dblink/meson.build b/contrib/dblink/meson.build index d35f7b5d49e..66eeb03b736 100644 --- a/contrib/dblink/meson.build +++ b/contrib/dblink/meson.build @@ -2,6 +2,12 @@ dblink_sources = files( 'dblink.c', ) +if host_system == 'windows' + dblink_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'dblink', + '--FILEDESC', 'dblink - connect to other PostgreSQL databases',]) +endif + dblink = shared_module('dblink', dblink_sources, kwargs: contrib_mod_args + { diff --git a/contrib/dict_int/meson.build b/contrib/dict_int/meson.build index f00e8085619..6fff921adda 100644 --- a/contrib/dict_int/meson.build +++ b/contrib/dict_int/meson.build @@ -1,5 +1,15 @@ +dict_int_sources = files( + 'dict_int.c', +) + +if host_system == 'windows' + dict_int_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'dict_int', + '--FILEDESC', 'dict_int - add-on dictionary template for full-text search',]) +endif + dict_int = shared_module('dict_int', - files('dict_int.c'), + dict_int_sources, kwargs: contrib_mod_args, ) contrib_targets += dict_int diff --git a/contrib/dict_xsyn/meson.build b/contrib/dict_xsyn/meson.build index be53f55bb79..fabd505a7df 100644 --- a/contrib/dict_xsyn/meson.build +++ b/contrib/dict_xsyn/meson.build @@ -1,5 +1,15 @@ +dict_xsyn_sources = files( + 'dict_xsyn.c', +) + +if host_system == 'windows' + dict_xsyn_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'dict_xsyn', + '--FILEDESC', 'dict_xsyn - add-on dictionary template for full-text search',]) +endif + dict_xsyn = shared_module('dict_xsyn', - files('dict_xsyn.c'), + dict_xsyn_sources, kwargs: contrib_mod_args, ) contrib_targets += dict_xsyn diff --git a/contrib/earthdistance/meson.build b/contrib/earthdistance/meson.build index 807f5cb7de3..78dc29c3da3 100644 --- a/contrib/earthdistance/meson.build +++ b/contrib/earthdistance/meson.build @@ -1,5 +1,15 @@ +earthdistance_sources = files( + 'earthdistance.c', +) + +if host_system == 'windows' + earthdistance_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'earthdistance', + '--FILEDESC', 'earthdistance - calculate distances on the surface of the Earth',]) +endif + earthdistance = shared_module('earthdistance', - files('earthdistance.c'), + earthdistance_sources, kwargs: contrib_mod_args, ) contrib_targets += earthdistance diff --git a/contrib/file_fdw/meson.build b/contrib/file_fdw/meson.build index f13efb6e38e..c4071faa669 100644 --- a/contrib/file_fdw/meson.build +++ b/contrib/file_fdw/meson.build @@ -1,5 +1,15 @@ +file_fdw_sources = files( + 'file_fdw.c', +) + +if host_system == 'windows' + file_fdw_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'file_fdw', + '--FILEDESC', 'file_fdw - foreign data wrapper for files',]) +endif + file_fdw = shared_module('file_fdw', - files('file_fdw.c'), + file_fdw_sources, kwargs: contrib_mod_args, ) contrib_targets += file_fdw diff --git a/contrib/fuzzystrmatch/meson.build b/contrib/fuzzystrmatch/meson.build index ec278a6211e..e6d06149cec 100644 --- a/contrib/fuzzystrmatch/meson.build +++ b/contrib/fuzzystrmatch/meson.build @@ -1,8 +1,16 @@ +fuzzystrmatch_sources = files( + 'fuzzystrmatch.c', + 'dmetaphone.c', +) + +if host_system == 'windows' + fuzzystrmatch_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'fuzzystrmatch', + '--FILEDESC', 'fuzzystrmatch - similarities and distance between strings',]) +endif + fuzzystrmatch = shared_module('fuzzystrmatch', - files( - 'fuzzystrmatch.c', - 'dmetaphone.c' - ), + fuzzystrmatch_sources, kwargs: contrib_mod_args, ) contrib_targets += fuzzystrmatch diff --git a/contrib/hstore/meson.build b/contrib/hstore/meson.build index 07c59f40a97..2bb26bb772b 100644 --- a/contrib/hstore/meson.build +++ b/contrib/hstore/meson.build @@ -1,15 +1,23 @@ # .. so that includes of hstore/hstore.h work hstore_inc = include_directories('.', '../') +hstore_sources = files( + 'hstore_compat.c', + 'hstore_gin.c', + 'hstore_gist.c', + 'hstore_io.c', + 'hstore_op.c', + 'hstore_subs.c', +) + +if host_system == 'windows' + hstore_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'hstore', + '--FILEDESC', 'hstore - key/value pair data type',]) +endif + hstore = shared_module('hstore', - files( - 'hstore_compat.c', - 'hstore_gin.c', - 'hstore_gist.c', - 'hstore_io.c', - 'hstore_op.c', - 'hstore_subs.c', - ), + hstore_sources, kwargs: contrib_mod_args, ) contrib_targets += hstore diff --git a/contrib/hstore_plperl/meson.build b/contrib/hstore_plperl/meson.build index bbafa0221bd..a238fee6a26 100644 --- a/contrib/hstore_plperl/meson.build +++ b/contrib/hstore_plperl/meson.build @@ -6,6 +6,12 @@ hstore_plperl_sources = files( 'hstore_plperl.c', ) +if host_system == 'windows' + hstore_plperl_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'hstore_plperl', + '--FILEDESC', 'hstore_plperl - hstore transform for plperl',]) +endif + hstore_plperl = shared_module('hstore_plperl', hstore_plperl_sources, include_directories: [plperl_inc, hstore_inc], diff --git a/contrib/hstore_plpython/meson.build b/contrib/hstore_plpython/meson.build index 214b48519a9..6071aaeb4b3 100644 --- a/contrib/hstore_plpython/meson.build +++ b/contrib/hstore_plpython/meson.build @@ -6,6 +6,12 @@ hstore_plpython_sources = files( 'hstore_plpython.c', ) +if host_system == 'windows' + hstore_plpython_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'hstore_plpython3', + '--FILEDESC', 'hstore_plpython - hstore transform for plpython',]) +endif + hstore_plpython = shared_module('hstore_plpython3', hstore_plpython_sources, include_directories: [plpython_inc, hstore_inc, ], diff --git a/contrib/intarray/meson.build b/contrib/intarray/meson.build index 1655bcbb3fd..b7cf1ce0cad 100644 --- a/contrib/intarray/meson.build +++ b/contrib/intarray/meson.build @@ -8,6 +8,12 @@ intarray_sources = files( '_intbig_gist.c', ) +if host_system == 'windows' + intarray_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', '_int', + '--FILEDESC', 'intarray - functions and operators for arrays of integers',]) +endif + intarray = shared_module('_int', intarray_sources, kwargs: contrib_mod_args, diff --git a/contrib/isn/meson.build b/contrib/isn/meson.build index cc30bbeb55c..db68a718313 100644 --- a/contrib/isn/meson.build +++ b/contrib/isn/meson.build @@ -2,6 +2,12 @@ isn_sources = files( 'isn.c', ) +if host_system == 'windows' + isn_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'isn', + '--FILEDESC', 'isn - data types for international product numbering standards',]) +endif + isn = shared_module('isn', isn_sources, kwargs: contrib_mod_args, diff --git a/contrib/jsonb_plperl/meson.build b/contrib/jsonb_plperl/meson.build index 5c915d8ed94..071a7a98d2c 100644 --- a/contrib/jsonb_plperl/meson.build +++ b/contrib/jsonb_plperl/meson.build @@ -6,6 +6,12 @@ jsonb_plperl_sources = files( 'jsonb_plperl.c', ) +if host_system == 'windows' + jsonb_plperl_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'jsonb_plperl', + '--FILEDESC', 'jsonb_plperl - jsonb transform for plperl',]) +endif + jsonb_plperl = shared_module('jsonb_plperl', jsonb_plperl_sources, include_directories: [plperl_inc], diff --git a/contrib/jsonb_plpython/meson.build b/contrib/jsonb_plpython/meson.build index de8e1105c6a..84dc1161e8b 100644 --- a/contrib/jsonb_plpython/meson.build +++ b/contrib/jsonb_plpython/meson.build @@ -6,6 +6,12 @@ jsonb_plpython_sources = files( 'jsonb_plpython.c', ) +if host_system == 'windows' + jsonb_plpython_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'jsonb_plpython3', + '--FILEDESC', 'jsonb_plpython - jsonb transform for plpython',]) +endif + jsonb_plpython = shared_module('jsonb_plpython3', jsonb_plpython_sources, include_directories: [plpython_inc], diff --git a/contrib/lo/meson.build b/contrib/lo/meson.build index 9082d5713c7..61ae131f1cc 100644 --- a/contrib/lo/meson.build +++ b/contrib/lo/meson.build @@ -2,6 +2,12 @@ lo_sources = files( 'lo.c', ) +if host_system == 'windows' + lo_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'lo', + '--FILEDESC', 'lo - management for large objects',]) +endif + lo = shared_module('lo', lo_sources, kwargs: contrib_mod_args, diff --git a/contrib/ltree/meson.build b/contrib/ltree/meson.build index 9463fc2c5e5..421292cea9d 100644 --- a/contrib/ltree/meson.build +++ b/contrib/ltree/meson.build @@ -13,6 +13,12 @@ ltree_sources = files( # .. so that includes of ltree/ltree.h work ltree_inc = include_directories('.', '../') +if host_system == 'windows' + ltree_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'ltree', + '--FILEDESC', 'ltree - hierarchical label data type',]) +endif + ltree = shared_module('ltree', ltree_sources, kwargs: contrib_mod_args, diff --git a/contrib/ltree_plpython/meson.build b/contrib/ltree_plpython/meson.build index 429d75006aa..acf5e4a6fc8 100644 --- a/contrib/ltree_plpython/meson.build +++ b/contrib/ltree_plpython/meson.build @@ -6,6 +6,12 @@ ltree_plpython_sources = files( 'ltree_plpython.c', ) +if host_system == 'windows' + ltree_plpython_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'ltree_plpython3', + '--FILEDESC', 'ltree_plpython - ltree transform for plpython',]) +endif + ltree_plpython = shared_module('ltree_plpython3', ltree_plpython_sources, include_directories: [plpython_inc, ltree_inc], diff --git a/contrib/oid2name/meson.build b/contrib/oid2name/meson.build index 1dad5d8f6e7..1a248f19260 100644 --- a/contrib/oid2name/meson.build +++ b/contrib/oid2name/meson.build @@ -1,5 +1,15 @@ +oid2name_sources = files( + 'oid2name.c', +) + +if host_system == 'windows' + oid2name_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'oid2name', + '--FILEDESC', 'oid2name - examine the file structure',]) +endif + oid2name = executable('oid2name', - ['oid2name.c'], + oid2name_sources, dependencies: [frontend_code, libpq], kwargs: default_bin_args, ) diff --git a/contrib/old_snapshot/meson.build b/contrib/old_snapshot/meson.build index 8e7ee09a43a..77276c3715a 100644 --- a/contrib/old_snapshot/meson.build +++ b/contrib/old_snapshot/meson.build @@ -2,6 +2,12 @@ old_snapshot_sources = files( 'time_mapping.c', ) +if host_system == 'windows' + old_snapshot_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'old_snapshot', + '--FILEDESC', 'old_snapshot - utilities in support of old_snapshot_threshold',]) +endif + old_snapshot = shared_module('old_snapshot', old_snapshot_sources, kwargs: contrib_mod_args, diff --git a/contrib/pageinspect/meson.build b/contrib/pageinspect/meson.build index 4af8153e4fd..3ec50b9445e 100644 --- a/contrib/pageinspect/meson.build +++ b/contrib/pageinspect/meson.build @@ -9,6 +9,12 @@ pageinspect_sources = files( 'rawpage.c', ) +if host_system == 'windows' + pageinspect_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pageinspect', + '--FILEDESC', 'pageinspect - functions to inspect contents of database pages',]) +endif + pageinspect = shared_module('pageinspect', pageinspect_sources, kwargs: contrib_mod_args, diff --git a/contrib/passwordcheck/meson.build b/contrib/passwordcheck/meson.build index 7da47d02f1d..383d7df372a 100644 --- a/contrib/passwordcheck/meson.build +++ b/contrib/passwordcheck/meson.build @@ -9,6 +9,12 @@ passwordcheck_deps = [] # passwordcheck_c_args += ['-DUSE_CRACKLIB', '-DCRACKLIB_DICTPATH="/usr/lib/cracklib_dict"'] # passwordcheck_deps += [cc.find_library('crack')] +if host_system == 'windows' + passwordcheck_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'passwordcheck', + '--FILEDESC', 'passwordcheck - strengthen user password checks',]) +endif + passwordcheck = shared_module('passwordcheck', passwordcheck_sources, c_args: passwordcheck_c_args, diff --git a/contrib/pg_buffercache/meson.build b/contrib/pg_buffercache/meson.build index 2c69eae3ea2..dd9948e5f0b 100644 --- a/contrib/pg_buffercache/meson.build +++ b/contrib/pg_buffercache/meson.build @@ -1,7 +1,15 @@ +pg_buffercache_sources = files( + 'pg_buffercache_pages.c', +) + +if host_system == 'windows' + pg_buffercache_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_buffercache', + '--FILEDESC', 'pg_buffercache - monitoring of shared buffer cache in real-time',]) +endif + pg_buffercache = shared_module('pg_buffercache', - files( - 'pg_buffercache_pages.c', - ), + pg_buffercache_sources, kwargs: contrib_mod_args, ) contrib_targets += pg_buffercache diff --git a/contrib/pg_freespacemap/meson.build b/contrib/pg_freespacemap/meson.build index f795014d7ca..904b37b6e9b 100644 --- a/contrib/pg_freespacemap/meson.build +++ b/contrib/pg_freespacemap/meson.build @@ -1,7 +1,15 @@ +pg_freespacemap_sources = files( + 'pg_freespacemap.c', +) + +if host_system == 'windows' + pg_freespacemap_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_freespacemap', + '--FILEDESC', 'pg_freespacemap - monitoring of free space map',]) +endif + pg_freespacemap = shared_module('pg_freespacemap', - files( - 'pg_freespacemap.c', - ), + pg_freespacemap_sources, kwargs: contrib_mod_args, ) contrib_targets += pg_freespacemap diff --git a/contrib/pg_prewarm/meson.build b/contrib/pg_prewarm/meson.build index bdca9af4f27..b7140cee34b 100644 --- a/contrib/pg_prewarm/meson.build +++ b/contrib/pg_prewarm/meson.build @@ -1,8 +1,16 @@ +pg_prewarm_sources = files( + 'autoprewarm.c', + 'pg_prewarm.c', +) + +if host_system == 'windows' + pg_prewarm_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_prewarm', + '--FILEDESC', 'pg_prewarm - preload relation data into system buffer cache',]) +endif + pg_prewarm = shared_module('pg_prewarm', - files( - 'autoprewarm.c', - 'pg_prewarm.c', - ), + pg_prewarm_sources, kwargs: contrib_mod_args, ) contrib_targets += pg_prewarm diff --git a/contrib/pg_stat_statements/meson.build b/contrib/pg_stat_statements/meson.build index ac117d2fc1d..854df138e76 100644 --- a/contrib/pg_stat_statements/meson.build +++ b/contrib/pg_stat_statements/meson.build @@ -1,5 +1,15 @@ +pg_stat_statements_sources = files( + 'pg_stat_statements.c', +) + +if host_system == 'windows' + pg_stat_statements_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_stat_statements', + '--FILEDESC', 'pg_stat_statements - execution statistics of SQL statements',]) +endif + pg_stat_statements = shared_module('pg_stat_statements', - files('pg_stat_statements.c'), + pg_stat_statements_sources, kwargs: contrib_mod_args + { 'dependencies': contrib_mod_args['dependencies'], }, diff --git a/contrib/pg_surgery/meson.build b/contrib/pg_surgery/meson.build index ac71caa5276..7b5c5999f4b 100644 --- a/contrib/pg_surgery/meson.build +++ b/contrib/pg_surgery/meson.build @@ -1,7 +1,15 @@ +pg_surgery_sources = files( + 'heap_surgery.c', +) + +if host_system == 'windows' + pg_surgery_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_surgery', + '--FILEDESC', 'pg_surgery - perform surgery on a damaged relation',]) +endif + pg_surgery = shared_module('pg_surgery', - files( - 'heap_surgery.c', - ), + pg_surgery_sources, kwargs: contrib_mod_args, ) contrib_targets += pg_surgery diff --git a/contrib/pg_trgm/meson.build b/contrib/pg_trgm/meson.build index a90628d23c6..c8c7c07b308 100644 --- a/contrib/pg_trgm/meson.build +++ b/contrib/pg_trgm/meson.build @@ -1,10 +1,18 @@ +pg_trgm_sources = files( + 'trgm_gin.c', + 'trgm_gist.c', + 'trgm_op.c', + 'trgm_regexp.c', +) + +if host_system == 'windows' + pg_trgm_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_trgm', + '--FILEDESC', 'pg_trgm - trigram matching',]) +endif + pg_trgm = shared_module('pg_trgm', - files( - 'trgm_gin.c', - 'trgm_gist.c', - 'trgm_op.c', - 'trgm_regexp.c', - ), + pg_trgm_sources, kwargs: contrib_mod_args, ) contrib_targets += pg_trgm diff --git a/contrib/pg_visibility/meson.build b/contrib/pg_visibility/meson.build index 933dc99ac4d..263a0d08b82 100644 --- a/contrib/pg_visibility/meson.build +++ b/contrib/pg_visibility/meson.build @@ -1,7 +1,15 @@ +pg_visibility_sources = files( + 'pg_visibility.c', +) + +if host_system == 'windows' + pg_visibility_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_visibility', + '--FILEDESC', 'pg_visibility - page visibility information',]) +endif + pg_visibility = shared_module('pg_visibility', - files( - 'pg_visibility.c', - ), + pg_visibility_sources, kwargs: contrib_mod_args, ) contrib_targets += pg_visibility diff --git a/contrib/pg_walinspect/meson.build b/contrib/pg_walinspect/meson.build index d6b27877dd0..4314a3182a2 100644 --- a/contrib/pg_walinspect/meson.build +++ b/contrib/pg_walinspect/meson.build @@ -1,5 +1,11 @@ pg_walinspect_sources = files('pg_walinspect.c') +if host_system == 'windows' + pg_walinspect_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_walinspect', + '--FILEDESC', 'pg_walinspect - functions to inspect contents of PostgreSQL Write-Ahead Log',]) +endif + pg_walinspect = shared_module('pg_walinspect', pg_walinspect_sources, kwargs: contrib_mod_args + { diff --git a/contrib/pgcrypto/meson.build b/contrib/pgcrypto/meson.build index fe0851bf8e8..7fc7bbc7ca1 100644 --- a/contrib/pgcrypto/meson.build +++ b/contrib/pgcrypto/meson.build @@ -69,6 +69,12 @@ else pgcrypto_regress += 'pgp-zlib-DISABLED' endif +if host_system == 'windows' + pgcrypto_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pgcrypto', + '--FILEDESC', 'pgcrypto - cryptographic functions',]) +endif + pgcrypto = shared_module('pgcrypto', pgcrypto_sources, link_with: pgcrypto_link_with, diff --git a/contrib/pgrowlocks/meson.build b/contrib/pgrowlocks/meson.build index 1b41691a2a3..8092f0d4a64 100644 --- a/contrib/pgrowlocks/meson.build +++ b/contrib/pgrowlocks/meson.build @@ -1,7 +1,15 @@ +pgrowlocks_sources = files( + 'pgrowlocks.c', +) + +if host_system == 'windows' + pgrowlocks_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pgrowlocks', + '--FILEDESC', 'pgrowlocks - display row locking information',]) +endif + pgrowlocks = shared_module('pgrowlocks', - files( - 'pgrowlocks.c', - ), + pgrowlocks_sources, kwargs: contrib_mod_args, ) contrib_targets += pgrowlocks diff --git a/contrib/pgstattuple/meson.build b/contrib/pgstattuple/meson.build index 8e828692d5c..05e4cd46a5c 100644 --- a/contrib/pgstattuple/meson.build +++ b/contrib/pgstattuple/meson.build @@ -1,9 +1,17 @@ +pgstattuple_sources = files( + 'pgstatapprox.c', + 'pgstatindex.c', + 'pgstattuple.c', +) + +if host_system == 'windows' + pgstattuple_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pgstattuple', + '--FILEDESC', 'pgstattuple - tuple-level statistics',]) +endif + pgstattuple = shared_module('pgstattuple', - files( - 'pgstatapprox.c', - 'pgstatindex.c', - 'pgstattuple.c', - ), + pgstattuple_sources, kwargs: contrib_mod_args, ) contrib_targets += pgstattuple diff --git a/contrib/postgres_fdw/meson.build b/contrib/postgres_fdw/meson.build index 378885ec93b..d3746ff135c 100644 --- a/contrib/postgres_fdw/meson.build +++ b/contrib/postgres_fdw/meson.build @@ -6,6 +6,12 @@ postgres_fdw_sources = files( 'shippable.c', ) +if host_system == 'windows' + postgres_fdw_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'postgres_fdw', + '--FILEDESC', 'postgres_fdw - foreign data wrapper for PostgreSQL',]) +endif + postgres_fdw = shared_module('postgres_fdw', postgres_fdw_sources, kwargs: contrib_mod_args + { diff --git a/contrib/seg/meson.build b/contrib/seg/meson.build index e476eab2a77..c6fbb22999b 100644 --- a/contrib/seg/meson.build +++ b/contrib/seg/meson.build @@ -17,6 +17,12 @@ seg_parse = custom_target('segparse', generated_sources += seg_parse.to_list() seg_sources += seg_parse +if host_system == 'windows' + seg_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'seg', + '--FILEDESC', 'seg - line segment data type',]) +endif + seg = shared_module('seg', seg_sources, include_directories: include_directories('.'), diff --git a/contrib/sepgsql/meson.build b/contrib/sepgsql/meson.build index 60a95e17c2f..8bef239e3c2 100644 --- a/contrib/sepgsql/meson.build +++ b/contrib/sepgsql/meson.build @@ -14,6 +14,12 @@ sepgsql_sources = files( 'uavc.c', ) +if host_system == 'windows' + sepgsql_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'sepgsql', + '--FILEDESC', 'sepgsql - SELinux integration',]) +endif + sepgsql = shared_module('sepgsql', sepgsql_sources, kwargs: contrib_mod_args + { diff --git a/contrib/spi/meson.build b/contrib/spi/meson.build index 98008980ec2..e7d78189ef5 100644 --- a/contrib/spi/meson.build +++ b/contrib/spi/meson.build @@ -1,5 +1,15 @@ +autoinc_sources = files( + 'autoinc.c', +) + +if host_system == 'windows' + autoinc_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'autoinc', + '--FILEDESC', 'spi - examples of using SPI and triggers',]) +endif + autoinc = shared_module('autoinc', - ['autoinc.c'], + autoinc_sources, kwargs: contrib_mod_args, ) contrib_targets += autoinc @@ -9,8 +19,18 @@ install_data('autoinc.control', 'autoinc--1.0.sql', ) +insert_username_sources = files( + 'insert_username.c', +) + +if host_system == 'windows' + insert_username_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'insert_username', + '--FILEDESC', 'spi - examples of using SPI and triggers',]) +endif + insert_username = shared_module('insert_username', - ['insert_username.c'], + insert_username_sources, kwargs: contrib_mod_args, ) contrib_targets += insert_username @@ -22,8 +42,18 @@ install_data( ) +moddatetime_sources = files( + 'moddatetime.c', +) + +if host_system == 'windows' + moddatetime_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'moddatetime', + '--FILEDESC', 'spi - examples of using SPI and triggers',]) +endif + moddatetime = shared_module('moddatetime', - ['moddatetime.c'], + moddatetime_sources, kwargs: contrib_mod_args, ) contrib_targets += moddatetime @@ -38,8 +68,18 @@ install_data( # comment out if you want a quieter refint package for other uses refint_cflags = ['-DREFINT_VERBOSE'] +refint_sources = files( + 'refint.c', +) + +if host_system == 'windows' + refint_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'refint', + '--FILEDESC', 'spi - examples of using SPI and triggers',]) +endif + refint = shared_module('refint', - ['refint.c'], + refint_sources, c_args: refint_cflags, kwargs: contrib_mod_args, ) diff --git a/contrib/sslinfo/meson.build b/contrib/sslinfo/meson.build index 53f752a08ac..136983e783d 100644 --- a/contrib/sslinfo/meson.build +++ b/contrib/sslinfo/meson.build @@ -2,10 +2,18 @@ if not ssl.found() subdir_done() endif +sslinfo_sources = files( + 'sslinfo.c', +) + +if host_system == 'windows' + sslinfo_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'sslinfo', + '--FILEDESC', 'sslinfo - information about client SSL certificate',]) +endif + sslinfo = shared_module('sslinfo', - files( - 'sslinfo.c', - ), + sslinfo_sources, kwargs: contrib_mod_args + { 'dependencies': [ssl, contrib_mod_args['dependencies']], } diff --git a/contrib/tablefunc/meson.build b/contrib/tablefunc/meson.build index f4230096c0c..d2ddc8d3b39 100644 --- a/contrib/tablefunc/meson.build +++ b/contrib/tablefunc/meson.build @@ -1,7 +1,15 @@ +tablefunc_sources = files( + 'tablefunc.c', +) + +if host_system == 'windows' + tablefunc_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'tablefunc', + '--FILEDESC', 'tablefunc - various functions that return tables',]) +endif + tablefunc = shared_module('tablefunc', - files( - 'tablefunc.c', - ), + tablefunc_sources, kwargs: contrib_mod_args, ) contrib_targets += tablefunc diff --git a/contrib/tcn/meson.build b/contrib/tcn/meson.build index c3a025247d4..71261c3b0a2 100644 --- a/contrib/tcn/meson.build +++ b/contrib/tcn/meson.build @@ -1,7 +1,15 @@ +tcn_sources = files( + 'tcn.c', +) + +if host_system == 'windows' + tcn_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'tcn', + '--FILEDESC', 'tcn - trigger function notifying listeners',]) +endif + tcn = shared_module('tcn', - files( - 'tcn.c', - ), + tcn_sources, kwargs: contrib_mod_args, ) contrib_targets += tcn diff --git a/contrib/test_decoding/meson.build b/contrib/test_decoding/meson.build index dd7cb0101ad..6376103c689 100644 --- a/contrib/test_decoding/meson.build +++ b/contrib/test_decoding/meson.build @@ -2,6 +2,12 @@ test_decoding_sources = files( 'test_decoding.c', ) +if host_system == 'windows' + test_decoding_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'test_decoding', + '--FILEDESC', 'test_decoding - example of a logical decoding output plugin',]) +endif + test_decoding = shared_module('test_decoding', test_decoding_sources, kwargs: contrib_mod_args, diff --git a/contrib/tsm_system_rows/meson.build b/contrib/tsm_system_rows/meson.build index b9cd42115a8..380abb49883 100644 --- a/contrib/tsm_system_rows/meson.build +++ b/contrib/tsm_system_rows/meson.build @@ -1,7 +1,15 @@ +tsm_system_rows_sources = files( + 'tsm_system_rows.c', +) + +if host_system == 'windows' + tsm_system_rows_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'tsm_system_rows', + '--FILEDESC', 'tsm_system_rows - TABLESAMPLE method which accepts number of rows as a limit',]) +endif + tsm_system_rows = shared_module('tsm_system_rows', - files( - 'tsm_system_rows.c', - ), + tsm_system_rows_sources, kwargs: contrib_mod_args, ) contrib_targets += tsm_system_rows diff --git a/contrib/tsm_system_time/meson.build b/contrib/tsm_system_time/meson.build index 18015912ffb..e57a2702c60 100644 --- a/contrib/tsm_system_time/meson.build +++ b/contrib/tsm_system_time/meson.build @@ -1,7 +1,15 @@ +tsm_system_time_sources = files( + 'tsm_system_time.c', +) + +if host_system == 'windows' + tsm_system_time_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'tsm_system_time', + '--FILEDESC', 'tsm_system_time - TABLESAMPLE method which accepts time in milliseconds as a limit',]) +endif + tsm_system_time = shared_module('tsm_system_time', - files( - 'tsm_system_time.c', - ), + tsm_system_time_sources, kwargs: contrib_mod_args, ) contrib_targets += tsm_system_time diff --git a/contrib/unaccent/meson.build b/contrib/unaccent/meson.build index 872b76e3223..438035132f8 100644 --- a/contrib/unaccent/meson.build +++ b/contrib/unaccent/meson.build @@ -1,7 +1,15 @@ +unaccent_sources = files( + 'unaccent.c', +) + +if host_system == 'windows' + unaccent_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'unaccent', + '--FILEDESC', 'unaccent - text search dictionary that removes accents',]) +endif + unaccent = shared_module('unaccent', - files( - 'unaccent.c', - ), + unaccent_sources, kwargs: contrib_mod_args, ) contrib_targets += unaccent diff --git a/contrib/uuid-ossp/meson.build b/contrib/uuid-ossp/meson.build index da6d1d75c12..28730f398f0 100644 --- a/contrib/uuid-ossp/meson.build +++ b/contrib/uuid-ossp/meson.build @@ -2,10 +2,18 @@ if not uuid.found() subdir_done() endif +uuid_ossp_sources = files( + 'uuid-ossp.c', +) + +if host_system == 'windows' + uuid_ossp_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'uuid-ossp', + '--FILEDESC', 'uuid-ossp - UUID generation',]) +endif + uuid_ossp = shared_module('uuid-ossp', - files( - 'uuid-ossp.c', - ), + uuid_ossp_sources, kwargs: contrib_mod_args + { 'dependencies': [uuid, contrib_mod_args['dependencies']], }, diff --git a/contrib/vacuumlo/meson.build b/contrib/vacuumlo/meson.build index 7a632b87d1b..846de47dbd1 100644 --- a/contrib/vacuumlo/meson.build +++ b/contrib/vacuumlo/meson.build @@ -1,5 +1,15 @@ +vacuumlo_sources = files( + 'vacuumlo.c', +) + +if host_system == 'windows' + vacuumlo_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'vacuumlo', + '--FILEDESC', 'vacuumlo - removes orphaned large objects',]) +endif + vacuumlo = executable('vacuumlo', - ['vacuumlo.c'], + vacuumlo_sources, dependencies: [frontend_code, libpq], kwargs: default_bin_args, ) diff --git a/contrib/xml2/meson.build b/contrib/xml2/meson.build index 9c0b56f01f6..89b0d677516 100644 --- a/contrib/xml2/meson.build +++ b/contrib/xml2/meson.build @@ -2,11 +2,19 @@ if not libxml.found() subdir_done() endif +xml2_sources = files( + 'xpath.c', + 'xslt_proc.c', +) + +if host_system == 'windows' + xml2_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pgxml', + '--FILEDESC', 'xml2 - XPath querying and XSLT',]) +endif + xml2 = shared_module('pgxml', - files( - 'xpath.c', - 'xslt_proc.c', - ), + xml2_sources, kwargs: contrib_mod_args + { 'dependencies': [libxml, libxslt, contrib_mod_args['dependencies']], }, diff --git a/src/interfaces/ecpg/compatlib/meson.build b/src/interfaces/ecpg/compatlib/meson.build index b803000c708..4d6454381b5 100644 --- a/src/interfaces/ecpg/compatlib/meson.build +++ b/src/interfaces/ecpg/compatlib/meson.build @@ -7,6 +7,12 @@ ecpg_compat_inc = [include_directories('.'), ecpg_inc, libpq_inc] ecpg_compat_c_args = ['-DSO_MAJOR_VERSION=3'] export_file = custom_target('libecpg_compat.exports', kwargs: gen_export_kwargs) +if host_system == 'windows' + ecpg_compat_so_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'libecpg_compat', + '--FILEDESC', 'ECPG compat - compatibility library for ECPG',]) +endif + # see src/interfaces/libpq/meson.build ecpg_compat_st = static_library('libecpg_compat', ecpg_compat_sources, diff --git a/src/interfaces/ecpg/ecpglib/meson.build b/src/interfaces/ecpg/ecpglib/meson.build index 6fdf019149c..7e6e6fbf5c0 100644 --- a/src/interfaces/ecpg/ecpglib/meson.build +++ b/src/interfaces/ecpg/ecpglib/meson.build @@ -16,6 +16,12 @@ ecpglib_inc = [include_directories('.'), ecpg_inc] ecpglib_c_args = ['-DSO_MAJOR_VERSION=6'] export_file = custom_target('libecpg.exports', kwargs: gen_export_kwargs) +if host_system == 'windows' + ecpglib_so_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'libecpg', + '--FILEDESC', 'ECPG - embedded SQL in C',]) +endif + # see src/interfaces/libpq/meson.build ecpglib_st = static_library('libecpg', ecpglib_sources, diff --git a/src/interfaces/ecpg/pgtypeslib/meson.build b/src/interfaces/ecpg/pgtypeslib/meson.build index 8e5d235810a..530dd2c602d 100644 --- a/src/interfaces/ecpg/pgtypeslib/meson.build +++ b/src/interfaces/ecpg/pgtypeslib/meson.build @@ -12,6 +12,12 @@ export_file = custom_target('libpgtypes.exports', kwargs: gen_export_kwargs) ecpg_pgtypes_inc = [include_directories('.'), ecpg_inc] ecpg_pgtypes_c_args = ['-DSO_MAJOR_VERSION=3'] +if host_system == 'windows' + ecpg_pgtypes_so_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pgtypes', + '--FILEDESC', 'pgtypes - library for data type mapping',]) +endif + # see src/interfaces/libpq/meson.build ecpg_pgtypes_st = static_library('libpgtypes', ecpg_pgtypes_sources, diff --git a/src/interfaces/ecpg/preproc/meson.build b/src/interfaces/ecpg/preproc/meson.build index 1be49c8c27f..74876f039c9 100644 --- a/src/interfaces/ecpg/preproc/meson.build +++ b/src/interfaces/ecpg/preproc/meson.build @@ -93,6 +93,12 @@ ecpg_kwlist = custom_target('ecpg_kwlist_d.h', generated_sources += ecpg_kwlist ecpg_sources += ecpg_kwlist +if host_system == 'windows' + ecpg_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'ecpg', + '--FILEDESC', 'ecpg - embedded SQL precompiler for C',]) +endif + ecpg_exe = executable('ecpg', ecpg_sources, include_directories: ['.', ecpg_inc, postgres_inc, libpq_inc], diff --git a/src/interfaces/ecpg/test/meson.build b/src/interfaces/ecpg/test/meson.build index 8904aa7fd90..94b26d10314 100644 --- a/src/interfaces/ecpg/test/meson.build +++ b/src/interfaces/ecpg/test/meson.build @@ -7,6 +7,11 @@ pg_regress_ecpg_sources = pg_regress_c + files( 'pg_regress_ecpg.c', ) +if host_system == 'windows' + pg_regress_ecpg_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_regress_ecpg',]) +endif + pg_regress_ecpg = executable('pg_regress_ecpg', pg_regress_ecpg_sources, c_args: pg_regress_cflags, diff --git a/src/test/isolation/meson.build b/src/test/isolation/meson.build index c7656fd4609..ba27b8c1d44 100644 --- a/src/test/isolation/meson.build +++ b/src/test/isolation/meson.build @@ -23,6 +23,12 @@ spec_parser = custom_target('specparse', isolationtester_sources += spec_parser generated_sources += spec_parser.to_list() +if host_system == 'windows' + isolation_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_isolation_regress', + '--FILEDESC', 'pg_isolation_regress - multi-client test driver',]) +endif + pg_isolation_regress = executable('pg_isolation_regress', isolation_sources, c_args: pg_regress_cflags, @@ -34,6 +40,13 @@ pg_isolation_regress = executable('pg_isolation_regress', ) bin_targets += pg_isolation_regress + +if host_system == 'windows' + isolationtester_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'isolationtester', + '--FILEDESC', 'isolationtester - multi-client test driver',]) +endif + isolationtester = executable('isolationtester', isolationtester_sources, include_directories: include_directories('.'), diff --git a/src/test/modules/delay_execution/meson.build b/src/test/modules/delay_execution/meson.build index cf4bdaba637..a0c3ab6afe7 100644 --- a/src/test/modules/delay_execution/meson.build +++ b/src/test/modules/delay_execution/meson.build @@ -1,6 +1,17 @@ # FIXME: prevent install during main install, but not during test :/ + +delay_execution_sources = files( + 'delay_execution.c', +) + +if host_system == 'windows' + delay_execution_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'delay_execution', + '--FILEDESC', 'delay_execution - allow delay between parsing and execution',]) +endif + delay_execution = shared_module('delay_execution', - ['delay_execution.c'], + delay_execution_sources, kwargs: pg_mod_args, ) testprep_targets += delay_execution diff --git a/src/test/modules/dummy_index_am/meson.build b/src/test/modules/dummy_index_am/meson.build index 56ff5f48001..4ce82491135 100644 --- a/src/test/modules/dummy_index_am/meson.build +++ b/src/test/modules/dummy_index_am/meson.build @@ -1,6 +1,17 @@ # FIXME: prevent install during main install, but not during test :/ + +dummy_index_am_sources = files( + 'dummy_index_am.c', +) + +if host_system == 'windows' + dummy_index_am_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'dummy_index_am', + '--FILEDESC', 'dummy_index_am - index access method template',]) +endif + dummy_index_am = shared_module('dummy_index_am', - ['dummy_index_am.c'], + dummy_index_am_sources, kwargs: pg_mod_args, ) testprep_targets += dummy_index_am diff --git a/src/test/modules/dummy_seclabel/meson.build b/src/test/modules/dummy_seclabel/meson.build index 21b7cf8f353..81b626e496c 100644 --- a/src/test/modules/dummy_seclabel/meson.build +++ b/src/test/modules/dummy_seclabel/meson.build @@ -1,6 +1,17 @@ # FIXME: prevent install during main install, but not during test :/ + +dummy_seclabel_sources = files( + 'dummy_seclabel.c', +) + +if host_system == 'windows' + dummy_seclabel_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'dummy_seclabel', + '--FILEDESC', 'dummy_seclabel - regression testing of the SECURITY LABEL statement',]) +endif + dummy_seclabel = shared_module('dummy_seclabel', - ['dummy_seclabel.c'], + dummy_seclabel_sources, kwargs: pg_mod_args, ) testprep_targets += dummy_seclabel diff --git a/src/test/modules/libpq_pipeline/meson.build b/src/test/modules/libpq_pipeline/meson.build index 8384b6e3b2a..de0e2d15626 100644 --- a/src/test/modules/libpq_pipeline/meson.build +++ b/src/test/modules/libpq_pipeline/meson.build @@ -1,7 +1,15 @@ +libpq_pipeline_sources = files( + 'libpq_pipeline.c', +) + +if host_system == 'windows' + libpq_pipeline_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'libpq_pipeline', + '--FILEDESC', 'libpq_pipeline - test program for pipeline execution',]) +endif + libpq_pipeline = executable('libpq_pipeline', - files( - 'libpq_pipeline.c', - ), + libpq_pipeline_sources, dependencies: [frontend_code, libpq], kwargs: default_bin_args + { 'install': false, diff --git a/src/test/modules/plsample/meson.build b/src/test/modules/plsample/meson.build index 45de3f1990d..e1ea2c7a16f 100644 --- a/src/test/modules/plsample/meson.build +++ b/src/test/modules/plsample/meson.build @@ -1,6 +1,17 @@ # FIXME: prevent install during main install, but not during test :/ + +plsample_sources = files( + 'plsample.c', +) + +if host_system == 'windows' + plsample_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'plsample', + '--FILEDESC', 'PL/Sample - template for procedural language',]) +endif + plsample = shared_module('plsample', - ['plsample.c'], + plsample_sources, kwargs: pg_mod_args, ) testprep_targets += plsample diff --git a/src/test/modules/spgist_name_ops/meson.build b/src/test/modules/spgist_name_ops/meson.build index 857fc7e140e..445296fee0b 100644 --- a/src/test/modules/spgist_name_ops/meson.build +++ b/src/test/modules/spgist_name_ops/meson.build @@ -1,6 +1,17 @@ # FIXME: prevent install during main install, but not during test :/ + +spgist_name_ops_sources = files( + 'spgist_name_ops.c', +) + +if host_system == 'windows' + spgist_name_ops_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'spgist_name_ops', + '--FILEDESC', 'spgist_name_ops - test opclass for SP-GiST',]) +endif + spgist_name_ops = shared_module('spgist_name_ops', - ['spgist_name_ops.c'], + spgist_name_ops_sources, kwargs: pg_mod_args, ) testprep_targets += spgist_name_ops diff --git a/src/test/modules/ssl_passphrase_callback/meson.build b/src/test/modules/ssl_passphrase_callback/meson.build index a57bd0693a3..a9eb4c564da 100644 --- a/src/test/modules/ssl_passphrase_callback/meson.build +++ b/src/test/modules/ssl_passphrase_callback/meson.build @@ -3,8 +3,19 @@ if not ssl.found() endif # FIXME: prevent install during main install, but not during test :/ + +ssl_passphrase_callback_sources = files( + 'ssl_passphrase_func.c', +) + +if host_system == 'windows' + ssl_passphrase_callback_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'ssl_passphrase_func', + '--FILEDESC', 'callback function to provide a passphrase',]) +endif + ssl_passphrase_callback = shared_module('ssl_passphrase_func', - ['ssl_passphrase_func.c'], + ssl_passphrase_callback_sources, kwargs: pg_mod_args + { 'dependencies': [ssl, pg_mod_args['dependencies']], }, diff --git a/src/test/modules/test_bloomfilter/meson.build b/src/test/modules/test_bloomfilter/meson.build index 945eb5a70c4..3cf6b05754f 100644 --- a/src/test/modules/test_bloomfilter/meson.build +++ b/src/test/modules/test_bloomfilter/meson.build @@ -1,6 +1,17 @@ # FIXME: prevent install during main install, but not during test :/ + +test_bloomfilter_sources = files( + 'test_bloomfilter.c', +) + +if host_system == 'windows' + test_bloomfilter_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'test_bloomfilter', + '--FILEDESC', 'test_bloomfilter - test code for Bloom filter library',]) +endif + test_bloomfilter = shared_module('test_bloomfilter', - ['test_bloomfilter.c'], + test_bloomfilter_sources, kwargs: pg_mod_args, ) testprep_targets += test_bloomfilter diff --git a/src/test/modules/test_ddl_deparse/meson.build b/src/test/modules/test_ddl_deparse/meson.build index 81ad5adc526..54d44f9b2b4 100644 --- a/src/test/modules/test_ddl_deparse/meson.build +++ b/src/test/modules/test_ddl_deparse/meson.build @@ -1,6 +1,17 @@ # FIXME: prevent install during main install, but not during test :/ + +test_ddl_deparse_sources = files( + 'test_ddl_deparse.c', +) + +if host_system == 'windows' + test_ddl_deparse_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'test_ddl_deparse', + '--FILEDESC', 'test_ddl_deparse - regression testing for DDL deparsing',]) +endif + test_ddl_deparse = shared_module('test_ddl_deparse', - ['test_ddl_deparse.c'], + test_ddl_deparse_sources, kwargs: pg_mod_args, ) testprep_targets += test_ddl_deparse diff --git a/src/test/modules/test_ginpostinglist/meson.build b/src/test/modules/test_ginpostinglist/meson.build index abf0a3b0430..b3b49c56122 100644 --- a/src/test/modules/test_ginpostinglist/meson.build +++ b/src/test/modules/test_ginpostinglist/meson.build @@ -1,6 +1,17 @@ # FIXME: prevent install during main install, but not during test :/ + +test_ginpostinglist_sources = files( + 'test_ginpostinglist.c', +) + +if host_system == 'windows' + test_ginpostinglist_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'test_ginpostinglist', + '--FILEDESC', 'test_ginpostinglist - test code for src/backend/access/gin//ginpostinglist.c',]) +endif + test_ginpostinglist = shared_module('test_ginpostinglist', - ['test_ginpostinglist.c'], + test_ginpostinglist_sources, kwargs: pg_mod_args, ) testprep_targets += test_ginpostinglist diff --git a/src/test/modules/test_integerset/meson.build b/src/test/modules/test_integerset/meson.build index c32c469c69a..4bd75af4b5e 100644 --- a/src/test/modules/test_integerset/meson.build +++ b/src/test/modules/test_integerset/meson.build @@ -1,6 +1,17 @@ # FIXME: prevent install during main install, but not during test :/ + +test_integerset_sources = files( + 'test_integerset.c', +) + +if host_system == 'windows' + test_integerset_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'test_integerset', + '--FILEDESC', 'test_integerset - test code for src/backend/lib/integerset.c',]) +endif + test_integerset = shared_module('test_integerset', - ['test_integerset.c'], + test_integerset_sources, kwargs: pg_mod_args, ) testprep_targets += test_integerset diff --git a/src/test/modules/test_lfind/meson.build b/src/test/modules/test_lfind/meson.build index a388de1156a..c5405b8f878 100644 --- a/src/test/modules/test_lfind/meson.build +++ b/src/test/modules/test_lfind/meson.build @@ -1,6 +1,17 @@ # FIXME: prevent install during main install, but not during test :/ + +test_lfind_sources = files( + 'test_lfind.c', +) + +if host_system == 'windows' + test_lfind_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'test_lfind', + '--FILEDESC', 'test_lfind - test code for optimized linear search functions',]) +endif + test_lfind = shared_module('test_lfind', - ['test_lfind.c'], + test_lfind_sources, kwargs: pg_mod_args, ) testprep_targets += test_lfind diff --git a/src/test/modules/test_oat_hooks/meson.build b/src/test/modules/test_oat_hooks/meson.build index 5faf0459777..8802bbbac55 100644 --- a/src/test/modules/test_oat_hooks/meson.build +++ b/src/test/modules/test_oat_hooks/meson.build @@ -1,6 +1,17 @@ # FIXME: prevent install during main install, but not during test :/ + +test_oat_hooks_sources = files( + 'test_oat_hooks.c', +) + +if host_system == 'windows' + test_oat_hooks_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'test_oat_hooks', + '--FILEDESC', 'test_oat_hooks - example use of object access hooks',]) +endif + test_oat_hooks = shared_module('test_oat_hooks', - ['test_oat_hooks.c'], + test_oat_hooks_sources, kwargs: pg_mod_args, ) testprep_targets += test_oat_hooks diff --git a/src/test/modules/test_parser/meson.build b/src/test/modules/test_parser/meson.build index b59960f615e..1c17113347f 100644 --- a/src/test/modules/test_parser/meson.build +++ b/src/test/modules/test_parser/meson.build @@ -1,6 +1,17 @@ # FIXME: prevent install during main install, but not during test :/ + +test_parser_sources = files( + 'test_parser.c', +) + +if host_system == 'windows' + test_parser_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'test_parser', + '--FILEDESC', 'test_parser - example of a custom parser for full-text search',]) +endif + test_parser = shared_module('test_parser', - ['test_parser.c'], + test_parser_sources, kwargs: pg_mod_args, ) testprep_targets += test_parser diff --git a/src/test/modules/test_predtest/meson.build b/src/test/modules/test_predtest/meson.build index 1cfa84b3609..9a5be43c9c0 100644 --- a/src/test/modules/test_predtest/meson.build +++ b/src/test/modules/test_predtest/meson.build @@ -1,6 +1,17 @@ # FIXME: prevent install during main install, but not during test :/ + +test_predtest_sources = files( + 'test_predtest.c', +) + +if host_system == 'windows' + test_predtest_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'test_predtest', + '--FILEDESC', 'test_predtest - test code for optimizer/util/predtest.c',]) +endif + test_predtest = shared_module('test_predtest', - ['test_predtest.c'], + test_predtest_sources, kwargs: pg_mod_args, ) testprep_targets += test_predtest diff --git a/src/test/modules/test_rbtree/meson.build b/src/test/modules/test_rbtree/meson.build index 34cbc3e1624..f067e08d321 100644 --- a/src/test/modules/test_rbtree/meson.build +++ b/src/test/modules/test_rbtree/meson.build @@ -1,6 +1,17 @@ # FIXME: prevent install during main install, but not during test :/ + +test_rbtree_sources = files( + 'test_rbtree.c', +) + +if host_system == 'windows' + test_rbtree_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'test_rbtree', + '--FILEDESC', 'test_rbtree - test code for red-black tree library',]) +endif + test_rbtree = shared_module('test_rbtree', - ['test_rbtree.c'], + test_rbtree_sources, kwargs: pg_mod_args, ) testprep_targets += test_rbtree diff --git a/src/test/modules/test_regex/meson.build b/src/test/modules/test_regex/meson.build index 867a64e57c3..cfb938d9f1e 100644 --- a/src/test/modules/test_regex/meson.build +++ b/src/test/modules/test_regex/meson.build @@ -1,6 +1,17 @@ # FIXME: prevent install during main install, but not during test :/ + +test_regex_sources = files( + 'test_regex.c', +) + +if host_system == 'windows' + test_regex_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'test_regex', + '--FILEDESC', 'test_regex - test code for backend/regex/',]) +endif + test_regex = shared_module('test_regex', - ['test_regex.c'], + test_regex_sources, kwargs: pg_mod_args, ) testprep_targets += test_regex diff --git a/src/test/modules/test_rls_hooks/meson.build b/src/test/modules/test_rls_hooks/meson.build index 80d8adda332..3fb273b2934 100644 --- a/src/test/modules/test_rls_hooks/meson.build +++ b/src/test/modules/test_rls_hooks/meson.build @@ -1,6 +1,17 @@ # FIXME: prevent install during main install, but not during test :/ + +test_rls_hooks_sources = files( + 'test_rls_hooks.c', +) + +if host_system == 'windows' + test_rls_hooks_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'test_rls_hooks', + '--FILEDESC', 'test_rls_hooks - example use of RLS hooks',]) +endif + test_rls_hooks = shared_module('test_rls_hooks', - ['test_rls_hooks.c'], + test_rls_hooks_sources, kwargs: pg_mod_args, ) testprep_targets += test_rls_hooks diff --git a/src/test/modules/test_shm_mq/meson.build b/src/test/modules/test_shm_mq/meson.build index b663543d616..16c8fdb57f4 100644 --- a/src/test/modules/test_shm_mq/meson.build +++ b/src/test/modules/test_shm_mq/meson.build @@ -1,10 +1,19 @@ # FIXME: prevent install during main install, but not during test :/ + +test_shm_mq_sources = files( + 'setup.c', + 'test.c', + 'worker.c', +) + +if host_system == 'windows' + test_shm_mq_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'test_shm_mq', + '--FILEDESC', 'test_shm_mq - example use of shared memory message queue',]) +endif + test_shm_mq = shared_module('test_shm_mq', - files( - 'setup.c', - 'test.c', - 'worker.c', - ), + test_shm_mq_sources, kwargs: pg_mod_args, ) testprep_targets += test_shm_mq diff --git a/src/test/modules/worker_spi/meson.build b/src/test/modules/worker_spi/meson.build index 32acad883b2..a4a158c75b9 100644 --- a/src/test/modules/worker_spi/meson.build +++ b/src/test/modules/worker_spi/meson.build @@ -1,8 +1,17 @@ # FIXME: prevent install during main install, but not during test :/ + +test_worker_spi_sources = files( + 'worker_spi.c', +) + +if host_system == 'windows' + test_worker_spi_sources += rc_lib_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'worker_spi', + '--FILEDESC', 'worker_spi - background worker example',]) +endif + test_worker_spi = shared_module('worker_spi', - files( - 'worker_spi.c', - ), + test_worker_spi_sources, kwargs: pg_mod_args, ) testprep_targets += test_worker_spi diff --git a/src/test/regress/meson.build b/src/test/regress/meson.build index 03de591b0c7..3dcfc11278f 100644 --- a/src/test/regress/meson.build +++ b/src/test/regress/meson.build @@ -17,6 +17,12 @@ host_tuple = '@0@-@1@-@2@'.format(host_cpu, host_system, host_tuple_cc) pg_regress_cflags = ['-DHOST_TUPLE="@0@"'.format(host_tuple), '-DSHELLPROG="/bin/sh"'] +if host_system == 'windows' + regress_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'pg_regress', + '--FILEDESC', 'pg_regress - test driver',]) +endif + pg_regress = executable('pg_regress', regress_sources, c_args: pg_regress_cflags, diff --git a/meson.build b/meson.build index c709643fe5e..25a6fa941cc 100644 --- a/meson.build +++ b/meson.build @@ -2564,6 +2564,65 @@ gen_export_kwargs = { +### +### windows resources related stuff +### + +if host_system == 'windows' + pg_ico = meson.source_root() / 'src' / 'port' / 'win32.ico' + win32ver_rc = files('src/port/win32ver.rc') + rcgen = find_program('src/tools/rcgen', native: true) + + rcgen_base_args = [ + '--srcdir', '@SOURCE_DIR@', + '--builddir', meson.build_root(), + '--rcout', '@OUTPUT0@', + '--out', '@OUTPUT1@', + '--input', '@INPUT@', + '@EXTRA_ARGS@', + ] + + if cc.get_argument_syntax() == 'msvc' + rc = find_program('rc', required: true) + rcgen_base_args += ['--rc', rc.path()] + rcgen_outputs = ['@[email protected]', '@[email protected]'] + else + windres = find_program('windres', required: true) + rcgen_base_args += ['--windres', windres.path()] + rcgen_outputs = ['@[email protected]', '@[email protected]'] + endif + + # msbuild backend doesn't support this atm + if meson.backend() == 'ninja' + rcgen_base_args += ['--depfile', '@DEPFILE@'] + endif + + rcgen_bin_args = rcgen_base_args + [ + '--VFT_TYPE', 'VFT_APP', + '--FILEENDING', 'exe', + '--ICO', pg_ico + ] + + rcgen_lib_args = rcgen_base_args + [ + '--VFT_TYPE', 'VFT_DLL', + '--FILEENDING', 'dll', + ] + + rc_bin_gen = generator(rcgen, + depfile: '@[email protected]', + arguments: rcgen_bin_args, + output: rcgen_outputs, + ) + + rc_lib_gen = generator(rcgen, + depfile: '@[email protected]', + arguments: rcgen_lib_args, + output: rcgen_outputs, + ) +endif + + + # headers that the whole build tree depends on generated_headers = [] # headers that the backend build depends on diff --git a/src/timezone/meson.build b/src/timezone/meson.build index 16f082ecfa8..9e0934c000b 100644 --- a/src/timezone/meson.build +++ b/src/timezone/meson.build @@ -28,6 +28,12 @@ if get_option('system_tzdata') == '' if meson.is_cross_build() zic = find_program(get_option('ZIC'), native: true, required: true) else + if host_system == 'windows' + zic_sources += rc_bin_gen.process(win32ver_rc, extra_args: [ + '--NAME', 'zic', + '--FILEDESC', 'zic - time zone compiler',]) + endif + zic = executable('zic', zic_sources, dependencies: [frontend_code], kwargs: default_bin_args + {'install': false} diff --git a/src/tools/rcgen b/src/tools/rcgen new file mode 100755 index 00000000000..0c84772163c --- /dev/null +++ b/src/tools/rcgen @@ -0,0 +1,105 @@ +#!/usr/bin/env python3 + +# Helper for building resource files when building for windows. Always +# generates a .rc from the input .rc file. When building with msvc we +# additionally generate a .res file with 'rc', when building with gcc, we use +# windres to directly generate a .o. Additionally we generate basic +# dependencies if depfile is specified. + +import argparse +import os +import subprocess +import sys + +parser = argparse.ArgumentParser(description='generate PostgreSQL rc file') + +parser.add_argument('--srcdir', type=os.path.abspath, + required=True) +parser.add_argument('--builddir', type=os.path.abspath, + required=True) + +binaries = parser.add_argument_group('binaries') +binaries.add_argument('--windres', type=os.path.abspath) +binaries.add_argument('--rc', type=os.path.abspath) + +inout = parser.add_argument_group('inout') +inout.add_argument('--depfile', type=argparse.FileType('w')) +inout.add_argument('--input', type=argparse.FileType('r'), + required=True) +inout.add_argument('--rcout', type=argparse.FileType('w'), + required=True) +inout.add_argument('--out', type=str, + required=True) + +replacements = parser.add_argument_group('replacements') +replacements.add_argument('--FILEDESC', type=str) +replacements.add_argument('--NAME', type=str, required=True) +replacements.add_argument('--VFT_TYPE', type=str, required=True) +replacements.add_argument('--FILEENDING', type=str, required=True) +replacements.add_argument('--ICO', type=str) + +args = parser.parse_args() + +# determine replacement strings + +internal_name = '"{0}"'.format(args.NAME) +original_name = '"{0}.{1}"'.format(args.NAME, args.FILEENDING) + +# if no description is passed in, generate one based on the name +if args.FILEDESC: + filedesc = args.FILEDESC +elif args.NAME: + if args.VFT_TYPE == 'VFT_DLL': + filedesc = 'PostgreSQL {0} library'.format(args.NAME) + else: + filedesc = 'PostgreSQL {0} binary'.format(args.NAME) +filedesc = '"{0}"'.format(filedesc) + + +if args.ICO: + ico = 'IDI_ICON ICON "{0}"'.format(args.ICO) + if args.depfile: + args.depfile.write("{0} : {1}\n".format(args.rcout.name, args.ICO)) +else: + ico = '' + + +data = args.input.read() + +data = data.replace('VFT_APP', args.VFT_TYPE) +data = data.replace('_INTERNAL_NAME_', internal_name) +data = data.replace('_ORIGINAL_NAME_', original_name) +data = data.replace('FILEDESC', filedesc) +data = data.replace("_ICO_", ico) + +args.rcout.write(data) +args.rcout.close() + +if args.windres: + cmd = [ + args.windres, + '-I{0}/src/include/'.format(args.builddir), + '-I{0}/src/include/'.format(args.srcdir), + '-o', args.out, '-i', args.rcout.name, + ] +elif args.rc: + cmd = [ + args.rc, '/nologo', + '-I{0}/src/include/'.format(args.builddir), + '-I{0}/src/include/'.format(args.srcdir), + '/fo', args.out, args.rcout.name, + ] +else: + sys.exit('either --windres or --rc needs to be specified') + +sp = subprocess.run(cmd) +if sp.returncode != 0: + sys.exit(sp.returncode) + +# It'd be nicer if we could generate correct dependencies here, but 'rc' +# doesn't support doing so. It's unlikely we'll ever need more, so... +if args.depfile: + args.depfile.write("{0} : {1}\n".format( + args.rcout.name, args.input.name)) + args.depfile.write("{0} : {1}/{2}\n".format( + args.out, args.builddir, 'src/include/pg_config.h')) -- 2.37.3.542.gdd3f6c4cae --bu2u4tjq2bvmz2x5-- ^ permalink raw reply [nested|flat] 6+ messages in thread
* [PATCH v8 06/10] bufmgr: Change BufferDesc.state to be a 64bit atomic @ 2025-12-18 23:28 Andres Freund <[email protected]> 0 siblings, 0 replies; 6+ messages in thread From: Andres Freund @ 2025-12-18 23:28 UTC (permalink / raw) This is motivated by wanting to merge buffer content locks into BufferDesc.state in a future commit, rather than having a separate lwlock (see commit c75ebc657ff more details). As this change is rather mechanical, it seems to make sense to split it out into a separate commit, for easier review. Reviewed-by: Melanie Plageman <[email protected]> Discussion: https://postgr.es/m/fvfmkr5kk4nyex56ejgxj3uzi63isfxovp2biecb4bspbjrze7@az2pljabhnff --- src/include/storage/buf_internals.h | 88 +++++---- src/include/storage/procnumber.h | 14 +- src/backend/storage/buffer/buf_init.c | 2 +- src/backend/storage/buffer/bufmgr.c | 170 +++++++++--------- src/backend/storage/buffer/freelist.c | 24 +-- src/backend/storage/buffer/localbuf.c | 72 ++++---- contrib/pg_buffercache/pg_buffercache_pages.c | 8 +- src/test/modules/test_aio/test_aio.c | 12 +- 8 files changed, 205 insertions(+), 185 deletions(-) diff --git a/src/include/storage/buf_internals.h b/src/include/storage/buf_internals.h index 5400c56a965..28519ad2813 100644 --- a/src/include/storage/buf_internals.h +++ b/src/include/storage/buf_internals.h @@ -30,7 +30,7 @@ #include "utils/resowner.h" /* - * Buffer state is a single 32-bit variable where following data is combined. + * Buffer state is a single 64-bit variable where following data is combined. * * - 18 bits refcount * - 4 bits usage count @@ -39,6 +39,9 @@ * Combining these values allows to perform some operations without locking * the buffer header, by modifying them together with a CAS loop. * + * NB: A future commit will use a significant portion of the remaining bits to + * implement buffer locking as part of the state variable. + * * The definition of buffer state components is below. */ #define BUF_REFCOUNT_BITS 18 @@ -49,15 +52,21 @@ StaticAssertDecl(BUF_REFCOUNT_BITS + BUF_USAGECOUNT_BITS + BUF_FLAG_BITS == 32, "parts of buffer state space need to equal 32"); #define BUF_REFCOUNT_ONE 1 -#define BUF_REFCOUNT_MASK ((1U << BUF_REFCOUNT_BITS) - 1) -#define BUF_USAGECOUNT_MASK (((1U << BUF_USAGECOUNT_BITS) - 1) << (BUF_REFCOUNT_BITS)) -#define BUF_USAGECOUNT_ONE (1U << BUF_REFCOUNT_BITS) +#define BUF_REFCOUNT_MASK \ + ((UINT64CONST(1) << BUF_REFCOUNT_BITS) - 1) +#define BUF_USAGECOUNT_MASK \ + (((UINT64CONST(1) << BUF_USAGECOUNT_BITS) - 1) << (BUF_REFCOUNT_BITS)) +#define BUF_USAGECOUNT_ONE \ + (UINT64CONST(1) << BUF_REFCOUNT_BITS) #define BUF_USAGECOUNT_SHIFT BUF_REFCOUNT_BITS -#define BUF_FLAG_MASK (((1U << BUF_FLAG_BITS) - 1) << (BUF_REFCOUNT_BITS + BUF_USAGECOUNT_BITS)) +#define BUF_FLAG_MASK \ + (((UINT64CONST(1) << BUF_FLAG_BITS) - 1) << (BUF_REFCOUNT_BITS + BUF_USAGECOUNT_BITS)) /* Get refcount and usagecount from buffer state */ -#define BUF_STATE_GET_REFCOUNT(state) ((state) & BUF_REFCOUNT_MASK) -#define BUF_STATE_GET_USAGECOUNT(state) (((state) & BUF_USAGECOUNT_MASK) >> BUF_USAGECOUNT_SHIFT) +#define BUF_STATE_GET_REFCOUNT(state) \ + ((uint32)((state) & BUF_REFCOUNT_MASK)) +#define BUF_STATE_GET_USAGECOUNT(state) \ + ((uint32)(((state) & BUF_USAGECOUNT_MASK) >> BUF_USAGECOUNT_SHIFT)) /* * Flags for buffer descriptors @@ -65,17 +74,28 @@ StaticAssertDecl(BUF_REFCOUNT_BITS + BUF_USAGECOUNT_BITS + BUF_FLAG_BITS == 32, * Note: BM_TAG_VALID essentially means that there is a buffer hashtable * entry associated with the buffer's tag. */ -#define BM_LOCKED (1U << 22) /* buffer header is locked */ -#define BM_DIRTY (1U << 23) /* data needs writing */ -#define BM_VALID (1U << 24) /* data is valid */ -#define BM_TAG_VALID (1U << 25) /* tag is assigned */ -#define BM_IO_IN_PROGRESS (1U << 26) /* read or write in progress */ -#define BM_IO_ERROR (1U << 27) /* previous I/O failed */ -#define BM_JUST_DIRTIED (1U << 28) /* dirtied since write started */ -#define BM_PIN_COUNT_WAITER (1U << 29) /* have waiter for sole pin */ -#define BM_CHECKPOINT_NEEDED (1U << 30) /* must write for checkpoint */ -#define BM_PERMANENT (1U << 31) /* permanent buffer (not unlogged, - * or init fork) */ + +/* buffer header is locked */ +#define BM_LOCKED (UINT64CONST(1) << 22) +/* data needs writing */ +#define BM_DIRTY (UINT64CONST(1) << 23) +/* data is valid */ +#define BM_VALID (UINT64CONST(1) << 24) +/* tag is assigned */ +#define BM_TAG_VALID (UINT64CONST(1) << 25) +/* read or write in progress */ +#define BM_IO_IN_PROGRESS (UINT64CONST(1) << 26) +/* previous I/O failed */ +#define BM_IO_ERROR (UINT64CONST(1) << 27) +/* dirtied since write started */ +#define BM_JUST_DIRTIED (UINT64CONST(1) << 28) +/* have waiter for sole pin */ +#define BM_PIN_COUNT_WAITER (UINT64CONST(1) << 29) +/* must write for checkpoint */ +#define BM_CHECKPOINT_NEEDED (UINT64CONST(1) << 30) +/* permanent buffer (not unlogged, or init fork) */ +#define BM_PERMANENT (UINT64CONST(1) << 31) + /* * The maximum allowed value of usage_count represents a tradeoff between * accuracy and speed of the clock-sweep buffer management algorithm. A @@ -86,7 +106,7 @@ StaticAssertDecl(BUF_REFCOUNT_BITS + BUF_USAGECOUNT_BITS + BUF_FLAG_BITS == 32, */ #define BM_MAX_USAGE_COUNT 5 -StaticAssertDecl(BM_MAX_USAGE_COUNT < (1 << BUF_USAGECOUNT_BITS), +StaticAssertDecl(BM_MAX_USAGE_COUNT < (UINT64CONST(1) << BUF_USAGECOUNT_BITS), "BM_MAX_USAGE_COUNT doesn't fit in BUF_USAGECOUNT_BITS bits"); StaticAssertDecl(MAX_BACKENDS_BITS <= BUF_REFCOUNT_BITS, "MAX_BACKENDS_BITS needs to be <= BUF_REFCOUNT_BITS"); @@ -251,8 +271,8 @@ BufMappingPartitionLockByIndex(uint32 index) * We use this same struct for local buffer headers, but the locks are not * used and not all of the flag bits are useful either. To avoid unnecessary * overhead, manipulations of the state field should be done without actual - * atomic operations (i.e. only pg_atomic_read_u32() and - * pg_atomic_unlocked_write_u32()). + * atomic operations (i.e. only pg_atomic_read_u64() and + * pg_atomic_unlocked_write_u64()). * * Be careful to avoid increasing the size of the struct when adding or * reordering members. Keeping it below 64 bytes (the most common CPU @@ -280,7 +300,7 @@ typedef struct BufferDesc * State of the buffer, containing flags, refcount and usagecount. See * BUF_* and BM_* defines at the top of this file. */ - pg_atomic_uint32 state; + pg_atomic_uint64 state; /* * Backend of pin-count waiter. The buffer header spinlock needs to be @@ -386,7 +406,7 @@ BufferDescriptorGetContentLock(const BufferDesc *bdesc) * Functions for acquiring/releasing a shared buffer header's spinlock. Do * not apply these to local buffers! */ -extern uint32 LockBufHdr(BufferDesc *desc); +extern uint64 LockBufHdr(BufferDesc *desc); /* * Unlock the buffer header. @@ -397,9 +417,9 @@ extern uint32 LockBufHdr(BufferDesc *desc); static inline void UnlockBufHdr(BufferDesc *desc) { - Assert(pg_atomic_read_u32(&desc->state) & BM_LOCKED); + Assert(pg_atomic_read_u64(&desc->state) & BM_LOCKED); - pg_atomic_fetch_sub_u32(&desc->state, BM_LOCKED); + pg_atomic_fetch_sub_u64(&desc->state, BM_LOCKED); } /* @@ -410,14 +430,14 @@ UnlockBufHdr(BufferDesc *desc) * Note that this approach would not work for usagecount, since we need to cap * the usagecount at BM_MAX_USAGE_COUNT. */ -static inline uint32 -UnlockBufHdrExt(BufferDesc *desc, uint32 old_buf_state, - uint32 set_bits, uint32 unset_bits, +static inline uint64 +UnlockBufHdrExt(BufferDesc *desc, uint64 old_buf_state, + uint64 set_bits, uint64 unset_bits, int refcount_change) { for (;;) { - uint32 buf_state = old_buf_state; + uint64 buf_state = old_buf_state; Assert(buf_state & BM_LOCKED); @@ -428,7 +448,7 @@ UnlockBufHdrExt(BufferDesc *desc, uint32 old_buf_state, if (refcount_change != 0) buf_state += BUF_REFCOUNT_ONE * refcount_change; - if (pg_atomic_compare_exchange_u32(&desc->state, &old_buf_state, + if (pg_atomic_compare_exchange_u64(&desc->state, &old_buf_state, buf_state)) { return old_buf_state; @@ -436,7 +456,7 @@ UnlockBufHdrExt(BufferDesc *desc, uint32 old_buf_state, } } -extern uint32 WaitBufHdrUnlocked(BufferDesc *buf); +extern uint64 WaitBufHdrUnlocked(BufferDesc *buf); /* in bufmgr.c */ @@ -496,14 +516,14 @@ extern void TrackNewBufferPin(Buffer buf); /* solely to make it easier to write tests */ extern bool StartBufferIO(BufferDesc *buf, bool forInput, bool nowait); -extern void TerminateBufferIO(BufferDesc *buf, bool clear_dirty, uint32 set_flag_bits, +extern void TerminateBufferIO(BufferDesc *buf, bool clear_dirty, uint64 set_flag_bits, bool forget_owner, bool release_aio); /* freelist.c */ extern IOContext IOContextForStrategy(BufferAccessStrategy strategy); extern BufferDesc *StrategyGetBuffer(BufferAccessStrategy strategy, - uint32 *buf_state, bool *from_ring); + uint64 *buf_state, bool *from_ring); extern bool StrategyRejectBuffer(BufferAccessStrategy strategy, BufferDesc *buf, bool from_ring); @@ -539,7 +559,7 @@ extern BlockNumber ExtendBufferedRelLocal(BufferManagerRelation bmr, uint32 *extended_by); extern void MarkLocalBufferDirty(Buffer buffer); extern void TerminateLocalBufferIO(BufferDesc *bufHdr, bool clear_dirty, - uint32 set_flag_bits, bool release_aio); + uint64 set_flag_bits, bool release_aio); extern bool StartLocalBufferIO(BufferDesc *bufHdr, bool forInput, bool nowait); extern void FlushLocalBuffer(BufferDesc *bufHdr, SMgrRelation reln); extern void InvalidateLocalBuffer(BufferDesc *bufHdr, bool check_unreferenced); diff --git a/src/include/storage/procnumber.h b/src/include/storage/procnumber.h index 2ddaaf0c646..6baac7c77f1 100644 --- a/src/include/storage/procnumber.h +++ b/src/include/storage/procnumber.h @@ -27,13 +27,13 @@ typedef int ProcNumber; /* * Note: MAX_BACKENDS_BITS is 18 as that is the space available for buffer - * refcounts in buf_internals.h. This limitation could be lifted by using a - * 64bit state; but it's unlikely to be worthwhile as 2^18-1 backends exceed - * currently realistic configurations. Even if that limitation were removed, - * we still could not a) exceed 2^23-1 because inval.c stores the ProcNumber - * as a 3-byte signed integer, b) INT_MAX/4 because some places compute - * 4*MaxBackends without any overflow check. We check that the configured - * number of backends does not exceed MAX_BACKENDS in InitializeMaxBackends(). + * refcounts in buf_internals.h. This limitation could be lifted, but it's + * unlikely to be worthwhile as 2^18-1 backends exceed currently realistic + * configurations. Even if that limitation were removed, we still could not a) + * exceed 2^23-1 because inval.c stores the ProcNumber as a 3-byte signed + * integer, b) INT_MAX/4 because some places compute 4*MaxBackends without any + * overflow check. We check that the configured number of backends does not + * exceed MAX_BACKENDS in InitializeMaxBackends(). */ #define MAX_BACKENDS_BITS 18 #define MAX_BACKENDS ((1U << MAX_BACKENDS_BITS)-1) diff --git a/src/backend/storage/buffer/buf_init.c b/src/backend/storage/buffer/buf_init.c index 6fd3a6bbac5..25f71191ec3 100644 --- a/src/backend/storage/buffer/buf_init.c +++ b/src/backend/storage/buffer/buf_init.c @@ -121,7 +121,7 @@ BufferManagerShmemInit(void) ClearBufferTag(&buf->tag); - pg_atomic_init_u32(&buf->state, 0); + pg_atomic_init_u64(&buf->state, 0); buf->wait_backend_pgprocno = INVALID_PROC_NUMBER; buf->buf_id = i; diff --git a/src/backend/storage/buffer/bufmgr.c b/src/backend/storage/buffer/bufmgr.c index eb55102b0d7..03d99d294d5 100644 --- a/src/backend/storage/buffer/bufmgr.c +++ b/src/backend/storage/buffer/bufmgr.c @@ -780,7 +780,7 @@ ReadRecentBuffer(RelFileLocator rlocator, ForkNumber forkNum, BlockNumber blockN { BufferDesc *bufHdr; BufferTag tag; - uint32 buf_state; + uint64 buf_state; Assert(BufferIsValid(recent_buffer)); @@ -793,7 +793,7 @@ ReadRecentBuffer(RelFileLocator rlocator, ForkNumber forkNum, BlockNumber blockN int b = -recent_buffer - 1; bufHdr = GetLocalBufferDescriptor(b); - buf_state = pg_atomic_read_u32(&bufHdr->state); + buf_state = pg_atomic_read_u64(&bufHdr->state); /* Is it still valid and holding the right tag? */ if ((buf_state & BM_VALID) && BufferTagsEqual(&tag, &bufHdr->tag)) @@ -1386,8 +1386,8 @@ StartReadBuffersImpl(ReadBuffersOperation *operation, bufHdr = GetLocalBufferDescriptor(-buffers[i] - 1); else bufHdr = GetBufferDescriptor(buffers[i] - 1); - Assert(pg_atomic_read_u32(&bufHdr->state) & BM_TAG_VALID); - found = pg_atomic_read_u32(&bufHdr->state) & BM_VALID; + Assert(pg_atomic_read_u64(&bufHdr->state) & BM_TAG_VALID); + found = pg_atomic_read_u64(&bufHdr->state) & BM_VALID; } else { @@ -1613,10 +1613,10 @@ CheckReadBuffersOperation(ReadBuffersOperation *operation, bool is_complete) GetBufferDescriptor(buffer - 1); Assert(BufferGetBlockNumber(buffer) == operation->blocknum + i); - Assert(pg_atomic_read_u32(&buf_hdr->state) & BM_TAG_VALID); + Assert(pg_atomic_read_u64(&buf_hdr->state) & BM_TAG_VALID); if (i < operation->nblocks_done) - Assert(pg_atomic_read_u32(&buf_hdr->state) & BM_VALID); + Assert(pg_atomic_read_u64(&buf_hdr->state) & BM_VALID); } #endif } @@ -2083,8 +2083,8 @@ BufferAlloc(SMgrRelation smgr, char relpersistence, ForkNumber forkNum, int existing_buf_id; Buffer victim_buffer; BufferDesc *victim_buf_hdr; - uint32 victim_buf_state; - uint32 set_bits = 0; + uint64 victim_buf_state; + uint64 set_bits = 0; /* Make sure we will have room to remember the buffer pin */ ResourceOwnerEnlarge(CurrentResourceOwner); @@ -2251,7 +2251,7 @@ InvalidateBuffer(BufferDesc *buf) uint32 oldHash; /* hash value for oldTag */ LWLock *oldPartitionLock; /* buffer partition lock for it */ uint32 oldFlags; - uint32 buf_state; + uint64 buf_state; /* Save the original buffer tag before dropping the spinlock */ oldTag = buf->tag; @@ -2342,7 +2342,7 @@ retry: static bool InvalidateVictimBuffer(BufferDesc *buf_hdr) { - uint32 buf_state; + uint64 buf_state; uint32 hash; LWLock *partition_lock; BufferTag tag; @@ -2402,10 +2402,10 @@ InvalidateVictimBuffer(BufferDesc *buf_hdr) LWLockRelease(partition_lock); - buf_state = pg_atomic_read_u32(&buf_hdr->state); + buf_state = pg_atomic_read_u64(&buf_hdr->state); Assert(!(buf_state & (BM_DIRTY | BM_VALID | BM_TAG_VALID))); Assert(BUF_STATE_GET_REFCOUNT(buf_state) > 0); - Assert(BUF_STATE_GET_REFCOUNT(pg_atomic_read_u32(&buf_hdr->state)) > 0); + Assert(BUF_STATE_GET_REFCOUNT(pg_atomic_read_u64(&buf_hdr->state)) > 0); return true; } @@ -2415,7 +2415,7 @@ GetVictimBuffer(BufferAccessStrategy strategy, IOContext io_context) { BufferDesc *buf_hdr; Buffer buf; - uint32 buf_state; + uint64 buf_state; bool from_ring; /* @@ -2548,7 +2548,7 @@ again: /* a final set of sanity checks */ #ifdef USE_ASSERT_CHECKING - buf_state = pg_atomic_read_u32(&buf_hdr->state); + buf_state = pg_atomic_read_u64(&buf_hdr->state); Assert(BUF_STATE_GET_REFCOUNT(buf_state) == 1); Assert(!(buf_state & (BM_TAG_VALID | BM_VALID | BM_DIRTY))); @@ -2839,13 +2839,13 @@ ExtendBufferedRelShared(BufferManagerRelation bmr, */ do { - pg_atomic_fetch_and_u32(&existing_hdr->state, ~BM_VALID); + pg_atomic_fetch_and_u64(&existing_hdr->state, ~BM_VALID); } while (!StartBufferIO(existing_hdr, true, false)); } else { - uint32 buf_state; - uint32 set_bits = 0; + uint64 buf_state; + uint64 set_bits = 0; buf_state = LockBufHdr(victim_buf_hdr); @@ -3021,7 +3021,7 @@ BufferIsDirty(Buffer buffer) Assert(BufferIsLockedByMeInMode(buffer, BUFFER_LOCK_EXCLUSIVE)); } - return pg_atomic_read_u32(&bufHdr->state) & BM_DIRTY; + return pg_atomic_read_u64(&bufHdr->state) & BM_DIRTY; } /* @@ -3037,8 +3037,8 @@ void MarkBufferDirty(Buffer buffer) { BufferDesc *bufHdr; - uint32 buf_state; - uint32 old_buf_state; + uint64 buf_state; + uint64 old_buf_state; if (!BufferIsValid(buffer)) elog(ERROR, "bad buffer ID: %d", buffer); @@ -3058,7 +3058,7 @@ MarkBufferDirty(Buffer buffer) * NB: We have to wait for the buffer header spinlock to be not held, as * TerminateBufferIO() relies on the spinlock. */ - old_buf_state = pg_atomic_read_u32(&bufHdr->state); + old_buf_state = pg_atomic_read_u64(&bufHdr->state); for (;;) { if (old_buf_state & BM_LOCKED) @@ -3069,7 +3069,7 @@ MarkBufferDirty(Buffer buffer) Assert(BUF_STATE_GET_REFCOUNT(buf_state) > 0); buf_state |= BM_DIRTY | BM_JUST_DIRTIED; - if (pg_atomic_compare_exchange_u32(&bufHdr->state, &old_buf_state, + if (pg_atomic_compare_exchange_u64(&bufHdr->state, &old_buf_state, buf_state)) break; } @@ -3173,10 +3173,10 @@ PinBuffer(BufferDesc *buf, BufferAccessStrategy strategy, if (ref == NULL) { - uint32 buf_state; - uint32 old_buf_state; + uint64 buf_state; + uint64 old_buf_state; - old_buf_state = pg_atomic_read_u32(&buf->state); + old_buf_state = pg_atomic_read_u64(&buf->state); for (;;) { if (unlikely(skip_if_not_valid && !(old_buf_state & BM_VALID))) @@ -3210,7 +3210,7 @@ PinBuffer(BufferDesc *buf, BufferAccessStrategy strategy, buf_state += BUF_USAGECOUNT_ONE; } - if (pg_atomic_compare_exchange_u32(&buf->state, &old_buf_state, + if (pg_atomic_compare_exchange_u64(&buf->state, &old_buf_state, buf_state)) { result = (buf_state & BM_VALID) != 0; @@ -3237,7 +3237,7 @@ PinBuffer(BufferDesc *buf, BufferAccessStrategy strategy, * that the buffer page is legitimately non-accessible here. We * cannot meddle with that. */ - result = (pg_atomic_read_u32(&buf->state) & BM_VALID) != 0; + result = (pg_atomic_read_u64(&buf->state) & BM_VALID) != 0; Assert(ref->data.refcount > 0); ref->data.refcount++; @@ -3272,7 +3272,7 @@ PinBuffer(BufferDesc *buf, BufferAccessStrategy strategy, static void PinBuffer_Locked(BufferDesc *buf) { - uint32 old_buf_state; + uint64 old_buf_state; /* * As explained, We don't expect any preexisting pins. That allows us to @@ -3284,7 +3284,7 @@ PinBuffer_Locked(BufferDesc *buf) * Since we hold the buffer spinlock, we can update the buffer state and * release the lock in one operation. */ - old_buf_state = pg_atomic_read_u32(&buf->state); + old_buf_state = pg_atomic_read_u64(&buf->state); UnlockBufHdrExt(buf, old_buf_state, 0, 0, 1); @@ -3314,7 +3314,7 @@ WakePinCountWaiter(BufferDesc *buf) * BM_PIN_COUNT_WAITER if it stops waiting for a reason other than this * backend waking it up. */ - uint32 buf_state = LockBufHdr(buf); + uint64 buf_state = LockBufHdr(buf); if ((buf_state & BM_PIN_COUNT_WAITER) && BUF_STATE_GET_REFCOUNT(buf_state) == 1) @@ -3361,7 +3361,7 @@ UnpinBufferNoOwner(BufferDesc *buf) ref->data.refcount--; if (ref->data.refcount == 0) { - uint32 old_buf_state; + uint64 old_buf_state; /* * Mark buffer non-accessible to Valgrind. @@ -3379,7 +3379,7 @@ UnpinBufferNoOwner(BufferDesc *buf) Assert(!LWLockHeldByMe(BufferDescriptorGetContentLock(buf))); /* decrement the shared reference count */ - old_buf_state = pg_atomic_fetch_sub_u32(&buf->state, BUF_REFCOUNT_ONE); + old_buf_state = pg_atomic_fetch_sub_u64(&buf->state, BUF_REFCOUNT_ONE); /* Support LockBufferForCleanup() */ if (old_buf_state & BM_PIN_COUNT_WAITER) @@ -3436,7 +3436,7 @@ TrackNewBufferPin(Buffer buf) static void BufferSync(int flags) { - uint32 buf_state; + uint64 buf_state; int buf_id; int num_to_scan; int num_spaces; @@ -3446,7 +3446,7 @@ BufferSync(int flags) Oid last_tsid; binaryheap *ts_heap; int i; - uint32 mask = BM_DIRTY; + uint64 mask = BM_DIRTY; WritebackContext wb_context; /* @@ -3478,7 +3478,7 @@ BufferSync(int flags) for (buf_id = 0; buf_id < NBuffers; buf_id++) { BufferDesc *bufHdr = GetBufferDescriptor(buf_id); - uint32 set_bits = 0; + uint64 set_bits = 0; /* * Header spinlock is enough to examine BM_DIRTY, see comment in @@ -3645,7 +3645,7 @@ BufferSync(int flags) * write the buffer though we didn't need to. It doesn't seem worth * guarding against this, though. */ - if (pg_atomic_read_u32(&bufHdr->state) & BM_CHECKPOINT_NEEDED) + if (pg_atomic_read_u64(&bufHdr->state) & BM_CHECKPOINT_NEEDED) { if (SyncOneBuffer(buf_id, false, &wb_context) & BUF_WRITTEN) { @@ -4015,7 +4015,7 @@ SyncOneBuffer(int buf_id, bool skip_recently_used, WritebackContext *wb_context) { BufferDesc *bufHdr = GetBufferDescriptor(buf_id); int result = 0; - uint32 buf_state; + uint64 buf_state; BufferTag tag; /* Make sure we can handle the pin */ @@ -4264,7 +4264,7 @@ DebugPrintBufferRefcount(Buffer buffer) int32 loccount; char *result; ProcNumber backend; - uint32 buf_state; + uint64 buf_state; Assert(BufferIsValid(buffer)); if (BufferIsLocal(buffer)) @@ -4281,9 +4281,9 @@ DebugPrintBufferRefcount(Buffer buffer) } /* theoretically we should lock the bufhdr here */ - buf_state = pg_atomic_read_u32(&buf->state); + buf_state = pg_atomic_read_u64(&buf->state); - result = psprintf("[%03d] (rel=%s, blockNum=%u, flags=0x%x, refcount=%u %d)", + result = psprintf("[%03d] (rel=%s, blockNum=%u, flags=0x%" PRIx64 ", refcount=%u %d)", buffer, relpathbackend(BufTagGetRelFileLocator(&buf->tag), backend, BufTagGetForkNum(&buf->tag)).str, @@ -4383,7 +4383,7 @@ FlushBuffer(BufferDesc *buf, SMgrRelation reln, IOObject io_object, instr_time io_start; Block bufBlock; char *bufToWrite; - uint32 buf_state; + uint64 buf_state; /* * Try to start an I/O operation. If StartBufferIO returns false, then @@ -4581,7 +4581,7 @@ BufferIsPermanent(Buffer buffer) * not random garbage. */ bufHdr = GetBufferDescriptor(buffer - 1); - return (pg_atomic_read_u32(&bufHdr->state) & BM_PERMANENT) != 0; + return (pg_atomic_read_u64(&bufHdr->state) & BM_PERMANENT) != 0; } /* @@ -5044,11 +5044,11 @@ FlushRelationBuffers(Relation rel) { for (i = 0; i < NLocBuffer; i++) { - uint32 buf_state; + uint64 buf_state; bufHdr = GetLocalBufferDescriptor(i); if (BufTagMatchesRelFileLocator(&bufHdr->tag, &rel->rd_locator) && - ((buf_state = pg_atomic_read_u32(&bufHdr->state)) & + ((buf_state = pg_atomic_read_u64(&bufHdr->state)) & (BM_VALID | BM_DIRTY)) == (BM_VALID | BM_DIRTY)) { ErrorContextCallback errcallback; @@ -5084,7 +5084,7 @@ FlushRelationBuffers(Relation rel) for (i = 0; i < NBuffers; i++) { - uint32 buf_state; + uint64 buf_state; bufHdr = GetBufferDescriptor(i); @@ -5156,7 +5156,7 @@ FlushRelationsAllBuffers(SMgrRelation *smgrs, int nrels) { SMgrSortArray *srelent = NULL; BufferDesc *bufHdr = GetBufferDescriptor(i); - uint32 buf_state; + uint64 buf_state; /* * As in DropRelationBuffers, an unlocked precheck should be safe and @@ -5405,7 +5405,7 @@ FlushDatabaseBuffers(Oid dbid) for (i = 0; i < NBuffers; i++) { - uint32 buf_state; + uint64 buf_state; bufHdr = GetBufferDescriptor(i); @@ -5553,13 +5553,13 @@ MarkBufferDirtyHint(Buffer buffer, bool buffer_std) * is only intended to be used in cases where failing to write out the * data would be harmless anyway, it doesn't really matter. */ - if ((pg_atomic_read_u32(&bufHdr->state) & (BM_DIRTY | BM_JUST_DIRTIED)) != + if ((pg_atomic_read_u64(&bufHdr->state) & (BM_DIRTY | BM_JUST_DIRTIED)) != (BM_DIRTY | BM_JUST_DIRTIED)) { XLogRecPtr lsn = InvalidXLogRecPtr; bool dirtied = false; bool delayChkptFlags = false; - uint32 buf_state; + uint64 buf_state; /* * If we need to protect hint bit updates from torn writes, WAL-log a @@ -5571,7 +5571,7 @@ MarkBufferDirtyHint(Buffer buffer, bool buffer_std) * when we call XLogInsert() since the value changes dynamically. */ if (XLogHintBitIsNeeded() && - (pg_atomic_read_u32(&bufHdr->state) & BM_PERMANENT)) + (pg_atomic_read_u64(&bufHdr->state) & BM_PERMANENT)) { /* * If we must not write WAL, due to a relfilelocator-specific @@ -5671,8 +5671,8 @@ UnlockBuffers(void) if (buf) { - uint32 buf_state; - uint32 unset_bits = 0; + uint64 buf_state; + uint64 unset_bits = 0; buf_state = LockBufHdr(buf); @@ -5803,8 +5803,8 @@ LockBufferForCleanup(Buffer buffer) for (;;) { - uint32 buf_state; - uint32 unset_bits = 0; + uint64 buf_state; + uint64 unset_bits = 0; /* Try to acquire lock */ LockBuffer(buffer, BUFFER_LOCK_EXCLUSIVE); @@ -5952,7 +5952,7 @@ bool ConditionalLockBufferForCleanup(Buffer buffer) { BufferDesc *bufHdr; - uint32 buf_state, + uint64 buf_state, refcount; Assert(BufferIsValid(buffer)); @@ -6010,7 +6010,7 @@ bool IsBufferCleanupOK(Buffer buffer) { BufferDesc *bufHdr; - uint32 buf_state; + uint64 buf_state; Assert(BufferIsValid(buffer)); @@ -6066,7 +6066,7 @@ WaitIO(BufferDesc *buf) ConditionVariablePrepareToSleep(cv); for (;;) { - uint32 buf_state; + uint64 buf_state; PgAioWaitRef iow; /* @@ -6140,7 +6140,7 @@ WaitIO(BufferDesc *buf) bool StartBufferIO(BufferDesc *buf, bool forInput, bool nowait) { - uint32 buf_state; + uint64 buf_state; ResourceOwnerEnlarge(CurrentResourceOwner); @@ -6196,11 +6196,11 @@ StartBufferIO(BufferDesc *buf, bool forInput, bool nowait) * is being released) */ void -TerminateBufferIO(BufferDesc *buf, bool clear_dirty, uint32 set_flag_bits, +TerminateBufferIO(BufferDesc *buf, bool clear_dirty, uint64 set_flag_bits, bool forget_owner, bool release_aio) { - uint32 buf_state; - uint32 unset_flag_bits = 0; + uint64 buf_state; + uint64 unset_flag_bits = 0; int refcount_change = 0; buf_state = LockBufHdr(buf); @@ -6261,7 +6261,7 @@ static void AbortBufferIO(Buffer buffer) { BufferDesc *buf_hdr = GetBufferDescriptor(buffer - 1); - uint32 buf_state; + uint64 buf_state; buf_state = LockBufHdr(buf_hdr); Assert(buf_state & (BM_IO_IN_PROGRESS | BM_TAG_VALID)); @@ -6355,10 +6355,10 @@ rlocator_comparator(const void *p1, const void *p2) /* * Lock buffer header - set BM_LOCKED in buffer state. */ -uint32 +uint64 LockBufHdr(BufferDesc *desc) { - uint32 old_buf_state; + uint64 old_buf_state; Assert(!BufferIsLocal(BufferDescriptorGetBuffer(desc))); @@ -6369,7 +6369,7 @@ LockBufHdr(BufferDesc *desc) * the spin-delay infrastructure. The work necessary for that shows up * in profiles and is rarely necessary. */ - old_buf_state = pg_atomic_fetch_or_u32(&desc->state, BM_LOCKED); + old_buf_state = pg_atomic_fetch_or_u64(&desc->state, BM_LOCKED); if (likely(!(old_buf_state & BM_LOCKED))) break; /* got lock */ @@ -6382,7 +6382,7 @@ LockBufHdr(BufferDesc *desc) while (old_buf_state & BM_LOCKED) { perform_spin_delay(&delayStatus); - old_buf_state = pg_atomic_read_u32(&desc->state); + old_buf_state = pg_atomic_read_u64(&desc->state); } finish_spin_delay(&delayStatus); } @@ -6403,20 +6403,20 @@ LockBufHdr(BufferDesc *desc) * Obviously the buffer could be locked by the time the value is returned, so * this is primarily useful in CAS style loops. */ -pg_noinline uint32 +pg_noinline uint64 WaitBufHdrUnlocked(BufferDesc *buf) { SpinDelayStatus delayStatus; - uint32 buf_state; + uint64 buf_state; init_local_spin_delay(&delayStatus); - buf_state = pg_atomic_read_u32(&buf->state); + buf_state = pg_atomic_read_u64(&buf->state); while (buf_state & BM_LOCKED) { perform_spin_delay(&delayStatus); - buf_state = pg_atomic_read_u32(&buf->state); + buf_state = pg_atomic_read_u64(&buf->state); } finish_spin_delay(&delayStatus); @@ -6704,12 +6704,12 @@ ResOwnerPrintBufferPin(Datum res) static bool EvictUnpinnedBufferInternal(BufferDesc *desc, bool *buffer_flushed) { - uint32 buf_state; + uint64 buf_state; bool result; *buffer_flushed = false; - buf_state = pg_atomic_read_u32(&(desc->state)); + buf_state = pg_atomic_read_u64(&(desc->state)); Assert(buf_state & BM_LOCKED); if ((buf_state & BM_VALID) == 0) @@ -6803,12 +6803,12 @@ EvictAllUnpinnedBuffers(int32 *buffers_evicted, int32 *buffers_flushed, for (int buf = 1; buf <= NBuffers; buf++) { BufferDesc *desc = GetBufferDescriptor(buf - 1); - uint32 buf_state; + uint64 buf_state; bool buffer_flushed; CHECK_FOR_INTERRUPTS(); - buf_state = pg_atomic_read_u32(&desc->state); + buf_state = pg_atomic_read_u64(&desc->state); if (!(buf_state & BM_VALID)) continue; @@ -6855,7 +6855,7 @@ EvictRelUnpinnedBuffers(Relation rel, int32 *buffers_evicted, for (int buf = 1; buf <= NBuffers; buf++) { BufferDesc *desc = GetBufferDescriptor(buf - 1); - uint32 buf_state = pg_atomic_read_u32(&(desc->state)); + uint64 buf_state = pg_atomic_read_u64(&(desc->state)); bool buffer_flushed; CHECK_FOR_INTERRUPTS(); @@ -6897,12 +6897,12 @@ static bool MarkDirtyUnpinnedBufferInternal(Buffer buf, BufferDesc *desc, bool *buffer_already_dirty) { - uint32 buf_state; + uint64 buf_state; bool result = false; *buffer_already_dirty = false; - buf_state = pg_atomic_read_u32(&(desc->state)); + buf_state = pg_atomic_read_u64(&(desc->state)); Assert(buf_state & BM_LOCKED); if ((buf_state & BM_VALID) == 0) @@ -7000,7 +7000,7 @@ MarkDirtyRelUnpinnedBuffers(Relation rel, for (int buf = 1; buf <= NBuffers; buf++) { BufferDesc *desc = GetBufferDescriptor(buf - 1); - uint32 buf_state = pg_atomic_read_u32(&(desc->state)); + uint64 buf_state = pg_atomic_read_u64(&(desc->state)); bool buffer_already_dirty; CHECK_FOR_INTERRUPTS(); @@ -7054,12 +7054,12 @@ MarkDirtyAllUnpinnedBuffers(int32 *buffers_dirtied, for (int buf = 1; buf <= NBuffers; buf++) { BufferDesc *desc = GetBufferDescriptor(buf - 1); - uint32 buf_state; + uint64 buf_state; bool buffer_already_dirty; CHECK_FOR_INTERRUPTS(); - buf_state = pg_atomic_read_u32(&desc->state); + buf_state = pg_atomic_read_u64(&desc->state); if (!(buf_state & BM_VALID)) continue; @@ -7110,7 +7110,7 @@ buffer_stage_common(PgAioHandle *ioh, bool is_write, bool is_temp) BufferDesc *buf_hdr = is_temp ? GetLocalBufferDescriptor(-buffer - 1) : GetBufferDescriptor(buffer - 1); - uint32 buf_state; + uint64 buf_state; /* * Check that all the buffers are actually ones that could conceivably @@ -7128,7 +7128,7 @@ buffer_stage_common(PgAioHandle *ioh, bool is_write, bool is_temp) } if (is_temp) - buf_state = pg_atomic_read_u32(&buf_hdr->state); + buf_state = pg_atomic_read_u64(&buf_hdr->state); else buf_state = LockBufHdr(buf_hdr); @@ -7166,7 +7166,7 @@ buffer_stage_common(PgAioHandle *ioh, bool is_write, bool is_temp) if (is_temp) { buf_state += BUF_REFCOUNT_ONE; - pg_atomic_unlocked_write_u32(&buf_hdr->state, buf_state); + pg_atomic_unlocked_write_u64(&buf_hdr->state, buf_state); } else UnlockBufHdrExt(buf_hdr, buf_state, 0, 0, 1); @@ -7352,13 +7352,13 @@ buffer_readv_complete_one(PgAioTargetData *td, uint8 buf_off, Buffer buffer, : GetBufferDescriptor(buffer - 1); BufferTag tag = buf_hdr->tag; char *bufdata = BufferGetBlock(buffer); - uint32 set_flag_bits; + uint64 set_flag_bits; int piv_flags; /* check that the buffer is in the expected state for a read */ #ifdef USE_ASSERT_CHECKING { - uint32 buf_state = pg_atomic_read_u32(&buf_hdr->state); + uint64 buf_state = pg_atomic_read_u64(&buf_hdr->state); Assert(buf_state & BM_TAG_VALID); Assert(!(buf_state & BM_VALID)); diff --git a/src/backend/storage/buffer/freelist.c b/src/backend/storage/buffer/freelist.c index 28d952b3534..1d4f19a9afd 100644 --- a/src/backend/storage/buffer/freelist.c +++ b/src/backend/storage/buffer/freelist.c @@ -86,7 +86,7 @@ typedef struct BufferAccessStrategyData /* Prototypes for internal functions */ static BufferDesc *GetBufferFromRing(BufferAccessStrategy strategy, - uint32 *buf_state); + uint64 *buf_state); static void AddBufferToRing(BufferAccessStrategy strategy, BufferDesc *buf); @@ -171,7 +171,7 @@ ClockSweepTick(void) * before returning. */ BufferDesc * -StrategyGetBuffer(BufferAccessStrategy strategy, uint32 *buf_state, bool *from_ring) +StrategyGetBuffer(BufferAccessStrategy strategy, uint64 *buf_state, bool *from_ring) { BufferDesc *buf; int bgwprocno; @@ -230,8 +230,8 @@ StrategyGetBuffer(BufferAccessStrategy strategy, uint32 *buf_state, bool *from_r trycounter = NBuffers; for (;;) { - uint32 old_buf_state; - uint32 local_buf_state; + uint64 old_buf_state; + uint64 local_buf_state; buf = GetBufferDescriptor(ClockSweepTick()); @@ -239,7 +239,7 @@ StrategyGetBuffer(BufferAccessStrategy strategy, uint32 *buf_state, bool *from_r * Check whether the buffer can be used and pin it if so. Do this * using a CAS loop, to avoid having to lock the buffer header. */ - old_buf_state = pg_atomic_read_u32(&buf->state); + old_buf_state = pg_atomic_read_u64(&buf->state); for (;;) { local_buf_state = old_buf_state; @@ -277,7 +277,7 @@ StrategyGetBuffer(BufferAccessStrategy strategy, uint32 *buf_state, bool *from_r { local_buf_state -= BUF_USAGECOUNT_ONE; - if (pg_atomic_compare_exchange_u32(&buf->state, &old_buf_state, + if (pg_atomic_compare_exchange_u64(&buf->state, &old_buf_state, local_buf_state)) { trycounter = NBuffers; @@ -289,7 +289,7 @@ StrategyGetBuffer(BufferAccessStrategy strategy, uint32 *buf_state, bool *from_r /* pin the buffer if the CAS succeeds */ local_buf_state += BUF_REFCOUNT_ONE; - if (pg_atomic_compare_exchange_u32(&buf->state, &old_buf_state, + if (pg_atomic_compare_exchange_u64(&buf->state, &old_buf_state, local_buf_state)) { /* Found a usable buffer */ @@ -655,12 +655,12 @@ FreeAccessStrategy(BufferAccessStrategy strategy) * returning. */ static BufferDesc * -GetBufferFromRing(BufferAccessStrategy strategy, uint32 *buf_state) +GetBufferFromRing(BufferAccessStrategy strategy, uint64 *buf_state) { BufferDesc *buf; Buffer bufnum; - uint32 old_buf_state; - uint32 local_buf_state; /* to avoid repeated (de-)referencing */ + uint64 old_buf_state; + uint64 local_buf_state; /* to avoid repeated (de-)referencing */ /* Advance to next ring slot */ @@ -682,7 +682,7 @@ GetBufferFromRing(BufferAccessStrategy strategy, uint32 *buf_state) * Check whether the buffer can be used and pin it if so. Do this using a * CAS loop, to avoid having to lock the buffer header. */ - old_buf_state = pg_atomic_read_u32(&buf->state); + old_buf_state = pg_atomic_read_u64(&buf->state); for (;;) { local_buf_state = old_buf_state; @@ -710,7 +710,7 @@ GetBufferFromRing(BufferAccessStrategy strategy, uint32 *buf_state) /* pin the buffer if the CAS succeeds */ local_buf_state += BUF_REFCOUNT_ONE; - if (pg_atomic_compare_exchange_u32(&buf->state, &old_buf_state, + if (pg_atomic_compare_exchange_u64(&buf->state, &old_buf_state, local_buf_state)) { *buf_state = local_buf_state; diff --git a/src/backend/storage/buffer/localbuf.c b/src/backend/storage/buffer/localbuf.c index 15aac7d1c9f..a41a5facd3a 100644 --- a/src/backend/storage/buffer/localbuf.c +++ b/src/backend/storage/buffer/localbuf.c @@ -148,7 +148,7 @@ LocalBufferAlloc(SMgrRelation smgr, ForkNumber forkNum, BlockNumber blockNum, } else { - uint32 buf_state; + uint64 buf_state; victim_buffer = GetLocalVictimBuffer(); bufid = -victim_buffer - 1; @@ -165,10 +165,10 @@ LocalBufferAlloc(SMgrRelation smgr, ForkNumber forkNum, BlockNumber blockNum, */ bufHdr->tag = newTag; - buf_state = pg_atomic_read_u32(&bufHdr->state); + buf_state = pg_atomic_read_u64(&bufHdr->state); buf_state &= ~(BUF_FLAG_MASK | BUF_USAGECOUNT_MASK); buf_state |= BM_TAG_VALID | BUF_USAGECOUNT_ONE; - pg_atomic_unlocked_write_u32(&bufHdr->state, buf_state); + pg_atomic_unlocked_write_u64(&bufHdr->state, buf_state); *foundPtr = false; } @@ -245,12 +245,12 @@ GetLocalVictimBuffer(void) if (LocalRefCount[victim_bufid] == 0) { - uint32 buf_state = pg_atomic_read_u32(&bufHdr->state); + uint64 buf_state = pg_atomic_read_u64(&bufHdr->state); if (BUF_STATE_GET_USAGECOUNT(buf_state) > 0) { buf_state -= BUF_USAGECOUNT_ONE; - pg_atomic_unlocked_write_u32(&bufHdr->state, buf_state); + pg_atomic_unlocked_write_u64(&bufHdr->state, buf_state); trycounter = NLocBuffer; } else if (BUF_STATE_GET_REFCOUNT(buf_state) > 0) @@ -286,13 +286,13 @@ GetLocalVictimBuffer(void) * this buffer is not referenced but it might still be dirty. if that's * the case, write it out before reusing it! */ - if (pg_atomic_read_u32(&bufHdr->state) & BM_DIRTY) + if (pg_atomic_read_u64(&bufHdr->state) & BM_DIRTY) FlushLocalBuffer(bufHdr, NULL); /* * Remove the victim buffer from the hashtable and mark as invalid. */ - if (pg_atomic_read_u32(&bufHdr->state) & BM_TAG_VALID) + if (pg_atomic_read_u64(&bufHdr->state) & BM_TAG_VALID) { InvalidateLocalBuffer(bufHdr, false); @@ -417,7 +417,7 @@ ExtendBufferedRelLocal(BufferManagerRelation bmr, if (found) { BufferDesc *existing_hdr; - uint32 buf_state; + uint64 buf_state; UnpinLocalBuffer(BufferDescriptorGetBuffer(victim_buf_hdr)); @@ -428,18 +428,18 @@ ExtendBufferedRelLocal(BufferManagerRelation bmr, /* * Clear the BM_VALID bit, do StartLocalBufferIO() and proceed. */ - buf_state = pg_atomic_read_u32(&existing_hdr->state); + buf_state = pg_atomic_read_u64(&existing_hdr->state); Assert(buf_state & BM_TAG_VALID); Assert(!(buf_state & BM_DIRTY)); buf_state &= ~BM_VALID; - pg_atomic_unlocked_write_u32(&existing_hdr->state, buf_state); + pg_atomic_unlocked_write_u64(&existing_hdr->state, buf_state); /* no need to loop for local buffers */ StartLocalBufferIO(existing_hdr, true, false); } else { - uint32 buf_state = pg_atomic_read_u32(&victim_buf_hdr->state); + uint64 buf_state = pg_atomic_read_u64(&victim_buf_hdr->state); Assert(!(buf_state & (BM_VALID | BM_TAG_VALID | BM_DIRTY | BM_JUST_DIRTIED))); @@ -447,7 +447,7 @@ ExtendBufferedRelLocal(BufferManagerRelation bmr, buf_state |= BM_TAG_VALID | BUF_USAGECOUNT_ONE; - pg_atomic_unlocked_write_u32(&victim_buf_hdr->state, buf_state); + pg_atomic_unlocked_write_u64(&victim_buf_hdr->state, buf_state); hresult->id = victim_buf_id; @@ -467,13 +467,13 @@ ExtendBufferedRelLocal(BufferManagerRelation bmr, { Buffer buf = buffers[i]; BufferDesc *buf_hdr; - uint32 buf_state; + uint64 buf_state; buf_hdr = GetLocalBufferDescriptor(-buf - 1); - buf_state = pg_atomic_read_u32(&buf_hdr->state); + buf_state = pg_atomic_read_u64(&buf_hdr->state); buf_state |= BM_VALID; - pg_atomic_unlocked_write_u32(&buf_hdr->state, buf_state); + pg_atomic_unlocked_write_u64(&buf_hdr->state, buf_state); } *extended_by = extend_by; @@ -492,7 +492,7 @@ MarkLocalBufferDirty(Buffer buffer) { int bufid; BufferDesc *bufHdr; - uint32 buf_state; + uint64 buf_state; Assert(BufferIsLocal(buffer)); @@ -506,14 +506,14 @@ MarkLocalBufferDirty(Buffer buffer) bufHdr = GetLocalBufferDescriptor(bufid); - buf_state = pg_atomic_read_u32(&bufHdr->state); + buf_state = pg_atomic_read_u64(&bufHdr->state); if (!(buf_state & BM_DIRTY)) pgBufferUsage.local_blks_dirtied++; buf_state |= BM_DIRTY; - pg_atomic_unlocked_write_u32(&bufHdr->state, buf_state); + pg_atomic_unlocked_write_u64(&bufHdr->state, buf_state); } /* @@ -522,7 +522,7 @@ MarkLocalBufferDirty(Buffer buffer) bool StartLocalBufferIO(BufferDesc *bufHdr, bool forInput, bool nowait) { - uint32 buf_state; + uint64 buf_state; /* * With AIO the buffer could have IO in progress, e.g. when there are two @@ -542,7 +542,7 @@ StartLocalBufferIO(BufferDesc *bufHdr, bool forInput, bool nowait) /* Once we get here, there is definitely no I/O active on this buffer */ /* Check if someone else already did the I/O */ - buf_state = pg_atomic_read_u32(&bufHdr->state); + buf_state = pg_atomic_read_u64(&bufHdr->state); if (forInput ? (buf_state & BM_VALID) : !(buf_state & BM_DIRTY)) { return false; @@ -559,11 +559,11 @@ StartLocalBufferIO(BufferDesc *bufHdr, bool forInput, bool nowait) * Like TerminateBufferIO, but for local buffers */ void -TerminateLocalBufferIO(BufferDesc *bufHdr, bool clear_dirty, uint32 set_flag_bits, +TerminateLocalBufferIO(BufferDesc *bufHdr, bool clear_dirty, uint64 set_flag_bits, bool release_aio) { /* Only need to adjust flags */ - uint32 buf_state = pg_atomic_read_u32(&bufHdr->state); + uint64 buf_state = pg_atomic_read_u64(&bufHdr->state); /* BM_IO_IN_PROGRESS isn't currently used for local buffers */ @@ -582,7 +582,7 @@ TerminateLocalBufferIO(BufferDesc *bufHdr, bool clear_dirty, uint32 set_flag_bit } buf_state |= set_flag_bits; - pg_atomic_unlocked_write_u32(&bufHdr->state, buf_state); + pg_atomic_unlocked_write_u64(&bufHdr->state, buf_state); /* local buffers don't track IO using resowners */ @@ -606,7 +606,7 @@ InvalidateLocalBuffer(BufferDesc *bufHdr, bool check_unreferenced) { Buffer buffer = BufferDescriptorGetBuffer(bufHdr); int bufid = -buffer - 1; - uint32 buf_state; + uint64 buf_state; LocalBufferLookupEnt *hresult; /* @@ -622,7 +622,7 @@ InvalidateLocalBuffer(BufferDesc *bufHdr, bool check_unreferenced) Assert(!pgaio_wref_valid(&bufHdr->io_wref)); } - buf_state = pg_atomic_read_u32(&bufHdr->state); + buf_state = pg_atomic_read_u64(&bufHdr->state); /* * We need to test not just LocalRefCount[bufid] but also the BufferDesc @@ -647,7 +647,7 @@ InvalidateLocalBuffer(BufferDesc *bufHdr, bool check_unreferenced) ClearBufferTag(&bufHdr->tag); buf_state &= ~BUF_FLAG_MASK; buf_state &= ~BUF_USAGECOUNT_MASK; - pg_atomic_unlocked_write_u32(&bufHdr->state, buf_state); + pg_atomic_unlocked_write_u64(&bufHdr->state, buf_state); } /* @@ -671,9 +671,9 @@ DropRelationLocalBuffers(RelFileLocator rlocator, ForkNumber *forkNum, for (i = 0; i < NLocBuffer; i++) { BufferDesc *bufHdr = GetLocalBufferDescriptor(i); - uint32 buf_state; + uint64 buf_state; - buf_state = pg_atomic_read_u32(&bufHdr->state); + buf_state = pg_atomic_read_u64(&bufHdr->state); if (!(buf_state & BM_TAG_VALID) || !BufTagMatchesRelFileLocator(&bufHdr->tag, &rlocator)) @@ -706,9 +706,9 @@ DropRelationAllLocalBuffers(RelFileLocator rlocator) for (i = 0; i < NLocBuffer; i++) { BufferDesc *bufHdr = GetLocalBufferDescriptor(i); - uint32 buf_state; + uint64 buf_state; - buf_state = pg_atomic_read_u32(&bufHdr->state); + buf_state = pg_atomic_read_u64(&bufHdr->state); if ((buf_state & BM_TAG_VALID) && BufTagMatchesRelFileLocator(&bufHdr->tag, &rlocator)) @@ -804,11 +804,11 @@ InitLocalBuffers(void) bool PinLocalBuffer(BufferDesc *buf_hdr, bool adjust_usagecount) { - uint32 buf_state; + uint64 buf_state; Buffer buffer = BufferDescriptorGetBuffer(buf_hdr); int bufid = -buffer - 1; - buf_state = pg_atomic_read_u32(&buf_hdr->state); + buf_state = pg_atomic_read_u64(&buf_hdr->state); if (LocalRefCount[bufid] == 0) { @@ -819,7 +819,7 @@ PinLocalBuffer(BufferDesc *buf_hdr, bool adjust_usagecount) { buf_state += BUF_USAGECOUNT_ONE; } - pg_atomic_unlocked_write_u32(&buf_hdr->state, buf_state); + pg_atomic_unlocked_write_u64(&buf_hdr->state, buf_state); /* * See comment in PinBuffer(). @@ -856,14 +856,14 @@ UnpinLocalBufferNoOwner(Buffer buffer) if (--LocalRefCount[buffid] == 0) { BufferDesc *buf_hdr = GetLocalBufferDescriptor(buffid); - uint32 buf_state; + uint64 buf_state; NLocalPinnedBuffers--; - buf_state = pg_atomic_read_u32(&buf_hdr->state); + buf_state = pg_atomic_read_u64(&buf_hdr->state); Assert(BUF_STATE_GET_REFCOUNT(buf_state) > 0); buf_state -= BUF_REFCOUNT_ONE; - pg_atomic_unlocked_write_u32(&buf_hdr->state, buf_state); + pg_atomic_unlocked_write_u64(&buf_hdr->state, buf_state); /* see comment in UnpinBufferNoOwner */ VALGRIND_MAKE_MEM_NOACCESS(LocalBufHdrGetBlock(buf_hdr), BLCKSZ); diff --git a/contrib/pg_buffercache/pg_buffercache_pages.c b/contrib/pg_buffercache/pg_buffercache_pages.c index 0c58e4b265c..529803346ce 100644 --- a/contrib/pg_buffercache/pg_buffercache_pages.c +++ b/contrib/pg_buffercache/pg_buffercache_pages.c @@ -199,7 +199,7 @@ pg_buffercache_pages(PG_FUNCTION_ARGS) for (i = 0; i < NBuffers; i++) { BufferDesc *bufHdr; - uint32 buf_state; + uint64 buf_state; CHECK_FOR_INTERRUPTS(); @@ -615,7 +615,7 @@ pg_buffercache_summary(PG_FUNCTION_ARGS) for (int i = 0; i < NBuffers; i++) { BufferDesc *bufHdr; - uint32 buf_state; + uint64 buf_state; CHECK_FOR_INTERRUPTS(); @@ -626,7 +626,7 @@ pg_buffercache_summary(PG_FUNCTION_ARGS) * noticeably increase the cost of the function. */ bufHdr = GetBufferDescriptor(i); - buf_state = pg_atomic_read_u32(&bufHdr->state); + buf_state = pg_atomic_read_u64(&bufHdr->state); if (buf_state & BM_VALID) { @@ -676,7 +676,7 @@ pg_buffercache_usage_counts(PG_FUNCTION_ARGS) for (int i = 0; i < NBuffers; i++) { BufferDesc *bufHdr = GetBufferDescriptor(i); - uint32 buf_state = pg_atomic_read_u32(&bufHdr->state); + uint64 buf_state = pg_atomic_read_u64(&bufHdr->state); int usage_count; CHECK_FOR_INTERRUPTS(); diff --git a/src/test/modules/test_aio/test_aio.c b/src/test/modules/test_aio/test_aio.c index d7eadeab256..488d98e7e66 100644 --- a/src/test/modules/test_aio/test_aio.c +++ b/src/test/modules/test_aio/test_aio.c @@ -308,9 +308,9 @@ create_toy_buffer(Relation rel, BlockNumber blkno) { Buffer buf; BufferDesc *buf_hdr; - uint32 buf_state; + uint64 buf_state; bool was_pinned = false; - uint32 unset_bits = 0; + uint64 unset_bits = 0; /* place buffer in shared buffers without erroring out */ buf = ReadBufferExtended(rel, MAIN_FORKNUM, blkno, RBM_ZERO_AND_LOCK, NULL); @@ -319,7 +319,7 @@ create_toy_buffer(Relation rel, BlockNumber blkno) if (RelationUsesLocalBuffers(rel)) { buf_hdr = GetLocalBufferDescriptor(-buf - 1); - buf_state = pg_atomic_read_u32(&buf_hdr->state); + buf_state = pg_atomic_read_u64(&buf_hdr->state); } else { @@ -340,7 +340,7 @@ create_toy_buffer(Relation rel, BlockNumber blkno) if (RelationUsesLocalBuffers(rel)) { buf_state &= ~unset_bits; - pg_atomic_unlocked_write_u32(&buf_hdr->state, buf_state); + pg_atomic_unlocked_write_u64(&buf_hdr->state, buf_state); } else { @@ -489,7 +489,7 @@ invalidate_rel_block(PG_FUNCTION_ARGS) LockBuffer(buf, BUFFER_LOCK_EXCLUSIVE); - if (pg_atomic_read_u32(&buf_hdr->state) & BM_DIRTY) + if (pg_atomic_read_u64(&buf_hdr->state) & BM_DIRTY) { if (BufferIsLocal(buf)) FlushLocalBuffer(buf_hdr, NULL); @@ -572,7 +572,7 @@ buffer_call_terminate_io(PG_FUNCTION_ARGS) bool io_error = PG_GETARG_BOOL(3); bool release_aio = PG_GETARG_BOOL(4); bool clear_dirty = false; - uint32 set_flag_bits = 0; + uint64 set_flag_bits = 0; if (io_error) set_flag_bits |= BM_IO_ERROR; -- 2.48.1.76.g4e746b1a31.dirty --lbbj3oq7cjvyhmbk Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v8-0007-bufmgr-Implement-buffer-content-locks-independent.patch" ^ permalink raw reply [nested|flat] 6+ messages in thread
* [PATCH v2] Fix pg_dump for NO INHERIT constraints on inheritance children @ 2026-02-25 18:17 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 6+ messages in thread From: Álvaro Herrera @ 2026-02-25 18:17 UTC (permalink / raw) Discussion: https://postgr.es/m/CACJufxEDEOO09G+OQFr=HmFr9ZDLZbRoV7+pj58h3_WeJ_K5UQ@mail.gmail.com --- src/bin/pg_dump/pg_dump.c | 3 +++ src/bin/pg_dump/t/002_pg_dump.pl | 20 ++++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/src/bin/pg_dump/pg_dump.c b/src/bin/pg_dump/pg_dump.c index 450cec285b3..46a6794a57f 100644 --- a/src/bin/pg_dump/pg_dump.c +++ b/src/bin/pg_dump/pg_dump.c @@ -17421,6 +17421,9 @@ dumpTableSchema(Archive *fout, const TableInfo *tbinfo) appendPQExpBuffer(q, "CONSTRAINT %s NOT NULL %s", tbinfo->notnull_constrs[j], fmtId(tbinfo->attnames[j])); + + if (tbinfo->notnull_noinh[j]) + appendPQExpBufferStr(q, " NO INHERIT"); } } diff --git a/src/bin/pg_dump/t/002_pg_dump.pl b/src/bin/pg_dump/t/002_pg_dump.pl index bc7a082f57a..a265c98f807 100644 --- a/src/bin/pg_dump/t/002_pg_dump.pl +++ b/src/bin/pg_dump/t/002_pg_dump.pl @@ -1070,6 +1070,26 @@ my %tests = ( }, }, + 'CONSTRAINT NOT NULL / NO INHERIT' => { + create_sql => 'CREATE TABLE dump_test.test_table_nonn (col1 int); + CREATE TABLE dump_test.test_table_nonn_chld1 ( + CONSTRAINT nn NOT NULL col1 NO INHERIT) + INHERITS (dump_test.test_table_nonn); ', + regexp => qr/^ + \QCREATE TABLE dump_test.test_table_nonn_chld1 (\E \n^\s+ + \QCONSTRAINT nn NOT NULL col1 NO INHERIT\E + /xm, + like => { + %full_runs, %dump_test_schema_runs, + section_pre_data => 1, + }, + unlike => { + exclude_dump_test_schema => 1, + only_dump_measurement => 1, + binary_upgrade => 1, + }, + }, + 'CONSTRAINT PRIMARY KEY / WITHOUT OVERLAPS' => { create_sql => 'CREATE TABLE dump_test.test_table_tpk ( col1 int4range, -- 2.47.3 --ole5fkw5oubhenmr-- ^ permalink raw reply [nested|flat] 6+ messages in thread
end of thread, other threads:[~2026-02-25 18:17 UTC | newest] Thread overview: 6+ messages (download: mbox mbox.gz follow: Atom feed) -- links below jump to the message on this page -- 2022-09-21 18:03 [PATCH v15 05/14] meson: Add windows resource files Andres Freund <[email protected]> 2022-09-21 18:03 [PATCH v16 04/16] meson: Add windows resource files Andres Freund <[email protected]> 2022-09-26 17:32 [PATCH v17 06/23] meson: Add windows resource files Andres Freund <[email protected]> 2022-10-01 18:54 [PATCH v18 04/22] meson: Add windows resource files Andres Freund <[email protected]> 2025-12-18 23:28 [PATCH v8 06/10] bufmgr: Change BufferDesc.state to be a 64bit atomic Andres Freund <[email protected]> 2026-02-25 18:17 [PATCH v2] Fix pg_dump for NO INHERIT constraints on inheritance children Álvaro Herrera <[email protected]>
This inbox is served by agora; see mirroring instructions for how to clone and mirror all data and code used for this inbox