diff --git a/src/Distribution/Simple/UUAGC/UUAGC.hs b/src/Distribution/Simple/UUAGC/UUAGC.hs
--- a/src/Distribution/Simple/UUAGC/UUAGC.hs
+++ b/src/Distribution/Simple/UUAGC/UUAGC.hs
@@ -1,4 +1,4 @@
-{-# LANGUAGE CPP #-}
+{-# LANGUAGE CPP, OverloadedStrings, DataKinds #-}
 module Distribution.Simple.UUAGC.UUAGC(uuagcUserHook,
                                        uuagcUserHook',
                                        uuagc,
@@ -56,7 +56,9 @@
 import Data.Map (Map)
 import qualified Data.Map as Map
 
-#if MIN_VERSION_Cabal(3,6,0)
+#if MIN_VERSION_Cabal(3,14,0)
+import Distribution.Utils.Path (getSymbolicPath, Pkg, Source, SymbolicPath, FileOrDir (Dir), interpretSymbolicPathCWD)
+#elif MIN_VERSION_Cabal(3,6,0)
 import Distribution.Utils.Path (getSymbolicPath, PackageDir, SourceDir, SymbolicPath)
 #endif
 
@@ -192,6 +194,13 @@
                                                    ++ show fClass
                                                    ++ " is not defined."
 
+#if MIN_VERSION_Cabal(3,14,0)
+buildDir' :: LocalBuildInfo -> FilePath
+buildDir' = interpretSymbolicPathCWD . buildDir
+#else
+buildDir' = buildDir
+#endif
+
 -- uuagcSDistHook :: ([String] -> FilePath -> IO (ExitCode, [FilePath]))
 --      -> PackageDescription
 --      -> Maybe LocalBuildInfo
@@ -202,7 +211,7 @@
 --   {-
 --   case mbLbi of
 --     Nothing -> warn normal "sdist: the local buildinfo was not present. Skipping AG initialization. Dist may fail."
---     Just lbi -> let classesPath = buildDir lbi </> agClassesFile
+--     Just lbi -> let classesPath = buildDir' lbi </> agClassesFile
 --                 in commonHook uuagc classesPath pd lbi (sDistVerbosity df)
 --   originalSDistHook pd mbLbi uh df
 --   -}
@@ -216,7 +225,7 @@
      -> BuildFlags
      -> IO ()
 uuagcBuildHook uuagc pd lbi uh bf = do
-  let classesPath = buildDir lbi </> agClassesFile
+  let classesPath = buildDir' lbi </> agClassesFile
   commonHook uuagc classesPath pd lbi (buildVerbosity bf)
   originalBuildHook pd lbi uh bf
 
@@ -229,7 +238,7 @@
 commonHook uuagc classesPath pd lbi fl = do
   let verbosity = fromFlagOrDefault normal fl
   info verbosity $ "commonHook: Assuming AG classesPath: " ++ classesPath
-  createDirectoryIfMissingVerbose verbosity True (buildDir lbi)
+  createDirectoryIfMissingVerbose verbosity True (buildDir' lbi)
   -- Read already existing options
   -- Map FilePath (Options, Maybe (FilePath,[String]))
   oldOptions <- readFileOptions classesPath
@@ -272,7 +281,7 @@
      platformIndependent = True,
      runPreProcessor = mkSimplePreProcessor $ \ inFile outFile verbosity ->
                        do notice verbosity $ "[UUAGC] processing: " ++ inFile ++ " generating: " ++ outFile
-                          let classesPath = buildDir lbi </> agClassesFile
+                          let classesPath = buildDir' lbi </> agClassesFile
                           info verbosity $ "uuagc-preprocessor: Assuming AG classesPath: " ++ classesPath
                           fileOpts <- readFileOptions classesPath
                           opts <- case Map.lookup inFile fileOpts of
@@ -290,7 +299,10 @@
 
 -- | In Cabal 3.6.0.0 (GHC 9.2) and up, 'BuildInfo' member 'hsSourceDirs' has type
 -- '[SymbolicPath PackageDir SourceDir]', but in versions before that, it is [FilePath].
-#if MIN_VERSION_Cabal(3,6,0)
+#if MIN_VERSION_Cabal(3,14,0)
+hsSourceDirsFilePaths :: [SymbolicPath Pkg (Dir Source)] -> [FilePath]
+hsSourceDirsFilePaths = map getSymbolicPath
+#elif MIN_VERSION_Cabal(3,6,0)
 hsSourceDirsFilePaths :: [SymbolicPath PackageDir SourceDir] -> [FilePath]
 hsSourceDirsFilePaths = map getSymbolicPath
 #else
diff --git a/uuagc-cabal.cabal b/uuagc-cabal.cabal
--- a/uuagc-cabal.cabal
+++ b/uuagc-cabal.cabal
@@ -1,7 +1,7 @@
 cabal-version: >=1.10
 build-type: Simple
 name: uuagc-cabal
-version: 1.3.1.0
+version: 1.4.0
 license: BSD3
 license-file: LICENSE
 maintainer: Atze Dijkstra (atzedijkstra@gmail.com)
@@ -17,7 +17,7 @@
 extra-source-files: README
 
 library
-   build-depends:    base >= 4, base < 5, Cabal >= 2, directory >= 1.0.1.1
+   build-depends:    base >= 4, base < 5, Cabal >= 2.0 && <3.15, directory >= 1.0.1.1
    build-depends:    process >= 1.0.1.3, containers >= 0.3, uulib >= 0.9.14, filepath >= 1.1.0.4, mtl >= 2.2.1
    hs-source-dirs:   src, src-options
    default-language: Haskell2010
