/*! \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.)
, - Short description of the Singular restructurization:
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 Singlar 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 diagramm: \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: 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 */