Enhance Makefiles to rebuild objects on map file changes

Started by Chao Li5 months ago15 messages
#1Chao Li
lic@highgo.com
1 attachment(s)

Hi Community,

While working on the upgrade from GB18030 to GB18030-2022, I updated two GB18030-related map files. However, rebuilding PostgreSQL did not recompile anything, which led me to discover that the Makefiles under src/backend/utils/mb/conversion_procs were missing dependency rules between NAME.o and the corresponding map files.

This patch adds the necessary dependencies to ensure that when a map file changes, the corresponding .o file is rebuilt accordingly.

I have done tests for every Makefile I changed in a way like:

# make a change to a map file
$ make
# a .o got rebuilt
$ make # make again without map file change
# nothing re-compiled

Chao Li (Evan)
--------------------
HighGo Infra. Software Inc.
https://www.highgo.com/

Attachments:

v1-0001-Enhance-Makefiles-to-rebuild-objects-on-map-file-.patchapplication/octet-stream; name=v1-0001-Enhance-Makefiles-to-rebuild-objects-on-map-file-.patch; x-unix-mode=0644Download
From 946186fb319bbdd3125597e1bc096a6fdf932c1a Mon Sep 17 00:00:00 2001
From: "Chao Li (HighGo Inc.)" <li.evan.chao@gmail.com>
Date: Wed, 6 Aug 2025 06:45:17 +0800
Subject: [PATCH v1] Enhance Makefiles to rebuild objects on map file changes

While working on the upgrade from GB18030 to GB18030-2022, I updated
two GB18030-related map files. However, rebuilding PostgreSQL did
not recompile anything, which led me to discover that the Makefiles
under src/backend/utils/mb/conversion_procs were missing dependency
rules between NAME.o and the corresponding map files.

This patch adds the necessary dependencies to ensure that when a map file
changes, the corresponding .o file is rebuilt accordingly.

Author: Chao Li <lic@highgo.com>
---
 src/backend/utils/mb/conversion_procs/proc.mk |  6 +++++
 .../conversion_procs/utf8_and_big5/Makefile   |  3 +++
 .../utf8_and_cyrillic/Makefile                |  5 ++++
 .../utf8_and_euc2004/Makefile                 |  3 +++
 .../conversion_procs/utf8_and_euc_cn/Makefile |  3 +++
 .../conversion_procs/utf8_and_euc_jp/Makefile |  3 +++
 .../conversion_procs/utf8_and_euc_kr/Makefile |  3 +++
 .../conversion_procs/utf8_and_euc_tw/Makefile |  3 +++
 .../utf8_and_gb18030/Makefile                 |  3 +++
 .../mb/conversion_procs/utf8_and_gbk/Makefile |  3 +++
 .../utf8_and_iso8859/Makefile                 | 27 +++++++++++++++++++
 .../conversion_procs/utf8_and_johab/Makefile  |  3 +++
 .../conversion_procs/utf8_and_sjis/Makefile   |  3 +++
 .../utf8_and_sjis2004/Makefile                |  3 +++
 .../mb/conversion_procs/utf8_and_uhc/Makefile |  3 +++
 .../mb/conversion_procs/utf8_and_win/Makefile | 23 ++++++++++++++++
 16 files changed, 97 insertions(+)

diff --git a/src/backend/utils/mb/conversion_procs/proc.mk b/src/backend/utils/mb/conversion_procs/proc.mk
index 2eeae282409..cc88d5ae79f 100644
--- a/src/backend/utils/mb/conversion_procs/proc.mk
+++ b/src/backend/utils/mb/conversion_procs/proc.mk
@@ -1,6 +1,12 @@
 SRCS		+= $(NAME).c
 OBJS		+= $(NAME).o $(WIN32RES)
 
+$(MAPFILES):
+	# The map files are generated by Perl scripts. We don't automatically
+	# regenerate them here.
+
+$(NAME).o: $(MAPFILES)
+
 rpath =
 
 all: all-shared-lib
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 2c274f3d9cc..4e8aae35416 100644
--- a/src/backend/utils/mb/conversion_procs/utf8_and_big5/Makefile
+++ b/src/backend/utils/mb/conversion_procs/utf8_and_big5/Makefile
@@ -6,8 +6,11 @@
 subdir = src/backend/utils/mb/conversion_procs/utf8_and_big5
 top_builddir = ../../../../../..
 include $(top_builddir)/src/Makefile.global
+mapfiledir = $(top_builddir)/src/backend/utils/mb/Unicode
 
 NAME		= utf8_and_big5
 PGFILEDESC	= "utf8 <-> big5 text conversions"
+MAPFILES	= $(mapfiledir)/big5_to_utf8.map \
+			  $(mapfiledir)/utf8_to_big5.map
 
 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 725281ec967..f0742db6898 100644
--- a/src/backend/utils/mb/conversion_procs/utf8_and_cyrillic/Makefile
+++ b/src/backend/utils/mb/conversion_procs/utf8_and_cyrillic/Makefile
@@ -6,8 +6,13 @@
 subdir = src/backend/utils/mb/conversion_procs/utf8_and_cyrillic
 top_builddir = ../../../../../..
 include $(top_builddir)/src/Makefile.global
+mapfiledir = $(top_builddir)/src/backend/utils/mb/Unicode
 
 NAME		= utf8_and_cyrillic
 PGFILEDESC	= "utf8 <-> cyrillic text conversions"
+MAPFILES	= $(mapfiledir)/utf8_to_koi8r.map \
+			  $(mapfiledir)/koi8r_to_utf8.map \
+			  $(mapfiledir)/utf8_to_koi8u.map \
+			  $(mapfiledir)/koi8u_to_utf8.map
 
 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 c6c537cffc8..e3830de005c 100644
--- a/src/backend/utils/mb/conversion_procs/utf8_and_euc2004/Makefile
+++ b/src/backend/utils/mb/conversion_procs/utf8_and_euc2004/Makefile
@@ -6,8 +6,11 @@
 subdir = src/backend/utils/mb/conversion_procs/utf8_and_euc2004
 top_builddir = ../../../../../..
 include $(top_builddir)/src/Makefile.global
+mapfiledir = $(top_srcdir)/src/backend/utils/mb/Unicode
 
 NAME		= utf8_and_euc2004
 PGFILEDESC	= "utf8 <-> euc2004 text conversions"
+MAPFILES	= $(mapfiledir)/euc_jis_2004_to_utf8.map \
+			  $(mapfiledir)/utf8_to_euc_jis_2004.map
 
 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 9d0e157a758..d31499a5da8 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
@@ -6,8 +6,11 @@
 subdir = src/backend/utils/mb/conversion_procs/utf8_and_euc_cn
 top_builddir = ../../../../../..
 include $(top_builddir)/src/Makefile.global
+mapfiledir = $(top_builddir)/src/backend/utils/mb/Unicode
 
 NAME		= utf8_and_euc_cn
 PGFILEDESC	= "utf8 <-> euc_cn text conversions"
+MAPFILES	= $(mapfiledir)/euc_cn_to_utf8.map \
+			  $(mapfiledir)/utf8_to_euc_cn.map
 
 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 c5f55784363..5f15ae40867 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
@@ -6,8 +6,11 @@
 subdir = src/backend/utils/mb/conversion_procs/utf8_and_euc_jp
 top_builddir = ../../../../../..
 include $(top_builddir)/src/Makefile.global
+mapfiledir = $(top_builddir)/src/backend/utils/mb/Unicode
 
 NAME		= utf8_and_euc_jp
 PGFILEDESC	= "utf8 <-> euc_jp text conversions"
+MAPFILES	= $(mapfiledir)/euc_jp_to_utf8.map \
+			  $(mapfiledir)/utf8_to_euc_jp.map
 
 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 a7eff9e9e17..71d1a322012 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
@@ -6,8 +6,11 @@
 subdir = src/backend/utils/mb/conversion_procs/utf8_and_euc_kr
 top_builddir = ../../../../../..
 include $(top_builddir)/src/Makefile.global
+mapfiledir = $(top_builddir)/src/backend/utils/mb/Unicode
 
 NAME		= utf8_and_euc_kr
 PGFILEDESC	= "utf8 <-> euc_kr text conversions"
+MAPFILES	= $(mapfiledir)/euc_kr_to_utf8.map \
+			  $(mapfiledir)/utf8_to_euc_kr.map
 
 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 59f42dc2b7d..23e88503444 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
@@ -6,8 +6,11 @@
 subdir = src/backend/utils/mb/conversion_procs/utf8_and_euc_tw
 top_builddir = ../../../../../..
 include $(top_builddir)/src/Makefile.global
+mapfiledir = $(top_srcdir)/src/backend/utils/mb/Unicode
 
 NAME		= utf8_and_euc_tw
 PGFILEDESC	= "utf8 <-> euc_tw text conversions"
+MAPFILES	= $(mapfiledir)/euc_tw_to_utf8.map \
+			  $(mapfiledir)/utf8_to_euc_tw.map
 
 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 17bc18c373b..0b2d37b2995 100644
--- a/src/backend/utils/mb/conversion_procs/utf8_and_gb18030/Makefile
+++ b/src/backend/utils/mb/conversion_procs/utf8_and_gb18030/Makefile
@@ -6,8 +6,11 @@
 subdir = src/backend/utils/mb/conversion_procs/utf8_and_gb18030
 top_builddir = ../../../../../..
 include $(top_builddir)/src/Makefile.global
+mapfiledir = $(top_builddir)/src/backend/utils/mb/Unicode
 
 NAME		= utf8_and_gb18030
 PGFILEDESC	= "utf8 <-> gb18030 text conversions"
+MAPFILES	= $(mapfiledir)/gb18030_to_utf8.map \
+			  $(mapfiledir)/utf8_to_gb18030.map
 
 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 eb20638440f..ca28f103bf1 100644
--- a/src/backend/utils/mb/conversion_procs/utf8_and_gbk/Makefile
+++ b/src/backend/utils/mb/conversion_procs/utf8_and_gbk/Makefile
@@ -6,8 +6,11 @@
 subdir = src/backend/utils/mb/conversion_procs/utf8_and_gbk
 top_builddir = ../../../../../..
 include $(top_builddir)/src/Makefile.global
+mapfiledir = $(top_builddir)/src/backend/utils/mb/Unicode
 
 NAME		= utf8_and_gbk
 PGFILEDESC	= "utf8 <-> gbk text conversions"
+MAPFILES	= $(mapfiledir)/gbk_to_utf8.map \
+			  $(mapfiledir)/utf8_to_gbk.map
 
 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 6fd0dd27bf5..7914dff2b47 100644
--- a/src/backend/utils/mb/conversion_procs/utf8_and_iso8859/Makefile
+++ b/src/backend/utils/mb/conversion_procs/utf8_and_iso8859/Makefile
@@ -6,8 +6,35 @@
 subdir = src/backend/utils/mb/conversion_procs/utf8_and_iso8859
 top_builddir = ../../../../../..
 include $(top_builddir)/src/Makefile.global
+mapfiledir = $(top_builddir)/src/backend/utils/mb/Unicode
 
 NAME		= utf8_and_iso8859
 PGFILEDESC	= "utf8 <-> iso8859 text conversions"
