<!-- $PostgreSQL: pgsql/doc/src/sgml/ref/pg_config-ref.sgml,v 1.28 2008/02/18 14:51:48 petere Exp $ -->

<refentry id="app-pgconfig">
 <refmeta>
  <refentrytitle id="app-pgconfig-title">pg_config</refentrytitle>
  <manvolnum>1</manvolnum>
  <refmiscinfo>Application</refmiscinfo>
 </refmeta>

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

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

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

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


 <refsect1>
  <title>Options</title>

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

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

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

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

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

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

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

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

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

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

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

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

    <varlistentry>
     <term><option>--configure</option></>
     <listitem>
      <para>
       Print the options that were given to the <filename>configure</>
       script when <productname>PostgreSQL</> 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></>
     <listitem>
      <para>
       Print the value of the <varname>CC</varname> variable that was used for building
       <productname>PostgreSQL</>.  This shows the C compiler used.
      </para>
     </listitem>
    </varlistentry>

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

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

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

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

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

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

    <varlistentry>
     <term><option>--version</option></>
     <listitem>
      <para>
       Print the version of <productname>PostgreSQL</>.
      </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 option <option>--includedir-server</option> was new in
   <productname>PostgreSQL</> 7.2.  In prior releases, the server include files were
   installed in the same location as the client headers, which could
   be queried with the option <option>--includedir</option>.  To make your
   package handle both cases, try the newer option first and test the
   exit status to see whether it succeeded.
  </para>

  <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> are new in <productname>PostgreSQL</> 8.1.
   The option <option>--htmldir</option> is new in <productname>PostgreSQL</> 8.4.
  </para>

  <para>
   In releases prior to <productname>PostgreSQL</> 7.1, before
   <command>pg_config</command> came to be, a method for finding the
   equivalent configuration information did not exist.
  </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>
