Skip to content

Commit 17df07a

Browse files
committed
Merging all resource flags.
All resource options now use base options. Add test for FFI/ForeignOptsCapi. Update test ShowBuildInfo/Complex.
1 parent 824735d commit 17df07a

File tree

14 files changed

+147
-204
lines changed

14 files changed

+147
-204
lines changed

Cabal/src/Distribution/Simple/GHC.hs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,6 @@ module Distribution.Simple.GHC
5858
, hcPkgInfo
5959
, registerPackage
6060
, Internal.componentGhcOptions
61-
, Internal.componentCcGhcOptions
6261
, getGhcAppDir
6362
, getLibDir
6463
, compilerBuildWay
@@ -744,7 +743,7 @@ libAbiHash verbosity _pkg_descr lbi lib clbi = do
744743
, ghcOptFPic = toFlag True
745744
, ghcOptHiSuffix = toFlag "dyn_hi"
746745
, ghcOptObjSuffix = toFlag "dyn_o"
747-
, ghcOptExtra = hcOptions GHC libBi ++ hcSharedOptions GHC libBi
746+
, ghcOptExtra = hcSharedOptions GHC libBi
748747
}
749748
profArgs =
750749
vanillaArgs
@@ -756,7 +755,7 @@ libAbiHash verbosity _pkg_descr lbi lib clbi = do
756755
(withProfLibDetail lbi)
757756
, ghcOptHiSuffix = toFlag "p_hi"
758757
, ghcOptObjSuffix = toFlag "p_o"
759-
, ghcOptExtra = hcOptions GHC libBi ++ hcProfOptions GHC libBi
758+
, ghcOptExtra = hcProfOptions GHC libBi
760759
}
761760
profDynArgs =
762761
vanillaArgs
@@ -770,7 +769,7 @@ libAbiHash verbosity _pkg_descr lbi lib clbi = do
770769
, ghcOptFPic = toFlag True
771770
, ghcOptHiSuffix = toFlag "p_dyn_hi"
772771
, ghcOptObjSuffix = toFlag "p_dyn_o"
773-
, ghcOptExtra = hcOptions GHC libBi ++ hcProfSharedOptions GHC libBi
772+
, ghcOptExtra = hcProfSharedOptions GHC libBi
774773
}
775774
ghcArgs =
776775
let (libWays, _, _) = buildWays lbi

Cabal/src/Distribution/Simple/GHC/Build/ExtraSources.hs

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -19,15 +19,17 @@ import Distribution.Types.Component
1919
import Distribution.Types.TargetInfo
2020

2121
import Distribution.Simple.Build.Inputs
22+
import Distribution.Simple.Compiler
2223
import Distribution.Simple.GHC.Build.Modules
2324
import Distribution.Simple.GHC.Build.Utils
2425
import Distribution.Simple.LocalBuildInfo
25-
import Distribution.Simple.Program.Types
26+
import Distribution.Simple.Program
2627
import Distribution.Simple.Setup.Common (commonSetupTempFileOptions)
2728
import Distribution.System (Arch (JavaScript), Platform (..))
2829
import Distribution.Types.ComponentLocalBuildInfo
2930
import Distribution.Utils.Path
3031
import Distribution.Verbosity (Verbosity)
32+
import Distribution.Version
3133

3234
-- | An action that builds all the extra build sources of a component, i.e. C,
3335
-- C++, Js, Asm, C-- sources.
@@ -73,7 +75,7 @@ buildCSources
7375
buildCSources mbMainFile =
7476
buildExtraSources
7577
"C Sources"
76-
Internal.componentCcGhcOptions
78+
Internal.sourcesGhcOptions
7779
( \c -> do
7880
let cFiles = cSources (componentBuildInfo c)
7981
case c of
@@ -86,7 +88,17 @@ buildCSources mbMainFile =
8688
buildCxxSources mbMainFile =
8789
buildExtraSources
8890
"C++ Sources"
89-
Internal.componentCxxGhcOptions
91+
( \verbosity lbi bi clbi odir filename ->
92+
(Internal.sourcesGhcOptions verbosity lbi bi clbi odir filename)
93+
{ ghcOptCcOptions =
94+
( case compilerCompatVersion GHC (compiler lbi) of
95+
Just v
96+
| v >= mkVersion [8, 10] -> Internal.defaultGhcOptCcOptions lbi bi
97+
Just _ -> []
98+
Nothing -> []
99+
)
100+
}
101+
)
90102
( \c -> do
91103
let cxxFiles = cxxSources (componentBuildInfo c)
92104
case c of
@@ -101,7 +113,7 @@ buildJsSources _mbMainFile ghcProg buildTargetDir neededWays = do
101113
let hasJsSupport = hostArch == JavaScript
102114
buildExtraSources
103115
"JS Sources"
104-
Internal.componentJsGhcOptions
116+
Internal.sourcesGhcOptions
105117
( \c ->
106118
if hasJsSupport
107119
then -- JS files are C-like with GHC's JS backend: they are
@@ -117,12 +129,12 @@ buildJsSources _mbMainFile ghcProg buildTargetDir neededWays = do
117129
buildAsmSources _mbMainFile =
118130
buildExtraSources
119131
"Assembler Sources"
120-
Internal.componentAsmGhcOptions
132+
Internal.sourcesGhcOptions
121133
(asmSources . componentBuildInfo)
122134
buildCmmSources _mbMainFile =
123135
buildExtraSources
124136
"C-- Sources"
125-
Internal.componentCmmGhcOptions
137+
Internal.sourcesGhcOptions
126138
(cmmSources . componentBuildInfo)
127139

128140
-- | Create 'PreBuildComponentRules' for a given type of extra build sources
@@ -140,9 +152,7 @@ buildExtraSources
140152
-> GhcOptions
141153
)
142154
-- ^ Function to determine the @'GhcOptions'@ for the
143-
-- invocation of GHC when compiling these extra sources (e.g.
144-
-- @'Internal.componentCxxGhcOptions'@,
145-
-- @'Internal.componentCmmGhcOptions'@)
155+
-- invocation of GHC when compiling these extra sources
146156
-> (Component -> [SymbolicPath Pkg File])
147157
-- ^ View the extra sources of a component, typically from
148158
-- the build info (e.g. @'asmSources'@, @'cSources'@).
@@ -211,14 +221,12 @@ buildExtraSources
211221
sharedSrcOpts =
212222
vanillaSrcOpts
213223
`mappend` mempty
214-
{ ghcOptFPic = toFlag True
215-
, ghcOptDynLinkMode = toFlag GhcDynamicOnly
224+
{ ghcOptDynLinkMode = toFlag GhcDynamicOnly
216225
}
217226
profSharedSrcOpts =
218227
vanillaSrcOpts
219228
`mappend` mempty
220229
{ ghcOptProfilingMode = toFlag True
221-
, ghcOptFPic = toFlag True
222230
, ghcOptDynLinkMode = toFlag GhcDynamicOnly
223231
}
224232
-- TODO: Placing all Haskell, C, & C++ objects in a single directory

0 commit comments

Comments
 (0)