summary refs log tree commit diff
path: root/pkgs/development/compilers/ocaml/generic.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/compilers/ocaml/generic.nix')
-rw-r--r--pkgs/development/compilers/ocaml/generic.nix19
1 files changed, 13 insertions, 6 deletions
diff --git a/pkgs/development/compilers/ocaml/generic.nix b/pkgs/development/compilers/ocaml/generic.nix
index 9557d0a79ae..d39c0d86fd5 100644
--- a/pkgs/development/compilers/ocaml/generic.nix
+++ b/pkgs/development/compilers/ocaml/generic.nix
@@ -12,16 +12,18 @@ in
 
 { stdenv, fetchurl, ncurses, buildEnv
 , libX11, xorgproto, useX11 ? safeX11 stdenv
+, aflSupport ? false
 , flambdaSupport ? false
 }:
 
 assert useX11 -> !stdenv.isAarch32 && !stdenv.isMips;
+assert aflSupport -> stdenv.lib.versionAtLeast version "4.05";
 assert flambdaSupport -> stdenv.lib.versionAtLeast version "4.03";
 
 let
    useNativeCompilers = !stdenv.isMips;
    inherit (stdenv.lib) optional optionals optionalString;
-   name = "ocaml${optionalString flambdaSupport "+flambda"}-${version}";
+   name = "ocaml${optionalString aflSupport "+afl"}${optionalString flambdaSupport "+flambda"}-${version}";
 in
 
 let
@@ -41,11 +43,16 @@ stdenv.mkDerivation (args // {
   };
 
   prefixKey = "-prefix ";
-  configureFlags = optionals useX11 (
-    if stdenv.lib.versionAtLeast version "4.08"
-    then [ "--x-libraries=${x11lib}" "--x-includes=${x11inc}"]
-    else [ "-x11lib" x11lib "-x11include" x11inc ])
-  ++ optional flambdaSupport "-flambda"
+  configureFlags =
+    let flags = new: old:
+      if stdenv.lib.versionAtLeast version "4.08"
+      then new else old
+    ; in
+    optionals useX11 (flags
+      [ "--x-libraries=${x11lib}" "--x-includes=${x11inc}"]
+      [ "-x11lib" x11lib "-x11include" x11inc ])
+  ++ optional aflSupport (flags "--with-afl" "-afl-instrument")
+  ++ optional flambdaSupport (flags "--enable-flambda" "-flambda")
   ;
 
   buildFlags = "world" + optionalString useNativeCompilers " bootstrap world.opt";