diff options
Diffstat (limited to 'src')
60 files changed, 688 insertions, 45 deletions
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/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/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/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/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')) |