@@ -22,12 +22,14 @@ import Distribution.Simple.Build.Inputs
22
22
import Distribution.Simple.GHC.Build.Modules
23
23
import Distribution.Simple.GHC.Build.Utils
24
24
import Distribution.Simple.LocalBuildInfo
25
- import Distribution.Simple.Program.Types
25
+ import Distribution.Simple.Program
26
26
import Distribution.Simple.Setup.Common (commonSetupTempFileOptions )
27
27
import Distribution.System (Arch (JavaScript ), Platform (.. ))
28
28
import Distribution.Types.ComponentLocalBuildInfo
29
29
import Distribution.Utils.Path
30
30
import Distribution.Verbosity (Verbosity )
31
+ import Distribution.Version
32
+ import Distribution.Simple.Compiler
31
33
32
34
-- | An action that builds all the extra build sources of a component, i.e. C,
33
35
-- C++, Js, Asm, C-- sources.
@@ -73,7 +75,7 @@ buildCSources
73
75
buildCSources mbMainFile =
74
76
buildExtraSources
75
77
" C Sources"
76
- Internal. componentCcGhcOptions
78
+ Internal. sourcesGhcOptions
77
79
( \ c -> do
78
80
let cFiles = cSources (componentBuildInfo c)
79
81
case c of
@@ -86,7 +88,16 @@ buildCSources mbMainFile =
86
88
buildCxxSources mbMainFile =
87
89
buildExtraSources
88
90
" C++ Sources"
89
- Internal. componentCxxGhcOptions
91
+ ( \ verbosity lbi bi clbi odir filename ->
92
+ (Internal. sourcesGhcOptions verbosity lbi bi clbi odir filename)
93
+ { ghcOptCcOptions = (case compilerCompatVersion GHC (compiler lbi) of
94
+ Just v
95
+ | v >= mkVersion [8 , 10 ] -> Internal. defaultGhcOptCcOptions lbi bi
96
+ Just _ -> []
97
+ Nothing -> []
98
+ )
99
+ }
100
+ )
90
101
( \ c -> do
91
102
let cxxFiles = cxxSources (componentBuildInfo c)
92
103
case c of
@@ -101,7 +112,7 @@ buildJsSources _mbMainFile ghcProg buildTargetDir neededWays = do
101
112
let hasJsSupport = hostArch == JavaScript
102
113
buildExtraSources
103
114
" JS Sources"
104
- Internal. componentJsGhcOptions
115
+ Internal. sourcesGhcOptions
105
116
( \ c ->
106
117
if hasJsSupport
107
118
then -- JS files are C-like with GHC's JS backend: they are
@@ -117,12 +128,12 @@ buildJsSources _mbMainFile ghcProg buildTargetDir neededWays = do
117
128
buildAsmSources _mbMainFile =
118
129
buildExtraSources
119
130
" Assembler Sources"
120
- Internal. componentAsmGhcOptions
131
+ Internal. sourcesGhcOptions
121
132
(asmSources . componentBuildInfo)
122
133
buildCmmSources _mbMainFile =
123
134
buildExtraSources
124
135
" C-- Sources"
125
- Internal. componentCmmGhcOptions
136
+ Internal. sourcesGhcOptions
126
137
(cmmSources . componentBuildInfo)
127
138
128
139
-- | Create 'PreBuildComponentRules' for a given type of extra build sources
@@ -140,9 +151,7 @@ buildExtraSources
140
151
-> GhcOptions
141
152
)
142
153
-- ^ Function to determine the @'GhcOptions'@ for the
143
- -- invocation of GHC when compiling these extra sources (e.g.
144
- -- @'Internal.componentCxxGhcOptions'@,
145
- -- @'Internal.componentCmmGhcOptions'@)
154
+ -- invocation of GHC when compiling these extra sources
146
155
-> (Component -> [SymbolicPath Pkg File ])
147
156
-- ^ View the extra sources of a component, typically from
148
157
-- the build info (e.g. @'asmSources'@, @'cSources'@).
@@ -211,14 +220,12 @@ buildExtraSources
211
220
sharedSrcOpts =
212
221
vanillaSrcOpts
213
222
`mappend` mempty
214
- { ghcOptFPic = toFlag True
215
- , ghcOptDynLinkMode = toFlag GhcDynamicOnly
223
+ { ghcOptDynLinkMode = toFlag GhcDynamicOnly
216
224
}
217
225
profSharedSrcOpts =
218
226
vanillaSrcOpts
219
227
`mappend` mempty
220
228
{ ghcOptProfilingMode = toFlag True
221
- , ghcOptFPic = toFlag True
222
229
, ghcOptDynLinkMode = toFlag GhcDynamicOnly
223
230
}
224
231
-- TODO: Placing all Haskell, C, & C++ objects in a single directory
0 commit comments