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 a14954b8336abda7486ebf0dddbad5e5d8da8e03..a540a85790b7ca65e0dcc41e7190f2edc0e7cc46 100644
--- a/configure.in
+++ b/configure.in
@@ -577,6 +577,37 @@ 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 "(data_only_dirs $(cat src/plugins/.disabled))" > src/plugins/dune
+  chmod a-w  src/plugins/dune
+  rm src/plugins/.disabled
+fi
+
 ###########
 # Summary #
 ###########