forked from Singular/Singular
-
Notifications
You must be signed in to change notification settings - Fork 0
Building Singular from source
Oleksandr Motsak edited this page Jan 9, 2014
·
21 revisions
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.
- 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/Sources.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. Do not build 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
- use the following configure arguments:
--with-readline=static --disable-shared --enable-static --enable-p-procs-static --without-pic
Note that no dynamic modules will be built and installed!
- use the following configure arguments:
--enable-debug --disable-optimizationflags
- 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
- get the sources with
git clone -b trunk git://github.com/Singular2/Sources.git <directory_name>
cd <directory_name_from_above>
- 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.)
- 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: