%% LyX 1.3 created this file.  For more info, see http://www.lyx.org/.
%% Do not edit unless you really know what you are doing.
\documentclass[english]{article}
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\usepackage{geometry}
\geometry{verbose,letterpaper,lmargin=0.75in,rmargin=0.75in}
\usepackage{array}

\makeatletter

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% LyX specific LaTeX commands.
%% Bold symbol macro for standard LaTeX users
\newcommand{\boldsymbol}[1]{\mbox{\boldmath $#1$}}

%% Because html converters don't know tabularnewline
\providecommand{\tabularnewline}{\\}

\usepackage{babel}
\makeatother
\begin{document}

\title{Directory Structure of dbgroup-utils}


\author{Chavdar Botev}


\date{24 April 2004}

\maketitle

\section{Top-level Directories}

The following is the list of the repository-wide static directories.

\begin{tabular}{|c|p{4in}|}
\hline 
\textbf{Directory}&
\textbf{Description}\tabularnewline
\hline
\hline 
doc/&
Contains documentation files about dbgroup-utils\tabularnewline
\hline 
make\_templates/&
Contains templates for configuring the build process using make\tabularnewline
\hline 
platforms/&
Contains OS-dependent files\tabularnewline
\hline
\end{tabular}

The following is the list of library directories in dbgroup-utils

\begin{tabular}{|c|p{4in}|}
\hline 
\textbf{Directory}&
\textbf{Description}\tabularnewline
\hline
\hline 
corelib/&
Contains the \texttt{corelib} library that provides core classes for
exception handling, memory management, and platform-independent threading \tabularnewline
\hline 
datastructs/&
Contains the \texttt{datastructs} library that defines useful data
structures\tabularnewline
\hline 
alg/&
Contains the \texttt{alg} library that provides useful algorithms,
e.g. for string and file handling.\tabularnewline
\hline 
components/&
Contains the \texttt{components} library that defines the abstract
component class and provides some useful components.\tabularnewline
\hline 
network/&
Contains the \texttt{network} library that platform independent classes
for network communication.\tabularnewline
\hline
\end{tabular}

The following is the list of the directories automatically generated
by \texttt{make}.

\begin{tabular}{|c|p{4in}|}
\hline 
\textbf{Directory}&
\textbf{Description}\tabularnewline
\hline
\hline 
build/&
Contains temporary files generated during the build process\tabularnewline
\hline 
distrib/&
Contains the final result of the build process for each library and
executable built by dbgroup-utils\tabularnewline
\hline
\end{tabular}

The following is the list of file is the root dbgroup-utils directory.

\begin{tabular}{|c|p{4in}|}
\hline 
\textbf{Directory}&
\textbf{Description}\tabularnewline
\hline
\hline 
AUTHORS&
Contains the people who have contributed to dbgroup-utils\tabularnewline
\hline 
COPYING&
Contains the license of dbgroup-utils\tabularnewline
\hline 
INSTALL&
Contains directions for the installation of dbgroup-utils\tabularnewline
\hline 
NEWS&
Contains news about dbgroup-utils\tabularnewline
\hline 
README&
Contains the general information about dbgroup-utils\tabularnewline
\hline 
ChangeLog&
Contains changes introuduced in each new version of dbgroup-utils\tabularnewline
\hline 
config.h.in&
Template for the file config.h where configure stores conditional
variable describing the current configuration\tabularnewline
\hline 
configure.ac&
The template used by autoconf to generate the configure script\tabularnewline
\hline 
Makefile.am&
A template used to generate the root Makefile that builds all libraries
and executables in the project\tabularnewline
\hline 
Makefile.common.in&
This file is used to generate Makefile.common that is used by most
Makefiles\tabularnewline
\hline 
Makefile.bin.common.in&
This file is used to generate Makefile.bin.common that is shared by
all projects building an executable\tabularnewline
\hline 
Makefile.doc.common.in&
This file is used to generate Makefile.doc.common that is shared by
all Makefiles in documentation directories\tabularnewline
\hline 
Makefile.lib.common.in&
This file is used to generate Makefile.lib.common that is shared by
all projects building a library\tabularnewline
\hline 
Makerules.gen&
This file contains rules to compile all source files in a directory\tabularnewline
\hline
\end{tabular}


\section{The doc/ Directory}

This directory contains general documentation about the dbgroup-utils
repository. It contains the followin subdirectories.

\begin{tabular}{|c|p{3.5in}|}
\hline 
\textbf{Sub-directory}&
\textbf{Description}\tabularnewline
\hline
\hline 
BuildGuide/&
A guide for the build process of dbgroup-utils\tabularnewline
\hline 
CvsHowTo/&
A short guide for using CVS on {*}nix and Windows\tabularnewline
\hline 
DirectoryStructure/&
Contains this document\tabularnewline
\hline 
ProgrammingCommandments/&
Contains the description of the coding style used in dbgroup-utils\tabularnewline
\hline
\end{tabular}


\section{The make\_templates/ Directory}

The make\_templates/ directory contains templates of files that can
be used for customizing the build process on based on \texttt{make}.

\begin{tabular}{|c|p{4in}|}
\hline 
\textbf{File}&
\textbf{Description}\tabularnewline
\hline
\hline 
Makefile.proj.am&
A template for the Makefile.am file in root project directory (both
library and executable projects)\tabularnewline
\hline 
doxy.cfg.in&
A template for a configuration file for Doxygen (API documentation
generation)\tabularnewline
\hline 
Makefile.bin.am&
A template for the Makefile.am file in the src/ directory of a project
that builds an executable\tabularnewline
\hline 
Makefile.lib.am&
A template for the Makefile.am file in the src/ directory of a project
that builds a library\tabularnewline
\hline 
Makefile.dir.am&
A template for the Makefile.am file in a directory under the src/
directory for executable or library project\tabularnewline
\hline 
Makefile.copydoc.am&
A tempalte for the Makefile.am file in a documentation directory;
this file copies all the files from the documentation directory to
the project's distribution directory\tabularnewline
\hline 
Makefile.pdfdoc.am&
A template for the Makefile.am file in a documentation directory;
this file converts all .tex files in this directory to PDF and stores
the resulting files in the project's distribution directory\tabularnewline
\hline
\end{tabular}


\section{The platforms/ Directory}

The platforms/ directory contains files that are specific to a particular
platform (OS). On {*}nix platforms the name of the platform is determined
by the result of \texttt{uname -s}. The directory for the Windows
platform is \texttt{win32/}. Additionally, there is an \texttt{include/}
directory which contains all the header files of external libraries
used by dbgroup-utils.

Most generally, every platform directory contains two sub-directories:
\texttt{extlib/} and \texttt{scripts/}. The former contains the binary
files of any external libraries compiled for the specific platform.
The latter directory contains any platform-specific scripts.

Additional files and sub-directories may be present for each platform.
In particular, for the Windows plaform, there is a file \texttt{configure.bat}
in \texttt{platforms/win32} which can be used for generating a Visual
Studio.NET projects and solution for the source directories in dbgroup-utils.


\section{Library Directories}

All library directories (\texttt{corelib/}, \texttt{datastructs/},
\texttt{alg/}, \texttt{components/}, \texttt{network/}) have similar
structure. They contain three subdirectories: \texttt{doc/}, \texttt{src/},
and \texttt{tests/}. The \texttt{doc/} directory contains documentation
files specific for the library. The \texttt{src/} directory contains
all the source files of the library. The \texttt{tests/} directory
contains regression tests for the library.


\section{Dynamic Directories}

There are three top-level directories that are created by the build
process using \texttt{make}: \texttt{4utomake.cache/}, \texttt{build/},
and \texttt{distrib/}. 

The \texttt{4utomake.cache/} directory is for internal use by the
autotools package. 

The \texttt{build/} directory contains temporary files generated during
the build process. These include dependency files, object files, etc.

The \texttt{distrib/} directory contains the final files generated
for each library and executable built by dbgroup-utils. These files
are placed in sub-directry that has the same name as the top-level
directory containing the source of the executable or library. 


\subsection{Libraries}

The structure for library distribution directories is as follows:

\begin{tabular}{|l|p{3.5in}|}
\hline 
\textbf{Sub-directory}&
\textbf{Description}\tabularnewline
\hline
\hline 
apidocs/&
Contains the generated API documentation files (the result of running
\texttt{make apidocs})\tabularnewline
\hline 
doc/&
Contains the generated documentation files (the result of running
\texttt{make doc})\tabularnewline
\hline 
inc/&
Contains this header files of the library\tabularnewline
\hline 
$\;\;\;$cudb/&
The namespace of the repository\tabularnewline
\hline 
$\;\;\;\;\;\;$corelib/&
The name of the library directory; this is the directory that actually
contains all header files\tabularnewline
\hline 
lib/&
Contains the binary library file\tabularnewline
\hline
\end{tabular}


\subsection{Executables}

The structure of the executable distribution directories is as follows:

\begin{tabular}{|l|p{3.5in}|}
\hline 
\textbf{Sub-directory}&
\textbf{Description}\tabularnewline
\hline
\hline 
doc/&
Contains the generated documentation files (the result of running
\texttt{make doc})\tabularnewline
\hline 
bin/&
Contains the binary executable file\tabularnewline
\hline
\end{tabular}
\end{document}
