diff --git a/configure b/configure
index b47897c65b20b124bb8da15f3830993411bb6a14..ea9d71c5b8f14c7bbb7a2838e94e9f63c68ee6cc 100755
--- a/configure
+++ b/configure
@@ -624,10 +624,7 @@ build_dir
 xxd
 dot
 doxygen
-STATIC_LIBS
-LDSO
 LD
-SOEXT
 OPENMP_CXXFLAGS
 EGREP
 GREP
@@ -645,6 +642,9 @@ CPPFLAGS
 LDFLAGS
 CXXFLAGS
 CXX
+LDSO
+STATIC_LIBS
+SOEXT
 target_alias
 host_alias
 build_alias
@@ -712,6 +712,9 @@ enable_xdrfile
       ac_precious_vars='build_alias
 host_alias
 target_alias
+SOEXT
+STATIC_LIBS
+LDSO
 CXX
 CXXFLAGS
 LDFLAGS
@@ -1362,6 +1365,11 @@ Optional Features:
   --disable-openmp        do not use OpenMP
 
 Some influential environment variables:
+  SOEXT       extension of dynamic libraries (so/dylib)
+  STATIC_LIBS variables that should be linked statically directly to MD code -
+              configure will add here -ldl if necessary
+  LDSO        command for linking shared library - configure will use CXX plus
+              the proper flags
   CXX         C++ compiler command
   CXXFLAGS    C++ compiler flags
   LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
@@ -2655,6 +2663,10 @@ fi
 
 
 
+
+
+
+
 # by default use -O flag
 # we override the autoconf default (-g) because in release build we do not want to
 # include symbol information (obj files are huge)
@@ -3951,22 +3963,24 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
 # log the initial flags
 LD="$CXX"
 LDSO="$CXX"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: Initial CXX:      $CXX" >&5
-$as_echo "$as_me: Initial CXX:      $CXX" >&6;}
-{ $as_echo "$as_me:${as_lineno-$LINENO}: Initial CXXFLAGS: $CXXFLAGS" >&5
-$as_echo "$as_me: Initial CXXFLAGS: $CXXFLAGS" >&6;}
-{ $as_echo "$as_me:${as_lineno-$LINENO}: Initial CPPFLAGS: $CPPFLAGS" >&5
-$as_echo "$as_me: Initial CPPFLAGS: $CPPFLAGS" >&6;}
-{ $as_echo "$as_me:${as_lineno-$LINENO}: Initial LDFLAGS:  $LDFLAGS" >&5
-$as_echo "$as_me: Initial LDFLAGS:  $LDFLAGS" >&6;}
-{ $as_echo "$as_me:${as_lineno-$LINENO}: Initial LIBS:     $LDFLAGS" >&5
-$as_echo "$as_me: Initial LIBS:     $LDFLAGS" >&6;}
-{ $as_echo "$as_me:${as_lineno-$LINENO}: Initial LD:       $LD" >&5
-$as_echo "$as_me: Initial LD:       $LD" >&6;}
-{ $as_echo "$as_me:${as_lineno-$LINENO}: Initial LDSO:     $LDSO" >&5
-$as_echo "$as_me: Initial LDSO:     $LDSO" >&6;}
-{ $as_echo "$as_me:${as_lineno-$LINENO}: Initial SOEXT:    $SOEXT" >&5
-$as_echo "$as_me: Initial SOEXT:    $SOEXT" >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: Initial CXX:         $CXX" >&5
+$as_echo "$as_me: Initial CXX:         $CXX" >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: Initial CXXFLAGS:    $CXXFLAGS" >&5
+$as_echo "$as_me: Initial CXXFLAGS:    $CXXFLAGS" >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: Initial CPPFLAGS:    $CPPFLAGS" >&5
+$as_echo "$as_me: Initial CPPFLAGS:    $CPPFLAGS" >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: Initial LDFLAGS:     $LDFLAGS" >&5
+$as_echo "$as_me: Initial LDFLAGS:     $LDFLAGS" >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: Initial LIBS:        $LDFLAGS" >&5
+$as_echo "$as_me: Initial LIBS:        $LDFLAGS" >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: Initial STATIC_LIBS: $LDFLAGS" >&5
+$as_echo "$as_me: Initial STATIC_LIBS: $LDFLAGS" >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: Initial LD:          $LD" >&5
+$as_echo "$as_me: Initial LD:          $LD" >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: Initial LDSO:        $LDSO" >&5
+$as_echo "$as_me: Initial LDSO:        $LDSO" >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: Initial SOEXT:       $SOEXT" >&5
+$as_echo "$as_me: Initial SOEXT:       $SOEXT" >&6;}
 
 # check C++ flags
 if test $shared == true
diff --git a/configure.ac b/configure.ac
index c71f67b5e18ce98fbad7dc157a46ce2c751367b0..46363169e60f6aec037f6d3d7478e507775817a7 100644
--- a/configure.ac
+++ b/configure.ac
@@ -106,6 +106,10 @@ PLUMED_CONFIG_ENABLE([almost],[almost],[search for almost],[no])
 PLUMED_CONFIG_ENABLE([gsl],[gsl],[search for gsl],[no])
 PLUMED_CONFIG_ENABLE([xdrfile],[xdrfile],[search for xdrfile],[yes])
 
+AC_ARG_VAR(SOEXT,[extension of dynamic libraries (so/dylib)])
+AC_ARG_VAR(STATIC_LIBS,[variables that should be linked statically directly to MD code - configure will add here -ldl if necessary ])
+AC_ARG_VAR(LDSO,[command for linking shared library - configure will use CXX plus the proper flags ])
+
 
 # by default use -O flag
 # we override the autoconf default (-g) because in release build we do not want to
@@ -144,14 +148,15 @@ AC_LANG(C++)
 # log the initial flags
 LD="$CXX"
 LDSO="$CXX"
-AC_MSG_NOTICE([Initial CXX:      $CXX])
-AC_MSG_NOTICE([Initial CXXFLAGS: $CXXFLAGS])
-AC_MSG_NOTICE([Initial CPPFLAGS: $CPPFLAGS])
-AC_MSG_NOTICE([Initial LDFLAGS:  $LDFLAGS])
-AC_MSG_NOTICE([Initial LIBS:     $LDFLAGS])
-AC_MSG_NOTICE([Initial LD:       $LD])
-AC_MSG_NOTICE([Initial LDSO:     $LDSO])
-AC_MSG_NOTICE([Initial SOEXT:    $SOEXT])
+AC_MSG_NOTICE([Initial CXX:         $CXX])
+AC_MSG_NOTICE([Initial CXXFLAGS:    $CXXFLAGS])
+AC_MSG_NOTICE([Initial CPPFLAGS:    $CPPFLAGS])
+AC_MSG_NOTICE([Initial LDFLAGS:     $LDFLAGS])
+AC_MSG_NOTICE([Initial LIBS:        $LDFLAGS])
+AC_MSG_NOTICE([Initial STATIC_LIBS: $LDFLAGS])
+AC_MSG_NOTICE([Initial LD:          $LD])
+AC_MSG_NOTICE([Initial LDSO:        $LDSO])
+AC_MSG_NOTICE([Initial SOEXT:       $SOEXT])
 
 # check C++ flags
 if test $shared == true