/** @page architecture Software architecture

\section Overview

<p>
Player is composed primarily of 5 libraries :
- @ref libplayercommon (C): Error reporting facilities
- @ref libplayercore (C++): Basic messaging and queueing functionality,
  support for loading plugins, parsing configuration files
- @ref libplayerdrivers (C++): The drivers that are included with the
  Player distribution (and which were compiled)
- @ref libplayertcp (C++): Support for TCP client/server transport
- @ref libplayerinterface (C++): Support for interface parsing and XDR data marshaling
</p>

<p>
These libraries constitute the fundamental functionality of Player.  In a
way, the commonly-used @ref util_player is just a short (< 300 lines)
example of how to use these libraries.  Other uses are possible, and the
libraries have designed with reuse in mind.
</p>

\section pkgconfigusage Compiling and linking

<p>
All Player libraries are installed with <b>pkg-config</b> meta-data files
that detail how to compile and link against them.  You should <b>always</b>
use pkg-config to build applications that use these libraries, in
order to correctly handle compiler/linker paths and dependencies.  The
pkg-config name for each library is the library's name without the
<b>lib</b> prefix.  For example, to build against @ref libplayercore, you
would do something like:</p>
<p><tt>$ g++ `pkg-config --cflags playercore` -o myprogram myprogram.cc `pkg-config --libs playercore`</tt></p>
<p>
If pkg-config can't find Player libraries, read @ref pkgconfiginstall.
</p>

*/
