diff --git a/.gitignore b/.gitignore
index 745373d76f6976c11a43f6bc4010ad110cde9376..aacaa22f30990e7a8d314cc19fa298718856ba74 100644
--- a/.gitignore
+++ b/.gitignore
@@ -39,6 +39,9 @@ autom4te.cache
 .Makefile.plugin.generated
 .ocamldebug
 
+# This file is generated (on need) during configure
+/src/plugins/dune
+
 #lint
 /.lint/
 
diff --git a/configure.in b/configure.in
index 656ec3174cf3955cfc5e72a33d16566518c67593..324d2a99676f5e3e9c14ebbcc0d336f36158a516 100644
--- a/configure.in
+++ b/configure.in
@@ -39,8 +39,9 @@
 #   OCAMLLIB      the path to the ocaml standard library
 #   OCAMLVERSION  the ocaml version number
 #   OCAMLWIN32    "yes"/"no" depending on Sys.os_type = "Win32"
-#   EXE           ".exe" if OCAMLWIN32=yes, "" otherwise
-#   DLLEXT        ".dll" if OCAMLWIN32=yes, ".so" otherwise
+#   PLATFORM      "Win32", "Cygwin", "MacOS" or "Unix"
+#   EXE           ".exe" if PLATFORM=Win32 (or Cygwin), "" otherwise
+#   DLLEXT        ".dll" if PLATFORM=Win32 (or Cygwin), ".so" otherwise
 
 AC_INIT(src/init/boot/boot.ml)
 
@@ -531,9 +532,6 @@ plugin_use_external(tests,unix2dos)
 # Substitutions to perform #
 ############################
 
-EXTERNAL_PLUGINS="${EXTERNAL_PLUGINS} ${EXTRA_EXTERNAL_PLUGINS}"
-
-AC_SUBST(PLATFORM)
 AC_SUBST(VERBOSEMAKE)
 AC_SUBST(DEVELOPMENT)
 AC_SUBST(HAS_APRON)
@@ -564,15 +562,10 @@ AC_SUBST(FRAMAC_GNU_CPP)
 AC_SUBST(DEFAULT_CPP_KEEP_COMMENTS)
 AC_SUBST(CC)
 
-AC_SUBST(EXTERNAL_PLUGINS)
-
 AC_SUBST(LABLGTK_PATH)
 
-# m4_foreach_w is not supported in some old autoconf versions.
-# Sadly AC_FOREACH is deprecated now...
-AC_FOREACH([p],PLUGINS_LIST,
-        [AC_SUBST([ENABLE_]p)
-        ])
+# used by some share/Makefile.xxx
+AC_SUBST(PLATFORM)
 
 ################################################
 # Finally create the Makefile from Makefile.in #
@@ -584,6 +577,40 @@ AC_CONFIG_FILES([share/Makefile.config], [chmod a-w share/Makefile.config])
 
 AC_OUTPUT()
 
+###########
+# Plugins #
+###########
+
+rm -f src/plugins/.disabled
+rm -f src/plugins/dune
+
+m4_foreach_w([__plugin],m4_esyscmd([ls src/plugins]),
+  [
+    m4_define([plugin_dir],[src/plugins/__plugin])
+    m4_syscmd(test -d plugin_dir)
+    m4_define([is_plugin],m4_sysval)
+    m4_if(is_plugin,0,[
+      AC_ARG_ENABLE(
+        __plugin,
+        AC_HELP_STRING([--disable-__plugin], [Disable __plugin]),
+        [ENABLE___plugin=$enableval],
+        [ENABLE___plugin=yes]
+      )
+      if test "$ENABLE___plugin" = no ; then
+        echo "__plugin" >> src/plugins/.disabled
+      fi
+    ],)
+  ])
+
+if test -f src/plugins/.disabled ; then
+  echo ";; File generated by ./configure --disable-<PLUGIN>" > src/plugins/dune
+  echo "(include_subdirs no)" >> src/plugins/dune
+  echo ";; Disabled plugin list:" >> src/plugins/dune
+  echo "(data_only_dirs $(cat src/plugins/.disabled))" >> src/plugins/dune
+  chmod a-w src/plugins/dune
+  rm src/plugins/.disabled
+fi
+
 ###########
 # Summary #
 ###########
diff --git a/dune-project b/dune-project
index 2c93dc0e3d07b0f75d84a558edfa6b69fe21ac3d..25c7d8d3861402277fd5f80171c78b6613921bb7 100644
--- a/dune-project
+++ b/dune-project
@@ -1,4 +1,4 @@
-(lang dune 2.8)
+(lang dune 2.9)
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;                                                                        ;;
 ;;  This file is part of Frama-C.                                         ;;
diff --git a/headers/dune-project b/headers/dune-project
index b7724ec3502443b91135187a516561f2f4c37026..fbf0f7596d7c6516f5ff8dfdf77da73007aa5b0a 100644
--- a/headers/dune-project
+++ b/headers/dune-project
@@ -1,4 +1,4 @@
-(lang dune 2.7)
+(lang dune 2.9)
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;                                                                        ;;
 ;;  This file is part of Frama-C.                                         ;;
@@ -21,7 +21,6 @@
 ;;                                                                        ;;
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
-(allow_approximate_merlin)
 (package
   (name frama-c-hdchk)
 )
diff --git a/ptests/dune-project b/ptests/dune-project
index 2bd73786d0395ad7bd9ab9f767be00db2fe4a71a..f1d0ae6fb8abc78f00208e171b3534bb2ee0930a 100644
--- a/ptests/dune-project
+++ b/ptests/dune-project
@@ -1,4 +1,4 @@
-(lang dune 2.7)
+(lang dune 2.9)
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;                                                                        ;;
 ;;  This file is part of Frama-C.                                         ;;
@@ -21,7 +21,6 @@
 ;;                                                                        ;;
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
-(allow_approximate_merlin)
 (package
   (name frama-c-ptests)
   (depends
diff --git a/ptests/ptests.ml b/ptests/ptests.ml
index 5b4eb97645fc178b8bbc2bb215d8560256c23d93..304e6ee94a8a8aac1eb4258b4402ab8ef0740b8e 100644
--- a/ptests/ptests.ml
+++ b/ptests/ptests.ml
@@ -1394,6 +1394,7 @@ let command_string ~env ~result_fmt ~oracle_fmt command =
        (alias %S)\n  \
        (targets %S %S %a %a)\n  \
        (deps %S %S %S %a %a)\n  \
+       (enabled_if (and true %a))\n\
        (action (run %s %S %S %a))\n\
        )@."
       (* rule: *)
@@ -1411,6 +1412,8 @@ let command_string ~env ~result_fmt ~oracle_fmt command =
       wtest.oracle_err
       pp_list (List.map (Filename.concat wtest.oracle_dir) command.log_files)
       pp_command_deps command
+      (* enabled_if: *)
+      Fmt.(list (var_libavailable plugin_as_package )) (list_of_deps command.deps.load_plugin)
       (* action: *)
       !wrapper_cmd
       wrapper_basename
@@ -1434,6 +1437,7 @@ let command_string ~env ~result_fmt ~oracle_fmt command =
        (alias %S)\n  \
        (targets %S %S %a %a)\n  \
        (deps   %a)\n  \
+       (enabled_if (and true %a))\n\
        (action (with-stderr-to %S (with-stdout-to %S (%s (system %S)))))\n\
        )@."
       (* rule: *)
