-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathcabal.project
162 lines (145 loc) · 4.74 KB
/
cabal.project
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
---------------------------------------------------------------------------------
-- Build decisions
-- * Static or dynamic binaries
-- * Compiler versions
---------------------------------------------------------------------------------
executable-static: False
---------------------------------------------------------------------------------
-- Output paths
--
-- Place build output(s) in more accessible locations. Binaries should go in `bin`
-- and log files of the build/benchmarks/tests should go in `log`.
---------------------------------------------------------------------------------
logs-dir: ./log
installdir: ./bin
install-method: copy
overwrite-policy: always
--docdir: ./doc
--htmldir: ./doc/html
---------------------------------------------------------------------------------
-- Build metadata flags
--
-- Sensible alterations from the defaults to improve the build experience during
-- iterative development. Simultaneously, does not hinder release builds.
---------------------------------------------------------------------------------
haddock-html: True
haddock-tests: True
haddock-benchmarks: True
haddock-internal: True
haddock-hyperlink-source: True
jobs: $ncpus
keep-going: True
minimize-conflict-set: True
---------------------------------------------------------------------------------
-- Package flags (useful defaults)
--
-- Instruct all transitive dependencies to be built *with both* optimization and
-- profiling enabled. This reduces rebuilds when debugging while not sacrificing
-- undue execution speed from imported code.
--
-- Contrastingly, *disable both* optimization and profiling when building the
-- current package's codebase. This improves the frequent recompilation speed
-- during iterative development.
--
-- Finally, enable all warnings and then prune out the undesirable ones. Having
-- the large litany of warnings enabled forces pre-emptive compatibility with
-- future breaking changes as well as improving overall code quality.
---------------------------------------------------------------------------------
-- Applies to *all* packages, not just dependencies...
package *
benchmarks: False
documentation: True
tests: False
library-profiling: False
library-profiling-detail: all-functions
optimization: 2
-- Applies to *only* the specified package!
package statistics
ghc-options:
-fmax-simplifier-iterations=16
-fsimpl-tick-factor=512
-funfolding-case-scaling=4
-funfolding-case-threshold=4
package bv-little
benchmarks: True
documentation: True
tests: True
library-profiling: False
optimization: 0
ghc-options:
-- Interface files for post-compilation static analysis
-fwrite-ide-info
-hiedir=.hie
-- Sanity check warnings:
-- 1. Fail on a warning
-- 2. Include all warnings by default
-- 3. Exclude the undesirable warnings
-Werror
-Weverything
-- Exclusions:
-Wno-all-missed-specializations
-Wno-implicit-prelude
-Wno-missing-import-lists
-Wno-missing-kind-signatures
-Wno-missing-safe-haskell-mode
-Wno-monomorphism-restriction
-Wno-type-defaults
-Wno-unsafe
packages: .
---------------------------------------------------------------------------------
-- Dependency specifications
--
-- Always allow a newer version of libraries which are tightly coupled to the GHC
-- compiler version. This allows the project to build with newer versions of the
-- compiler without having to tediously tinker with dependencies, both direct and
-- transitive.
--
-- Furthermore, always allow a newer version of libraries which have had a major
-- release due to a security or performance patch. Add a preference for using a
-- version greater than or equal to the patch.
---------------------------------------------------------------------------------
allow-newer:
-- Core library
base,
ghc,
ghc-compact,
ghc-prim,
integer-gmp,
template-haskell,
-- Internal compiler library
ghc-bignum,
ghc-boot,
ghc-boot-th,
ghc-heap,
libiserv,
-- Dependency of `ghc` library
array,
binary,
bytestring,
containers,
deepseq,
directory,
exceptions,
filepath,
pretty,
process,
time,
transformers,
unix,
Win32,
-- Core tool library
ghci,
hpc,
Cabal,
-- Dependency of `Cabal` library
mtl,
parsec,
text,
-- Security update
aeson,
preferences:
aeson >= 2.0.0,
bytestring >= 0.11.3,
text >= 2.0,
constraints:
hashable >= 1.4.0