Skip to content

Commit 93c5ffe

Browse files
authored
Merge pull request commercialhaskell#2264 from khanage/593_override_gcc_path
Add a config option to override gcc path
2 parents 919f0b2 + 416af62 commit 93c5ffe

6 files changed

Lines changed: 29 additions & 1 deletion

File tree

ChangeLog.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@ Other enhancements:
1616
* Stack/Nix: Sets `LD_LIBRARY_PATH` so packages using C libs for Template Haskell can work
1717
(See _e.g._ [this HaskellR issue](https://github.com/tweag/HaskellR/issues/253))
1818

19+
* Add the ability to explictly specify a gcc executable.
20+
[#593](https://github.com/commercialhaskell/stack/issues/593)
21+
1922
Bug fixes:
2023

2124
* Support most executable extensions on Windows

doc/yaml_configuration.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -345,6 +345,14 @@ extra-lib-dirs:
345345
- /opt/foo/lib
346346
```
347347

348+
### with-ghc
349+
350+
Specify a path to gcc explicitly, rather than relying on the normal path resolution.
351+
352+
```yaml
353+
with-gcc: /usr/local/bin/gcc-5
354+
```
355+
348356
### compiler-check
349357

350358
(Since 0.1.4)

src/Stack/Config.hs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -232,6 +232,7 @@ configFromConfigMonoid configStackRoot configUserConfigPath mresolver mproject C
232232

233233
configExtraIncludeDirs = configMonoidExtraIncludeDirs
234234
configExtraLibDirs = configMonoidExtraLibDirs
235+
configOverrideGccPath = getFirst configMonoidOverrideGccPath
235236

236237
-- Only place in the codebase where platform is hard-coded. In theory
237238
-- in the future, allow it to be configured.

src/Stack/Options.hs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,7 @@ cleanOptsParser = CleanShallow <$> packages <|> doFullClean
203203
-- | Command-line arguments parser for configuration.
204204
configOptsParser :: GlobalOptsContext -> Parser ConfigMonoid
205205
configOptsParser hide0 =
206-
(\stackRoot workDir buildOpts dockerOpts nixOpts systemGHC installGHC arch os ghcVariant jobs includes libs skipGHCCheck skipMsys localBin modifyCodePage allowDifferentUser -> mempty
206+
(\stackRoot workDir buildOpts dockerOpts nixOpts systemGHC installGHC arch os ghcVariant jobs includes libs overrideGccPath skipGHCCheck skipMsys localBin modifyCodePage allowDifferentUser -> mempty
207207
{ configMonoidStackRoot = stackRoot
208208
, configMonoidWorkDir = workDir
209209
, configMonoidBuildOpts = buildOpts
@@ -218,6 +218,7 @@ configOptsParser hide0 =
218218
, configMonoidJobs = jobs
219219
, configMonoidExtraIncludeDirs = includes
220220
, configMonoidExtraLibDirs = libs
221+
, configMonoidOverrideGccPath = overrideGccPath
221222
, configMonoidSkipMsys = skipMsys
222223
, configMonoidLocalBinPath = localBin
223224
, configMonoidModifyCodePage = modifyCodePage
@@ -279,6 +280,12 @@ configOptsParser hide0 =
279280
<> help "Extra directories to check for libraries"
280281
<> hide
281282
)))
283+
<*> optionalFirst (textOption
284+
( long "with-gcc"
285+
<> metavar "PATH-TO-GCC"
286+
<> help "Use gcc found at PATH-TO-GCC"
287+
<> hide
288+
))
282289
<*> firstBoolFlags
283290
"skip-ghc-check"
284291
"skipping the GHC version and architecture check"

src/Stack/Types/Build.hs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -629,6 +629,7 @@ configureOptsNoDir econfig bco deps isLocal package = concat
629629
, concatMap (\x -> ["--ghc-options", T.unpack x]) (packageGhcOptions package)
630630
, map (("--extra-include-dirs=" ++) . T.unpack) (Set.toList (configExtraIncludeDirs config))
631631
, map (("--extra-lib-dirs=" ++) . T.unpack) (Set.toList (configExtraLibDirs config))
632+
, maybe [] (\customGcc -> ["--with-gcc=" ++ T.unpack customGcc]) (configOverrideGccPath config)
632633
, if whichCompiler (envConfigCompilerVersion econfig) == Ghcjs
633634
then ["--ghcjs"]
634635
else []

src/Stack/Types/Config.hs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -284,6 +284,8 @@ data Config =
284284
-- ^ Require a version of stack within this range.
285285
,configJobs :: !Int
286286
-- ^ How many concurrent jobs to run, defaults to number of capabilities
287+
,configOverrideGccPath :: !(Maybe Text)
288+
-- ^ Optional gcc override path
287289
,configExtraIncludeDirs :: !(Set Text)
288290
-- ^ --extra-include-dirs arguments
289291
,configExtraLibDirs :: !(Set Text)
@@ -843,6 +845,8 @@ data ConfigMonoid =
843845
-- ^ See: 'configExtraIncludeDirs'
844846
,configMonoidExtraLibDirs :: !(Set Text)
845847
-- ^ See: 'configExtraLibDirs'
848+
, configMonoidOverrideGccPath :: !(First Text)
849+
-- ^ Allow users to override the path to gcc
846850
,configMonoidConcurrentTests :: !(First Bool)
847851
-- ^ See: 'configConcurrentTests'
848852
,configMonoidLocalBinPath :: !(First FilePath)
@@ -916,6 +920,7 @@ parseConfigMonoidJSON obj = do
916920
configMonoidJobs <- First <$> obj ..:? configMonoidJobsName
917921
configMonoidExtraIncludeDirs <- obj ..:? configMonoidExtraIncludeDirsName ..!= Set.empty
918922
configMonoidExtraLibDirs <- obj ..:? configMonoidExtraLibDirsName ..!= Set.empty
923+
configMonoidOverrideGccPath <- First <$> obj ..:? configMonoidOverrideGccPathName
919924
configMonoidConcurrentTests <- First <$> obj ..:? configMonoidConcurrentTestsName
920925
configMonoidLocalBinPath <- First <$> obj ..:? configMonoidLocalBinPathName
921926
configMonoidImageOpts <- jsonSubWarnings (obj ..:? configMonoidImageOptsName ..!= mempty)
@@ -1020,6 +1025,9 @@ configMonoidExtraIncludeDirsName = "extra-include-dirs"
10201025
configMonoidExtraLibDirsName :: Text
10211026
configMonoidExtraLibDirsName = "extra-lib-dirs"
10221027

1028+
configMonoidOverrideGccPathName :: Text
1029+
configMonoidOverrideGccPathName = "with-gcc"
1030+
10231031
configMonoidConcurrentTestsName :: Text
10241032
configMonoidConcurrentTestsName = "concurrent-tests"
10251033

0 commit comments

Comments
 (0)