Updated Jan 19 2016

This webpaged contains (short) information about how to compile jive5ab yourself. Also it will list operating system (OS)/compiler specific notes.

Prerequisites to building are that a GNU c/c++ compiler is installed as well as GNU make.

It should be noted that, currently, there is some SSE2 assembly code in the source code. This means that compilation currently is restricted to Intel/AMD CPUs.

Our goal is to be portable - we adhere to POSIX as much as we can. We have already targeted multiple POSIX-compliant OSes.

In each jive5ab source distribution is a file called "INSTALL" which contains the most up-to-date information about compilation flags and options.
It should be rare you have to resort to reading "INSTALL" but at least you know it's there.


Start by downloading one of the source archives found on the jive5ab download pages. After downloading, do the following:
$> tar -zxvf jive5ab-XXXX.tar.gz
$> cd jive5ab-XXXX

jive5ab is typically built by issueing the following command:
$> make [-j NNN] [B2B=64]
where values in square brackets mean they're optional.

Note: when compiling jive5ab on a Mark5 it is best to do this as "root". In order to make jive5ab usable for other users than "root", one more step needs to be taken:
# make chown
jive5ab is now made "suid root". This means that any user can use it. Rest assured that jive5ab drops its elevated privileges long before it starts accepting commands from the outside world, in order to not compromise the operating system.
OS/compiler specific notes

Linux

In general compilation on Linux poses no problems.

The oldest known OS/compiler combination to work with jive5ab-2.5.0 is Debian Etch/gcc-4.1.2, the newest combination to work is Ubuntu 13.10/gcc-4.8.1

On bi-arch Linux systems you can choose to build either the 32-bit or 64-bit version. Of course 64 is greater than 32 and therefore better ...

Mac OSX

The only known issue is with Mac OSX Mavericks/64-bit compilation(*) when building with the system compiler clang/clang++ (even though it's installed as /usr/bin/gcc, /usr/bin/g++).

Begin with compiling until it fails.

It is the 64-bit SSE2 assembly file that's causing trouble here. There exist two workarounds:

  • Install a 'true' GNU c/c++ compiler using e.g. the Homebrew package manager (or any of the other package managers). Add the following options to the "make" command line:
    $> make ... CC=/path/to/real/gcc CXX=/path/to/real/g++
  • Download this special version of the 64-bit assembly code sse_dechannelizer-64_strip.S and put it into jive5ab-XXXX source code directory. Then do:
    $> as sse_dechannelizer-64_strip.S -o Repos/sse_dechannelizer-64.So
    You will see three warnings but the compilation succeeds. Now you can re-issue the "make ..." command and compilation should continue.
(*) on Mac OS you can build either the 32-bit or 64-bit version

Solaris 10

Support for Solaris 10/amd64 has been added after 2.5.0 was released. It's not published yet but available on request, should you need it.

You WILL need a recent GNU gcc/g++ compiler though. The system compiler is gcc-3.4.3 and that one doesn't work. On our Solaris10/amd64 machines we had gcc-4.8.1 and that does work. So somewhere between 3.4.3 and 4.8.1 the compilation will start working ...

OpenBSD

Starting from jive5ab 2.7.3 and up the source should compile out of the box on OpenBSD. You WILL need GNU make installed (# pkg_add gmake).

The changes required are not very dependant on the actual version of jive5ab. For that reason a patch file is published here that could be applied to older versions of the code:
$> cd /path/to/jive5ab-x.y.z
$> patch -p0 < /path/to/openbsd.patch
followed by a regular make.

The patch was developed and tested on OpenBSD 5.8/amd64. jive5ab compilation depends mostly on compiler. The fact the OpenBSD system compiler is quite old (gcc 4.2.1 - 2007-ish) it is to be expected that a clean compile + run is to be expected on all versions of OpenBSD using this version of the compiler, i.e. since 2007.

Do not hesitate to contact me if you have questions, comments, suggestions, patches, enhancements: verkouter at jive dot nl