[PATCH 1/2] Build system: Make DMX doc generation distcheck-clean

Gaetan Nadon memsize at videotron.ca
Wed Jan 5 08:04:46 PST 2011


On Wed, 2011-01-05 at 14:22 +0000, Daniel Stone wrote:

> Previously, distcheck failed if documentation generation was disabled,
> and was also not safe for srcdir != builddir.  This patch makes sure
> that documents are always generated during distcheck, and that the rules
> to generate them can be found.  It also fixes srcdir != builddir for
> doxygen, following the lead of Telepathy and pretty much everyone else
> in generating doxygen.conf.
> 
> The following, which previously failed, now passes for me:
> cd xserver
> mkdir build
> cd build
> ../configure
> make distcheck
> 

This is fairly complex, it would be nice to identify which code fixes
which problem:

1- you want to build devel docs at dist time when --disable-devel-docs
is specified. Whatever code makes it work that way should be commented
as such as it maybe upset by future changes. It will remind others to
test for it. 

2- fix doxygen when running make distcheck from a VPATH build.


> Signed-off-by: Daniel Stone <daniel at fooishbar.org>
> ---
>  Makefile.am                |    4 +-
>  configure.ac               |    1 +
>  hw/dmx/doc/Makefile.am     |   43 +-
>  hw/dmx/doc/doxygen.conf    | 1053 --------------------------------------------
>  hw/dmx/doc/doxygen.conf.in | 1053 ++++++++++++++++++++++++++++++++++++++++++++
>  5 files changed, 1079 insertions(+), 1075 deletions(-)
>  delete mode 100644 hw/dmx/doc/doxygen.conf
>  create mode 100644 hw/dmx/doc/doxygen.conf.in
> 
> diff --git a/Makefile.am b/Makefile.am
> index 62c8d95..e9bd1c0 100644
> --- a/Makefile.am
> +++ b/Makefile.am
> @@ -54,7 +54,9 @@ EXTRA_DIST = xorg-server.pc.in xorg-server.m4 autogen.sh
>  DISTCHECK_CONFIGURE_FLAGS=\
>  	--with-xkb-path=$(XKB_BASE_DIRECTORY) \
>  	--with-xkb-bin-directory=$(XKB_BIN_DIRECTORY) \
> -	--with-xkb-output='$${datadir}/X11/xkb/compiled'
> +	--with-xkb-output='$${datadir}/X11/xkb/compiled' \
> +	--enable-docs \
> +	--enable-devel-docs

This is great. 

>  
>  .PHONY: ChangeLog INSTALL
>  
> diff --git a/configure.ac b/configure.ac
> index 1ceffe7..8b9a5ed 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -2261,4 +2261,5 @@ hw/kdrive/src/Makefile
>  test/Makefile
>  test/xi2/Makefile
>  xorg-server.pc
> +hw/dmx/doc/doxygen.conf
>  ])
> diff --git a/hw/dmx/doc/Makefile.am b/hw/dmx/doc/Makefile.am
> index 4bbc8bf..704fc8b 100644
> --- a/hw/dmx/doc/Makefile.am
> +++ b/hw/dmx/doc/Makefile.am
> @@ -22,35 +22,33 @@
>  doc_sources = dmx.xml scaled.xml
>  
>  # Developer's documentation is not installed
> -if ENABLE_DEVEL_DOCS
>  include $(top_srcdir)/doc/xml/xmlrules-noinst.in
>  
>  if HAVE_DOXYGEN
> -
> -DOXYGEN_SRC=doxygen.head doxygen.foot doxygen.css doxygen.conf
> -
> +if ENABLE_DEVEL_DOCS

This noops it for dmx/scaled.txt which now always builds even when
--disable-devel-docs is specified,
not just at dist time.
Unfortunatly the dmx/scaled DocBook XML targets are in the same
makefile.

