diff --git a/Makefile b/Makefile
index 90ae485d..007d25c5 100644
--- a/Makefile
+++ b/Makefile
@@ -67,3 +67,6 @@ tar:
"$(NAME)-$(RELEASE)" ) ; \
rm -rf tmp
+.PHONY: doc
+doc:
+ make -C core/ doc
\ No newline at end of file
diff --git a/core/doxygen_proj b/core/doxygen_proj
index 42d38ffa..0526789a 100644
--- a/core/doxygen_proj
+++ b/core/doxygen_proj
@@ -468,7 +468,8 @@ INPUT = amci etc lib plug-in rpm rtp scripts . \
../apps/ivr \
../apps/mailbox \
../apps/mp3 \
- ../apps/voicemail
+ ../apps/voicemail \
+ ../doc/doxyref.h
# If the value of the INPUT tag contains directories, you can use the
@@ -508,7 +509,7 @@ EXCLUDE_PATTERNS =
# directories that contain example code fragments that are included (see
# the \include command).
-EXAMPLE_PATH =
+EXAMPLE_PATH = ../doc ../
# 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
diff --git a/doc/doxyref.h b/doc/doxyref.h
new file mode 100644
index 00000000..a2fe8e25
--- /dev/null
+++ b/doc/doxyref.h
@@ -0,0 +1,220 @@
+/* \file This file generates Doxygen pages from files in the /doc
+ directory
+ */
+
+/*! \page index SEMS Documentation
+ * \section news News & Changes
+ * \arg \ref whatsnew_0100
+ * \arg \ref changelog
+ *
+ * \section general General
+ * \arg \ref Readme
+ *
+ * \section userdoc User's documentation
+ * \arg \ref Compiling
+ * \arg \ref Configure-Sems-Ser-HOWTO
+ * \arg \ref AppDoc
+ *
+ * \section developerdoc Developer's documentation
+ * \arg
+ * SEMS Design Overview
+ * \arg
+ * Application Development Tutorial
+ * \arg \ref ComponentDoc
+ *
+ * \section weblinks Web sites
+ * \arg \b Main: SEMS website http://iptel.org/sems
+ * \arg \b sems & semsdev Lists: List server http://lists.iptel.org
+ * \arg \b Bugs: Bug tracker: http://tracker.iptel.org/browse/SEMS
+ *
+ */
+
+/*! \page whatsnew_0100 What's new in SEMS 0.10.0
+ * SEMS has changed a lot between 0.9 versions and 0.10 versions.
+ * The file WHATSNEW lists the most important changes:
+ * \verbinclude WHATSNEW
+ *
+ */
+
+/*! \page changelog Changelog (from 0.10.0-rc1 onwards)
+ * CHANGELOG for SEMS which is from 0.10.0-rc1 onwards
+ * \verbinclude CHANGELOG
+ *
+ */
+
+/*! \page Readme SEMS Readme file
+ * SEMS Readme file:
+ *
+ * \verbinclude README
+ *
+ */
+
+/*! \page Compiling Additional compiling instructions (ivr and mp3)
+ * \verbinclude COMPILING
+ *
+ */
+
+/*! \page Configure-Sems-Ser-HOWTO mini-Howto on how to configure SER and SEMS to work together
+ *
+ * Be sure to also check the instructions that are on the page with the
+ *
+ * application development tutorial, there is step by step instructions including
+ * a complete set of configuration files that should get you started with SEMS
+ * very quickly.
+ *
+ * \verbinclude Configure-Sems-Ser-HOWTO
+ *
+ */
+
+/*! \page AppDoc Application Modules Documentation
+ * Documentation for the applications that come with SEMS.
+ *
+ * \section announcementappdoc Announcement Applications
+ * Applications that play announcements to the caller.
+ * For plain announcements, there is the announcement module.
+ *
+ *
- \ref ModuleDoc_announcement
+ *
+ * Pre-call announcements can either be implemented using early media with the
+ * early_announce application,
+ *
+ * - \ref ModuleDoc_early_announce
+ *
+ * or the session is established and after the announcement SEMS acts as B2BUA,
+ * inviting the original r-uri, and finally reinviting the caller:
+ *
+ *
+ *
+ * Another possibility is to establish the session and then REFER the caller:
+ * - \ref ModuleDoc_announce_transfer
+ *
+ * As SEMS can also do UAC authentication for a call using the uac_auth
+ * component plugin (\Ref ModuleDoc_uac_auth). An example where this is used
+ * is the announce_auth application:
+ * - \ref ModuleDoc_announce_auth
+ *
+ * \section voicemailboxappdoc Voicemail and Mailbox
+ * SEMS has a voicemail application, which send a recorded message via
+ * Email (voicemail2email):
+ *
+ *
+ *
+ * There is also a mailbox application, which stores recorded messages (in an IMAP
+ * server) and users can dial in to check their messages:
+ *
+ *
+ *
+ * \section conferencingappdoc Conferencing
+ * SEMS can be a conference bridge with the conference application:
+ *
+ * - \ref ModuleDoc_conference
+ *
+ * \subsection conferencingauthappdoc Authentication for conference rooms (PIN entry)
+ *
+ * There are two possibilies how a PIN entry for conference rooms (or for
+ * other services) can be implemented: after the PIN is collected and verified
+ * against a XMLRPC authentication server, the call can be connected to
+ * the conference room either using B2BUA, or it can be transfered to the
+ * conference bridge using a (proprietary) REFER call flow. The b2bua
+ * solution, which also gives the possibility to limit the call time, is
+ * implemented in the conf_auth plugin:
+ *
+ *
+ *
+ * The other call flow can be implemented using the pin_collect
+ * application:
+ * - \ref ModuleDoc_pin_collect
+ *
+ *
+ * \section IVR: Python Scripting application
+ *
+ * The ivr module plugin embeds a python interpreter into SEMS. In it,
+ * applications written in python can be run (mailbox, conf_auth,
+ * pin_collect for example) and new applications can be prototyped and
+ * implemented very quickly:
+ *
+ *
+ *
+ */
+
+/*! \page ModuleDoc_ann_b2b Module Documentation: ann_b2b Application
+ * \section Readme_ann_b2b Readme file
+ * \verbinclude Readme.ann_b2b
+ */
+
+/*! \page ModuleDoc_announce_auth Module Documentation: announce_auth Application
+ * \section Readme_announce_auth Readme file
+ * \verbinclude Readme.announce_auth
+ */
+
+/*! \page ModuleDoc_announce_transfer Module Documentation: announce_transfer Application
+ * \section Readme_announce_transfer Readme file
+ * \verbinclude Readme.announce_transfer
+ */
+/*! \page ModuleDoc_ann_b2b Module Documentation: ann_b2b Application
+ * \section Readme_ann_b2b Readme file
+ * \verbinclude Readme.ann_b2b
+ */
+
+/*! \page ModuleDoc_announcement Module Documentation: announcement Application
+ * \section Readme_announcement Readme file
+ * \verbinclude Readme.announcement
+ */
+
+/*! \page ModuleDoc_conference Module Documentation: conference Application
+ * \section Readme_conference Readme file
+ * \verbinclude Readme.conference
+ */
+
+/*! \page ModuleDoc_early_announce Module Documentation: early_announce Application
+ * \section Readme_early_announce Readme file
+ * \verbinclude Readme.early_announce
+ */
+
+/*! \page ModuleDoc_voicemail Module Documentation: voicemail Application
+ * \section Readme_voicemail Readme file
+ * \verbinclude Readme.voicemail
+ */
+
+/*! \page ModuleDoc_mailbox Module Documentation: mailbox Application
+ * \section Readme_mailbox Readme file
+ * \verbinclude Readme.mailbox
+ */
+
+/*! \page ModuleDoc_ivr Module Documentation: ivr Application
+ * \section Readme_ivr Readme file
+ * \verbinclude Readme.ivr
+ */
+
+/*! \page ModuleDoc_uac_auth Module Documentation: uac_auth component
+ * \section Readme_uac_auth Readme file
+ * \verbinclude Readme.uac_auth
+ */
+
+/*! \page ModuleDoc_registrar_client Module Documentation: registrar_client component
+ * \section Readme_registrar_client Readme file
+ * \verbinclude Readme.registrar_client
+ */
+
+/*! \page ModuleDoc_mp3plugin Module Documentation: mp3 file writer audio plugin
+ * \section Readme_mp3plugin Readme file
+ * \verbinclude Readme.mp3plugin
+ */
+
+/*! \page ModuleDoc_iLBC Module Documentation: iLBC codec plugin
+ * \section Readme_iLBC Readme file
+ * \verbinclude Readme.iLBC
+ */
+
+
+
+/*! \page ComponentDoc Component Modules Documentation
+ *
+ * SEMS is extensible with modules. Component modules are modules which
+ * implement functionality which can be used by other modules, e.g. by
+ * application modules.
+ *
+ * - \ref ModuleDoc_registrar_client : registrar_client
+ * - \ref ModuleDoc_uac_auth : uac_auth
+ */
+