@@ -1447,6 +1451,8 @@ let command_string ~env ~result_fmt ~oracle_fmt command =
       pp_list command.bin_files
       (* deps: *)
       pp_command_deps command
+      (* enabled_if: *)
+      Fmt.(list (var_libavailable plugin_as_package )) (list_of_deps command.deps.load_plugin)
       (* action: *)
       cmderrlog
       cmdreslog
@@ -1458,6 +1464,7 @@ let command_string ~env ~result_fmt ~oracle_fmt command =
       Format.fprintf result_fmt
         "(rule ; FILTER %s #%d OF TEST FILE %S\n  \
          (deps %S)
+         (enabled_if (and true %a))\n\
          (action (with-stdout-to %S (with-accepted-exit-codes (or 0 1 2 125) (system %S))))\n\
          )@."
         (* rule: *)
@@ -1466,6 +1473,8 @@ let command_string ~env ~result_fmt ~oracle_fmt command =
         command.file
         (* deps: *)
         fin
+        (* enabled_if: *)
+        Fmt.(list (var_libavailable plugin_as_package )) (list_of_deps command.deps.load_plugin)
         (* action: *)
         fout cmd
   in
@@ -1475,12 +1484,15 @@ let command_string ~env ~result_fmt ~oracle_fmt command =
       Format.fprintf result_fmt
         "(rule ; COMPARE TARGET #%d OF TEST #%d FOR TEST FILE %S\n  \
          (alias %s)\n  \
+         (enabled_if (and true %a))\n\
          (action (diff %S %S))\n\
          )@."
         (* rule: *)
         n command.nth command.file
         (* alias: *)
         (ptests_alias ~env)
+        (* enabled_if: *)
+        Fmt.(list (var_libavailable plugin_as_package )) (list_of_deps command.deps.load_plugin)
         (* action: *)
         (SubDir.make_file (SubDir.oracle_dir ~env) log)
         log
@@ -1489,6 +1501,7 @@ let command_string ~env ~result_fmt ~oracle_fmt command =
     "(rule ; REPRODUCE TEST #%d OF TEST FILE %S\n  \
      (alias %S)\n  \
      (deps  %a (universe))\n  \
+     (enabled_if (and true %a))\n\
      (action (%s (system %S)))\n\
      )@."
     (* rule: *)
@@ -1497,6 +1510,8 @@ let command_string ~env ~result_fmt ~oracle_fmt command =
     (mk_alias command "exec")
     (* deps: *)
     pp_command_deps command
+    (* enabled_if: *)
+    Fmt.(list (var_libavailable plugin_as_package )) (list_of_deps command.deps.load_plugin)
     (* action: *)
     accepted_exit_code
     command_string
@@ -1505,6 +1520,7 @@ let command_string ~env ~result_fmt ~oracle_fmt command =
     "(rule ; SHOW TEST COMMAND #%d OF TEST FILE %S\n  \
      (alias %S)\n  \
      (deps  %a (universe))\n  \
+     (enabled_if (and true %a))\n\
      (action (system %S))\n\
      )@."
     (* rule: *)
@@ -1513,6 +1529,8 @@ let command_string ~env ~result_fmt ~oracle_fmt command =
     (mk_alias command "exec.show")
     (* deps: *)
     pp_command_deps command (* to get an updated build even in case of using the result *)
+    (* enabled_if: *)
+    Fmt.(list (var_libavailable plugin_as_package )) (list_of_deps command.deps.load_plugin)
     (* action: *)
     ("echo '" ^ show_cmd wtest.cmd ^"'");
 
@@ -1521,28 +1539,36 @@ let command_string ~env ~result_fmt ~oracle_fmt command =
   Format.fprintf result_fmt
     "(rule\n  \
      (alias %S)\n  \
+     (enabled_if (and true %a))\n\
      (action (diff %S %S))\n\
      )@."
     (* alias: *)
     diff_alias
+    (* enabled_if: *)
+    Fmt.(list (var_libavailable plugin_as_package )) (list_of_deps command.deps.load_plugin)
     (* action: *)
     wtest.oracle_out
     reslog;
   Format.fprintf result_fmt
     "(rule\n  \
      (alias %S)\n  \
+     (enabled_if (and true %a))\n\
      (action (diff %S %S))\n\
      )@."
     (* alias: *)
     diff_alias
+    (* enabled_if: *)
+    Fmt.(list (var_libavailable plugin_as_package )) (list_of_deps command.deps.load_plugin)
     (* action: *)
     wtest.oracle_err
     errlog;
   Format.fprintf result_fmt
-    "(alias (deps (alias %S)) (name %S); (enabled_if (and true %a))\n\
+    "(alias (name %S)\n  \
+     (deps (alias %S))\n  \
+     (enabled_if (and true %a))\n\
      )@."
-    diff_alias
     (ptests_alias ~env)
+    diff_alias
     Fmt.(list (var_libavailable plugin_as_package )) (list_of_deps command.deps.load_plugin)
   ;
   let oracle_subdir = SubDir.oracle_subdir ~env command.directory in
@@ -1657,6 +1683,7 @@ let process_file ~env ~result_fmt ~oracle_fmt file directory config modules =
              (alias %s)\n  \
              (deps %a %a)\n  \
              (targets %a %a)\n  \
+             (enabled_if (and true %a))\n\
              (action (run %s %%{dep:%s} %S))\n\
              )@."
             (* rule: *)
@@ -1669,6 +1696,8 @@ let process_file ~env ~result_fmt ~oracle_fmt file directory config modules =
             (* targets: *)
             pp_list wtest.log
             pp_list wtest.bin
+            (* enabled_if: *)
+            Fmt.(list (var_libavailable plugin_as_package )) (list_of_deps cmd.deps.load_plugin)
             (* action: *)
             !wrapper_cmd
             wrapper_basename
@@ -1688,6 +1717,7 @@ let process_file ~env ~result_fmt ~oracle_fmt file directory config modules =
              (alias %s)\n  \
              (deps (package frama-c)%a)\n  \
              (targets %a %a)\n  \
+             (enabled_if (and true %a))\n\
              (action (system %S))\n\
              )@."
             (* rule: *)
@@ -1699,6 +1729,8 @@ let process_file ~env ~result_fmt ~oracle_fmt file directory config modules =
             (* targets: *)
             pp_list wtest.log
             pp_list wtest.bin
+            (* enabled_if: *)
+            Fmt.(list (var_libavailable plugin_as_package )) (list_of_deps cmd.deps.load_plugin)
             (* action: *)
             wtest.cmd
         end;
