diff --git a/config/companion_libs.in b/config/companion_libs.in
index e543faaf..aa4b63a2 100644
--- a/config/companion_libs.in
+++ b/config/companion_libs.in
@@ -33,6 +33,7 @@ endif
 config PPL_CLOOG_MPC
     bool
     prompt "PPL, GLooG/PPL and MPC"
+    select GMP_MPFR
     select WRAPPER_NEEDED
     help
       gcc-4.4.0 and above requires PPL and CLooG/PPL to build some parts
diff --git a/config/config.in b/config/config.in
index 14e1a411..b6e6fe5d 100644
--- a/config/config.in
+++ b/config/config.in
@@ -2,9 +2,9 @@ source config/global.in
 source config/target.in
 source config/toolchain.in
 source config/kernel.in
-source config/companion_libs.in
 source config/binutils.in
 source config/cc.in
 source config/libc.in
-source config/tools.in
 source config/debug.in
+source config/tools.in
+source config/companion_libs.in
diff --git a/config/kernel.in b/config/kernel.in
index 9c701e10..bbaec77a 100644
--- a/config/kernel.in
+++ b/config/kernel.in
@@ -8,6 +8,13 @@ config BARE_METAL
     bool
     default n
 
+# Each target OS (aka kernel) that support shared libraries can select
+# this, so the user can decide whether or not to build a shared library
+# enabled toolchain
+config KERNEL_SUPPORTS_SHARED_LIBS
+    bool
+    default n
+
 config KERNEL
     string
 
@@ -16,4 +23,17 @@ config KERNEL_VERSION
 
 source config.gen/kernel.in
 
+comment "Common kernel options"
+
+config SHARED_LIBS
+    bool
+    prompt "Build shared libraries"
+    depends on KERNEL_SUPPORTS_SHARED_LIBS
+    default y
+    help
+      Say 'y' here, unless you don't want shared libraries.
+      
+      You might not want shared libraries if you're building for a target that
+      don't support it (maybe some nommu targets, for example, or bare metal).
+
 endmenu
diff --git a/config/kernel/linux.in b/config/kernel/linux.in
index abcc10fe..12ae5a5f 100644
--- a/config/kernel/linux.in
+++ b/config/kernel/linux.in
@@ -3,6 +3,7 @@
 # Linux kernel options
 
 config KERNEL_linux
+    select KERNEL_SUPPORTS_SHARED_LIBS
     help
       Build a toolchain targeting systems running Linux as a kernel.
 
diff --git a/config/toolchain.in b/config/toolchain.in
index 14db552a..9372dc43 100644
--- a/config/toolchain.in
+++ b/config/toolchain.in
@@ -28,17 +28,6 @@ config SYSROOT_DIR_PREFIX
       In fact, the sysroot path is constructed as:
         ${CT_PREFIX_DIR}/${CT_TARGET}/${CT_SYSROOT_DIR_PREFIX}/sys-root
 
-config SHARED_LIBS
-    bool
-    prompt "Build shared libraries"
-    depends on ! BARE_METAL
-    default y
-    help
-      Say 'y' here, unless you don't want shared libraries.
-      
-      You might not want shared libraries if you're building for a target that
-      don't support it (maybe some nommu targets, for example, or bare metal).
-
 comment "Tuple completion and aliasing"
 
 config TARGET_VENDOR