From eb9d3d64a8653dac3e4c85f7b38e03520b376fcb Mon Sep 17 00:00:00 2001 From: Zsolt Parragi Date: Sat, 14 Mar 2026 15:33:43 +0000 Subject: [PATCH 3/3] Consolidate libpq headers into central public/internal list files Move the libpq public and internal header entries into the central list files in src/include/. Both src/include/ and src/interfaces/libpq/ now read from the same lists and filter by local file existence: $(wildcard) in make, fs.is_file() in meson. This eliminates the separate per-directory list files for libpq, giving a single view of all public and internal headers regardless of which source directory they live in. --- src/include/Makefile | 6 ++++-- src/include/internal_headers.list | 9 ++++++++- src/include/meson.build | 2 +- src/include/public_headers.list | 6 +++++- src/interfaces/libpq/Makefile | 6 ++++-- src/interfaces/libpq/internal_headers.list | 4 ---- src/interfaces/libpq/meson.build | 8 ++++---- src/interfaces/libpq/public_headers.list | 3 --- 8 files changed, 26 insertions(+), 18 deletions(-) delete mode 100644 src/interfaces/libpq/internal_headers.list delete mode 100644 src/interfaces/libpq/public_headers.list diff --git a/src/include/Makefile b/src/include/Makefile index f2bed2578a5..c8881ad4d2c 100644 --- a/src/include/Makefile +++ b/src/include/Makefile @@ -12,8 +12,10 @@ subdir = src/include top_builddir = ../.. include $(top_builddir)/src/Makefile.global -PUBLIC_HEADERS := $(shell grep -v '^\#' $(srcdir)/public_headers.list | grep -v '^$$') -INTERNAL_HEADERS := $(shell grep -v '^\#' $(srcdir)/internal_headers.list | grep -v '^$$') +_ALL_PUBLIC := $(shell grep -v '^\#' $(srcdir)/public_headers.list | grep -v '^$$') +PUBLIC_HEADERS := $(foreach h,$(_ALL_PUBLIC),$(if $(wildcard $(srcdir)/$(h)),$(h))) +_ALL_INTERNAL := $(shell grep -v '^\#' $(srcdir)/internal_headers.list | grep -v '^$$') +INTERNAL_HEADERS := $(foreach h,$(_ALL_INTERNAL),$(if $(wildcard $(srcdir)/$(h)),$(h))) SERVER_HEADERS := $(shell grep -v '^\#' $(srcdir)/server_headers.list | grep -v '^$$') all: pg_config.h pg_config_os.h diff --git a/src/include/internal_headers.list b/src/include/internal_headers.list index 8e12f4d7cd6..86b99b8a823 100644 --- a/src/include/internal_headers.list +++ b/src/include/internal_headers.list @@ -2,10 +2,17 @@ # # These headers are needed by the not-so-public headers of the interfaces, # i.e. for client library development. +# +# Each source directory installs only the entries that exist locally. +# src/include c.h port.h postgres_fe.h - libpq/pqcomm.h libpq/protocol.h + +# src/interfaces/libpq +fe-auth-sasl.h +libpq-int.h +pqexpbuffer.h diff --git a/src/include/meson.build b/src/include/meson.build index c03e508b961..9279083280c 100644 --- a/src/include/meson.build +++ b/src/include/meson.build @@ -83,7 +83,7 @@ foreach list_file, base_dir : _header_lists batch = [] foreach line : fs.read(list_file).strip().split('\n') f = line.strip() - if f == '' or f.startswith('#') + if f == '' or f.startswith('#') or not fs.is_file(f) continue endif d = fs.parent(f) diff --git a/src/include/public_headers.list b/src/include/public_headers.list index 2cd1df6f8ab..bacd3854341 100644 --- a/src/include/public_headers.list +++ b/src/include/public_headers.list @@ -6,7 +6,11 @@ # # Each source directory installs only the entries that exist locally. +# src/include pg_config_manual.h postgres_ext.h - libpq/libpq-fs.h + +# src/interfaces/libpq +libpq-events.h +libpq-fe.h diff --git a/src/interfaces/libpq/Makefile b/src/interfaces/libpq/Makefile index b9319fab869..9d599f20e05 100644 --- a/src/interfaces/libpq/Makefile +++ b/src/interfaces/libpq/Makefile @@ -15,8 +15,10 @@ subdir = src/interfaces/libpq top_builddir = ../../.. include $(top_builddir)/src/Makefile.global -PUBLIC_HEADERS := $(shell grep -v '^\#' $(srcdir)/public_headers.list | grep -v '^$$') -INTERNAL_HEADERS := $(shell grep -v '^\#' $(srcdir)/internal_headers.list | grep -v '^$$') +_ALL_PUBLIC := $(shell grep -v '^\#' $(top_srcdir)/src/include/public_headers.list | grep -v '^$$') +PUBLIC_HEADERS := $(foreach h,$(_ALL_PUBLIC),$(if $(wildcard $(srcdir)/$(h)),$(h))) +_ALL_INTERNAL := $(shell grep -v '^\#' $(top_srcdir)/src/include/internal_headers.list | grep -v '^$$') +INTERNAL_HEADERS := $(foreach h,$(_ALL_INTERNAL),$(if $(wildcard $(srcdir)/$(h)),$(h))) export with_ssl with_gssapi with_krb_srvnam diff --git a/src/interfaces/libpq/internal_headers.list b/src/interfaces/libpq/internal_headers.list deleted file mode 100644 index 635f735b0ad..00000000000 --- a/src/interfaces/libpq/internal_headers.list +++ /dev/null @@ -1,4 +0,0 @@ -# Internal libpq headers installed to $(includedir_internal) -fe-auth-sasl.h -libpq-int.h -pqexpbuffer.h diff --git a/src/interfaces/libpq/meson.build b/src/interfaces/libpq/meson.build index 09f7f8c85c0..3776fe57e84 100644 --- a/src/interfaces/libpq/meson.build +++ b/src/interfaces/libpq/meson.build @@ -133,18 +133,18 @@ pkgconfig.generate( ) _h = [] -foreach l : fs.read('public_headers.list').strip().split('\n') +foreach l : fs.read('../../include/public_headers.list').strip().split('\n') l = l.strip() - if l != '' and not l.startswith('#') + if l != '' and not l.startswith('#') and fs.is_file(l) _h += l endif endforeach install_headers(_h) _h = [] -foreach l : fs.read('internal_headers.list').strip().split('\n') +foreach l : fs.read('../../include/internal_headers.list').strip().split('\n') l = l.strip() - if l != '' and not l.startswith('#') + if l != '' and not l.startswith('#') and fs.is_file(l) _h += l endif endforeach diff --git a/src/interfaces/libpq/public_headers.list b/src/interfaces/libpq/public_headers.list deleted file mode 100644 index 26dbe72b8ea..00000000000 --- a/src/interfaces/libpq/public_headers.list +++ /dev/null @@ -1,3 +0,0 @@ -# Public libpq headers installed to $(includedir) -libpq-events.h -libpq-fe.h -- 2.43.0