>  all-local: html/annotated.html
>  
>  dist-local: html/annotated.html
> +endif ENABLE_DEVEL_DOCS
> +
> +DOXYGEN_SRC=$(srcdir)/doxygen.head \
> +	    $(srcdir)/doxygen.foot \
> +	    $(srcdir)/doxygen.css \
> +	    doxygen.conf
>  
>  html/annotated.html: $(DOXYGEN_SRC)
> -	$(DOXYGEN) $(srcdir)/doxygen.conf
> +	$(DOXYGEN) doxygen.conf
>  
>  maintainer-clean-local:
>  	rm -rf html/
>  endif
> -endif ENABLE_DEVEL_DOCS
>  
> -EXTRA_DIST = \
> +GENERATED_DOCS = \
>  	$(XML_FILES) \
> -	DMXSpec.txt \
> -	DMXSpec-v1.txt \
>  	dmx.txt \
> -	doxygen.conf \
> -	doxygen.css \
> -	doxygen.foot \
> -	doxygen.head \
>  	scaled.txt \
> +	html
> +LOSS = \
>  	html/annotated.html \
>  	html/ChkNotMaskEv_8c.html \
>  	html/ChkNotMaskEv_8h.html \
> @@ -254,12 +252,15 @@ EXTRA_DIST = \
>  	html/usb-private_8h.html \
>  	html/usb-private_8h_source.html
>  
> -$(builddir)/doxygen.head:
> -	$(LN_S) $(srcdir)/doxygen.head $@
> -
> -$(builddir)/doxygen.foot:
> -	$(LN_S) $(srcdir)/doxygen.foot $@
> -
> -$(builddir)doxygen.css:
> -	$(LN_S) $(srcdir)/doxygen.css $@
> +DISTCLEANFILES = $(GENERATED_DOCS)
>  
> +EXTRA_DIST = \
> +	$(GENERATED_DOCS) \
> +	DMXSpec.txt \
> +	DMXSpec-v1.txt \
> +	dmx.xml \
> +	scaled.xml \
> +	doxygen.conf \
> +	doxygen.css \
> +	doxygen.foot \
> +	doxygen.head
> diff --git a/hw/dmx/doc/doxygen.conf b/hw/dmx/doc/doxygen.conf
> deleted file mode 100644
> index f7a541f..0000000
> --- a/hw/dmx/doc/doxygen.conf
> +++ /dev/null
> @@ -1,1053 +0,0 @@
> -# Doxyfile 1.3.4
> -
> -# This file describes the settings to be used by the documentation system
> -# doxygen (www.doxygen.org) for a project
> -#
> -# All text after a hash (#) is considered a comment and will be ignored
> -# The format is:
> -#       TAG = value [value, ...]
> -# For lists items can also be appended using:
> -#       TAG += value [value, ...]
> -# Values that contain spaces should be placed between quotes (" ")
> -
> -#---------------------------------------------------------------------------
> -# Project related configuration options
> -#---------------------------------------------------------------------------
> -
> -# The PROJECT_NAME tag is a single word (or a sequence of words surrounded 
> -# by quotes) that should identify the project.
> -
> -PROJECT_NAME           = "Distributed Multihead X"
> -
> -# The PROJECT_NUMBER tag can be used to enter a project or revision number. 
> -# This could be handy for archiving the generated documentation or 
> -# if some version control system is used.
> -
> -PROJECT_NUMBER         = "dmx-1-2-20040604 and later"
> -
> -# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) 
> -# base path where the generated documentation will be put. 
> -# If a relative path is entered, it will be relative to the location 
> -# where doxygen was started. If left blank the current directory will be used.
> -
> -OUTPUT_DIRECTORY       = 
> -
> -# The OUTPUT_LANGUAGE tag is used to specify the language in which all 
> -# documentation generated by doxygen is written. Doxygen will use this 
> -# information to generate all constant output in the proper language. 
> -# The default language is English, other supported languages are: 
> -# Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, Dutch, 
> -# Finnish, French, German, Greek, Hungarian, Italian, Japanese, Japanese-en 
> -# (Japanese with English messages), Korean, Norwegian, Polish, Portuguese, 
> -# Romanian, Russian, Serbian, Slovak, Slovene, Spanish, Swedish, and Ukrainian.
> -
> -OUTPUT_LANGUAGE        = English
> -
> -# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will 
> -# include brief member descriptions after the members that are listed in 
> -# the file and class documentation (similar to JavaDoc). 
> -# Set to NO to disable this.
> -
> -BRIEF_MEMBER_DESC      = YES
> -
> -# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend 
> -# the brief description of a member or function before the detailed description. 
> -# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the 
> -# brief descriptions will be completely suppressed.
> -
> -REPEAT_BRIEF           = YES
> -
> -# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then 
> -# Doxygen will generate a detailed section even if there is only a brief 
> -# description.
> -
> -ALWAYS_DETAILED_SEC    = YES
> -
> -# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all inherited 
> -# members of a class in the documentation of that class as if those members were 
> -# ordinary class members. Constructors, destructors and assignment operators of 
> -# the base classes will not be shown.
> -
> -INLINE_INHERITED_MEMB  = NO
> -
> -# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full 
> -# path before files name in the file list and in the header files. If set 
> -# to NO the shortest path that makes the file name unique will be used.
> -
> -FULL_PATH_NAMES        = NO
> -
> -# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag 
> -# can be used to strip a user-defined part of the path. Stripping is 
> -# only done if one of the specified strings matches the left-hand part of 
> -# the path. It is allowed to use relative paths in the argument list.
> -
> -STRIP_FROM_PATH        = 
> -
> -# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter 
> -# (but less readable) file names. This can be useful is your file systems 
> -# doesn't support long names like on DOS, Mac, or CD-ROM.
> -
> -SHORT_NAMES            = NO
> -
> -# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen 
> -# will interpret the first line (until the first dot) of a JavaDoc-style 
> -# comment as the brief description. If set to NO, the JavaDoc 
> -# comments will behave just like the Qt-style comments (thus requiring an 
> -# explict @brief command for a brief description.
> -
> -JAVADOC_AUTOBRIEF      = NO
> -
> -# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen 
> -# treat a multi-line C++ special comment block (i.e. a block of //! or /// 
> -# comments) as a brief description. This used to be the default behaviour. 
> -# The new default is to treat a multi-line C++ comment block as a detailed 
> -# description. Set this tag to YES if you prefer the old behaviour instead.
> -
> -MULTILINE_CPP_IS_BRIEF = NO
> -
> -# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented 
> -# member inherits the documentation from any documented member that it 
> -# reimplements.
> -
> -INHERIT_DOCS           = YES
> -
> -# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC 
> -# tag is set to YES, then doxygen will reuse the documentation of the first 
> -# member in the group (if any) for the other members of the group. By default 
> -# all members of a group must be documented explicitly.
> -
> -DISTRIBUTE_GROUP_DOC   = NO
> -
> -# The TAB_SIZE tag can be used to set the number of spaces in a tab. 
> -# Doxygen uses this value to replace tabs by spaces in code fragments.
> -
> -TAB_SIZE               = 8
> -
> -# This tag can be used to specify a number of aliases that acts 
> -# as commands in the documentation. An alias has the form "name=value". 
> -# For example adding "sideeffect=\par Side Effects:\n" will allow you to 
> -# put the command \sideeffect (or @sideeffect) in the documentation, which 
> -# will result in a user-defined paragraph with heading "Side Effects:". 
> -# You can put \n's in the value part of an alias to insert newlines.
> -
> -ALIASES                = 
> -
> -# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources 
> -# only. Doxygen will then generate output that is more tailored for C. 
> -# For instance, some of the names that are used will be different. The list 
> -# of all members will be omitted, etc.
> -
> -OPTIMIZE_OUTPUT_FOR_C  = YES
> -
> -# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java sources 
> -# only. Doxygen will then generate output that is more tailored for Java. 
> -# For instance, namespaces will be presented as packages, qualified scopes 
> -# will look different, etc.
> -
> -OPTIMIZE_OUTPUT_JAVA   = NO
> -
> -# Set the SUBGROUPING tag to YES (the default) to allow class member groups of 
> -# the same type (for instance a group of public functions) to be put as a 
> -# subgroup of that type (e.g. under the Public Functions section). Set it to 
> -# NO to prevent subgrouping. Alternatively, this can be done per class using 
> -# the \nosubgrouping command.
> -
> -SUBGROUPING            = YES
> -
> -#---------------------------------------------------------------------------
> -# Build related configuration options
> -#---------------------------------------------------------------------------
> -
> -# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in 
> -# documentation are documented, even if no documentation was available. 
> -# Private class members and static file members will be hidden unless 
> -# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
> -
> -EXTRACT_ALL            = YES
> -
> -# If the EXTRACT_PRIVATE tag is set to YES all private members of a class 
> -# will be included in the documentation.
> -
> -EXTRACT_PRIVATE        = NO
> -
> -# If the EXTRACT_STATIC tag is set to YES all static members of a file 
> -# will be included in the documentation.
> -
> -EXTRACT_STATIC         = YES
> -
> -# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) 
> -# defined locally in source files will be included in the documentation. 
> -# If set to NO only classes defined in header files are included.
> -
> -EXTRACT_LOCAL_CLASSES  = YES
> -
> -# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all 
> -# undocumented members of documented classes, files or namespaces. 
> -# If set to NO (the default) these members will be included in the 
> -# various overviews, but no documentation section is generated. 
> -# This option has no effect if EXTRACT_ALL is enabled.
> -
> -HIDE_UNDOC_MEMBERS     = YES
> -
> -# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all 
> -# undocumented classes that are normally visible in the class hierarchy. 
> -# If set to NO (the default) these classes will be included in the various 
> -# overviews. This option has no effect if EXTRACT_ALL is enabled.
> -
> -HIDE_UNDOC_CLASSES     = NO
> -
> -# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all 
> -# friend (class|struct|union) declarations. 
> -# If set to NO (the default) these declarations will be included in the 
> -# documentation.
> -
> -HIDE_FRIEND_COMPOUNDS  = NO
> -
> -# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any 
> -# documentation blocks found inside the body of a function. 
> -# If set to NO (the default) these blocks will be appended to the 
> -# function's detailed documentation block.
> -
> -HIDE_IN_BODY_DOCS      = NO
> -
> -# The INTERNAL_DOCS tag determines if documentation 
> -# that is typed after a \internal command is included. If the tag is set 
> -# to NO (the default) then the documentation will be excluded. 
> -# Set it to YES to include the internal documentation.
> -
> -INTERNAL_DOCS          = NO
> -
> -# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate 
> -# file names in lower-case letters. If set to YES upper-case letters are also 
> -# allowed. This is useful if you have classes or files whose names only differ 
> -# in case and if your file system supports case sensitive file names. Windows 
> -# users are advised to set this option to NO.
> -
> -CASE_SENSE_NAMES       = YES
> -
> -# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen 
> -# will show members with their full class and namespace scopes in the 
> -# documentation. If set to YES the scope will be hidden.
> -
> -HIDE_SCOPE_NAMES       = NO
> -
> -# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen 
> -# will put a list of the files that are included by a file in the documentation 
> -# of that file.
> -
> -SHOW_INCLUDE_FILES     = YES
> -
> -# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] 
> -# is inserted in the documentation for inline members.
> -
> -INLINE_INFO            = YES
> -
> -# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen 
> -# will sort the (detailed) documentation of file and class members 
> -# alphabetically by member name. If set to NO the members will appear in 
> -# declaration order.
> -
> -SORT_MEMBER_DOCS       = YES
> -
> -# The GENERATE_TODOLIST tag can be used to enable (YES) or 
> -# disable (NO) the todo list. This list is created by putting \todo 
> -# commands in the documentation.
> -
> -GENERATE_TODOLIST      = YES
> -
> -# The GENERATE_TESTLIST tag can be used to enable (YES) or 
> -# disable (NO) the test list. This list is created by putting \test 
> -# commands in the documentation.
> -
> -GENERATE_TESTLIST      = YES
> -
> -# The GENERATE_BUGLIST tag can be used to enable (YES) or 
> -# disable (NO) the bug list. This list is created by putting \bug 
> -# commands in the documentation.
> -
> -GENERATE_BUGLIST       = YES
> -
> -# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or 
> -# disable (NO) the deprecated list. This list is created by putting 
> -# \deprecated commands in the documentation.
> -
> -GENERATE_DEPRECATEDLIST= YES
> -
> -# The ENABLED_SECTIONS tag can be used to enable conditional 
> -# documentation sections, marked by \if sectionname ... \endif.
> -
> -ENABLED_SECTIONS       = 
> -
> -# The MAX_INITIALIZER_LINES tag determines the maximum number of lines 
> -# the initial value of a variable or define consists of for it to appear in 
> -# the documentation. If the initializer consists of more lines than specified 
> -# here it will be hidden. Use a value of 0 to hide initializers completely. 
> -# The appearance of the initializer of individual variables and defines in the 
> -# documentation can be controlled using \showinitializer or \hideinitializer 
> -# command in the documentation regardless of this setting.
> -
> -MAX_INITIALIZER_LINES  = 30
> -
> -# Set the SHOW_USED_FILES tag to NO to disable the list of files generated 
> -# at the bottom of the documentation of classes and structs. If set to YES the 
> -# list will mention the files that were used to generate the documentation.
> -
> -SHOW_USED_FILES        = YES
> -
> -#---------------------------------------------------------------------------
> -# configuration options related to warning and progress messages
> -#---------------------------------------------------------------------------
> -
> -# The QUIET tag can be used to turn on/off the messages that are generated 
> -# by doxygen. Possible values are YES and NO. If left blank NO is used.
> -
> -QUIET                  = YES
> -
> -# The WARNINGS tag can be used to turn on/off the warning messages that are 
> -# generated by doxygen. Possible values are YES and NO. If left blank 
> -# NO is used.
> -
> -WARNINGS               = YES
> -
> -# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings 
> -# for undocumented members. If EXTRACT_ALL is set to YES then this flag will 
> -# automatically be disabled.
> -
> -WARN_IF_UNDOCUMENTED   = YES
> -
> -# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for 
> -# potential errors in the documentation, such as not documenting some 
> -# parameters in a documented function, or documenting parameters that 
> -# don't exist or using markup commands wrongly.
> -
> -WARN_IF_DOC_ERROR      = YES
> -
> -# The WARN_FORMAT tag determines the format of the warning messages that 
> -# doxygen can produce. The string should contain the $file, $line, and $text 
> -# tags, which will be replaced by the file and line number from which the 
> -# warning originated and the warning text.
> -
> -WARN_FORMAT            = "$file:$line: $text"
> -
> -# The WARN_LOGFILE tag can be used to specify a file to which warning 
> -# and error messages should be written. If left blank the output is written 
> -# to stderr.
> -
> -WARN_LOGFILE           = 
> -
> -#---------------------------------------------------------------------------
> -# configuration options related to the input files
> -#---------------------------------------------------------------------------
> -
> -# The INPUT tag can be used to specify the files and/or directories that contain 
> -# documented source files. You may enter file names like "myfile.cpp" or 
> -# directories like "/usr/src/myproject". Separate the files or directories 
> -# with spaces.
> -
> -INPUT                  = .. \
> -                         ../input \
> -                         ../config
> -
> -# If the value of the INPUT tag contains directories, you can use the 
> -# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 
> -# and *.h) to filter out the source-files in the directories. If left 
> -# blank the following patterns are tested: 
> -# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx *.hpp 
> -# *.h++ *.idl *.odl *.cs *.php *.php3 *.inc
> -
> -FILE_PATTERNS          = 
> -
> -# The RECURSIVE tag can be used to turn specify whether or not subdirectories 
> -# should be searched for input files as well. Possible values are YES and NO. 
> -# If left blank NO is used.
> -
> -RECURSIVE              = NO
> -
> -# The EXCLUDE tag can be used to specify files and/or directories that should 
> -# excluded from the INPUT source files. This way you can easily exclude a 
> -# subdirectory from a directory tree whose root is specified with the INPUT tag.
> -
> -EXCLUDE                = ../config/parser.c \
> -                         ../config/parser.h \
> -                         ../config/scanner.c
> -
> -# The EXCLUDE_SYMLINKS tag can be used select whether or not files or directories 
> -# that are symbolic links (a Unix filesystem feature) are excluded from the input.
> -
> -EXCLUDE_SYMLINKS       = YES
> -
> -# If the value of the INPUT tag contains directories, you can use the 
> -# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude 
> -# certain files from those directories.
> -
> -EXCLUDE_PATTERNS       = atKeynames.h \
> -                         Canvas*.*
> -
> -# The EXAMPLE_PATH tag can be used to specify one or more files or 
> -# directories that contain example code fragments that are included (see 
> -# the \include command).
> -
> -EXAMPLE_PATH           = 
> -
> -# If the value of the EXAMPLE_PATH tag contains directories, you can use the 
> -# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 
> -# and *.h) to filter out the source-files in the directories. If left 
> -# blank all files are included.
> -
> -EXAMPLE_PATTERNS       = 
> -
> -# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be 
> -# searched for input files to be used with the \include or \dontinclude 
> -# commands irrespective of the value of the RECURSIVE tag. 
> -# Possible values are YES and NO. If left blank NO is used.
> -
> -EXAMPLE_RECURSIVE      = NO
> -
> -# The IMAGE_PATH tag can be used to specify one or more files or 
> -# directories that contain image that are included in the documentation (see 
> -# the \image command).
> -
> -IMAGE_PATH             = 
> -
> -# The INPUT_FILTER tag can be used to specify a program that doxygen should 
> -# invoke to filter for each input file. Doxygen will invoke the filter program 
> -# by executing (via popen()) the command <filter> <input-file>, where <filter> 
> -# is the value of the INPUT_FILTER tag, and <input-file> is the name of an 
> -# input file. Doxygen will then use the output that the filter program writes 
> -# to standard output.
> -
> -INPUT_FILTER           = 
> -
> -# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using 
> -# INPUT_FILTER) will be used to filter the input files when producing source 
> -# files to browse (i.e. when SOURCE_BROWSER is set to YES).
> -
> -FILTER_SOURCE_FILES    = NO
> -
> -#---------------------------------------------------------------------------
> -# configuration options related to source browsing
> -#---------------------------------------------------------------------------
> -
> -# If the SOURCE_BROWSER tag is set to YES then a list of source files will 
> -# be generated. Documented entities will be cross-referenced with these sources.
> -
> -SOURCE_BROWSER         = NO
> -
> -# Setting the INLINE_SOURCES tag to YES will include the body 
> -# of functions and classes directly in the documentation.
> -
> -INLINE_SOURCES         = NO
> -
> -# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct 
> -# doxygen to hide any special comment blocks from generated source code 
> -# fragments. Normal C and C++ comments will always remain visible.
> -
> -STRIP_CODE_COMMENTS    = YES
> -
> -# If the REFERENCED_BY_RELATION tag is set to YES (the default) 
> -# then for each documented function all documented 
> -# functions referencing it will be listed.
> -
> -REFERENCED_BY_RELATION = YES
> -
> -# If the REFERENCES_RELATION tag is set to YES (the default) 
> -# then for each documented function all documented entities 
> -# called/used by that function will be listed.
> -
> -REFERENCES_RELATION    = YES
> -
> -# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen 
> -# will generate a verbatim copy of the header file for each class for 
> -# which an include is specified. Set to NO to disable this.
> -
> -VERBATIM_HEADERS       = YES
> -
> -#---------------------------------------------------------------------------
> -# configuration options related to the alphabetical class index
> -#---------------------------------------------------------------------------
> -
> -# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index 
> -# of all compounds will be generated. Enable this if the project 
> -# contains a lot of classes, structs, unions or interfaces.
> -
> -ALPHABETICAL_INDEX     = YES
> -
> -# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then 
> -# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns 
> -# in which this list will be split (can be a number in the range [1..20])
> -
> -COLS_IN_ALPHA_INDEX    = 5
> -
> -# In case all classes in a project start with a common prefix, all 
> -# classes will be put under the same header in the alphabetical index. 
> -# The IGNORE_PREFIX tag can be used to specify one or more prefixes that 
> -# should be ignored while generating the index headers.
> -
> -IGNORE_PREFIX          = 
> -
> -#---------------------------------------------------------------------------
> -# configuration options related to the HTML output
> -#---------------------------------------------------------------------------
> -
> -# If the GENERATE_HTML tag is set to YES (the default) Doxygen will 
> -# generate HTML output.
> -
> -GENERATE_HTML          = YES
> -
> -# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. 
> -# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
> -# put in front of it. If left blank `html' will be used as the default path.
> -
> -HTML_OUTPUT            = html
> -
> -# The HTML_FILE_EXTENSION tag can be used to specify the file extension for 
> -# each generated HTML page (for example: .htm,.php,.asp). If it is left blank 
> -# doxygen will generate files with .html extension.
> -
> -HTML_FILE_EXTENSION    = .html
> -
> -# The HTML_HEADER tag can be used to specify a personal HTML header for 
> -# each generated HTML page. If it is left blank doxygen will generate a 
> -# standard header.
> -
> -HTML_HEADER            = doxygen.head
> -
> -# The HTML_FOOTER tag can be used to specify a personal HTML footer for 
> -# each generated HTML page. If it is left blank doxygen will generate a 
> -# standard footer.
> -
> -HTML_FOOTER            = doxygen.foot
> -
> -# The HTML_STYLESHEET tag can be used to specify a user-defined cascading 
> -# style sheet that is used by each HTML page. It can be used to 
> -# fine-tune the look of the HTML output. If the tag is left blank doxygen 
> -# will generate a default style sheet
> -
> -HTML_STYLESHEET        = doxygen.css
> -
> -# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, 
> -# files or namespaces will be aligned in HTML using tables. If set to 
> -# NO a bullet list will be used.
> -
> -HTML_ALIGN_MEMBERS     = YES
> -
> -# If the GENERATE_HTMLHELP tag is set to YES, additional index files 
> -# will be generated that can be used as input for tools like the 
> -# Microsoft HTML help workshop to generate a compressed HTML help file (.chm) 
> -# of the generated HTML documentation.
> -
> -GENERATE_HTMLHELP      = NO
> -
> -# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can 
> -# be used to specify the file name of the resulting .chm file. You 
> -# can add a path in front of the file if the result should not be 
> -# written to the html output dir.
> -
> -CHM_FILE               = 
> -
> -# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can 
> -# be used to specify the location (absolute path including file name) of 
> -# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run 
> -# the HTML help compiler on the generated index.hhp.
> -
> -HHC_LOCATION           = 
> -
> -# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag 
> -# controls if a separate .chi index file is generated (YES) or that 
> -# it should be included in the master .chm file (NO).
> -
> -GENERATE_CHI           = NO
> -
> -# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag 
> -# controls whether a binary table of contents is generated (YES) or a 
> -# normal table of contents (NO) in the .chm file.
> -
> -BINARY_TOC             = NO
> -
> -# The TOC_EXPAND flag can be set to YES to add extra items for group members 
> -# to the contents of the HTML help documentation and to the tree view.
> -
> -TOC_EXPAND             = NO
> -
> -# The DISABLE_INDEX tag can be used to turn on/off the condensed index at 
> -# top of each HTML page. The value NO (the default) enables the index and 
> -# the value YES disables it.
> -
> -DISABLE_INDEX          = NO
> -
> -# This tag can be used to set the number of enum values (range [1..20]) 
> -# that doxygen will group on one line in the generated HTML documentation.
> -
> -ENUM_VALUES_PER_LINE   = 4
> -
> -# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be
> -# generated containing a tree-like index structure (just like the one that 
> -# is generated for HTML Help). For this to work a browser that supports 
> -# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, 
> -# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are 
> -# probably better off using the HTML help feature.
> -
> -GENERATE_TREEVIEW      = YES
> -
> -# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be 
> -# used to set the initial width (in pixels) of the frame in which the tree 
> -# is shown.
> -
> -TREEVIEW_WIDTH         = 250
> -
> -#---------------------------------------------------------------------------
> -# configuration options related to the LaTeX output
> -#---------------------------------------------------------------------------
> -
> -# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will 
> -# generate Latex output.
> -
> -GENERATE_LATEX         = NO
> -
> -# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. 
> -# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
> -# put in front of it. If left blank `latex' will be used as the default path.
> -
> -LATEX_OUTPUT           = latex
> -
> -# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be 
> -# invoked. If left blank `latex' will be used as the default command name.
> -
> -LATEX_CMD_NAME         = latex
> -
> -# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to 
> -# generate index for LaTeX. If left blank `makeindex' will be used as the 
> -# default command name.
> -
> -MAKEINDEX_CMD_NAME     = makeindex
> -
> -# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact 
> -# LaTeX documents. This may be useful for small projects and may help to 
> -# save some trees in general.
> -
> -COMPACT_LATEX          = NO
> -
> -# The PAPER_TYPE tag can be used to set the paper type that is used 
> -# by the printer. Possible values are: a4, a4wide, letter, legal and 
> -# executive. If left blank a4wide will be used.
> -
> -PAPER_TYPE             = a4wide
> -
> -# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX 
> -# packages that should be included in the LaTeX output.
> -
> -EXTRA_PACKAGES         = 
> -
> -# The LATEX_HEADER tag can be used to specify a personal LaTeX header for 
> -# the generated latex document. The header should contain everything until 
> -# the first chapter. If it is left blank doxygen will generate a 
> -# standard header. Notice: only use this tag if you know what you are doing!
> -
> -LATEX_HEADER           = 
> -
> -# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated 
> -# is prepared for conversion to pdf (using ps2pdf). The pdf file will 
> -# contain links (just like the HTML output) instead of page references 
> -# This makes the output suitable for online browsing using a pdf viewer.
> -
> -PDF_HYPERLINKS         = NO
> -
> -# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of 
> -# plain latex in the generated Makefile. Set this option to YES to get a 
> -# higher quality PDF documentation.
> -
> -USE_PDFLATEX           = NO
> -
> -# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. 
> -# command to the generated LaTeX files. This will instruct LaTeX to keep 
> -# running if errors occur, instead of asking the user for help. 
> -# This option is also used when generating formulas in HTML.
> -
> -LATEX_BATCHMODE        = NO
> -
> -# If LATEX_HIDE_INDICES is set to YES then doxygen will not 
> -# include the index chapters (such as File Index, Compound Index, etc.) 
> -# in the output.
> -
> -LATEX_HIDE_INDICES     = NO
> -
> -#---------------------------------------------------------------------------
> -# configuration options related to the RTF output
> -#---------------------------------------------------------------------------
> -
> -# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output 
> -# The RTF output is optimised for Word 97 and may not look very pretty with 
> -# other RTF readers or editors.
> -
> -GENERATE_RTF           = NO
> -
> -# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. 
> -# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
> -# put in front of it. If left blank `rtf' will be used as the default path.
> -
> -RTF_OUTPUT             = rtf
> -
> -# If the COMPACT_RTF tag is set to YES Doxygen generates more compact 
> -# RTF documents. This may be useful for small projects and may help to 
> -# save some trees in general.
> -
> -COMPACT_RTF            = NO
> -
> -# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated 
> -# will contain hyperlink fields. The RTF file will 
> -# contain links (just like the HTML output) instead of page references. 
> -# This makes the output suitable for online browsing using WORD or other 
> -# programs which support those fields. 
> -# Note: wordpad (write) and others do not support links.
> -
> -RTF_HYPERLINKS         = NO
> -
> -# Load stylesheet definitions from file. Syntax is similar to doxygen's 
> -# config file, i.e. a series of assigments. You only have to provide 
> -# replacements, missing definitions are set to their default value.
> -
> -RTF_STYLESHEET_FILE    = 
> -
> -# Set optional variables used in the generation of an rtf document. 
> -# Syntax is similar to doxygen's config file.
> -
> -RTF_EXTENSIONS_FILE    = 
> -
> -#---------------------------------------------------------------------------
> -# configuration options related to the man page output
> -#---------------------------------------------------------------------------
> -
> -# If the GENERATE_MAN tag is set to YES (the default) Doxygen will 
> -# generate man pages
> -
> -GENERATE_MAN           = NO
> -
> -# The MAN_OUTPUT tag is used to specify where the man pages will be put. 
> -# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
> -# put in front of it. If left blank `man' will be used as the default path.
> -
> -MAN_OUTPUT             = man
> -
> -# The MAN_EXTENSION tag determines the extension that is added to 
> -# the generated man pages (default is the subroutine's section .3)
> -
> -MAN_EXTENSION          = .3
> -
> -# If the MAN_LINKS tag is set to YES and Doxygen generates man output, 
> -# then it will generate one additional man file for each entity 
> -# documented in the real man page(s). These additional files 
> -# only source the real man page, but without them the man command 
> -# would be unable to find the correct page. The default is NO.
> -
> -MAN_LINKS              = NO
> -
> -#---------------------------------------------------------------------------
> -# configuration options related to the XML output
> -#---------------------------------------------------------------------------
> -
> -# If the GENERATE_XML tag is set to YES Doxygen will 
> -# generate an XML file that captures the structure of 
> -# the code including all documentation. Note that this 
> -# feature is still experimental and incomplete at the 
> -# moment.
> -
> -GENERATE_XML           = NO
> -
> -# The XML_OUTPUT tag is used to specify where the XML pages will be put. 
> -# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
> -# put in front of it. If left blank `xml' will be used as the default path.
> -
> -XML_OUTPUT             = xml
> -
> -# The XML_SCHEMA tag can be used to specify an XML schema, 
> -# which can be used by a validating XML parser to check the 
> -# syntax of the XML files.
> -
> -XML_SCHEMA             = 
> -
> -# The XML_DTD tag can be used to specify an XML DTD, 
> -# which can be used by a validating XML parser to check the 
> -# syntax of the XML files.
> -
> -XML_DTD                = 
> -
> -#---------------------------------------------------------------------------
> -# configuration options for the AutoGen Definitions output
> -#---------------------------------------------------------------------------
> -
> -# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will 
> -# generate an AutoGen Definitions (see autogen.sf.net) file 
> -# that captures the structure of the code including all 
> -# documentation. Note that this feature is still experimental 
> -# and incomplete at the moment.
> -
> -GENERATE_AUTOGEN_DEF   = NO
> -
> -#---------------------------------------------------------------------------
> -# configuration options related to the Perl module output
> -#---------------------------------------------------------------------------
> -
> -# If the GENERATE_PERLMOD tag is set to YES Doxygen will 
> -# generate a Perl module file that captures the structure of 
> -# the code including all documentation. Note that this 
> -# feature is still experimental and incomplete at the 
> -# moment.
> -
> -GENERATE_PERLMOD       = NO
> -
> -# If the PERLMOD_LATEX tag is set to YES Doxygen will generate 
> -# the necessary Makefile rules, Perl scripts and LaTeX code to be able 
> -# to generate PDF and DVI output from the Perl module output.
> -
> -PERLMOD_LATEX          = NO
> -
> -# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be 
> -# nicely formatted so it can be parsed by a human reader.  This is useful 
> -# if you want to understand what is going on.  On the other hand, if this 
> -# tag is set to NO the size of the Perl module output will be much smaller 
> -# and Perl will parse it just the same.
> -
> -PERLMOD_PRETTY         = YES
> -
> -# The names of the make variables in the generated doxyrules.make file 
> -# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. 
> -# This is useful so different doxyrules.make files included by the same 
> -# Makefile don't overwrite each other's variables.
> -
> -PERLMOD_MAKEVAR_PREFIX = 
> -
> -#---------------------------------------------------------------------------
> -# Configuration options related to the preprocessor   
> -#---------------------------------------------------------------------------
> -
> -# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will 
> -# evaluate all C-preprocessor directives found in the sources and include 
> -# files.
> -
> -ENABLE_PREPROCESSING   = YES
> -
> -# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro 
> -# names in the source code. If set to NO (the default) only conditional 
> -# compilation will be performed. Macro expansion can be done in a controlled 
> -# way by setting EXPAND_ONLY_PREDEF to YES.
> -
> -MACRO_EXPANSION        = NO
> -
> -# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES 
> -# then the macro expansion is limited to the macros specified with the 
> -# PREDEFINED and EXPAND_AS_PREDEFINED tags.
> -
> -EXPAND_ONLY_PREDEF     = NO
> -
> -# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files 
> -# in the INCLUDE_PATH (see below) will be search if a #include is found.
> -
> -SEARCH_INCLUDES        = YES
> -
> -# The INCLUDE_PATH tag can be used to specify one or more directories that 
> -# contain include files that are not input files but should be processed by 
> -# the preprocessor.
> -
> -INCLUDE_PATH           = 
> -
> -# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard 
> -# patterns (like *.h and *.hpp) to filter out the header-files in the 
> -# directories. If left blank, the patterns specified with FILE_PATTERNS will 
> -# be used.
> -
> -INCLUDE_FILE_PATTERNS  = 
> -
> -# The PREDEFINED tag can be used to specify one or more macro names that 
> -# are defined before the preprocessor is started (similar to the -D option of 
> -# gcc). The argument of the tag is a list of macros of the form: name 
> -# or name=definition (no spaces). If the definition and the = are 
> -# omitted =1 is assumed.
> -
> -PREDEFINED             = SHAPE \
> -                         RENDER \
> -                         XKB \
> -                         XINPUT
> -
> -# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then 
> -# this tag can be used to specify a list of macro names that should be expanded. 
> -# The macro definition that is found in the sources will be used. 
> -# Use the PREDEFINED tag if you want to use a different macro definition.
> -
> -EXPAND_AS_DEFINED      = 
> -
> -# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then 
> -# doxygen's preprocessor will remove all function-like macros that are alone 
> -# on a line, have an all uppercase name, and do not end with a semicolon. Such 
> -# function macros are typically used for boiler-plate code, and will confuse the 
> -# parser if not removed.
> -
> -SKIP_FUNCTION_MACROS   = YES
> -
> -#---------------------------------------------------------------------------
> -# Configuration::addtions related to external references   
> -#---------------------------------------------------------------------------
> -
> -# The TAGFILES option can be used to specify one or more tagfiles. 
> -# Optionally an initial location of the external documentation 
> -# can be added for each tagfile. The format of a tag file without 
> -# this location is as follows: 
> -#   TAGFILES = file1 file2 ... 
> -# Adding location for the tag files is done as follows: 
> -#   TAGFILES = file1=loc1 "file2 = loc2" ... 
> -# where "loc1" and "loc2" can be relative or absolute paths or 
> -# URLs. If a location is present for each tag, the installdox tool 
> -# does not have to be run to correct the links.
> -# Note that each tag file must have a unique name
> -# (where the name does NOT include the path)
> -# If a tag file is not located in the directory in which doxygen 
> -# is run, you must also specify the path to the tagfile here.
> -
> -TAGFILES               = 
> -
> -# When a file name is specified after GENERATE_TAGFILE, doxygen will create 
> -# a tag file that is based on the input files it reads.
> -
> -GENERATE_TAGFILE       = 
> -
> -# If the ALLEXTERNALS tag is set to YES all external classes will be listed 
> -# in the class index. If set to NO only the inherited external classes 
> -# will be listed.
> -
> -ALLEXTERNALS           = NO
> -
> -# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed 
> -# in the modules index. If set to NO, only the current project's groups will 
> -# be listed.
> -
> -EXTERNAL_GROUPS        = YES
> -
> -# The PERL_PATH should be the absolute path and name of the perl script 
> -# interpreter (i.e. the result of `which perl').
> -
> -PERL_PATH              = /usr/bin/perl
> -
> -#---------------------------------------------------------------------------
> -# Configuration options related to the dot tool   
> -#---------------------------------------------------------------------------
> -
> -# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will 
> -# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base or 
> -# super classes. Setting the tag to NO turns the diagrams off. Note that this 
> -# option is superceded by the HAVE_DOT option below. This is only a fallback. It is 
> -# recommended to install and use dot, since it yields more powerful graphs.
> -
> -CLASS_DIAGRAMS         = YES
> -
> -# If set to YES, the inheritance and collaboration graphs will hide 
> -# inheritance and usage relations if the target is undocumented 
> -# or is not a class.
> -
> -HIDE_UNDOC_RELATIONS   = YES
> -
> -# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is 
> -# available from the path. This tool is part of Graphviz, a graph visualization 
> -# toolkit from AT&T and Lucent Bell Labs. The other options in this section 
> -# have no effect if this option is set to NO (the default)
> -
> -HAVE_DOT               = NO
> -
> -# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen 
> -# will generate a graph for each documented class showing the direct and 
> -# indirect inheritance relations. Setting this tag to YES will force the 
> -# the CLASS_DIAGRAMS tag to NO.
> -
> -CLASS_GRAPH            = YES
> -
> -# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen 
> -# will generate a graph for each documented class showing the direct and 
> -# indirect implementation dependencies (inheritance, containment, and 
> -# class references variables) of the class with other documented classes.
> -
> -COLLABORATION_GRAPH    = YES
> -
> -# If the UML_LOOK tag is set to YES doxygen will generate inheritance and 
> -# collaboration diagrams in a style similiar to the OMG's Unified Modeling 
> -# Language.
> -
> -UML_LOOK               = NO
> -
> -# If set to YES, the inheritance and collaboration graphs will show the 
> -# relations between templates and their instances.
> -
> -TEMPLATE_RELATIONS     = YES
> -
> -# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT 
> -# tags are set to YES then doxygen will generate a graph for each documented 
> -# file showing the direct and indirect include dependencies of the file with 
> -# other documented files.
> -
> -INCLUDE_GRAPH          = YES
> -
> -# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and 
> -# HAVE_DOT tags are set to YES then doxygen will generate a graph for each 
> -# documented header file showing the documented files that directly or 
> -# indirectly include this file.
> -
> -INCLUDED_BY_GRAPH      = YES
> -
> -# If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will 
> -# generate a call dependency graph for every global function or class method. 
> -# Note that enabling this option will significantly increase the time of a run. 
> -# So in most cases it will be better to enable call graphs for selected 
> -# functions only using the \callgraph command.
> -
> -CALL_GRAPH             = NO
> -
> -# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen 
> -# will graphical hierarchy of all classes instead of a textual one.
> -
> -GRAPHICAL_HIERARCHY    = YES
> -
> -# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images 
> -# generated by dot. Possible values are png, jpg, or gif
> -# If left blank png will be used.
> -
> -DOT_IMAGE_FORMAT       = gif
> -
> -# The tag DOT_PATH can be used to specify the path where the dot tool can be 
> -# found. If left blank, it is assumed the dot tool can be found on the path.
> -
> -DOT_PATH               = 
> -
> -# The DOTFILE_DIRS tag can be used to specify one or more directories that 
> -# contain dot files that are included in the documentation (see the 
> -# \dotfile command).
> -
> -DOTFILE_DIRS           = 
> -
> -# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the 
> -# graphs generated by dot. A depth value of 3 means that only nodes reachable 
> -# from the root by following a path via at most 3 edges will be shown. Nodes that 
> -# lay further from the root node will be omitted. Note that setting this option to 
> -# 1 or 2 may greatly reduce the computation time needed for large code bases. Also 
> -# note that a graph may be further truncated if the graph's image dimensions are 
> -# not sufficient to fit the graph (see MAX_DOT_GRAPH_WIDTH and MAX_DOT_GRAPH_HEIGHT). 
> -# If 0 is used for the depth value (the default), the graph is not depth-constrained.
> -
> -MAX_DOT_GRAPH_DEPTH    = 0
> -
> -# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will 
> -# generate a legend page explaining the meaning of the various boxes and 
> -# arrows in the dot generated graphs.
> -
> -GENERATE_LEGEND        = YES
> -
> -# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will 
> -# remove the intermediate dot files that are used to generate 
> -# the various graphs.
> -
> -DOT_CLEANUP            = YES
> -
> -#---------------------------------------------------------------------------
> -# Configuration::addtions related to the search engine   
> -#---------------------------------------------------------------------------
> -
> -# The SEARCHENGINE tag specifies whether or not a search engine should be 
> -# used. If set to NO the values of all tags below this one will be ignored.
> -
> -SEARCHENGINE           = NO
> diff --git a/hw/dmx/doc/doxygen.conf.in b/hw/dmx/doc/doxygen.conf.in
> new file mode 100644
> index 0000000..d0fe214
> --- /dev/null
> +++ b/hw/dmx/doc/doxygen.conf.in
> @@ -0,0 +1,1053 @@
> +# Doxyfile 1.3.4
> +
> +# This file describes the settings to be used by the documentation system
> +# doxygen (www.doxygen.org) for a project
> +#
> +# All text after a hash (#) is considered a comment and will be ignored
> +# The format is:
> +#       TAG = value [value, ...]
> +# For lists items can also be appended using:
> +#       TAG += value [value, ...]
> +# Values that contain spaces should be placed between quotes (" ")
> +
> +#---------------------------------------------------------------------------
> +# Project related configuration options
> +#---------------------------------------------------------------------------
> +
> +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded 
> +# by quotes) that should identify the project.
> +
> +PROJECT_NAME           = "Distributed Multihead X"
> +
> +# The PROJECT_NUMBER tag can be used to enter a project or revision number. 
> +# This could be handy for archiving the generated documentation or 
> +# if some version control system is used.
> +
> +PROJECT_NUMBER         = "dmx-1-2-20040604 and later"
> +
> +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) 
> +# base path where the generated documentation will be put. 
> +# If a relative path is entered, it will be relative to the location 
> +# where doxygen was started. If left blank the current directory will be used.
> +
> +OUTPUT_DIRECTORY       = 
> +
> +# The OUTPUT_LANGUAGE tag is used to specify the language in which all 
> +# documentation generated by doxygen is written. Doxygen will use this 
> +# information to generate all constant output in the proper language. 
> +# The default language is English, other supported languages are: 
> +# Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, Dutch, 
> +# Finnish, French, German, Greek, Hungarian, Italian, Japanese, Japanese-en 
> +# (Japanese with English messages), Korean, Norwegian, Polish, Portuguese, 
> +# Romanian, Russian, Serbian, Slovak, Slovene, Spanish, Swedish, and Ukrainian.
> +
> +OUTPUT_LANGUAGE        = English
> +
> +# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will 
> +# include brief member descriptions after the members that are listed in 
> +# the file and class documentation (similar to JavaDoc). 
> +# Set to NO to disable this.
> +
> +BRIEF_MEMBER_DESC      = YES
> +
> +# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend 
> +# the brief description of a member or function before the detailed description. 
> +# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the 
> +# brief descriptions will be completely suppressed.
> +
> +REPEAT_BRIEF           = YES
> +
> +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then 
> +# Doxygen will generate a detailed section even if there is only a brief 
> +# description.
> +
> +ALWAYS_DETAILED_SEC    = YES
> +
> +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all inherited 
> +# members of a class in the documentation of that class as if those members were 
> +# ordinary class members. Constructors, destructors and assignment operators of 
> +# the base classes will not be shown.
> +
> +INLINE_INHERITED_MEMB  = NO
> +
> +# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full 
> +# path before files name in the file list and in the header files. If set 
> +# to NO the shortest path that makes the file name unique will be used.
> +
> +FULL_PATH_NAMES        = NO
> +
> +# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag 
> +# can be used to strip a user-defined part of the path. Stripping is 
> +# only done if one of the specified strings matches the left-hand part of 
> +# the path. It is allowed to use relative paths in the argument list.
> +
> +STRIP_FROM_PATH        = 
> +
> +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter 
> +# (but less readable) file names. This can be useful is your file systems 
> +# doesn't support long names like on DOS, Mac, or CD-ROM.
> +
> +SHORT_NAMES            = NO
> +
> +# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen 
> +# will interpret the first line (until the first dot) of a JavaDoc-style 
> +# comment as the brief description. If set to NO, the JavaDoc 
> +# comments will behave just like the Qt-style comments (thus requiring an 
> +# explict @brief command for a brief description.
> +
> +JAVADOC_AUTOBRIEF      = NO
> +
> +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen 
> +# treat a multi-line C++ special comment block (i.e. a block of //! or /// 
> +# comments) as a brief description. This used to be the default behaviour. 
> +# The new default is to treat a multi-line C++ comment block as a detailed 
> +# description. Set this tag to YES if you prefer the old behaviour instead.
> +
> +MULTILINE_CPP_IS_BRIEF = NO
> +
> +# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented 
> +# member inherits the documentation from any documented member that it 
> +# reimplements.
> +
> +INHERIT_DOCS           = YES
> +
> +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC 
> +# tag is set to YES, then doxygen will reuse the documentation of the first 
> +# member in the group (if any) for the other members of the group. By default 
> +# all members of a group must be documented explicitly.
> +
> +DISTRIBUTE_GROUP_DOC   = NO
> +
> +# The TAB_SIZE tag can be used to set the number of spaces in a tab. 
> +# Doxygen uses this value to replace tabs by spaces in code fragments.
> +
> +TAB_SIZE               = 8
> +
> +# This tag can be used to specify a number of aliases that acts 
> +# as commands in the documentation. An alias has the form "name=value". 
> +# For example adding "sideeffect=\par Side Effects:\n" will allow you to 
> +# put the command \sideeffect (or @sideeffect) in the documentation, which 
> +# will result in a user-defined paragraph with heading "Side Effects:". 
> +# You can put \n's in the value part of an alias to insert newlines.
> +
> +ALIASES                = 
> +
> +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources 
> +# only. Doxygen will then generate output that is more tailored for C. 
> +# For instance, some of the names that are used will be different. The list 
> +# of all members will be omitted, etc.
> +
> +OPTIMIZE_OUTPUT_FOR_C  = YES
> +
> +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java sources 
> +# only. Doxygen will then generate output that is more tailored for Java. 
> +# For instance, namespaces will be presented as packages, qualified scopes 
> +# will look different, etc.
> +
> +OPTIMIZE_OUTPUT_JAVA   = NO
> +
> +# Set the SUBGROUPING tag to YES (the default) to allow class member groups of 
> +# the same type (for instance a group of public functions) to be put as a 
> +# subgroup of that type (e.g. under the Public Functions section). Set it to 
> +# NO to prevent subgrouping. Alternatively, this can be done per class using 
> +# the \nosubgrouping command.
> +
> +SUBGROUPING            = YES
> +
> +#---------------------------------------------------------------------------
> +# Build related configuration options
> +#---------------------------------------------------------------------------
> +
> +# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in 
> +# documentation are documented, even if no documentation was available. 
> +# Private class members and static file members will be hidden unless 
> +# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
> +
> +EXTRACT_ALL            = YES
> +
> +# If the EXTRACT_PRIVATE tag is set to YES all private members of a class 
> +# will be included in the documentation.
> +
> +EXTRACT_PRIVATE        = NO
> +
> +# If the EXTRACT_STATIC tag is set to YES all static members of a file 
> +# will be included in the documentation.
> +
> +EXTRACT_STATIC         = YES
> +
> +# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) 
> +# defined locally in source files will be included in the documentation. 
> +# If set to NO only classes defined in header files are included.
> +
> +EXTRACT_LOCAL_CLASSES  = YES
> +
> +# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all 
> +# undocumented members of documented classes, files or namespaces. 
> +# If set to NO (the default) these members will be included in the 
> +# various overviews, but no documentation section is generated. 
> +# This option has no effect if EXTRACT_ALL is enabled.
> +
> +HIDE_UNDOC_MEMBERS     = YES
> +
> +# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all 
> +# undocumented classes that are normally visible in the class hierarchy. 
> +# If set to NO (the default) these classes will be included in the various 
> +# overviews. This option has no effect if EXTRACT_ALL is enabled.
> +
> +HIDE_UNDOC_CLASSES     = NO
> +
> +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all 
> +# friend (class|struct|union) declarations. 
> +# If set to NO (the default) these declarations will be included in the 
> +# documentation.
> +
> +HIDE_FRIEND_COMPOUNDS  = NO
> +
> +# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any 
> +# documentation blocks found inside the body of a function. 
> +# If set to NO (the default) these blocks will be appended to the 
> +# function's detailed documentation block.
> +
> +HIDE_IN_BODY_DOCS      = NO
> +
> +# The INTERNAL_DOCS tag determines if documentation 
> +# that is typed after a \internal command is included. If the tag is set 
> +# to NO (the default) then the documentation will be excluded. 
> +# Set it to YES to include the internal documentation.
> +
> +INTERNAL_DOCS          = NO
> +
> +# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate 
> +# file names in lower-case letters. If set to YES upper-case letters are also 
> +# allowed. This is useful if you have classes or files whose names only differ 
> +# in case and if your file system supports case sensitive file names. Windows 
> +# users are advised to set this option to NO.
> +
> +CASE_SENSE_NAMES       = YES
> +
> +# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen 
> +# will show members with their full class and namespace scopes in the 
> +# documentation. If set to YES the scope will be hidden.
> +
> +HIDE_SCOPE_NAMES       = NO
> +
> +# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen 
> +# will put a list of the files that are included by a file in the documentation 
> +# of that file.
> +
> +SHOW_INCLUDE_FILES     = YES
> +
> +# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] 
> +# is inserted in the documentation for inline members.
> +
> +INLINE_INFO            = YES
> +
> +# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen 
> +# will sort the (detailed) documentation of file and class members 
> +# alphabetically by member name. If set to NO the members will appear in 
> +# declaration order.
> +
> +SORT_MEMBER_DOCS       = YES
> +
> +# The GENERATE_TODOLIST tag can be used to enable (YES) or 
> +# disable (NO) the todo list. This list is created by putting \todo 
> +# commands in the documentation.
> +
> +GENERATE_TODOLIST      = YES
> +
> +# The GENERATE_TESTLIST tag can be used to enable (YES) or 
> +# disable (NO) the test list. This list is created by putting \test 
> +# commands in the documentation.
> +
> +GENERATE_TESTLIST      = YES
> +
> +# The GENERATE_BUGLIST tag can be used to enable (YES) or 
> +# disable (NO) the bug list. This list is created by putting \bug 
> +# commands in the documentation.
> +
> +GENERATE_BUGLIST       = YES
> +
> +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or 
> +# disable (NO) the deprecated list. This list is created by putting 
> +# \deprecated commands in the documentation.
> +
> +GENERATE_DEPRECATEDLIST= YES
> +
> +# The ENABLED_SECTIONS tag can be used to enable conditional 
> +# documentation sections, marked by \if sectionname ... \endif.
> +
> +ENABLED_SECTIONS       = 
> +
> +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines 
> +# the initial value of a variable or define consists of for it to appear in 
> +# the documentation. If the initializer consists of more lines than specified 
> +# here it will be hidden. Use a value of 0 to hide initializers completely. 
> +# The appearance of the initializer of individual variables and defines in the 
> +# documentation can be controlled using \showinitializer or \hideinitializer 
> +# command in the documentation regardless of this setting.
> +
> +MAX_INITIALIZER_LINES  = 30
> +
> +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated 
> +# at the bottom of the documentation of classes and structs. If set to YES the 
> +# list will mention the files that were used to generate the documentation.
> +
> +SHOW_USED_FILES        = YES
> +
> +#---------------------------------------------------------------------------
> +# configuration options related to warning and progress messages
> +#---------------------------------------------------------------------------
> +
> +# The QUIET tag can be used to turn on/off the messages that are generated 
> +# by doxygen. Possible values are YES and NO. If left blank NO is used.
> +
> +QUIET                  = YES
> +
> +# The WARNINGS tag can be used to turn on/off the warning messages that are 
> +# generated by doxygen. Possible values are YES and NO. If left blank 
> +# NO is used.
> +
> +WARNINGS               = YES
> +
> +# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings 
> +# for undocumented members. If EXTRACT_ALL is set to YES then this flag will 
> +# automatically be disabled.
> +
> +WARN_IF_UNDOCUMENTED   = YES
> +
> +# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for 
> +# potential errors in the documentation, such as not documenting some 
> +# parameters in a documented function, or documenting parameters that 
> +# don't exist or using markup commands wrongly.
> +
> +WARN_IF_DOC_ERROR      = YES
> +
> +# The WARN_FORMAT tag determines the format of the warning messages that 
> +# doxygen can produce. The string should contain the $file, $line, and $text 
> +# tags, which will be replaced by the file and line number from which the 
> +# warning originated and the warning text.
> +
> +WARN_FORMAT            = "$file:$line: $text"
> +
> +# The WARN_LOGFILE tag can be used to specify a file to which warning 
> +# and error messages should be written. If left blank the output is written 
> +# to stderr.
> +
> +WARN_LOGFILE           = 
> +
> +#---------------------------------------------------------------------------
> +# configuration options related to the input files
> +#---------------------------------------------------------------------------
> +
> +# The INPUT tag can be used to specify the files and/or directories that contain 
> +# documented source files. You may enter file names like "myfile.cpp" or 
> +# directories like "/usr/src/myproject". Separate the files or directories 
> +# with spaces.
> +
> +INPUT                  = @top_srcdir@/hw/dmx \
> +                         @top_srcdir@/hw/dmx/input \
> +                         @top_srcdir@/hw/dmx/config
> +
> +# If the value of the INPUT tag contains directories, you can use the 
> +# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 
> +# and *.h) to filter out the source-files in the directories. If left 
> +# blank the following patterns are tested: 
> +# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx *.hpp 
> +# *.h++ *.idl *.odl *.cs *.php *.php3 *.inc
> +
> +FILE_PATTERNS          = 
> +
> +# The RECURSIVE tag can be used to turn specify whether or not subdirectories 
> +# should be searched for input files as well. Possible values are YES and NO. 
> +# If left blank NO is used.
> +
> +RECURSIVE              = NO
> +
> +# The EXCLUDE tag can be used to specify files and/or directories that should 
> +# excluded from the INPUT source files. This way you can easily exclude a 
> +# subdirectory from a directory tree whose root is specified with the INPUT tag.
> +
> +EXCLUDE                = @top_srcdir@/hw/dmx/config/parser.c \
> +                         @top_srcdir@/hw/dmx/config/parser.h \
> +                         @top_srcdir@/hw/dmx/config/scanner.c
> +
> +# The EXCLUDE_SYMLINKS tag can be used select whether or not files or directories 
> +# that are symbolic links (a Unix filesystem feature) are excluded from the input.
> +
> +EXCLUDE_SYMLINKS       = YES
> +
> +# If the value of the INPUT tag contains directories, you can use the 
> +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude 
> +# certain files from those directories.
> +
> +EXCLUDE_PATTERNS       = atKeynames.h \
> +                         Canvas*.*
> +
> +# The EXAMPLE_PATH tag can be used to specify one or more files or 
> +# directories that contain example code fragments that are included (see 
> +# the \include command).
> +
> +EXAMPLE_PATH           = 
> +
> +# If the value of the EXAMPLE_PATH tag contains directories, you can use the 
> +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 
> +# and *.h) to filter out the source-files in the directories. If left 
> +# blank all files are included.
> +
> +EXAMPLE_PATTERNS       = 
> +
> +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be 
> +# searched for input files to be used with the \include or \dontinclude 
> +# commands irrespective of the value of the RECURSIVE tag. 
> +# Possible values are YES and NO. If left blank NO is used.
> +
> +EXAMPLE_RECURSIVE      = NO
> +
> +# The IMAGE_PATH tag can be used to specify one or more files or 
> +# directories that contain image that are included in the documentation (see 
> +# the \image command).
> +
> +IMAGE_PATH             = 
> +
> +# The INPUT_FILTER tag can be used to specify a program that doxygen should 
> +# invoke to filter for each input file. Doxygen will invoke the filter program 
> +# by executing (via popen()) the command <filter> <input-file>, where <filter> 
> +# is the value of the INPUT_FILTER tag, and <input-file> is the name of an 
> +# input file. Doxygen will then use the output that the filter program writes 
> +# to standard output.
> +
> +INPUT_FILTER           = 
> +
> +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using 
> +# INPUT_FILTER) will be used to filter the input files when producing source 
> +# files to browse (i.e. when SOURCE_BROWSER is set to YES).
> +
> +FILTER_SOURCE_FILES    = NO
> +
> +#---------------------------------------------------------------------------
> +# configuration options related to source browsing
> +#---------------------------------------------------------------------------
> +
> +# If the SOURCE_BROWSER tag is set to YES then a list of source files will 
> +# be generated. Documented entities will be cross-referenced with these sources.
> +
> +SOURCE_BROWSER         = NO
> +
> +# Setting the INLINE_SOURCES tag to YES will include the body 
> +# of functions and classes directly in the documentation.
> +
> +INLINE_SOURCES         = NO
> +
> +# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct 
> +# doxygen to hide any special comment blocks from generated source code 
> +# fragments. Normal C and C++ comments will always remain visible.
> +
> +STRIP_CODE_COMMENTS    = YES
> +
> +# If the REFERENCED_BY_RELATION tag is set to YES (the default) 
> +# then for each documented function all documented 
> +# functions referencing it will be listed.
> +
> +REFERENCED_BY_RELATION = YES
> +
> +# If the REFERENCES_RELATION tag is set to YES (the default) 
> +# then for each documented function all documented entities 
> +# called/used by that function will be listed.
> +
> +REFERENCES_RELATION    = YES
> +
> +# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen 
> +# will generate a verbatim copy of the header file for each class for 
> +# which an include is specified. Set to NO to disable this.
> +
> +VERBATIM_HEADERS       = YES
> +
> +#---------------------------------------------------------------------------
> +# configuration options related to the alphabetical class index
> +#---------------------------------------------------------------------------
> +
> +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index 
> +# of all compounds will be generated. Enable this if the project 
> +# contains a lot of classes, structs, unions or interfaces.
> +
> +ALPHABETICAL_INDEX     = YES
> +
> +# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then 
> +# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns 
> +# in which this list will be split (can be a number in the range [1..20])
> +
> +COLS_IN_ALPHA_INDEX    = 5
> +
> +# In case all classes in a project start with a common prefix, all 
> +# classes will be put under the same header in the alphabetical index. 
> +# The IGNORE_PREFIX tag can be used to specify one or more prefixes that 
> +# should be ignored while generating the index headers.
> +
> +IGNORE_PREFIX          = 
> +
> +#---------------------------------------------------------------------------
> +# configuration options related to the HTML output
> +#---------------------------------------------------------------------------
> +
> +# If the GENERATE_HTML tag is set to YES (the default) Doxygen will 
> +# generate HTML output.
> +
> +GENERATE_HTML          = YES
> +
> +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. 
> +# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
> +# put in front of it. If left blank `html' will be used as the default path.
> +
> +HTML_OUTPUT            = html
> +
> +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for 
> +# each generated HTML page (for example: .htm,.php,.asp). If it is left blank 
> +# doxygen will generate files with .html extension.
> +
> +HTML_FILE_EXTENSION    = .html
> +
> +# The HTML_HEADER tag can be used to specify a personal HTML header for 
> +# each generated HTML page. If it is left blank doxygen will generate a 
> +# standard header.
> +
> +HTML_HEADER            = @top_srcdir@/hw/dmx/doc/doxygen.head
> +
> +# The HTML_FOOTER tag can be used to specify a personal HTML footer for 
> +# each generated HTML page. If it is left blank doxygen will generate a 
> +# standard footer.
> +
> +HTML_FOOTER            = @top_srcdir@/hw/dmx/doc/doxygen.foot
> +
> +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading 
> +# style sheet that is used by each HTML page. It can be used to 
> +# fine-tune the look of the HTML output. If the tag is left blank doxygen 
> +# will generate a default style sheet
> +
> +HTML_STYLESHEET        = @top_srcdir@/hw/dmx/doc/doxygen.css
> +
> +# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, 
> +# files or namespaces will be aligned in HTML using tables. If set to 
> +# NO a bullet list will be used.
> +
> +HTML_ALIGN_MEMBERS     = YES
> +
> +# If the GENERATE_HTMLHELP tag is set to YES, additional index files 
> +# will be generated that can be used as input for tools like the 
> +# Microsoft HTML help workshop to generate a compressed HTML help file (.chm) 
> +# of the generated HTML documentation.
> +
> +GENERATE_HTMLHELP      = NO
> +
> +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can 
> +# be used to specify the file name of the resulting .chm file. You 
> +# can add a path in front of the file if the result should not be 
> +# written to the html output dir.
> +
> +CHM_FILE               = 
> +
> +# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can 
> +# be used to specify the location (absolute path including file name) of 
> +# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run 
> +# the HTML help compiler on the generated index.hhp.
> +
> +HHC_LOCATION           = 
> +
> +# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag 
> +# controls if a separate .chi index file is generated (YES) or that 
> +# it should be included in the master .chm file (NO).
> +
> +GENERATE_CHI           = NO
> +
> +# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag 
> +# controls whether a binary table of contents is generated (YES) or a 
> +# normal table of contents (NO) in the .chm file.
> +
> +BINARY_TOC             = NO
> +
> +# The TOC_EXPAND flag can be set to YES to add extra items for group members 
> +# to the contents of the HTML help documentation and to the tree view.
> +
> +TOC_EXPAND             = NO
> +
> +# The DISABLE_INDEX tag can be used to turn on/off the condensed index at 
> +# top of each HTML page. The value NO (the default) enables the index and 
> +# the value YES disables it.
> +
> +DISABLE_INDEX          = NO
> +
> +# This tag can be used to set the number of enum values (range [1..20]) 
> +# that doxygen will group on one line in the generated HTML documentation.
> +
> +ENUM_VALUES_PER_LINE   = 4
> +
> +# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be
> +# generated containing a tree-like index structure (just like the one that 
> +# is generated for HTML Help). For this to work a browser that supports 
> +# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, 
> +# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are 
> +# probably better off using the HTML help feature.
> +
> +GENERATE_TREEVIEW      = YES
> +
> +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be 
> +# used to set the initial width (in pixels) of the frame in which the tree 
> +# is shown.
> +
> +TREEVIEW_WIDTH         = 250
> +
> +#---------------------------------------------------------------------------
> +# configuration options related to the LaTeX output
> +#---------------------------------------------------------------------------
> +
> +# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will 
> +# generate Latex output.
> +
> +GENERATE_LATEX         = NO
> +
> +# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. 
> +# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
> +# put in front of it. If left blank `latex' will be used as the default path.
> +
> +LATEX_OUTPUT           = latex
> +
> +# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be 
> +# invoked. If left blank `latex' will be used as the default command name.
> +
> +LATEX_CMD_NAME         = latex
> +
> +# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to 
> +# generate index for LaTeX. If left blank `makeindex' will be used as the 
> +# default command name.
> +
> +MAKEINDEX_CMD_NAME     = makeindex
> +
> +# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact 
> +# LaTeX documents. This may be useful for small projects and may help to 
> +# save some trees in general.
> +
> +COMPACT_LATEX          = NO
> +
> +# The PAPER_TYPE tag can be used to set the paper type that is used 
> +# by the printer. Possible values are: a4, a4wide, letter, legal and 
> +# executive. If left blank a4wide will be used.
> +
> +PAPER_TYPE             = a4wide
> +
> +# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX 
> +# packages that should be included in the LaTeX output.
> +
> +EXTRA_PACKAGES         = 
> +
> +# The LATEX_HEADER tag can be used to specify a personal LaTeX header for 
> +# the generated latex document. The header should contain everything until 
> +# the first chapter. If it is left blank doxygen will generate a 
> +# standard header. Notice: only use this tag if you know what you are doing!
> +
> +LATEX_HEADER           = 
> +
> +# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated 
> +# is prepared for conversion to pdf (using ps2pdf). The pdf file will 
> +# contain links (just like the HTML output) instead of page references 
> +# This makes the output suitable for online browsing using a pdf viewer.
> +
> +PDF_HYPERLINKS         = NO
> +
> +# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of 
> +# plain latex in the generated Makefile. Set this option to YES to get a 
> +# higher quality PDF documentation.
> +
> +USE_PDFLATEX           = NO
> +
> +# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. 
> +# command to the generated LaTeX files. This will instruct LaTeX to keep 
> +# running if errors occur, instead of asking the user for help. 
> +# This option is also used when generating formulas in HTML.
> +
> +LATEX_BATCHMODE        = NO
> +
> +# If LATEX_HIDE_INDICES is set to YES then doxygen will not 
> +# include the index chapters (such as File Index, Compound Index, etc.) 
> +# in the output.
> +
> +LATEX_HIDE_INDICES     = NO
> +
> +#---------------------------------------------------------------------------
> +# configuration options related to the RTF output
> +#---------------------------------------------------------------------------
> +
> +# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output 
> +# The RTF output is optimised for Word 97 and may not look very pretty with 
> +# other RTF readers or editors.
> +
> +GENERATE_RTF           = NO
> +
> +# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. 
> +# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
> +# put in front of it. If left blank `rtf' will be used as the default path.
> +
> +RTF_OUTPUT             = rtf
> +
> +# If the COMPACT_RTF tag is set to YES Doxygen generates more compact 
> +# RTF documents. This may be useful for small projects and may help to 
> +# save some trees in general.
> +
> +COMPACT_RTF            = NO
> +
> +# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated 
> +# will contain hyperlink fields. The RTF file will 
> +# contain links (just like the HTML output) instead of page references. 
> +# This makes the output suitable for online browsing using WORD or other 
> +# programs which support those fields. 
> +# Note: wordpad (write) and others do not support links.
> +
> +RTF_HYPERLINKS         = NO
> +
> +# Load stylesheet definitions from file. Syntax is similar to doxygen's 
> +# config file, i.e. a series of assigments. You only have to provide 
> +# replacements, missing definitions are set to their default value.
> +
> +RTF_STYLESHEET_FILE    = 
> +
> +# Set optional variables used in the generation of an rtf document. 
> +# Syntax is similar to doxygen's config file.
> +
> +RTF_EXTENSIONS_FILE    = 
> +
> +#---------------------------------------------------------------------------
> +# configuration options related to the man page output
> +#---------------------------------------------------------------------------
> +
> +# If the GENERATE_MAN tag is set to YES (the default) Doxygen will 
> +# generate man pages
> +
> +GENERATE_MAN           = NO
> +
> +# The MAN_OUTPUT tag is used to specify where the man pages will be put. 
> +# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
> +# put in front of it. If left blank `man' will be used as the default path.
> +
> +MAN_OUTPUT             = man
> +
> +# The MAN_EXTENSION tag determines the extension that is added to 
> +# the generated man pages (default is the subroutine's section .3)
> +
> +MAN_EXTENSION          = .3
> +
> +# If the MAN_LINKS tag is set to YES and Doxygen generates man output, 
> +# then it will generate one additional man file for each entity 
> +# documented in the real man page(s). These additional files 
> +# only source the real man page, but without them the man command 
> +# would be unable to find the correct page. The default is NO.
> +
> +MAN_LINKS              = NO
> +
> +#---------------------------------------------------------------------------
> +# configuration options related to the XML output
> +#---------------------------------------------------------------------------
> +
> +# If the GENERATE_XML tag is set to YES Doxygen will 
> +# generate an XML file that captures the structure of 
> +# the code including all documentation. Note that this 
> +# feature is still experimental and incomplete at the 
> +# moment.
> +
> +GENERATE_XML           = NO
> +
> +# The XML_OUTPUT tag is used to specify where the XML pages will be put. 
> +# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
> +# put in front of it. If left blank `xml' will be used as the default path.
> +
> +XML_OUTPUT             = xml
> +
> +# The XML_SCHEMA tag can be used to specify an XML schema, 
> +# which can be used by a validating XML parser to check the 
> +# syntax of the XML files.
> +
> +XML_SCHEMA             = 
> +
> +# The XML_DTD tag can be used to specify an XML DTD, 
> +# which can be used by a validating XML parser to check the 
> +# syntax of the XML files.
> +
> +XML_DTD                = 
> +
> +#---------------------------------------------------------------------------
> +# configuration options for the AutoGen Definitions output
> +#---------------------------------------------------------------------------
> +
> +# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will 
> +# generate an AutoGen Definitions (see autogen.sf.net) file 
> +# that captures the structure of the code including all 
> +# documentation. Note that this feature is still experimental 
> +# and incomplete at the moment.
> +
> +GENERATE_AUTOGEN_DEF   = NO
> +
> +#---------------------------------------------------------------------------
> +# configuration options related to the Perl module output
> +#---------------------------------------------------------------------------
> +
> +# If the GENERATE_PERLMOD tag is set to YES Doxygen will 
> +# generate a Perl module file that captures the structure of 
> +# the code including all documentation. Note that this 
> +# feature is still experimental and incomplete at the 
> +# moment.
> +
> +GENERATE_PERLMOD       = NO
> +
> +# If the PERLMOD_LATEX tag is set to YES Doxygen will generate 
> +# the necessary Makefile rules, Perl scripts and LaTeX code to be able 
> +# to generate PDF and DVI output from the Perl module output.
> +
> +PERLMOD_LATEX          = NO
> +
> +# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be 
> +# nicely formatted so it can be parsed by a human reader.  This is useful 
> +# if you want to understand what is going on.  On the other hand, if this 
> +# tag is set to NO the size of the Perl module output will be much smaller 
> +# and Perl will parse it just the same.
> +
> +PERLMOD_PRETTY         = YES
> +
> +# The names of the make variables in the generated doxyrules.make file 
> +# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. 
> +# This is useful so different doxyrules.make files included by the same 
> +# Makefile don't overwrite each other's variables.
> +
> +PERLMOD_MAKEVAR_PREFIX = 
> +
> +#---------------------------------------------------------------------------
> +# Configuration options related to the preprocessor   
> +#---------------------------------------------------------------------------
> +
> +# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will 
> +# evaluate all C-preprocessor directives found in the sources and include 
> +# files.
> +
> +ENABLE_PREPROCESSING   = YES
> +
> +# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro 
> +# names in the source code. If set to NO (the default) only conditional 
> +# compilation will be performed. Macro expansion can be done in a controlled 
> +# way by setting EXPAND_ONLY_PREDEF to YES.
> +
> +MACRO_EXPANSION        = NO
> +
> +# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES 
> +# then the macro expansion is limited to the macros specified with the 
> +# PREDEFINED and EXPAND_AS_PREDEFINED tags.
> +
> +EXPAND_ONLY_PREDEF     = NO
> +
> +# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files 
> +# in the INCLUDE_PATH (see below) will be search if a #include is found.
> +
> +SEARCH_INCLUDES        = YES
> +
> +# The INCLUDE_PATH tag can be used to specify one or more directories that 
> +# contain include files that are not input files but should be processed by 
> +# the preprocessor.
> +
> +INCLUDE_PATH           = 
> +
> +# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard 
> +# patterns (like *.h and *.hpp) to filter out the header-files in the 
> +# directories. If left blank, the patterns specified with FILE_PATTERNS will 
> +# be used.
> +
> +INCLUDE_FILE_PATTERNS  = 
> +
> +# The PREDEFINED tag can be used to specify one or more macro names that 
> +# are defined before the preprocessor is started (similar to the -D option of 
> +# gcc). The argument of the tag is a list of macros of the form: name 
> +# or name=definition (no spaces). If the definition and the = are 
> +# omitted =1 is assumed.
> +
> +PREDEFINED             = SHAPE \
> +                         RENDER \
> +                         XKB \
> +                         XINPUT
> +
> +# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then 
> +# this tag can be used to specify a list of macro names that should be expanded. 
> +# The macro definition that is found in the sources will be used. 
> +# Use the PREDEFINED tag if you want to use a different macro definition.
> +
> +EXPAND_AS_DEFINED      = 
> +
> +# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then 
> +# doxygen's preprocessor will remove all function-like macros that are alone 
> +# on a line, have an all uppercase name, and do not end with a semicolon. Such 
> +# function macros are typically used for boiler-plate code, and will confuse the 
> +# parser if not removed.
> +
> +SKIP_FUNCTION_MACROS   = YES
> +
> +#---------------------------------------------------------------------------
> +# Configuration::addtions related to external references   
> +#---------------------------------------------------------------------------
> +
> +# The TAGFILES option can be used to specify one or more tagfiles. 
> +# Optionally an initial location of the external documentation 
> +# can be added for each tagfile. The format of a tag file without 
> +# this location is as follows: 
> +#   TAGFILES = file1 file2 ... 
> +# Adding location for the tag files is done as follows: 
> +#   TAGFILES = file1=loc1 "file2 = loc2" ... 
> +# where "loc1" and "loc2" can be relative or absolute paths or 
> +# URLs. If a location is present for each tag, the installdox tool 
> +# does not have to be run to correct the links.
> +# Note that each tag file must have a unique name
> +# (where the name does NOT include the path)
> +# If a tag file is not located in the directory in which doxygen 
> +# is run, you must also specify the path to the tagfile here.
> +
> +TAGFILES               = 
> +
> +# When a file name is specified after GENERATE_TAGFILE, doxygen will create 
> +# a tag file that is based on the input files it reads.
> +
> +GENERATE_TAGFILE       = 
> +
> +# If the ALLEXTERNALS tag is set to YES all external classes will be listed 
> +# in the class index. If set to NO only the inherited external classes 
> +# will be listed.
> +
> +ALLEXTERNALS           = NO
> +
> +# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed 
> +# in the modules index. If set to NO, only the current project's groups will 
> +# be listed.
> +
> +EXTERNAL_GROUPS        = YES
> +
> +# The PERL_PATH should be the absolute path and name of the perl script 
> +# interpreter (i.e. the result of `which perl').
> +
> +PERL_PATH              = /usr/bin/perl
> +
> +#---------------------------------------------------------------------------
> +# Configuration options related to the dot tool   
> +#---------------------------------------------------------------------------
> +
> +# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will 
> +# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base or 
> +# super classes. Setting the tag to NO turns the diagrams off. Note that this 
> +# option is superceded by the HAVE_DOT option below. This is only a fallback. It is 
> +# recommended to install and use dot, since it yields more powerful graphs.
> +
> +CLASS_DIAGRAMS         = YES
> +
> +# If set to YES, the inheritance and collaboration graphs will hide 
> +# inheritance and usage relations if the target is undocumented 
> +# or is not a class.
> +
> +HIDE_UNDOC_RELATIONS   = YES
> +
> +# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is 
> +# available from the path. This tool is part of Graphviz, a graph visualization 
> +# toolkit from AT&T and Lucent Bell Labs. The other options in this section 
> +# have no effect if this option is set to NO (the default)
> +
> +HAVE_DOT               = NO
> +
> +# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen 
> +# will generate a graph for each documented class showing the direct and 
> +# indirect inheritance relations. Setting this tag to YES will force the 
> +# the CLASS_DIAGRAMS tag to NO.
> +
> +CLASS_GRAPH            = YES
> +
> +# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen 
> +# will generate a graph for each documented class showing the direct and 
> +# indirect implementation dependencies (inheritance, containment, and 
> +# class references variables) of the class with other documented classes.
> +
> +COLLABORATION_GRAPH    = YES
> +
> +# If the UML_LOOK tag is set to YES doxygen will generate inheritance and 
> +# collaboration diagrams in a style similiar to the OMG's Unified Modeling 
> +# Language.
> +
> +UML_LOOK               = NO
> +
> +# If set to YES, the inheritance and collaboration graphs will show the 
> +# relations between templates and their instances.
> +
> +TEMPLATE_RELATIONS     = YES
> +
> +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT 
> +# tags are set to YES then doxygen will generate a graph for each documented 
> +# file showing the direct and indirect include dependencies of the file with 
> +# other documented files.
> +
> +INCLUDE_GRAPH          = YES
> +
> +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and 
> +# HAVE_DOT tags are set to YES then doxygen will generate a graph for each 
> +# documented header file showing the documented files that directly or 
> +# indirectly include this file.
> +
> +INCLUDED_BY_GRAPH      = YES
> +
> +# If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will 
> +# generate a call dependency graph for every global function or class method. 
> +# Note that enabling this option will significantly increase the time of a run. 
> +# So in most cases it will be better to enable call graphs for selected 
> +# functions only using the \callgraph command.
> +
> +CALL_GRAPH             = NO
> +
> +# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen 
> +# will graphical hierarchy of all classes instead of a textual one.
> +
> +GRAPHICAL_HIERARCHY    = YES
> +
> +# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images 
> +# generated by dot. Possible values are png, jpg, or gif
> +# If left blank png will be used.
> +
> +DOT_IMAGE_FORMAT       = gif
> +
> +# The tag DOT_PATH can be used to specify the path where the dot tool can be 
> +# found. If left blank, it is assumed the dot tool can be found on the path.
> +
> +DOT_PATH               = 
> +
> +# The DOTFILE_DIRS tag can be used to specify one or more directories that 
> +# contain dot files that are included in the documentation (see the 
> +# \dotfile command).
> +
> +DOTFILE_DIRS           = 
> +
> +# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the 
> +# graphs generated by dot. A depth value of 3 means that only nodes reachable 
> +# from the root by following a path via at most 3 edges will be shown. Nodes that 
> +# lay further from the root node will be omitted. Note that setting this option to 
> +# 1 or 2 may greatly reduce the computation time needed for large code bases. Also 
> +# note that a graph may be further truncated if the graph's image dimensions are 
> +# not sufficient to fit the graph (see MAX_DOT_GRAPH_WIDTH and MAX_DOT_GRAPH_HEIGHT). 
> +# If 0 is used for the depth value (the default), the graph is not depth-constrained.
> +
> +MAX_DOT_GRAPH_DEPTH    = 0
> +
> +# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will 
> +# generate a legend page explaining the meaning of the various boxes and 
> +# arrows in the dot generated graphs.
> +
> +GENERATE_LEGEND        = YES
> +
> +# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will 
> +# remove the intermediate dot files that are used to generate 
> +# the various graphs.
> +
> +DOT_CLEANUP            = YES
> +
> +#---------------------------------------------------------------------------
> +# Configuration::addtions related to the search engine   
> +#---------------------------------------------------------------------------
> +
> +# The SEARCHENGINE tag specifies whether or not a search engine should be 
> +# used. If set to NO the values of all tags below this one will be ignored.
> +
> +SEARCHENGINE           = NO



I can't comment on the doxygen code for now. I am not familiar with this
tool. I'll spent some more time later today to try it out more.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.x.org/archives/xorg-devel/attachments/20110105/cfebdc72/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 197 bytes
Desc: This is a digitally signed message part
URL: <http://lists.x.org/archives/xorg-devel/attachments/20110105/cfebdc72/attachment-0001.pgp>


More information about the xorg-devel mailing list