Building Singular from source - BrentBaccala/Singular GitHub Wiki
These are the generic installation instructions for experts, see
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 https://github.com/Singular/Singular.git <directory_name>
- run
<abs_directory_name_from_above>/autogen.sh
(formerly known asfor_Hans_with_love.sh
) from the root directory - create and switch to your temporary build directory. (we recommend building in a temporary build directory over building Singular in the source folder itself).
- run
<abs_directory_name_from_above>/configure --prefix=<destination path>
(builds release version) make
(ormake -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 sayM
you will have to do the following:- built
M
, generate a validM.la
file and place them in$BUILTDIR/Singular/dyn_modules/M/
- one can also set
BUILTIN_LIBS=LD_FLAGS_FOR_EMBEDDING_M
- one can also set
- In configure time explicitly set
--with-builtinmodules=...,M,...
- built-ins are required to provide
extern "C" int SI_MOD_INIT0(M)(SModulFunctions*)
but nomod_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
master
Singular as follows:
Build the old - get the sources with
git clone -b trunk git://github.com/Singular/Sources.git <directory_name>
cd <directory_name_from_above>
git checkout master
- run
./configure
from the root directory make install
(ormake -jN install
, where N as above), and yes it should really beinstall
!- everything will be put to the newly created directory "$Architecture-$OS/" (e.g. x86_64-Linux, ix86-Linux etc.)
lcov
(thanks to Jakob Kroeker)
Coverage testing with - 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
withlcov -c -d . -o coverage.cov
- optionally remove unnecessary directories:
lcov -r coverage.cov '/usr/include/*' > coverage2.cov
- generate HTML overview pages under
GenHtmlDir/
withgenhtml -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: