From 0ffc201a51395ca71fe429ef86c872850a5850ee Mon Sep 17 00:00:00 2001
From: Noah Misch <noah@leadboat.com>
Date: Mon, 14 Jul 2014 14:07:52 -0400
Subject: [PATCH] Add file version information to most installed Windows
 binaries.

Prominent binaries already had this metadata.  A handful of minor
binaries, such as pg_regress.exe, still lack it; efforts to eliminate
such exceptions are welcome.

Michael Paquier, reviewed by MauMau.
---
 contrib/adminpack/Makefile                                  | 3 ++-
 contrib/auth_delay/Makefile                                 | 1 +
 contrib/auto_explain/Makefile                               | 3 ++-
 contrib/btree_gin/Makefile                                  | 3 ++-
 contrib/btree_gist/Makefile                                 | 3 ++-
 contrib/chkpass/Makefile                                    | 3 ++-
 contrib/citext/Makefile                                     | 1 +
 contrib/cube/Makefile                                       | 3 ++-
 contrib/dblink/Makefile                                     | 3 ++-
 contrib/dict_int/Makefile                                   | 3 ++-
 contrib/dict_xsyn/Makefile                                  | 3 ++-
 contrib/dummy_seclabel/Makefile                             | 1 +
 contrib/earthdistance/Makefile                              | 1 +
 contrib/file_fdw/Makefile                                   | 1 +
 contrib/fuzzystrmatch/Makefile                              | 3 ++-
 contrib/hstore/Makefile                                     | 3 ++-
 contrib/intarray/Makefile                                   | 4 +++-
 contrib/isn/Makefile                                        | 1 +
 contrib/lo/Makefile                                         | 1 +
 contrib/ltree/Makefile                                      | 3 ++-
 contrib/oid2name/Makefile                                   | 2 +-
 contrib/pageinspect/Makefile                                | 3 ++-
 contrib/passwordcheck/Makefile                              | 3 ++-
 contrib/pg_archivecleanup/Makefile                          | 2 +-
 contrib/pg_buffercache/Makefile                             | 3 ++-
 contrib/pg_freespacemap/Makefile                            | 3 ++-
 contrib/pg_prewarm/Makefile                                 | 3 ++-
 contrib/pg_standby/Makefile                                 | 2 +-
 contrib/pg_stat_statements/Makefile                         | 3 ++-
 contrib/pg_test_fsync/Makefile                              | 2 +-
 contrib/pg_test_timing/Makefile                             | 2 +-
 contrib/pg_trgm/Makefile                                    | 3 ++-
 contrib/pg_xlogdump/Makefile                                | 2 +-
 contrib/pgbench/Makefile                                    | 2 +-
 contrib/pgcrypto/Makefile                                   | 3 ++-
 contrib/pgrowlocks/Makefile                                 | 3 ++-
 contrib/pgstattuple/Makefile                                | 3 ++-
 contrib/postgres_fdw/Makefile                               | 3 ++-
 contrib/seg/Makefile                                        | 3 ++-
 contrib/sepgsql/Makefile                                    | 3 ++-
 contrib/spi/Makefile                                        | 1 +
 contrib/sslinfo/Makefile                                    | 3 ++-
 contrib/tablefunc/Makefile                                  | 1 +
 contrib/tcn/Makefile                                        | 1 +
 contrib/test_decoding/Makefile                              | 1 +
 contrib/test_parser/Makefile                                | 3 ++-
 contrib/test_shm_mq/Makefile                                | 3 ++-
 contrib/tsearch2/Makefile                                   | 1 +
 contrib/unaccent/Makefile                                   | 3 ++-
 contrib/uuid-ossp/Makefile                                  | 3 ++-
 contrib/vacuumlo/Makefile                                   | 2 +-
 contrib/worker_spi/Makefile                                 | 1 +
 contrib/xml2/Makefile                                       | 3 ++-
 src/backend/replication/libpqwalreceiver/Makefile           | 3 ++-
 .../utils/mb/conversion_procs/ascii_and_mic/Makefile        | 1 +
 .../utils/mb/conversion_procs/cyrillic_and_mic/Makefile     | 1 +
 .../utils/mb/conversion_procs/euc2004_sjis2004/Makefile     | 1 +
 .../utils/mb/conversion_procs/euc_cn_and_mic/Makefile       | 1 +
 .../utils/mb/conversion_procs/euc_jp_and_sjis/Makefile      | 1 +
 .../utils/mb/conversion_procs/euc_kr_and_mic/Makefile       | 1 +
 .../utils/mb/conversion_procs/euc_tw_and_big5/Makefile      | 1 +
 .../utils/mb/conversion_procs/latin2_and_win1250/Makefile   | 1 +
 .../utils/mb/conversion_procs/latin_and_mic/Makefile        | 1 +
 src/backend/utils/mb/conversion_procs/proc.mk               | 2 +-
 .../utils/mb/conversion_procs/utf8_and_ascii/Makefile       | 1 +
 .../utils/mb/conversion_procs/utf8_and_big5/Makefile        | 1 +
 .../utils/mb/conversion_procs/utf8_and_cyrillic/Makefile    | 1 +
 .../utils/mb/conversion_procs/utf8_and_euc2004/Makefile     | 1 +
 .../utils/mb/conversion_procs/utf8_and_euc_cn/Makefile      | 1 +
 .../utils/mb/conversion_procs/utf8_and_euc_jp/Makefile      | 1 +
 .../utils/mb/conversion_procs/utf8_and_euc_kr/Makefile      | 1 +
 .../utils/mb/conversion_procs/utf8_and_euc_tw/Makefile      | 1 +
 .../utils/mb/conversion_procs/utf8_and_gb18030/Makefile     | 1 +
 src/backend/utils/mb/conversion_procs/utf8_and_gbk/Makefile | 1 +
 .../utils/mb/conversion_procs/utf8_and_iso8859/Makefile     | 1 +
 .../utils/mb/conversion_procs/utf8_and_iso8859_1/Makefile   | 1 +
 .../utils/mb/conversion_procs/utf8_and_johab/Makefile       | 1 +
 .../utils/mb/conversion_procs/utf8_and_sjis/Makefile        | 1 +
 .../utils/mb/conversion_procs/utf8_and_sjis2004/Makefile    | 1 +
 src/backend/utils/mb/conversion_procs/utf8_and_uhc/Makefile | 1 +
 src/backend/utils/mb/conversion_procs/utf8_and_win/Makefile | 1 +
 src/bin/pg_basebackup/Makefile                              | 2 +-
 src/interfaces/ecpg/compatlib/Makefile                      | 3 ++-
 src/interfaces/ecpg/ecpglib/Makefile                        | 3 ++-
 src/interfaces/ecpg/pgtypeslib/Makefile                     | 3 ++-
 src/interfaces/ecpg/test/Makefile                           | 6 ++++--
 src/makefiles/Makefile.win32                                | 4 ++--
 src/makefiles/pgxs.mk                                       | 2 +-
 src/pl/plperl/GNUmakefile                                   | 3 ++-
 src/pl/plpgsql/src/Makefile                                 | 5 ++++-
 src/pl/plpython/Makefile                                    | 5 ++++-
 src/pl/tcl/Makefile                                         | 3 ++-
 src/tools/msvc/clean.bat                                    | 6 ++++++
 93 files changed, 147 insertions(+), 55 deletions(-)

diff --git a/contrib/adminpack/Makefile b/contrib/adminpack/Makefile
index 5cbc8f0c71f..f065f84bfb1 100644
--- a/contrib/adminpack/Makefile
+++ b/contrib/adminpack/Makefile
@@ -1,11 +1,12 @@
 # contrib/adminpack/Makefile
 
 MODULE_big = adminpack
-OBJS = adminpack.o
+OBJS = adminpack.o $(WIN32RES)
 PG_CPPFLAGS = -I$(libpq_srcdir)
 
 EXTENSION = adminpack
 DATA = adminpack--1.0.sql
+PGFILEDESC = "adminpack - support functions for pgAdmin"
 
 ifdef USE_PGXS
 PG_CONFIG = pg_config
diff --git a/contrib/auth_delay/Makefile b/contrib/auth_delay/Makefile
index 09d2d5418c5..4b86ec37f05 100644
--- a/contrib/auth_delay/Makefile
+++ b/contrib/auth_delay/Makefile
@@ -1,6 +1,7 @@
 # contrib/auth_delay/Makefile
 
 MODULES = auth_delay
+PGFILEDESC = "auth_delay - delay authentication failure reports"
 
 ifdef USE_PGXS
 PG_CONFIG = pg_config
diff --git a/contrib/auto_explain/Makefile b/contrib/auto_explain/Makefile
index 2d1443fe48e..fcf36c5ab09 100644
--- a/contrib/auto_explain/Makefile
+++ b/contrib/auto_explain/Makefile
@@ -1,7 +1,8 @@
 # contrib/auto_explain/Makefile
 
 MODULE_big = auto_explain
-OBJS = auto_explain.o
+OBJS = auto_explain.o $(WIN32RES)
+PGFILEDESC = "auto_explain - logging facility for execution plans"
 
 ifdef USE_PGXS
 PG_CONFIG = pg_config
diff --git a/contrib/btree_gin/Makefile b/contrib/btree_gin/Makefile
index 09fd3e6e11d..0492091599e 100644
--- a/contrib/btree_gin/Makefile
+++ b/contrib/btree_gin/Makefile
@@ -1,10 +1,11 @@
 # contrib/btree_gin/Makefile
 
 MODULE_big = btree_gin
-OBJS = btree_gin.o
+OBJS = btree_gin.o $(WIN32RES)
 
 EXTENSION = btree_gin
 DATA = btree_gin--1.0.sql btree_gin--unpackaged--1.0.sql
