Forgot that I had gotten a review from a Meson maintainer. The last two
patches in this set are new. One is just a simple spelling correction.

-- 
Tristan Partin
Neon (https://neon.tech)
From c20ece79c625c8ca33fee26791ab40c311a5c97e Mon Sep 17 00:00:00 2001
From: Tristan Partin <tris...@neon.tech>
Date: Tue, 16 May 2023 07:55:03 -0500
Subject: [PATCH v5 01/16] Remove triple-quoted strings

Triple-quoted strings are for multiline strings in Meson. None of the
descriptions that got changed were multiline and the entire file uses
single-line descriptions.
---
 meson_options.txt | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/meson_options.txt b/meson_options.txt
index 5b44a8829d..1ea9729dc2 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -10,19 +10,19 @@ option('blocksize', type : 'combo',
 option('wal_blocksize', type : 'combo',
   choices: ['1', '2', '4', '8', '16', '32', '64'],
   value: '8',
-  description : '''WAL block size, in kilobytes''')
+  description : 'WAL block size, in kilobytes')
 
 option('segsize', type : 'integer', value : 1,
-  description : '''Segment size, in gigabytes''')
+  description : 'Segment size, in gigabytes')
 
 option('segsize_blocks', type : 'integer', value: 0,
-  description : '''Segment size, in blocks''')
+  description : 'Segment size, in blocks')
 
 
 # Miscellaneous options
 
 option('krb_srvnam', type : 'string', value : 'postgres',
-  description : '''Default Kerberos service principal for GSSAPI''')
+  description : 'Default Kerberos service principal for GSSAPI')
 
 option('system_tzdata', type: 'string', value: '',
   description: 'use system time zone data in specified directory')
@@ -32,7 +32,7 @@ option('system_tzdata', type: 'string', value: '',
 
 option('pgport', type : 'integer', value : 5432,
   min: 1, max: 65535,
-  description : '''Default port number for server and clients''')
+  description : 'Default port number for server and clients')
 
 
 # Developer options
-- 
Tristan Partin
Neon (https://neon.tech)

From 230bfbb6029e520fc980ad9c0e6ff7369ca0f939 Mon Sep 17 00:00:00 2001
From: Tristan Partin <tris...@neon.tech>
Date: Tue, 16 May 2023 08:03:31 -0500
Subject: [PATCH v5 02/16] Use consistent casing in Meson option descriptions

Meson itself uses capital letters for option descriptions, so follow
that.
---
 meson_options.txt | 90 +++++++++++++++++++++++------------------------
 1 file changed, 45 insertions(+), 45 deletions(-)

diff --git a/meson_options.txt b/meson_options.txt
index 1ea9729dc2..fa823fd088 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -5,7 +5,7 @@
 option('blocksize', type : 'combo',
   choices : ['1', '2', '4', '8', '16', '32'],
   value : '8',
-  description: 'set relation block size in kB')
+  description: 'Set relation block size in kB')
 
 option('wal_blocksize', type : 'combo',
   choices: ['1', '2', '4', '8', '16', '32', '64'],
@@ -25,7 +25,7 @@ option('krb_srvnam', type : 'string', value : 'postgres',
   description : 'Default Kerberos service principal for GSSAPI')
 
 option('system_tzdata', type: 'string', value: '',
-  description: 'use system time zone data in specified directory')
+  description: 'Use system time zone data in specified directory')
 
 
 # Defaults
@@ -38,7 +38,7 @@ option('pgport', type : 'integer', value : 5432,
 # Developer options
 
 option('cassert', type : 'boolean', value: false,
-  description: 'enable assertion checks (for debugging)')
+  description: 'Enable assertion checks (for debugging)')
 
 option('tap_tests', type : 'feature', value : 'auto',
   description : 'Whether to enable tap tests')
@@ -47,43 +47,43 @@ option('PG_TEST_EXTRA', type : 'string', value: '',
   description: 'Enable selected extra tests')
 
 option('atomics', type : 'boolean', value: true,
-  description: 'whether to use atomic operations')
+  description: 'Whether to use atomic operations')
 
 option('spinlocks', type : 'boolean', value: true,
-  description: 'whether to use spinlocks')
+  description: 'Whether to use spinlocks')
 
 
 # Compilation options
 
 option('extra_include_dirs', type : 'array', value: [],
-  description: 'non-default directories to be searched for headers')
+  description: 'Non-default directories to be searched for headers')
 
 option('extra_lib_dirs', type : 'array', value: [],
-  description: 'non-default directories to be searched for libs')
+  description: 'Non-default directories to be searched for libs')
 
 option('extra_version', type : 'string', value: '',
-  description: 'append STRING to the PostgreSQL version number')
+  description: 'Append STRING to the PostgreSQL version number')
 
 option('darwin_sysroot', type : 'string', value: '',
-  description: 'select a non-default sysroot path')
+  description: 'Select a non-default sysroot path')
 
 option('rpath', type : 'boolean', value: true,
-  description: 'whether to embed shared library search path in executables')
+  description: 'Whether to embed shared library search path in executables')
 
 
 # External dependencies
 
 option('bonjour', type : 'feature', value: 'auto',
-  description: 'build with Bonjour support')
+  description: 'Build with Bonjour support')
 
 option('bsd_auth', type : 'feature', value: 'auto',
-  description: 'build with BSD Authentication support')
+  description: 'Build with BSD Authentication support')
 
 option('docs', type : 'feature', value: 'auto',
-  description: 'documentation in HTML and man page format')
+  description: 'Documentation in HTML and man page format')
 
 option('docs_pdf', type : 'feature', value: 'auto',
-  description: 'documentation in PDF format')
+  description: 'Documentation in PDF format')
 
 option('docs_html_style', type : 'combo', choices: ['simple', 'website'],
   description: 'CSS stylesheet for HTML documentation')
