forked from Singular/Singular
-
Notifications
You must be signed in to change notification settings - Fork 0
/
main.dox
156 lines (126 loc) · 4.25 KB
/
main.dox
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
/*!
\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
*/