+PGFILEDESC = "btree_gin - B-tree equivalent GIN operator classes"
 
 REGRESS = install_btree_gin int2 int4 int8 float4 float8 money oid \
 	timestamp timestamptz time timetz date interval \
diff --git a/contrib/btree_gist/Makefile b/contrib/btree_gist/Makefile
index ba4af146589..19a59293e93 100644
--- a/contrib/btree_gist/Makefile
+++ b/contrib/btree_gist/Makefile
@@ -6,10 +6,11 @@ OBJS =  btree_gist.o btree_utils_num.o btree_utils_var.o btree_int2.o \
         btree_int4.o btree_int8.o btree_float4.o btree_float8.o btree_cash.o \
         btree_oid.o btree_ts.o btree_time.o btree_date.o btree_interval.o \
         btree_macaddr.o btree_inet.o btree_text.o btree_bytea.o btree_bit.o \
-        btree_numeric.o
+        btree_numeric.o $(WIN32RES)
 
 EXTENSION = btree_gist
 DATA = btree_gist--1.0.sql btree_gist--unpackaged--1.0.sql
+PGFILEDESC = "btree_gist - B-tree equivalent GIST operator classes"
 
 REGRESS = init int2 int4 int8 float4 float8 cash oid timestamp timestamptz \
         time timetz date interval macaddr inet cidr text varchar char bytea \
diff --git a/contrib/chkpass/Makefile b/contrib/chkpass/Makefile
index b775aef17d9..a2599ea2393 100644
--- a/contrib/chkpass/Makefile
+++ b/contrib/chkpass/Makefile
@@ -1,10 +1,11 @@
 # contrib/chkpass/Makefile
 
 MODULE_big = chkpass
-OBJS = chkpass.o
+OBJS = chkpass.o $(WIN32RES)
 
 EXTENSION = chkpass
 DATA = chkpass--1.0.sql chkpass--unpackaged--1.0.sql
+PGFILEDESC = "chkpass - encrypted password data type"
 
 SHLIB_LINK = $(filter -lcrypt, $(LIBS))
 
diff --git a/contrib/citext/Makefile b/contrib/citext/Makefile
index 65942528dd0..267854b5de7 100644
--- a/contrib/citext/Makefile
+++ b/contrib/citext/Makefile
@@ -4,6 +4,7 @@ MODULES = citext
 
 EXTENSION = citext
 DATA = citext--1.0.sql citext--unpackaged--1.0.sql
+PGFILEDESC = "citext - case-insensitive character string data type"
 
 REGRESS = citext
 
diff --git a/contrib/cube/Makefile b/contrib/cube/Makefile
index b5cd5d0f33f..67f7867761b 100644
--- a/contrib/cube/Makefile
+++ b/contrib/cube/Makefile
@@ -1,10 +1,11 @@
 # contrib/cube/Makefile
 
 MODULE_big = cube
-OBJS= cube.o cubeparse.o
+OBJS= cube.o cubeparse.o $(WIN32RES)
 
 EXTENSION = cube
 DATA = cube--1.0.sql cube--unpackaged--1.0.sql
+PGFILEDESC = "cube - multidimensional cube data type"
 
 REGRESS = cube
 
diff --git a/contrib/dblink/Makefile b/contrib/dblink/Makefile
index 32314a0abb4..9242ed74dc8 100644
--- a/contrib/dblink/Makefile
+++ b/contrib/dblink/Makefile
@@ -1,13 +1,14 @@
 # contrib/dblink/Makefile
 
 MODULE_big = dblink
-OBJS	= dblink.o
+OBJS	= dblink.o $(WIN32RES)
 PG_CPPFLAGS = -I$(libpq_srcdir)
 SHLIB_LINK = $(libpq)
 SHLIB_PREREQS = submake-libpq
 
 EXTENSION = dblink
 DATA = dblink--1.1.sql dblink--1.0--1.1.sql dblink--unpackaged--1.0.sql
+PGFILEDESC = "dblink - connect to other PostgreSQL databases"
 
 REGRESS = dblink
 
diff --git a/contrib/dict_int/Makefile b/contrib/dict_int/Makefile
index 3a3fc368dc6..f6ae24aa4da 100644
--- a/contrib/dict_int/Makefile
+++ b/contrib/dict_int/Makefile
@@ -1,10 +1,11 @@
 # contrib/dict_int/Makefile
 
 MODULE_big = dict_int
-OBJS = dict_int.o
+OBJS = dict_int.o $(WIN32RES)
 
 EXTENSION = dict_int
 DATA = dict_int--1.0.sql dict_int--unpackaged--1.0.sql
+PGFILEDESC = "dict_int - add-on dictionary template for full-text search"
 
 REGRESS = dict_int
 
diff --git a/contrib/dict_xsyn/Makefile b/contrib/dict_xsyn/Makefile
index ce92baa4789..0c401cf3c87 100644
--- a/contrib/dict_xsyn/Makefile
+++ b/contrib/dict_xsyn/Makefile
@@ -1,11 +1,12 @@
 # contrib/dict_xsyn/Makefile
 
 MODULE_big = dict_xsyn
-OBJS = dict_xsyn.o
+OBJS = dict_xsyn.o $(WIN32RES)
 
 EXTENSION = dict_xsyn
 DATA = dict_xsyn--1.0.sql dict_xsyn--unpackaged--1.0.sql
 DATA_TSEARCH = xsyn_sample.rules
+PGFILEDESC = "dict_xsyn - add-on dictionary template for full-text search"
 
 REGRESS = dict_xsyn
 
diff --git a/contrib/dummy_seclabel/Makefile b/contrib/dummy_seclabel/Makefile
index 105400f5f98..e69aa1ff6c4 100644
--- a/contrib/dummy_seclabel/Makefile
+++ b/contrib/dummy_seclabel/Makefile
@@ -1,6 +1,7 @@
 # contrib/dummy_seclabel/Makefile
 
 MODULES = dummy_seclabel
+PGFILEDESC = "dummy_seclabel - regression testing of the SECURITY LABEL statement"
 
 ifdef USE_PGXS
 PG_CONFIG = pg_config
diff --git a/contrib/earthdistance/Makefile b/contrib/earthdistance/Makefile
index 48a7cf8c7c0..93dcbe3a31c 100644
--- a/contrib/earthdistance/Makefile
+++ b/contrib/earthdistance/Makefile
@@ -4,6 +4,7 @@ MODULES = earthdistance
 
 EXTENSION = earthdistance
 DATA = earthdistance--1.0.sql earthdistance--unpackaged--1.0.sql
+PGFILEDESC = "earthdistance - calculate distances on the surface of the Earth"
 
 REGRESS = earthdistance
 REGRESS_OPTS = --extra-install=contrib/cube
diff --git a/contrib/file_fdw/Makefile b/contrib/file_fdw/Makefile
index 4616cec633c..4da9f2d697a 100644
--- a/contrib/file_fdw/Makefile
+++ b/contrib/file_fdw/Makefile
@@ -4,6 +4,7 @@ MODULES = file_fdw
 
 EXTENSION = file_fdw
 DATA = file_fdw--1.0.sql
+PGFILEDESC = "file_fdw - foreign data wrapper for files"
 
 REGRESS = file_fdw
 
diff --git a/contrib/fuzzystrmatch/Makefile b/contrib/fuzzystrmatch/Makefile
index 834b679b102..024265d4790 100644
--- a/contrib/fuzzystrmatch/Makefile
+++ b/contrib/fuzzystrmatch/Makefile
@@ -1,10 +1,11 @@
 # contrib/fuzzystrmatch/Makefile
 
 MODULE_big = fuzzystrmatch
-OBJS = fuzzystrmatch.o dmetaphone.o
+OBJS = fuzzystrmatch.o dmetaphone.o $(WIN32RES)
 
 EXTENSION = fuzzystrmatch
 DATA = fuzzystrmatch--1.0.sql fuzzystrmatch--unpackaged--1.0.sql
+PGFILEDESC = "fuzzystrmatch - similarities and distance between strings"
 
 ifdef USE_PGXS
 PG_CONFIG = pg_config
diff --git a/contrib/hstore/Makefile b/contrib/hstore/Makefile
index 2b60fbed0e0..3193668a0e7 100644
--- a/contrib/hstore/Makefile
+++ b/contrib/hstore/Makefile
@@ -2,12 +2,13 @@
 
 MODULE_big = hstore
 OBJS = hstore_io.o hstore_op.o hstore_gist.o hstore_gin.o hstore_compat.o \
-	crc32.o
+	crc32.o $(WIN32RES)
 
 EXTENSION = hstore
 DATA = hstore--1.3.sql hstore--1.2--1.3.sql \
 	hstore--1.1--1.2.sql hstore--1.0--1.1.sql \
 	hstore--unpackaged--1.0.sql
+PGFILEDESC = "hstore - key/value pair data type"
 
 REGRESS = hstore
 
diff --git a/contrib/intarray/Makefile b/contrib/intarray/Makefile
index 71f820ec4a8..920c5b1ba03 100644
--- a/contrib/intarray/Makefile
+++ b/contrib/intarray/Makefile
@@ -1,10 +1,12 @@
 # contrib/intarray/Makefile
 
 MODULE_big = _int
-OBJS = _int_bool.o _int_gist.o _int_op.o _int_tool.o _intbig_gist.o _int_gin.o
+OBJS = _int_bool.o _int_gist.o _int_op.o _int_tool.o \
+	_intbig_gist.o _int_gin.o $(WIN32RES)
 
 EXTENSION = intarray
 DATA = intarray--1.0.sql intarray--unpackaged--1.0.sql
