Skip to content

Commit 2d9e562

Browse files
committed
wip: introduce build and host toolchains
1 parent 07fa005 commit 2d9e562

File tree

4 files changed

+43
-6
lines changed

4 files changed

+43
-6
lines changed

cabal-install/src/Distribution/Client/Config.hs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -573,6 +573,9 @@ instance Semigroup SavedConfig where
573573
combineMonoid savedConfigureExFlags configAllowOlder
574574
, configWriteGhcEnvironmentFilesPolicy =
575575
combine configWriteGhcEnvironmentFilesPolicy
576+
, configHostHcFlavor = combine configHostHcFlavor
577+
, configHostHcPath = combine configHostHcPath
578+
, configHostHcPkg = combine configHostHcPkg
576579
}
577580
where
578581
combine = combine' savedConfigureExFlags

cabal-install/src/Distribution/Client/ProjectConfig/Legacy.hs

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -704,6 +704,13 @@ convertLegacyAllPackageFlags
704704
convertLegacyAllPackageFlags globalFlags configFlags configExFlags installFlags projectFlags projectConfigMultiRepl =
705705
ProjectConfigShared{..}
706706
where
707+
projectConfigHostHcFlavor = NoFlag
708+
projectConfigHostHcPath = NoFlag
709+
projectConfigHostHcPkg = NoFlag
710+
projectConfigPackageDBs = (fmap . fmap) (interpretPackageDB Nothing) projectConfigPackageDBs_
711+
projectConfigHookHashes = mempty -- :: Map FilePath HookAccept
712+
projectConfigDistDir = fmap getSymbolicPath projectConfigAbsoluteDistDir
713+
707714
GlobalFlags
708715
{ globalConfigFile = projectConfigConfigFile
709716
, globalRemoteRepos = projectConfigRemoteRepos
@@ -713,8 +720,6 @@ convertLegacyAllPackageFlags globalFlags configFlags configExFlags installFlags
713720
, globalStoreDir = projectConfigStoreDir
714721
} = globalFlags
715722

716-
projectConfigPackageDBs = (fmap . fmap) (interpretPackageDB Nothing) projectConfigPackageDBs_
717-
projectConfigHookHashes = mempty -- :: Map FilePath HookAccept
718723
ConfigFlags
719724
{ configCommonFlags = commonFlags
720725
, configHcFlavor = projectConfigHcFlavor
@@ -730,8 +735,6 @@ convertLegacyAllPackageFlags globalFlags configFlags configExFlags installFlags
730735
{ setupDistPref = projectConfigAbsoluteDistDir
731736
} = commonFlags
732737

733-
projectConfigDistDir = fmap getSymbolicPath projectConfigAbsoluteDistDir
734-
735738
ConfigExFlags
736739
{ configCabalVersion = projectConfigCabalVersion
737740
, configExConstraints = projectConfigConstraints
@@ -1010,7 +1013,7 @@ convertToLegacySharedConfig
10101013
}
10111014

10121015
configExFlags =
1013-
ConfigExFlags
1016+
mempty
10141017
{ configCabalVersion = projectConfigCabalVersion
10151018
, configAppend = mempty
10161019
, configBackup = mempty

cabal-install/src/Distribution/Client/ProjectConfig/Types.hs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,9 @@ data ProjectConfigShared = ProjectConfigShared
192192
, projectConfigHcFlavor :: Flag CompilerFlavor
193193
, projectConfigHcPath :: Flag FilePath
194194
, projectConfigHcPkg :: Flag FilePath
195+
, projectConfigHostHcFlavor :: Flag CompilerFlavor
196+
, projectConfigHostHcPath :: Flag FilePath
197+
, projectConfigHostHcPkg :: Flag FilePath
195198
, projectConfigHaddockIndex :: Flag PathTemplate
196199
, -- Only makes sense for manual mode, not --local mode
197200
-- too much control!

cabal-install/src/Distribution/Client/Setup.hs

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@ import Distribution.ReadE
162162
)
163163
import Distribution.Simple.Command hiding (boolOpt, boolOpt')
164164
import qualified Distribution.Simple.Command as Command
165-
import Distribution.Simple.Compiler (Compiler, PackageDB, PackageDBStack)
165+
import Distribution.Simple.Compiler (Compiler, CompilerFlavor(..), PackageDB, PackageDBStack)
166166
import Distribution.Simple.Configure
167167
( computeEffectiveProfiling
168168
, configCompilerAuxEx
@@ -920,6 +920,9 @@ data ConfigExFlags = ConfigExFlags
920920
, configAllowOlder :: Maybe AllowOlder
921921
, configWriteGhcEnvironmentFilesPolicy
922922
:: Flag WriteGhcEnvironmentFilesPolicy
923+
, configHostHcFlavor :: Flag CompilerFlavor
924+
, configHostHcPath :: Flag FilePath
925+
, configHostHcPkg:: Flag FilePath
923926
}
924927
deriving (Eq, Show, Generic)
925928

@@ -1047,6 +1050,31 @@ configureExOptions _showOrParseArgs src =
10471050
writeGhcEnvironmentFilesPolicyParser
10481051
writeGhcEnvironmentFilesPolicyPrinter
10491052
)
1053+
, option
1054+
[]
1055+
["host-compiler"]
1056+
"host compiler"
1057+
configHostHcFlavor
1058+
(\v flags -> flags{configHostHcFlavor = v})
1059+
( choiceOpt
1060+
[ (Flag GHC, ("g", ["ghc"]), "compile with GHC")
1061+
, (Flag GHCJS, ([], ["ghcjs"]), "compile with GHCJS")
1062+
]
1063+
)
1064+
, option
1065+
"W"
1066+
["with-host-compiler", "with-host-hc"]
1067+
"give the path to the compiler for the host toolchain"
1068+
configHostHcPath
1069+
(\v flags -> flags{configHostHcPath = v})
1070+
(reqArgFlag "PATH")
1071+
, option
1072+
""
1073+
["with-host-hc-pkg"]
1074+
"give the path to the package tool for the host toolchain"
1075+
configHostHcPkg
1076+
(\v flags -> flags{configHostHcPkg = v})
1077+
(reqArgFlag "PATH")
10501078
]
10511079

10521080
writeGhcEnvironmentFilesPolicyParser :: ReadE (Flag WriteGhcEnvironmentFilesPolicy)

0 commit comments

Comments
 (0)