/*!
\page main_page Introduction to Singular kernel development

\brief Introductory pages for new kernel development

- \subpage build_sources_page "Building Singular from Sources",
- \subpage development_model_page "New git-supported Development Model",
- \subpage howto_contribute_page "HowTo CONTRIBUTE to Singular development",
- \subpage styleguide "C/C++ programming style guide",
- \subpage bs_page "Singular build system",
- \subpage changes_in_sw_page "Significant changes in Singular 4",
- Short introduction to general concepts (types, paths, etc.)<br/>
  <https://www.singular.uni-kl.de/Manual/intro_sing.pdf>,
- Short description of the Singular restructurization: <br/>
  <https://www.singular.uni-kl.de/gap-meeting-2012/SW.Aug.12.motsak.2.pdf> and
- Current internal structure and dependencies can be seen at \subpage deps_page.
  Top-level packages are:
  - \subpage omalloc_page "Singular Memory Manager",
  - \subpage resources_page "Resource Handling Helpers",
  - \subpage factory_page "Factorization library",
  - \subpage libpolys_page "Singular most basic data structures",
  - \subpage kernel_page "Mathematical Algorithms",
  - \subpage singular_page "Singular Interpreter and related".

\Note Singular relies on some third-party \subpage external_packages_page "Packages".

\Note In case of any uncovered topics or unanswered questions please report
them to us.
*/

/*!
\page deps_page Dependencies between Singular packages

\brief Current Singular packages and sub-packages with expected dependencies between them

- \ref omalloc_page
- \ref resources_page
- \ref factory_page
- \ref libpolys_page
  - \ref libpolys_misc_page
  - \ref libpolys_reporter_page
  - \ref libpolys_coeffs_page
  - \ref libpolys_polys_page
- \ref kernel_page
  - \ref kernel_numeric_page
  - \ref kernel_combinatorics_page
  - \ref kernel_GBEngine_page
  - \ref kernel_groebner_walk_page
  - \ref kernel_fglm_page
  - \ref kernel_maps_page
  - \ref kernel_spectrum_page
  - \ref kernel_linear_algebra_page
  - \ref kernel_oswrapper_page
- \ref singular_page
  - \ref dynmodules_page


Dependencies between Singular packages (and sub-grouppings) are shown as arrows on the following diagram:
\dotfile Includes.dot Package dependency diagram
*/


/*!
\page bs_page Singular Build System

\brief Short introduction to the Singular build system

We use autotools.
Here is a good autotools (mythbuster) manual:
<https://www.flameeyes.eu/autotools-mythbuster/>
Singular consists of several packages,
which are (mostly standalone) libraries with their own configuration scripts:

- \ref omalloc_page
- \ref resources_page
- \ref factory_page
- \ref libpolys_page
- \ref singular_page

Moreover some of the top-level libraries combine smaller ones into
itself:
- \ref libpolys_page
  - \ref libpolys_misc_page
  - \ref libpolys_reporter_page
  - \ref libpolys_coeffs_page
  - \ref libpolys_polys_page
- \ref singular_page
  - \ref kernel_page
  - \ref dynmodules_page


One can easily exted any existing library by adding new sources to the
corresponding _SOURCE specification (and headers to _HEADER).
Sources or headers may be generated by the build system
(automatically by configure scripts, manually in compile time by
targets in makefiles) but have to be treated specially.

Short HOWTO:
- \subpage adding_kernel_package "Adding a sub-package to /kernel/"


New sub-libraries may be added to the existing directories (to the
corresponding Makefile.am's) or to their own (new) directory
with a new Makefile.am, which has to be treated by the corresponding
configure script. If that new directory has to be treated by
recursive make  - it has to be listed in in a SUBDIRS section
by some higher-level Makefile.am (which is treated)


It is strongly recommended to add separate unit-tests (TESTS) for any
package or library.

Please test the build system with `make distcheck` before submitting
in case of a build system chenges.

See also \ref styleguide.
*/

/*!
\dir omalloc
\ref omalloc_page
*/
/*!
\dir resources
\ref resources_page
*/
/*!
\dir libpolys
\ref libpolys_page
*/
/*!
\dir kernel
\ref kernel_page
*/
/*!
\dir Singular
\ref singular_page
*/

/*!
\dir ./factory
\ref factory_page
*/
/*!
\dir templates
Templates for new sources and headers
*/


/*!
\page copying_page Singular copying agreement

\brief COPYING

\verbinclude COPYING
*/
