1+ {-# LANGUAGE CPP #-}
2+ {-# LANGUAGE DataKinds #-}
3+ {-# LANGUAGE ImportQualifiedPost #-}
14{-# LANGUAGE OverloadedRecordDot #-}
25{-# LANGUAGE OverloadedStrings #-}
6+ {-# LANGUAGE PackageImports #-} -- Required for GHC9.2
37import Data.Either
48
5- import Distribution.Simple
6- import Distribution.Simple.Setup
7- import Distribution.Simple.LocalBuildInfo
8- import Distribution.PackageDescription
9- import Distribution.Types.BuildInfo
10- import Distribution.Types.PackageDescription
11- import Distribution.Types.CondTree
12- import Distribution.Types.ForeignLib
13- import Distribution.Types.UnqualComponentName
14- import Distribution.Utils.Path
15- import System.Process
9+ import Distribution.Simple (confHook , defaultMainWithHooks , simpleUserHooks )
10+ import Distribution.Simple.Setup (ConfigFlags (.. ))
11+ import Distribution.Simple.LocalBuildInfo (LocalBuildInfo )
12+ import "Cabal -syntax" Distribution.PackageDescription
13+ import "Cabal -syntax" Distribution.Types.BuildInfo
14+ import "Cabal -syntax" Distribution.Types.PackageDescription
15+ import "Cabal -syntax" Distribution.Types.CondTree
16+ import "Cabal -syntax" Distribution.Types.ForeignLib
17+ import "Cabal -syntax" Distribution.Types.UnqualComponentName
18+ import "Cabal -syntax" Distribution.Utils.Path
19+ import "Cabal -syntax" Distribution.Compat.Lens
20+ import "Cabal -syntax" Distribution.Types.BuildInfo.Lens qualified as L
21+
1622import Data.List (intercalate , nub )
23+ import System.Process
1724
18- import Distribution.Compat.Lens
19- import qualified Distribution.Types.BuildInfo.Lens as L
2025
2126main :: IO ()
2227main = defaultMainWithHooks $ simpleUserHooks
2328 { confHook = patchedConfHook }
2429
30+
31+
2532patchedConfHook
2633 :: (GenericPackageDescription , HookedBuildInfo )
2734 -> ConfigFlags
2835 -> IO LocalBuildInfo
2936patchedConfHook (gpd, hbi) flags
3037 | Just True <- lookupFlagAssignment (" python3-config" ) $ configConfigurationsFlags flags
3138 = do cflags_raw <- readProcess " python3-config" [" --cflags" ] " "
32- ldflags_raw <- readProcess " python3-config" [" --embed" , " --ldflags" ] " "
39+ ldflags_raw <- readProcess " python3-config" [" --embed" , " --ldflags" ] " "
3340 -- Split flags
3441 let (inc_dirs,cflags) = partitionEithers
3542 [ case flag of
@@ -46,10 +53,10 @@ patchedConfHook (gpd, hbi) flags
4653 ]
4754 let tweakLib lib = case lib. libName of
4855 LMainLibName -> lib & L. ccOptions %~ (++ cflags)
49- & L. includeDirs %~ (++ inc_dirs)
56+ & L. includeDirs %~ (++ (toSymb <$> inc_dirs) )
5057 & L. ldOptions %~ (++ ldflags)
5158 & L. extraLibs %~ (++ libs)
52- & L. extraLibDirs %~ (++ lib_dirs)
59+ & L. extraLibDirs %~ (++ (toSymb <$> lib_dirs) )
5360 _ -> lib
5461 confHook simpleUserHooks
5562 ( gpd { condLibrary = (fmap . fmap ) tweakLib (condLibrary gpd) }
@@ -60,3 +67,14 @@ patchedConfHook (gpd, hbi) flags
6067
6168tokenizeArguments :: String -> [String ]
6269tokenizeArguments = words
70+
71+ ----------------------------------------------------------------
72+ -- Compatibility
73+
74+ #if MIN_VERSION_Cabal_syntax(3,14,0)
75+ toSymb :: String -> SymbolicPathX 'AllowAbsolute from to
76+ toSymb = makeSymbolicPath
77+ #else
78+ toSymb :: String -> String
79+ toSymb = id
80+ #endif
0 commit comments