+PGFILEDESC = "intarray - functions and operators for arrays of integers"
 
 REGRESS = _int
 
diff --git a/contrib/isn/Makefile b/contrib/isn/Makefile
index bd8f193e938..75c07a8296d 100644
--- a/contrib/isn/Makefile
+++ b/contrib/isn/Makefile
@@ -4,6 +4,7 @@ MODULES = isn
 
 EXTENSION = isn
 DATA = isn--1.0.sql isn--unpackaged--1.0.sql
+PGFILEDESC = "isn - data types for international product numbering standards"
 
 ifdef USE_PGXS
 PG_CONFIG = pg_config
diff --git a/contrib/lo/Makefile b/contrib/lo/Makefile
index 66b337c17a6..b956aa4fa12 100644
--- a/contrib/lo/Makefile
+++ b/contrib/lo/Makefile
@@ -4,6 +4,7 @@ MODULES = lo
 
 EXTENSION = lo
 DATA = lo--1.0.sql lo--unpackaged--1.0.sql
+PGFILEDESC = "lo - management for large objects"
 
 ifdef USE_PGXS
 PG_CONFIG = pg_config
diff --git a/contrib/ltree/Makefile b/contrib/ltree/Makefile
index 65d42f875f0..a41e45723d9 100644
--- a/contrib/ltree/Makefile
+++ b/contrib/ltree/Makefile
@@ -2,11 +2,12 @@
 
 MODULE_big = ltree
 OBJS = 	ltree_io.o ltree_op.o lquery_op.o _ltree_op.o crc32.o \
-	ltxtquery_io.o ltxtquery_op.o ltree_gist.o _ltree_gist.o
+	ltxtquery_io.o ltxtquery_op.o ltree_gist.o _ltree_gist.o $(WIN32RES)
 PG_CPPFLAGS = -DLOWER_NODE
 
 EXTENSION = ltree
 DATA = ltree--1.0.sql ltree--unpackaged--1.0.sql
+PGFILEDESC = "ltree - hierarchical label data type"
 
 REGRESS = ltree
 
diff --git a/contrib/oid2name/Makefile b/contrib/oid2name/Makefile
index f695b4a84e1..3414b4a5cca 100644
--- a/contrib/oid2name/Makefile
+++ b/contrib/oid2name/Makefile
@@ -4,7 +4,7 @@ PGFILEDESC = "oid2name - examine the file structure"
 PGAPPICON = win32
 
 PROGRAM = oid2name
-OBJS	= oid2name.o
+OBJS	= oid2name.o $(WIN32RES)
 
 PG_CPPFLAGS = -I$(libpq_srcdir)
 PG_LIBS = $(libpq_pgport)
diff --git a/contrib/pageinspect/Makefile b/contrib/pageinspect/Makefile
index ee78cb29894..f10229db482 100644
--- a/contrib/pageinspect/Makefile
+++ b/contrib/pageinspect/Makefile
@@ -1,11 +1,12 @@
 # contrib/pageinspect/Makefile
 
 MODULE_big	= pageinspect
-OBJS		= rawpage.o heapfuncs.o btreefuncs.o fsmfuncs.o
+OBJS		= rawpage.o heapfuncs.o btreefuncs.o fsmfuncs.o $(WIN32RES)
 
 EXTENSION = pageinspect
 DATA = pageinspect--1.2.sql pageinspect--1.0--1.1.sql \
 	pageinspect--1.1--1.2.sql pageinspect--unpackaged--1.0.sql
+PGFILEDESC = "pageinspect - functions to inspect contents of database pages"
 
 ifdef USE_PGXS
 PG_CONFIG = pg_config
diff --git a/contrib/passwordcheck/Makefile b/contrib/passwordcheck/Makefile
index 4829bfd1f34..4652aeb3d7c 100644
--- a/contrib/passwordcheck/Makefile
+++ b/contrib/passwordcheck/Makefile
@@ -1,7 +1,8 @@
 # contrib/passwordcheck/Makefile
 
 MODULE_big = passwordcheck
-OBJS = passwordcheck.o
+OBJS = passwordcheck.o $(WIN32RES)
+PGFILEDESC = "passwordcheck - strengthen user password checks"
 
 # uncomment the following two lines to enable cracklib support
 # PG_CPPFLAGS = -DUSE_CRACKLIB '-DCRACKLIB_DICTPATH="/usr/lib/cracklib_dict"'
diff --git a/contrib/pg_archivecleanup/Makefile b/contrib/pg_archivecleanup/Makefile
index 39c55d8713c..ab5239078c5 100644
--- a/contrib/pg_archivecleanup/Makefile
+++ b/contrib/pg_archivecleanup/Makefile
@@ -4,7 +4,7 @@ PGFILEDESC = "pg_archivecleanup - cleans archive when used with streaming replic
 PGAPPICON = win32
 
 PROGRAM = pg_archivecleanup
-OBJS	= pg_archivecleanup.o
+OBJS	= pg_archivecleanup.o $(WIN32RES)
 
 ifdef USE_PGXS
 PG_CONFIG = pg_config
diff --git a/contrib/pg_buffercache/Makefile b/contrib/pg_buffercache/Makefile
index 323c0ac8ed1..c5297d98d48 100644
--- a/contrib/pg_buffercache/Makefile
+++ b/contrib/pg_buffercache/Makefile
@@ -1,10 +1,11 @@
 # contrib/pg_buffercache/Makefile
 
 MODULE_big = pg_buffercache
-OBJS = pg_buffercache_pages.o
+OBJS = pg_buffercache_pages.o $(WIN32RES)
 
 EXTENSION = pg_buffercache
 DATA = pg_buffercache--1.0.sql pg_buffercache--unpackaged--1.0.sql
+PGFILEDESC = "pg_buffercache - monitoring of shared buffer cache in real-time"
 
 ifdef USE_PGXS
 PG_CONFIG = pg_config
diff --git a/contrib/pg_freespacemap/Makefile b/contrib/pg_freespacemap/Makefile
index b2e3ba3aa35..5760d9fe51f 100644
--- a/contrib/pg_freespacemap/Makefile
+++ b/contrib/pg_freespacemap/Makefile
@@ -1,10 +1,11 @@
 # contrib/pg_freespacemap/Makefile
 
 MODULE_big = pg_freespacemap
-OBJS = pg_freespacemap.o
+OBJS = pg_freespacemap.o $(WIN32RES)
 
 EXTENSION = pg_freespacemap
 DATA = pg_freespacemap--1.0.sql pg_freespacemap--unpackaged--1.0.sql
+PGFILEDESC = "pg_freespacemap - monitoring of free space map"
 
 ifdef USE_PGXS
 PG_CONFIG = pg_config
diff --git a/contrib/pg_prewarm/Makefile b/contrib/pg_prewarm/Makefile
index 176a29a0036..eeba5026724 100644
--- a/contrib/pg_prewarm/Makefile
+++ b/contrib/pg_prewarm/Makefile
@@ -1,10 +1,11 @@
 # contrib/pg_prewarm/Makefile
 
 MODULE_big = pg_prewarm
-OBJS = pg_prewarm.o
+OBJS = pg_prewarm.o $(WIN32RES)
 
 EXTENSION = pg_prewarm
 DATA = pg_prewarm--1.0.sql
+PGFILEDESC = "pg_prewarm - preload relation data into system buffer cache"
 
 ifdef USE_PGXS
 PG_CONFIG = pg_config
diff --git a/contrib/pg_standby/Makefile b/contrib/pg_standby/Makefile
index b7c6ae95e7f..0bca2f8e9ed 100644
--- a/contrib/pg_standby/Makefile
+++ b/contrib/pg_standby/Makefile
@@ -4,7 +4,7 @@ PGFILEDESC = "pg_standby - supports creation of a warm standby"
 PGAPPICON = win32
 
 PROGRAM = pg_standby
-OBJS	= pg_standby.o
+OBJS	= pg_standby.o $(WIN32RES)
 
 ifdef USE_PGXS
 PG_CONFIG = pg_config
diff --git a/contrib/pg_stat_statements/Makefile b/contrib/pg_stat_statements/Makefile
index 95a27670067..270990964c6 100644
--- a/contrib/pg_stat_statements/Makefile
+++ b/contrib/pg_stat_statements/Makefile
@@ -1,11 +1,12 @@
 # contrib/pg_stat_statements/Makefile
 
 MODULE_big = pg_stat_statements
-OBJS = pg_stat_statements.o
+OBJS = pg_stat_statements.o $(WIN32RES)
 
 EXTENSION = pg_stat_statements
 DATA = pg_stat_statements--1.2.sql pg_stat_statements--1.1--1.2.sql \
 	pg_stat_statements--1.0--1.1.sql pg_stat_statements--unpackaged--1.0.sql
+PGFILEDESC = "pg_stat_statements - execution statistics of SQL statements"
 
 ifdef USE_PGXS
 PG_CONFIG = pg_config
diff --git a/contrib/pg_test_fsync/Makefile b/contrib/pg_test_fsync/Makefile
index b4564290988..15afba76829 100644
--- a/contrib/pg_test_fsync/Makefile
+++ b/contrib/pg_test_fsync/Makefile
@@ -4,7 +4,7 @@ PGFILEDESC = "pg_test_fsync - test various disk sync methods"
 PGAPPICON = win32
 
 PROGRAM  = pg_test_fsync
-OBJS = pg_test_fsync.o
+OBJS = pg_test_fsync.o $(WIN32RES)
 
 ifdef USE_PGXS
 PG_CONFIG = pg_config
