diff --git a/Cabal/Distribution/Simple/Compiler.hs b/Cabal/Distribution/Simple/Compiler.hs
index 9c51208c832521d8962f7cdf3a077a9775428a4f..fd229c4092c87faea3234fcc07303b4ad23d2c2b 100644
--- a/Cabal/Distribution/Simple/Compiler.hs
+++ b/Cabal/Distribution/Simple/Compiler.hs
@@ -79,13 +79,19 @@ import Language.Haskell.Extension (Language(Haskell98), Extension)
 
 import Control.Monad (liftM)
 import Data.List (nub)
+import qualified Data.Map as M (Map)
 import Data.Maybe (catMaybes, isNothing)
 import System.Directory (canonicalizePath)
 
 data Compiler = Compiler {
         compilerId              :: CompilerId,
+        -- ^ Compiler flavour and version.
         compilerLanguages       :: [(Language, Flag)],
-        compilerExtensions      :: [(Extension, Flag)]
+        -- ^ Supported language standards.
+        compilerExtensions      :: [(Extension, Flag)],
+        -- ^ Supported extensions.
+        compilerProperties      :: M.Map String String
+        -- ^ A key-value map for properties not covered by the above fields.
     }
     deriving (Show, Read)
 
diff --git a/Cabal/Distribution/Simple/GHC.hs b/Cabal/Distribution/Simple/GHC.hs
index c7ea6331e4f2dcf305e43e9504335813ee6b67ed..362d9064da0fd639033a3e26d8d28f0b419bfddb 100644
--- a/Cabal/Distribution/Simple/GHC.hs
+++ b/Cabal/Distribution/Simple/GHC.hs
@@ -129,6 +129,7 @@ import Language.Haskell.Extension (Language(..), Extension(..)
 import Control.Monad            ( unless, when )
 import Data.Char                ( isSpace )
 import Data.List
+import qualified Data.Map as M  ( empty )
 import Data.Maybe               ( catMaybes, fromMaybe )
 import Data.Monoid              ( Monoid(..) )
 import System.Directory
@@ -184,7 +185,8 @@ configure verbosity hcPath hcPkgPath conf0 = do
   let comp = Compiler {
         compilerId             = CompilerId GHC ghcVersion,
         compilerLanguages      = languages,
-        compilerExtensions     = extensions
+        compilerExtensions     = extensions,
+        compilerProperties     = M.empty
       }
       compPlatform = targetPlatform ghcInfo
       conf4 = configureToolchain ghcProg ghcInfo conf3 -- configure gcc and ld
diff --git a/Cabal/Distribution/Simple/Hugs.hs b/Cabal/Distribution/Simple/Hugs.hs
index 2afcff029acd07c0ca30b387df5343413fef6a10..f63bfab3524e15e356f623bad62df7a6653e8fa6 100644
--- a/Cabal/Distribution/Simple/Hugs.hs
+++ b/Cabal/Distribution/Simple/Hugs.hs
@@ -108,6 +108,7 @@ import Distribution.ParseUtils
 import Distribution.Verbosity
 
 import Data.Char                ( isSpace )
+import qualified Data.Map as M  ( empty )
 import Data.Maybe               ( mapMaybe, catMaybes )
 import Data.Monoid              ( Monoid(..) )
 import Control.Monad            ( unless, when, filterM )
@@ -138,7 +139,8 @@ configure verbosity hcPath _hcPkgPath conf = do
   let comp = Compiler {
         compilerId             = CompilerId Hugs version,
         compilerLanguages      = hugsLanguages,
-        compilerExtensions     = hugsLanguageExtensions
+        compilerExtensions     = hugsLanguageExtensions,
+        compilerProperties     = M.empty
       }
       compPlatform = Nothing
   return (comp, compPlatform, conf'')
diff --git a/Cabal/Distribution/Simple/JHC.hs b/Cabal/Distribution/Simple/JHC.hs
index f09a6e4f24ec9ec292cfb3b6f74a6fce801bc976..da978be1e0bc9f6ddb57d62acb167a470ebf0640 100644
--- a/Cabal/Distribution/Simple/JHC.hs
+++ b/Cabal/Distribution/Simple/JHC.hs
@@ -88,6 +88,7 @@ import Distribution.System ( Platform )
 
 import Data.List                ( nub )
 import Data.Char                ( isSpace )
+import qualified Data.Map as M  ( empty )
 import Data.Maybe               ( fromMaybe )
 
 import qualified Data.ByteString.Lazy.Char8 as BS.Char8
@@ -108,7 +109,8 @@ configure verbosity hcPath _hcPkgPath conf = do
       comp = Compiler {
         compilerId             = CompilerId JHC version,
         compilerLanguages      = jhcLanguages,
-        compilerExtensions     = jhcLanguageExtensions
+        compilerExtensions     = jhcLanguageExtensions,
+        compilerProperties     = M.empty
       }
       compPlatform = Nothing
   return (comp, compPlatform, conf')
diff --git a/Cabal/Distribution/Simple/LHC.hs b/Cabal/Distribution/Simple/LHC.hs
index a0420de7096ae37a18316dcc8e76114bcf887460..f3ac52930f06b8daf453b29c386c9ccbeebe7aba 100644
--- a/Cabal/Distribution/Simple/LHC.hs
+++ b/Cabal/Distribution/Simple/LHC.hs
@@ -116,6 +116,7 @@ import Language.Haskell.Extension
 
 import Control.Monad            ( unless, when )
 import Data.List
+import qualified Data.Map as M  ( empty )
 import Data.Maybe               ( catMaybes )
 import Data.Monoid              ( Monoid(..) )
 import System.Directory         ( removeFile, renameFile,
@@ -155,7 +156,8 @@ configure verbosity hcPath hcPkgPath conf = do
   let comp = Compiler {
         compilerId             = CompilerId LHC lhcVersion,
         compilerLanguages      = languages,
-        compilerExtensions     = extensions
+        compilerExtensions     = extensions,
+        compilerProperties     = M.empty
       }
       conf''' = configureToolchain lhcProg conf'' -- configure gcc and ld
       compPlatform = Nothing
diff --git a/Cabal/Distribution/Simple/NHC.hs b/Cabal/Distribution/Simple/NHC.hs
index 0bf55a38ad0c9f7f0308b7e89da20c03968c33ed..93a6c8a322c0743013b05d6fa7239e9737bad2ab 100644
--- a/Cabal/Distribution/Simple/NHC.hs
+++ b/Cabal/Distribution/Simple/NHC.hs
@@ -98,11 +98,12 @@ import System.Directory
          ( doesFileExist, doesDirectoryExist, getDirectoryContents
          , removeFile, getHomeDirectory )
 
-import Data.Char ( toLower )
-import Data.List ( nub )
-import Data.Maybe    ( catMaybes )
-import Data.Monoid   ( Monoid(..) )
-import Control.Monad ( when, unless )
+import Data.Char               ( toLower )
+import Data.List               ( nub )
+import Data.Maybe              ( catMaybes )
+import qualified Data.Map as M ( empty )
+import Data.Monoid             ( Monoid(..) )
+import Control.Monad           ( when, unless )
 import Distribution.Compat.Exception
 import Distribution.System ( Platform )
 
@@ -133,7 +134,8 @@ configure verbosity hcPath _hcPkgPath conf = do
   let comp = Compiler {
         compilerId         = CompilerId NHC nhcVersion,
         compilerLanguages  = nhcLanguages,
-        compilerExtensions     = nhcLanguageExtensions
+        compilerExtensions = nhcLanguageExtensions,
+        compilerProperties = M.empty
       }
       compPlatform = Nothing
   return (comp, compPlatform,  conf'''')
diff --git a/Cabal/Distribution/Simple/UHC.hs b/Cabal/Distribution/Simple/UHC.hs
index 3589937f8637adb270bfa7ad202553ee3f503516..987dcf5f6475c7d5e578cf31ca62f4e0da45bcf0 100644
--- a/Cabal/Distribution/Simple/UHC.hs
+++ b/Cabal/Distribution/Simple/UHC.hs
@@ -53,6 +53,7 @@ module Distribution.Simple.UHC (
 
 import Control.Monad
 import Data.List
+import qualified Data.Map as M ( empty )
 import Distribution.Compat.ReadP
 import Distribution.InstalledPackageInfo
 import Distribution.Package
@@ -86,7 +87,8 @@ configure verbosity hcPath _hcPkgPath conf = do
   let comp = Compiler {
                compilerId         =  CompilerId UHC uhcVersion,
                compilerLanguages  =  uhcLanguages,
-               compilerExtensions =  uhcLanguageExtensions
+               compilerExtensions =  uhcLanguageExtensions,
+               compilerProperties =  M.empty
              }
       compPlatform = Nothing
   return (comp, compPlatform, conf')