This installation method assumes that you have a working version of conda. See the getting started on the conda website.
Activate the conda-forge package repository:
conda config --add channels conda-forge
Install libsemigroups:
conda install libsemigroups
Building libsemigroups from the source files requires a C++ compiler supporting the C++17 standard, autoconf, and automake. Building the documentation from source has some additional requirements that are detailed in the section Building the documentation.
To build libsemigroups from the GitHub repository:
git clone https://github.com/libsemigroups/libsemigroups cd libsemigroups ./autogen.sh && ./configure && make -j8 && sudo make install
To build libsemigroups from a release archive:
curl -L -O https://github.com/libsemigroups/libsemigroups/releases/latest/download/libsemigroups-3.2.0.tar.gz tar -xf libsemigroups-3.2.0.tar.gz rm -f libsemigroups-3.2.0.tar.gz cd libsemigroups-3.2.0 ./configure && make -j8 && sudo make install
In addition to the usual autoconf configuration options, the following configuration options are available for libsemigroups:
| Option | Description |
|---|---|
| --enable-backward | enable backward for better stack traces (default=yes) |
| --enable-code-coverage | enable code coverage support (default=no) |
| --enable-compile-warnings | enable compiler warnings (default=no) |
| --enable-debug | enable debug mode (default=no) |
| --enable-eigen | enable eigen (default=yes) |
| --enable-hpcombi | enable HPCombi (default=yes) |
| --with-external-backward | do not use the included copy of backward (default=no) |
| --with-external-fmt | do not use the included copy of fmt (default=no) |
| --with-external-eigen | do not use the included copy of eigen (default=no) |
| --disable-popcnt | do not use __builtin_popcountl (default=yes) |
| --disable-clzll | do not use __builtin_clzll (default=yes) |
Debug mode significantly degrades the performance of libsemigroups. Note that the flags --enable-eigen and --with-external-eigen are independent of each other, and so both flags should be included to enable eigen and use an external eigen. The same is true of --enable-backward and --with-external-backward.
By default, make install installs the library and its pkg-config configuration into /usr/local. One can also specify another install location, say, /foo/bar, by calling ./configure with parameter --prefix, e.g. ./configure --prefix=/foo/bar. This might be useful if sudo is not available.
If you have pkg-config installed, it may be called to get libsemigroups's version, location, etc (see its docs for details; this facility is used in GAP package Semigroups, which may be configured to use the external libsemigroups). For example,
pkg-config --modversion libsemigroups
will print the version of the installed libsemigroups, provided it is scanning configurations in the install location. For installation location unknown to pkg-config, one needs to add it to PKG_CONFIG_PATH (an environment variable). E.g. if it is /foo/bar as above then
PKG_CONFIG_PATH=/foo/bar/lib/pkgconfig pkg-config --modversion libsemigroups
will print the version of the installed libsemigroups. (As usual, PKG_CONFIG_PATH may be exported, added to shell configuration, etc.).
To build the documentation, a version of doxygen is required. Instructions on how to do this can be found on Doxygen's Installation page.
Then, it ought to be possible to just run make doc in the libsemigroups directory, and the documentation will be generated.
Note that, if you are building the documentation having cloned libsemigroups from the GitHub repo, it is also necessary to check out the doxygen-awesome-css/ submodule using:
git submodule update --init --recursive
If you find any problems with libsemigroups, or have any suggestions for features that you'd like to see, please use the issue tracker.