diff --git a/contrib/pg_test_timing/Makefile b/contrib/pg_test_timing/Makefile
index b8b266a2fcd..8b37aa82496 100644
--- a/contrib/pg_test_timing/Makefile
+++ b/contrib/pg_test_timing/Makefile
@@ -4,7 +4,7 @@ PGFILEDESC = "pg_test_timing - test timing overhead"
 PGAPPICON = win32
 
 PROGRAM  = pg_test_timing
-OBJS = pg_test_timing.o
+OBJS = pg_test_timing.o $(WIN32RES)
 
 ifdef USE_PGXS
 PG_CONFIG = pg_config
diff --git a/contrib/pg_trgm/Makefile b/contrib/pg_trgm/Makefile
index 0d549f8b6c3..e081a1e5e9f 100644
--- a/contrib/pg_trgm/Makefile
+++ b/contrib/pg_trgm/Makefile
@@ -1,10 +1,11 @@
 # contrib/pg_trgm/Makefile
 
 MODULE_big = pg_trgm
-OBJS = trgm_op.o trgm_gist.o trgm_gin.o trgm_regexp.o
+OBJS = trgm_op.o trgm_gist.o trgm_gin.o trgm_regexp.o $(WIN32RES)
 
 EXTENSION = pg_trgm
 DATA = pg_trgm--1.1.sql pg_trgm--1.0--1.1.sql pg_trgm--unpackaged--1.0.sql
+PGFILEDESC = "pg_trgm - trigram matching"
 
 REGRESS = pg_trgm
 
diff --git a/contrib/pg_xlogdump/Makefile b/contrib/pg_xlogdump/Makefile
index ada261c4dd0..30a8706948c 100644
--- a/contrib/pg_xlogdump/Makefile
+++ b/contrib/pg_xlogdump/Makefile
@@ -1,6 +1,6 @@
 # contrib/pg_xlogdump/Makefile
 
-PGFILEDESC = "pg_xlogdump"
+PGFILEDESC = "pg_xlogdump - decode and display WAL"
 PGAPPICON=win32
 
 PROGRAM = pg_xlogdump
diff --git a/contrib/pgbench/Makefile b/contrib/pgbench/Makefile
index b8f5fb467f6..b8e2fc841ec 100644
--- a/contrib/pgbench/Makefile
+++ b/contrib/pgbench/Makefile
@@ -4,7 +4,7 @@ PGFILEDESC = "pgbench - a simple program for running benchmark tests"
 PGAPPICON = win32
 
 PROGRAM = pgbench
-OBJS	= pgbench.o
+OBJS	= pgbench.o $(WIN32RES)
 
 PG_CPPFLAGS = -I$(libpq_srcdir)
 PG_LIBS = $(libpq_pgport) $(PTHREAD_LIBS)
diff --git a/contrib/pgcrypto/Makefile b/contrib/pgcrypto/Makefile
index 1c85c982ff9..05716c99fe3 100644
--- a/contrib/pgcrypto/Makefile
+++ b/contrib/pgcrypto/Makefile
@@ -23,10 +23,11 @@ SRCS		= pgcrypto.c px.c px-hmac.c px-crypt.c \
 		pgp-pgsql.c
 
 MODULE_big	= pgcrypto
-OBJS		= $(SRCS:.c=.o)
+OBJS		= $(SRCS:.c=.o) $(WIN32RES)
 
 EXTENSION = pgcrypto
 DATA = pgcrypto--1.1.sql pgcrypto--1.0--1.1.sql pgcrypto--unpackaged--1.0.sql
+PGFILEDESC = "pgcrypto - cryptographic functions"
 
 REGRESS = init md5 sha1 hmac-md5 hmac-sha1 blowfish rijndael \
 	$(CF_TESTS) \
diff --git a/contrib/pgrowlocks/Makefile b/contrib/pgrowlocks/Makefile
index fe8042344f6..059ea0528b7 100644
--- a/contrib/pgrowlocks/Makefile
+++ b/contrib/pgrowlocks/Makefile
@@ -1,10 +1,11 @@
 # contrib/pgrowlocks/Makefile
 
 MODULE_big	= pgrowlocks
-OBJS		= pgrowlocks.o
+OBJS		= pgrowlocks.o $(WIN32RES)
 
 EXTENSION = pgrowlocks
 DATA = pgrowlocks--1.1.sql pgrowlocks--1.0--1.1.sql pgrowlocks--unpackaged--1.0.sql
+PGFILEDESC = "pgrowlocks - display row locking information"
 
 ifdef USE_PGXS
 PG_CONFIG = pg_config
diff --git a/contrib/pgstattuple/Makefile b/contrib/pgstattuple/Makefile
index d991c3a8039..862585cc017 100644
--- a/contrib/pgstattuple/Makefile
+++ b/contrib/pgstattuple/Makefile
@@ -1,10 +1,11 @@
 # contrib/pgstattuple/Makefile
 
 MODULE_big	= pgstattuple
-OBJS		= pgstattuple.o pgstatindex.o
+OBJS		= pgstattuple.o pgstatindex.o $(WIN32RES)
 
 EXTENSION = pgstattuple
 DATA = pgstattuple--1.2.sql pgstattuple--1.1--1.2.sql pgstattuple--1.0--1.1.sql pgstattuple--unpackaged--1.0.sql
+PGFILEDESC = "pgstattuple - tuple-level statistics"
 
 REGRESS = pgstattuple
 
diff --git a/contrib/postgres_fdw/Makefile b/contrib/postgres_fdw/Makefile
index 8c497201d0e..7c660955caf 100644
--- a/contrib/postgres_fdw/Makefile
+++ b/contrib/postgres_fdw/Makefile
@@ -1,7 +1,8 @@
 # contrib/postgres_fdw/Makefile
 
 MODULE_big = postgres_fdw
-OBJS = postgres_fdw.o option.o deparse.o connection.o
+OBJS = postgres_fdw.o option.o deparse.o connection.o $(WIN32RES)
+PGFILEDESC = "postgres_fdw - foreign data wrapper for PostgreSQL"
 
 PG_CPPFLAGS = -I$(libpq_srcdir)
 SHLIB_LINK = $(libpq)
diff --git a/contrib/seg/Makefile b/contrib/seg/Makefile
index fb9c5765c34..d6de8a24449 100644
--- a/contrib/seg/Makefile
+++ b/contrib/seg/Makefile
@@ -1,10 +1,11 @@
 # contrib/seg/Makefile
 
 MODULE_big = seg
-OBJS = seg.o segparse.o
+OBJS = seg.o segparse.o $(WIN32RES)
 
 EXTENSION = seg
 DATA = seg--1.0.sql seg--unpackaged--1.0.sql
+PGFILEDESC = "seg - line segment data type"
 
 REGRESS = seg
 
diff --git a/contrib/sepgsql/Makefile b/contrib/sepgsql/Makefile
index ff3a61da25b..f194b7ed8a4 100644
--- a/contrib/sepgsql/Makefile
+++ b/contrib/sepgsql/Makefile
@@ -2,8 +2,9 @@
 
 MODULE_big = sepgsql
 OBJS = hooks.o selinux.o uavc.o label.o dml.o \
-	database.o schema.o relation.o proc.o
+	database.o schema.o relation.o proc.o $(WIN32RES)
 DATA_built = sepgsql.sql
+PGFILEDESC = "sepgsql - SELinux integration"
 
 # Note: because we don't tell the Makefile there are any regression tests,
 # we have to clean those result files explicitly
diff --git a/contrib/spi/Makefile b/contrib/spi/Makefile
index 0c11bfcbbd4..10ab5bb5fef 100644
--- a/contrib/spi/Makefile
+++ b/contrib/spi/Makefile
@@ -9,6 +9,7 @@ DATA = autoinc--1.0.sql autoinc--unpackaged--1.0.sql \
        moddatetime--1.0.sql moddatetime--unpackaged--1.0.sql \
        refint--1.0.sql refint--unpackaged--1.0.sql \
        timetravel--1.0.sql timetravel--unpackaged--1.0.sql
+PGFILEDESC = "spi - examples of using SPI and triggers"
 
 DOCS = $(addsuffix .example, $(MODULES))
 
diff --git a/contrib/sslinfo/Makefile b/contrib/sslinfo/Makefile
index 0dee6ed2f76..86cbf053e6b 100644
--- a/contrib/sslinfo/Makefile
+++ b/contrib/sslinfo/Makefile
@@ -1,10 +1,11 @@
 # contrib/sslinfo/Makefile
 
 MODULE_big = sslinfo
-OBJS = sslinfo.o
+OBJS = sslinfo.o $(WIN32RES)
 
 EXTENSION = sslinfo
 DATA = sslinfo--1.0.sql sslinfo--unpackaged--1.0.sql
+PGFILEDESC = "sslinfo - information about client SSL certificate"
 
 ifdef USE_PGXS
 PG_CONFIG = pg_config
diff --git a/contrib/tablefunc/Makefile b/contrib/tablefunc/Makefile
index eb108931ec4..7150117640d 100644
--- a/contrib/tablefunc/Makefile
+++ b/contrib/tablefunc/Makefile
@@ -4,6 +4,7 @@ MODULES = tablefunc
 
 EXTENSION = tablefunc
 DATA = tablefunc--1.0.sql tablefunc--unpackaged--1.0.sql
+PGFILEDESC = "tablefunc - various functions that return tables"
 
 REGRESS = tablefunc
 
diff --git a/contrib/tcn/Makefile b/contrib/tcn/Makefile
index 7bac5e359c2..2de3425bbda 100644
--- a/contrib/tcn/Makefile
+++ b/contrib/tcn/Makefile
@@ -4,6 +4,7 @@ MODULES = tcn
 
 EXTENSION = tcn
 DATA = tcn--1.0.sql
+PGFILEDESC = "tcn - trigger function notifying listeners"
 
 ifdef USE_PGXS
 PG_CONFIG = pg_config
