diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
 # chs-cabal
 
+## 0.1.1.4
+
+  * Update for Cabal 3.14 correctly
+
 ## 0.1.1.3
 
   * Update for Cabal 3.14
diff --git a/chs-cabal.cabal b/chs-cabal.cabal
--- a/chs-cabal.cabal
+++ b/chs-cabal.cabal
@@ -1,6 +1,6 @@
 cabal-version:   1.18
 name:            chs-cabal
-version:         0.1.1.3
+version:         0.1.1.4
 license:         BSD3
 license-file:    LICENSE
 copyright:       Copyright: (c) 2019, 2021 Vanessa McHale
@@ -38,3 +38,9 @@
 
     if impl(ghc >=8.4)
         ghc-options: -Wmissing-export-lists
+
+    if impl(ghc >=8.2)
+        ghc-options: -Wcpp-undef
+
+    if impl(ghc >=8.10)
+        ghc-options: -Wunused-packages
diff --git a/src/Distribution/C2Hs/TopSort.hs b/src/Distribution/C2Hs/TopSort.hs
--- a/src/Distribution/C2Hs/TopSort.hs
+++ b/src/Distribution/C2Hs/TopSort.hs
@@ -9,13 +9,17 @@
 import           Distribution.Compat.Graph            (Node (..),
                                                        fromDistinctList,
                                                        revTopSort)
-import           Distribution.ModuleName              (ModuleName)
+import           Distribution.ModuleName              (ModuleName,
+                                                       toFilePath)
 import           Distribution.Parsec                  (simpleParsec)
 import           Distribution.Simple.PreProcess.Types (Suffix (..))
-import           Distribution.Utils.Path               (FileOrDir (..), Pkg, Source, (</>),
+import           Distribution.Utils.Path               (FileOrDir (..),
+                                                        Pkg, Source,
                                                         SymbolicPath,
-                                                        interpretSymbolicPathCWD)
-import           Distribution.Simple.Utils            (findModuleFileEx,
+                                                        (</>),
+                                                        interpretSymbolicPathCWD,
+                                                        makeRelativePathEx)
+import           Distribution.Simple.Utils            (findFileCwdWithExtension',
                                                        warn)
 import           Distribution.Verbosity               (Verbosity)
 import           Language.Haskell.CHs.Deps            (getFileImports)
@@ -30,18 +34,19 @@
             -> IO [ModuleName] -- ^ Sorted modules
 reorderC2Hs v dirs preMods = do
 
-    chsFiles <- traverse (fmap (interpretSymbolicPathCWD . uncurry (</>)) . findCHS) preMods
+    chsFiles <- traverse (fmap (fmap (interpretSymbolicPathCWD . uncurry (</>))) . findCHS) preMods
 
     modDeps <- traverse (extractDeps v) (zip preMods chsFiles)
 
     pure $ fmap (\(N m _ _) -> m) (revTopSort $ fromDistinctList modDeps)
 
-        where findCHS = findModuleFileEx v dirs [Suffix ".chs"]
+        where findCHS = findFileCwdWithExtension' Nothing [Suffix ".chs"] dirs . makeRelativePathEx . toFilePath
 
 -- | Given a 'ModuleName' and its corresponding filepath, return a 'Node'
 -- with its associated @c2hs@ dependencies
-extractDeps :: Verbosity -> (ModuleName, FilePath) -> IO (Node ModuleName ModuleName)
-extractDeps v (m, f) = do
+extractDeps :: Verbosity -> (ModuleName, Maybe FilePath) -> IO (Node ModuleName ModuleName)
+extractDeps _ (m, Nothing) = pure (N m m [])
+extractDeps v (m, Just f) = do
     res <- getFileImports f
     mods <- case res of
         Right ms -> case traverse simpleParsec ms of
