/**
@file README.TXT

@mainpage dlrThread Utility Library

@section intro_sec Introduction

This library is built on top of boost::thread.  The idea is to provide
some high level abstractions such as shared FIFOs and monitor objects
so that the user doesn't have to think at the level of locks and
mutexes.  The current version number is shown in file VERSION.TXT, and
recent changes can be seen in the file RELEASE_NOTES.TXT.

@section credits_sec Credits

Please see the file CONTRIBUTORS.TXT in this directory.

@section contact_sec Contact

Bugfixes and patches welcome!  Please see the file LICENSE.TXT in
this directory for up-to-date contact information.

@section license_sec License

Please see the file LICENSE.TXT in this directory.

@section platform_sec Platform

This library is in regular use under Linux (32- & 64-bit), and
not-so-regular use under Windows (32-bit).  It should be portable
to any platform supporting ISO C++.

@section status_sec Status

This is a growing library.  Allthough efforts will be made to maintain
a consistent interface, some changes are inevitable.  Please plan
accordingly.

@section dependencies_sec Dependencies

In order to build this library, you must first install the following
libraries:

  dlrCommon
  dlrPortability
  dlrUtilities
  boost::thread

In order to build the unit tests for this library, you must also install the following libraries:

  dlrTest
  dlrRandom

Boost::thread is available from http://www.boost.org.  You should be
able to get dlrRandom, dlrTest, dlrPortability, dlrUtilities, and
dlrCommon from the same place you got this library.  Note that these
libriaries, dlrRandom in particular, may have other dependencies.  In
particular, as of version 2.0, dlrRandom depends on lapack, blas, and
(possibly) g2c.

Please see the Installation section for an important note about
boost::thread version when building under visual studio on Windows.

@section installation_sec Installation

@subsection visual_studio Visual Studio

If you're building under Visual C++, load the solution file:

  ./visualc/dlrThread.sln

Note that the visual studio build files have the boost::threads
version number hardcoded into their include path.  If you are using a
different version of boost::thread than I used to create the build
files, you'll have to manually edit this include path.  Do this in
visual studio by right clicking on the "dlrThread" (and
"dlrThreadTest") line(s) in the solution explorer pane, selecting
"Properties" in the resulting context menu.  This will open a dialog
window.  Go to the "C/C++" category, select the "General" tab, and
then edit the "Additional Include Directories" field.

Building this file will put libraries in 

  "C:\Program Files\dlr_libs\{Release,Debug}"

and put include files in 

  "C:\Program Files\dlr_libs\include"

You can override these default installation locations from within
visual studio.

NOTE: Microsoft's compiler considers much of the C++ Standard Library
to be deprecated.  Building this code under recent versions of VC++
generates lots of warnings telling you to use the use the confusingly
named "Safe Standard C++ Library," which isn't standard at all, and as
far as I know isn't portable to any other platforms.  It's possible to
disable these warnings.  I encourage you to do so by adding
"/D_CRT_SECURE_NO_DEPRECATE" and "/D_SCL_SECURE_NO_DEPRECATE" to the
compiler command line via the "properties" dialog for the .vcproj file
within Visual Studio.  I've done this for the .vcproj files included
with dlr_libs, but you may find these warnings popping up in your own
code when you include dlr_libs header files.  Don't be fooled.

Please be aware that I hardly ever use windows, so the .sln/.vcproj
files are usually a little out of date.  I occasionally check that
friends who use these libraries under windows are still happy, but I
don't get patches too often.  Let me know if you have any trouble, and
please feel free to email with updates.  Also note that the .vcproj
files are all configured to build multi-threaded code.  This may cause
some trouble if you're linking with projects that use single threaded
code.  See the code generation page of the project properties dialog
to change this.

@subsection autotools GNU Autotools

On every other platform, building and installing is done via GNU
Autotools.  If you're building from a tarball, the simplest
possible version looks like this:

@code
> tar -xvf dlrthread-x.y.z.tar.gz
> cd dlrthread-x.y.z
> ./configure
> make
> make install
@endcode

If you're using the source files from subversion, you need to add a step:

@code
> [get source from svn]
> ./bootstrap
> ./configure
> make
> make install
@endcode

Of course, you may want to specify an installation directory:

@code
> [get source from cvs and run ./bootstrap, or unpack tarball]
> ./configure --prefix=/home/jfisher/software
> make
> make install
@endcode

Or some compiler options:

@code
> [get source from cvs and run ./bootstrap, or unpack tarball]
> env CXXFLAGS="-g -Wall" ./configure \
    --prefix=/home/jfisher/software
> make
> make install
@endcode

For more information on configure options:

@code
> ./configure --help
@endcode

Thanks,
David LaRose
**/