diff --git a/contrib/test_decoding/Makefile b/contrib/test_decoding/Makefile
index daf4e60c39d..d7f32c3ec58 100644
--- a/contrib/test_decoding/Makefile
+++ b/contrib/test_decoding/Makefile
@@ -1,6 +1,7 @@
 # contrib/test_decoding/Makefile
 
 MODULES = test_decoding
+PGFILEDESC = "test_decoding - example of a logical decoding output plugin"
 
 # Note: because we don't tell the Makefile there are any regression tests,
 # we have to clean those result files explicitly
diff --git a/contrib/test_parser/Makefile b/contrib/test_parser/Makefile
index b9766cb0234..7e068abd3e6 100644
--- a/contrib/test_parser/Makefile
+++ b/contrib/test_parser/Makefile
@@ -1,7 +1,8 @@
 # contrib/test_parser/Makefile
 
 MODULE_big = test_parser
-OBJS = test_parser.o
+OBJS = test_parser.o $(WIN32RES)
+PGFILEDESC = "test_parser - example of a custom parser for full-text search"
 
 EXTENSION = test_parser
 DATA = test_parser--1.0.sql test_parser--unpackaged--1.0.sql
diff --git a/contrib/test_shm_mq/Makefile b/contrib/test_shm_mq/Makefile
index 5e5ac1ceb81..e3c405442c5 100644
--- a/contrib/test_shm_mq/Makefile
+++ b/contrib/test_shm_mq/Makefile
@@ -1,7 +1,8 @@
 # contrib/test_shm_mq/Makefile
 
 MODULE_big = test_shm_mq
-OBJS = test.o setup.o worker.o
+OBJS = test.o setup.o worker.o $(WIN32RES)
+PGFILEDESC = "test_shm_mq - example use of shared memory message queue"
 
 EXTENSION = test_shm_mq
 DATA = test_shm_mq--1.0.sql
diff --git a/contrib/tsearch2/Makefile b/contrib/tsearch2/Makefile
index d260fd00309..36dcedc688e 100644
--- a/contrib/tsearch2/Makefile
+++ b/contrib/tsearch2/Makefile
@@ -4,6 +4,7 @@ MODULES = tsearch2
 
 EXTENSION = tsearch2
 DATA = tsearch2--1.0.sql tsearch2--unpackaged--1.0.sql
+PGFILEDESC = "tsearch2 - backward-compatible text search functionality"
 
 REGRESS = tsearch2
 
diff --git a/contrib/unaccent/Makefile b/contrib/unaccent/Makefile
index f0be62db53f..bc93e6f8dd2 100644
--- a/contrib/unaccent/Makefile
+++ b/contrib/unaccent/Makefile
@@ -1,11 +1,12 @@
 # contrib/unaccent/Makefile
 
 MODULE_big = unaccent
-OBJS = unaccent.o
+OBJS = unaccent.o $(WIN32RES)
 
 EXTENSION = unaccent
 DATA = unaccent--1.0.sql unaccent--unpackaged--1.0.sql
 DATA_TSEARCH = unaccent.rules
+PGFILEDESC = "unaccent - text search dictionary that removes accents"
 
 REGRESS = unaccent
 
diff --git a/contrib/uuid-ossp/Makefile b/contrib/uuid-ossp/Makefile
index 335cc7ef50a..93b9355a0ca 100644
--- a/contrib/uuid-ossp/Makefile
+++ b/contrib/uuid-ossp/Makefile
@@ -1,10 +1,11 @@
 # contrib/uuid-ossp/Makefile
 
 MODULE_big = uuid-ossp
-OBJS = uuid-ossp.o $(UUID_EXTRA_OBJS)
+OBJS = uuid-ossp.o $(UUID_EXTRA_OBJS) $(WIN32RES)
 
 EXTENSION = uuid-ossp
 DATA = uuid-ossp--1.0.sql uuid-ossp--unpackaged--1.0.sql
+PGFILEDESC = "uuid-ossp - UUID generation"
 
 REGRESS = uuid_ossp
 
diff --git a/contrib/vacuumlo/Makefile b/contrib/vacuumlo/Makefile
index b658f9bf6f8..b4ba896fba9 100644
--- a/contrib/vacuumlo/Makefile
+++ b/contrib/vacuumlo/Makefile
@@ -4,7 +4,7 @@ PGFILEDESC = "vacuumlo - removes orphaned large objects"
 PGAPPICON = win32
 
 PROGRAM = vacuumlo
-OBJS	= vacuumlo.o
+OBJS	= vacuumlo.o $(WIN32RES)
 
 PG_CPPFLAGS = -I$(libpq_srcdir)
 PG_LIBS = $(libpq_pgport)
diff --git a/contrib/worker_spi/Makefile b/contrib/worker_spi/Makefile
index fbb29b4f2fe..5cce4d1ef9e 100644
--- a/contrib/worker_spi/Makefile
+++ b/contrib/worker_spi/Makefile
@@ -4,6 +4,7 @@ MODULES = worker_spi
 
 EXTENSION = worker_spi
 DATA = worker_spi--1.0.sql
+PGFILEDESC = "worker_spi - background worker example"
 
 ifdef USE_PGXS
 PG_CONFIG = pg_config
diff --git a/contrib/xml2/Makefile b/contrib/xml2/Makefile
index be3d018cf53..2f7a08cff1a 100644
--- a/contrib/xml2/Makefile
+++ b/contrib/xml2/Makefile
@@ -1,10 +1,11 @@
 # contrib/xml2/Makefile
 
 MODULE_big = pgxml
-OBJS = xpath.o xslt_proc.o
+OBJS = xpath.o xslt_proc.o $(WIN32RES)
 
 EXTENSION = xml2
 DATA = xml2--1.0.sql xml2--unpackaged--1.0.sql
+PGFILEDESC = "xml2 - XPath querying and XSLT"
 
 REGRESS = xml2
 
diff --git a/src/backend/replication/libpqwalreceiver/Makefile b/src/backend/replication/libpqwalreceiver/Makefile
index 774adaa24d4..6c95c1ce97b 100644
--- a/src/backend/replication/libpqwalreceiver/Makefile
+++ b/src/backend/replication/libpqwalreceiver/Makefile
@@ -14,9 +14,10 @@ include $(top_builddir)/src/Makefile.global
 
 override CPPFLAGS := -I$(srcdir) -I$(libpq_srcdir) $(CPPFLAGS)
 
-OBJS = libpqwalreceiver.o
+OBJS = libpqwalreceiver.o $(WIN32RES)
 SHLIB_LINK = $(libpq)
 SHLIB_PREREQS = submake-libpq
+PGFILEDESC = "libpqwalreceiver - receive WAL during streaming replication"
 NAME = libpqwalreceiver
 
 all: all-shared-lib
diff --git a/src/backend/utils/mb/conversion_procs/ascii_and_mic/Makefile b/src/backend/utils/mb/conversion_procs/ascii_and_mic/Makefile
index d71ca16c000..fa65eba9fd7 100644
--- a/src/backend/utils/mb/conversion_procs/ascii_and_mic/Makefile
+++ b/src/backend/utils/mb/conversion_procs/ascii_and_mic/Makefile
@@ -8,5 +8,6 @@ top_builddir = ../../../../../..
 include $(top_builddir)/src/Makefile.global
 
 NAME		= ascii_and_mic
+PGFILEDESC	= "ascii <-> mic text conversions"
 
 include $(srcdir)/../proc.mk
diff --git a/src/backend/utils/mb/conversion_procs/cyrillic_and_mic/Makefile b/src/backend/utils/mb/conversion_procs/cyrillic_and_mic/Makefile
index 78c384a6b68..e7cd8e8162a 100644
--- a/src/backend/utils/mb/conversion_procs/cyrillic_and_mic/Makefile
+++ b/src/backend/utils/mb/conversion_procs/cyrillic_and_mic/Makefile
@@ -8,5 +8,6 @@ top_builddir = ../../../../../..
 include $(top_builddir)/src/Makefile.global
 
 NAME		= cyrillic_and_mic
+PGFILEDESC	= "cyrillic <-> mic text conversions"
 
 include $(srcdir)/../proc.mk
diff --git a/src/backend/utils/mb/conversion_procs/euc2004_sjis2004/Makefile b/src/backend/utils/mb/conversion_procs/euc2004_sjis2004/Makefile
index 199e65525a0..fe0221cc34b 100644
--- a/src/backend/utils/mb/conversion_procs/euc2004_sjis2004/Makefile
+++ b/src/backend/utils/mb/conversion_procs/euc2004_sjis2004/Makefile
@@ -8,5 +8,6 @@ top_builddir = ../../../../../..
 include $(top_builddir)/src/Makefile.global
 
 NAME		= euc2004_sjis2004
+PGFILEDESC	= "euc2004 <-> sjis2004 text conversions"
 
 include $(srcdir)/../proc.mk
diff --git a/src/backend/utils/mb/conversion_procs/euc_cn_and_mic/Makefile b/src/backend/utils/mb/conversion_procs/euc_cn_and_mic/Makefile
index a7406564291..cb6a83f5841 100644
--- a/src/backend/utils/mb/conversion_procs/euc_cn_and_mic/Makefile
+++ b/src/backend/utils/mb/conversion_procs/euc_cn_and_mic/Makefile
@@ -8,5 +8,6 @@ top_builddir = ../../../../../..
 include $(top_builddir)/src/Makefile.global
 
 NAME		= euc_cn_and_mic
+PGFILEDESC	= "euc_cn <-> mic text conversions"
 
 include $(srcdir)/../proc.mk
