diff --git a/hadrian/src/Hadrian/Haskell/Cabal/Parse.hs b/hadrian/src/Hadrian/Haskell/Cabal/Parse.hs
index 0c40f770f180e0f9510120f326c9637277b731b7..31e3fd70bed98052e9f31285fb611ceeafeff772 100644
--- a/hadrian/src/Hadrian/Haskell/Cabal/Parse.hs
+++ b/hadrian/src/Hadrian/Haskell/Cabal/Parse.hs
@@ -213,20 +213,15 @@ resolveContextData context@Context {..} = do
     -- Configure the package with the GHC for this stage
     (compiler, platform) <- configurePackageGHC package stage
 
-    flagList <- interpret (target context (Cabal Flags stage) [] []) =<< args <$> flavour
-    let flags = foldr addFlag mempty flagList
-          where
-            addFlag :: String -> C.FlagAssignment -> C.FlagAssignment
-            addFlag ('-':name) = C.insertFlagAssignment (C.mkFlagName name) False
-            addFlag ('+':name) = C.insertFlagAssignment (C.mkFlagName name) True
-            addFlag name       = C.insertFlagAssignment (C.mkFlagName name) True
-
-    let (Right (pd,_)) = C.finalizePD flags C.defaultComponentRequestedSpec
-                         (const True) platform (C.compilerInfo compiler) [] gpd
 
     cPath <- Context.contextPath context
     lbi <- liftIO $ C.getPersistBuildConfig cPath
 
+    let flags = C.flagAssignment lbi
+
+        (Right (pd,_)) = C.finalizePD flags C.defaultComponentRequestedSpec
+                         (const True) platform (C.compilerInfo compiler) [] gpd
+
     -- Note: the @cPath@ is ignored. The path that's used is the 'buildDir' path
     -- from the local build info @lbi@.
     pdi <- liftIO $ getHookedBuildInfo [pkgPath package, cPath -/- "build"]