= Singular =

== Description ==

Singular is a computer algebra system for polynomial computations,
with special emphasis on commutative and non-commutative algebra,
algebraic geometry, and singularity theory.

== License ==

GPLv2 or GPLv3

== Upstream Contact ==

libsingular-devel@mathematik.uni-kl.de

http://www.singular.uni-kl.de/

== Dependencies ==

* GNU patch
* readline
* GMP/MPIR
* MPFR
* NTL
* FLINT

== Special Update/Build Instructions ==

See spkg-src.
Note that upstream also ships versions with numbering including a patchlevel.

Other notes
 * The option '--without-dynamic-kernel' is used on *all*
   systems with the exception of Linux. The online README at
   http://www.singular.uni-kl.de/svn/trunk/README says this should
   be used on Solaris, with no mention of it being necessary for
   OS X, or any other platform except Solaris.
 * The online readme says that CONFIG_SHELL should be set to /bin/bash
   on Solaris. This is not done currently. Since this does not build
   fully as a 64-bit application on Solaris, CONFIG_SHELL should be
   investigated as a possible cause later.
 * Be sure that Singular/Singular.rc.in is present, as occasionally this
   was missing, which caused problems on Cygwin (e.g., see #10235)
 * Due to http://www.singular.uni-kl.de:8002/trac/ticket/438, we
   currently always build Singular with its debug code.  Change
   --with-debug to $WITH_DEBUG in the configure call if this is fixed.
 * If the environment variable SAGE_DEBUG is set to "yes", then
   omalloc will be replaced by xalloc. The resulting Singular executable
   and libsingular library will be slower than with omalloc, but allow
   for easier debugging of memory corruptions.

=== Patches ===
 * assert.patch: logic seems to be broken on some platforms
 * Minor.h.patch: needs to have <time.h> included on Cygwin
 * slibdir.patch: set default slibdir to ${datarootdir}/singular
   instead of ${prefix}/LIB, see #13344.
 * sanitize_gmp_header_hack.patch:
   Fix and simplify generation of `factory/cf_gmp.h` (cf. #14737).
 * flint.patch: avoid underlinking FLINT in libsingular.
 * exeext.patch: Add $(EXEEXT) to some executable names.
 * cygwin64.path: Support for Cywgin64.
 * templates.patch: do not use -fno-implicit-templates, which breaks
   the build with NTL 6.2.1 for some GCC versions and remove some
   useless explicit template instantiations.