diff --git a/src/backend/utils/mb/conversion_procs/euc_jp_and_sjis/Makefile b/src/backend/utils/mb/conversion_procs/euc_jp_and_sjis/Makefile
index fa167e98afd..0b1de0e48dc 100644
--- a/src/backend/utils/mb/conversion_procs/euc_jp_and_sjis/Makefile
+++ b/src/backend/utils/mb/conversion_procs/euc_jp_and_sjis/Makefile
@@ -8,5 +8,6 @@ top_builddir = ../../../../../..
 include $(top_builddir)/src/Makefile.global
 
 NAME		= euc_jp_and_sjis
+PGFILEDESC	= "euc_jp <-> sjis text conversions"
 
 include $(srcdir)/../proc.mk
diff --git a/src/backend/utils/mb/conversion_procs/euc_kr_and_mic/Makefile b/src/backend/utils/mb/conversion_procs/euc_kr_and_mic/Makefile
index 5ce5548dc34..d43b082bd5f 100644
--- a/src/backend/utils/mb/conversion_procs/euc_kr_and_mic/Makefile
+++ b/src/backend/utils/mb/conversion_procs/euc_kr_and_mic/Makefile
@@ -8,5 +8,6 @@ top_builddir = ../../../../../..
 include $(top_builddir)/src/Makefile.global
 
 NAME		= euc_kr_and_mic
+PGFILEDESC	= "euc_kr <-> mic text conversions"
 
 include $(srcdir)/../proc.mk
diff --git a/src/backend/utils/mb/conversion_procs/euc_tw_and_big5/Makefile b/src/backend/utils/mb/conversion_procs/euc_tw_and_big5/Makefile
index 76254354342..5ac238908da 100644
--- a/src/backend/utils/mb/conversion_procs/euc_tw_and_big5/Makefile
+++ b/src/backend/utils/mb/conversion_procs/euc_tw_and_big5/Makefile
@@ -8,6 +8,7 @@ top_builddir = ../../../../../..
 include $(top_builddir)/src/Makefile.global
 
 NAME		= euc_tw_and_big5
+PGFILEDESC	= "euc_tw <-> big5 text conversions"
 
 SRCS += big5.c
 OBJS += big5.o
diff --git a/src/backend/utils/mb/conversion_procs/latin2_and_win1250/Makefile b/src/backend/utils/mb/conversion_procs/latin2_and_win1250/Makefile
index 7587b66cad4..5e48dae2e8a 100644
--- a/src/backend/utils/mb/conversion_procs/latin2_and_win1250/Makefile
+++ b/src/backend/utils/mb/conversion_procs/latin2_and_win1250/Makefile
@@ -8,5 +8,6 @@ top_builddir = ../../../../../..
 include $(top_builddir)/src/Makefile.global
 
 NAME		= latin2_and_win1250
+PGFILEDESC	= "latin2 <-> win1250 text conversions"
 
 include $(srcdir)/../proc.mk
diff --git a/src/backend/utils/mb/conversion_procs/latin_and_mic/Makefile b/src/backend/utils/mb/conversion_procs/latin_and_mic/Makefile
index ec887406b9b..c404738d2f6 100644
--- a/src/backend/utils/mb/conversion_procs/latin_and_mic/Makefile
+++ b/src/backend/utils/mb/conversion_procs/latin_and_mic/Makefile
@@ -8,5 +8,6 @@ top_builddir = ../../../../../..
 include $(top_builddir)/src/Makefile.global
 
 NAME		= latin_and_mic
+PGFILEDESC	= "latin <-> mic text conversions"
 
 include $(srcdir)/../proc.mk
diff --git a/src/backend/utils/mb/conversion_procs/proc.mk b/src/backend/utils/mb/conversion_procs/proc.mk
index 77322a452ef..e0a3b74b25e 100644
--- a/src/backend/utils/mb/conversion_procs/proc.mk
+++ b/src/backend/utils/mb/conversion_procs/proc.mk
@@ -1,5 +1,5 @@
 SRCS		+= $(NAME).c
-OBJS		+= $(NAME).o
+OBJS		+= $(NAME).o $(WIN32RES)
 
 rpath =
 
diff --git a/src/backend/utils/mb/conversion_procs/utf8_and_ascii/Makefile b/src/backend/utils/mb/conversion_procs/utf8_and_ascii/Makefile
index a4b1b3ff5d0..7bd68e209b7 100644
--- a/src/backend/utils/mb/conversion_procs/utf8_and_ascii/Makefile
+++ b/src/backend/utils/mb/conversion_procs/utf8_and_ascii/Makefile
@@ -8,5 +8,6 @@ top_builddir = ../../../../../..
 include $(top_builddir)/src/Makefile.global
 
 NAME		= utf8_and_ascii
+PGFILEDESC	= "utf8 <-> ascii text conversions"
 
 include $(srcdir)/../proc.mk
diff --git a/src/backend/utils/mb/conversion_procs/utf8_and_big5/Makefile b/src/backend/utils/mb/conversion_procs/utf8_and_big5/Makefile
index df728369a7a..2c274f3d9cc 100644
--- a/src/backend/utils/mb/conversion_procs/utf8_and_big5/Makefile
+++ b/src/backend/utils/mb/conversion_procs/utf8_and_big5/Makefile
@@ -8,5 +8,6 @@ top_builddir = ../../../../../..
 include $(top_builddir)/src/Makefile.global
 
 NAME		= utf8_and_big5
+PGFILEDESC	= "utf8 <-> big5 text conversions"
 
 include $(srcdir)/../proc.mk
diff --git a/src/backend/utils/mb/conversion_procs/utf8_and_cyrillic/Makefile b/src/backend/utils/mb/conversion_procs/utf8_and_cyrillic/Makefile
index 410037c3784..725281ec967 100644
--- a/src/backend/utils/mb/conversion_procs/utf8_and_cyrillic/Makefile
+++ b/src/backend/utils/mb/conversion_procs/utf8_and_cyrillic/Makefile
@@ -8,5 +8,6 @@ top_builddir = ../../../../../..
 include $(top_builddir)/src/Makefile.global
 
 NAME		= utf8_and_cyrillic
+PGFILEDESC	= "utf8 <-> cyrillic text conversions"
 
 include $(srcdir)/../proc.mk
diff --git a/src/backend/utils/mb/conversion_procs/utf8_and_euc2004/Makefile b/src/backend/utils/mb/conversion_procs/utf8_and_euc2004/Makefile
index 58c513a2246..c6c537cffc8 100644
--- a/src/backend/utils/mb/conversion_procs/utf8_and_euc2004/Makefile
+++ b/src/backend/utils/mb/conversion_procs/utf8_and_euc2004/Makefile
@@ -8,5 +8,6 @@ top_builddir = ../../../../../..
 include $(top_builddir)/src/Makefile.global
 
 NAME		= utf8_and_euc2004
+PGFILEDESC	= "utf8 <-> euc2004 text conversions"
 
 include $(srcdir)/../proc.mk
diff --git a/src/backend/utils/mb/conversion_procs/utf8_and_euc_cn/Makefile b/src/backend/utils/mb/conversion_procs/utf8_and_euc_cn/Makefile
index 053162e245f..9d0e157a758 100644
--- a/src/backend/utils/mb/conversion_procs/utf8_and_euc_cn/Makefile
+++ b/src/backend/utils/mb/conversion_procs/utf8_and_euc_cn/Makefile
@@ -8,5 +8,6 @@ top_builddir = ../../../../../..
 include $(top_builddir)/src/Makefile.global
 
 NAME		= utf8_and_euc_cn
+PGFILEDESC	= "utf8 <-> euc_cn text conversions"
 
 include $(srcdir)/../proc.mk
diff --git a/src/backend/utils/mb/conversion_procs/utf8_and_euc_jp/Makefile b/src/backend/utils/mb/conversion_procs/utf8_and_euc_jp/Makefile
index 6a7678d0ec8..c5f55784363 100644
--- a/src/backend/utils/mb/conversion_procs/utf8_and_euc_jp/Makefile
+++ b/src/backend/utils/mb/conversion_procs/utf8_and_euc_jp/Makefile
@@ -8,5 +8,6 @@ top_builddir = ../../../../../..
 include $(top_builddir)/src/Makefile.global
 
 NAME		= utf8_and_euc_jp
+PGFILEDESC	= "utf8 <-> euc_jp text conversions"
 
 include $(srcdir)/../proc.mk
diff --git a/src/backend/utils/mb/conversion_procs/utf8_and_euc_kr/Makefile b/src/backend/utils/mb/conversion_procs/utf8_and_euc_kr/Makefile
index 13935abaf7b..a7eff9e9e17 100644
--- a/src/backend/utils/mb/conversion_procs/utf8_and_euc_kr/Makefile
+++ b/src/backend/utils/mb/conversion_procs/utf8_and_euc_kr/Makefile
@@ -8,5 +8,6 @@ top_builddir = ../../../../../..
 include $(top_builddir)/src/Makefile.global
 
 NAME		= utf8_and_euc_kr
+PGFILEDESC	= "utf8 <-> euc_kr text conversions"
 
 include $(srcdir)/../proc.mk
diff --git a/src/backend/utils/mb/conversion_procs/utf8_and_euc_tw/Makefile b/src/backend/utils/mb/conversion_procs/utf8_and_euc_tw/Makefile
index 7b9b833dc6e..59f42dc2b7d 100644
--- a/src/backend/utils/mb/conversion_procs/utf8_and_euc_tw/Makefile
+++ b/src/backend/utils/mb/conversion_procs/utf8_and_euc_tw/Makefile
@@ -8,5 +8,6 @@ top_builddir = ../../../../../..
 include $(top_builddir)/src/Makefile.global
 
 NAME		= utf8_and_euc_tw
