diff --git a/CHANGELOG b/CHANGELOG
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,8 @@
+1.4.0
+-----
+* Support Cabal 3.12
+* Tested with ghc 9.4.7
+
 1.3.0
 -----
 * Support Cabal 3.0
diff --git a/cabal-cargs.cabal b/cabal-cargs.cabal
--- a/cabal-cargs.cabal
+++ b/cabal-cargs.cabal
@@ -1,13 +1,13 @@
 cabal-version:      >=1.10.0
 name:               cabal-cargs
-version:            1.3.0
+version:            1.4.0
 license:            BSD3
 license-file:       LICENSE
 maintainer:         daniel.trstenjak@gmail.com
 author:             Daniel Trstenjak
 tested-with:
     ghc ==7.6.2 ghc ==7.6.3 ghc ==7.8.3 ghc ==7.10.1 ghc ==8.0.1
-    ghc ==8.2.1 ghc ==8.4.2 ghc ==8.6.3 ghc ==8.10.1
+    ghc ==8.2.1 ghc ==8.4.2 ghc ==8.6.3 ghc ==8.10.1 ghc ==9.4.7
 
 synopsis:
     A command line program for extracting compiler arguments from a cabal file.
@@ -61,7 +61,7 @@
     build-depends:
         base >=3 && <5,
         cmdargs >=0.10.5 && <0.11,
-        lens >=4.0.1 && <4.20,
+        lens >=4.0.1 && <6.0,
         directory >=1.0 && <1.4,
         filepath >=1.0 && <1.5,
         transformers >=0.3.0.0 && <0.6,
@@ -69,9 +69,9 @@
         system-filepath >=0.4.9 && <0.5,
         system-fileio >=0.3.12 && <0.4,
         unordered-containers >=0.2.3.3 && <0.3,
-        cabal-lenses >=0.10.0 && <0.11,
-        Cabal >=3.0.0.0 && <4.0,
-        bytestring >=0.9 && <0.11
+        cabal-lenses >=0.13.0 && <1.0,
+        Cabal >=3.12 && <4.0,
+        bytestring >=0.9
 
 executable cabal-cargs
     main-is:          Main.hs
diff --git a/lib/CabalCargs/BuildInfo.hs b/lib/CabalCargs/BuildInfo.hs
--- a/lib/CabalCargs/BuildInfo.hs
+++ b/lib/CabalCargs/BuildInfo.hs
@@ -14,7 +14,7 @@
 
 -- | A lens from a 'BuildInfo' to a list of stringified field entries of the 'BuildInfo'.
 field :: F.Field -> Traversal' BuildInfo [String]
-field F.Hs_Source_Dirs         = CL.hsSourceDirsL
+field F.Hs_Source_Dirs         = CL.hsSourceDirsL . CL.symbolicPathListToFilePathList
 field F.Ghc_Options            = CL.optionsL . ghcOptionsL
 field F.Default_Extensions     = oldAndDefaultExtensionsL . extsToStrings
 field F.Default_Language       = CL.defaultLanguageL . langToString
diff --git a/lib/CabalCargs/Spec.hs b/lib/CabalCargs/Spec.hs
--- a/lib/CabalCargs/Spec.hs
+++ b/lib/CabalCargs/Spec.hs
@@ -220,7 +220,7 @@
 allHsSourceDirs pkgDescrp = zip sections hsSourceDirs
    where
       sections     = CL.allSections pkgDescrp
-      hsSourceDirs = map (\section -> toFPs $ pkgDescrp ^. CL.buildInfoIf condVars section . CL.hsSourceDirsL) sections
+      hsSourceDirs = map (\section -> toFPs $ pkgDescrp ^. CL.buildInfoIf condVars section . CL.hsSourceDirsL . CL.symbolicPathListToFilePathList) sections
          where
             toFPs    = map FP.decodeString
             condVars = CL.fromDefaults pkgDescrp
