diff --git a/.gitignore b/.gitignore
index 49567453cf9a0f1ae1c1923e222e49c40f753a6c..fcfa3add4daa5964bb7f4819e02180b337e000f5 100644
--- a/.gitignore
+++ b/.gitignore
@@ -29,6 +29,7 @@ autom4te.cache
 .log.autoconf
 /.depend
 /config.log
+/config.prefix
 /config.status
 /frama-c*.tar.gz
 /distributed
diff --git a/Makefile b/Makefile
index 4a4fc309266844930c6a0a0bcd9e612af975fe7d..0e24cbe64162022e00ca023079f0589412001efc 100644
--- a/Makefile
+++ b/Makefile
@@ -123,6 +123,7 @@ force-reconfigure:
 # INSTALL/UNINSTALL
 ################################
 
+sinclude config.prefix
 FRAMAC_INSTALLDIR?=
 
 INSTALLDIR:=$(FRAMAC_INSTALLDIR)
diff --git a/configure.ac b/configure.ac
index 21b7763b5b5b01a6235a0cfd6374b0f2a8b4073c..2484ebf7d2ce4659163e27aa9bab7146f51e10e4 100644
--- a/configure.ac
+++ b/configure.ac
@@ -88,8 +88,10 @@ fi
 # Check for invalid command-line options #
 ##########################################
 case $prefix in
-  *\ * ) AC_MSG_ERROR(spaces not allowed in --prefix argument "$prefix");;
-  * ) ;;
+  *\'*|*\"* ) AC_MSG_ERROR(quotes not allowed in --prefix argument: $prefix);;
+  * )
+    echo "FRAMAC_INSTALLDIR?=\"$prefix\"" > config.prefix
+    ;;
 esac
 
 #############################