summaryrefslogtreecommitdiffstats
path: root/doc/src/sgml/html/install-meson.html
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-13 13:44:03 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-13 13:44:03 +0000
commit293913568e6a7a86fd1479e1cff8e2ecb58d6568 (patch)
treefc3b469a3ec5ab71b36ea97cc7aaddb838423a0c /doc/src/sgml/html/install-meson.html
parentInitial commit. (diff)
downloadpostgresql-16-293913568e6a7a86fd1479e1cff8e2ecb58d6568.tar.xz
postgresql-16-293913568e6a7a86fd1479e1cff8e2ecb58d6568.zip
Adding upstream version 16.2.upstream/16.2
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'doc/src/sgml/html/install-meson.html')
-rw-r--r--doc/src/sgml/html/install-meson.html602
1 files changed, 602 insertions, 0 deletions
diff --git a/doc/src/sgml/html/install-meson.html b/doc/src/sgml/html/install-meson.html
new file mode 100644
index 0000000..38e109a
--- /dev/null
+++ b/doc/src/sgml/html/install-meson.html
@@ -0,0 +1,602 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>17.4. Building and Installation with Meson</title><link rel="stylesheet" type="text/css" href="stylesheet.css" /><link rev="made" href="pgsql-docs@lists.postgresql.org" /><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" /><link rel="prev" href="install-make.html" title="17.3. Building and Installation with Autoconf and Make" /><link rel="next" href="install-post.html" title="17.5. Post-Installation Setup" /></head><body id="docContent" class="container-fluid col-10"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="5" align="center">17.4. Building and Installation with Meson</th></tr><tr><td width="10%" align="left"><a accesskey="p" href="install-make.html" title="17.3. Building and Installation with Autoconf and Make">Prev</a> </td><td width="10%" align="left"><a accesskey="u" href="installation.html" title="Chapter 17. Installation from Source Code">Up</a></td><th width="60%" align="center">Chapter 17. Installation from Source Code</th><td width="10%" align="right"><a accesskey="h" href="index.html" title="PostgreSQL 16.2 Documentation">Home</a></td><td width="10%" align="right"> <a accesskey="n" href="install-post.html" title="17.5. Post-Installation Setup">Next</a></td></tr></table><hr /></div><div class="sect1" id="INSTALL-MESON"><div class="titlepage"><div><div><h2 class="title" style="clear: both">17.4. Building and Installation with Meson <a href="#INSTALL-MESON" class="id_link">#</a></h2></div></div></div><div class="toc"><dl class="toc"><dt><span class="sect2"><a href="install-meson.html#INSTALL-SHORT-MESON">17.4.1. Short Version</a></span></dt><dt><span class="sect2"><a href="install-meson.html#INSTALL-PROCEDURE-MESON">17.4.2. Installation Procedure</a></span></dt><dt><span class="sect2"><a href="install-meson.html#MESON-OPTIONS">17.4.3. <code class="literal">meson setup</code> Options</a></span></dt></dl></div><div class="sect2" id="INSTALL-SHORT-MESON"><div class="titlepage"><div><div><h3 class="title">17.4.1. Short Version <a href="#INSTALL-SHORT-MESON" class="id_link">#</a></h3></div></div></div><p>
+</p><pre class="synopsis">
+meson setup build --prefix=/usr/local/pgsql
+cd build
+ninja
+su
+ninja install
+adduser postgres
+mkdir -p /usr/local/pgsql/data
+chown postgres /usr/local/pgsql/data
+su - postgres
+/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
+/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l logfile start
+/usr/local/pgsql/bin/createdb test
+/usr/local/pgsql/bin/psql test
+</pre><p>
+ The long version is the rest of this
+ <span class="phrase">section</span>.
+ </p></div><div class="sect2" id="INSTALL-PROCEDURE-MESON"><div class="titlepage"><div><div><h3 class="title">17.4.2. Installation Procedure <a href="#INSTALL-PROCEDURE-MESON" class="id_link">#</a></h3></div></div></div><div class="procedure"><ol class="procedure" type="1"><li class="step" id="MESON-CONFIGURE"><p class="title"><strong>Configuration</strong></p><p>
+ The first step of the installation procedure is to configure the
+ build tree for your system and choose the options you would like. To
+ create and configure the build directory, you can start with the
+ <code class="literal">meson setup</code> command.
+</p><pre class="screen">
+<strong class="userinput"><code>meson setup build</code></strong>
+</pre><p>
+ The setup command takes a <code class="literal">builddir</code> and a <code class="literal">srcdir</code>
+ argument. If no <code class="literal">srcdir</code> is given, Meson will deduce the
+ <code class="literal">srcdir</code> based on the current directory and the location
+ of <code class="literal">meson.build</code>. The <code class="literal">builddir</code> is mandatory.
+ </p><p>
+ Running <code class="literal">meson setup</code> loads the build configuration file and sets up the build directory.
+ Additionally, you can also pass several build options to Meson. Some commonly
+ used options are mentioned in the subsequent sections. For example:
+
+</p><pre class="screen">
+# configure with a different installation prefix
+meson setup build --prefix=/home/user/pg-install
+
+# configure to generate a debug build
+meson setup build --buildtype=debug
+
+# configure to build with OpenSSL support
+meson setup build -Dssl=openssl
+</pre><p>
+ </p><p>
+ Setting up the build directory is a one-time step. To reconfigure before a
+ new build, you can simply use the <code class="literal">meson configure</code> command
+</p><pre class="screen">
+meson configure -Dcassert=true
+</pre><p>
+ <code class="command">meson configure</code>'s commonly used command-line options
+ are explained in <a class="xref" href="install-meson.html#MESON-OPTIONS" title="17.4.3. meson setup Options">Section 17.4.3</a>.
+ </p></li><li class="step" id="MESON-BUILD"><p class="title"><strong>Build</strong></p><p>
+ By default, <span class="productname">Meson</span> uses the <a class="ulink" href="https://ninja-build.org/" target="_top">Ninja</a> build tool. To build
+ <span class="productname">PostgreSQL</span> from source using Meson, you can
+ simply use the <code class="literal">ninja</code> command in the build directory.
+</p><pre class="screen">
+ninja
+</pre><p>
+ Ninja will automatically detect the number of CPUs in your computer and
+ parallelize itself accordingly. You can override the number of parallel
+ processes used with the command line argument <code class="literal">-j</code>.
+ </p><p>
+ It should be noted that after the initial configure step,
+ <code class="command">ninja</code> is the only command you ever need to type to
+ compile. No matter how you alter your source tree (short of moving it to a
+ completely new location), Meson will detect the changes and regenerate
+ itself accordingly. This is especially handy if you have multiple build
+ directories. Often one of them is used for development (the "debug" build)
+ and others only every now and then (such as a "static analysis" build).
+ Any configuration can be built just by cd'ing to the corresponding
+ directory and running Ninja.
+ </p><p>
+ If you'd like to build with a backend other than ninja, you can use
+ configure with the <code class="option">--backend</code> option to select the one you
+ want to use and then build using <code class="literal">meson compile</code>. To
+ learn more about these backends and other arguments you can provide to
+ ninja, you can refer to the <a class="ulink" href="https://mesonbuild.com/Running-Meson.html#building-from-the-source" target="_top">
+ Meson documentation</a>.
+ </p></li><li class="step"><p class="title"><strong>Regression Tests</strong></p><a id="id-1.6.4.8.3.2.3.2" class="indexterm"></a><p>
+ If you want to test the newly built server before you install it,
+ you can run the regression tests at this point. The regression
+ tests are a test suite to verify that <span class="productname">PostgreSQL</span>
+ runs on your machine in the way the developers expected it
+ to. Type:
+</p><pre class="screen">
+<strong class="userinput"><code>meson test</code></strong>
+</pre><p>
+ (This won't work as root; do it as an unprivileged user.)
+ See <a class="xref" href="regress.html" title="Chapter 33. Regression Tests">Chapter 33</a> for
+ detailed information about interpreting the test results. You can
+ repeat this test at any later time by issuing the same command.
+ </p><p>
+ To run pg_regress and pg_isolation_regress tests against a running
+ postgres instance, specify <strong class="userinput"><code>--setup running</code></strong> as an
+ argument to <strong class="userinput"><code>meson test</code></strong>.
+ </p></li><li class="step" id="MESON-INSTALL"><p class="title"><strong>Installing the Files</strong></p><div class="note"><h3 class="title">Note</h3><p>
+ If you are upgrading an existing system be sure to read
+ <a class="xref" href="upgrading.html" title="19.6. Upgrading a PostgreSQL Cluster">Section 19.6</a>,
+ which has instructions about upgrading a
+ cluster.
+ </p></div><p>
+ Once PostgreSQL is built, you can install it by simply running the
+ <code class="literal">ninja install</code> command.
+</p><pre class="screen">
+ninja install
+</pre><p>
+ </p><p>
+ This will install files into the directories that were specified
+ in <a class="xref" href="install-meson.html#MESON-CONFIGURE" title="Configuration">Step 1</a>. Make sure that you have appropriate
+ permissions to write into that area. You might need to do this
+ step as root. Alternatively, you can create the target directories
+ in advance and arrange for appropriate permissions to be granted.
+ The standard installation provides all the header files needed for client
+ application development as well as for server-side program
+ development, such as custom functions or data types written in C.
+ </p><p>
+ <code class="literal">ninja install</code> should work for most cases, but if you'd
+ like to use more options (such as <code class="option">--quiet</code> to suppress
+ extra output), you could also use <code class="literal">meson install</code>
+ instead. You can learn more about <a class="ulink" href="https://mesonbuild.com/Commands.html#install" target="_top">meson install</a>
+ and its options in the Meson documentation.
+ </p></li></ol></div><p><strong>Uninstallation: </strong>
+ To undo the installation, you can use the <code class="command">ninja
+ uninstall</code> command.
+ </p><p><strong>Cleaning: </strong>
+ After the installation, you can free disk space by removing the built
+ files from the source tree with the <code class="command">ninja clean</code>
+ command.
+ </p></div><div class="sect2" id="MESON-OPTIONS"><div class="titlepage"><div><div><h3 class="title">17.4.3. <code class="literal">meson setup</code> Options <a href="#MESON-OPTIONS" class="id_link">#</a></h3></div></div></div><p>
+ <code class="command">meson setup</code>'s command-line options are explained below.
+ This list is not exhaustive (use <code class="literal">meson configure --help</code>
+ to get one that is). The options not covered here are meant for advanced
+ use-cases, and are documented in the standard <a class="ulink" href="https://mesonbuild.com/Commands.html#configure" target="_top">Meson
+ documentation</a>. These arguments can be used with <code class="command">meson
+ setup</code> as well.
+ </p><div class="sect3" id="MESON-OPTIONS-LOCATIONS"><div class="titlepage"><div><div><h4 class="title">17.4.3.1. Installation Locations <a href="#MESON-OPTIONS-LOCATIONS" class="id_link">#</a></h4></div></div></div><p>
+ These options control where <code class="literal">ninja install</code> (or <code class="literal">meson install</code>) will put
+ the files. The <code class="option">--prefix</code> option (example
+ <a class="xref" href="install-meson.html#INSTALL-SHORT-MESON" title="17.4.1. Short Version">Section 17.4.1</a>) is sufficient for
+ most cases. If you have special needs, you can customize the
+ installation subdirectories with the other options described in this
+ section. Beware however that changing the relative locations of the
+ different subdirectories may render the installation non-relocatable,
+ meaning you won't be able to move it after installation.
+ (The <code class="literal">man</code> and <code class="literal">doc</code> locations are
+ not affected by this restriction.) For relocatable installs, you
+ might want to use the <code class="literal">-Drpath=false</code> option
+ described later.
+ </p><div class="variablelist"><dl class="variablelist"><dt id="CONFIGURE-PREFIX-MESON"><span class="term"><code class="option">--prefix=<em class="replaceable"><code>PREFIX</code></em></code></span> <a href="#CONFIGURE-PREFIX-MESON" class="id_link">#</a></dt><dd><p>
+ Install all files under the directory <em class="replaceable"><code>PREFIX</code></em>
+ instead of <code class="filename">/usr/local/pgsql</code> (on Unix based systems) or
+ <code class="filename"><em class="replaceable"><code>current drive letter</code></em>:/usr/local/pgsql</code> (on Windows).
+ The actual files will be installed into various subdirectories; no files
+ will ever be installed directly into the
+ <em class="replaceable"><code>PREFIX</code></em> directory.
+ </p></dd><dt id="CONFIGURE-BINDIR-MESON"><span class="term"><code class="option">--bindir=<em class="replaceable"><code>DIRECTORY</code></em></code></span> <a href="#CONFIGURE-BINDIR-MESON" class="id_link">#</a></dt><dd><p>
+ Specifies the directory for executable programs. The default
+ is <code class="filename"><em class="replaceable"><code>PREFIX</code></em>/bin</code>.
+ </p></dd><dt id="CONFIGURE-SYSCONFDIR-MESON"><span class="term"><code class="option">--sysconfdir=<em class="replaceable"><code>DIRECTORY</code></em></code></span> <a href="#CONFIGURE-SYSCONFDIR-MESON" class="id_link">#</a></dt><dd><p>
+ Sets the directory for various configuration files,
+ <code class="filename"><em class="replaceable"><code>PREFIX</code></em>/etc</code> by default.
+ </p></dd><dt id="CONFIGURE-LIBDIR-MESON"><span class="term"><code class="option">--libdir=<em class="replaceable"><code>DIRECTORY</code></em></code></span> <a href="#CONFIGURE-LIBDIR-MESON" class="id_link">#</a></dt><dd><p>
+ Sets the location to install libraries and dynamically loadable
+ modules. The default is
+ <code class="filename"><em class="replaceable"><code>PREFIX</code></em>/lib</code>.
+ </p></dd><dt id="CONFIGURE-INCLUDEDIR-MESON"><span class="term"><code class="option">--includedir=<em class="replaceable"><code>DIRECTORY</code></em></code></span> <a href="#CONFIGURE-INCLUDEDIR-MESON" class="id_link">#</a></dt><dd><p>
+ Sets the directory for installing C and C++ header files. The
+ default is <code class="filename"><em class="replaceable"><code>PREFIX</code></em>/include</code>.
+ </p></dd><dt id="CONFIGURE-DATADIR-MESON"><span class="term"><code class="option">--datadir=<em class="replaceable"><code>DIRECTORY</code></em></code></span> <a href="#CONFIGURE-DATADIR-MESON" class="id_link">#</a></dt><dd><p>
+ Sets the directory for read-only data files used by the
+ installed programs. The default is
+ <code class="filename"><em class="replaceable"><code>PREFIX</code></em>/share</code>. Note that this has
+ nothing to do with where your database files will be placed.
+ </p></dd><dt id="CONFIGURE-LOCALEDIR-MESON"><span class="term"><code class="option">--localedir=<em class="replaceable"><code>DIRECTORY</code></em></code></span> <a href="#CONFIGURE-LOCALEDIR-MESON" class="id_link">#</a></dt><dd><p>
+ Sets the directory for installing locale data, in particular
+ message translation catalog files. The default is
+ <code class="filename"><em class="replaceable"><code>DATADIR</code></em>/locale</code>.
+ </p></dd><dt id="CONFIGURE-MANDIR-MESON"><span class="term"><code class="option">--mandir=<em class="replaceable"><code>DIRECTORY</code></em></code></span> <a href="#CONFIGURE-MANDIR-MESON" class="id_link">#</a></dt><dd><p>
+ The man pages that come with <span class="productname">PostgreSQL</span> will be installed under
+ this directory, in their respective
+ <code class="filename">man<em class="replaceable"><code>x</code></em></code> subdirectories.
+ The default is <code class="filename"><em class="replaceable"><code>DATADIR</code></em>/man</code>.
+ </p></dd></dl></div><div class="note"><h3 class="title">Note</h3><p>
+ Care has been taken to make it possible to install
+ <span class="productname">PostgreSQL</span> into shared installation locations
+ (such as <code class="filename">/usr/local/include</code>) without
+ interfering with the namespace of the rest of the system. First,
+ the string <span class="quote">“<span class="quote"><code class="literal">/postgresql</code></span>”</span> is
+ automatically appended to <code class="varname">datadir</code>,
+ <code class="varname">sysconfdir</code>, and <code class="varname">docdir</code>,
+ unless the fully expanded directory name already contains the
+ string <span class="quote">“<span class="quote"><code class="literal">postgres</code></span>”</span> or
+ <span class="quote">“<span class="quote"><code class="literal">pgsql</code></span>”</span>. For example, if you choose
+ <code class="filename">/usr/local</code> as prefix, the documentation will
+ be installed in <code class="filename">/usr/local/doc/postgresql</code>,
+ but if the prefix is <code class="filename">/opt/postgres</code>, then it
+ will be in <code class="filename">/opt/postgres/doc</code>. The public C
+ header files of the client interfaces are installed into
+ <code class="varname">includedir</code> and are namespace-clean. The
+ internal header files and the server header files are installed
+ into private directories under <code class="varname">includedir</code>. See
+ the documentation of each interface for information about how to
+ access its header files. Finally, a private subdirectory will
+ also be created, if appropriate, under <code class="varname">libdir</code>
+ for dynamically loadable modules.
+ </p></div></div><div class="sect3" id="MESON-OPTIONS-FEATURES"><div class="titlepage"><div><div><h4 class="title">17.4.3.2. <span class="productname">PostgreSQL</span> Features <a href="#MESON-OPTIONS-FEATURES" class="id_link">#</a></h4></div></div></div><p>
+ The options described in this section enable building of
+ various optional <span class="productname">PostgreSQL</span> features.
+ Most of these require additional software, as described in
+ <a class="xref" href="install-requirements.html" title="17.1. Requirements">Section 17.1</a>, and will be automatically enabled if the
+ required software is found. You can change this behavior by manually
+ setting these features to <code class="literal">enabled</code> to require them
+ or <code class="literal">disabled</code> to not build with them.
+ </p><p>
+ To specify PostgreSQL-specific options, the name of the option
+ must be prefixed by <code class="literal">-D</code>.
+ </p><div class="variablelist"><dl class="variablelist"><dt id="CONFIGURE-WITH-NLS-MESON"><span class="term"><code class="option">-Dnls={ auto | enabled | disabled }</code></span> <a href="#CONFIGURE-WITH-NLS-MESON" class="id_link">#</a></dt><dd><p>
+ Enables or disables Native Language Support (<acronym class="acronym">NLS</acronym>),
+ that is, the ability to display a program's messages in a language
+ other than English. Defaults to auto and will be enabled
+ automatically if an implementation of the <span class="application">Gettext
+ API</span> is found.
+ </p></dd><dt id="CONFIGURE-WITH-PLPERL-MESON"><span class="term"><code class="option">-Dplperl={ auto | enabled | disabled }</code></span> <a href="#CONFIGURE-WITH-PLPERL-MESON" class="id_link">#</a></dt><dd><p>
+ Build the <span class="application">PL/Perl</span> server-side language.
+ Defaults to auto.
+ </p></dd><dt id="CONFIGURE-WITH-PLPYTHON-MESON"><span class="term"><code class="option">-Dplpython={ auto | enabled | disabled }</code></span> <a href="#CONFIGURE-WITH-PLPYTHON-MESON" class="id_link">#</a></dt><dd><p>
+ Build the <span class="application">PL/Python</span> server-side language.
+ Defaults to auto.
+ </p></dd><dt id="CONFIGURE-WITH-PLTCL-MESON"><span class="term"><code class="option">-Dpltcl={ auto | enabled | disabled }</code></span> <a href="#CONFIGURE-WITH-PLTCL-MESON" class="id_link">#</a></dt><dd><p>
+ Build the <span class="application">PL/Tcl</span> server-side language.
+ Defaults to auto.
+ </p></dd><dt id="CONFIGURE-WITH-TCL-VERSION-MESON"><span class="term"><code class="option">-Dtcl_version=<em class="replaceable"><code>TCL_VERSION</code></em></code></span> <a href="#CONFIGURE-WITH-TCL-VERSION-MESON" class="id_link">#</a></dt><dd><p>
+ Specifies the Tcl version to use when building PL/Tcl.
+ </p></dd><dt id="CONFIGURE-WITH-ICU-MESON"><span class="term"><code class="option">-Dicu={ auto | enabled | disabled }</code></span> <a href="#CONFIGURE-WITH-ICU-MESON" class="id_link">#</a></dt><dd><p>
+ Build with support for the
+ <span class="productname">ICU</span><a id="id-1.6.4.8.4.4.4.6.2.1.2" class="indexterm"></a>
+ library, enabling use of ICU collation features<span class="phrase"> (see <a class="xref" href="collation.html" title="24.2. Collation Support">Section 24.2</a>)</span>. Defaults to auto and requires the
+ <span class="productname">ICU4C</span> package to be installed. The minimum
+ required version of <span class="productname">ICU4C</span> is currently 4.2.
+ </p></dd><dt id="CONFIGURE-WITH-LLVM-MESON"><span class="term"><code class="option">-Dllvm={ auto | enabled | disabled }</code></span> <a href="#CONFIGURE-WITH-LLVM-MESON" class="id_link">#</a></dt><dd><p>
+ Build with support for <span class="productname">LLVM</span> based
+ <acronym class="acronym">JIT</acronym> compilation<span class="phrase"> (see <a class="xref" href="jit.html" title="Chapter 32. Just-in-Time Compilation (JIT)">Chapter 32</a>)</span>.
+ This requires the <span class="productname">LLVM</span> library to be
+ installed. The minimum required version of
+ <span class="productname">LLVM</span> is currently 3.9. Disabled by
+ default.
+ </p><p>
+ <code class="command">llvm-config</code><a id="id-1.6.4.8.4.4.4.7.2.2.2" class="indexterm"></a>
+ will be used to find the required compilation options.
+ <code class="command">llvm-config</code>, and then
+ <code class="command">llvm-config-$version</code> for all supported versions,
+ will be searched for in your <code class="envar">PATH</code>. If that would not
+ yield the desired program, use <code class="envar">LLVM_CONFIG</code> to specify a
+ path to the correct <code class="command">llvm-config</code>.
+ </p></dd><dt id="CONFIGURE-WITH-LZ4-MESON"><span class="term"><code class="option">-Dlz4={ auto | enabled | disabled }</code></span> <a href="#CONFIGURE-WITH-LZ4-MESON" class="id_link">#</a></dt><dd><p>
+ Build with <span class="productname">LZ4</span> compression support.
+ Defaults to auto.
+ </p></dd><dt id="CONFIGURE-WITH-ZSTD-MESON"><span class="term"><code class="option">-Dzstd={ auto | enabled | disabled }</code></span> <a href="#CONFIGURE-WITH-ZSTD-MESON" class="id_link">#</a></dt><dd><p>
+ Build with <span class="productname">Zstandard</span> compression support.
+ Defaults to auto.
+ </p></dd><dt id="CONFIGURE-WITH-SSL-MESON"><span class="term"><code class="option">-Dssl={ auto | <em class="replaceable"><code>LIBRARY</code></em> }</code>
+ <a id="id-1.6.4.8.4.4.4.10.1.2" class="indexterm"></a>
+ </span> <a href="#CONFIGURE-WITH-SSL-MESON" class="id_link">#</a></dt><dd><p>
+ Build with support for <acronym class="acronym">SSL</acronym> (encrypted) connections.
+ The only <em class="replaceable"><code>LIBRARY</code></em> supported is
+ <code class="option">openssl</code>. This requires the
+ <span class="productname">OpenSSL</span> package to be installed. Building
+ with this will check for the required header files and libraries to
+ make sure that your <span class="productname">OpenSSL</span> installation is
+ sufficient before proceeding. The default for this option is auto.
+ </p></dd><dt id="CONFIGURE-WITH-GSSAPI-MESON"><span class="term"><code class="option">-Dgssapi={ auto | enabled | disabled }</code></span> <a href="#CONFIGURE-WITH-GSSAPI-MESON" class="id_link">#</a></dt><dd><p>
+ Build with support for GSSAPI authentication. MIT Kerberos is required
+ to be installed for GSSAPI. On many systems, the GSSAPI system (a part
+ of the MIT Kerberos installation) is not installed in a location
+ that is searched by default (e.g., <code class="filename">/usr/include</code>,
+ <code class="filename">/usr/lib</code>). In
+ those cases, PostgreSQL will query <code class="command">pkg-config</code> to
+ detect the required compiler and linker options. Defaults to auto.
+ <code class="filename">meson configure</code> will check for the required
+ header files and libraries to make sure that your GSSAPI installation
+ is sufficient before proceeding.
+ </p></dd><dt id="CONFIGURE-WITH-LDAP-MESON"><span class="term"><code class="option">-Dldap={ auto | enabled | disabled }</code></span> <a href="#CONFIGURE-WITH-LDAP-MESON" class="id_link">#</a></dt><dd><p>
+ Build with
+ <acronym class="acronym">LDAP</acronym><a id="id-1.6.4.8.4.4.4.12.2.1.2" class="indexterm"></a>
+ support for authentication and connection parameter lookup (see
+ <span id="INSTALL-LDAP-LINKS-MESON" class="phrase"><a class="xref" href="libpq-ldap.html" title="34.18. LDAP Lookup of Connection Parameters">Section 34.18</a> and
+ <a class="xref" href="auth-ldap.html" title="21.10. LDAP Authentication">Section 21.10</a></span> for more information). On Unix,
+ this requires the <span class="productname">OpenLDAP</span> package to be
+ installed. On Windows, the default <span class="productname">WinLDAP</span>
+ library is used. Defaults to auto. <code class="filename">meson
+ configure</code> will check for the required header files and
+ libraries to make sure that your <span class="productname">OpenLDAP</span>
+ installation is sufficient before proceeding.
+ </p></dd><dt id="CONFIGURE-WITH-PAM-MESON"><span class="term"><code class="option">-Dpam={ auto | enabled | disabled }</code></span> <a href="#CONFIGURE-WITH-PAM-MESON" class="id_link">#</a></dt><dd><p>
+ Build with
+ <acronym class="acronym">PAM</acronym><a id="id-1.6.4.8.4.4.4.13.2.1.2" class="indexterm"></a>
+ (Pluggable Authentication Modules) support. Defaults to auto.
+ </p></dd><dt id="CONFIGURE-WITH-BSD-AUTH-MESON"><span class="term"><code class="option">-Dbsd_auth={ auto | enabled | disabled }</code></span> <a href="#CONFIGURE-WITH-BSD-AUTH-MESON" class="id_link">#</a></dt><dd><p>
+ Build with BSD Authentication support. (The BSD Authentication
+ framework is currently only available on OpenBSD.) Defaults to auto.
+ </p></dd><dt id="CONFIGURE-WITH-SYSTEMD-MESON"><span class="term"><code class="option">-Dsystemd={ auto | enabled | disabled }</code></span> <a href="#CONFIGURE-WITH-SYSTEMD-MESON" class="id_link">#</a></dt><dd><p>
+ Build with support for
+ <span class="application">systemd</span><a id="id-1.6.4.8.4.4.4.15.2.1.2" class="indexterm"></a>
+ service notifications. This improves integration if the server is
+ started under <span class="application">systemd</span> but has no impact
+ otherwise<span class="phrase">; see <a class="xref" href="server-start.html" title="19.3. Starting the Database Server">Section 19.3</a> for more information</span>. Defaults to
+ auto. <span class="application">libsystemd</span> and the associated header
+ files need to be installed to use this option.
+ </p></dd><dt id="CONFIGURE-WITH-BONJOUR-MESON"><span class="term"><code class="option">-Dbonjour={ auto | enabled | disabled }</code></span> <a href="#CONFIGURE-WITH-BONJOUR-MESON" class="id_link">#</a></dt><dd><p>
+ Build with support for Bonjour automatic service discovery. Defaults
+ to auto and requires Bonjour support in your operating system.
+ Recommended on macOS.
+ </p></dd><dt id="CONFIGURE-WITH-UUID-MESON"><span class="term"><code class="option">-Duuid=<em class="replaceable"><code>LIBRARY</code></em></code></span> <a href="#CONFIGURE-WITH-UUID-MESON" class="id_link">#</a></dt><dd><p>
+ Build the <a class="xref" href="uuid-ossp.html" title="F.49. uuid-ossp — a UUID generator">uuid-ossp</a> module
+ (which provides functions to generate UUIDs), using the specified
+ UUID library.<a id="id-1.6.4.8.4.4.4.17.2.1.2" class="indexterm"></a>
+ <em class="replaceable"><code>LIBRARY</code></em> must be one of:
+ </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
+ <code class="option">none</code> to not build the uuid module. This is the default.
+ </p></li><li class="listitem"><p>
+ <code class="option">bsd</code> to use the UUID functions found in FreeBSD,
+ and some other BSD-derived systems
+ </p></li><li class="listitem"><p>
+ <code class="option">e2fs</code> to use the UUID library created by
+ the <code class="literal">e2fsprogs</code> project; this library is present in most
+ Linux systems and in macOS, and can be obtained for other
+ platforms as well
+ </p></li><li class="listitem"><p>
+ <code class="option">ossp</code> to use the <a class="ulink" href="http://www.ossp.org/pkg/lib/uuid/" target="_top">OSSP UUID library</a>
+ </p></li></ul></div></dd><dt id="CONFIGURE-WITH-LIBXML-MESON"><span class="term"><code class="option">-Dlibxml={ auto | enabled | disabled }</code></span> <a href="#CONFIGURE-WITH-LIBXML-MESON" class="id_link">#</a></dt><dd><p>
+ Build with libxml2, enabling SQL/XML support. Defaults to
+ auto. Libxml2 version 2.6.23 or later is required for this feature.
+ </p><p>
+ To use a libxml2 installation that is in an unusual location, you
+ can set <code class="command">pkg-config</code>-related environment
+ variables (see its documentation).
+ </p></dd><dt id="CONFIGURE-WITH-LIBXSLT-MESON"><span class="term"><code class="option">-Dlibxslt={ auto | enabled | disabled }</code></span> <a href="#CONFIGURE-WITH-LIBXSLT-MESON" class="id_link">#</a></dt><dd><p>
+ Build with libxslt, enabling the
+ <a class="xref" href="xml2.html" title="F.50. xml2 — XPath querying and XSLT functionality">xml2</a>
+ module to perform XSL transformations of XML.
+ <code class="option">-Dlibxml</code> must be specified as well. Defaults to
+ auto.
+ </p></dd></dl></div></div><div class="sect3" id="MESON-OPTIONS-ANTI-FEATURES"><div class="titlepage"><div><div><h4 class="title">17.4.3.3. Anti-Features <a href="#MESON-OPTIONS-ANTI-FEATURES" class="id_link">#</a></h4></div></div></div><div class="variablelist"><dl class="variablelist"><dt id="CONFIGURE-READLINE-MESON"><span class="term"><code class="option">-Dreadline={ auto | enabled | disabled }</code></span> <a href="#CONFIGURE-READLINE-MESON" class="id_link">#</a></dt><dd><p>
+ Allows use of the <span class="application">Readline</span> library (and
+ <span class="application">libedit</span> as well). This option defaults to
+ auto and enables command-line editing and history in
+ <span class="application">psql</span> and is strongly recommended.
+ </p></dd><dt id="CONFIGURE-LIBEDIT-PREFERRED-MESON"><span class="term"><code class="option">-Dlibedit_preferred={ true | false }</code></span> <a href="#CONFIGURE-LIBEDIT-PREFERRED-MESON" class="id_link">#</a></dt><dd><p>
+ Setting this to true favors the use of the BSD-licensed
+ <span class="application">libedit</span> library rather than GPL-licensed
+ <span class="application">Readline</span>. This option is significant only
+ if you have both libraries installed; the default is false, that is to
+ use <span class="application">Readline</span>.
+ </p></dd><dt id="CONFIGURE-ZLIB-MESON"><span class="term"><code class="option">-Dzlib={ auto | enabled | disabled }</code></span> <a href="#CONFIGURE-ZLIB-MESON" class="id_link">#</a></dt><dd><p>
+ <a id="id-1.6.4.8.4.5.2.3.2.1.1" class="indexterm"></a>
+ Enables use of the <span class="application">Zlib</span> library.
+ It defaults to auto and enables
+ support for compressed archives in <span class="application">pg_dump</span>,
+ <span class="application">pg_restore</span> and <span class="application">pg_basebackup</span> and is recommended.
+ </p></dd><dt id="CONFIGURE-SPINLOCKS-MESON"><span class="term"><code class="option">-Dspinlocks={ true | false }</code></span> <a href="#CONFIGURE-SPINLOCKS-MESON" class="id_link">#</a></dt><dd><p>
+ This option is set to true by default; setting it to false will
+ allow the build to succeed even if <span class="productname">PostgreSQL</span>
+ has no CPU spinlock support for the platform. The lack of
+ spinlock support will result in very poor performance; therefore,
+ this option should only be changed if the build aborts and
+ informs you that the platform lacks spinlock support. If setting this
+ option to false is required to build <span class="productname">PostgreSQL</span> on
+ your platform, please report the problem to the
+ <span class="productname">PostgreSQL</span> developers.
+ </p></dd><dt id="CONFIGURE-ATOMICS-MESON"><span class="term"><code class="option">-Datomics={ true | false }</code></span> <a href="#CONFIGURE-ATOMICS-MESON" class="id_link">#</a></dt><dd><p>
+ This option is set to true by default; setting it to false will
+ disable use of CPU atomic operations. The option does nothing on
+ platforms that lack such operations. On platforms that do have
+ them, disabling atomics will result in poor performance. Changing
+ this option is only useful for debugging or making performance comparisons.
+ </p></dd></dl></div></div><div class="sect3" id="MESON-OPTIONS-BUILD-PROCESS"><div class="titlepage"><div><div><h4 class="title">17.4.3.4. Build Process Details <a href="#MESON-OPTIONS-BUILD-PROCESS" class="id_link">#</a></h4></div></div></div><div class="variablelist"><dl class="variablelist"><dt id="CONFIGURE-AUTO-FEATURES-MESON"><span class="term"><code class="option">--auto_features={ auto | enabled | disabled }</code></span> <a href="#CONFIGURE-AUTO-FEATURES-MESON" class="id_link">#</a></dt><dd><p>
+ Setting this option allows you to override the value of all
+ <span class="quote">“<span class="quote">auto</span>”</span> features (features that are enabled automatically
+ if the required software is found). This can be useful when you want
+ to disable or enable all the <span class="quote">“<span class="quote">optional</span>”</span> features at once
+ without having to set each of them manually. The default value for
+ this parameter is auto.
+ </p></dd><dt id="CONFIGURE-BACKEND-MESON"><span class="term"><code class="option">--backend=<em class="replaceable"><code>BACKEND</code></em></code></span> <a href="#CONFIGURE-BACKEND-MESON" class="id_link">#</a></dt><dd><p>
+ The default backend Meson uses is ninja and that should suffice for
+ most use cases. However, if you'd like to fully integrate with Visual
+ Studio, you can set the <code class="option">BACKEND</code> to
+ <code class="command">vs</code>.
+ </p></dd><dt id="CONFIGURE-C-ARGS-MESON"><span class="term"><code class="option">-Dc_args=<em class="replaceable"><code>OPTIONS</code></em></code></span> <a href="#CONFIGURE-C-ARGS-MESON" class="id_link">#</a></dt><dd><p>
+ This option can be used to pass extra options to the C compiler.
+ </p></dd><dt id="CONFIGURE-C-LINK-ARGS-MESON"><span class="term"><code class="option">-Dc_link_args=<em class="replaceable"><code>OPTIONS</code></em></code></span> <a href="#CONFIGURE-C-LINK-ARGS-MESON" class="id_link">#</a></dt><dd><p>
+ This option can be used to pass extra options to the C linker.
+ </p></dd><dt id="CONFIGURE-EXTRA-INCLUDE-DIRS-MESON"><span class="term"><code class="option">-Dextra_include_dirs=<em class="replaceable"><code>DIRECTORIES</code></em></code></span> <a href="#CONFIGURE-EXTRA-INCLUDE-DIRS-MESON" class="id_link">#</a></dt><dd><p>
+ <em class="replaceable"><code>DIRECTORIES</code></em> is a comma-separated list of
+ directories that will be added to the list the compiler searches for
+ header files. If you have optional packages (such as GNU
+ <span class="application">Readline</span>) installed in a non-standard
+ location, you have to use this option and probably also the
+ corresponding <code class="option">-Dextra_lib_dirs</code> option.
+ </p><p>
+ Example: <code class="literal">-Dextra_include_dirs=/opt/gnu/include,/usr/sup/include</code>.
+ </p></dd><dt id="CONFIGURE-EXTRA-LIB-DIRS-MESON"><span class="term"><code class="option">-Dextra_lib_dirs=<em class="replaceable"><code>DIRECTORIES</code></em></code></span> <a href="#CONFIGURE-EXTRA-LIB-DIRS-MESON" class="id_link">#</a></dt><dd><p>
+ <em class="replaceable"><code>DIRECTORIES</code></em> is a comma-separated list of
+ directories to search for libraries. You will probably have to use
+ this option (and the corresponding
+ <code class="option">-Dextra_include_dirs</code> option) if you have packages
+ installed in non-standard locations.
+ </p><p>
+ Example: <code class="literal">-Dextra_lib_dirs=/opt/gnu/lib,/usr/sup/lib</code>.
+ </p></dd><dt id="CONFIGURE-SYSTEM-TZDATA-MESON"><span class="term"><code class="option">-Dsystem_tzdata=<em class="replaceable"><code>DIRECTORY</code></em></code>
+ <a id="id-1.6.4.8.4.6.2.7.1.2" class="indexterm"></a>
+ </span> <a href="#CONFIGURE-SYSTEM-TZDATA-MESON" class="id_link">#</a></dt><dd><p>
+ <span class="productname">PostgreSQL</span> includes its own time zone
+ database, which it requires for date and time operations. This time
+ zone database is in fact compatible with the IANA time zone database
+ provided by many operating systems such as FreeBSD, Linux, and
+ Solaris, so it would be redundant to install it again. When this
+ option is used, the system-supplied time zone database in
+ <em class="replaceable"><code>DIRECTORY</code></em> is used instead of the one
+ included in the PostgreSQL source distribution.
+ <em class="replaceable"><code>DIRECTORY</code></em> must be specified as an absolute
+ path. <code class="filename">/usr/share/zoneinfo</code> is a likely directory
+ on some operating systems. Note that the installation routine will
+ not detect mismatching or erroneous time zone data. If you use this
+ option, you are advised to run the regression tests to verify that the
+ time zone data you have pointed to works correctly with
+ <span class="productname">PostgreSQL</span>.
+ </p><a id="id-1.6.4.8.4.6.2.7.2.2" class="indexterm"></a><p>
+ This option is mainly aimed at binary package distributors who know
+ their target operating system well. The main advantage of using this
+ option is that the PostgreSQL package won't need to be upgraded
+ whenever any of the many local daylight-saving time rules change.
+ Another advantage is that PostgreSQL can be cross-compiled more
+ straightforwardly if the time zone database files do not need to be
+ built during the installation.
+ </p></dd><dt id="CONFIGURE-EXTRA-VERSION-MESON"><span class="term"><code class="option">-Dextra_version=<em class="replaceable"><code>STRING</code></em></code></span> <a href="#CONFIGURE-EXTRA-VERSION-MESON" class="id_link">#</a></dt><dd><p>
+ Append <em class="replaceable"><code>STRING</code></em> to the PostgreSQL version
+ number. You can use this, for example, to mark binaries built from
+ unreleased <span class="productname">Git</span> snapshots or containing
+ custom patches with an extra version string, such as a <code class="command">git
+ describe</code> identifier or a distribution package release
+ number.
+ </p></dd><dt id="CONFIGURE-RPATH-MESON"><span class="term"><code class="option">-Drpath={ true | false }</code></span> <a href="#CONFIGURE-RPATH-MESON" class="id_link">#</a></dt><dd><p>
+ This option is set to true by default. If set to false,
+ do not mark <span class="productname">PostgreSQL</span>'s executables
+ to indicate that they should search for shared libraries in the
+ installation's library directory (see <code class="option">--libdir</code>).
+ On most platforms, this marking uses an absolute path to the
+ library directory, so that it will be unhelpful if you relocate
+ the installation later. However, you will then need to provide
+ some other way for the executables to find the shared libraries.
+ Typically this requires configuring the operating system's
+ dynamic linker to search the library directory; see
+ <a class="xref" href="install-post.html#INSTALL-POST-SHLIBS" title="17.5.1. Shared Libraries">Section 17.5.1</a> for more detail.
+ </p></dd><dt id="CONFIGURE-BINARY-NAME-MESON"><span class="term"><code class="option">-D<em class="replaceable"><code>BINARY_NAME</code></em>=<em class="replaceable"><code>PATH</code></em></code></span> <a href="#CONFIGURE-BINARY-NAME-MESON" class="id_link">#</a></dt><dd><p>
+ If a program required to build PostgreSQL (with or without optional
+ flags) is stored at a non-standard path, you can specify it manually
+ to <code class="literal">meson configure</code>. The complete list of programs
+ for which this is supported can be found by running <code class="literal">meson
+ configure</code>. Example:
+</p><pre class="programlisting">meson configure -DBISON=PATH_TO_BISON</pre><p>
+ </p></dd></dl></div></div><div class="sect3" id="MESON-OPTIONS-DOCS"><div class="titlepage"><div><div><h4 class="title">17.4.3.5. Documentation <a href="#MESON-OPTIONS-DOCS" class="id_link">#</a></h4></div></div></div><p>
+ See <a class="xref" href="docguide-toolsets.html" title="J.2. Tool Sets">Section J.2</a> for the tools needed for building
+ the documentation.
+ </p><div class="variablelist"><dl class="variablelist"><dt id="CONFIGURE-DOCS-MESON"><span class="term"><code class="option">-Ddocs={ auto | enabled | disabled }</code></span> <a href="#CONFIGURE-DOCS-MESON" class="id_link">#</a></dt><dd><p>
+ Enables building the documentation in <acronym class="acronym">HTML</acronym> and
+ <acronym class="acronym">man</acronym> format. It defaults to auto.
+ </p></dd><dt id="CONFIGURE-DOCS-PDF-MESON"><span class="term"><code class="option">-Ddocs_pdf={ auto | enabled | disabled }</code></span> <a href="#CONFIGURE-DOCS-PDF-MESON" class="id_link">#</a></dt><dd><p>
+ Enables building the documentation in <acronym class="acronym">PDF</acronym>
+ format. It defaults to auto.
+ </p></dd><dt id="CONFIGURE-DOCS-HTML-STYLE"><span class="term"><code class="option">-Ddocs_html_style={ simple | website }</code></span> <a href="#CONFIGURE-DOCS-HTML-STYLE" class="id_link">#</a></dt><dd><p>
+ Controls which <acronym class="acronym">CSS</acronym> stylesheet is used. The default
+ is <code class="literal">simple</code>. If set to <code class="literal">website</code>,
+ the HTML documentation will reference the stylesheet for <a class="ulink" href="https://www.postgresql.org/docs/current/" target="_top">postgresql.org</a>.
+ </p></dd></dl></div></div><div class="sect3" id="MESON-OPTIONS-MISC"><div class="titlepage"><div><div><h4 class="title">17.4.3.6. Miscellaneous <a href="#MESON-OPTIONS-MISC" class="id_link">#</a></h4></div></div></div><div class="variablelist"><dl class="variablelist"><dt id="CONFIGURE-PGPORT-MESON"><span class="term"><code class="option">-Dpgport=<em class="replaceable"><code>NUMBER</code></em></code></span> <a href="#CONFIGURE-PGPORT-MESON" class="id_link">#</a></dt><dd><p>
+ Set <em class="replaceable"><code>NUMBER</code></em> as the default port number for
+ server and clients. The default is 5432. The port can always
+ be changed later on, but if you specify it here then both
+ server and clients will have the same default compiled in,
+ which can be very convenient. Usually the only good reason
+ to select a non-default value is if you intend to run multiple
+ <span class="productname">PostgreSQL</span> servers on the same machine.
+ </p></dd><dt id="CONFIGURE-KRB-SRVNAM-MESON"><span class="term"><code class="option">-Dkrb_srvnam=<em class="replaceable"><code>NAME</code></em></code></span> <a href="#CONFIGURE-KRB-SRVNAM-MESON" class="id_link">#</a></dt><dd><p>
+ The default name of the Kerberos service principal used
+ by GSSAPI.
+ <code class="literal">postgres</code> is the default. There's usually no
+ reason to change this unless you are building for a Windows
+ environment, in which case it must be set to upper case
+ <code class="literal">POSTGRES</code>.
+ </p></dd><dt id="CONFIGURE-SEGSIZE-MESON"><span class="term"><code class="option">-Dsegsize=<em class="replaceable"><code>SEGSIZE</code></em></code></span> <a href="#CONFIGURE-SEGSIZE-MESON" class="id_link">#</a></dt><dd><p>
+ Set the <em class="firstterm">segment size</em>, in gigabytes. Large tables are
+ divided into multiple operating-system files, each of size equal
+ to the segment size. This avoids problems with file size limits
+ that exist on many platforms. The default segment size, 1 gigabyte,
+ is safe on all supported platforms. If your operating system has
+ <span class="quote">“<span class="quote">largefile</span>”</span> support (which most do, nowadays), you can use
+ a larger segment size. This can be helpful to reduce the number of
+ file descriptors consumed when working with very large tables.
+ But be careful not to select a value larger than is supported
+ by your platform and the file systems you intend to use. Other
+ tools you might wish to use, such as <span class="application">tar</span>, could
+ also set limits on the usable file size.
+ It is recommended, though not absolutely required, that this value
+ be a power of 2.
+ </p></dd><dt id="CONFIGURE-BLOCKSIZE-MESON"><span class="term"><code class="option">-Dblocksize=<em class="replaceable"><code>BLOCKSIZE</code></em></code></span> <a href="#CONFIGURE-BLOCKSIZE-MESON" class="id_link">#</a></dt><dd><p>
+ Set the <em class="firstterm">block size</em>, in kilobytes. This is the unit
+ of storage and I/O within tables. The default, 8 kilobytes,
+ is suitable for most situations; but other values may be useful
+ in special cases.
+ The value must be a power of 2 between 1 and 32 (kilobytes).
+ </p></dd><dt id="CONFIGURE-WAL-BLOCKSIZE-MESON"><span class="term"><code class="option">-Dwal_blocksize=<em class="replaceable"><code>BLOCKSIZE</code></em></code></span> <a href="#CONFIGURE-WAL-BLOCKSIZE-MESON" class="id_link">#</a></dt><dd><p>
+ Set the <em class="firstterm">WAL block size</em>, in kilobytes. This is the unit
+ of storage and I/O within the WAL log. The default, 8 kilobytes,
+ is suitable for most situations; but other values may be useful
+ in special cases.
+ The value must be a power of 2 between 1 and 64 (kilobytes).
+ </p></dd></dl></div></div><div class="sect3" id="MESON-OPTIONS-DEVEL"><div class="titlepage"><div><div><h4 class="title">17.4.3.7. Developer Options <a href="#MESON-OPTIONS-DEVEL" class="id_link">#</a></h4></div></div></div><p>
+ Most of the options in this section are only of interest for
+ developing or debugging <span class="productname">PostgreSQL</span>.
+ They are not recommended for production builds, except
+ for <code class="option">--debug</code>, which can be useful to enable
+ detailed bug reports in the unlucky event that you encounter a bug.
+ On platforms supporting DTrace, <code class="option">-Ddtrace</code>
+ may also be reasonable to use in production.
+ </p><p>
+ When building an installation that will be used to develop code inside
+ the server, it is recommended to use at least the <code class="option">--buildtype=debug</code>
+ and <code class="option">-Dcassert</code> options.
+ </p><div class="variablelist"><dl class="variablelist"><dt id="CONFIGURE-BUILDTYPE-MESON"><span class="term"><code class="option">--buildtype=<em class="replaceable"><code>BUILDTYPE</code></em></code></span> <a href="#CONFIGURE-BUILDTYPE-MESON" class="id_link">#</a></dt><dd><p>
+ This option can be used to specify the buildtype to use; defaults to
+ <code class="option">debugoptimized</code>. If you'd like finer control on the debug
+ symbols and optimization levels than what this option provides, you
+ can refer to the <code class="option">--debug</code> and
+ <code class="option">--optimization</code> flags.
+ </p><p>
+ The following build types are generally used: <code class="option">plain</code>,
+ <code class="option">debug</code>, <code class="option">debugoptimized</code> and
+ <code class="option">release</code>. More information about them can be found in
+ the <a class="ulink" href="https://mesonbuild.com/Running-Meson.html#configuring-the-build-directory" target="_top">Meson
+ documentation</a>.
+ </p></dd><dt id="CONFIGURE-DEBUG-MESON"><span class="term"><code class="option">--debug</code></span> <a href="#CONFIGURE-DEBUG-MESON" class="id_link">#</a></dt><dd><p>
+ Compiles all programs and libraries with debugging symbols. This
+ means that you can run the programs in a debugger to analyze
+ problems. This enlarges the size of the installed executables
+ considerably, and on non-GCC compilers it usually also disables
+ compiler optimization, causing slowdowns. However, having the symbols
+ available is extremely helpful for dealing with any problems that
+ might arise. Currently, this option is recommended for production
+ installations only if you use GCC. But you should always have it on
+ if you are doing development work or running a beta version.
+ </p></dd><dt id="CONFIGURE-OPTIMIZATION-MESON"><span class="term"><code class="option">--optimization</code>=<em class="replaceable"><code>LEVEL</code></em></span> <a href="#CONFIGURE-OPTIMIZATION-MESON" class="id_link">#</a></dt><dd><p>
+ Specify the optimization level. <code class="option">LEVEL</code> can be set to any of {0,g,1,2,3,s}.
+ </p></dd><dt id="CONFIGURE-WERROR-MESON"><span class="term"><code class="option">--werror</code></span> <a href="#CONFIGURE-WERROR-MESON" class="id_link">#</a></dt><dd><p>
+ Setting this option asks the compiler to treat warnings as
+ errors. This can be useful for code development.
+ </p></dd><dt id="CONFIGURE-CASSERT-MESON"><span class="term"><code class="option">-Dcassert={ true | false }</code></span> <a href="#CONFIGURE-CASSERT-MESON" class="id_link">#</a></dt><dd><p>
+ Enables <em class="firstterm">assertion</em> checks in the server, which
+ test for many <span class="quote">“<span class="quote">cannot happen</span>”</span> conditions. This is
+ invaluable for code development purposes, but the tests slow down the
+ server significantly. Also, having the tests turned on won't
+ necessarily enhance the stability of your server! The assertion
+ checks are not categorized for severity, and so what might be a
+ relatively harmless bug will still lead to server restarts if it
+ triggers an assertion failure. This option is not recommended for
+ production use, but you should have it on for development work or when
+ running a beta version.
+ </p></dd><dt id="CONFIGURE-TAP-TESTS-MESON"><span class="term"><code class="option">-Dtap_tests={ auto | enabled | disabled }</code></span> <a href="#CONFIGURE-TAP-TESTS-MESON" class="id_link">#</a></dt><dd><p>
+ Enable tests using the Perl TAP tools. Defaults to auto and requires
+ a Perl installation and the Perl module <code class="literal">IPC::Run</code>.
+ <span class="phrase">See <a class="xref" href="regress-tap.html" title="33.4. TAP Tests">Section 33.4</a> for more information.</span>
+ </p></dd><dt id="CONFIGURE-PG-TEST-EXTRA-MESON"><span class="term"><code class="option">-DPG_TEST_EXTRA=<em class="replaceable"><code>TEST_SUITES</code></em></code></span> <a href="#CONFIGURE-PG-TEST-EXTRA-MESON" class="id_link">#</a></dt><dd><p>
+ Enable test suites which require special software to run. This option
+ accepts arguments via a whitespace-separated list. See <a class="xref" href="regress-run.html#REGRESS-ADDITIONAL" title="33.1.3. Additional Test Suites">Section 33.1.3</a> for details.
+ </p></dd><dt id="CONFIGURE-B-COVERAGE-MESON"><span class="term"><code class="option">-Db_coverage={ true | false }</code></span> <a href="#CONFIGURE-B-COVERAGE-MESON" class="id_link">#</a></dt><dd><p>
+ If using GCC, all programs and libraries are compiled with
+ code coverage testing instrumentation. When run, they
+ generate files in the build directory with code coverage
+ metrics.
+ <span class="phrase">See <a class="xref" href="regress-coverage.html" title="33.5. Test Coverage Examination">Section 33.5</a>
+ for more information.</span> This option is for use only with GCC
+ and when doing development work.
+ </p></dd><dt id="CONFIGURE-DTRACE-MESON"><span class="term"><code class="option">-Ddtrace={ auto | enabled | disabled }</code></span> <a href="#CONFIGURE-DTRACE-MESON" class="id_link">#</a></dt><dd><p>
+ <a id="id-1.6.4.8.4.9.4.9.2.1.1" class="indexterm"></a>
+ Enabling this compiles <span class="productname">PostgreSQL</span> with support for the
+ dynamic tracing tool DTrace.
+ <span class="phrase">See <a class="xref" href="dynamic-trace.html" title="28.5. Dynamic Tracing">Section 28.5</a>
+ for more information.</span>
+ </p><p>
+ To point to the <code class="command">dtrace</code> program, the
+ <code class="option">DTRACE</code> option can be set. This
+ will often be necessary because <code class="command">dtrace</code> is
+ typically installed under <code class="filename">/usr/sbin</code>,
+ which might not be in your <code class="envar">PATH</code>.
+ </p></dd><dt id="CONFIGURE-SEGSIZE-BLOCKS-MESON"><span class="term"><code class="option">-Dsegsize_blocks=SEGSIZE_BLOCKS</code></span> <a href="#CONFIGURE-SEGSIZE-BLOCKS-MESON" class="id_link">#</a></dt><dd><p>
+ Specify the relation segment size in blocks. If both
+ <code class="option">-Dsegsize</code> and this option are specified, this option
+ wins.
+
+ This option is only for developers, to test segment related code.
+ </p></dd></dl></div></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="install-make.html" title="17.3. Building and Installation with Autoconf and Make">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="installation.html" title="Chapter 17. Installation from Source Code">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="install-post.html" title="17.5. Post-Installation Setup">Next</a></td></tr><tr><td width="40%" align="left" valign="top">17.3. Building and Installation with Autoconf and Make </td><td width="20%" align="center"><a accesskey="h" href="index.html" title="PostgreSQL 16.2 Documentation">Home</a></td><td width="40%" align="right" valign="top"> 17.5. Post-Installation Setup</td></tr></table></div></body></html> \ No newline at end of file