+MAPFILES	= $(mapfiledir)/iso8859_10_to_utf8.map \
+			  $(mapfiledir)/iso8859_13_to_utf8.map \
+			  $(mapfiledir)/iso8859_14_to_utf8.map \
+			  $(mapfiledir)/iso8859_15_to_utf8.map \
+			  $(mapfiledir)/iso8859_16_to_utf8.map \
+			  $(mapfiledir)/iso8859_2_to_utf8.map \
+			  $(mapfiledir)/iso8859_3_to_utf8.map \
+			  $(mapfiledir)/iso8859_4_to_utf8.map \
+			  $(mapfiledir)/iso8859_5_to_utf8.map \
+			  $(mapfiledir)/iso8859_6_to_utf8.map \
+			  $(mapfiledir)/iso8859_7_to_utf8.map \
+			  $(mapfiledir)/iso8859_8_to_utf8.map \
+			  $(mapfiledir)/iso8859_9_to_utf8.map \
+			  $(mapfiledir)/utf8_to_iso8859_10.map \
+			  $(mapfiledir)/utf8_to_iso8859_13.map \
+			  $(mapfiledir)/utf8_to_iso8859_14.map \
+			  $(mapfiledir)/utf8_to_iso8859_15.map \
+			  $(mapfiledir)/utf8_to_iso8859_16.map \
+			  $(mapfiledir)/utf8_to_iso8859_2.map \
+			  $(mapfiledir)/utf8_to_iso8859_3.map \
+			  $(mapfiledir)/utf8_to_iso8859_4.map \
+			  $(mapfiledir)/utf8_to_iso8859_5.map \
+			  $(mapfiledir)/utf8_to_iso8859_6.map \
+			  $(mapfiledir)/utf8_to_iso8859_7.map \
+			  $(mapfiledir)/utf8_to_iso8859_8.map \
+			  $(mapfiledir)/utf8_to_iso8859_9.map
 
 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 e48ef3e3ea7..c4709c93976 100644
--- a/src/backend/utils/mb/conversion_procs/utf8_and_johab/Makefile
+++ b/src/backend/utils/mb/conversion_procs/utf8_and_johab/Makefile
@@ -6,8 +6,11 @@
 subdir = src/backend/utils/mb/conversion_procs/utf8_and_johab
 top_builddir = ../../../../../..
 include $(top_builddir)/src/Makefile.global
+mapfiledir = $(top_builddir)/src/backend/utils/mb/Unicode
 
 NAME		= utf8_and_johab
 PGFILEDESC	= "utf8 <-> johab text conversions"
+MAPFILES	= $(mapfiledir)/johab_to_utf8.map \
+			  $(mapfiledir)/utf8_to_johab.map
 
 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 448c5d4b64a..b5c2f0125a9 100644
--- a/src/backend/utils/mb/conversion_procs/utf8_and_sjis/Makefile
+++ b/src/backend/utils/mb/conversion_procs/utf8_and_sjis/Makefile
@@ -6,8 +6,11 @@
 subdir = src/backend/utils/mb/conversion_procs/utf8_and_sjis
 top_builddir = ../../../../../..
 include $(top_builddir)/src/Makefile.global
+mapfiledir = $(top_srcdir)/src/backend/utils/mb/Unicode
 
 NAME		= utf8_and_sjis
 PGFILEDESC	= "utf8 <-> sjis text conversions"
+MAPFILES	= $(mapfiledir)/sjis_to_utf8.map \
+			  $(mapfiledir)/utf8_to_sjis.map
 
 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 f7072a4dc5f..c201074677d 100644
--- a/src/backend/utils/mb/conversion_procs/utf8_and_sjis2004/Makefile
+++ b/src/backend/utils/mb/conversion_procs/utf8_and_sjis2004/Makefile
@@ -6,8 +6,11 @@
 subdir = src/backend/utils/mb/conversion_procs/utf8_and_sjis2004
 top_builddir = ../../../../../..
 include $(top_builddir)/src/Makefile.global
+mapfiledir = $(top_srcdir)/src/backend/utils/mb/Unicode
 
 NAME		= utf8_and_sjis2004
 PGFILEDESC	= "utf8 <-> sjis2004 text conversions"
+MAPFILES	= $(mapfiledir)/shift_jis_2004_to_utf8.map \
+			  $(mapfiledir)/utf8_to_shift_jis_2004.map
 
 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 cc6e0a9c971..85db2cf5686 100644
--- a/src/backend/utils/mb/conversion_procs/utf8_and_uhc/Makefile
+++ b/src/backend/utils/mb/conversion_procs/utf8_and_uhc/Makefile
@@ -6,8 +6,11 @@
 subdir = src/backend/utils/mb/conversion_procs/utf8_and_uhc
 top_builddir = ../../../../../..
 include $(top_builddir)/src/Makefile.global
+mapfiledir = $(top_srcdir)/src/backend/utils/mb/Unicode
 
 NAME		= utf8_and_uhc
 PGFILEDESC	= "utf8 <-> uhc text conversions"
+MAPFILES	= $(mapfiledir)/uhc_to_utf8.map \
+			  $(mapfiledir)/utf8_to_uhc.map
 
 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 d8b18fbf334..107d8002beb 100644
--- a/src/backend/utils/mb/conversion_procs/utf8_and_win/Makefile
+++ b/src/backend/utils/mb/conversion_procs/utf8_and_win/Makefile
@@ -6,8 +6,31 @@
 subdir = src/backend/utils/mb/conversion_procs/utf8_and_win
 top_builddir = ../../../../../..
 include $(top_builddir)/src/Makefile.global
+mapfiledir = $(top_srcdir)/src/backend/utils/mb/Unicode
 
 NAME		= utf8_and_win
 PGFILEDESC	= "utf8 <-> win text conversions"
+MAPFILES	= $(mapfiledir)/utf8_to_win1250.map \
+			  $(mapfiledir)/utf8_to_win1251.map \
+			  $(mapfiledir)/utf8_to_win1252.map \
+			  $(mapfiledir)/utf8_to_win1253.map \
+			  $(mapfiledir)/utf8_to_win1254.map \
+			  $(mapfiledir)/utf8_to_win1255.map \
+			  $(mapfiledir)/utf8_to_win1256.map \
+			  $(mapfiledir)/utf8_to_win1257.map \
+			  $(mapfiledir)/utf8_to_win1258.map \
+			  $(mapfiledir)/utf8_to_win866.map \
+			  $(mapfiledir)/utf8_to_win874.map \
+			  $(mapfiledir)/win1250_to_utf8.map \
+			  $(mapfiledir)/win1251_to_utf8.map \
+			  $(mapfiledir)/win1252_to_utf8.map \
+			  $(mapfiledir)/win1253_to_utf8.map \
+			  $(mapfiledir)/win1254_to_utf8.map \
+			  $(mapfiledir)/win1255_to_utf8.map \
+			  $(mapfiledir)/win1256_to_utf8.map \
+			  $(mapfiledir)/win1257_to_utf8.map \
+			  $(mapfiledir)/win866_to_utf8.map \
+			  $(mapfiledir)/win874_to_utf8.map \
+			  $(mapfiledir)/win1258_to_utf8.map
 
 include $(srcdir)/../proc.mk
-- 
2.39.5 (Apple Git-154)

