about summary refs log tree commit diff
path: root/pkgs/development/compilers/ecl
diff options
context:
space:
mode:
authorsternenseemann <0rpkxez4ksa01gb3typccl0i@systemli.org>2021-08-08 20:16:36 +0200
committersternenseemann <0rpkxez4ksa01gb3typccl0i@systemli.org>2021-08-08 20:16:36 +0200
commitccef83bd40028cb2dd852e9c170307d4936f40d8 (patch)
tree449b47399a8284c755446f2ff32242a2a345abb2 /pkgs/development/compilers/ecl
parent38b4a4364de02412795e4a452a0cfab9189d228f (diff)
ecl_16_1_2: fix linking of compiled programs
* Use --with-gmp-incdir and --with-gmp-libdir (like for the main ecl
  derivation), so ecl can figure out the flags to pass on its own.
  Remove NIX_LDFLAGS hack for gmp.

* Make sure ecl can find boehmgc when linking programs / libraries via
  NIX_LDFLAGS. Pass correct -I for boehmgc via NIX_CFLAGS_COMPILE since
  there's no --with-boehmgc-prefix configure flag to achieve the same
  result.

* Use correct suffixSalt for every flag. This makes NIX_CFLAGS_COMPILE
  work properly in the first place and should prevent the extra flags
  hacks leaking into other places in some edge cases.
Diffstat (limited to 'pkgs/development/compilers/ecl')
-rw-r--r--pkgs/development/compilers/ecl/16.1.2.nix20
1 files changed, 16 insertions, 4 deletions
diff --git a/pkgs/development/compilers/ecl/16.1.2.nix b/pkgs/development/compilers/ecl/16.1.2.nix
index 0789addb337b9..e0017c42f8e06 100644
--- a/pkgs/development/compilers/ecl/16.1.2.nix
+++ b/pkgs/development/compilers/ecl/16.1.2.nix
@@ -38,8 +38,10 @@ stdenv.mkDerivation {
 
   configureFlags = [
     (if threadSupport then "--enable-threads" else "--disable-threads")
-    "--with-gmp-prefix=${gmp.dev}"
-    "--with-libffi-prefix=${libffi.dev}"
+    "--with-gmp-incdir=${lib.getDev gmp}/include"
+    "--with-gmp-libdir=${lib.getLib gmp}/lib"
+    # -incdir, -libdir doesn't seem to be supported for libffi
+    "--with-libffi-prefix=${lib.getDev libffi}"
     ]
     ++
     (lib.optional (! noUnicode)
@@ -70,8 +72,18 @@ stdenv.mkDerivation {
     sed -e 's/@[-a-zA-Z_]*@//g' -i $out/bin/ecl-config
     wrapProgram "$out/bin/ecl" \
       --prefix PATH ':' "${gcc}/bin" \
-      --prefix NIX_LDFLAGS ' ' "-L${gmp.lib or gmp.out or gmp}/lib" \
-      --prefix NIX_LDFLAGS ' ' "-L${libffi.lib or libffi.out or libffi}/lib"
+  ''
+  # ecl 16.1.2 is too old to have -libdir for libffi and boehmgc, so we need to
+  # use NIX_LDFLAGS_BEFORE to make gcc find these particular libraries.
+  # Since it is missing even the prefix flag for boehmgc we also need to inject
+  # the correct -I flag via NIX_CFLAGS_COMPILE. Since we have access to it, we
+  # create the variables with suffixSalt (which seems to be necessary for
+  # NIX_CFLAGS_COMPILE even).
+  + lib.optionalString useBoehmgc ''
+      --prefix NIX_CFLAGS_COMPILE_${gcc.suffixSalt} ' ' "-I${lib.getDev boehmgc}/include" \
+      --prefix NIX_LDFLAGS_BEFORE_${gcc.bintools.suffixSalt} ' ' "-L${lib.getLib boehmgc}/lib" \
+  '' + ''
+      --prefix NIX_LDFLAGS_BEFORE_${gcc.bintools.suffixSalt} ' ' "-L${lib.getLib libffi}/lib"
   '';
 
   meta = {