1{ stdenv, fetchurl, jdk, gmp, readline, openssl, libjpeg, unixODBC, zlib
2, libXinerama, libarchive, db, pcre, libedit, libossp_uuid, libXft, libXpm
3, libSM, libXt, freetype, pkgconfig, fontconfig, makeWrapper ? stdenv.isDarwin
4}:
5
6let
7 version = "7.6.4";
8in
9stdenv.mkDerivation {
10 name = "swi-prolog-${version}";
11
12 src = fetchurl {
13 url = "http://www.swi-prolog.org/download/stable/src/swipl-${version}.tar.gz";
14 sha256 = "14bq4sqs61maqpnmgy6687jjj0shwc27cpfsqbf056nrssmplg9d";
15 };
16
17 buildInputs = [ jdk gmp readline openssl libjpeg unixODBC libXinerama
18 libarchive db pcre libedit libossp_uuid libXft libXpm libSM libXt
19 zlib freetype pkgconfig fontconfig ]
20 ++ stdenv.lib.optional stdenv.isDarwin makeWrapper;
21
22 hardeningDisable = [ "format" ];
23
24 configureFlags = [
25 "--with-world"
26 "--enable-gmp"
27 "--enable-shared"
28 ];
29
30 buildFlags = "world";
31
32 # For macOS: still not fixed in upstream: "abort trap 6" when called
33 # through symlink, so wrap binary.
34 # We reinvent wrapProgram here but omit argv0 pass in order to not
35 # break PAKCS package build. This is also safe for SWI-Prolog, since
36 # there is no wrapping environment and hence no need to spoof $0
37 postInstall = stdenv.lib.optionalString stdenv.isDarwin ''
38 local prog="$out/bin/swipl"
39 local hidden="$(dirname "$prog")/.$(basename "$prog")"-wrapped
40 mv $prog $hidden
41 makeWrapper $hidden $prog
42 '';
43
44 meta = {
45 homepage = http://www.swi-prolog.org/;
46 description = "A Prolog compiler and interpreter";
47 license = "LGPL";
48
49 platforms = stdenv.lib.platforms.unix;
50 maintainers = [ stdenv.lib.maintainers.peti stdenv.lib.maintainers.meditans ];
51 };
52}