diff --git a/clashilator.cabal b/clashilator.cabal
--- a/clashilator.cabal
+++ b/clashilator.cabal
@@ -5,7 +5,7 @@
 -- see: https://github.com/sol/hpack
 
 name:           clashilator
-version:        0.1.3
+version:        0.1.4
 synopsis:       Automated Clash to Verilator bridge
 description:    Code generator and @Setup.hs@ hooks to generate a Verilator simulation and access it from Clash
 category:       Hardware, Development
diff --git a/src/Clash/Clashilator/Setup.hs b/src/Clash/Clashilator/Setup.hs
--- a/src/Clash/Clashilator/Setup.hs
+++ b/src/Clash/Clashilator/Setup.hs
@@ -21,6 +21,9 @@
 import Distribution.Verbosity
 import Distribution.ModuleName
 import Distribution.Types.UnqualComponentName
+#if MIN_VERSION_Cabal(3,8,0)
+import Distribution.Utils.Path
+#endif
 
 import Distribution.Types.Lens
 import Control.Lens hiding ((<.>))
@@ -28,16 +31,29 @@
 import Data.Maybe (fromMaybe)
 import System.FilePath
 import GHC (Ghc)
-#if MIN_VERSION_ghc(9,0,0)
+#if MIN_VERSION_ghc(9,4,0)
+#elif MIN_VERSION_ghc(9,0,0)
+#define RESET_LINKER
 import GHC (getSession, setSession)
-import GHC.Driver.Types (HscEnv (..))
+import GHC.Driver.Types (HscEnv(..))
 import GHC.Runtime.Linker
 #elif MIN_VERSION_ghc(8,10,0)
+#define RESET_LINKER
 import GHC (getSession, setSession)
-import HscTypes (HscEnv (..))
+import HscTypes (HscEnv(..))
 import Linker
 #endif
 
+#if !MIN_VERSION_Cabal(3,8,0)
+type SymbolicPath from to = FilePath
+
+getSymbolicPath :: SymbolicPath from to -> FilePath
+getSymbolicPath = id
+
+unsafeMakeSymbolicPath :: FilePath -> SymbolicPath from to
+unsafeMakeSymbolicPath = id
+#endif
+
 lookupX :: String -> BuildInfo -> Maybe String
 lookupX key buildInfo = lookup ("x-clashilator-" <> key) (view customFieldsBI buildInfo)
 
@@ -105,7 +121,6 @@
 
         compileFlags =
             [ "-fPIC"
-            , "-pgml c++"
             ]
 
         ldFlags =
@@ -122,7 +137,7 @@
       & extraLibs %~ ("stdc++":)
       & options %~ fixupOptions (compileFlags++)
       & ldOptions %~ (ldFlags++)
-      & hsSourceDirs %~ (incDir:)
+      & hsSourceDirs %~ (unsafeMakeSymbolicPath incDir:)
       & otherModules %~ (fromString "Clash.Clashilator.FFI":)
   where
     verbosity = fromFlagOrDefault normal (buildVerbosity flags)
@@ -130,7 +145,7 @@
     clk = lookup "x-clashilator-clock" $ view customFieldsBI buildInfo
 
     -- TODO: Maybe we could add extra source dirs from "x-clashilator-source-dirs"?
-    srcDirs = view hsSourceDirs buildInfo
+    srcDirs = getSymbolicPath <$> view hsSourceDirs buildInfo
     outDir = case compName of
         Nothing -> buildDir lbi
         Just name -> buildDir lbi </> unUnqualComponentName name
@@ -139,7 +154,7 @@
 
 clashilate :: LocalBuildInfo -> BuildFlags -> Component -> IO BuildInfo
 clashilate lbi flags c = do
-#if MIN_VERSION_ghc(8,10,0)
+#ifdef RESET_LINKER
     linker <- uninitializedLinker
     let startAction = do
             env <- getSession