@@ -1709,6 +1741,7 @@ let process_file ~env ~result_fmt ~oracle_fmt file directory config modules =
           "(rule ; SHOW EXECNOW COMMAND #%d OF TEST FILE %S\n  \
            (alias %s)\n  \
            (deps  %a (universe))\n  \
+           (enabled_if (and true %a))\n\
            (action (system %S))\n\
            )@."
           (* rule: *)
@@ -1717,6 +1750,8 @@ let process_file ~env ~result_fmt ~oracle_fmt file directory config modules =
           (mk_alias cmd "execnow.show")
           (* deps: *)
           pp_command_deps cmd (* to get an updated build even in case of using the result *)
+          (* enabled_if: *)
+          Fmt.(list (var_libavailable plugin_as_package )) (list_of_deps cmd.deps.load_plugin)
           (* action: *)
           ("echo '" ^ show_cmd wtest.cmd ^"'");
         ;
@@ -1724,12 +1759,15 @@ let process_file ~env ~result_fmt ~oracle_fmt file directory config modules =
             Format.fprintf result_fmt
               "(rule ; COMPARE TARGET #%d OF EXECNOW #%d FOR TEST FILE %S\n  \
                (alias %s)\n  \
+               (enabled_if (and true %a))\n\
                (action (diff %S %S))\n\
                )@."
               (* rule: *)
               n nth file
               (* alias: *)
               (ptests_alias ~env)
+              (* enabled_if: *)
+              Fmt.(list (var_libavailable plugin_as_package )) (list_of_deps cmd.deps.load_plugin)
               (* action: *)
               (SubDir.make_file (SubDir.oracle_dir ~env) log)
               log