+PGFILEDESC	= "utf8 <-> euc_tw text conversions"
 
 include $(srcdir)/../proc.mk
diff --git a/src/backend/utils/mb/conversion_procs/utf8_and_gb18030/Makefile b/src/backend/utils/mb/conversion_procs/utf8_and_gb18030/Makefile
index 1fb3e5a67a1..17bc18c373b 100644
--- a/src/backend/utils/mb/conversion_procs/utf8_and_gb18030/Makefile
+++ b/src/backend/utils/mb/conversion_procs/utf8_and_gb18030/Makefile
@@ -8,5 +8,6 @@ top_builddir = ../../../../../..
 include $(top_builddir)/src/Makefile.global
 
 NAME		= utf8_and_gb18030
+PGFILEDESC	= "utf8 <-> gb18030 text conversions"
 
 include $(srcdir)/../proc.mk
diff --git a/src/backend/utils/mb/conversion_procs/utf8_and_gbk/Makefile b/src/backend/utils/mb/conversion_procs/utf8_and_gbk/Makefile
index 240fe1458dc..eb20638440f 100644
--- a/src/backend/utils/mb/conversion_procs/utf8_and_gbk/Makefile
+++ b/src/backend/utils/mb/conversion_procs/utf8_and_gbk/Makefile
@@ -8,5 +8,6 @@ top_builddir = ../../../../../..
 include $(top_builddir)/src/Makefile.global
 
 NAME		= utf8_and_gbk
+PGFILEDESC	= "utf8 <-> gbk text conversions"
 
 include $(srcdir)/../proc.mk
diff --git a/src/backend/utils/mb/conversion_procs/utf8_and_iso8859/Makefile b/src/backend/utils/mb/conversion_procs/utf8_and_iso8859/Makefile
index c02323e8d82..6fd0dd27bf5 100644
--- a/src/backend/utils/mb/conversion_procs/utf8_and_iso8859/Makefile
+++ b/src/backend/utils/mb/conversion_procs/utf8_and_iso8859/Makefile
@@ -8,5 +8,6 @@ top_builddir = ../../../../../..
 include $(top_builddir)/src/Makefile.global
 
 NAME		= utf8_and_iso8859
+PGFILEDESC	= "utf8 <-> iso8859 text conversions"
 
 include $(srcdir)/../proc.mk
diff --git a/src/backend/utils/mb/conversion_procs/utf8_and_iso8859_1/Makefile b/src/backend/utils/mb/conversion_procs/utf8_and_iso8859_1/Makefile
index c2fac2eda8f..02982847c5d 100644
--- a/src/backend/utils/mb/conversion_procs/utf8_and_iso8859_1/Makefile
+++ b/src/backend/utils/mb/conversion_procs/utf8_and_iso8859_1/Makefile
@@ -8,5 +8,6 @@ top_builddir = ../../../../../..
 include $(top_builddir)/src/Makefile.global
 
 NAME		= utf8_and_iso8859_1
+PGFILEDESC	= "utf8 <-> iso8859_1 text conversions"
 
 include $(srcdir)/../proc.mk
diff --git a/src/backend/utils/mb/conversion_procs/utf8_and_johab/Makefile b/src/backend/utils/mb/conversion_procs/utf8_and_johab/Makefile
index bdd39fb5420..e48ef3e3ea7 100644
--- a/src/backend/utils/mb/conversion_procs/utf8_and_johab/Makefile
+++ b/src/backend/utils/mb/conversion_procs/utf8_and_johab/Makefile
@@ -8,5 +8,6 @@ top_builddir = ../../../../../..
 include $(top_builddir)/src/Makefile.global
 
 NAME		= utf8_and_johab
+PGFILEDESC	= "utf8 <-> johab text conversions"
 
 include $(srcdir)/../proc.mk
diff --git a/src/backend/utils/mb/conversion_procs/utf8_and_sjis/Makefile b/src/backend/utils/mb/conversion_procs/utf8_and_sjis/Makefile
index 7f4dd0c67fd..448c5d4b64a 100644
--- a/src/backend/utils/mb/conversion_procs/utf8_and_sjis/Makefile
+++ b/src/backend/utils/mb/conversion_procs/utf8_and_sjis/Makefile
@@ -8,5 +8,6 @@ top_builddir = ../../../../../..
 include $(top_builddir)/src/Makefile.global
 
 NAME		= utf8_and_sjis
+PGFILEDESC	= "utf8 <-> sjis text conversions"
 
 include $(srcdir)/../proc.mk
diff --git a/src/backend/utils/mb/conversion_procs/utf8_and_sjis2004/Makefile b/src/backend/utils/mb/conversion_procs/utf8_and_sjis2004/Makefile
index ed0bfde801d..f7072a4dc5f 100644
--- a/src/backend/utils/mb/conversion_procs/utf8_and_sjis2004/Makefile
+++ b/src/backend/utils/mb/conversion_procs/utf8_and_sjis2004/Makefile
@@ -8,5 +8,6 @@ top_builddir = ../../../../../..
 include $(top_builddir)/src/Makefile.global
 
 NAME		= utf8_and_sjis2004
+PGFILEDESC	= "utf8 <-> sjis2004 text conversions"
 
 include $(srcdir)/../proc.mk
diff --git a/src/backend/utils/mb/conversion_procs/utf8_and_uhc/Makefile b/src/backend/utils/mb/conversion_procs/utf8_and_uhc/Makefile
index 5c09c7e6f64..cc6e0a9c971 100644
--- a/src/backend/utils/mb/conversion_procs/utf8_and_uhc/Makefile
+++ b/src/backend/utils/mb/conversion_procs/utf8_and_uhc/Makefile
@@ -8,5 +8,6 @@ top_builddir = ../../../../../..
 include $(top_builddir)/src/Makefile.global
 
 NAME		= utf8_and_uhc
+PGFILEDESC	= "utf8 <-> uhc text conversions"
 
 include $(srcdir)/../proc.mk
diff --git a/src/backend/utils/mb/conversion_procs/utf8_and_win/Makefile b/src/backend/utils/mb/conversion_procs/utf8_and_win/Makefile
index 31c510bab78..d8b18fbf334 100644
--- a/src/backend/utils/mb/conversion_procs/utf8_and_win/Makefile
+++ b/src/backend/utils/mb/conversion_procs/utf8_and_win/Makefile
@@ -8,5 +8,6 @@ top_builddir = ../../../../../..
 include $(top_builddir)/src/Makefile.global
 
 NAME		= utf8_and_win
+PGFILEDESC	= "utf8 <-> win text conversions"
 
 include $(srcdir)/../proc.mk
diff --git a/src/bin/pg_basebackup/Makefile b/src/bin/pg_basebackup/Makefile
index c6322ec26d4..90d19e77f3f 100644
--- a/src/bin/pg_basebackup/Makefile
+++ b/src/bin/pg_basebackup/Makefile
@@ -9,7 +9,7 @@
 #
 #-------------------------------------------------------------------------
 
-PGFILEDESC = "pg_basebackup - takes a streaming base backup of a PostgreSQL instance"
+PGFILEDESC = "pg_basebackup/pg_receivexlog/pg_recvlogical - streaming WAL and backup receivers"
 PGAPPICON=win32
 
 subdir = src/bin/pg_basebackup
diff --git a/src/interfaces/ecpg/compatlib/Makefile b/src/interfaces/ecpg/compatlib/Makefile
index db704d7de19..1e2d6988706 100644
--- a/src/interfaces/ecpg/compatlib/Makefile
+++ b/src/interfaces/ecpg/compatlib/Makefile
@@ -13,6 +13,7 @@ subdir = src/interfaces/ecpg/compatlib
 top_builddir = ../../../..
 include $(top_builddir)/src/Makefile.global
 
+PGFILEDESC = "ECPG compat - compatibility library for ECPG"
 NAME= ecpg_compat
 SO_MAJOR_VERSION= 3
 SO_MINOR_VERSION= 7
@@ -30,7 +31,7 @@ SHLIB_EXPORTS = exports.txt
 # Need to recompile any libpgport object files
 LIBS := $(filter-out -lpgport, $(LIBS))
 
-OBJS= informix.o $(filter snprintf.o, $(LIBOBJS))
+OBJS= informix.o $(filter snprintf.o, $(LIBOBJS)) $(WIN32RES)
 
 PKG_CONFIG_REQUIRES_PRIVATE = libecpg libpgtypes
 
diff --git a/src/interfaces/ecpg/ecpglib/Makefile b/src/interfaces/ecpg/ecpglib/Makefile
index 9f4582e2291..c99faac42e4 100644
--- a/src/interfaces/ecpg/ecpglib/Makefile
+++ b/src/interfaces/ecpg/ecpglib/Makefile
@@ -13,6 +13,7 @@ subdir = src/interfaces/ecpg/ecpglib
 top_builddir = ../../../..
 include $(top_builddir)/src/Makefile.global
 
+PGFILEDESC = "ECPG - embedded SQL in C"
 NAME= ecpg
 SO_MAJOR_VERSION= 6
 SO_MINOR_VERSION= 7
@@ -26,7 +27,7 @@ LIBS := $(filter-out -lpgport, $(LIBS))
 
 OBJS= execute.o typename.o descriptor.o sqlda.o data.o error.o prepare.o memory.o \
 	connect.o misc.o path.o pgstrcasecmp.o \
-	$(filter snprintf.o strlcpy.o win32setlocale.o isinf.o, $(LIBOBJS))
+	$(filter snprintf.o strlcpy.o win32setlocale.o isinf.o, $(LIBOBJS)) $(WIN32RES)
 
 # thread.c is needed only for non-WIN32 implementation of path.c
 ifneq ($(PORTNAME), win32)