@@ -110,102 +110,102 @@ option('libxslt', type : 'feature', value: 'auto',
   description: 'XSLT support in contrib/xml2')
 
 option('llvm', type : 'feature', value: 'disabled',
-  description: 'whether to use llvm')
+  description: 'Whether to use llvm')
 
 option('lz4', type : 'feature', value: 'auto',
   description: 'LZ4 support')
 
 option('nls', type: 'feature', value: 'auto',
-  description: 'native language support')
+  description: 'Native language support')
 
 option('pam', type : 'feature', value: 'auto',
-  description: 'build with PAM support')
+  description: 'Build with PAM support')
 
 option('plperl', type : 'feature', value: 'auto',
-  description: 'build Perl modules (PL/Perl)')
+  description: 'Build Perl modules (PL/Perl)')
 
 option('plpython', type : 'feature', value: 'auto',
-  description: 'build Python modules (PL/Python)')
+  description: 'Build Python modules (PL/Python)')
 
 option('pltcl', type : 'feature', value: 'auto',
-  description: 'build with TCL support')
+  description: 'Build with TCL support')
 
 option('tcl_version', type : 'string', value : 'tcl',
-  description: 'specify TCL version')
+  description: 'Specify TCL version')
 
 option('readline', type : 'feature', value : 'auto',
-  description: 'use GNU Readline or BSD Libedit for editing')
+  description: 'Use GNU Readline or BSD Libedit for editing')
 
 option('selinux', type : 'feature', value : 'disabled',
-  description: 'build with SELinux support')
+  description: 'Build with SELinux support')
 
 option('ssl', type : 'combo', choices : ['auto', 'none', 'openssl'],
   value : 'auto',
-  description: 'use LIB for SSL/TLS support (openssl)')
+  description: 'Use LIB for SSL/TLS support (openssl)')
 
 option('systemd', type : 'feature', value: 'auto',
-  description: 'build with systemd support')
+  description: 'Build with systemd support')
 
 option('uuid', type : 'combo', choices : ['none', 'bsd', 'e2fs', 'ossp'],
   value : 'none',
-  description: 'build contrib/uuid-ossp using LIB')
+  description: 'Build contrib/uuid-ossp using LIB')
 
 option('zlib', type : 'feature', value: 'auto',
-  description: 'whether to use zlib')
+  description: 'Whether to use zlib')
 
 option('zstd', type : 'feature', value: 'auto',
-  description: 'whether to use zstd')
+  description: 'Whether to use zstd')
 
 
 # Programs
 
 option('BISON', type : 'array', value: ['bison', 'win_bison'],
-  description: 'path to bison binary')
+  description: 'Path to bison binary')
 
 option('DTRACE', type : 'string', value: 'dtrace',
-  description: 'path to dtrace binary')
+  description: 'Path to dtrace binary')
 
 option('FLEX', type : 'array', value: ['flex', 'win_flex'],
-  description: 'path to flex binary')
+  description: 'Path to flex binary')
 
 option('FOP', type : 'string', value: 'fop',
-  description: 'path to fop binary')
+  description: 'Path to fop binary')
 
 option('GZIP', type : 'string', value: 'gzip',
-  description: 'path to gzip binary')
+  description: 'Path to gzip binary')
 
 option('LZ4', type : 'string', value: 'lz4',
-  description: 'path to lz4 binary')
+  description: 'Path to lz4 binary')
 
 option('OPENSSL', type : 'string', value: 'openssl',
-  description: 'path to openssl binary')
+  description: 'Path to openssl binary')
 
 option('PERL', type : 'string', value: 'perl',
-  description: 'path to perl binary')
+  description: 'Path to perl binary')
 
 option('PROVE', type : 'string', value: 'prove',
-  description: 'path to prove binary')
+  description: 'Path to prove binary')
 
 option('PYTHON', type : 'array', value: ['python3', 'python'],
-  description: 'path to python binary')
+  description: 'Path to python binary')
 
 option('SED', type : 'string', value: 'gsed',
-  description: 'path to sed binary')
+  description: 'Path to sed binary')
 
 option('STRIP', type : 'string', value: 'strip',
-  description: 'path to strip binary, used for PGXS emulation')
+  description: 'Path to strip binary, used for PGXS emulation')
 
 option('TAR', type : 'string', value: 'tar',
-  description: 'path to tar binary')
+  description: 'Path to tar binary')
 
 option('XMLLINT', type : 'string', value: 'xmllint',
-  description: 'path to xmllint binary')
+  description: 'Path to xmllint binary')
 
 option('XSLTPROC', type : 'string', value: 'xsltproc',
-  description: 'path to xsltproc binary')
+  description: 'Path to xsltproc binary')
 
 option('ZSTD', type : 'string', value: 'zstd',
-  description: 'path to zstd binary')
+  description: 'Path to zstd binary')
 
 option('ZIC', type : 'string', value: 'zic',
-  description: 'path to zic binary, when cross-compiling')
+  description: 'Path to zic binary, when cross-compiling')
-- 
Tristan Partin
Neon (https://neon.tech)

From 365871a337fe05fedca4b845d5b4625a2616d137 Mon Sep 17 00:00:00 2001
From: Tristan Partin <tris...@neon.tech>
Date: Tue, 16 May 2023 08:11:14 -0500
Subject: [PATCH v5 03/16] Use consistent Meson option description formats

---
 meson_options.txt | 32 ++++++++++++++++----------------
 1 file changed, 16 insertions(+), 16 deletions(-)

diff --git a/meson_options.txt b/meson_options.txt
index fa823fd088..ac7bcd366e 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -5,7 +5,7 @@
 option('blocksize', type : 'combo',
   choices : ['1', '2', '4', '8', '16', '32'],
   value : '8',
-  description: 'Set relation block size in kB')
+  description: 'Relation block size, in kilobytes')
 
 option('wal_blocksize', type : 'combo',
   choices: ['1', '2', '4', '8', '16', '32', '64'],
@@ -41,16 +41,16 @@ option('cassert', type : 'boolean', value: false,
   description: 'Enable assertion checks (for debugging)')
 
 option('tap_tests', type : 'feature', value : 'auto',
-  description : 'Whether to enable tap tests')
+  description : 'Enable TAP tests')
 
 option('PG_TEST_EXTRA', type : 'string', value: '',
   description: 'Enable selected extra tests')
 
 option('atomics', type : 'boolean', value: true,
-  description: 'Whether to use atomic operations')
+  description: 'Use atomic operations')
 
 option('spinlocks', type : 'boolean', value: true,
-  description: 'Whether to use spinlocks')
+  description: 'Use spinlocks')
 
 
 # Compilation options
@@ -68,16 +68,16 @@ option('darwin_sysroot', type : 'string', value: '',
   description: 'Select a non-default sysroot path')
 
 option('rpath', type : 'boolean', value: true,
-  description: 'Whether to embed shared library search path in executables')
+  description: 'Embed shared library search path in executables')
 
 
 # External dependencies
 
 option('bonjour', type : 'feature', value: 'auto',
-  description: 'Build with Bonjour support')
+  description: 'Bonjour support')
 
 option('bsd_auth', type : 'feature', value: 'auto',
-  description: 'Build with BSD Authentication support')
+  description: 'BSD Authentication support')
 
 option('docs', type : 'feature', value: 'auto',
   description: 'Documentation in HTML and man page format')
@@ -110,7 +110,7 @@ option('libxslt', type : 'feature', value: 'auto',
   description: 'XSLT support in contrib/xml2')
 
 option('llvm', type : 'feature', value: 'disabled',
-  description: 'Whether to use llvm')
+  description: 'LLVM support')
 
 option('lz4', type : 'feature', value: 'auto',
   description: 'LZ4 support')
@@ -119,7 +119,7 @@ option('nls', type: 'feature', value: 'auto',
   description: 'Native language support')
 
 option('pam', type : 'feature', value: 'auto',
-  description: 'Build with PAM support')
+  description: 'PAM support')
 
 option('plperl', type : 'feature', value: 'auto',
   description: 'Build Perl modules (PL/Perl)')
@@ -128,33 +128,33 @@ option('plpython', type : 'feature', value: 'auto',
   description: 'Build Python modules (PL/Python)')
 
 option('pltcl', type : 'feature', value: 'auto',
-  description: 'Build with TCL support')
+  description: 'Build with Tcl support (PL/Tcl)')
 
 option('tcl_version', type : 'string', value : 'tcl',
-  description: 'Specify TCL version')
+  description: 'Tcl version')
 
 option('readline', type : 'feature', value : 'auto',
   description: 'Use GNU Readline or BSD Libedit for editing')
 
 option('selinux', type : 'feature', value : 'disabled',
-  description: 'Build with SELinux support')
+  description: 'SELinux support')
 
 option('ssl', type : 'combo', choices : ['auto', 'none', 'openssl'],
   value : 'auto',
   description: 'Use LIB for SSL/TLS support (openssl)')
 
 option('systemd', type : 'feature', value: 'auto',
-  description: 'Build with systemd support')
+  description: 'systemd support')
 
 option('uuid', type : 'combo', choices : ['none', 'bsd', 'e2fs', 'ossp'],
   value : 'none',
-  description: 'Build contrib/uuid-ossp using LIB')
+  description: 'Use LIB for contrib/uuid-ossp support')
 
 option('zlib', type : 'feature', value: 'auto',
-  description: 'Whether to use zlib')
+  description: 'Enable zlib')
 
 option('zstd', type : 'feature', value: 'auto',
-  description: 'Whether to use zstd')
+  description: 'Enable zstd')
 
 
 # Programs
