about summary refs log tree commit diff
path: root/pkgs/development/interpreters/clisp
diff options
context:
space:
mode:
authorMike Sperber <sperber@deinprogramm.de>2016-10-23 16:10:31 +0200
committerMike Sperber <sperber@deinprogramm.de>2016-10-25 10:45:46 +0200
commit6f7504d45062fea895cb5eeee68c4e60df2da1e7 (patch)
tree43b7ee20b01162a703eea383e27835d6203d166f /pkgs/development/interpreters/clisp
parentcbec6a304a96908b35502c9e126b08968fc77ab2 (diff)
clisp: Unbreak on Darwin
Clisp depended on libffcall, which does not compile on Darwin.  The
dependency is optional though, so omit it on Darwin.  Also, make
conditional transitive dependencies on libffcall.
Diffstat (limited to 'pkgs/development/interpreters/clisp')
-rw-r--r--pkgs/development/interpreters/clisp/default.nix24
1 files changed, 14 insertions, 10 deletions
diff --git a/pkgs/development/interpreters/clisp/default.nix b/pkgs/development/interpreters/clisp/default.nix
index c3d289d2a8d48..1a05f19bd82f5 100644
--- a/pkgs/development/interpreters/clisp/default.nix
+++ b/pkgs/development/interpreters/clisp/default.nix
@@ -5,18 +5,18 @@
 # - full: contains base plus modules in withModules
 { stdenv, fetchurl, libsigsegv, gettext, ncurses, readline, libX11
 , libXau, libXt, pcre, zlib, libXpm, xproto, libXext, xextproto
-, libffi, libffcall, coreutils
+, libffi
+, libffcall
+, coreutils
 # build options
 , threadSupport ? (stdenv.isi686 || stdenv.isx86_64)
 , x11Support ? (stdenv.isi686 || stdenv.isx86_64)
 , dllSupport ? true
 , withModules ? [
-    "bindings/glibc"
     "pcre"
     "rawsock"
-    "wildcard"
-    "zlib"
   ]
+  ++ stdenv.lib.optionals stdenv.isLinux [ "bindings/glibc" "zlib" "wildcard" ]
   ++ stdenv.lib.optional x11Support "clx/new-clx"
 }:
 
@@ -33,15 +33,17 @@ stdenv.mkDerivation rec {
   };
 
   inherit libsigsegv gettext coreutils;
-  
+
+  ffcallAvailable = stdenv.isLinux && (libffcall != null);
+
   buildInputs = [libsigsegv]
   ++ stdenv.lib.optional (gettext != null) gettext
   ++ stdenv.lib.optional (ncurses != null) ncurses
   ++ stdenv.lib.optional (pcre != null) pcre
   ++ stdenv.lib.optional (zlib != null) zlib
   ++ stdenv.lib.optional (readline != null) readline
-  ++ stdenv.lib.optional (libffi != null) libffi
-  ++ stdenv.lib.optional (libffcall != null) libffcall
+  ++ stdenv.lib.optional (ffcallAvailable && (libffi != null)) libffi
+  ++ stdenv.lib.optional ffcallAvailable libffcall
   ++ stdenv.lib.optionals x11Support [
     libX11 libXau libXt libXpm xproto libXext xextproto
   ];
@@ -64,8 +66,10 @@ stdenv.mkDerivation rec {
   configureFlags = "builddir"
   + stdenv.lib.optionalString (!dllSupport) " --without-dynamic-modules"
   + stdenv.lib.optionalString (readline != null) " --with-readline"
-  + stdenv.lib.optionalString (libffi != null) " --with-dynamic-ffi"
-  + stdenv.lib.optionalString (libffcall != null) " --with-ffcall"
+  # --with-dynamic-ffi can only exist with --with-ffcall - foreign.d does not compile otherwise
+  + stdenv.lib.optionalString (ffcallAvailable && (libffi != null)) " --with-dynamic-ffi"
+  + stdenv.lib.optionalString ffcallAvailable " --with-ffcall"
+  + stdenv.lib.optionalString (!ffcallAvailable) " --without-ffcall"
   + stdenv.lib.concatMapStrings (x: " --with-module=" + x) withModules
   + stdenv.lib.optionalString threadSupport " --with-threads=POSIX_THREADS";
 
@@ -88,6 +92,6 @@ stdenv.mkDerivation rec {
     description = "ANSI Common Lisp Implementation";
     homepage = http://clisp.cons.org;
     maintainers = with stdenv.lib.maintainers; [raskin tohl];
-    platforms = stdenv.lib.platforms.linux;
+    platforms = stdenv.lib.platforms.unix;
   };
 }