1
- .PHONY : all lexer sdpx lib exe doctest
2
- .PHONY : phony
1
+ .PHONY : phony
2
+ # Adding dependency "phony" is like declaring a target as ".PHONY":
3
+ # See https://www.gnu.org/software/make/manual/html_node/Force-Targets.html
3
4
4
5
CABALBUILD := cabal build
5
6
CABALRUN := cabal run
@@ -13,25 +14,32 @@ DOCTEST := cabal repl --with-ghc=doctest --repl-options="-w" --ghc-options="-Wwa
13
14
14
15
# default rules
15
16
17
+ .PHONY : all
16
18
all : exe lib
17
19
18
- lib : $(LEXER_HS )
20
+ .PHONY : lib
21
+ lib :
19
22
$(CABALBUILD ) Cabal:libs
20
23
21
- exe : $(LEXER_HS )
24
+ .PHONY : exe
25
+ exe :
22
26
$(CABALBUILD ) cabal-install:exes
23
27
28
+ .PHONY : init
24
29
init : # # Set up git hooks and ignored revisions
25
30
@git config core.hooksPath .githooks
26
31
# # TODO
27
32
33
+ .PHONY : style
28
34
style : # # Run the code styler
29
35
@fourmolu -q -i Cabal Cabal-syntax cabal-install
30
36
37
+ .PHONY : style-modified
31
38
style-modified : # # Run the code styler on modified files
32
39
@git ls-files --modified Cabal Cabal-syntax cabal-install \
33
40
| grep ' .hs$$' | xargs -P $(PROCS ) -I {} fourmolu -q -i {}
34
41
42
+ .PHONY : style-commit
35
43
style-commit : # # Run the code styler on the previous commit
36
44
@git diff --name-only HEAD $(COMMIT ) Cabal Cabal-syntax cabal-install \
37
45
| grep ' .hs$$' | xargs -P $(PROCS ) -I {} fourmolu -q -i {}
@@ -41,6 +49,7 @@ style-commit: ## Run the code styler on the previous commit
41
49
SPDX_LICENSE_HS: =Cabal-syntax/src/Distribution/SPDX/LicenseId.hs
42
50
SPDX_EXCEPTION_HS: =Cabal-syntax/src/Distribution/SPDX/LicenseExceptionId.hs
43
51
52
+ .PHONY : spdx
44
53
spdx : $(SPDX_LICENSE_HS ) $(SPDX_EXCEPTION_HS )
45
54
46
55
SPDX_LICENSE_VERSIONS: =3.0 3.2 3.6 3.9 3.10 3.16
@@ -56,7 +65,8 @@ $(SPDX_EXCEPTION_HS) : templates/SPDX.LicenseExceptionId.template.hs cabal-dev-s
56
65
TEMPLATE_MACROS: =Cabal/src/Distribution/Simple/Build/Macros/Z.hs
57
66
TEMPLATE_PATHS: =Cabal/src/Distribution/Simple/Build/PathsModule/Z.hs
58
67
59
- templates : phony $(TEMPLATE_MACROS ) $(TEMPLATE_PATHS )
68
+ .PHONY : templates
69
+ templates : $(TEMPLATE_MACROS ) $(TEMPLATE_PATHS )
60
70
61
71
$(TEMPLATE_MACROS ) : templates/cabal_macros.template.h cabal-dev-scripts/src/GenCabalMacros.hs
62
72
cabal run --builddir=dist-newstyle-meta --project-file=cabal.project.meta gen-cabal-macros -- $< $@
@@ -75,18 +85,21 @@ doc/buildinfo-fields-reference.rst : \
75
85
cabal run buildinfo-reference-generator buildinfo-reference-generator/template.zinza | tee $@
76
86
git diff --exit-code $@
77
87
78
- # analyse-imports
79
- analyse-imports : phony
88
+ .PHONY : analyse-imports
89
+ analyse-imports :
80
90
find Cabal-syntax/src Cabal/src cabal-install/src -type f -name ' *.hs' | xargs cabal run --builddir=dist-newstyle-meta --project-file=cabal.project.meta analyse-imports --
81
91
82
92
# ghcid
83
93
94
+ .PHONY : ghcid-lib
84
95
ghcid-lib :
85
96
ghcid -c ' cabal repl Cabal'
86
97
98
+ .PHONY : ghcid-cli
87
99
ghcid-cli :
88
100
ghcid -c ' cabal repl cabal-install'
89
101
102
+ .PHONY : doctest
90
103
doctest :
91
104
$(DOCTEST ) Cabal-syntax
92
105
$(DOCTEST ) Cabal-described
@@ -95,46 +108,57 @@ doctest :
95
108
$(DOCTEST ) cabal-install
96
109
97
110
# This is not run as part of validate.sh (we need hackage-security, which is tricky to get).
111
+ .PHONY : doctest-cli
98
112
doctest-cli :
99
113
doctest -D__DOCTEST__ --fast cabal-install/src cabal-install-solver/src cabal-install-solver/src-assertion
100
114
115
+ .PHONY : doctest-install
101
116
doctest-install :
102
117
cabal install doctest --overwrite-policy=always --ignore-project
103
118
104
119
# tests
105
120
121
+ .PHONY : check-tests
106
122
check-tests :
107
123
$(CABALRUN ) check-tests -- --cwd Cabal-tests ${TEST}
108
124
125
+ .PHONY : parser-tests
109
126
parser-tests :
110
127
$(CABALRUN ) parser-tests -- --cwd Cabal-tests ${TEST}
111
128
129
+ .PHONY : parser-tests-accept
112
130
parser-tests-accept :
113
131
$(CABALRUN ) parser-tests -- --cwd Cabal-tests --accept ${TEST}
114
132
133
+ .PHONY : custom-setup-tests
115
134
custom-setup-tests :
116
135
$(CABALRUN ) custom-setup-tests --
117
136
137
+ .PHONY : hackage-parsec-tests
118
138
hackage-parsec-tests :
119
139
$(CABALRUN ) hackage-tests -- parsec +RTS -s -qg -I0 -A64M -N${THREADS} -RTS ${TEST}
120
140
141
+ .PHONY : hackage-rountrip-tests
121
142
hackage-roundtrip-tests :
122
143
$(CABALRUN ) hackage-tests -- roundtrip +RTS -s -qg -I0 -A64M -N${THREADS} -RTS ${TEST}
123
144
145
+ .PHONY : cabal-install-test
124
146
cabal-install-test :
125
147
$(CABALBUILD ) -j3 cabal-tests cabal
126
148
rm -rf .ghc.environment.*
127
149
cd cabal-testsuite && ` cabal list-bin cabal-tests` --with-cabal=` cabal list-bin cabal` --hide-successes -j3 ${TEST}
128
150
129
151
# hackage-benchmarks (solver)
130
152
153
+ .PHONY : hackage-benchmarks-run
131
154
hackage-benchmarks-run :
132
155
$(CABALBUILD ) -j3 hackage-benchmark cabal
133
156
rm -rf .ghc.environment.*
134
157
$$(cabal list-bin hackage-benchmark ) --cabal1=cabal --cabal2=$$(cabal list-bin cabal ) --packages=" hakyll servant-auth-server" --print-trials --concurrently
135
158
136
159
137
160
# This doesn't run build, as you first need to test with cabal-install-test :)
161
+ .PHONY : cabal-install-test-accept
138
162
cabal-install-test-accept :
139
163
rm -rf .ghc.environment.*
140
164
cd cabal-testsuite && ` cabal list-bin cabal-tests` --with-cabal=` cabal list-bin cabal` --hide-successes -j3 --accept ${TEST}
@@ -145,12 +169,14 @@ cabal-install-test-accept:
145
169
#
146
170
# make validate-via-docker-all -j4 -O
147
171
#
172
+ .PHONY : validate-via-docker-all
148
173
validate-via-docker-all : validate-via-docker-8.2.2
149
174
validate-via-docker-all : validate-via-docker-8.4.4
150
175
validate-via-docker-all : validate-via-docker-8.6.5
151
176
validate-via-docker-all : validate-via-docker-8.8.4
152
177
validate-via-docker-all : validate-via-docker-8.10.4
153
178
179
+ .PHONY : validate-dockerfiles
154
180
validate-dockerfiles : .docker/validate-8.10.4.dockerfile
155
181
validate-dockerfiles : .docker/validate-8.8.4.dockerfile
156
182
validate-dockerfiles : .docker/validate-8.6.5.dockerfile
@@ -164,21 +190,27 @@ validate-dockerfiles : .docker/validate-8.2.2.dockerfile
164
190
# and we have a test relying on this limit being sufficiently small
165
191
DOCKERARGS: =--ulimit nofile=1024:1024
166
192
193
+ .PHONY : validate-via-docker-8.2.2
167
194
validate-via-docker-8.2.2 :
168
195
docker build $(DOCKERARGS ) -t cabal-validate:8.2.2 -f .docker/validate-8.2.2.dockerfile .
169
196
197
+ .PHONY : validate-via-docker-8.4.4
170
198
validate-via-docker-8.4.4 :
171
199
docker build $(DOCKERARGS ) -t cabal-validate:8.4.4 -f .docker/validate-8.4.4.dockerfile .
172
200
201
+ .PHONY : validate-via-docker-8.6.5
173
202
validate-via-docker-8.6.5 :
174
203
docker build $(DOCKERARGS ) -t cabal-validate:8.6.5 -f .docker/validate-8.6.5.dockerfile .
175
204
205
+ .PHONY : validate-via-docker-8.8.4
176
206
validate-via-docker-8.8.4 :
177
207
docker build $(DOCKERARGS ) -t cabal-validate:8.8.4 -f .docker/validate-8.8.4.dockerfile .
178
208
209
+ .PHONY : validate-via-docker-8.10.4
179
210
validate-via-docker-8.10.4 :
180
211
docker build $(DOCKERARGS ) -t cabal-validate:8.10.4 -f .docker/validate-8.10.4.dockerfile .
181
212
213
+ .PHONY : validate-via-docker-old
182
214
validate-via-docker-old :
183
215
docker build $(DOCKERARGS ) -t cabal-validate:older -f .docker/validate-old.dockerfile .
184
216
@@ -199,6 +231,7 @@ bootstrap-json-%: phony
199
231
200
232
BOOTSTRAP_GHC_VERSIONS := 8.10.7 9.0.2 9.2.7 9.4.4
201
233
234
+ .PHONY : bootstrap-jsons
202
235
bootstrap-jsons : $(BOOTSTRAP_GHC_VERSIONS:%=bootstrap-json-% )
203
236
204
237
# documentation
0 commit comments