Loading...
Searching...
No Matches
Singular Build System

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:

- Singular memory manager for small chunks (omalloc)
- System environment and resource management
- factory_page
- Basic Data Structures
- Singular Interpreter and related functionality

Moreover some of the top-level libraries combine smaller ones into itself:

- Basic Data Structures
  - Miscellaneous things
  - Reporter
  - Coefficients for Singular rings and algebras
  - Multivariate polynomial rings and algebras
- Singular Interpreter and related functionality
  - Several involved mathematical algorithms (kernel)
  - Dynamic modules

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:

- 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 Style Guide for the Further Development of SINGULAR in C / C++.