22{-# LANGUAGE RecordWildCards #-}
33
44-- | Build configuration
5- module Stack.Config.Build where
5+ module Stack.Config.Build
6+ ( benchmarkOptsFromMonoid
7+ , buildOptsFromMonoid
8+ , haddockOptsFromMonoid
9+ , testOptsFromMonoid
10+ ) where
611
712import Distribution.Verbosity ( normal )
813import Stack.Prelude
@@ -11,86 +16,88 @@ import Stack.Types.Config
1116-- | Interprets BuildOptsMonoid options.
1217buildOptsFromMonoid :: BuildOptsMonoid -> BuildOpts
1318buildOptsFromMonoid BuildOptsMonoid {.. } = BuildOpts
14- { boptsLibProfile = fromFirstFalse
15- (buildMonoidLibProfile <>
16- FirstFalse (if tracing || profiling then Just True else Nothing ))
17- , boptsExeProfile = fromFirstFalse
18- (buildMonoidExeProfile <>
19- FirstFalse (if tracing || profiling then Just True else Nothing ))
20- , boptsLibStrip = fromFirstTrue
21- (buildMonoidLibStrip <>
22- FirstTrue (if noStripping then Just False else Nothing ))
23- , boptsExeStrip = fromFirstTrue
24- (buildMonoidExeStrip <>
25- FirstTrue (if noStripping then Just False else Nothing ))
26- , boptsHaddock = fromFirstFalse buildMonoidHaddock
27- , boptsHaddockOpts = haddockOptsFromMonoid buildMonoidHaddockOpts
28- , boptsOpenHaddocks = fromFirstFalse buildMonoidOpenHaddocks
29- , boptsHaddockDeps = getFirst buildMonoidHaddockDeps
30- , boptsHaddockInternal = fromFirstFalse buildMonoidHaddockInternal
31- , boptsHaddockHyperlinkSource = fromFirstTrue buildMonoidHaddockHyperlinkSource
32- , boptsInstallExes = fromFirstFalse buildMonoidInstallExes
33- , boptsInstallCompilerTool = fromFirstFalse buildMonoidInstallCompilerTool
34- , boptsPreFetch = fromFirstFalse buildMonoidPreFetch
35- , boptsKeepGoing = getFirst buildMonoidKeepGoing
36- , boptsKeepTmpFiles = fromFirstFalse buildMonoidKeepTmpFiles
37- , boptsForceDirty = fromFirstFalse buildMonoidForceDirty
38- , boptsTests = fromFirstFalse buildMonoidTests
39- , boptsTestOpts =
40- testOptsFromMonoid buildMonoidTestOpts additionalArgs
41- , boptsBenchmarks = fromFirstFalse buildMonoidBenchmarks
42- , boptsBenchmarkOpts =
43- benchmarkOptsFromMonoid buildMonoidBenchmarkOpts additionalArgs
44- , boptsReconfigure = fromFirstFalse buildMonoidReconfigure
45- , boptsCabalVerbose = fromFirst (CabalVerbosity normal) buildMonoidCabalVerbose
46- , boptsSplitObjs = fromFirstFalse buildMonoidSplitObjs
47- , boptsSkipComponents = buildMonoidSkipComponents
48- , boptsInterleavedOutput = fromFirstTrue buildMonoidInterleavedOutput
49- , boptsDdumpDir = getFirst buildMonoidDdumpDir
50- }
51- where
52- -- These options are not directly used in bopts, instead they
53- -- transform other options.
54- tracing = getAny buildMonoidTrace
55- profiling = getAny buildMonoidProfile
56- noStripping = getAny buildMonoidNoStrip
57- -- Additional args for tracing / profiling
58- additionalArgs =
59- if tracing || profiling
60- then Just $ " +RTS" : catMaybes [trac, prof, Just " -RTS" ]
61- else Nothing
62- trac =
63- if tracing
64- then Just " -xc"
65- else Nothing
66- prof =
67- if profiling
68- then Just " -p"
69- else Nothing
19+ { boptsLibProfile = fromFirstFalse
20+ (buildMonoidLibProfile <>
21+ FirstFalse (if tracing || profiling then Just True else Nothing ))
22+ , boptsExeProfile = fromFirstFalse
23+ (buildMonoidExeProfile <>
24+ FirstFalse (if tracing || profiling then Just True else Nothing ))
25+ , boptsLibStrip = fromFirstTrue
26+ (buildMonoidLibStrip <>
27+ FirstTrue (if noStripping then Just False else Nothing ))
28+ , boptsExeStrip = fromFirstTrue
29+ (buildMonoidExeStrip <>
30+ FirstTrue (if noStripping then Just False else Nothing ))
31+ , boptsHaddock = fromFirstFalse buildMonoidHaddock
32+ , boptsHaddockOpts = haddockOptsFromMonoid buildMonoidHaddockOpts
33+ , boptsOpenHaddocks = fromFirstFalse buildMonoidOpenHaddocks
34+ , boptsHaddockDeps = getFirst buildMonoidHaddockDeps
35+ , boptsHaddockInternal = fromFirstFalse buildMonoidHaddockInternal
36+ , boptsHaddockHyperlinkSource = fromFirstTrue buildMonoidHaddockHyperlinkSource
37+ , boptsInstallExes = fromFirstFalse buildMonoidInstallExes
38+ , boptsInstallCompilerTool = fromFirstFalse buildMonoidInstallCompilerTool
39+ , boptsPreFetch = fromFirstFalse buildMonoidPreFetch
40+ , boptsKeepGoing = getFirst buildMonoidKeepGoing
41+ , boptsKeepTmpFiles = fromFirstFalse buildMonoidKeepTmpFiles
42+ , boptsForceDirty = fromFirstFalse buildMonoidForceDirty
43+ , boptsTests = fromFirstFalse buildMonoidTests
44+ , boptsTestOpts =
45+ testOptsFromMonoid buildMonoidTestOpts additionalArgs
46+ , boptsBenchmarks = fromFirstFalse buildMonoidBenchmarks
47+ , boptsBenchmarkOpts =
48+ benchmarkOptsFromMonoid buildMonoidBenchmarkOpts additionalArgs
49+ , boptsReconfigure = fromFirstFalse buildMonoidReconfigure
50+ , boptsCabalVerbose = fromFirst (CabalVerbosity normal) buildMonoidCabalVerbose
51+ , boptsSplitObjs = fromFirstFalse buildMonoidSplitObjs
52+ , boptsSkipComponents = buildMonoidSkipComponents
53+ , boptsInterleavedOutput = fromFirstTrue buildMonoidInterleavedOutput
54+ , boptsDdumpDir = getFirst buildMonoidDdumpDir
55+ }
56+ where
57+ -- These options are not directly used in bopts, instead they
58+ -- transform other options.
59+ tracing = getAny buildMonoidTrace
60+ profiling = getAny buildMonoidProfile
61+ noStripping = getAny buildMonoidNoStrip
62+ -- Additional args for tracing / profiling
63+ additionalArgs =
64+ if tracing || profiling
65+ then Just $ " +RTS" : catMaybes [trac, prof, Just " -RTS" ]
66+ else Nothing
67+ trac =
68+ if tracing
69+ then Just " -xc"
70+ else Nothing
71+ prof =
72+ if profiling
73+ then Just " -p"
74+ else Nothing
7075
7176haddockOptsFromMonoid :: HaddockOptsMonoid -> HaddockOpts
72- haddockOptsFromMonoid HaddockOptsMonoid {.. } =
73- defaultHaddockOpts
74- {hoAdditionalArgs = hoMonoidAdditionalArgs}
77+ haddockOptsFromMonoid HaddockOptsMonoid {.. } = defaultHaddockOpts
78+ { hoAdditionalArgs = hoMonoidAdditionalArgs }
7579
7680testOptsFromMonoid :: TestOptsMonoid -> Maybe [String ] -> TestOpts
77- testOptsFromMonoid TestOptsMonoid {.. } madditional =
78- defaultTestOpts
79- { toRerunTests = fromFirstTrue toMonoidRerunTests
80- , toAdditionalArgs = fromMaybe [] madditional <> toMonoidAdditionalArgs
81- , toCoverage = fromFirstFalse toMonoidCoverage
82- , toDisableRun = fromFirstFalse toMonoidDisableRun
83- , toMaximumTimeSeconds = fromFirst (toMaximumTimeSeconds defaultTestOpts) toMonoidMaximumTimeSeconds
84- , toAllowStdin = fromFirstTrue toMonoidAllowStdin
85- }
81+ testOptsFromMonoid TestOptsMonoid {.. } madditional = defaultTestOpts
82+ { toRerunTests = fromFirstTrue toMonoidRerunTests
83+ , toAdditionalArgs = fromMaybe [] madditional <> toMonoidAdditionalArgs
84+ , toCoverage = fromFirstFalse toMonoidCoverage
85+ , toDisableRun = fromFirstFalse toMonoidDisableRun
86+ , toMaximumTimeSeconds =
87+ fromFirst (toMaximumTimeSeconds defaultTestOpts) toMonoidMaximumTimeSeconds
88+ , toAllowStdin = fromFirstTrue toMonoidAllowStdin
89+ }
8690
87- benchmarkOptsFromMonoid :: BenchmarkOptsMonoid -> Maybe [String ] -> BenchmarkOpts
91+ benchmarkOptsFromMonoid ::
92+ BenchmarkOptsMonoid
93+ -> Maybe [String ]
94+ -> BenchmarkOpts
8895benchmarkOptsFromMonoid BenchmarkOptsMonoid {.. } madditional =
89- defaultBenchmarkOpts
96+ defaultBenchmarkOpts
9097 { beoAdditionalArgs =
91- fmap (\ args -> unwords args <> " " ) madditional <>
92- getFirst beoMonoidAdditionalArgs
98+ fmap (\ args -> unwords args <> " " ) madditional <>
99+ getFirst beoMonoidAdditionalArgs
93100 , beoDisableRun = fromFirst
94- (beoDisableRun defaultBenchmarkOpts)
95- beoMonoidDisableRun
101+ (beoDisableRun defaultBenchmarkOpts)
102+ beoMonoidDisableRun
96103 }
0 commit comments