diff --git a/src/interfaces/ecpg/pgtypeslib/Makefile b/src/interfaces/ecpg/pgtypeslib/Makefile
index d73c37efd29..436855e9843 100644
--- a/src/interfaces/ecpg/pgtypeslib/Makefile
+++ b/src/interfaces/ecpg/pgtypeslib/Makefile
@@ -13,6 +13,7 @@ subdir = src/interfaces/ecpg/pgtypeslib
 top_builddir = ../../../..
 include $(top_builddir)/src/Makefile.global
 
+PGFILEDESC = "pgtypes - library for data type mapping"
 NAME= pgtypes
 SO_MAJOR_VERSION= 3
 SO_MINOR_VERSION= 6
@@ -30,7 +31,7 @@ SHLIB_EXPORTS = exports.txt
 
 OBJS= numeric.o datetime.o common.o dt_common.o timestamp.o interval.o \
 	pgstrcasecmp.o \
-	$(filter rint.o snprintf.o, $(LIBOBJS))
+	$(filter rint.o snprintf.o, $(LIBOBJS)) $(WIN32RES)
 
 all: all-lib
 
diff --git a/src/interfaces/ecpg/test/Makefile b/src/interfaces/ecpg/test/Makefile
index d359fce7b5c..56f6a17c34e 100644
--- a/src/interfaces/ecpg/test/Makefile
+++ b/src/interfaces/ecpg/test/Makefile
@@ -13,6 +13,8 @@ override CPPFLAGS := \
 	'-DDLSUFFIX="$(DLSUFFIX)"' \
 	$(CPPFLAGS)
 
+PGFILEDESC = "ECPG Test - regression tests for ECPG"
+
 # where to find psql for testing an existing installation
 PSQLDIR = $(bindir)
 
@@ -41,13 +43,13 @@ clean distclean maintainer-clean:
 	$(MAKE) -C compat_informix $@
 	$(MAKE) -C thread $@
 	rm -rf tmp_check results log
-	rm -f pg_regress regression.diffs regression.out pg_regress_ecpg.o
+	rm -f pg_regress regression.diffs regression.out pg_regress_ecpg.o $(WIN32RES)
 
 # Build regression test driver
 
 all: pg_regress$(X)
 
-pg_regress$(X): pg_regress_ecpg.o $(top_builddir)/src/test/regress/pg_regress.o
+pg_regress$(X): pg_regress_ecpg.o $(WIN32RES) $(top_builddir)/src/test/regress/pg_regress.o
 	$(CC) $(CFLAGS) $(LDFLAGS) $(LDFLAGS_EX) $^ $(LIBS) -o $@
 
 $(top_builddir)/src/test/regress/pg_regress.o:
diff --git a/src/makefiles/Makefile.win32 b/src/makefiles/Makefile.win32
index 9cb84f2502b..73f0767229e 100644
--- a/src/makefiles/Makefile.win32
+++ b/src/makefiles/Makefile.win32
@@ -75,5 +75,5 @@ win32ver.o: win32ver.rc
 	$(WINDRES) -i $< -o $@ --include-dir=$(top_builddir)/src/include --include-dir=$(srcdir)
 
 # Rule for building a shared library from a single .o file
-%.dll: %.o
-	$(CC) $(CFLAGS) -shared -o $@ $< -Wl,--export-all-symbols $(LDFLAGS) $(LDFLAGS_SL) $(BE_DLLLIBS)
+%.dll: %.o $(WIN32RES)
+	$(CC) $(CFLAGS) -shared -o $@ $^ -Wl,--export-all-symbols $(LDFLAGS) $(LDFLAGS_SL) $(BE_DLLLIBS)
diff --git a/src/makefiles/pgxs.mk b/src/makefiles/pgxs.mk
index 8cf229e23cd..cc69c1be50f 100644
--- a/src/makefiles/pgxs.mk
+++ b/src/makefiles/pgxs.mk
@@ -224,7 +224,7 @@ endif # MODULE_big
 
 clean:
 ifdef MODULES
-	rm -f $(addsuffix $(DLSUFFIX), $(MODULES)) $(addsuffix .o, $(MODULES))
+	rm -f $(addsuffix $(DLSUFFIX), $(MODULES)) $(addsuffix .o, $(MODULES)) $(WIN32RES)
 endif
 ifdef DATA_built
 	rm -f $(DATA_built)
diff --git a/src/pl/plperl/GNUmakefile b/src/pl/plperl/GNUmakefile
index 1e800a344c8..a04a2d3456d 100644
--- a/src/pl/plperl/GNUmakefile
+++ b/src/pl/plperl/GNUmakefile
@@ -26,10 +26,11 @@ override CPPFLAGS := -I. -I$(srcdir) $(CPPFLAGS) -I$(perl_archlibexp)/CORE
 
 rpathdir = $(perl_archlibexp)/CORE
 
+PGFILEDESC = "PL/Perl - procedural language"
 
 NAME = plperl
 
-OBJS = plperl.o SPI.o Util.o
+OBJS = plperl.o SPI.o Util.o $(WIN32RES)
 
 DATA = plperl.control plperl--1.0.sql plperl--unpackaged--1.0.sql \
        plperlu.control plperlu--1.0.sql plperlu--unpackaged--1.0.sql
diff --git a/src/pl/plpgsql/src/Makefile b/src/pl/plpgsql/src/Makefile
index 852b0c7ae49..e073b2abd0a 100644
--- a/src/pl/plpgsql/src/Makefile
+++ b/src/pl/plpgsql/src/Makefile
@@ -10,6 +10,8 @@ subdir = src/pl/plpgsql/src
 top_builddir = ../../../..
 include $(top_builddir)/src/Makefile.global
 
+PGFILEDESC = "PL/pgSQL - procedural language"
+
 # Shared library parameters
 NAME= plpgsql
 
@@ -17,7 +19,8 @@ override CPPFLAGS := -I. -I$(srcdir) $(CPPFLAGS)
 SHLIB_LINK = $(filter -lintl, $(LIBS))
 rpath =
 
-OBJS = pl_gram.o pl_handler.o pl_comp.o pl_exec.o pl_funcs.o pl_scanner.o
+OBJS = pl_gram.o pl_handler.o pl_comp.o pl_exec.o \
+	pl_funcs.o pl_scanner.o $(WIN32RES)
 
 DATA = plpgsql.control plpgsql--1.0.sql plpgsql--unpackaged--1.0.sql
 
diff --git a/src/pl/plpython/Makefile b/src/pl/plpython/Makefile
index 020861a4f8b..9c0fc613f9a 100644
--- a/src/pl/plpython/Makefile
+++ b/src/pl/plpython/Makefile
@@ -38,6 +38,8 @@ override CPPFLAGS := -I. -I$(srcdir) $(python_includespec) $(CPPFLAGS)
 
 rpathdir = $(python_libdir)
 
+PGFILEDESC = "PL/Python - procedural language"
+
 NAME = plpython$(python_majorversion)
 
 OBJS = \
@@ -52,7 +54,8 @@ OBJS = \
 	plpy_spi.o \
 	plpy_subxactobject.o \
 	plpy_typeio.o \
-	plpy_util.o
+	plpy_util.o \
+	$(WIN32RES)
 
 DATA = $(NAME)u.control $(NAME)u--1.0.sql $(NAME)u--unpackaged--1.0.sql
 ifeq ($(python_majorversion),2)
diff --git a/src/pl/tcl/Makefile b/src/pl/tcl/Makefile
index 2ab2a2791bb..7ea00267c03 100644
--- a/src/pl/tcl/Makefile
+++ b/src/pl/tcl/Makefile
@@ -34,10 +34,11 @@ ifneq ($(PORTNAME), win32)
 SHLIB_LINK = $(TCL_LIB_SPEC) $(TCL_LIBS) -lc
 endif
 
+PGFILEDESC = "PL/Tcl - procedural language"
 
 NAME = pltcl
 
-OBJS = pltcl.o
+OBJS = pltcl.o $(WIN32RES)
 
 DATA = pltcl.control pltcl--1.0.sql pltcl--unpackaged--1.0.sql \
        pltclu.control pltclu--1.0.sql pltclu--unpackaged--1.0.sql
diff --git a/src/tools/msvc/clean.bat b/src/tools/msvc/clean.bat
index 4671f30e50c..b76eea99eda 100755
--- a/src/tools/msvc/clean.bat
+++ b/src/tools/msvc/clean.bat
@@ -19,6 +19,12 @@ if exist pgsql.suo del /q /a:H pgsql.suo
 del /s /q src\bin\win32ver.rc 2> NUL
 del /s /q src\interfaces\win32ver.rc 2> NUL
 if exist src\backend\win32ver.rc del /q src\backend\win32ver.rc
+if exist src\backend\replication\libpqwalreceiver\win32ver.rc del /q src\backend\replication\libpqwalreceiver\win32ver.rc
+if exist src\pl\plperl\win32ver.rc del /q src\pl\plperl\win32ver.rc
+if exist src\pl\plpgsql\src\win32ver.rc del /q src\pl\plpgsql\src\win32ver.rc
+if exist src\pl\plpython\win32ver.rc del /q src\pl\plpython\win32ver.rc
+if exist src\pl\tcl\win32ver.rc del /q src\pl\tcl\win32ver.rc
+for /d %%f in (src\interfaces\ecpg\*) do if exist %%f\win32ver.rc del /q %%f\win32ver.rc
 for /d %%f in (contrib\*) do if exist %%f\win32ver.rc del /q %%f\win32ver.rc
 for /d %%f in (src\backend\utils\mb\conversion_procs\*) do if exist %%f\win32ver.rc del /q %%f\win32ver.rc
 
-- 
GitLab