@@ -1739,17 +1777,19 @@ let process_file ~env ~result_fmt ~oracle_fmt file directory config modules =
       let pp_list_alias fmt l = List.iter (Format.fprintf fmt "(alias %S)") l in
       Format.fprintf result_fmt
         "; TEST FILE %S\n\
-         (alias (deps %a%a) (name %S)) ; to performs all sub-tests related to a file\n\
-         (alias (deps %a%a) (name %S)) ; to reproduce and visualize the all sub-test outputs related to a file@."
+         (alias (name %S)\n  \
+         (deps %a%a)) ; to performs all sub-tests related to a file\n\
+         (alias (name %S)\n  \
+         (deps %a%a)) ; to reproduce and visualize the all sub-test outputs related to a file@."
         file
         (* alias #1 *)
+        (Format.sprintf "%s.wtests" test_name)
         pp_list_alias (List.mapi (fun i _ -> Format.sprintf "%s.%d.exec.wtests" test_name i) config.dc_commands)
         pp_list_alias (List.mapi (fun i _ -> Format.sprintf "%s.%d.execnow.wtests" test_name i) config.dc_execnow)
-        (Format.sprintf "%s.wtests" test_name)
         (* alias #2 *)
+        file
         pp_list_alias (List.mapi (fun i _ -> Format.sprintf "%s.%d.exec" test_name i) config.dc_commands)
-        pp_list_alias (List.mapi (fun i _ -> Format.sprintf "%s.%d.execnow.wtests" test_name i) config.dc_execnow)
-        file;
+        pp_list_alias (List.mapi (fun i _ -> Format.sprintf "%s.%d.execnow.wtests" test_name i) config.dc_execnow);
     end ;
     List.iter make_cmd config.dc_commands;
     List.iter make_execnow_cmd config.dc_execnow;
@@ -1794,7 +1834,10 @@ let process ~env default_config (suites:Ptests_config.alias StringMap.t) =
        let result_cout = (open_out result_dune_file) in
        let result_fmt = Format.formatter_of_out_channel result_cout  in
        Format.fprintf result_fmt "(copy_files ../*.*)@.";
-       Format.fprintf result_fmt "(alias (deps (alias %s)) (name %s))@." (ptests_alias ~env) env.dune_alias;
+       Format.fprintf result_fmt
+         "(alias (name %s)\n  \
+          (deps (alias %s)))@."
+         env.dune_alias (ptests_alias ~env);
        let oracle_dune_file = SubDir.make_file (SubDir.oracle_subdir ~env directory) "dune" in
        let oracle_cout = (open_out oracle_dune_file) in
        let oracle_fmt = Format.formatter_of_out_channel oracle_cout in
diff --git a/src/plugins/pdg_types/pdgIndex.ml b/src/kernel_externals/pdg_types/pdgIndex.ml
similarity index 100%
rename from src/plugins/pdg_types/pdgIndex.ml
rename to src/kernel_externals/pdg_types/pdgIndex.ml
diff --git a/src/plugins/pdg_types/pdgIndex.mli b/src/kernel_externals/pdg_types/pdgIndex.mli
similarity index 100%
rename from src/plugins/pdg_types/pdgIndex.mli
rename to src/kernel_externals/pdg_types/pdgIndex.mli
diff --git a/src/plugins/pdg_types/pdgMarks.ml b/src/kernel_externals/pdg_types/pdgMarks.ml
similarity index 100%
rename from src/plugins/pdg_types/pdgMarks.ml
rename to src/kernel_externals/pdg_types/pdgMarks.ml
diff --git a/src/plugins/pdg_types/pdgMarks.mli b/src/kernel_externals/pdg_types/pdgMarks.mli
similarity index 100%
rename from src/plugins/pdg_types/pdgMarks.mli
rename to src/kernel_externals/pdg_types/pdgMarks.mli
diff --git a/src/plugins/pdg_types/pdgTypes.ml b/src/kernel_externals/pdg_types/pdgTypes.ml
similarity index 100%
rename from src/plugins/pdg_types/pdgTypes.ml
rename to src/kernel_externals/pdg_types/pdgTypes.ml
diff --git a/src/plugins/pdg_types/pdgTypes.mli b/src/kernel_externals/pdg_types/pdgTypes.mli
similarity index 100%
rename from src/plugins/pdg_types/pdgTypes.mli
rename to src/kernel_externals/pdg_types/pdgTypes.mli
diff --git a/src/plugins/value_types/README.md b/src/kernel_externals/value_types/README.md
similarity index 100%
rename from src/plugins/value_types/README.md
rename to src/kernel_externals/value_types/README.md
diff --git a/src/plugins/value_types/cilE.ml b/src/kernel_externals/value_types/cilE.ml
similarity index 100%
rename from src/plugins/value_types/cilE.ml
rename to src/kernel_externals/value_types/cilE.ml
diff --git a/src/plugins/value_types/cilE.mli b/src/kernel_externals/value_types/cilE.mli
similarity index 100%
rename from src/plugins/value_types/cilE.mli
rename to src/kernel_externals/value_types/cilE.mli
diff --git a/src/plugins/value_types/cvalue.ml b/src/kernel_externals/value_types/cvalue.ml
similarity index 100%
rename from src/plugins/value_types/cvalue.ml
rename to src/kernel_externals/value_types/cvalue.ml
diff --git a/src/plugins/value_types/cvalue.mli b/src/kernel_externals/value_types/cvalue.mli
similarity index 100%
rename from src/plugins/value_types/cvalue.mli
rename to src/kernel_externals/value_types/cvalue.mli
diff --git a/src/plugins/value_types/function_Froms.ml b/src/kernel_externals/value_types/function_Froms.ml
similarity index 100%
rename from src/plugins/value_types/function_Froms.ml
rename to src/kernel_externals/value_types/function_Froms.ml
diff --git a/src/plugins/value_types/function_Froms.mli b/src/kernel_externals/value_types/function_Froms.mli
similarity index 100%
rename from src/plugins/value_types/function_Froms.mli
rename to src/kernel_externals/value_types/function_Froms.mli
diff --git a/src/plugins/value_types/inout_type.ml b/src/kernel_externals/value_types/inout_type.ml
similarity index 100%
rename from src/plugins/value_types/inout_type.ml
rename to src/kernel_externals/value_types/inout_type.ml
diff --git a/src/plugins/value_types/inout_type.mli b/src/kernel_externals/value_types/inout_type.mli
similarity index 100%
rename from src/plugins/value_types/inout_type.mli
rename to src/kernel_externals/value_types/inout_type.mli
diff --git a/src/plugins/value_types/precise_locs.ml b/src/kernel_externals/value_types/precise_locs.ml
similarity index 100%
rename from src/plugins/value_types/precise_locs.ml
rename to src/kernel_externals/value_types/precise_locs.ml
diff --git a/src/plugins/value_types/precise_locs.mli b/src/kernel_externals/value_types/precise_locs.mli
similarity index 100%
rename from src/plugins/value_types/precise_locs.mli
rename to src/kernel_externals/value_types/precise_locs.mli
diff --git a/src/plugins/value_types/value_types.ml b/src/kernel_externals/value_types/value_types.ml
similarity index 100%
rename from src/plugins/value_types/value_types.ml
rename to src/kernel_externals/value_types/value_types.ml
diff --git a/src/plugins/value_types/value_types.mli b/src/kernel_externals/value_types/value_types.mli
similarity index 100%
rename from src/plugins/value_types/value_types.mli
rename to src/kernel_externals/value_types/value_types.mli
diff --git a/src/plugins/value_types/widen_type.ml b/src/kernel_externals/value_types/widen_type.ml
similarity index 100%
rename from src/plugins/value_types/widen_type.ml
rename to src/kernel_externals/value_types/widen_type.ml
diff --git a/src/plugins/value_types/widen_type.mli b/src/kernel_externals/value_types/widen_type.mli
similarity index 100%
rename from src/plugins/value_types/widen_type.mli
rename to src/kernel_externals/value_types/widen_type.mli
diff --git a/src/plugins/aorai/dune b/src/plugins/aorai/dune
index 7e245db7ba1feb5e9d9875a0ed1451b06df353d7..9e8608f15a64f2ce3f23017d58ea993570fba0f1 100644
--- a/src/plugins/aorai/dune
+++ b/src/plugins/aorai/dune
@@ -35,6 +35,7 @@
 
 ( library
   (name aorai)
+  (optional)
   (public_name frama-c-aorai.core)
   (flags -open Frama_c_kernel :standard -w -9)
  (libraries frama-c.kernel
diff --git a/src/plugins/aorai/dune-project b/src/plugins/aorai/dune-project
index 477d003933023825d39d71a2d6b847b1061dde54..d7317b50ddbb90e03fc21e044cb2b8449ea987f3 100644
--- a/src/plugins/aorai/dune-project
+++ b/src/plugins/aorai/dune-project
@@ -1,4 +1,4 @@
-(lang dune 2.8)
+(lang dune 2.9)
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;                                                                        ;;
 ;;  This file is part of Aorai plug-in of Frama-C.                        ;;
diff --git a/src/plugins/api-generator/dune b/src/plugins/api-generator/dune
index b0de73c157ac38308725f821e378f1eca01b1031..b62d113b162fb00e0ab037a7125d14bc40f0c512 100644
--- a/src/plugins/api-generator/dune
+++ b/src/plugins/api-generator/dune
@@ -22,6 +22,7 @@
 
 ( library
   (name api_generator)
+  (optional)
   (public_name frama-c-api-generator.core)
   (flags -open Frama_c_kernel :standard -w -9)
   (libraries frama-c.kernel frama-c-server.core)
diff --git a/src/plugins/api-generator/dune-project b/src/plugins/api-generator/dune-project
index a007fa42b8f3dd5fb7c35a73dbb548f6440ab4cd..bbff6793075aec958bdc1f7458c3101b437a75a9 100644
--- a/src/plugins/api-generator/dune-project
+++ b/src/plugins/api-generator/dune-project
@@ -1,4 +1,4 @@
-(lang dune 2.8)
+(lang dune 2.9)
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;                                                                        ;;
 ;;  This file is part of Frama-C.                                         ;;
diff --git a/src/plugins/callgraph/dune b/src/plugins/callgraph/dune
index fb51b784a4528e2eabcf676c9b15f5e180081f53..8e92d9212bd18f2270f791962043c9ba1c04ec60 100644
--- a/src/plugins/callgraph/dune
+++ b/src/plugins/callgraph/dune
@@ -32,6 +32,7 @@
 
 ( library
   (name callgraph)
+  (optional)
   (public_name frama-c-callgraph.core)
   (flags -open Frama_c_kernel :standard -w -9)
   (libraries frama-c.kernel frama-c-eva.core)
diff --git a/src/plugins/callgraph/dune-project b/src/plugins/callgraph/dune-project
index f3112c37f6c88d1080643cb5414393a439a2926d..95a622cf6c73fea62d85b4f9a1ac1760f8448e7d 100644
--- a/src/plugins/callgraph/dune-project
+++ b/src/plugins/callgraph/dune-project
@@ -1,4 +1,4 @@
-(lang dune 2.8)
+(lang dune 2.9)
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;                                                                        ;;
 ;;  This file is part of Frama-C.                                         ;;
diff --git a/src/plugins/constant_propagation/dune b/src/plugins/constant_propagation/dune
index d530f0bcb8f1726c744255f0cf2c70b0c166ec65..14b9dbea7cc71cb83956803de3fb275681a56dab 100644
--- a/src/plugins/constant_propagation/dune
+++ b/src/plugins/constant_propagation/dune
@@ -32,6 +32,7 @@
 
 ( library
   (name Constant_Propagation)
+  (optional)
   (public_name frama-c-constant_propagation.core)
   (flags -open Frama_c_kernel :standard -w -9)
   (libraries frama-c.kernel frama-c-eva.core)
diff --git a/src/plugins/constant_propagation/dune-project b/src/plugins/constant_propagation/dune-project
index a5415ee795d1d585985fe5a3438cfc03c27a40c5..874ac889d2378b673e657f86a0da41a0a59c60b1 100644
--- a/src/plugins/constant_propagation/dune-project
+++ b/src/plugins/constant_propagation/dune-project
@@ -1,4 +1,4 @@
-(lang dune 2.8)
+(lang dune 2.9)
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;                                                                        ;;
 ;;  This file is part of Frama-C.                                         ;;
diff --git a/src/plugins/dive/dune b/src/plugins/dive/dune
index 956d878e75787c9044203a03892c0f4f9ee94cda..15bca5e49896d8b1dd899c7075e88290db641cbf 100644
--- a/src/plugins/dive/dune
+++ b/src/plugins/dive/dune
@@ -33,6 +33,7 @@
 
 ( library
   (name dive)
+  (optional)
   (public_name frama-c-dive.core)
   (flags -open Frama_c_kernel :standard -w -9)
   (libraries frama-c.kernel frama-c-studia.core frama-c-server.core)
diff --git a/src/plugins/dive/dune-project b/src/plugins/dive/dune-project
index 10ce6aae58386cf6b39f7413a9f7ec9bb64fbc59..222120b30265a63e311a111f5e5d658ee7717549 100644
--- a/src/plugins/dive/dune-project
+++ b/src/plugins/dive/dune-project
@@ -1,4 +1,4 @@
-(lang dune 2.8)
+(lang dune 2.9)
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;                                                                        ;;
 ;;  This file is part of Frama-C.                                         ;;
diff --git a/src/plugins/e-acsl/dune-project b/src/plugins/e-acsl/dune-project
index d99e1bdb0eabb34f3f05b0a77460d3a69d44d32a..ff6fc87f7ce11a88bdf8aaf7e2a1850c4512c6e4 100644
--- a/src/plugins/e-acsl/dune-project
+++ b/src/plugins/e-acsl/dune-project
@@ -1,4 +1,4 @@
-(lang dune 2.8)
+(lang dune 2.9)
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;                                                                        ;;
 ;;  This file is part of the Frama-C's E-ACSL plug-in.                    ;;
diff --git a/src/plugins/e-acsl/src/dune b/src/plugins/e-acsl/src/dune
index a5a1ac7f9fadcf63e8131e7a8da9f78fe076c2f5..bd9049b7cd9366699ccfdc3478c66815907decd2 100644
--- a/src/plugins/e-acsl/src/dune
+++ b/src/plugins/e-acsl/src/dune
@@ -31,6 +31,7 @@
 
 (library
  (name E_ACSL)
+ (optional)
  (public_name frama-c-e-acsl.core)
  (flags -open Frama_c_kernel :standard -w -9)
  (libraries frama-c.kernel))
diff --git a/src/plugins/from/dune-project b/src/plugins/from/dune-project
index e520d496ef8e77fa43a1e3d554b97ac501b72609..0c2a0998893f740fb875bb5465efcd90823df8fe 100644
--- a/src/plugins/from/dune-project
+++ b/src/plugins/from/dune-project
@@ -1,4 +1,4 @@
-(lang dune 2.8)
+(lang dune 2.9)
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;                                                                        ;;
 ;;  This file is part of Frama-C.                                         ;;
diff --git a/src/plugins/impact/dune b/src/plugins/impact/dune
index 5e06c6f14a0bde81aa1cb7c6f8346ed481b45abb..734041fbd969ca0f0697b1d757282f93c417c8d7 100644
--- a/src/plugins/impact/dune
+++ b/src/plugins/impact/dune
@@ -35,6 +35,7 @@
 
 ( library
   (name impact)
+  (optional)
   (public_name frama-c-impact.core)
   (flags -open Frama_c_kernel :standard -w -9)
   (libraries frama-c.kernel frama-c-slicing.core frama-c-callgraph.core frama-c-inout.core)
diff --git a/src/plugins/impact/dune-project b/src/plugins/impact/dune-project
index e9e56a295bb1ddc76aa272672fca75f2c603aeee..8cde0454d8be5cdedef669b27b4eaffce756d8c6 100644
--- a/src/plugins/impact/dune-project
+++ b/src/plugins/impact/dune-project
@@ -1,4 +1,4 @@
-(lang dune 2.8)
+(lang dune 2.9)
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;                                                                        ;;
 ;;  This file is part of Frama-C.                                         ;;
diff --git a/src/plugins/inout/dune b/src/plugins/inout/dune
index a57cb9797c78e400840523e75cdd5e4c9196a56e..d4148f8d0329905ae137ff491ac8ba9370f18e73 100644
--- a/src/plugins/inout/dune
+++ b/src/plugins/inout/dune
@@ -34,6 +34,7 @@
 
 ( library
   (name inout)
+  (optional)
   (public_name frama-c-inout.core)
   (flags -open Frama_c_kernel :standard -w -9)
   (libraries frama-c.kernel frama-c-callgraph.core frama-c-eva.core frama-c-from.core)
diff --git a/src/plugins/inout/dune-project b/src/plugins/inout/dune-project
index ee425844df4b148da5e5da8705a514bcad28d05e..3e4099fe3c8d2a19d708db3a80e3aec1a0e65d6c 100644
--- a/src/plugins/inout/dune-project
+++ b/src/plugins/inout/dune-project
@@ -1,4 +1,4 @@
-(lang dune 2.8)
+(lang dune 2.9)
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;                                                                        ;;
 ;;  This file is part of Frama-C.                                         ;;
diff --git a/src/plugins/instantiate/dune b/src/plugins/instantiate/dune
index c59ef37163ab5c66a6237c5ed30d3c0ec82ecc61..3212f4baf9fd96dd0fbdf7c80cfc16f38c08a37f 100644
--- a/src/plugins/instantiate/dune
+++ b/src/plugins/instantiate/dune
@@ -31,6 +31,7 @@
 
 ( library
   (name instantiate)
+  (optional)
   (public_name frama-c-instantiate.core)
   (flags -open Frama_c_kernel :standard -w -9)
   (libraries frama-c.kernel)
diff --git a/src/plugins/instantiate/dune-project b/src/plugins/instantiate/dune-project
index c20af17d254cedb2ff260ab123518e3c66c998ff..53c2c30c6ef2756e9369b0ac52a69b4559bc3689 100644
--- a/src/plugins/instantiate/dune-project
+++ b/src/plugins/instantiate/dune-project
@@ -1,4 +1,4 @@
-(lang dune 2.8)
+(lang dune 2.9)
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;                                                                        ;;
 ;;  This file is part of Frama-C.                                         ;;
diff --git a/src/plugins/loop_analysis/dune b/src/plugins/loop_analysis/dune
index 955b91f17dd270868765fa2045eee1534b734258..06cf37ed84a864c833bac4775e16614c996c26dc 100644
--- a/src/plugins/loop_analysis/dune
+++ b/src/plugins/loop_analysis/dune
@@ -32,6 +32,7 @@
 
 ( library
   (name LoopAnalysis)
+  (optional)
   (public_name frama-c-loop-analysis.core)
   (private_modules region_analysis_sig region_analysis region_analysis_stmt loop_analysis register)
   (flags -open Frama_c_kernel :standard)
diff --git a/src/plugins/loop_analysis/dune-project b/src/plugins/loop_analysis/dune-project
index 171351477fad7137a7b5aa8321b80a037a0f6da9..5b2cde9de76f488f0fb8da759f3349920056d2e3 100644
--- a/src/plugins/loop_analysis/dune-project
+++ b/src/plugins/loop_analysis/dune-project
@@ -1,4 +1,4 @@
-(lang dune 2.8)
+(lang dune 2.9)
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;                                                                        ;;
 ;;  This file is part of Frama-C.                                         ;;
diff --git a/src/plugins/markdown-report/dune-project b/src/plugins/markdown-report/dune-project
index 5691a73cfb5ff78b52f59c0067a0a31da9d574cc..98b4a10aabdc0430efa57f0f63de3deaa9149852 100644
--- a/src/plugins/markdown-report/dune-project
+++ b/src/plugins/markdown-report/dune-project
@@ -1,4 +1,4 @@
-(lang dune 2.8)
+(lang dune 2.9)
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;                                                                        ;;
 ;;  This file is part of Frama-C.                                         ;;
diff --git a/src/plugins/metrics/dune b/src/plugins/metrics/dune
index dd284a034a52aeb524b38e6c19053990136d9a7e..30c04d80fc0064beb198fd24310eb1f7c66185d5 100644
--- a/src/plugins/metrics/dune
+++ b/src/plugins/metrics/dune
@@ -33,6 +33,7 @@
 
 ( library
   (name metrics)
+  (optional)
   (public_name frama-c-metrics.core)
   (flags -open Frama_c_kernel :standard -w -9)
   (libraries frama-c.kernel frama-c-eva.core frama-c-server.core)
diff --git a/src/plugins/metrics/dune-project b/src/plugins/metrics/dune-project
index 210264852235095238c669c7eb36ddd0976f768f..a0c509088c21d1d5c883d7cdac93ae994ac4c1e9 100644
--- a/src/plugins/metrics/dune-project
+++ b/src/plugins/metrics/dune-project
@@ -1,4 +1,4 @@
-(lang dune 2.8)
+(lang dune 2.9)
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;                                                                        ;;
 ;;  This file is part of Frama-C.                                         ;;
diff --git a/src/plugins/nonterm/dune b/src/plugins/nonterm/dune
index ea93d55a570a028f983c052af0415dbead9bdeb0..644ec0500d9e80493685cd86e31f2ece9bf3eab9 100644
--- a/src/plugins/nonterm/dune
+++ b/src/plugins/nonterm/dune
@@ -32,6 +32,7 @@
 
 ( library
   (name nonterm)
+  (optional)
   (public_name frama-c-nonterm.core)
   (flags -open Frama_c_kernel :standard -w -9)
   (libraries frama-c.kernel frama-c-eva.core)
diff --git a/src/plugins/nonterm/dune-project b/src/plugins/nonterm/dune-project
index e5c9aec0abd22892de5bb4a975cb4718dbab71b6..cee289176ac86670db2066aab38c5eb07f69b100 100644
--- a/src/plugins/nonterm/dune-project
+++ b/src/plugins/nonterm/dune-project
@@ -1,4 +1,4 @@
-(lang dune 2.8)
+(lang dune 2.9)
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;                                                                        ;;
 ;;  This file is part of Frama-C.                                         ;;
diff --git a/src/plugins/obfuscator/dune b/src/plugins/obfuscator/dune
index 4ffb82d85df4b8568084bd75e3ffd190958565d3..12e3732b53fc3a8c73198f38a236d565b5d1ed9f 100644
--- a/src/plugins/obfuscator/dune
+++ b/src/plugins/obfuscator/dune
@@ -31,6 +31,7 @@
 
 ( library
   (name obfuscator)
+  (optional)
   (public_name frama-c-obfuscator.core)
   (flags -open Frama_c_kernel :standard -w -9)
   (libraries frama-c.kernel)
diff --git a/src/plugins/obfuscator/dune-project b/src/plugins/obfuscator/dune-project
index afab0e3f35db1d537f3fa6ab98466d07e0a6f007..b5af7a24e43ea372916f5eec62993e256e950310 100644
--- a/src/plugins/obfuscator/dune-project
+++ b/src/plugins/obfuscator/dune-project
@@ -1,4 +1,4 @@
-(lang dune 2.8)
+(lang dune 2.9)
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;                                                                        ;;
 ;;  This file is part of Frama-C.                                         ;;
diff --git a/src/plugins/occurrence/dune b/src/plugins/occurrence/dune
index fbb15499c5f18b24410459bea1856b87711d6aa2..eb86f031617ef68e9b6c58132fe3c27fe15ed5b3 100644
--- a/src/plugins/occurrence/dune
+++ b/src/plugins/occurrence/dune
@@ -32,6 +32,7 @@
 
 ( library
   (name occurrence)
+  (optional)
   (public_name frama-c-occurrence.core)
   (flags -open Frama_c_kernel :standard -w -9)
   (libraries frama-c.kernel frama-c-eva.core)
diff --git a/src/plugins/occurrence/dune-project b/src/plugins/occurrence/dune-project
index 44b9d1157f8455da86afdb7737852eb01cb72906..ea66e0e48be27b4e9384b9f5d46b895f5b5756a6 100644
--- a/src/plugins/occurrence/dune-project
+++ b/src/plugins/occurrence/dune-project
@@ -1,4 +1,4 @@
-(lang dune 2.8)
+(lang dune 2.9)
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;                                                                        ;;
 ;;  This file is part of Frama-C.                                         ;;
diff --git a/src/plugins/pdg/dune-project b/src/plugins/pdg/dune-project
index a2c77d997739bbfe7df8019b8c283cc4005f9bfc..1d13e366f656f5cac6d4e1179849b0c3b77f25ad 100644
--- a/src/plugins/pdg/dune-project
+++ b/src/plugins/pdg/dune-project
@@ -1,4 +1,4 @@
-(lang dune 2.8)
+(lang dune 2.9)
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;                                                                        ;;
 ;;  This file is part of Frama-C.                                         ;;
diff --git a/src/plugins/postdominators/dune b/src/plugins/postdominators/dune
index 9acc1ad7315be8de68e3b05168ccfbc8ef3d2ad6..da173221feddee9605ea27c2754b1cc1f1329343 100644
--- a/src/plugins/postdominators/dune
+++ b/src/plugins/postdominators/dune
@@ -32,6 +32,7 @@
 
 ( library
   (name postdominators)
+  (optional)
   (public_name frama-c-postdominators.core)
   (flags -open Frama_c_kernel :standard -w -9)
   (libraries frama-c.kernel frama-c-eva.core)
diff --git a/src/plugins/postdominators/dune-project b/src/plugins/postdominators/dune-project
index c7854a81b5ae443533c0e285e8dcc61bc0c6b314..269ba4e18cba9a1e48cf84f7b6ef99461f401ae2 100644
--- a/src/plugins/postdominators/dune-project
+++ b/src/plugins/postdominators/dune-project
@@ -1,4 +1,4 @@
-(lang dune 2.8)
+(lang dune 2.9)
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;                                                                        ;;
 ;;  This file is part of Frama-C.                                         ;;
diff --git a/src/plugins/print_api/dune-project b/src/plugins/print_api/dune-project
index 3cc0640cc5714de0eda7e8bbe0944c156915d94f..75b5944a83a6a05215ca80168a07d34f889b8e13 100644
--- a/src/plugins/print_api/dune-project
+++ b/src/plugins/print_api/dune-project
@@ -1,4 +1,4 @@
-(lang dune 2.8)
+(lang dune 2.9)
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;                                                                        ;;
 ;;  This file is part of Frama-C.                                         ;;
diff --git a/src/plugins/qed/dune b/src/plugins/qed/dune
index 404f187597ab537fcb9f10836bec153ecbe8c5b8..1bf194811298679ce83f424e02a6317a17357fb9 100644
--- a/src/plugins/qed/dune
+++ b/src/plugins/qed/dune
@@ -32,6 +32,7 @@
 
 (library
   (name qed)
+  (optional)
   (public_name qed)
   (flags (-open Frama_c_kernel :standard -w -9))
   (libraries frama-c.kernel zarith)
diff --git a/src/plugins/qed/dune-project b/src/plugins/qed/dune-project
index 10c6b6e6eb5d5e46b0df3454ba314fa463307b17..db151b2fb0545c053eaec88989826467b64ec4f6 100644
--- a/src/plugins/qed/dune-project
+++ b/src/plugins/qed/dune-project
@@ -1,4 +1,4 @@
-(lang dune 2.8)
+(lang dune 2.9)
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;                                                                        ;;
 ;;  This file is part of Frama-C.                                         ;;
diff --git a/src/plugins/reduc/dune-project b/src/plugins/reduc/dune-project
index 9394689bfcf990a04c003391c49875539feea11b..e77db938c6df60b65e33c1a357f26fd9cb11a439 100644
--- a/src/plugins/reduc/dune-project
+++ b/src/plugins/reduc/dune-project
@@ -1,4 +1,4 @@
-(lang dune 2.8)
+(lang dune 2.9)
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;                                                                        ;;
 ;;  This file is part of Frama-C.                                         ;;
diff --git a/src/plugins/report/dune b/src/plugins/report/dune
index be14e83634779ac1c1b62be643fc19d33c9f755c..c8e0c97fcef6f9a30770bf541c6704dedda8c9ec 100644
--- a/src/plugins/report/dune
+++ b/src/plugins/report/dune
@@ -31,6 +31,7 @@
 
 ( library
   (name report)
+  (optional)
   (public_name frama-c-report.core)
   (private_modules report_parameters scan dump csv register classify)
   (flags -open Frama_c_kernel :standard -w -9)
diff --git a/src/plugins/report/dune-project b/src/plugins/report/dune-project
index 81767451a8aaa64515c69c3748c4cd0f371eb126..2358c8daf8d46a33f77938ec0827539ac519df80 100644
--- a/src/plugins/report/dune-project
+++ b/src/plugins/report/dune-project
@@ -1,4 +1,4 @@
-(lang dune 2.8)
+(lang dune 2.9)
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;                                                                        ;;
 ;;  This file is part of Frama-C.                                         ;;
diff --git a/src/plugins/rte/dune b/src/plugins/rte/dune
index 70d3844140e0aba71c7b351a839023a900d22a07..cadaf87df3807fd54fc34235fdc696a5a4f801f3 100644
--- a/src/plugins/rte/dune
+++ b/src/plugins/rte/dune
@@ -31,6 +31,7 @@
 
 (library
   (name RteGen)
+  (optional)
   (public_name frama-c-rtegen.core)
   (private_modules options generator rte visit register)
   (flags -open Frama_c_kernel :standard -w -9)
diff --git a/src/plugins/rte/dune-project b/src/plugins/rte/dune-project
index e882b39551ba32684533adf72307b1d7392cc9e2..517150a660e00f264aa9cd69ec7f2972d85b57e9 100644
--- a/src/plugins/rte/dune-project
+++ b/src/plugins/rte/dune-project
@@ -1,4 +1,4 @@
-(lang dune 2.8)
+(lang dune 2.9)
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;                                                                        ;;
 ;;  This file is part of Frama-C.                                         ;;
diff --git a/src/plugins/scope/dune b/src/plugins/scope/dune
index 34094b8c80a12bca043a51783e61eb3378df66a8..95c81426d4f4e3e8411ac1a494d109152f432b38 100644
--- a/src/plugins/scope/dune
+++ b/src/plugins/scope/dune
@@ -33,6 +33,7 @@
 
 (library
   (name scope)
+  (optional)
   (public_name frama-c-scope.core)
   (flags -open Frama_c_kernel :standard -w -9)
   (libraries frama-c.kernel frama-c-eva.core frama-c-inout.core)
diff --git a/src/plugins/scope/dune-project b/src/plugins/scope/dune-project
index 435500ffa3735849743f84332284e2eb775bec98..cbd34d3aa5114c3af36dd380f4f6142ee00a674f 100644
--- a/src/plugins/scope/dune-project
+++ b/src/plugins/scope/dune-project
@@ -1,4 +1,4 @@
-(lang dune 2.8)
+(lang dune 2.9)
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;                                                                        ;;
 ;;  This file is part of Frama-C.                                         ;;
diff --git a/src/plugins/security_slicing/dune b/src/plugins/security_slicing/dune
index 2a44b5cef19916d4d55b8984d31e53854ffd5995..91009d8a81921bc390fd8964c6fdd617c764c233 100644
--- a/src/plugins/security_slicing/dune
+++ b/src/plugins/security_slicing/dune
@@ -32,6 +32,7 @@
 
 ( library
   (name security_slicing)
+  (optional)
   (public_name frama-c-security_slicing.core)
   (flags -open Frama_c_kernel :standard -w -9)
   (libraries frama-c.kernel frama-c-eva.core)
diff --git a/src/plugins/security_slicing/dune-project b/src/plugins/security_slicing/dune-project
index e2d8964552e5ee9abfd6fbd3e65cf3f88d5dde34..bbbfc8dda3bc773e60531f53292d5cd1a40e0063 100644
--- a/src/plugins/security_slicing/dune-project
+++ b/src/plugins/security_slicing/dune-project
@@ -1,4 +1,4 @@
-(lang dune 2.8)
+(lang dune 2.9)
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;                                                                        ;;
 ;;  This file is part of Frama-C.                                         ;;
diff --git a/src/plugins/server/dune b/src/plugins/server/dune
index 476ff8f68f4994c242b24d74c22dcd79dfd01821..682610a0cfc7d3466b57fd85de414dfe8958aa6a 100644
--- a/src/plugins/server/dune
+++ b/src/plugins/server/dune
@@ -32,6 +32,7 @@
 
 ( library
   (name server)
+  (optional)
   (public_name frama-c-server.core)
   (flags -open Frama_c_kernel :standard -w -9)
  (libraries frama-c.kernel
diff --git a/src/plugins/server/dune-project b/src/plugins/server/dune-project
index 642a75f2c04aea096066b7cf68a1c706eec04c62..3ab499b378067490ab2037dfd96e5a9df2f990fc 100644
--- a/src/plugins/server/dune-project
+++ b/src/plugins/server/dune-project
@@ -1,4 +1,4 @@
-(lang dune 2.8)
+(lang dune 2.9)
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;                                                                        ;;
 ;;  This file is part of Frama-C.                                         ;;
diff --git a/src/plugins/slicing/dune b/src/plugins/slicing/dune
index 4436bbec9c8acbde89bd60d21cf0777ccbe1c8b1..6552f49dd8296a0d44a17ce6735a7e46bbe426fe 100644
--- a/src/plugins/slicing/dune
+++ b/src/plugins/slicing/dune
@@ -33,6 +33,7 @@
 
 ( library
   (name slicing)
+  (optional)
   (public_name frama-c-slicing.core)
   (flags -open Frama_c_kernel :standard -w -9)
   (libraries frama-c.kernel frama-c-pdg.core frama-c-sparecode.core)
diff --git a/src/plugins/slicing/dune-project b/src/plugins/slicing/dune-project
index 3cccbdfdf8f5fe5d476a0f3a80fdd3c585965bf3..07b8be3ec010811cb28ee5a546d75925af68c25b 100644
--- a/src/plugins/slicing/dune-project
+++ b/src/plugins/slicing/dune-project
@@ -1,4 +1,4 @@
-(lang dune 2.8)
+(lang dune 2.9)
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;                                                                        ;;
 ;;  This file is part of Frama-C.                                         ;;
diff --git a/src/plugins/sparecode/dune b/src/plugins/sparecode/dune
index 644f74eb594adca605de82571b4c82cffa32b2dc..e507fff605efef3548c1a0e13b597448fe958ab6 100644
--- a/src/plugins/sparecode/dune
+++ b/src/plugins/sparecode/dune
@@ -35,6 +35,7 @@
 
 (library
   (name Sparecode)
+  (optional)
   (public_name frama-c-sparecode.core)
   (private_modules sparecode_params globs spare_marks transform register)
   (flags :standard -open Frama_c_kernel)
diff --git a/src/plugins/sparecode/dune-project b/src/plugins/sparecode/dune-project
index d23351985d588b6fb1d4e4f8a314798c08e65b90..9967b38940a329207d1c7689408c95cb65c390db 100644
--- a/src/plugins/sparecode/dune-project
+++ b/src/plugins/sparecode/dune-project
@@ -1,4 +1,4 @@
-(lang dune 2.8)
+(lang dune 2.9)
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;                                                                        ;;
 ;;  This file is part of Frama-C.                                         ;;
diff --git a/src/plugins/studia/dune b/src/plugins/studia/dune
index 4e7a6495c99073d6e992db6ceffc6115d4284c0f..ec9f50f8d7d965647b316e4cf09b9751f731b305 100644
--- a/src/plugins/studia/dune
+++ b/src/plugins/studia/dune
@@ -32,6 +32,7 @@
 
 ( library
   (name studia)
+  (optional)
   (public_name frama-c-studia.core)
   (flags -open Frama_c_kernel :standard)
   (libraries frama-c.kernel frama-c-eva.core)
diff --git a/src/plugins/studia/dune-project b/src/plugins/studia/dune-project
index 7d90dabb9d7e7608fe310e17729543d59a917c1b..e9862343663fd58dcacc9361068df3ffb05c1538 100644
--- a/src/plugins/studia/dune-project
+++ b/src/plugins/studia/dune-project
@@ -1,4 +1,4 @@
-(lang dune 2.8)
+(lang dune 2.9)
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;                                                                        ;;
 ;;  This file is part of Frama-C.                                         ;;
diff --git a/src/plugins/users/dune b/src/plugins/users/dune
index 06063acb9b8bf4a4cb15a5f27c9d7bb69dd50654..99791a84c9048189c599b8b1dc5693f58aca746d 100644
--- a/src/plugins/users/dune
+++ b/src/plugins/users/dune
@@ -32,6 +32,7 @@
 
 (library
   (name Users)
+  (optional)
   (public_name frama-c-users.core)
   (flags -open Frama_c_kernel :standard)
   (libraries frama-c.kernel frama-c-callgraph.core)
diff --git a/src/plugins/users/dune-project b/src/plugins/users/dune-project
index 0bb24b6eb47b4d855b2f475b0f6552c85db3e6c0..248478937b36c65300155fedc54933cfa597d606 100644
--- a/src/plugins/users/dune-project
+++ b/src/plugins/users/dune-project
@@ -1,4 +1,4 @@
-(lang dune 2.8)
+(lang dune 2.9)
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;                                                                        ;;
 ;;  This file is part of Frama-C.                                         ;;
diff --git a/src/plugins/value/dune-project b/src/plugins/value/dune-project
index d0e8c8a72b96ebffb9506b8f18500da2bad6e88e..64ad5aeb1eca481599f8350259027afc89702fc1 100644
--- a/src/plugins/value/dune-project
+++ b/src/plugins/value/dune-project
@@ -1,4 +1,4 @@
-(lang dune 2.8)
+(lang dune 2.9)
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;                                                                        ;;
 ;;  This file is part of Frama-C.                                         ;;
diff --git a/src/plugins/variadic/dune b/src/plugins/variadic/dune
index 44250c5572dd23b99ffdb28196bfaf4fee161f0e..c70b49ef315c6f0a9f626c27f337f6701fddb353 100644
--- a/src/plugins/variadic/dune
+++ b/src/plugins/variadic/dune
@@ -31,6 +31,7 @@
 
 ( library
   (name variadic)
+  (optional)
   (public_name frama-c-variadic.core)
   (flags -open Frama_c_kernel :standard -w -9)
   (libraries frama-c.kernel)
diff --git a/src/plugins/variadic/dune-project b/src/plugins/variadic/dune-project
index 626efb0a3b7e621feab7423c9d25d0aa69c3eb74..49aa75b87ea1410ce4d46d7268b15163973ebdea 100644
--- a/src/plugins/variadic/dune-project
+++ b/src/plugins/variadic/dune-project
@@ -1,4 +1,4 @@
-(lang dune 2.8)
+(lang dune 2.9)
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;                                                                        ;;
 ;;  This file is part of Frama-C.                                         ;;
diff --git a/src/plugins/wp/dune-project b/src/plugins/wp/dune-project
index bfdc8e578fbf5fe33be9a86c3a46c592d1888ed2..5142a747c3fc9c61e4e7aaebb0a89acbe93a2701 100644
--- a/src/plugins/wp/dune-project
+++ b/src/plugins/wp/dune-project
@@ -1,4 +1,4 @@
-(lang dune 2.8)
+(lang dune 2.9)
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;                                                                        ;;
 ;;  This file is part of Frama-C.                                         ;;