#2Chao Li
lic@highgo.com
In reply to: Chao Li (#1)
1 attachment(s)
Re: Enhance Makefiles to rebuild objects on map file changes

It looks weird. From /messages/by-id/1CA8625F-AA41-4ED2-B60F-E28AC71F37DC@highgo.com, I don’t see the attachment of the patch file. However, the email in my Inbox has the attachment.

Try to resend the attachment.

Chao Li (Evan)
--------------------
HighGo Infra. Software Inc.
https://www.highgo.com/

Show quoted text

On Aug 6, 2025, at 12:41, Chao Li <lic@highgo.com> wrote:

Hi Community,

While working on the upgrade from GB18030 to GB18030-2022, I updated two GB18030-related map files. However, rebuilding PostgreSQL did not recompile anything, which led me to discover that the Makefiles under src/backend/utils/mb/conversion_procs were missing dependency rules between NAME.o and the corresponding map files.

This patch adds the necessary dependencies to ensure that when a map file changes, the corresponding .o file is rebuilt accordingly.

I have done tests for every Makefile I changed in a way like:

# make a change to a map file
$ make
# a .o got rebuilt
$ make # make again without map file change
# nothing re-compiled

Chao Li (Evan)
--------------------
HighGo Infra. Software Inc.
https://www.highgo.com/

<v1-0001-Enhance-Makefiles-to-rebuild-objects-on-map-file-.patch>

Attachments:

v1-0001-Enhance-Makefiles-to-rebuild-objects-on-map-file-.patchapplication/octet-stream; name=v1-0001-Enhance-Makefiles-to-rebuild-objects-on-map-file-.patch; x-unix-mode=0644Download
From 946186fb319bbdd3125597e1bc096a6fdf932c1a Mon Sep 17 00:00:00 2001
From: "Chao Li (HighGo Inc.)" <li.evan.chao@gmail.com>
Date: Wed, 6 Aug 2025 06:45:17 +0800
Subject: [PATCH v1] Enhance Makefiles to rebuild objects on map file changes

While working on the upgrade from GB18030 to GB18030-2022, I updated
two GB18030-related map files. However, rebuilding PostgreSQL did
not recompile anything, which led me to discover that the Makefiles
under src/backend/utils/mb/conversion_procs were missing dependency
rules between NAME.o and the corresponding map files.

This patch adds the necessary dependencies to ensure that when a map file
changes, the corresponding .o file is rebuilt accordingly.

Author: Chao Li <lic@highgo.com>
---
 src/backend/utils/mb/conversion_procs/proc.mk |  6 +++++
 .../conversion_procs/utf8_and_big5/Makefile   |  3 +++
 .../utf8_and_cyrillic/Makefile                |  5 ++++
 .../utf8_and_euc2004/Makefile                 |  3 +++
 .../conversion_procs/utf8_and_euc_cn/Makefile |  3 +++
 .../conversion_procs/utf8_and_euc_jp/Makefile |  3 +++
 .../conversion_procs/utf8_and_euc_kr/Makefile |  3 +++
 .../conversion_procs/utf8_and_euc_tw/Makefile |  3 +++
 .../utf8_and_gb18030/Makefile                 |  3 +++
 .../mb/conversion_procs/utf8_and_gbk/Makefile |  3 +++
 .../utf8_and_iso8859/Makefile                 | 27 +++++++++++++++++++
 .../conversion_procs/utf8_and_johab/Makefile  |  3 +++
 .../conversion_procs/utf8_and_sjis/Makefile   |  3 +++
 .../utf8_and_sjis2004/Makefile                |  3 +++
 .../mb/conversion_procs/utf8_and_uhc/Makefile |  3 +++
 .../mb/conversion_procs/utf8_and_win/Makefile | 23 ++++++++++++++++
 16 files changed, 97 insertions(+)

diff --git a/src/backend/utils/mb/conversion_procs/proc.mk b/src/backend/utils/mb/conversion_procs/proc.mk
index 2eeae282409..cc88d5ae79f 100644
--- a/src/backend/utils/mb/conversion_procs/proc.mk
+++ b/src/backend/utils/mb/conversion_procs/proc.mk
@@ -1,6 +1,12 @@
 SRCS		+= $(NAME).c
 OBJS		+= $(NAME).o $(WIN32RES)
 
+$(MAPFILES):
+	# The map files are generated by Perl scripts. We don't automatically
+	# regenerate them here.
+
+$(NAME).o: $(MAPFILES)
+
 rpath =
 
 all: all-shared-lib
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 2c274f3d9cc..4e8aae35416 100644
--- a/src/backend/utils/mb/conversion_procs/utf8_and_big5/Makefile
+++ b/src/backend/utils/mb/conversion_procs/utf8_and_big5/Makefile
@@ -6,8 +6,11 @@
 subdir = src/backend/utils/mb/conversion_procs/utf8_and_big5
 top_builddir = ../../../../../..
 include $(top_builddir)/src/Makefile.global
+mapfiledir = $(top_builddir)/src/backend/utils/mb/Unicode
 
 NAME		= utf8_and_big5
 PGFILEDESC	= "utf8 <-> big5 text conversions"
+MAPFILES	= $(mapfiledir)/big5_to_utf8.map \
+			  $(mapfiledir)/utf8_to_big5.map
 
 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 725281ec967..f0742db6898 100644
--- a/src/backend/utils/mb/conversion_procs/utf8_and_cyrillic/Makefile
+++ b/src/backend/utils/mb/conversion_procs/utf8_and_cyrillic/Makefile
@@ -6,8 +6,13 @@
 subdir = src/backend/utils/mb/conversion_procs/utf8_and_cyrillic
 top_builddir = ../../../../../..
 include $(top_builddir)/src/Makefile.global
+mapfiledir = $(top_builddir)/src/backend/utils/mb/Unicode
 
 NAME		= utf8_and_cyrillic
 PGFILEDESC	= "utf8 <-> cyrillic text conversions"
+MAPFILES	= $(mapfiledir)/utf8_to_koi8r.map \
+			  $(mapfiledir)/koi8r_to_utf8.map \
+			  $(mapfiledir)/utf8_to_koi8u.map \
+			  $(mapfiledir)/koi8u_to_utf8.map
 
 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 c6c537cffc8..e3830de005c 100644
--- a/src/backend/utils/mb/conversion_procs/utf8_and_euc2004/Makefile
+++ b/src/backend/utils/mb/conversion_procs/utf8_and_euc2004/Makefile
@@ -6,8 +6,11 @@
 subdir = src/backend/utils/mb/conversion_procs/utf8_and_euc2004
 top_builddir = ../../../../../..
 include $(top_builddir)/src/Makefile.global
+mapfiledir = $(top_srcdir)/src/backend/utils/mb/Unicode
 
 NAME		= utf8_and_euc2004
 PGFILEDESC	= "utf8 <-> euc2004 text conversions"
+MAPFILES	= $(mapfiledir)/euc_jis_2004_to_utf8.map \
+			  $(mapfiledir)/utf8_to_euc_jis_2004.map
 
 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 9d0e157a758..d31499a5da8 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
@@ -6,8 +6,11 @@
 subdir = src/backend/utils/mb/conversion_procs/utf8_and_euc_cn
 top_builddir = ../../../../../..
 include $(top_builddir)/src/Makefile.global
+mapfiledir = $(top_builddir)/src/backend/utils/mb/Unicode
 
 NAME		= utf8_and_euc_cn
 PGFILEDESC	= "utf8 <-> euc_cn text conversions"
+MAPFILES	= $(mapfiledir)/euc_cn_to_utf8.map \
+			  $(mapfiledir)/utf8_to_euc_cn.map
 
 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 c5f55784363..5f15ae40867 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
@@ -6,8 +6,11 @@
 subdir = src/backend/utils/mb/conversion_procs/utf8_and_euc_jp
 top_builddir = ../../../../../..
 include $(top_builddir)/src/Makefile.global
+mapfiledir = $(top_builddir)/src/backend/utils/mb/Unicode
 
 NAME		= utf8_and_euc_jp
 PGFILEDESC	= "utf8 <-> euc_jp text conversions"
+MAPFILES	= $(mapfiledir)/euc_jp_to_utf8.map \
+			  $(mapfiledir)/utf8_to_euc_jp.map
 
 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 a7eff9e9e17..71d1a322012 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
@@ -6,8 +6,11 @@
 subdir = src/backend/utils/mb/conversion_procs/utf8_and_euc_kr
 top_builddir = ../../../../../..
 include $(top_builddir)/src/Makefile.global
+mapfiledir = $(top_builddir)/src/backend/utils/mb/Unicode
 
 NAME		= utf8_and_euc_kr
 PGFILEDESC	= "utf8 <-> euc_kr text conversions"
+MAPFILES	= $(mapfiledir)/euc_kr_to_utf8.map \
+			  $(mapfiledir)/utf8_to_euc_kr.map
 
 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 59f42dc2b7d..23e88503444 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
@@ -6,8 +6,11 @@
 subdir = src/backend/utils/mb/conversion_procs/utf8_and_euc_tw
 top_builddir = ../../../../../..
 include $(top_builddir)/src/Makefile.global
+mapfiledir = $(top_srcdir)/src/backend/utils/mb/Unicode
 
 NAME		= utf8_and_euc_tw
 PGFILEDESC	= "utf8 <-> euc_tw text conversions"
+MAPFILES	= $(mapfiledir)/euc_tw_to_utf8.map \
+			  $(mapfiledir)/utf8_to_euc_tw.map
 
 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 17bc18c373b..0b2d37b2995 100644
--- a/src/backend/utils/mb/conversion_procs/utf8_and_gb18030/Makefile
+++ b/src/backend/utils/mb/conversion_procs/utf8_and_gb18030/Makefile
@@ -6,8 +6,11 @@
 subdir = src/backend/utils/mb/conversion_procs/utf8_and_gb18030
 top_builddir = ../../../../../..
 include $(top_builddir)/src/Makefile.global
+mapfiledir = $(top_builddir)/src/backend/utils/mb/Unicode
 
 NAME		= utf8_and_gb18030
 PGFILEDESC	= "utf8 <-> gb18030 text conversions"
+MAPFILES	= $(mapfiledir)/gb18030_to_utf8.map \
+			  $(mapfiledir)/utf8_to_gb18030.map
 
 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 eb20638440f..ca28f103bf1 100644
--- a/src/backend/utils/mb/conversion_procs/utf8_and_gbk/Makefile
+++ b/src/backend/utils/mb/conversion_procs/utf8_and_gbk/Makefile
@@ -6,8 +6,11 @@
 subdir = src/backend/utils/mb/conversion_procs/utf8_and_gbk
 top_builddir = ../../../../../..
 include $(top_builddir)/src/Makefile.global
+mapfiledir = $(top_builddir)/src/backend/utils/mb/Unicode
 
 NAME		= utf8_and_gbk
 PGFILEDESC	= "utf8 <-> gbk text conversions"
+MAPFILES	= $(mapfiledir)/gbk_to_utf8.map \
+			  $(mapfiledir)/utf8_to_gbk.map
 
 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 6fd0dd27bf5..7914dff2b47 100644
--- a/src/backend/utils/mb/conversion_procs/utf8_and_iso8859/Makefile
+++ b/src/backend/utils/mb/conversion_procs/utf8_and_iso8859/Makefile
@@ -6,8 +6,35 @@
 subdir = src/backend/utils/mb/conversion_procs/utf8_and_iso8859
 top_builddir = ../../../../../..
 include $(top_builddir)/src/Makefile.global
+mapfiledir = $(top_builddir)/src/backend/utils/mb/Unicode
 
 NAME		= utf8_and_iso8859
 PGFILEDESC	= "utf8 <-> iso8859 text conversions"
+MAPFILES	= $(mapfiledir)/iso8859_10_to_utf8.map \
+			  $(mapfiledir)/iso8859_13_to_utf8.map \
+			  $(mapfiledir)/iso8859_14_to_utf8.map \
+			  $(mapfiledir)/iso8859_15_to_utf8.map \
+			  $(mapfiledir)/iso8859_16_to_utf8.map \
+			  $(mapfiledir)/iso8859_2_to_utf8.map \
+			  $(mapfiledir)/iso8859_3_to_utf8.map \
+			  $(mapfiledir)/iso8859_4_to_utf8.map \
+			  $(mapfiledir)/iso8859_5_to_utf8.map \
+			  $(mapfiledir)/iso8859_6_to_utf8.map \
+			  $(mapfiledir)/iso8859_7_to_utf8.map \
+			  $(mapfiledir)/iso8859_8_to_utf8.map \
+			  $(mapfiledir)/iso8859_9_to_utf8.map \
+			  $(mapfiledir)/utf8_to_iso8859_10.map \
+			  $(mapfiledir)/utf8_to_iso8859_13.map \
+			  $(mapfiledir)/utf8_to_iso8859_14.map \
+			  $(mapfiledir)/utf8_to_iso8859_15.map \
+			  $(mapfiledir)/utf8_to_iso8859_16.map \
+			  $(mapfiledir)/utf8_to_iso8859_2.map \
+			  $(mapfiledir)/utf8_to_iso8859_3.map \
+			  $(mapfiledir)/utf8_to_iso8859_4.map \
+			  $(mapfiledir)/utf8_to_iso8859_5.map \
+			  $(mapfiledir)/utf8_to_iso8859_6.map \
+			  $(mapfiledir)/utf8_to_iso8859_7.map \
+			  $(mapfiledir)/utf8_to_iso8859_8.map \
+			  $(mapfiledir)/utf8_to_iso8859_9.map
 
 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 e48ef3e3ea7..c4709c93976 100644
--- a/src/backend/utils/mb/conversion_procs/utf8_and_johab/Makefile
+++ b/src/backend/utils/mb/conversion_procs/utf8_and_johab/Makefile
@@ -6,8 +6,11 @@
 subdir = src/backend/utils/mb/conversion_procs/utf8_and_johab
 top_builddir = ../../../../../..
 include $(top_builddir)/src/Makefile.global
+mapfiledir = $(top_builddir)/src/backend/utils/mb/Unicode
 
 NAME		= utf8_and_johab
 PGFILEDESC	= "utf8 <-> johab text conversions"
+MAPFILES	= $(mapfiledir)/johab_to_utf8.map \
+			  $(mapfiledir)/utf8_to_johab.map
 
 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 448c5d4b64a..b5c2f0125a9 100644
--- a/src/backend/utils/mb/conversion_procs/utf8_and_sjis/Makefile
+++ b/src/backend/utils/mb/conversion_procs/utf8_and_sjis/Makefile
@@ -6,8 +6,11 @@
 subdir = src/backend/utils/mb/conversion_procs/utf8_and_sjis
 top_builddir = ../../../../../..
 include $(top_builddir)/src/Makefile.global
+mapfiledir = $(top_srcdir)/src/backend/utils/mb/Unicode
 
 NAME		= utf8_and_sjis
 PGFILEDESC	= "utf8 <-> sjis text conversions"
+MAPFILES	= $(mapfiledir)/sjis_to_utf8.map \
+			  $(mapfiledir)/utf8_to_sjis.map
 
 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 f7072a4dc5f..c201074677d 100644
--- a/src/backend/utils/mb/conversion_procs/utf8_and_sjis2004/Makefile
+++ b/src/backend/utils/mb/conversion_procs/utf8_and_sjis2004/Makefile
@@ -6,8 +6,11 @@
 subdir = src/backend/utils/mb/conversion_procs/utf8_and_sjis2004
 top_builddir = ../../../../../..
 include $(top_builddir)/src/Makefile.global
+mapfiledir = $(top_srcdir)/src/backend/utils/mb/Unicode
 
 NAME		= utf8_and_sjis2004
 PGFILEDESC	= "utf8 <-> sjis2004 text conversions"
+MAPFILES	= $(mapfiledir)/shift_jis_2004_to_utf8.map \
+			  $(mapfiledir)/utf8_to_shift_jis_2004.map
 
 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 cc6e0a9c971..85db2cf5686 100644
--- a/src/backend/utils/mb/conversion_procs/utf8_and_uhc/Makefile
+++ b/src/backend/utils/mb/conversion_procs/utf8_and_uhc/Makefile
@@ -6,8 +6,11 @@
 subdir = src/backend/utils/mb/conversion_procs/utf8_and_uhc
 top_builddir = ../../../../../..
 include $(top_builddir)/src/Makefile.global
+mapfiledir = $(top_srcdir)/src/backend/utils/mb/Unicode
 
 NAME		= utf8_and_uhc
 PGFILEDESC	= "utf8 <-> uhc text conversions"
+MAPFILES	= $(mapfiledir)/uhc_to_utf8.map \
+			  $(mapfiledir)/utf8_to_uhc.map
 
 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 d8b18fbf334..107d8002beb 100644
--- a/src/backend/utils/mb/conversion_procs/utf8_and_win/Makefile
+++ b/src/backend/utils/mb/conversion_procs/utf8_and_win/Makefile
@@ -6,8 +6,31 @@
 subdir = src/backend/utils/mb/conversion_procs/utf8_and_win
 top_builddir = ../../../../../..
 include $(top_builddir)/src/Makefile.global
+mapfiledir = $(top_srcdir)/src/backend/utils/mb/Unicode
 
 NAME		= utf8_and_win
 PGFILEDESC	= "utf8 <-> win text conversions"
+MAPFILES	= $(mapfiledir)/utf8_to_win1250.map \
+			  $(mapfiledir)/utf8_to_win1251.map \
+			  $(mapfiledir)/utf8_to_win1252.map \
+			  $(mapfiledir)/utf8_to_win1253.map \
+			  $(mapfiledir)/utf8_to_win1254.map \
+			  $(mapfiledir)/utf8_to_win1255.map \
+			  $(mapfiledir)/utf8_to_win1256.map \
+			  $(mapfiledir)/utf8_to_win1257.map \
+			  $(mapfiledir)/utf8_to_win1258.map \
+			  $(mapfiledir)/utf8_to_win866.map \
+			  $(mapfiledir)/utf8_to_win874.map \
+			  $(mapfiledir)/win1250_to_utf8.map \
+			  $(mapfiledir)/win1251_to_utf8.map \
+			  $(mapfiledir)/win1252_to_utf8.map \
+			  $(mapfiledir)/win1253_to_utf8.map \
+			  $(mapfiledir)/win1254_to_utf8.map \
+			  $(mapfiledir)/win1255_to_utf8.map \
+			  $(mapfiledir)/win1256_to_utf8.map \
+			  $(mapfiledir)/win1257_to_utf8.map \
+			  $(mapfiledir)/win866_to_utf8.map \
+			  $(mapfiledir)/win874_to_utf8.map \
+			  $(mapfiledir)/win1258_to_utf8.map
 
 include $(srcdir)/../proc.mk
-- 
2.39.5 (Apple Git-154)

#3厉超
lic@highgo.com
In reply to: Chao Li (#2)
1 attachment(s)
Re: Re: Enhance Makefiles to rebuild objects on map file changes

Try again ...

-----Original Messages-----
From:"Chao Li" <lic@highgo.com>
Send time:Wednesday, 06/08/2025 12:56:36

To: pgsql-hackers@lists.postgresql.org
Subject: Re: Enhance Makefiles to rebuild objects on map file changes

It looks weird. From /messages/by-id/1CA8625F-AA41-4ED2-B60F-E28AC71F37DC@highgo.com, I don’t see the attachment of the patch file. However, the email in my Inbox has the attachment.

Try to resend the attachment.

Chao Li (Evan)
--------------------
HighGo Infra. Software Inc.
https://www.highgo.com/

On Aug 6, 2025, at 12:41, Chao Li <lic@highgo.com> wrote:

Hi Community,

While working on the upgrade from GB18030 to GB18030-2022, I updated two GB18030-related map files. However, rebuilding PostgreSQL did not recompile anything, which led me to discover that the Makefiles under src/backend/utils/mb/conversion_procs were missing dependency rules between NAME.o and the corresponding map files.

This patch adds the necessary dependencies to ensure that when a map file changes, the corresponding .o file is rebuilt accordingly.

I have done tests for every Makefile I changed in a way like:

# make a change to a map file
$ make
# a .o got rebuilt
$ make # make again without map file change
# nothing re-compiled

Chao Li (Evan)
--------------------
HighGo Infra. Software Inc.
https://www.highgo.com/

<v1-0001-Enhance-Makefiles-to-rebuild-objects-on-map-file-.patch>

Attachments:

v1-0001-Enhance-Makefiles-to-rebuild-objects-on-map-file-.patchapplication/octet-stream; name=v1-0001-Enhance-Makefiles-to-rebuild-objects-on-map-file-.patch; x-unix-mode=0644Download
From 946186fb319bbdd3125597e1bc096a6fdf932c1a Mon Sep 17 00:00:00 2001
From: "Chao Li (HighGo Inc.)" <li.evan.chao@gmail.com>
Date: Wed, 6 Aug 2025 06:45:17 +0800
Subject: [PATCH v1] Enhance Makefiles to rebuild objects on map file changes

While working on the upgrade from GB18030 to GB18030-2022, I updated
two GB18030-related map files. However, rebuilding PostgreSQL did
not recompile anything, which led me to discover that the Makefiles
under src/backend/utils/mb/conversion_procs were missing dependency
rules between NAME.o and the corresponding map files.

This patch adds the necessary dependencies to ensure that when a map file
changes, the corresponding .o file is rebuilt accordingly.

Author: Chao Li <lic@highgo.com>
---
 src/backend/utils/mb/conversion_procs/proc.mk |  6 +++++
 .../conversion_procs/utf8_and_big5/Makefile   |  3 +++
 .../utf8_and_cyrillic/Makefile                |  5 ++++
 .../utf8_and_euc2004/Makefile                 |  3 +++
 .../conversion_procs/utf8_and_euc_cn/Makefile |  3 +++
 .../conversion_procs/utf8_and_euc_jp/Makefile |  3 +++
 .../conversion_procs/utf8_and_euc_kr/Makefile |  3 +++
 .../conversion_procs/utf8_and_euc_tw/Makefile |  3 +++
 .../utf8_and_gb18030/Makefile                 |  3 +++
 .../mb/conversion_procs/utf8_and_gbk/Makefile |  3 +++
 .../utf8_and_iso8859/Makefile                 | 27 +++++++++++++++++++
 .../conversion_procs/utf8_and_johab/Makefile  |  3 +++
 .../conversion_procs/utf8_and_sjis/Makefile   |  3 +++
 .../utf8_and_sjis2004/Makefile                |  3 +++
 .../mb/conversion_procs/utf8_and_uhc/Makefile |  3 +++
 .../mb/conversion_procs/utf8_and_win/Makefile | 23 ++++++++++++++++
 16 files changed, 97 insertions(+)

diff --git a/src/backend/utils/mb/conversion_procs/proc.mk b/src/backend/utils/mb/conversion_procs/proc.mk
index 2eeae282409..cc88d5ae79f 100644
--- a/src/backend/utils/mb/conversion_procs/proc.mk
+++ b/src/backend/utils/mb/conversion_procs/proc.mk
@@ -1,6 +1,12 @@
 SRCS		+= $(NAME).c
 OBJS		+= $(NAME).o $(WIN32RES)
 
+$(MAPFILES):
+	# The map files are generated by Perl scripts. We don't automatically
+	# regenerate them here.
+
+$(NAME).o: $(MAPFILES)
+
 rpath =
 
 all: all-shared-lib
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 2c274f3d9cc..4e8aae35416 100644
--- a/src/backend/utils/mb/conversion_procs/utf8_and_big5/Makefile
+++ b/src/backend/utils/mb/conversion_procs/utf8_and_big5/Makefile
@@ -6,8 +6,11 @@
 subdir = src/backend/utils/mb/conversion_procs/utf8_and_big5
 top_builddir = ../../../../../..
 include $(top_builddir)/src/Makefile.global
+mapfiledir = $(top_builddir)/src/backend/utils/mb/Unicode
 
 NAME		= utf8_and_big5
 PGFILEDESC	= "utf8 <-> big5 text conversions"
+MAPFILES	= $(mapfiledir)/big5_to_utf8.map \
+			  $(mapfiledir)/utf8_to_big5.map
 
 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 725281ec967..f0742db6898 100644
--- a/src/backend/utils/mb/conversion_procs/utf8_and_cyrillic/Makefile
+++ b/src/backend/utils/mb/conversion_procs/utf8_and_cyrillic/Makefile
@@ -6,8 +6,13 @@
 subdir = src/backend/utils/mb/conversion_procs/utf8_and_cyrillic
 top_builddir = ../../../../../..
 include $(top_builddir)/src/Makefile.global
+mapfiledir = $(top_builddir)/src/backend/utils/mb/Unicode
 
 NAME		= utf8_and_cyrillic
 PGFILEDESC	= "utf8 <-> cyrillic text conversions"
+MAPFILES	= $(mapfiledir)/utf8_to_koi8r.map \
+			  $(mapfiledir)/koi8r_to_utf8.map \
+			  $(mapfiledir)/utf8_to_koi8u.map \
+			  $(mapfiledir)/koi8u_to_utf8.map
 
 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 c6c537cffc8..e3830de005c 100644
--- a/src/backend/utils/mb/conversion_procs/utf8_and_euc2004/Makefile
+++ b/src/backend/utils/mb/conversion_procs/utf8_and_euc2004/Makefile
@@ -6,8 +6,11 @@
 subdir = src/backend/utils/mb/conversion_procs/utf8_and_euc2004
 top_builddir = ../../../../../..
 include $(top_builddir)/src/Makefile.global
+mapfiledir = $(top_srcdir)/src/backend/utils/mb/Unicode
 
 NAME		= utf8_and_euc2004
 PGFILEDESC	= "utf8 <-> euc2004 text conversions"
+MAPFILES	= $(mapfiledir)/euc_jis_2004_to_utf8.map \
+			  $(mapfiledir)/utf8_to_euc_jis_2004.map
 
 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 9d0e157a758..d31499a5da8 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
@@ -6,8 +6,11 @@
 subdir = src/backend/utils/mb/conversion_procs/utf8_and_euc_cn
 top_builddir = ../../../../../..
 include $(top_builddir)/src/Makefile.global
+mapfiledir = $(top_builddir)/src/backend/utils/mb/Unicode
 
 NAME		= utf8_and_euc_cn
 PGFILEDESC	= "utf8 <-> euc_cn text conversions"
+MAPFILES	= $(mapfiledir)/euc_cn_to_utf8.map \
+			  $(mapfiledir)/utf8_to_euc_cn.map
 
 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 c5f55784363..5f15ae40867 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
@@ -6,8 +6,11 @@
 subdir = src/backend/utils/mb/conversion_procs/utf8_and_euc_jp
 top_builddir = ../../../../../..
 include $(top_builddir)/src/Makefile.global
+mapfiledir = $(top_builddir)/src/backend/utils/mb/Unicode
 
 NAME		= utf8_and_euc_jp
 PGFILEDESC	= "utf8 <-> euc_jp text conversions"
+MAPFILES	= $(mapfiledir)/euc_jp_to_utf8.map \
+			  $(mapfiledir)/utf8_to_euc_jp.map
 
 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 a7eff9e9e17..71d1a322012 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
@@ -6,8 +6,11 @@
 subdir = src/backend/utils/mb/conversion_procs/utf8_and_euc_kr
 top_builddir = ../../../../../..
 include $(top_builddir)/src/Makefile.global
+mapfiledir = $(top_builddir)/src/backend/utils/mb/Unicode
 
 NAME		= utf8_and_euc_kr
 PGFILEDESC	= "utf8 <-> euc_kr text conversions"
+MAPFILES	= $(mapfiledir)/euc_kr_to_utf8.map \
+			  $(mapfiledir)/utf8_to_euc_kr.map
 
 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 59f42dc2b7d..23e88503444 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
@@ -6,8 +6,11 @@
 subdir = src/backend/utils/mb/conversion_procs/utf8_and_euc_tw
 top_builddir = ../../../../../..
 include $(top_builddir)/src/Makefile.global
+mapfiledir = $(top_srcdir)/src/backend/utils/mb/Unicode
 
 NAME		= utf8_and_euc_tw
 PGFILEDESC	= "utf8 <-> euc_tw text conversions"
+MAPFILES	= $(mapfiledir)/euc_tw_to_utf8.map \
+			  $(mapfiledir)/utf8_to_euc_tw.map
 
 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 17bc18c373b..0b2d37b2995 100644
--- a/src/backend/utils/mb/conversion_procs/utf8_and_gb18030/Makefile
+++ b/src/backend/utils/mb/conversion_procs/utf8_and_gb18030/Makefile
@@ -6,8 +6,11 @@
 subdir = src/backend/utils/mb/conversion_procs/utf8_and_gb18030
 top_builddir = ../../../../../..
 include $(top_builddir)/src/Makefile.global
+mapfiledir = $(top_builddir)/src/backend/utils/mb/Unicode
 
 NAME		= utf8_and_gb18030
 PGFILEDESC	= "utf8 <-> gb18030 text conversions"
+MAPFILES	= $(mapfiledir)/gb18030_to_utf8.map \
+			  $(mapfiledir)/utf8_to_gb18030.map
 
 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 eb20638440f..ca28f103bf1 100644
--- a/src/backend/utils/mb/conversion_procs/utf8_and_gbk/Makefile
+++ b/src/backend/utils/mb/conversion_procs/utf8_and_gbk/Makefile
@@ -6,8 +6,11 @@
 subdir = src/backend/utils/mb/conversion_procs/utf8_and_gbk
 top_builddir = ../../../../../..
 include $(top_builddir)/src/Makefile.global
+mapfiledir = $(top_builddir)/src/backend/utils/mb/Unicode
 
 NAME		= utf8_and_gbk
 PGFILEDESC	= "utf8 <-> gbk text conversions"
+MAPFILES	= $(mapfiledir)/gbk_to_utf8.map \
+			  $(mapfiledir)/utf8_to_gbk.map
 
 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 6fd0dd27bf5..7914dff2b47 100644
--- a/src/backend/utils/mb/conversion_procs/utf8_and_iso8859/Makefile
+++ b/src/backend/utils/mb/conversion_procs/utf8_and_iso8859/Makefile
@@ -6,8 +6,35 @@
 subdir = src/backend/utils/mb/conversion_procs/utf8_and_iso8859
 top_builddir = ../../../../../..
 include $(top_builddir)/src/Makefile.global
+mapfiledir = $(top_builddir)/src/backend/utils/mb/Unicode
 
 NAME		= utf8_and_iso8859
 PGFILEDESC	= "utf8 <-> iso8859 text conversions"
+MAPFILES	= $(mapfiledir)/iso8859_10_to_utf8.map \
+			  $(mapfiledir)/iso8859_13_to_utf8.map \
+			  $(mapfiledir)/iso8859_14_to_utf8.map \
+			  $(mapfiledir)/iso8859_15_to_utf8.map \
+			  $(mapfiledir)/iso8859_16_to_utf8.map \
+			  $(mapfiledir)/iso8859_2_to_utf8.map \
+			  $(mapfiledir)/iso8859_3_to_utf8.map \
+			  $(mapfiledir)/iso8859_4_to_utf8.map \
+			  $(mapfiledir)/iso8859_5_to_utf8.map \
+			  $(mapfiledir)/iso8859_6_to_utf8.map \
+			  $(mapfiledir)/iso8859_7_to_utf8.map \
+			  $(mapfiledir)/iso8859_8_to_utf8.map \
+			  $(mapfiledir)/iso8859_9_to_utf8.map \
+			  $(mapfiledir)/utf8_to_iso8859_10.map \
+			  $(mapfiledir)/utf8_to_iso8859_13.map \
+			  $(mapfiledir)/utf8_to_iso8859_14.map \
+			  $(mapfiledir)/utf8_to_iso8859_15.map \
+			  $(mapfiledir)/utf8_to_iso8859_16.map \
+			  $(mapfiledir)/utf8_to_iso8859_2.map \
+			  $(mapfiledir)/utf8_to_iso8859_3.map \
+			  $(mapfiledir)/utf8_to_iso8859_4.map \
+			  $(mapfiledir)/utf8_to_iso8859_5.map \
+			  $(mapfiledir)/utf8_to_iso8859_6.map \
+			  $(mapfiledir)/utf8_to_iso8859_7.map \
+			  $(mapfiledir)/utf8_to_iso8859_8.map \
+			  $(mapfiledir)/utf8_to_iso8859_9.map
 
 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 e48ef3e3ea7..c4709c93976 100644
--- a/src/backend/utils/mb/conversion_procs/utf8_and_johab/Makefile
+++ b/src/backend/utils/mb/conversion_procs/utf8_and_johab/Makefile
@@ -6,8 +6,11 @@
 subdir = src/backend/utils/mb/conversion_procs/utf8_and_johab
 top_builddir = ../../../../../..
 include $(top_builddir)/src/Makefile.global
+mapfiledir = $(top_builddir)/src/backend/utils/mb/Unicode
 
 NAME		= utf8_and_johab
 PGFILEDESC	= "utf8 <-> johab text conversions"
+MAPFILES	= $(mapfiledir)/johab_to_utf8.map \
+			  $(mapfiledir)/utf8_to_johab.map
 
 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 448c5d4b64a..b5c2f0125a9 100644
--- a/src/backend/utils/mb/conversion_procs/utf8_and_sjis/Makefile
+++ b/src/backend/utils/mb/conversion_procs/utf8_and_sjis/Makefile
@@ -6,8 +6,11 @@
 subdir = src/backend/utils/mb/conversion_procs/utf8_and_sjis
 top_builddir = ../../../../../..
 include $(top_builddir)/src/Makefile.global
+mapfiledir = $(top_srcdir)/src/backend/utils/mb/Unicode
 
 NAME		= utf8_and_sjis
 PGFILEDESC	= "utf8 <-> sjis text conversions"
+MAPFILES	= $(mapfiledir)/sjis_to_utf8.map \
+			  $(mapfiledir)/utf8_to_sjis.map
 
 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 f7072a4dc5f..c201074677d 100644
--- a/src/backend/utils/mb/conversion_procs/utf8_and_sjis2004/Makefile
+++ b/src/backend/utils/mb/conversion_procs/utf8_and_sjis2004/Makefile
@@ -6,8 +6,11 @@
 subdir = src/backend/utils/mb/conversion_procs/utf8_and_sjis2004
 top_builddir = ../../../../../..
 include $(top_builddir)/src/Makefile.global
+mapfiledir = $(top_srcdir)/src/backend/utils/mb/Unicode
 
 NAME		= utf8_and_sjis2004
 PGFILEDESC	= "utf8 <-> sjis2004 text conversions"
+MAPFILES	= $(mapfiledir)/shift_jis_2004_to_utf8.map \
+			  $(mapfiledir)/utf8_to_shift_jis_2004.map
 
 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 cc6e0a9c971..85db2cf5686 100644
--- a/src/backend/utils/mb/conversion_procs/utf8_and_uhc/Makefile
+++ b/src/backend/utils/mb/conversion_procs/utf8_and_uhc/Makefile
@@ -6,8 +6,11 @@
 subdir = src/backend/utils/mb/conversion_procs/utf8_and_uhc
 top_builddir = ../../../../../..
 include $(top_builddir)/src/Makefile.global
+mapfiledir = $(top_srcdir)/src/backend/utils/mb/Unicode
 
 NAME		= utf8_and_uhc
 PGFILEDESC	= "utf8 <-> uhc text conversions"
+MAPFILES	= $(mapfiledir)/uhc_to_utf8.map \
+			  $(mapfiledir)/utf8_to_uhc.map
 
 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 d8b18fbf334..107d8002beb 100644
--- a/src/backend/utils/mb/conversion_procs/utf8_and_win/Makefile
+++ b/src/backend/utils/mb/conversion_procs/utf8_and_win/Makefile
@@ -6,8 +6,31 @@
 subdir = src/backend/utils/mb/conversion_procs/utf8_and_win
 top_builddir = ../../../../../..
 include $(top_builddir)/src/Makefile.global
+mapfiledir = $(top_srcdir)/src/backend/utils/mb/Unicode
 
 NAME		= utf8_and_win
 PGFILEDESC	= "utf8 <-> win text conversions"
+MAPFILES	= $(mapfiledir)/utf8_to_win1250.map \
+			  $(mapfiledir)/utf8_to_win1251.map \
+			  $(mapfiledir)/utf8_to_win1252.map \
+			  $(mapfiledir)/utf8_to_win1253.map \
+			  $(mapfiledir)/utf8_to_win1254.map \
+			  $(mapfiledir)/utf8_to_win1255.map \
+			  $(mapfiledir)/utf8_to_win1256.map \
+			  $(mapfiledir)/utf8_to_win1257.map \
+			  $(mapfiledir)/utf8_to_win1258.map \
+			  $(mapfiledir)/utf8_to_win866.map \
+			  $(mapfiledir)/utf8_to_win874.map \
+			  $(mapfiledir)/win1250_to_utf8.map \
+			  $(mapfiledir)/win1251_to_utf8.map \
+			  $(mapfiledir)/win1252_to_utf8.map \
+			  $(mapfiledir)/win1253_to_utf8.map \
+			  $(mapfiledir)/win1254_to_utf8.map \
+			  $(mapfiledir)/win1255_to_utf8.map \
+			  $(mapfiledir)/win1256_to_utf8.map \
+			  $(mapfiledir)/win1257_to_utf8.map \
+			  $(mapfiledir)/win866_to_utf8.map \
+			  $(mapfiledir)/win874_to_utf8.map \
+			  $(mapfiledir)/win1258_to_utf8.map
 
 include $(srcdir)/../proc.mk
-- 
2.39.5 (Apple Git-154)

#4Álvaro Herrera
alvherre@kurilemu.de
In reply to: Chao Li (#2)
Re: Enhance Makefiles to rebuild objects on map file changes

On 2025-Aug-06, Chao Li wrote:

It looks weird. From
/messages/by-id/1CA8625F-AA41-4ED2-B60F-E28AC71F37DC@highgo.com,
I don’t see the attachment of the patch file. However, the email in my
Inbox has the attachment.

Yeah, AppleMail is known to do this. I don't know if there's a config
toggle you can use to avoid that, or you just have to use something
else. If there _is_ an AppleMail toggle that you changed for your later
experiemnts, please let us know what it is, so that we can point other
people with this problem to it.

--
Álvaro Herrera 48°01'N 7°57'E — https://www.EnterpriseDB.com/
"Las navajas y los monos deben estar siempre distantes" (Germán Poo)

#5厉超
lic@highgo.com
In reply to: Álvaro Herrera (#4)
Re: Re: Enhance Makefiles to rebuild objects on map file changes

I finally switch to use my Gmail account. With the Gmail account, AppleMail can send attachment successfully.

Show quoted text

-----Original Messages-----
From: "Álvaro Herrera" <alvherre@kurilemu.de>
Send time:Wednesday, 06/08/2025 17:41:46
To: "Chao Li" <lic@highgo.com>
Cc: pgsql-hackers@lists.postgresql.org
Subject: Re: Enhance Makefiles to rebuild objects on map file changes

On 2025-Aug-06, Chao Li wrote:

It looks weird. From
/messages/by-id/1CA8625F-AA41-4ED2-B60F-E28AC71F37DC@highgo.com,
I don’t see the attachment of the patch file. However, the email in my
Inbox has the attachment.

Yeah, AppleMail is known to do this. I don't know if there's a config
toggle you can use to avoid that, or you just have to use something
else. If there _is_ an AppleMail toggle that you changed for your later
experiemnts, please let us know what it is, so that we can point other
people with this problem to it.

--
Álvaro Herrera 48°01'N 7°57'E — https://www.EnterpriseDB.com/
"Las navajas y los monos deben estar siempre distantes" (Germán Poo)

#6Bruce Momjian
bruce@momjian.us
In reply to: Álvaro Herrera (#4)
Re: Enhance Makefiles to rebuild objects on map file changes

On Wed, Aug 6, 2025 at 11:41:46AM +0200, Álvaro Herrera wrote:

On 2025-Aug-06, Chao Li wrote:

It looks weird. From
/messages/by-id/1CA8625F-AA41-4ED2-B60F-E28AC71F37DC@highgo.com,
I don’t see the attachment of the patch file. However, the email in my
Inbox has the attachment.

Yeah, AppleMail is known to do this. I don't know if there's a config
toggle you can use to avoid that, or you just have to use something
else. If there _is_ an AppleMail toggle that you changed for your later
experiemnts, please let us know what it is, so that we can point other
people with this problem to it.

I found this from June of 2024 with a fix:

There's a button in the tool bar called 'Include Attachments'. If
this button is accidentally switched off then the email won't send
an email with attachments. So I just went to 'View' and 'Edit
Toolbar' and got rid of this very useless button. Now I have no
more problems with certain emails not sending with attachments.

--
Bruce Momjian <bruce@momjian.us> https://momjian.us
EDB https://enterprisedb.com

Do not let urgent matters crowd out time for investment in the future.

#7Bruce Momjian
bruce@momjian.us
In reply to: Bruce Momjian (#6)
Re: Enhance Makefiles to rebuild objects on map file changes

On Tue, Aug 12, 2025 at 11:58:12AM -0400, Bruce Momjian wrote:

On Wed, Aug 6, 2025 at 11:41:46AM +0200, Álvaro Herrera wrote:

On 2025-Aug-06, Chao Li wrote:

It looks weird. From
/messages/by-id/1CA8625F-AA41-4ED2-B60F-E28AC71F37DC@highgo.com,
I don’t see the attachment of the patch file. However, the email in my
Inbox has the attachment.

Yeah, AppleMail is known to do this. I don't know if there's a config
toggle you can use to avoid that, or you just have to use something
else. If there _is_ an AppleMail toggle that you changed for your later
experiemnts, please let us know what it is, so that we can point other
people with this problem to it.

I found this from June of 2024 with a fix:

There's a button in the tool bar called 'Include Attachments'. If
this button is accidentally switched off then the email won't send
an email with attachments. So I just went to 'View' and 'Edit
Toolbar' and got rid of this very useless button. Now I have no
more problems with certain emails not sending with attachments.

Sorry, URL is:

https://discussions.apple.com/thread/254969428?sortBy=rank&amp;page=1

--
Bruce Momjian <bruce@momjian.us> https://momjian.us
EDB https://enterprisedb.com

Do not let urgent matters crowd out time for investment in the future.

#8Chao Li
li.evan.chao@gmail.com
In reply to: Bruce Momjian (#7)
Re: Enhance Makefiles to rebuild objects on map file changes

Hi Bruce,

Thanks for the information.

Sorry, URL is:

https://discussions.apple.com/thread/254969428?sortBy=rank&amp;page=1

My problem was different. The situation I faced was:

* If I use my company’s email account with Mac Mail app to send a patch, then from other email clients that subscribed to pqsql-hackers mailing list, I can see the attachment in the email. But from postgresql.org’s mailing “Archives”, I can only see the email without attached patch file.

* If I use my Gmail account with Mac Mail app to a send a patch, then postgresql.org’s mailing “Archives” will show the email with the patch file. However, the patch file’s content-type is always “application/octet-stream”. I couldn’t find a way to change that.

* Now I switched to use Thunderbird email app with my Gmail account. With that combination, patches file’s content-type is “plain/text” now in “Archives”.

Regards,

Chao Li (Evan)
--------------------
HighGo Software Co., Ltd.
https://www.highgo.com/

#9Chao Li
li.evan.chao@gmail.com
In reply to: Chao Li (#8)
Re: Enhance Makefiles to rebuild objects on map file changes

Hi John,

Let me explain the Makefile patch in this separate thread, as this is generic to all maps.

Let’s not use gb18030 as an example, instead, using utf8_and_win.

When any of the win-related map file changes, it suppose to automatically rebuild utf8_and_win.o.

WITHOUT this patch, after I touch a map file, it doesn’t rebuild the object file:

```
# Now it’s in master branch
chaol@ChaodeMacBook-Air utf8_and_win % pwd
/Users/chaol/Documents/code/postgresql/src/backend/utils/mb/conversion_procs/utf8_and_win

# touch a map file to simulate a change
chaol@ChaodeMacBook-Air utf8_and_win % touch ../../Unicode/win874_to_utf8.map

# make only rebuild header files, without rebuild object files.
chaol@ChaodeMacBook-Air utf8_and_win % make
/Library/Developer/CommandLineTools/usr/bin/make -C ../../../../../../src/backend generated-headers
/Library/Developer/CommandLineTools/usr/bin/make -C ../include/catalog generated-headers
'/usr/bin/perl' ../../../src/backend/catalog/genbki.pl --include-path=../../../src/include/ \
--set-version=19 ../../../src/include/catalog/pg_proc.h ../../../src/include/catalog/pg_type.h ../../../src/include/catalog/pg_attribute.h ../../../src/include/catalog/pg_class.h ../../../src/include/catalog/pg_attrdef.h ../../../src/include/catalog/pg_constraint.h ../../../src/include/catalog/pg_inherits.h ../../../src/include/catalog/pg_index.h ../../../src/include/catalog/pg_operator.h ../../../src/include/catalog/pg_opfamily.h ../../../src/include/catalog/pg_opclass.h ../../../src/include/catalog/pg_am.h ../../../src/include/catalog/pg_amop.h ../../../src/include/catalog/pg_amproc.h ../../../src/include/catalog/pg_language.h ../../../src/include/catalog/pg_largeobject_metadata.h ../../../src/include/catalog/pg_largeobject.h ../../../src/include/catalog/pg_aggregate.h ../../../src/include/catalog/pg_statistic.h ../../../src/include/catalog/pg_statistic_ext.h ../../../src/include/catalog/pg_statistic_ext_data.h ../../../src/include/catalog/pg_rewrite.h ../../../src/include/catalog/pg_trigger.h ../../../src/include/catalog/pg_event_trigger.h ../../../src/include/catalog/pg_description.h ../../../src/include/catalog/pg_cast.h ../../../src/include/catalog/pg_enum.h ../../../src/include/catalog/pg_namespace.h ../../../src/include/catalog/pg_conversion.h ../../../src/include/catalog/pg_depend.h ../../../src/include/catalog/pg_database.h ../../../src/include/catalog/pg_db_role_setting.h ../../../src/include/catalog/pg_tablespace.h ../../../src/include/catalog/pg_authid.h ../../../src/include/catalog/pg_auth_members.h ../../../src/include/catalog/pg_shdepend.h ../../../src/include/catalog/pg_shdescription.h ../../../src/include/catalog/pg_ts_config.h ../../../src/include/catalog/pg_ts_config_map.h ../../../src/include/catalog/pg_ts_dict.h ../../../src/include/catalog/pg_ts_parser.h ../../../src/include/catalog/pg_ts_template.h ../../../src/include/catalog/pg_extension.h ../../../src/include/catalog/pg_foreign_data_wrapper.h ../../../src/include/catalog/pg_foreign_server.h ../../../src/include/catalog/pg_user_mapping.h ../../../src/include/catalog/pg_foreign_table.h ../../../src/include/catalog/pg_policy.h ../../../src/include/catalog/pg_replication_origin.h ../../../src/include/catalog/pg_default_acl.h ../../../src/include/catalog/pg_init_privs.h ../../../src/include/catalog/pg_seclabel.h ../../../src/include/catalog/pg_shseclabel.h ../../../src/include/catalog/pg_collation.h ../../../src/include/catalog/pg_parameter_acl.h ../../../src/include/catalog/pg_partitioned_table.h ../../../src/include/catalog/pg_range.h ../../../src/include/catalog/pg_transform.h ../../../src/include/catalog/pg_sequence.h ../../../src/include/catalog/pg_publication.h ../../../src/include/catalog/pg_publication_namespace.h ../../../src/include/catalog/pg_publication_rel.h ../../../src/include/catalog/pg_subscription.h ../../../src/include/catalog/pg_subscription_rel.h
touch bki-stamp
/Library/Developer/CommandLineTools/usr/bin/make -C nodes generated-header-symlinks
'/usr/bin/perl' gen_node_support.pl ../../../src/include/nodes/nodes.h ../../../src/include/nodes/primnodes.h ../../../src/include/nodes/parsenodes.h ../../../src/include/nodes/pathnodes.h ../../../src/include/nodes/plannodes.h ../../../src/include/nodes/execnodes.h ../../../src/include/access/amapi.h ../../../src/include/access/cmptype.h ../../../src/include/access/sdir.h ../../../src/include/access/tableam.h ../../../src/include/access/tsmapi.h ../../../src/include/commands/event_trigger.h ../../../src/include/commands/trigger.h ../../../src/include/executor/tuptable.h ../../../src/include/foreign/fdwapi.h ../../../src/include/nodes/bitmapset.h ../../../src/include/nodes/extensible.h ../../../src/include/nodes/lockoptions.h ../../../src/include/nodes/miscnodes.h ../../../src/include/nodes/replnodes.h ../../../src/include/nodes/supportnodes.h ../../../src/include/nodes/value.h ../../../src/include/utils/rel.h
touch node-support-stamp
cd '../../../src/include/nodes/' && for file in nodetags.h; do \
rm -f $file && ln -s "../../../src/backend/nodes/$file" . ; \
done
touch ../../../src/include/nodes/header-stamp
/Library/Developer/CommandLineTools/usr/bin/make -C utils generated-header-symlinks
/Library/Developer/CommandLineTools/usr/bin/make -C adt jsonpath_gram.h
make[3]: `jsonpath_gram.h' is up to date.

# make again, it does nothing
chaol@ChaodeMacBook-Air utf8_and_win % make
/Library/Developer/CommandLineTools/usr/bin/make -C ../../../../../../src/backend generated-headers
/Library/Developer/CommandLineTools/usr/bin/make -C ../include/catalog generated-headers
make[2]: Nothing to be done for `generated-headers'.
/Library/Developer/CommandLineTools/usr/bin/make -C nodes generated-header-symlinks
make[2]: Nothing to be done for `generated-header-symlinks'.
/Library/Developer/CommandLineTools/usr/bin/make -C utils generated-header-symlinks
/Library/Developer/CommandLineTools/usr/bin/make -C adt jsonpath_gram.h
make[3]: `jsonpath_gram.h' is up to date.
```

WITH this patch, it will automatically rebuild object files:

```
# switch to the patch branch
chaol@ChaodeMacBook-Air utf8_and_win % git co topic/chaol/mb-makefiles
Switched to branch 'topic/chaol/mb-makefiles’

# After switching branch, make rebuilt header files and object files.
chaol@ChaodeMacBook-Air utf8_and_win % make
/Library/Developer/CommandLineTools/usr/bin/make -C ../../../../../../src/backend generated-headers
/Library/Developer/CommandLineTools/usr/bin/make -C ../include/catalog generated-headers
'/usr/bin/perl' ../../../src/backend/catalog/genbki.pl --include-path=../../../src/include/ \
--set-version=19 ../../../src/include/catalog/pg_proc.h ../../../src/include/catalog/pg_type.h ../../../src/include/catalog/pg_attribute.h ../../../src/include/catalog/pg_class.h ../../../src/include/catalog/pg_attrdef.h ../../../src/include/catalog/pg_constraint.h ../../../src/include/catalog/pg_inherits.h ../../../src/include/catalog/pg_index.h ../../../src/include/catalog/pg_operator.h ../../../src/include/catalog/pg_opfamily.h ../../../src/include/catalog/pg_opclass.h ../../../src/include/catalog/pg_am.h ../../../src/include/catalog/pg_amop.h ../../../src/include/catalog/pg_amproc.h ../../../src/include/catalog/pg_language.h ../../../src/include/catalog/pg_largeobject_metadata.h ../../../src/include/catalog/pg_largeobject.h ../../../src/include/catalog/pg_aggregate.h ../../../src/include/catalog/pg_statistic.h ../../../src/include/catalog/pg_statistic_ext.h ../../../src/include/catalog/pg_statistic_ext_data.h ../../../src/include/catalog/pg_rewrite.h ../../../src/include/catalog/pg_trigger.h ../../../src/include/catalog/pg_event_trigger.h ../../../src/include/catalog/pg_description.h ../../../src/include/catalog/pg_cast.h ../../../src/include/catalog/pg_enum.h ../../../src/include/catalog/pg_namespace.h ../../../src/include/catalog/pg_conversion.h ../../../src/include/catalog/pg_depend.h ../../../src/include/catalog/pg_database.h ../../../src/include/catalog/pg_db_role_setting.h ../../../src/include/catalog/pg_tablespace.h ../../../src/include/catalog/pg_authid.h ../../../src/include/catalog/pg_auth_members.h ../../../src/include/catalog/pg_shdepend.h ../../../src/include/catalog/pg_shdescription.h ../../../src/include/catalog/pg_ts_config.h ../../../src/include/catalog/pg_ts_config_map.h ../../../src/include/catalog/pg_ts_dict.h ../../../src/include/catalog/pg_ts_parser.h ../../../src/include/catalog/pg_ts_template.h ../../../src/include/catalog/pg_extension.h ../../../src/include/catalog/pg_foreign_data_wrapper.h ../../../src/include/catalog/pg_foreign_server.h ../../../src/include/catalog/pg_user_mapping.h ../../../src/include/catalog/pg_foreign_table.h ../../../src/include/catalog/pg_policy.h ../../../src/include/catalog/pg_replication_origin.h ../../../src/include/catalog/pg_default_acl.h ../../../src/include/catalog/pg_init_privs.h ../../../src/include/catalog/pg_seclabel.h ../../../src/include/catalog/pg_shseclabel.h ../../../src/include/catalog/pg_collation.h ../../../src/include/catalog/pg_parameter_acl.h ../../../src/include/catalog/pg_partitioned_table.h ../../../src/include/catalog/pg_range.h ../../../src/include/catalog/pg_transform.h ../../../src/include/catalog/pg_sequence.h ../../../src/include/catalog/pg_publication.h ../../../src/include/catalog/pg_publication_namespace.h ../../../src/include/catalog/pg_publication_rel.h ../../../src/include/catalog/pg_subscription.h ../../../src/include/catalog/pg_subscription_rel.h
touch bki-stamp
/Library/Developer/CommandLineTools/usr/bin/make -C nodes generated-header-symlinks
'/usr/bin/perl' gen_node_support.pl ../../../src/include/nodes/nodes.h ../../../src/include/nodes/primnodes.h ../../../src/include/nodes/parsenodes.h ../../../src/include/nodes/pathnodes.h ../../../src/include/nodes/plannodes.h ../../../src/include/nodes/execnodes.h ../../../src/include/access/amapi.h ../../../src/include/access/cmptype.h ../../../src/include/access/sdir.h ../../../src/include/access/tableam.h ../../../src/include/access/tsmapi.h ../../../src/include/commands/event_trigger.h ../../../src/include/commands/trigger.h ../../../src/include/executor/tuptable.h ../../../src/include/foreign/fdwapi.h ../../../src/include/nodes/bitmapset.h ../../../src/include/nodes/extensible.h ../../../src/include/nodes/lockoptions.h ../../../src/include/nodes/miscnodes.h ../../../src/include/nodes/replnodes.h ../../../src/include/nodes/supportnodes.h ../../../src/include/nodes/value.h ../../../src/include/utils/rel.h
touch node-support-stamp
cd '../../../src/include/nodes/' && for file in nodetags.h; do \
rm -f $file && ln -s "../../../src/backend/nodes/$file" . ; \
done
touch ../../../src/include/nodes/header-stamp
/Library/Developer/CommandLineTools/usr/bin/make -C utils generated-header-symlinks
/Library/Developer/CommandLineTools/usr/bin/make -C adt jsonpath_gram.h
make[3]: `jsonpath_gram.h' is up to date.
gcc -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Werror=vla -Werror=unguarded-availability-new -Wendif-labels -Wmissing-format-attribute -Wcast-function-type -Wformat-security -Wmissing-variable-declarations -fno-strict-aliasing -fwrapv -fexcess-precision=standard -Wno-unused-command-line-argument -Wno-compound-token-split-by-macro -Wno-format-truncation -Wno-cast-function-type-strict -g -O2 -fvisibility=hidden -I../../../../../../src/include -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX15.5.sdk -I/opt/homebrew/Cellar/icu4c@77/77.1/include -c -o utf8_and_win.o utf8_and_win.c
gcc -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Werror=vla -Werror=unguarded-availability-new -Wendif-labels -Wmissing-format-attribute -Wcast-function-type -Wformat-security -Wmissing-variable-declarations -fno-strict-aliasing -fwrapv -fexcess-precision=standard -Wno-unused-command-line-argument -Wno-compound-token-split-by-macro -Wno-format-truncation -Wno-cast-function-type-strict -g -O2 -fvisibility=hidden -bundle -o utf8_and_win.dylib utf8_and_win.o -L../../../../../../src/port -L../../../../../../src/common -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX15.5.sdk -Wl,-dead_strip_dylibs -fvisibility=hidden -bundle_loader ../../../../../../src/backend/postgres

# touch a map file to simulate map file change
chaol@ChaodeMacBook-Air utf8_and_win % touch ../../Unicode/win874_to_utf8.map

# make rebuilt object files
chaol@ChaodeMacBook-Air utf8_and_win % make
/Library/Developer/CommandLineTools/usr/bin/make -C ../../../../../../src/backend generated-headers
/Library/Developer/CommandLineTools/usr/bin/make -C ../include/catalog generated-headers
make[2]: Nothing to be done for `generated-headers'.
/Library/Developer/CommandLineTools/usr/bin/make -C nodes generated-header-symlinks
make[2]: Nothing to be done for `generated-header-symlinks'.
/Library/Developer/CommandLineTools/usr/bin/make -C utils generated-header-symlinks
/Library/Developer/CommandLineTools/usr/bin/make -C adt jsonpath_gram.h
make[3]: `jsonpath_gram.h' is up to date.
gcc -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Werror=vla -Werror=unguarded-availability-new -Wendif-labels -Wmissing-format-attribute -Wcast-function-type -Wformat-security -Wmissing-variable-declarations -fno-strict-aliasing -fwrapv -fexcess-precision=standard -Wno-unused-command-line-argument -Wno-compound-token-split-by-macro -Wno-format-truncation -Wno-cast-function-type-strict -g -O2 -fvisibility=hidden -I../../../../../../src/include -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX15.5.sdk -I/opt/homebrew/Cellar/icu4c@77/77.1/include -c -o utf8_and_win.o utf8_and_win.c
gcc -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Werror=vla -Werror=unguarded-availability-new -Wendif-labels -Wmissing-format-attribute -Wcast-function-type -Wformat-security -Wmissing-variable-declarations -fno-strict-aliasing -fwrapv -fexcess-precision=standard -Wno-unused-command-line-argument -Wno-compound-token-split-by-macro -Wno-format-truncation -Wno-cast-function-type-strict -g -O2 -fvisibility=hidden -bundle -o utf8_and_win.dylib utf8_and_win.o -L../../../../../../src/port -L../../../../../../src/common -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX15.5.sdk -Wl,-dead_strip_dylibs -fvisibility=hidden -bundle_loader ../../../../../../src/backend/postgres
chaol@ChaodeMacBook-Air utf8_and_win %

# make again did nothing
chaol@ChaodeMacBook-Air utf8_and_win % make
/Library/Developer/CommandLineTools/usr/bin/make -C ../../../../../../src/backend generated-headers
/Library/Developer/CommandLineTools/usr/bin/make -C ../include/catalog generated-headers
make[2]: Nothing to be done for `generated-headers'.
/Library/Developer/CommandLineTools/usr/bin/make -C nodes generated-header-symlinks
make[2]: Nothing to be done for `generated-header-symlinks'.
/Library/Developer/CommandLineTools/usr/bin/make -C utils generated-header-symlinks
/Library/Developer/CommandLineTools/usr/bin/make -C adt jsonpath_gram.h
make[3]: `jsonpath_gram.h' is up to date.

# change map file again
chaol@ChaodeMacBook-Air utf8_and_win % touch ../../Unicode/win874_to_utf8.map

# make automatically rebuilt object files.
chaol@ChaodeMacBook-Air utf8_and_win % make
/Library/Developer/CommandLineTools/usr/bin/make -C ../../../../../../src/backend generated-headers
/Library/Developer/CommandLineTools/usr/bin/make -C ../include/catalog generated-headers
make[2]: Nothing to be done for `generated-headers'.
/Library/Developer/CommandLineTools/usr/bin/make -C nodes generated-header-symlinks
make[2]: Nothing to be done for `generated-header-symlinks'.
/Library/Developer/CommandLineTools/usr/bin/make -C utils generated-header-symlinks
/Library/Developer/CommandLineTools/usr/bin/make -C adt jsonpath_gram.h
make[3]: `jsonpath_gram.h' is up to date.
gcc -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Werror=vla -Werror=unguarded-availability-new -Wendif-labels -Wmissing-format-attribute -Wcast-function-type -Wformat-security -Wmissing-variable-declarations -fno-strict-aliasing -fwrapv -fexcess-precision=standard -Wno-unused-command-line-argument -Wno-compound-token-split-by-macro -Wno-format-truncation -Wno-cast-function-type-strict -g -O2 -fvisibility=hidden -I../../../../../../src/include -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX15.5.sdk -I/opt/homebrew/Cellar/icu4c@77/77.1/include -c -o utf8_and_win.o utf8_and_win.c
gcc -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Werror=vla -Werror=unguarded-availability-new -Wendif-labels -Wmissing-format-attribute -Wcast-function-type -Wformat-security -Wmissing-variable-declarations -fno-strict-aliasing -fwrapv -fexcess-precision=standard -Wno-unused-command-line-argument -Wno-compound-token-split-by-macro -Wno-format-truncation -Wno-cast-function-type-strict -g -O2 -fvisibility=hidden -bundle -o utf8_and_win.dylib utf8_and_win.o -L../../../../../../src/port -L../../../../../../src/common -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX15.5.sdk -Wl,-dead_strip_dylibs -fvisibility=hidden -bundle_loader ../../../../../../src/backend/postgres

# make again did nothing
chaol@ChaodeMacBook-Air utf8_and_win % make
/Library/Developer/CommandLineTools/usr/bin/make -C ../../../../../../src/backend generated-headers
/Library/Developer/CommandLineTools/usr/bin/make -C ../include/catalog generated-headers
make[2]: Nothing to be done for `generated-headers'.
/Library/Developer/CommandLineTools/usr/bin/make -C nodes generated-header-symlinks
make[2]: Nothing to be done for `generated-header-symlinks'.
/Library/Developer/CommandLineTools/usr/bin/make -C utils generated-header-symlinks
/Library/Developer/CommandLineTools/usr/bin/make -C adt jsonpath_gram.h
make[3]: `jsonpath_gram.h' is up to date.
```

--
Chao Li (Evan)
HighGo Software Co., Ltd.
https://www.highgo.com/

#10Álvaro Herrera
alvherre@kurilemu.de
In reply to: Chao Li (#9)
Re: Enhance Makefiles to rebuild objects on map file changes

On 2025-Aug-19, Chao Li wrote:

Hi John,

Let me explain the Makefile patch in this separate thread, as this is generic to all maps.

Let’s not use gb18030 as an example, instead, using utf8_and_win.

When any of the win-related map file changes, it suppose to automatically rebuild utf8_and_win.o.

WITHOUT this patch, after I touch a map file, it doesn’t rebuild the object file:

Hmm. Yeah, this really looks somewhat bogus as you say. I wonder
though if we shouldn't have the UCS_to_*.pl scripts generate a bunch of
"mapdeps.mk" files instead, or something like that, given that these
*.map files are themselves generated.

Also, I suspect you should do something about Meson, but I don't know
what that would look like.

--
Álvaro Herrera PostgreSQL Developer — https://www.EnterpriseDB.com/
Thou shalt study thy libraries and strive not to reinvent them without
cause, that thy code may be short and readable and thy days pleasant
and productive. (7th Commandment for C Programmers)

#11John Naylor
johncnaylorls@gmail.com
In reply to: Álvaro Herrera (#10)
Re: Enhance Makefiles to rebuild objects on map file changes

On Tue, Aug 19, 2025 at 10:43 PM Álvaro Herrera <alvherre@kurilemu.de> wrote:

Also, I suspect you should do something about Meson, but I don't know
what that would look like.

It seems to work already on Meson:

$ <build>
$ touch src/backend/utils/mb/Unicode/win874_to_utf8.map
$ <build>
building for debug
ninja: Entering directory `build-debug'
[2/2] Linking target src/backend/utils/mb/conversion_procs/utf8_and_win.so

--
John Naylor
Amazon Web Services

#12Chao Li
li.evan.chao@gmail.com
In reply to: John Naylor (#11)
Re: Enhance Makefiles to rebuild objects on map file changes

On Aug 20, 2025, at 11:44, John Naylor <johncnaylorls@gmail.com> wrote:

On Tue, Aug 19, 2025 at 10:43 PM Álvaro Herrera <alvherre@kurilemu.de> wrote:

Also, I suspect you should do something about Meson, but I don't know
what that would look like.

It seems to work already on Meson:

$ <build>
$ touch src/backend/utils/mb/Unicode/win874_to_utf8.map
$ <build>
building for debug
ninja: Entering directory `build-debug'
[2/2] Linking target src/backend/utils/mb/conversion_procs/utf8_and_win.so

I just tried meson build, it seems to only rebuild the corresponding libs without rebuilding Postgres binaries:

```
chaol@ChaodeMacBook-Air build % touch ../src/backend/utils/mb/Unicode/euc_cn_to_utf8.map
chaol@ChaodeMacBook-Air build % ninja -v
[1/2] cc -Isrc/backend/utils/mb/conversion_procs/utf8_and_euc_cn.dylib.p -Isrc/include -I../src/include -I/opt/homebrew/opt/lz4/include -I/opt/homebrew/Cellar/openssl@3/3.6.0/include -I/opt/homebrew/opt/zstd/include -fdiagnostics-color=always -Wall -Winvalid-pch -O0 -g -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX15.5.sdk -fno-strict-aliasing -fwrapv -fexcess-precision=standard -Wmissing-prototypes -Wpointer-arith -Werror=vla -Werror=unguarded-availability-new -Wendif-labels -Wmissing-format-attribute -Wcast-function-type -Wformat-security -Wdeclaration-after-statement -Wmissing-variable-declarations -Wno-unused-command-line-argument -Wno-compound-token-split-by-macro -Wno-format-truncation -Wno-cast-function-type-strict -fvisibility=hidden -MD -MQ src/backend/utils/mb/conversion_procs/utf8_and_euc_cn.dylib.p/utf8_and_euc_cn_utf8_and_euc_cn.c.o -MF src/backend/utils/mb/conversion_procs/utf8_and_euc_cn.dylib.p/utf8_and_euc_cn_utf8_and_euc_cn.c.o.d -o src/backend/utils/mb/conversion_procs/utf8_and_euc_cn.dylib.p/utf8_and_euc_cn_utf8_and_euc_cn.c.o -c ../src/backend/utils/mb/conversion_procs/utf8_and_euc_cn/utf8_and_euc_cn.c
[2/2] cc -o src/backend/utils/mb/conversion_procs/utf8_and_euc_cn.dylib src/backend/utils/mb/conversion_procs/utf8_and_euc_cn.dylib.p/utf8_and_euc_cn_utf8_and_euc_cn.c.o -Wl,-dead_strip_dylibs -Wl,-headerpad_max_install_names -Wl,-undefined,dynamic_lookup -bundle -Wl,-undefined,dynamic_lookup -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX15.5.sdk -Wl,-no_warn_duplicate_libraries -Wl,-rpath,/opt/homebrew/opt/lz4/lib -Wl,-rpath,/opt/homebrew/Cellar/openssl@3/3.6.0/lib -Wl,-rpath,/opt/homebrew/opt/zstd/lib -fvisibility=hidden -bundle_loader /Users/chaol/Documents/code/postgresql/build/src/backend/postgres -lldap -lxml2 /opt/homebrew/opt/lz4/lib/liblz4.dylib -lpam /opt/homebrew/Cellar/openssl@3/3.6.0/lib/libssl.dylib /opt/homebrew/Cellar/openssl@3/3.6.0/lib/libcrypto.dylib -lz /opt/homebrew/opt/zstd/lib/libzstd.dylib -lm
chaol@ChaodeMacBook-Air build %
```

Is that expected? I think we need Postgres executables to be rebuilt then we can run tests.

Best regards,
--
Chao Li (Evan)
HighGo Software Co., Ltd.
https://www.highgo.com/

#13Chao Li
li.evan.chao@gmail.com
In reply to: Álvaro Herrera (#10)
Re: Enhance Makefiles to rebuild objects on map file changes

On Aug 19, 2025, at 23:43, Álvaro Herrera <alvherre@kurilemu.de> wrote:

On 2025-Aug-19, Chao Li wrote:

Hi John,

Let me explain the Makefile patch in this separate thread, as this is generic to all maps.

Let’s not use gb18030 as an example, instead, using utf8_and_win.

When any of the win-related map file changes, it suppose to automatically rebuild utf8_and_win.o.

WITHOUT this patch, after I touch a map file, it doesn’t rebuild the object file:

Hmm. Yeah, this really looks somewhat bogus as you say. I wonder
though if we shouldn't have the UCS_to_*.pl scripts generate a bunch of
"mapdeps.mk" files instead, or something like that, given that these
*.map files are themselves generated.

Also, I suspect you should do something about Meson, but I don't know
what that would look like.

Based on Tom’s response in the other thread [1]/messages/by-id/2814142.1759983649@sss.pgh.pa.us, this is a problem with make, it’s worth fixing.

As suggested by Alvaro, I will study on the “mapdepds.mk” direction a little bit.

[1]: /messages/by-id/2814142.1759983649@sss.pgh.pa.us

Best regards,
--
Chao Li (Evan)
HighGo Software Co., Ltd.
https://www.highgo.com/

#14John Naylor
johncnaylorls@gmail.com
In reply to: Chao Li (#12)
Re: Enhance Makefiles to rebuild objects on map file changes

On Thu, Oct 9, 2025 at 10:46 AM Chao Li <li.evan.chao@gmail.com> wrote:

I just tried meson build, it seems to only rebuild the corresponding libs without rebuilding Postgres binaries:

Is that expected? I think we need Postgres executables to be rebuilt then we can run tests.

Dynamic shared objects are loaded at runtime, so I don't see why the
calling executables need to be rebuilt in this case.

--
John Naylor
Amazon Web Services

#15Chao Li
li.evan.chao@gmail.com
In reply to: John Naylor (#14)
Re: Enhance Makefiles to rebuild objects on map file changes

On Oct 9, 2025, at 16:45, John Naylor <johncnaylorls@gmail.com> wrote:

On Thu, Oct 9, 2025 at 10:46 AM Chao Li <li.evan.chao@gmail.com> wrote:

I just tried meson build, it seems to only rebuild the corresponding libs without rebuilding Postgres binaries:

Is that expected? I think we need Postgres executables to be rebuilt then we can run tests.

Dynamic shared objects are loaded at runtime, so I don't see why the
calling executables need to be rebuilt in this case.

Ah… That’s true. I was misled by the “make” output:

```
gcc -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Werror=vla -Werror=unguarded-availability-new -Wendif-labels -Wmissing-format-attribute -Wcast-function-type -Wformat-security -Wmissing-variable-declarations -fno-strict-aliasing -fwrapv -fexcess-precision=standard -Wno-unused-command-line-argument -Wno-compound-token-split-by-macro -Wno-format-truncation -Wno-cast-function-type-strict -g -O2 -fvisibility=hidden -I../../../../../../src/include -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX15.5.sdk -I/opt/homebrew/Cellar/icu4c@77/77.1/include -c -o utf8_and_euc_cn.o utf8_and_euc_cn.c -MMD -MP -MF .deps/utf8_and_euc_cn.Po
gcc -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Werror=vla -Werror=unguarded-availability-new -Wendif-labels -Wmissing-format-attribute -Wcast-function-type -Wformat-security -Wmissing-variable-declarations -fno-strict-aliasing -fwrapv -fexcess-precision=standard -Wno-unused-command-line-argument -Wno-compound-token-split-by-macro -Wno-format-truncation -Wno-cast-function-type-strict -g -O2 -fvisibility=hidden -bundle -o utf8_and_euc_cn.dylib utf8_and_euc_cn.o -L../../../../../../src/port -L../../../../../../src/common -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX15.5.sdk -Wl,-dead_strip_dylibs -fvisibility=hidden -bundle_loader ../../../../../../src/backend/postgres
```

I didn’t notice the option “-bundle_loader”, and thought the last part (../../../../../../src/backend/postgres) was the buildout binary.

--
Chao Li (Evan)
HighGo Software Co., Ltd.
https://www.highgo.com/