-- 
Tristan Partin
Neon (https://neon.tech)

From 317c3e213c250d2bdb7aae7433fe9a8c2305fb4b Mon Sep 17 00:00:00 2001
From: Tristan Partin <tris...@neon.tech>
Date: Tue, 16 May 2023 08:28:48 -0500
Subject: [PATCH v5 04/16] Attach colon to keyword argument

This matches the style found in the rest of the Meson build description.
---
 meson_options.txt | 138 +++++++++++++++++++++++-----------------------
 1 file changed, 69 insertions(+), 69 deletions(-)

diff --git a/meson_options.txt b/meson_options.txt
index ac7bcd366e..d2f95cfec3 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -2,27 +2,27 @@
 
 # Data layout influencing options
 
-option('blocksize', type : 'combo',
-  choices : ['1', '2', '4', '8', '16', '32'],
-  value : '8',
+option('blocksize', type: 'combo',
+  choices: ['1', '2', '4', '8', '16', '32'],
+  value: '8',
   description: 'Relation block size, in kilobytes')
 
-option('wal_blocksize', type : 'combo',
+option('wal_blocksize', type: 'combo',
   choices: ['1', '2', '4', '8', '16', '32', '64'],
   value: '8',
-  description : 'WAL block size, in kilobytes')
+  description: 'WAL block size, in kilobytes')
 
-option('segsize', type : 'integer', value : 1,
-  description : 'Segment size, in gigabytes')
+option('segsize', type: 'integer', value: 1,
+  description: 'Segment size, in gigabytes')
 
-option('segsize_blocks', type : 'integer', value: 0,
-  description : 'Segment size, in blocks')
+option('segsize_blocks', type: 'integer', value: 0,
+  description: 'Segment size, in blocks')
 
 
 # Miscellaneous options
 
-option('krb_srvnam', type : 'string', value : 'postgres',
-  description : 'Default Kerberos service principal for GSSAPI')
+option('krb_srvnam', type: 'string', value: 'postgres',
+  description: 'Default Kerberos service principal for GSSAPI')
 
 option('system_tzdata', type: 'string', value: '',
   description: 'Use system time zone data in specified directory')
@@ -30,182 +30,182 @@ option('system_tzdata', type: 'string', value: '',
 
 # Defaults
 
-option('pgport', type : 'integer', value : 5432,
+option('pgport', type: 'integer', value: 5432,
   min: 1, max: 65535,
-  description : 'Default port number for server and clients')
+  description: 'Default port number for server and clients')
 
 
 # Developer options
 
-option('cassert', type : 'boolean', value: false,
+option('cassert', type: 'boolean', value: false,
   description: 'Enable assertion checks (for debugging)')
 
-option('tap_tests', type : 'feature', value : 'auto',
-  description : 'Enable TAP tests')
+option('tap_tests', type: 'feature', value: 'auto',
+  description: 'Enable TAP tests')
 
-option('PG_TEST_EXTRA', type : 'string', value: '',
+option('PG_TEST_EXTRA', type: 'string', value: '',
   description: 'Enable selected extra tests')
 
-option('atomics', type : 'boolean', value: true,
+option('atomics', type: 'boolean', value: true,
   description: 'Use atomic operations')
 
-option('spinlocks', type : 'boolean', value: true,
+option('spinlocks', type: 'boolean', value: true,
   description: 'Use spinlocks')
 
 
 # Compilation options
 
-option('extra_include_dirs', type : 'array', value: [],
+option('extra_include_dirs', type: 'array', value: [],
   description: 'Non-default directories to be searched for headers')
 
-option('extra_lib_dirs', type : 'array', value: [],
+option('extra_lib_dirs', type: 'array', value: [],
   description: 'Non-default directories to be searched for libs')
 
-option('extra_version', type : 'string', value: '',
+option('extra_version', type: 'string', value: '',
   description: 'Append STRING to the PostgreSQL version number')
 
-option('darwin_sysroot', type : 'string', value: '',
+option('darwin_sysroot', type: 'string', value: '',
   description: 'Select a non-default sysroot path')
 
-option('rpath', type : 'boolean', value: true,
+option('rpath', type: 'boolean', value: true,
   description: 'Embed shared library search path in executables')
 
 
 # External dependencies
 
-option('bonjour', type : 'feature', value: 'auto',
+option('bonjour', type: 'feature', value: 'auto',
   description: 'Bonjour support')
 
-option('bsd_auth', type : 'feature', value: 'auto',
+option('bsd_auth', type: 'feature', value: 'auto',
   description: 'BSD Authentication support')
 
-option('docs', type : 'feature', value: 'auto',
+option('docs', type: 'feature', value: 'auto',
   description: 'Documentation in HTML and man page format')
 
-option('docs_pdf', type : 'feature', value: 'auto',
+option('docs_pdf', type: 'feature', value: 'auto',
   description: 'Documentation in PDF format')
 
-option('docs_html_style', type : 'combo', choices: ['simple', 'website'],
+option('docs_html_style', type: 'combo', choices: ['simple', 'website'],
   description: 'CSS stylesheet for HTML documentation')
 
-option('dtrace', type : 'feature', value: 'disabled',
+option('dtrace', type: 'feature', value: 'disabled',
   description: 'DTrace support')
 
-option('gssapi', type : 'feature', value: 'auto',
+option('gssapi', type: 'feature', value: 'auto',
   description: 'GSSAPI support')
 
-option('icu', type : 'feature', value: 'auto',
+option('icu', type: 'feature', value: 'auto',
   description: 'ICU support')
 
-option('ldap', type : 'feature', value: 'auto',
+option('ldap', type: 'feature', value: 'auto',
   description: 'LDAP support')
 
-option('libedit_preferred', type : 'boolean', value: false,
+option('libedit_preferred', type: 'boolean', value: false,
   description: 'Prefer BSD Libedit over GNU Readline')
 
-option('libxml', type : 'feature', value: 'auto',
+option('libxml', type: 'feature', value: 'auto',
   description: 'XML support')
 
-option('libxslt', type : 'feature', value: 'auto',
+option('libxslt', type: 'feature', value: 'auto',
   description: 'XSLT support in contrib/xml2')
 
-option('llvm', type : 'feature', value: 'disabled',
+option('llvm', type: 'feature', value: 'disabled',
   description: 'LLVM support')
 
-option('lz4', type : 'feature', value: 'auto',
+option('lz4', type: 'feature', value: 'auto',
   description: 'LZ4 support')
 
 option('nls', type: 'feature', value: 'auto',
   description: 'Native language support')
 
-option('pam', type : 'feature', value: 'auto',
+option('pam', type: 'feature', value: 'auto',
   description: 'PAM support')
 
-option('plperl', type : 'feature', value: 'auto',
+option('plperl', type: 'feature', value: 'auto',
   description: 'Build Perl modules (PL/Perl)')
 
-option('plpython', type : 'feature', value: 'auto',
+option('plpython', type: 'feature', value: 'auto',
   description: 'Build Python modules (PL/Python)')
 
-option('pltcl', type : 'feature', value: 'auto',
+option('pltcl', type: 'feature', value: 'auto',
   description: 'Build with Tcl support (PL/Tcl)')
 
-option('tcl_version', type : 'string', value : 'tcl',
+option('tcl_version', type: 'string', value: 'tcl',
   description: 'Tcl version')
 
-option('readline', type : 'feature', value : 'auto',
+option('readline', type: 'feature', value: 'auto',
   description: 'Use GNU Readline or BSD Libedit for editing')
 
-option('selinux', type : 'feature', value : 'disabled',
+option('selinux', type: 'feature', value: 'disabled',
   description: 'SELinux support')
 
-option('ssl', type : 'combo', choices : ['auto', 'none', 'openssl'],
-  value : 'auto',
+option('ssl', type: 'combo', choices: ['auto', 'none', 'openssl'],
+  value: 'auto',
   description: 'Use LIB for SSL/TLS support (openssl)')
 
-option('systemd', type : 'feature', value: 'auto',
+option('systemd', type: 'feature', value: 'auto',
   description: 'systemd support')
 
-option('uuid', type : 'combo', choices : ['none', 'bsd', 'e2fs', 'ossp'],
-  value : 'none',
+option('uuid', type: 'combo', choices: ['none', 'bsd', 'e2fs', 'ossp'],
+  value: 'none',
   description: 'Use LIB for contrib/uuid-ossp support')
 
-option('zlib', type : 'feature', value: 'auto',
+option('zlib', type: 'feature', value: 'auto',
   description: 'Enable zlib')
 
-option('zstd', type : 'feature', value: 'auto',
+option('zstd', type: 'feature', value: 'auto',
   description: 'Enable zstd')
 
 
 # Programs
 
-option('BISON', type : 'array', value: ['bison', 'win_bison'],
+option('BISON', type: 'array', value: ['bison', 'win_bison'],
   description: 'Path to bison binary')
 
-option('DTRACE', type : 'string', value: 'dtrace',
+option('DTRACE', type: 'string', value: 'dtrace',
   description: 'Path to dtrace binary')
 
-option('FLEX', type : 'array', value: ['flex', 'win_flex'],
+option('FLEX', type: 'array', value: ['flex', 'win_flex'],
   description: 'Path to flex binary')
 
-option('FOP', type : 'string', value: 'fop',
+option('FOP', type: 'string', value: 'fop',
   description: 'Path to fop binary')
 
-option('GZIP', type : 'string', value: 'gzip',
+option('GZIP', type: 'string', value: 'gzip',
   description: 'Path to gzip binary')
 
-option('LZ4', type : 'string', value: 'lz4',
+option('LZ4', type: 'string', value: 'lz4',
   description: 'Path to lz4 binary')
 
-option('OPENSSL', type : 'string', value: 'openssl',
+option('OPENSSL', type: 'string', value: 'openssl',
   description: 'Path to openssl binary')
 
-option('PERL', type : 'string', value: 'perl',
+option('PERL', type: 'string', value: 'perl',
   description: 'Path to perl binary')
 
-option('PROVE', type : 'string', value: 'prove',
+option('PROVE', type: 'string', value: 'prove',
   description: 'Path to prove binary')
 
-option('PYTHON', type : 'array', value: ['python3', 'python'],
+option('PYTHON', type: 'array', value: ['python3', 'python'],
   description: 'Path to python binary')
 
-option('SED', type : 'string', value: 'gsed',
+option('SED', type: 'string', value: 'gsed',
   description: 'Path to sed binary')
 
-option('STRIP', type : 'string', value: 'strip',
+option('STRIP', type: 'string', value: 'strip',
   description: 'Path to strip binary, used for PGXS emulation')
 
-option('TAR', type : 'string', value: 'tar',
+option('TAR', type: 'string', value: 'tar',
   description: 'Path to tar binary')
 
-option('XMLLINT', type : 'string', value: 'xmllint',
+option('XMLLINT', type: 'string', value: 'xmllint',
   description: 'Path to xmllint binary')
 
-option('XSLTPROC', type : 'string', value: 'xsltproc',
+option('XSLTPROC', type: 'string', value: 'xsltproc',
   description: 'Path to xsltproc binary')
 
-option('ZSTD', type : 'string', value: 'zstd',
+option('ZSTD', type: 'string', value: 'zstd',
   description: 'Path to zstd binary')
 
-option('ZIC', type : 'string', value: 'zic',
+option('ZIC', type: 'string', value: 'zic',
   description: 'Path to zic binary, when cross-compiling')
-- 
Tristan Partin
Neon (https://neon.tech)

From 3070be8a712cf447d598d15928128560225d96b4 Mon Sep 17 00:00:00 2001
From: Tristan Partin <tris...@neon.tech>
Date: Tue, 16 May 2023 08:33:12 -0500
Subject: [PATCH v5 05/16] Use the not_found_dep constant

Previously in the build description, a not_found_dep was defined. Make
use of it.
---
 meson.build | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/meson.build b/meson.build
index 82f2782673..c2b100bcb5 100644
--- a/meson.build
+++ b/meson.build
@@ -558,7 +558,7 @@ endif
 ###############################################################
 
 bonjouropt = get_option('bonjour')
-bonjour = dependency('', required : false)
+bonjour = not_found_dep
 if cc.check_header('dns_sd.h', required: bonjouropt,
     args: test_c_args, include_directories: postgres_inc) and \
    cc.has_function('DNSServiceRegister',
-- 
Tristan Partin
Neon (https://neon.tech)

From e275e82caa100cb0d199eebd522dd705be6ad8d4 Mon Sep 17 00:00:00 2001
From: Tristan Partin <tris...@neon.tech>
Date: Tue, 16 May 2023 09:19:46 -0500
Subject: [PATCH v5 06/16] Remove old comment

That portion of code is not run in the Windows case already given the
structure of the surrounding if statement.
---
 meson.build | 2 --
 1 file changed, 2 deletions(-)

diff --git a/meson.build b/meson.build
index c2b100bcb5..121126a7da 100644
--- a/meson.build
+++ b/meson.build
@@ -722,8 +722,6 @@ choke me
     endif
   endif
 
-  # XXX: this shouldn't be tested in the windows case, but should be tested in
-  # the dependency() success case
   if ldap.found() and cc.has_function('ldap_initialize',
       dependencies: ldap, args: test_c_args)
     cdata.set('HAVE_LDAP_INITIALIZE', 1)
-- 
Tristan Partin
Neon (https://neon.tech)

From 4e4934ee125c06d639de43c8e1f46b63b93813b9 Mon Sep 17 00:00:00 2001
From: Tristan Partin <tris...@neon.tech>
Date: Tue, 16 May 2023 09:27:06 -0500
Subject: [PATCH v5 07/16] Tie adding C++ support to the llvm Meson option

In the event the llvm option is defined to be 'auto', it is possible
that the host machine might not have a C++ compiler. If that is the
case, then we shouldn't continue reaching for the llvm dependency.
---
 meson.build | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/meson.build b/meson.build
index 121126a7da..52c4b9bba8 100644
--- a/meson.build
+++ b/meson.build
@@ -742,8 +742,8 @@ endif
 ###############################################################
 
 llvmopt = get_option('llvm')
-if not llvmopt.disabled()
-  add_languages('cpp', required: true, native: false)
+llvm = not_found_dep
+if add_languages('cpp', required: llvmopt, native: false)
   llvm = dependency('llvm', version: '>=3.9', method: 'config-tool', required: llvmopt)
 
   if llvm.found()
@@ -757,8 +757,6 @@ if not llvmopt.disabled()
     ccache = find_program('ccache', native: true, required: false)
     clang = find_program(llvm_binpath / 'clang', required: true)
   endif
-else
-  llvm = not_found_dep
 endif
 
 
-- 
Tristan Partin
Neon (https://neon.tech)

From c01828eed1cc8e9ceec55076aa2cd816d6bb31d7 Mon Sep 17 00:00:00 2001
From: Tristan Partin <tris...@neon.tech>
Date: Tue, 16 May 2023 10:27:34 -0500
Subject: [PATCH v5 08/16] Mention the correct way to disable readline support

Using false to disable a feature option is incorrect.
---
 meson.build | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/meson.build b/meson.build
index 52c4b9bba8..161513bab3 100644
--- a/meson.build
+++ b/meson.build
@@ -1129,7 +1129,7 @@ if not get_option('readline').disabled()
       error('''readline header not found
 If you have @0@ already installed, see meson-log/meson-log.txt for details on the
 failure. It is possible the compiler isn't looking in the proper directory.
-Use -Dreadline=false to disable readline support.'''.format(readline_dep))
+Use -Dreadline=disabled to disable readline support.'''.format(readline_dep))
     endif
 
     check_funcs = [
-- 
Tristan Partin
Neon (https://neon.tech)

From 21eacba1bf4146ad4fb8bf12069f3bbb583197a3 Mon Sep 17 00:00:00 2001
From: Tristan Partin <tris...@neon.tech>
Date: Wed, 17 May 2023 09:30:54 -0500
Subject: [PATCH v5 09/16] Remove return code check

run_command(check: true) will already handle this.
---
 meson.build | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/meson.build b/meson.build
index 161513bab3..94d68a5d94 100644
--- a/meson.build
+++ b/meson.build
@@ -385,7 +385,7 @@ install_files = files('src/tools/install_files')
 # https://github.com/mesonbuild/meson/issues/8511
 meson_binpath_r = run_command(python, 'src/tools/find_meson', check: true)
 
-if meson_binpath_r.returncode() != 0 or meson_binpath_r.stdout() == ''
+if meson_binpath_r.stdout() == ''
   error('huh, could not run find_meson.\nerrcode: @0@\nstdout: @1@\nstderr: @2@'.format(
     meson_binpath_r.returncode(),
     meson_binpath_r.stdout(),
-- 
Tristan Partin
Neon (https://neon.tech)

From 7ef201bba7476d094ff6bc10b6d971038f08dccc Mon Sep 17 00:00:00 2001
From: Tristan Partin <tris...@neon.tech>
Date: Wed, 17 May 2023 09:33:18 -0500
Subject: [PATCH v5 10/16] Fix some grammar usage in Meson comments

---
 meson.build | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/meson.build b/meson.build
index 94d68a5d94..4b91b75930 100644
--- a/meson.build
+++ b/meson.build
@@ -150,7 +150,7 @@ cdata.set_quoted('PG_MAJORVERSION', pg_version_major.to_string())
 cdata.set('PG_MAJORVERSION_NUM', pg_version_major)
 cdata.set('PG_MINORVERSION_NUM', pg_version_minor)
 cdata.set('PG_VERSION_NUM', pg_version_num)
-# PG_VERSION_STR is built later, it depends compiler test results
+# PG_VERSION_STR is built later, it depends on compiler test results
 cdata.set_quoted('CONFIGURE_ARGS', '')
 
 
@@ -1672,7 +1672,7 @@ if cc.has_function_attribute('visibility:default') and \
   cdata.set('HAVE_VISIBILITY_ATTRIBUTE', 1)
 
   # Only newer versions of meson know not to apply gnu_symbol_visibility =
-  # inlineshidden to C code as well... Any either way, we want to put these
+  # inlineshidden to C code as well... And either way, we want to put these
   # flags into exported files (pgxs, .pc files).
   cflags_mod += '-fvisibility=hidden'
   cxxflags_mod += ['-fvisibility=hidden', '-fvisibility-inlines-hidden']
-- 
Tristan Partin
Neon (https://neon.tech)

From a1986738af20e1cae1ee172427fd5740f207724b Mon Sep 17 00:00:00 2001
From: Tristan Partin <tris...@neon.tech>
Date: Wed, 17 May 2023 09:38:09 -0500
Subject: [PATCH v5 11/16] Pass feature option through to required kwarg

Meson understands this already. No need to convert it to a boolean.
---
 meson.build | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/meson.build b/meson.build
index 4b91b75930..5806463138 100644
--- a/meson.build
+++ b/meson.build
@@ -767,8 +767,8 @@ endif
 
 icuopt = get_option('icu')
 if not icuopt.disabled()
-  icu = dependency('icu-uc', required: icuopt.enabled())
-  icu_i18n = dependency('icu-i18n', required: icuopt.enabled())
+  icu = dependency('icu-uc', required: icuopt)
+  icu_i18n = dependency('icu-i18n', required: icuopt)
 
   if icu.found()
     cdata.set('USE_ICU', 1)
@@ -1077,7 +1077,7 @@ if not get_option('readline').disabled()
     readline = dependency(readline_dep, required: false)
     if not readline.found()
       readline = cc.find_library(readline_dep,
-        required: get_option('readline').enabled(),
+        required: get_option('readline'),
         dirs: test_lib_d)
     endif
     if readline.found()
@@ -2537,7 +2537,7 @@ if not nlsopt.disabled()
   # otherwise there'd be lots of
   # "Gettext not found, all translation (po) targets will be ignored."
   # warnings if not found.
-  msgfmt = find_program('msgfmt', required: nlsopt.enabled(), native: true)
+  msgfmt = find_program('msgfmt', required: nlsopt, native: true)
 
   # meson 0.59 has this wrapped in dependency('int')
   if (msgfmt.found() and
-- 
Tristan Partin
Neon (https://neon.tech)

From 56b43d0d66a8aaf057f9c2bc0c0e70e874f9c305 Mon Sep 17 00:00:00 2001
From: Tristan Partin <tris...@neon.tech>
Date: Wed, 17 May 2023 09:40:02 -0500
Subject: [PATCH v5 12/16] Make finding pkg-config(python3) more robust

It is a possibility that the installation can't be found. Checking for
Python.h is redundant with what Meson does internally.

https://github.com/mesonbuild/meson/blob/master/mesonbuild/dependencies/python.py#L218
---
 meson.build | 14 ++++++++------
 1 file changed, 8 insertions(+), 6 deletions(-)

diff --git a/meson.build b/meson.build
index 5806463138..7c50c7567d 100644
--- a/meson.build
+++ b/meson.build
@@ -1050,15 +1050,17 @@ endif
 ###############################################################
 
 pyopt = get_option('plpython')
+python3_dep = not_found_dep
 if not pyopt.disabled()
   pm = import('python')
-  python3_inst = pm.find_installation(required: pyopt.enabled())
-  python3_dep = python3_inst.dependency(embed: true, required: pyopt.enabled())
-  if not cc.check_header('Python.h', dependencies: python3_dep, required: pyopt.enabled())
-    python3_dep = not_found_dep
+  python3_inst = pm.find_installation(required: pyopt)
+  if python3_inst.found()
+    python3_dep = python3_inst.dependency(embed: true, required: pyopt)
+    # Remove this check after we depend on Meson >= 1.1.0
+    if not cc.check_header('Python.h', dependencies: python3_dep, required: pyopt)
+      python3_dep = not_found_dep
+    endif
   endif
-else
-  python3_dep = not_found_dep
 endif
 
 
-- 
Tristan Partin
Neon (https://neon.tech)

From 917f4b02875c2b076e3f0aede0581b502d574f4a Mon Sep 17 00:00:00 2001
From: Tristan Partin <tris...@neon.tech>
Date: Wed, 17 May 2023 09:43:51 -0500
Subject: [PATCH v5 13/16] Make some Meson style more consistent with
 surrounding code

---
 meson.build             | 17 ++++++++---------
 src/include/meson.build |  2 +-
 2 files changed, 9 insertions(+), 10 deletions(-)

diff --git a/meson.build b/meson.build
index 7c50c7567d..843161d5ee 100644
--- a/meson.build
+++ b/meson.build
@@ -1146,7 +1146,7 @@ Use -Dreadline=disabled to disable readline support.'''.format(readline_dep))
     foreach func : check_funcs
       found = cc.has_function(func, dependencies: [readline],
         args: test_c_args, include_directories: postgres_inc)
-      cdata.set('HAVE_'+func.to_upper(), found ? 1 : false)
+      cdata.set('HAVE_' + func.to_upper(), found ? 1 : false)
     endforeach
 
     check_vars = [
@@ -1156,7 +1156,7 @@ Use -Dreadline=disabled to disable readline support.'''.format(readline_dep))
     ]
 
     foreach var : check_vars
-      cdata.set('HAVE_'+var.to_upper(),
+      cdata.set('HAVE_' + var.to_upper(),
         cc.has_header_symbol(readline_h, var,
           args: test_c_args, include_directories: postgres_inc,
           prefix: '#include <stdio.h>',
@@ -1311,7 +1311,7 @@ if sslopt in ['auto', 'openssl']
       cdata.set('USE_OPENSSL', 1,
                 description: 'Define to 1 to build with OpenSSL support. (-Dssl=openssl)')
       cdata.set('OPENSSL_API_COMPAT', '0x10001000L',
-                description: '''Define to the OpenSSL API version in use. This avoids deprecation warnings from newer OpenSSL versions.''')
+                description: 'Define to the OpenSSL API version in use. This avoids deprecation warnings from newer OpenSSL versions.')
       ssl_library = 'openssl'
     else
       ssl = not_found_dep
@@ -1599,8 +1599,7 @@ if cc.links('''
 
   if not buggy_int128
     cdata.set('PG_INT128_TYPE', '__int128')
-    cdata.set('ALIGNOF_PG_INT128_TYPE', cc.
-      alignment('__int128', args: test_c_args))
+    cdata.set('ALIGNOF_PG_INT128_TYPE', cc.alignment('__int128', args: test_c_args))
   endif
 endif
 
@@ -1642,8 +1641,8 @@ endif
 # We use <stdbool.h> if we have it and it declares type bool as having
 # size 1.  Otherwise, c.h will fall back to declaring bool as unsigned char.
 if cc.has_type('_Bool', args: test_c_args) \
-  and cc.has_type('bool', prefix: '#include <stdbool.h>', args: test_c_args) \
-  and cc.sizeof('bool', prefix: '#include <stdbool.h>', args: test_c_args) == 1
+    and cc.has_type('bool', prefix: '#include <stdbool.h>', args: test_c_args) \
+    and cc.sizeof('bool', prefix: '#include <stdbool.h>', args: test_c_args) == 1
   cdata.set('HAVE__BOOL', 1)
   cdata.set('PG_USE_STDBOOL', 1)
 endif
@@ -1670,7 +1669,7 @@ endforeach
 
 
 if cc.has_function_attribute('visibility:default') and \
-  cc.has_function_attribute('visibility:hidden')
+    cc.has_function_attribute('visibility:hidden')
   cdata.set('HAVE_VISIBILITY_ATTRIBUTE', 1)
 
   # Only newer versions of meson know not to apply gnu_symbol_visibility =
@@ -3046,7 +3045,7 @@ meson_install_args = meson_args + ['install'] + {
     'muon': []
 }[meson_impl]
 
-# setup tests should  be run first,
+# setup tests should be run first,
 # so define priority for these
 setup_tests_priority = 100
 test('tmp_install',
diff --git a/src/include/meson.build b/src/include/meson.build
index 33c0a5562c..d7e1ecd4c9 100644
--- a/src/include/meson.build
+++ b/src/include/meson.build
@@ -89,7 +89,7 @@ install_headers(
   'c.h',
   'port.h',
   'postgres_fe.h',
-  install_dir: dir_include_internal
+  install_dir: dir_include_internal,
 )
 
 install_headers(
-- 
Tristan Partin
Neon (https://neon.tech)

From e0aa122ac46a34d02384eed27b6c5598b5e8e16a Mon Sep 17 00:00:00 2001
From: Tristan Partin <tris...@neon.tech>
Date: Wed, 17 May 2023 09:48:18 -0500
Subject: [PATCH v5 14/16] Use a better error message in an impossible case

Meson validates 'choice' options for us, so technically this case is
impossible. A better error message helps people reading the code
understand what is going on in that branch.
---
 meson.build | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/meson.build b/meson.build
index 843161d5ee..0e0bdaddc5 100644
--- a/meson.build
+++ b/meson.build
@@ -1346,7 +1346,7 @@ if uuidopt != 'none'
     uuidfunc = 'uuid_export'
     uuidheader = 'uuid.h'
   else
-    error('huh')
+    error('unknown uuid build option value: @0@'.format(uuidopt))
   endif
 
   if not cc.has_header_symbol(uuidheader, uuidfunc, args: test_c_args, dependencies: uuid)
-- 
Tristan Partin
Neon (https://neon.tech)

From bb843fc8d03649ac6ca86334100b5438b35b3005 Mon Sep 17 00:00:00 2001
From: Tristan Partin <tris...@neon.tech>
Date: Tue, 13 Jun 2023 15:43:02 -0500
Subject: [PATCH v5 15/16] Clean up some usage of Meson features

With Meson features, you can skip the `if myopt.disabled()` dance.
Reduces the amount of indentation as a benefit.
---
 meson.build | 516 ++++++++++++++++++++++++----------------------------
 1 file changed, 236 insertions(+), 280 deletions(-)

diff --git a/meson.build b/meson.build
index 0e0bdaddc5..0ae82dee1e 100644
--- a/meson.build
+++ b/meson.build
@@ -591,13 +591,11 @@ endif
 
 docs_pdf_opt = get_option('docs_pdf')
 docs_pdf_dep = not_found_dep
-if not docs_pdf_opt.disabled()
-  fop = find_program(get_option('FOP'), native: true, required: docs_pdf_opt)
-  if xmllint_bin.found() and xsltproc_bin.found() and fop.found()
-    docs_pdf_dep = declare_dependency()
-  elif docs_pdf_opt.enabled()
-    error('missing required tools for docs in PDF format')
-  endif
+fop = find_program(get_option('FOP'), native: true, required: docs_pdf_opt)
+if xmllint_bin.found() and xsltproc_bin.found() and fop.found()
+  docs_pdf_dep = declare_dependency()
+elif docs_pdf_opt.enabled()
+  error('missing required tools for docs in PDF format')
 endif
 
 
@@ -609,45 +607,40 @@ endif
 gssapiopt = get_option('gssapi')
 krb_srvtab = ''
 have_gssapi = false
-if not gssapiopt.disabled()
-  gssapi = dependency('krb5-gssapi', required: gssapiopt)
-  have_gssapi = gssapi.found()
+gssapi = dependency('krb5-gssapi', required: gssapiopt)
+have_gssapi = gssapi.found()
 
-  if not have_gssapi
-  elif cc.check_header('gssapi/gssapi.h', dependencies: gssapi, required: false,
-      args: test_c_args, include_directories: postgres_inc)
-    cdata.set('HAVE_GSSAPI_GSSAPI_H', 1)
-  elif cc.check_header('gssapi.h', args: test_c_args, dependencies: gssapi, required: gssapiopt)
-    cdata.set('HAVE_GSSAPI_H', 1)
-  else
-    have_gssapi = false
-  endif
-
-  if not have_gssapi
-  elif cc.check_header('gssapi/gssapi_ext.h', dependencies: gssapi, required: false,
-      args: test_c_args, include_directories: postgres_inc)
-    cdata.set('HAVE_GSSAPI_GSSAPI_EXT_H', 1)
-  elif cc.check_header('gssapi_ext.h', args: test_c_args, dependencies: gssapi, required: gssapiopt)
-    cdata.set('HAVE_GSSAPI_EXT_H', 1)
-  else
-    have_gssapi = false
-  endif
-
-  if not have_gssapi
-  elif cc.has_function('gss_store_cred_into', dependencies: gssapi,
-      args: test_c_args, include_directories: postgres_inc)
-    cdata.set('ENABLE_GSS', 1)
+if not have_gssapi
+elif cc.check_header('gssapi/gssapi.h', dependencies: gssapi, required: false,
+    args: test_c_args, include_directories: postgres_inc)
+  cdata.set('HAVE_GSSAPI_GSSAPI_H', 1)
+elif cc.check_header('gssapi.h', args: test_c_args, dependencies: gssapi, required: gssapiopt)
+  cdata.set('HAVE_GSSAPI_H', 1)
+else
+  have_gssapi = false
+endif
 
-    krb_srvtab = 'FILE:/@0@/krb5.keytab)'.format(get_option('sysconfdir'))
-    cdata.set_quoted('PG_KRB_SRVTAB', krb_srvtab)
-  elif gssapiopt.enabled()
-    error('''could not find function 'gss_store_cred_into' required for GSSAPI''')
-  else
-    have_gssapi = false
-  endif
+if not have_gssapi
+elif cc.check_header('gssapi/gssapi_ext.h', dependencies: gssapi, required: false,
+    args: test_c_args, include_directories: postgres_inc)
+  cdata.set('HAVE_GSSAPI_GSSAPI_EXT_H', 1)
+elif cc.check_header('gssapi_ext.h', args: test_c_args, dependencies: gssapi, required: gssapiopt)
+  cdata.set('HAVE_GSSAPI_EXT_H', 1)
+else
+  have_gssapi = false
 endif
+
 if not have_gssapi
-  gssapi = not_found_dep
+elif cc.has_function('gss_store_cred_into', dependencies: gssapi,
+    args: test_c_args, include_directories: postgres_inc)
+  cdata.set('ENABLE_GSS', 1)
+
+  krb_srvtab = 'FILE:/@0@/krb5.keytab)'.format(get_option('sysconfdir'))
+  cdata.set_quoted('PG_KRB_SRVTAB', krb_srvtab)
+elif gssapiopt.enabled()
+  error('''could not find function 'gss_store_cred_into' required for GSSAPI''')
+else
+  have_gssapi = false
 endif
 
 
@@ -766,17 +759,11 @@ endif
 ###############################################################
 
 icuopt = get_option('icu')
-if not icuopt.disabled()
-  icu = dependency('icu-uc', required: icuopt)
-  icu_i18n = dependency('icu-i18n', required: icuopt)
-
-  if icu.found()
-    cdata.set('USE_ICU', 1)
-  endif
+icu = dependency('icu-uc', required: icuopt)
+icu_i18n = dependency('icu-i18n', required: icuopt)
 
-else
-  icu = not_found_dep
-  icu_i18n = not_found_dep
+if icu.found()
+  cdata.set('USE_ICU', 1)
 endif
 
 
@@ -786,14 +773,10 @@ endif
 ###############################################################
 
 libxmlopt = get_option('libxml')
-if not libxmlopt.disabled()
-  libxml = dependency('libxml-2.0', required: libxmlopt, version: '>= 2.6.23')
+libxml = dependency('libxml-2.0', required: libxmlopt, version: '>= 2.6.23')
 
-  if libxml.found()
-    cdata.set('USE_LIBXML', 1)
-  endif
-else
-  libxml = not_found_dep
+if libxml.found()
+  cdata.set('USE_LIBXML', 1)
 endif
 
 
@@ -803,14 +786,10 @@ endif
 ###############################################################
 
 libxsltopt = get_option('libxslt')
-if not libxsltopt.disabled()
-  libxslt = dependency('libxslt', required: libxsltopt)
+libxslt = dependency('libxslt', required: libxsltopt)
 
-  if libxslt.found()
-    cdata.set('USE_LIBXSLT', 1)
-  endif
-else
-  libxslt = not_found_dep
+if libxslt.found()
+  cdata.set('USE_LIBXSLT', 1)
 endif
 
 
@@ -820,16 +799,11 @@ endif
 ###############################################################
 
 lz4opt = get_option('lz4')
-if not lz4opt.disabled()
-  lz4 = dependency('liblz4', required: lz4opt)
-
-  if lz4.found()
-    cdata.set('USE_LZ4', 1)
-    cdata.set('HAVE_LIBLZ4', 1)
-  endif
+lz4 = dependency('liblz4', required: lz4opt)
 
-else
-  lz4 = not_found_dep
+if lz4.found()
+  cdata.set('USE_LZ4', 1)
+  cdata.set('HAVE_LIBLZ4', 1)
 endif
 
 
@@ -846,20 +820,18 @@ endif
 tclopt = get_option('pltcl')
 tcl_version = get_option('tcl_version')
 tcl_dep = not_found_dep
-if not tclopt.disabled()
 
-  # via pkg-config
-  tcl_dep = dependency(tcl_version, required: false)
+# via pkg-config
+tcl_dep = dependency(tcl_version, required: false)
 
-  if not tcl_dep.found()
-    tcl_dep = cc.find_library(tcl_version,
-      required: tclopt,
-      dirs: test_lib_d)
-  endif
+if not tcl_dep.found()
+  tcl_dep = cc.find_library(tcl_version,
+    required: tclopt,
+    dirs: test_lib_d)
+endif
 
-  if not cc.has_header('tcl.h', dependencies: tcl_dep, required: tclopt)
-    tcl_dep = not_found_dep
-  endif
+if not cc.has_header('tcl.h', dependencies: tcl_dep, required: tclopt)
+  tcl_dep = not_found_dep
 endif
 
 
@@ -869,35 +841,32 @@ endif
 ###############################################################
 
 pamopt = get_option('pam')
-if not pamopt.disabled()
-  pam = dependency('pam', required: false)
+pam = not_found_dep
 
-  if not pam.found()
-    pam = cc.find_library('pam', required: pamopt, dirs: test_lib_d)
-  endif
+pam = dependency('pam', required: false)
+if not pam.found()
+  pam = cc.find_library('pam', required: pamopt, dirs: test_lib_d)
+endif
 
-  if pam.found()
-    pam_header_found = false
+if pam.found()
+  pam_header_found = false
 
-    # header file <security/pam_appl.h> or <pam/pam_appl.h> is required for PAM.
-    if cc.check_header('security/pam_appl.h', dependencies: pam, required: false,
-        args: test_c_args, include_directories: postgres_inc)
-      cdata.set('HAVE_SECURITY_PAM_APPL_H', 1)
-      pam_header_found = true
-    elif cc.check_header('pam/pam_appl.h', dependencies: pam, required: pamopt,
-        args: test_c_args, include_directories: postgres_inc)
-      cdata.set('HAVE_PAM_PAM_APPL_H', 1)
-      pam_header_found = true
-    endif
+  # header file <security/pam_appl.h> or <pam/pam_appl.h> is required for PAM.
+  if cc.check_header('security/pam_appl.h', dependencies: pam, required: false,
+      args: test_c_args, include_directories: postgres_inc)
+    cdata.set('HAVE_SECURITY_PAM_APPL_H', 1)
+    pam_header_found = true
+  elif cc.check_header('pam/pam_appl.h', dependencies: pam, required: pamopt,
+      args: test_c_args, include_directories: postgres_inc)
+    cdata.set('HAVE_PAM_PAM_APPL_H', 1)
+    pam_header_found = true
+  endif
 
-    if pam_header_found
-      cdata.set('USE_PAM', 1)
-    else
-      pam = not_found_dep
-    endif
+  if pam_header_found
+    cdata.set('USE_PAM', 1)
+  else
+    pam = not_found_dep
   endif
-else
-  pam = not_found_dep
 endif
 
 
@@ -908,111 +877,110 @@ endif
 
 perlopt = get_option('plperl')
 perl_dep = not_found_dep
-if not perlopt.disabled()
-  perl_may_work = true
-
-  # First verify that perl has the necessary dependencies installed
-  perl_mods = run_command(
-    [perl,
-     '-MConfig', '-MOpcode', '-MExtUtils::Embed', '-MExtUtils::ParseXS',
-     '-e', ''],
-    check: false)
-  if perl_mods.returncode() != 0
+perl_may_work = true
+
+# First verify that perl has the necessary dependencies installed
+perl_mods = run_command(
+  [perl,
+    '-MConfig', '-MOpcode', '-MExtUtils::Embed', '-MExtUtils::ParseXS',
+    '-e', ''],
+  check: false)
+if perl_mods.returncode() != 0
+  perl_may_work = false
+  perl_msg = 'perl installation does not have the required modules'
+endif
+
+# Then inquire perl about its configuration
+if perl_may_work
+  perl_conf_cmd = [perl, '-MConfig', '-e', 'print $Config{$ARGV[0]}']
+  perlversion = run_command(perl_conf_cmd, 'api_versionstring', check: true).stdout()
+  archlibexp = run_command(perl_conf_cmd, 'archlibexp', check: true).stdout()
+  privlibexp = run_command(perl_conf_cmd, 'privlibexp', check: true).stdout()
+  useshrplib = run_command(perl_conf_cmd, 'useshrplib', check: true).stdout()
+
+  perl_inc_dir = '@0@/CORE'.format(archlibexp)
+
+  if perlversion.version_compare('< 5.14')
+    perl_may_work = false
+    perl_msg = 'Perl version 5.14 or later is required, but this is @0@'.format(perlversion)
+  elif useshrplib != 'true'
     perl_may_work = false
-    perl_msg = 'perl installation does not have the required modules'
+    perl_msg = 'need a shared perl'
   endif
+endif
 
-  # Then inquire perl about its configuration
-  if perl_may_work
-    perl_conf_cmd = [perl, '-MConfig', '-e', 'print $Config{$ARGV[0]}']
-    perlversion = run_command(perl_conf_cmd, 'api_versionstring', check: true).stdout()
-    archlibexp = run_command(perl_conf_cmd, 'archlibexp', check: true).stdout()
-    privlibexp = run_command(perl_conf_cmd, 'privlibexp', check: true).stdout()
-    useshrplib = run_command(perl_conf_cmd, 'useshrplib', check: true).stdout()
-
-    perl_inc_dir = '@0@/CORE'.format(archlibexp)
-
-    if perlversion.version_compare('< 5.14')
-      perl_may_work = false
-      perl_msg = 'Perl version 5.14 or later is required, but this is @0@'.format(perlversion)
-    elif useshrplib != 'true'
-      perl_may_work = false
-      perl_msg = 'need a shared perl'
-    endif
+if perl_may_work
+  # On most platforms, archlibexp is also where the Perl include files live ...
+  perl_ccflags = ['-I@0@'.format(perl_inc_dir)]
+  # ... but on newer macOS versions, we must use -iwithsysroot to look
+  # under sysroot
+  if not fs.is_file('@0@/perl.h'.format(perl_inc_dir)) and \
+      fs.is_file('@0@@1@/perl.h'.format(pg_sysroot, perl_inc_dir))
+    perl_ccflags = ['-iwithsysroot', perl_inc_dir]
   endif
 
-  if perl_may_work
-    # On most platforms, archlibexp is also where the Perl include files live ...
-    perl_ccflags = ['-I@0@'.format(perl_inc_dir)]
-    # ... but on newer macOS versions, we must use -iwithsysroot to look
-    # under sysroot
-    if not fs.is_file('@0@/perl.h'.format(perl_inc_dir)) and \
-       fs.is_file('@0@@1@/perl.h'.format(pg_sysroot, perl_inc_dir))
-      perl_ccflags = ['-iwithsysroot', perl_inc_dir]
-    endif
-
-    # check compiler finds header
-    if not cc.has_header('perl.h', required: false,
-        args: test_c_args + perl_ccflags, include_directories: postgres_inc)
-      perl_may_work = false
-      perl_msg = 'missing perl.h'
-    endif
+  # check compiler finds header
+  if not cc.has_header('perl.h', required: false,
+      args: test_c_args + perl_ccflags, include_directories: postgres_inc)
+    perl_may_work = false
+    perl_msg = 'missing perl.h'
   endif
+endif
 
-  if perl_may_work
-    perl_ccflags_r = run_command(perl_conf_cmd, 'ccflags', check: true).stdout()
+if perl_may_work
+  perl_ccflags_r = run_command(perl_conf_cmd, 'ccflags', check: true).stdout()
 
-    # See comments for PGAC_CHECK_PERL_EMBED_CCFLAGS in perl.m4
-    foreach flag : perl_ccflags_r.split(' ')
-      if flag.startswith('-D') and \
-          (not flag.startswith('-D_') or flag == '_USE_32BIT_TIME_T')
-        perl_ccflags += flag
-      endif
-    endforeach
+  # See comments for PGAC_CHECK_PERL_EMBED_CCFLAGS in perl.m4
+  foreach flag : perl_ccflags_r.split(' ')
+    if flag.startswith('-D') and \
+        (not flag.startswith('-D_') or flag == '_USE_32BIT_TIME_T')
+      perl_ccflags += flag
+    endif
+  endforeach
 
-    if host_system == 'windows'
-      perl_ccflags += ['-DPLPERL_HAVE_UID_GID']
+  if host_system == 'windows'
+    perl_ccflags += ['-DPLPERL_HAVE_UID_GID']
 
-      if cc.get_id() == 'msvc'
-        # prevent binary mismatch between MSVC built plperl and Strawberry or
-        # msys ucrt perl libraries
-        perl_ccflags += ['-DNO_THREAD_SAFE_LOCALE']
-      endif
+    if cc.get_id() == 'msvc'
+      # prevent binary mismatch between MSVC built plperl and Strawberry or
+      # msys ucrt perl libraries
+      perl_ccflags += ['-DNO_THREAD_SAFE_LOCALE']
     endif
+  endif
 
-    message('CCFLAGS recommended by perl: @0@'.format(perl_ccflags_r))
-    message('CCFLAGS for embedding perl: @0@'.format(' '.join(perl_ccflags)))
+  message('CCFLAGS recommended by perl: @0@'.format(perl_ccflags_r))
+  message('CCFLAGS for embedding perl: @0@'.format(' '.join(perl_ccflags)))
 
-    # We are after Embed's ldopts, but without the subset mentioned in
-    # Config's ccdlflags and ldflags.  (Those are the choices of those who
-    # built the Perl installation, which are not necessarily appropriate
-    # for building PostgreSQL.)
-    ldopts = run_command(perl, '-MExtUtils::Embed', '-e', 'ldopts', check: true).stdout().strip()
-    undesired = run_command(perl_conf_cmd, 'ccdlflags', check: true).stdout().split()
-    undesired += run_command(perl_conf_cmd, 'ldflags', check: true).stdout().split()
+  # We are after Embed's ldopts, but without the subset mentioned in
+  # Config's ccdlflags and ldflags.  (Those are the choices of those who
+  # built the Perl installation, which are not necessarily appropriate
+  # for building PostgreSQL.)
+  ldopts = run_command(perl, '-MExtUtils::Embed', '-e', 'ldopts', check: true).stdout().strip()
+  undesired = run_command(perl_conf_cmd, 'ccdlflags', check: true).stdout().split()
+  undesired += run_command(perl_conf_cmd, 'ldflags', check: true).stdout().split()
 
-    perl_ldopts = []
-    foreach ldopt : ldopts.split(' ')
-      if ldopt == '' or ldopt in undesired
-        continue
-      endif
+  perl_ldopts = []
+  foreach ldopt : ldopts.split(' ')
+    if ldopt == '' or ldopt in undesired
+      continue
+    endif
 
-      perl_ldopts += ldopt.strip('"')
-    endforeach
+    perl_ldopts += ldopt.strip('"')
+  endforeach
 
-    message('LDFLAGS recommended by perl: "@0@"'.format(ldopts))
-    message('LDFLAGS for embedding perl: "@0@"'.format(' '.join(perl_ldopts)))
+  message('LDFLAGS recommended by perl: "@0@"'.format(ldopts))
+  message('LDFLAGS for embedding perl: "@0@"'.format(' '.join(perl_ldopts)))
 
-    perl_dep_int = declare_dependency(
-      compile_args: perl_ccflags,
-      link_args: perl_ldopts,
-      version: perlversion,
-    )
+  perl_dep_int = declare_dependency(
+    compile_args: perl_ccflags,
+    link_args: perl_ldopts,
+    version: perlversion,
+  )
 
-    # While we're at it, check that we can link to libperl.
-    # On most platforms, if perl.h is there then libperl.so will be too, but
-    # at this writing Debian packages them separately.
-    perl_link_test = '''
+  # While we're at it, check that we can link to libperl.
+  # On most platforms, if perl.h is there then libperl.so will be too, but
+  # at this writing Debian packages them separately.
+  perl_link_test = '''
 /* see plperl.h */
 #ifdef _MSC_VER
 #define __inline__ inline
@@ -1023,23 +991,22 @@ int main(void)
 {
 perl_alloc();
 }'''
-    if not cc.links(perl_link_test, name: 'libperl',
-          args: test_c_args + perl_ccflags + perl_ldopts,
-          include_directories: postgres_inc)
-      perl_may_work = false
-      perl_msg = 'missing libperl'
-    endif
+  if not cc.links(perl_link_test, name: 'libperl',
+        args: test_c_args + perl_ccflags + perl_ldopts,
+        include_directories: postgres_inc)
+    perl_may_work = false
+    perl_msg = 'missing libperl'
+  endif
 
-  endif # perl_may_work
+endif # perl_may_work
 
-  if perl_may_work
-    perl_dep = perl_dep_int
+if perl_may_work
+  perl_dep = perl_dep_int
+else
+  if perlopt.enabled()
+    error('dependency plperl failed: @0@'.format(perl_msg))
   else
-    if perlopt.enabled()
-      error('dependency plperl failed: @0@'.format(perl_msg))
-    else
-      message('disabling optional dependency plperl: @0@'.format(perl_msg))
-    endif
+    message('disabling optional dependency plperl: @0@'.format(perl_msg))
   endif
 endif
 
@@ -1051,15 +1018,13 @@ endif
 
 pyopt = get_option('plpython')
 python3_dep = not_found_dep
-if not pyopt.disabled()
-  pm = import('python')
-  python3_inst = pm.find_installation(required: pyopt)
-  if python3_inst.found()
-    python3_dep = python3_inst.dependency(embed: true, required: pyopt)
-    # Remove this check after we depend on Meson >= 1.1.0
-    if not cc.check_header('Python.h', dependencies: python3_dep, required: pyopt)
-      python3_dep = not_found_dep
-    endif
+pm = import('python')
+python3_inst = pm.find_installation(required: pyopt)
+if python3_inst.found()
+  python3_dep = python3_inst.dependency(embed: true, required: pyopt)
+  # Remove this check after we depend on Meson >= 1.1.0
+  if not cc.check_header('Python.h', dependencies: python3_dep, required: pyopt)
+    python3_dep = not_found_dep
   endif
 endif
 
@@ -1069,7 +1034,9 @@ endif
 # Library: Readline
 ###############################################################
 
-if not get_option('readline').disabled()
+readlineopt = get_option('readline')
+readline = not_found_dep
+if not readlineopt.disabled()
   libedit_preferred = get_option('libedit_preferred')
   # Set the order of readline dependencies
   check_readline_deps = libedit_preferred ? \
@@ -1079,7 +1046,7 @@ if not get_option('readline').disabled()
     readline = dependency(readline_dep, required: false)
     if not readline.found()
       readline = cc.find_library(readline_dep,
-        required: get_option('readline'),
+        required: readlineopt,
         dirs: test_lib_d)
     endif
     if readline.found()
@@ -1180,8 +1147,6 @@ Use -Dreadline=disabled to disable readline support.'''.format(readline_dep))
   endif
 
   # XXX: Figure out whether to implement mingw warning equivalent
-else
-  readline = not_found_dep
 endif
 
 
@@ -1368,34 +1333,32 @@ endif
 
 zlibopt = get_option('zlib')
 zlib = not_found_dep
-if not zlibopt.disabled()
-  zlib_t = dependency('zlib', required: zlibopt)
-
-  if zlib_t.type_name() == 'internal'
-    # if fallback was used, we don't need to test if headers are present (they
-    # aren't built yet, so we can't test)
-    zlib = zlib_t
-  elif not zlib_t.found()
-    warning('did not find zlib')
-  elif not cc.has_header('zlib.h',
-      args: test_c_args, include_directories: postgres_inc,
-      dependencies: [zlib_t], required: zlibopt.enabled())
-    warning('zlib header not found')
-  elif not cc.has_type('z_streamp',
-      dependencies: [zlib_t], prefix: '#include <zlib.h>',
-      args: test_c_args, include_directories: postgres_inc)
-    if zlibopt.enabled()
-      error('zlib version is too old')
-    else
-      warning('zlib version is too old')
-    endif
+
+zlib_t = dependency('zlib', required: zlibopt)
+if zlib_t.found() and zlib_t.type_name() == 'internal'
+  # if fallback was used, we don't need to test if headers are present (they
+  # aren't built yet, so we can't test)
+  zlib = zlib_t
+elif not zlib_t.found()
+  warning('did not find zlib')
+elif not cc.has_header('zlib.h',
+    args: test_c_args, include_directories: postgres_inc,
+    dependencies: [zlib_t], required: zlibopt)
+  warning('zlib header not found')
+elif not cc.has_type('z_streamp',
+    dependencies: [zlib_t], prefix: '#include <zlib.h>',
+    args: test_c_args, include_directories: postgres_inc)
+  if zlibopt.enabled()
+    error('zlib version is too old')
   else
-    zlib = zlib_t
+    warning('zlib version is too old')
   endif
+else
+  zlib = zlib_t
+endif
 
-  if zlib.found()
-    cdata.set('HAVE_LIBZ', 1)
-  endif
+if zlib.found()
+  cdata.set('HAVE_LIBZ', 1)
 endif
 
 
@@ -1429,16 +1392,11 @@ endif
 ###############################################################
 
 zstdopt = get_option('zstd')
-if not zstdopt.disabled()
-  zstd = dependency('libzstd', required: zstdopt, version: '>=1.4.0')
-
-  if zstd.found()
-    cdata.set('USE_ZSTD', 1)
-    cdata.set('HAVE_LIBZSTD', 1)
-  endif
+zstd = dependency('libzstd', required: zstdopt, version: '>=1.4.0')
 
-else
-  zstd = not_found_dep
+if zstd.found()
+  cdata.set('USE_ZSTD', 1)
+  cdata.set('HAVE_LIBZSTD', 1)
 endif
 
 
@@ -2534,32 +2492,30 @@ cdata.set('ENABLE_THREAD_SAFETY', 1)
 nlsopt = get_option('nls')
 libintl = not_found_dep
 
-if not nlsopt.disabled()
-  # otherwise there'd be lots of
-  # "Gettext not found, all translation (po) targets will be ignored."
-  # warnings if not found.
-  msgfmt = find_program('msgfmt', required: nlsopt, native: true)
+# otherwise there'd be lots of
+# "Gettext not found, all translation (po) targets will be ignored."
+# warnings if not found.
+msgfmt = find_program('msgfmt', required: nlsopt, native: true)
 
-  # meson 0.59 has this wrapped in dependency('int')
-  if (msgfmt.found() and
-      cc.check_header('libintl.h', required: nlsopt,
-        args: test_c_args, include_directories: postgres_inc))
+# meson 0.59 has this wrapped in dependency('int')
+if (msgfmt.found() and
+    cc.check_header('libintl.h', required: nlsopt,
+      args: test_c_args, include_directories: postgres_inc))
 
-    # in libc
-    if cc.has_function('ngettext')
-      libintl = declare_dependency()
-    else
-      libintl = cc.find_library('intl',
-        has_headers: ['libintl.h'], required: nlsopt,
-        header_include_directories: postgres_inc,
-        dirs: test_lib_d)
-    endif
+  # in libc
+  if cc.has_function('ngettext')
+    libintl = declare_dependency()
+  else
+    libintl = cc.find_library('intl',
+      has_headers: ['libintl.h'], required: nlsopt,
+      header_include_directories: postgres_inc,
+      dirs: test_lib_d)
   endif
+endif
 
-  if libintl.found()
-    i18n = import('i18n')
-    cdata.set('ENABLE_NLS', 1)
-  endif
+if libintl.found()
+  i18n = import('i18n')
+  cdata.set('ENABLE_NLS', 1)
 endif
 
 
-- 
Tristan Partin
Neon (https://neon.tech)

From dc691784c858410bb9216eae958cf255528cc224 Mon Sep 17 00:00:00 2001
From: Tristan Partin <tris...@neon.tech>
Date: Tue, 13 Jun 2023 15:44:27 -0500
Subject: [PATCH v5 16/16] Fix intl misspelling

---
 meson.build | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/meson.build b/meson.build
index 0ae82dee1e..fc4b7ec2ba 100644
--- a/meson.build
+++ b/meson.build
@@ -2497,7 +2497,7 @@ libintl = not_found_dep
 # warnings if not found.
 msgfmt = find_program('msgfmt', required: nlsopt, native: true)
 
-# meson 0.59 has this wrapped in dependency('int')
+# meson 0.59 has this wrapped in dependency('intl')
 if (msgfmt.found() and
     cc.check_header('libintl.h', required: nlsopt,
       args: test_c_args, include_directories: postgres_inc))
-- 
Tristan Partin
Neon (https://neon.tech)

Reply via email to