<!--
doc/src/sgml/ref/pg_config-ref.sgml
PostgreSQL documentation
-->

<refentry id="app-pgconfig">
 <indexterm zone="app-pgconfig">
  <primary>pg_config</primary>
 </indexterm>

 <refmeta>
  <refentrytitle><application>pg_config</application></refentrytitle>
  <manvolnum>1</manvolnum>
  <refmiscinfo>Application</refmiscinfo>
 </refmeta>

 <refnamediv>
  <refname>pg_config</refname>
  <refpurpose>retrieve information about the installed version of <productname>PostgreSQL</productname></refpurpose>
 </refnamediv>

 <refsynopsisdiv>
  <cmdsynopsis>
   <command>pg_config</command>
   <arg rep="repeat"><replaceable>option</replaceable></arg>
  </cmdsynopsis>
 </refsynopsisdiv>

 <refsect1>
  <title>Description</title>
  <para>
   The <application>pg_config</application> utility prints configuration parameters
   of the currently installed version of <productname>PostgreSQL</productname>. It is
   intended, for example, to be used by software packages that want to interface
   to <productname>PostgreSQL</productname> to facilitate finding the required header files
   and libraries.
  </para>
 </refsect1>


 <refsect1>
  <title>Options</title>

  <para>
   To use <application>pg_config</application>, supply one or more of the following
   options:
   <variablelist>
    <varlistentry>
     <term><option>--bindir</option></term>
     <listitem>
      <para>
       Print the location of user executables. Use this, for example, to find
       the <command>psql</command> program. This is normally also the location
       where the <filename>pg_config</filename> program resides.
      </para>
     </listitem>
    </varlistentry>

    <varlistentry>
     <term><option>--docdir</option></term>
     <listitem>
      <para>
       Print the location of documentation files.
      </para>
     </listitem>
    </varlistentry>

    <varlistentry>
     <term><option>--htmldir</option></term>
     <listitem>
      <para>
       Print the location of HTML documentation files.
      </para>
     </listitem>
    </varlistentry>

    <varlistentry>
     <term><option>--includedir</option></term>
     <listitem>
      <para>
       Print the location of C header files of the client interfaces.
      </para>
     </listitem>
    </varlistentry>

    <varlistentry>
     <term><option>--pkgincludedir</option></term>
     <listitem>
      <para>
       Print the location of other C header files.
      </para>
     </listitem>
    </varlistentry>

    <varlistentry>
     <term><option>--includedir-server</option></term>
     <listitem>
      <para>
       Print the location of C header files for server programming.
      </para>
     </listitem>
    </varlistentry>

    <varlistentry>
     <term><option>--libdir</option></term>
     <listitem>
      <para>
       Print the location of object code libraries.
      </para>
     </listitem>
    </varlistentry>

    <varlistentry>
     <term><option>--pkglibdir</option></term>
     <listitem>
      <para>
       Print the location of dynamically loadable modules, or where
       the server would search for them.  (Other
       architecture-dependent data files might also be installed in this
       directory.)
      </para>
     </listitem>
    </varlistentry>

    <varlistentry>
     <term><option>--localedir</option></term>
     <listitem>
      <para>
       Print the location of locale support files.  (This will be an empty
       string if locale support was not configured when
       <productname>PostgreSQL</productname> was built.)
      </para>
     </listitem>
    </varlistentry>

    <varlistentry>
     <term><option>--mandir</option></term>
     <listitem>
      <para>
       Print the location of manual pages.
      </para>
     </listitem>
    </varlistentry>

    <varlistentry>
     <term><option>--sharedir</option></term>
     <listitem>
      <para>
       Print the location of architecture-independent support files.
      </para>
     </listitem>
    </varlistentry>

    <varlistentry>
     <term><option>--sysconfdir</option></term>
     <listitem>
      <para>
       Print the location of system-wide configuration files.
      </para>
     </listitem>
    </varlistentry>

    <varlistentry>
     <term><option>--pgxs</option></term>
     <listitem>
      <para>
       Print the location of extension makefiles.
     </para>
     </listitem>
    </varlistentry>

    <varlistentry>
     <term><option>--configure</option></term>
     <listitem>
      <para>
       Print the options that were given to the <filename>configure</filename>
       script when <productname>PostgreSQL</productname> was configured for building.
       This can be used to reproduce the identical configuration, or
       to find out with what options a binary package was built. (Note
       however that binary packages often contain vendor-specific custom
       patches.)  See also the examples below.
      </para>
     </listitem>
    </varlistentry>

    <varlistentry>
     <term><option>--cc</option></term>
     <listitem>
      <para>
       Print the value of the <varname>CC</varname> variable that was used for building
       <productname>PostgreSQL</productname>.  This shows the C compiler used.
      </para>
     </listitem>
    </varlistentry>

    <varlistentry>
     <term><option>--cppflags</option></term>
     <listitem>
      <para>
       Print the value of the <varname>CPPFLAGS</varname> variable that was used for building
       <productname>PostgreSQL</productname>.  This shows C compiler switches needed
       at preprocessing time (typically, <literal>-I</literal> switches).
      </para>
     </listitem>
    </varlistentry>

    <varlistentry>
     <term><option>--cflags</option></term>
     <listitem>
      <para>
       Print the value of the <varname>CFLAGS</varname> variable that was used for building
       <productname>PostgreSQL</productname>.  This shows C compiler switches.
      </para>
     </listitem>
    </varlistentry>

    <varlistentry>
     <term><option>--cflags_sl</option></term>
     <listitem>
      <para>
       Print the value of the <varname>CFLAGS_SL</varname> variable that was used for building
       <productname>PostgreSQL</productname>.  This shows extra C compiler switches
       used for building shared libraries.
      </para>
     </listitem>
    </varlistentry>

    <varlistentry>
     <term><option>--ldflags</option></term>
     <listitem>
      <para>
       Print the value of the <varname>LDFLAGS</varname> variable that was used for building
       <productname>PostgreSQL</productname>.  This shows linker switches.
      </para>
     </listitem>
    </varlistentry>

    <varlistentry>
     <term><option>--ldflags_ex</option></term>
     <listitem>
      <para>
       Print the value of the <varname>LDFLAGS_EX</varname> variable that was used for building
       <productname>PostgreSQL</productname>.  This shows linker switches
       used for building executables only.
      </para>
     </listitem>
    </varlistentry>

    <varlistentry>
     <term><option>--ldflags_sl</option></term>
     <listitem>
      <para>
       Print the value of the <varname>LDFLAGS_SL</varname> variable that was used for building
       <productname>PostgreSQL</productname>.  This shows linker switches
       used for building shared libraries only.
      </para>
     </listitem>
    </varlistentry>

    <varlistentry>
     <term><option>--libs</option></term>
     <listitem>
      <para>
       Print the value of the <varname>LIBS</varname> variable that was used for building
       <productname>PostgreSQL</productname>.  This normally contains <literal>-l</literal>
       switches for external libraries linked into <productname>PostgreSQL</productname>.
      </para>
     </listitem>
    </varlistentry>

    <varlistentry>
     <term><option>--version</option></term>
     <listitem>
      <para>
       Print the version of <productname>PostgreSQL</productname>.
      </para>
     </listitem>
    </varlistentry>

    <varlistentry>
     <term><option>-?</option></term>
     <term><option>--help</option></term>
      <listitem>
       <para>
        Show help about <application>pg_config</application> command line
        arguments, and exit.
       </para>
      </listitem>
     </varlistentry>
   </variablelist>

   If more than one option is given, the information is printed in that order,
   one item per line.  If no options are given, all available information
   is printed, with labels.
  </para>
 </refsect1>


 <refsect1>
  <title>Notes</title>

  <para>
   The options <option>--docdir</option>, <option>--pkgincludedir</option>,
   <option>--localedir</option>, <option>--mandir</option>,
   <option>--sharedir</option>, <option>--sysconfdir</option>,
   <option>--cc</option>, <option>--cppflags</option>,
   <option>--cflags</option>, <option>--cflags_sl</option>,
   <option>--ldflags</option>, <option>--ldflags_sl</option>,
   and <option>--libs</option> were added in <productname>PostgreSQL</productname> 8.1.
   The option <option>--htmldir</option> was added in <productname>PostgreSQL</productname> 8.4.
   The option <option>--ldflags_ex</option> was added in <productname>PostgreSQL</productname> 9.0.
  </para>
 </refsect1>


 <refsect1>
  <title>Example</title>

  <para>
   To reproduce the build configuration of the current PostgreSQL
   installation, run the following command:
<programlisting>
eval ./configure `pg_config --configure`
</programlisting>
   The output of <literal>pg_config --configure</literal> contains
   shell quotation marks so arguments with spaces are represented
   correctly.  Therefore, using <literal>eval</literal> is required
   for proper results.
  </para>
 </refsect1>

</refentry>
