These are the generic installation instructions for experts, see
[Step by Step Installation Instructions for Singular](Step by Step Installation Instructions for Singular)
for step by step instructions.
Build the development branch of Singular as follows:
- as prerequisite autotools (>=2.62), gmp (>= 4.2), are needed, furthermore we recommend to use NTL (>= 5.0) configured with NTL_GMP_LIP=on (for further details see NTL Documentation), FLINT (>=2.4) which depends on MPFR (>=3.0.0) , and readline
- get the sources with git clone -b spielwiese git://github.com/Singular/Singular.git <directory_name>
- run <abs_directory_name_from_above>/autogen.sh (formerly known as for_Hans_with_love.sh) from the root directory
- create and switch to your temporary build directory. Do not build Singular in the source folder itself!
- run <abs_directory_name_from_above>/configure --prefix=<destination path> (builds release version)
- make (or make -jN where N is the number of the your CPU cores + 1)
- make -jN check (where N is as above) will build and run simple unit-tests for most units (optional but encouraged)
- make install
- developers are also encouraged to run make distcheck
Static variants of Singular may be built using the following configure flags:
- --with-readline=static (embed readline)
- --disable-shared --enable-static --without-pic (totally disable dynamic linkage)
- --enable-p-procs-static --disable-p-procs-dynamic (builds-in the the generated p_Procs functions)
Moreover modules may be built-in as follows:
- --with-builtinmodules=A,M,... means that the listed modules are to be built-in. Possible internal built-ins are:
- syzextra (default if no modules were listed)
- gfanlib, polymake, pyobject, singmathic (optional)
- staticdemo, bigintm (demos) Note that if you want to built-in an extra module,m say M you will have to do the following:
- built M, generate a valid M.la file and place them in $BUILTDIR/Singular/dyn_modules/M/
- one can also set BUILTIN_LIBS=LD_FLAGS_FOR_EMBEDDING_M
- In configure time explicitly set --with-builtinmodules=...,M,...
- built-ins are required to provide extern "C" int SI_MOD_INIT0(M)(SModulFunctions*) but no mod_init symbols!
Note: modules are not required to be static...
Debug version of Singular
- use the following configure arguments: --enable-debug --disable-optimizationflags
Test the Spielwiese Singular as follows:
- the test-suites from Tst/ can be run, for example, as follows:
- cd Tst/
- ln -s <abs_destination path>/bin/Singular
- after the above symbolic-linking one can simply run ./regress.cmd something.{lst,tst}, where .lst files are just lists of tests, which are .tst files
Build the old master Singular as follows:
- get the sources with git clone -b trunk git://github.com/Singular/Singular.git <directory_name>
- cd <directory_name_from_above>
- run ./configure from the root directory
- make install (or make -jN install, where N as above), and yes it should really be install!
- everything will be put to the newly created directory "$Architecture-$OS/" (e.g. x86_64-Linux, ix86-Linux etc.)
Coverage testing with lcov (thanks to Jakob Kroeker)
- make sure that gcov is present and install a recent lcov (>= 1.10)
- configure and build Spielwiese (IN SOURCE TREE!) together with the following FLAGS:
LDFLAGS+="-lgcov"
CFLAGS+="-fprofile-arcs -ftest-coverage -g"
CXXFLAGS+="-fprofile-arcs -ftest-coverage -g"
- if necessary clean-up lcov-state-files with: lcov -z -d .
- run tests (e.g. Tst/regress.cmd -s Singular/Singular Tst/Short.lst)
- collect coverage data into coverage.cov with lcov -c -d . -o coverage.cov
- optionally remove unnecessary directories: ‘lcov -r coverage.cov ’/usr/include/ *' > coverage2.cov
- generate HTML overview pages under GenHtmlDir/ with genhtml -o GenHtmlDir coverage.cov`
For instance, a recent test coverage for Singular (static 64-bit build with optimization, gfanlib, pyobjects, countedref using NTL, MPIR (as GMP), FLINT, readline, git id: e86e21bd*, on Linux, with GCC 4.8.2_20131219) on our testsuite (with _~2420 tests) and unittests is:
See also Use gcov and lcov to know your test coverage