The PolyBoRi Team:
Michael Brickenstein (MFO),
Alexander Dreyer (ITWM),

PolyBoRi is a joint project of the following institutions
* Mathematisches Forschungsinstitut Oberwolfach (MFO), 
  Oberwolfach, Germany,
* University of Kaiserslautern, Department of Mathematics,
  Algebra, Geometry and Computer Algebra Group, 
  Kaiserslautern, Germany, and
* Fraunhofer Institute for Industrial Mathematics (ITWM),
  Department of System Analysis, Prognosis and Control,
  Kaiserslautern, Germany.

With contributions of:
Ket Shcherbakova (nee Kalda), Dominik Stahl

For building the PolyBoRi framework, the following tools and libraries are
* gcc 3.3.0 or newer
* the developer's version of python 2.4, 2.5 (deprecated) or python 2.6+ (recommended)
* scons (v1.0.0 or later, recommended v1.3.0 or later)
* the developer's version of the boost library, version 1.33.1 (deprecated; for
  python 2.4) or version 1.34.1 (for python 2.5+), version 1.36.1 
  (for unit tests; recommended) or later versions.

In particular, building PolyBoRi needs the developer's version of boost/python
unless alternative python bindings for PolyBoRi are available (e.g. via Sage).
Also, a developer's version of boost/test is needed to build the unit tests. 

It is also recommended to use a recent system-wide installed developer's
version of libm4ri. 
(PolyBoRi will try to download and build its own copy of libm4ri otherwise.)

In addition, for running the ipbori command line tool IPython is needed.

Changing to the build directory (where you find this README file), and typing  

  scons install PREFIX=/prefix/path/ PYINSTALLPREFIX=/python/path/site-packages

should be enough to build and install PolyBoRi.
PREFIX defaults to /usr/local. The standard value from PYINSTALLPREFIX is extracted from the
corresponding python executable (customizable via PYTHON).

There are several installation locations which depend on PREFIX per default,
(e.g. INSTALLDIR and DOCDIR). But those are custumizable, too. See

  scons -h

for more information and default values. There's also an exhaustive 'ipbori'
tutorial in the DOCDIR.

If might also be useful to add some custom setting to the file '' in
the build directory, see the following example.

--- ---
# User variables
CCFLAGS = "-g -O3  -ansi --pedantic -Wno-long-long -pg"
CXXFLAGS = "$CCFLAGS -ftemplate-depth-100"
LINKFLAGS=" -Xlinker -export-dynamic -pthread -ldl  -pg" 

# DEFAULT_<flags> will be appended by default. State the default flags
# explicitely, if you want to append flags afterwards, e.g.


# means that this line is not activated.
#LIBPATH = ["/custom/lib/path1", "/custom/lib/path2"]
#CPPPATH = ["/custom/include/path1", "/custom/include/path2"]
#PBP = "python"


  scons devel-install DEVEL-PREFIX=/prefix/for/usr

generates and installs PolyBoRi headers and libraries for developers.


  scons -h

for more infos about possible custom settings.

Additional targets


  scons <target>

for making other targets by alias. Valid aliases are

build           build libraries and binary interfaces to enable ipbori/ipbori
distribute      gzipped source tarball
srpm, rpm       generate (source)-rpm from data in pkgs/rpm

install         install ipbori, PolyGUI, docs, dynamic libraries and python interface
install-devel   headers and static libraries
install-docs    install documentation only
install-headers install headers only
install-static  install static libraries only

prepare-install build prerequisites of install
prepare-devel   build prerequisites of install-devel
prepare-static  build prerequisites of install-static
prepare-docs    build documentation
prepare-rpm     build prerequisites of rpm

dump,dump_default print useful internal information

devel-install   alias for install-devel (deprecated)
deb             generate debian package (depreated; use Debian/Experimantal)
prepare-debian  generate debian folder from data in pkgs/debian (deprecated)

Provided that /prefix/for/executables/bin is in your path, typing 


starts an IPython session with the PolyBoRi framework loaded.

Python embedding
For utilizing its full capabilites please use PolyBoRi via python. To simplify
embedding into C++-based software you may include the header polybori/embed.h
and use the functionality defined therein.
See testsuite/src/ for an extensive example.

Workaround for scons 0.96.x

Please note, that scons 0.96.x is not officially supported anymore, so the
following may be out of date

The currently used CFLAGS/CCFLAGS/CXXFLAGS mechanism was introduced in the 0.97
branch of scons. Using a version from the 0.96 branch CCFLAGS must contain all
flags for the C-compiler, while CXXFLAGS has to carry all flags for CXX.

These settings may be changed using the file described above. One has
to add the following lines:

CXXFLAGS = "-O3 -std=c++98 -ftemplate-depth-100"
CCFLAGS  = "-O3 -std=c99"

Alternatively, one can append the following lines to


Sun Studio compiler
We recommend to use gcc for compiling PolyBoRi, but compiling with Sun STudio's
C++ in principle possible (albeit untested) with the following settings:

Also CPPPATH, LIBPATH and PYTHON might be adjusted to use library/binaries, which
are compatible with the stlport4 option.

In the main directory generate a file with the following content:

BOOST_PYTHON = 'boost_python-mt'
BOOST_TEST = 'boost_unit_test_framework-mt'
HAVE_L2H = False
DEVEL_LIB_PREFIX = '$EPREFIX' # dlls needs to be placed here?

See also: Singular/README