@@ -1,33 +1,115 @@
11# GNUmakefile
22
3−.PHONY: all configure build check haddock hlint clean packunused
3+srcdir := $(PWD)
44
5−all:: check
5+.PHONY: all check clean release hlint
66
7−configure:: cabal2nix.cabal
8− @cabal -v0 configure --ghc-option=-j --enable-tests
7+all:: lens-construction-helper/lens-construction-helper.cabal \
8+ language-nix/language-nix.cabal \
9+ distribution-nixpkgs/distribution-nixpkgs.cabal \
10+ cabal2nix/cabal2nix.cabal \
11+ hackage2nix/hackage2nix.cabal \
12+ lens-construction-helper/cabal.sandbox.config \
13+ language-nix/cabal.sandbox.config \
14+ distribution-nixpkgs/cabal.sandbox.config \
15+ cabal2nix/cabal.sandbox.config \
16+ hackage2nix/cabal.sandbox.config \
17+ lens-construction-helper/dist/setup-config \
18+ language-nix/dist/setup-config \
19+ distribution-nixpkgs/dist/setup-config \
20+ cabal2nix/dist/setup-config \
21+ hackage2nix/dist/setup-config
922
10−build:: configure
11− @cabal build -j
23+check:: all
24+ cd lens-construction-helper && cabal test
25+ cd language-nix && cabal test
26+ cd distribution-nixpkgs && cabal test
27+ cd cabal2nix && cabal test
28+ cd hackage2nix && cabal test
1229
13−check:: haddock
14− @cabal test -j
15−
16−haddock:: build
17− @cabal haddock --hyperlink-source
30+release:: release-lens-construction-helper.nix \
31+ release-language-nix.nix \
32+ release-distribution-nixpkgs.nix \
33+ release-cabal2nix.nix \
34+ release-hackage2nix.nix \
1835
1936hlint::
20− hlint src
37+ hlint */src */test
38+
39+cabal2nix/cabal2nix.cabal : cabal2nix/package.yaml
40+ cd $(dir $@) && hpack && cabal check
41+ touch $@
42+
43+distribution-nixpkgs/distribution-nixpkgs.cabal : distribution-nixpkgs/package.yaml
44+ cd $(dir $@) && hpack && cabal check
45+ touch $@
46+
47+hackage2nix/hackage2nix.cabal : hackage2nix/package.yaml
48+ cd $(dir $@) && hpack && cabal check
49+ touch $@
50+
51+language-nix/language-nix.cabal : language-nix/package.yaml
52+ cd $(dir $@) && hpack && cabal check
53+ touch $@
54+
55+lens-construction-helper/lens-construction-helper.cabal : lens-construction-helper/package.yaml
56+ cd $(dir $@) && hpack && cabal check
57+ touch $@
58+
59+.sandbox/cabal.sandbox.config:
60+ mkdir $(dir $@) && cd $(dir $@) && cabal sandbox init && cabal sandbox add-source $(srcdir)/lens-construction-helper $(srcdir)/language-nix $(srcdir)/distribution-nixpkgs $(srcdir)/cabal2nix $(srcdir)/hackage2nix
61+
62+lens-construction-helper/cabal.sandbox.config : .sandbox/cabal.sandbox.config
63+ cd $(dir $@) && cabal sandbox init --sandbox=$(srcdir)/.sandbox/.cabal-sandbox
64+ @touch $@
65+
66+language-nix/cabal.sandbox.config : .sandbox/cabal.sandbox.config
67+ cd $(dir $@) && cabal sandbox init --sandbox=$(srcdir)/.sandbox/.cabal-sandbox
68+ @touch $@
69+
70+distribution-nixpkgs/cabal.sandbox.config : .sandbox/cabal.sandbox.config
71+ cd $(dir $@) && cabal sandbox init --sandbox=$(srcdir)/.sandbox/.cabal-sandbox
72+ @touch $@
73+
74+cabal2nix/cabal.sandbox.config : .sandbox/cabal.sandbox.config
75+ cd $(dir $@) && cabal sandbox init --sandbox=$(srcdir)/.sandbox/.cabal-sandbox
76+ @touch $@
77+
78+hackage2nix/cabal.sandbox.config : .sandbox/cabal.sandbox.config
79+ cd $(dir $@) && cabal sandbox init --sandbox=$(srcdir)/.sandbox/.cabal-sandbox
80+ @touch $@
81+
82+lens-construction-helper/dist/setup-config : lens-construction-helper/cabal.sandbox.config
83+ cd $(dir $<) && cabal install --dependencies-only && cabal configure --enable-tests
84+ @touch $@
85+
86+language-nix/dist/setup-config : language-nix/cabal.sandbox.config
87+ cd $(dir $<) && cabal install --dependencies-only && cabal configure --enable-tests
88+ @touch $@
89+
90+distribution-nixpkgs/dist/setup-config : distribution-nixpkgs/cabal.sandbox.config
91+ cd $(dir $<) && cabal install --dependencies-only && cabal configure --enable-tests
92+ @touch $@
93+
94+cabal2nix/dist/setup-config : cabal2nix/cabal.sandbox.config
95+ cd $(dir $<) && cabal install --dependencies-only && cabal configure --enable-tests
96+ @touch $@
97+
98+hackage2nix/dist/setup-config : hackage2nix/cabal.sandbox.config
99+ cd $(dir $<) && cabal install --dependencies-only && cabal configure --enable-tests
100+ @touch $@
101+
102+release-lens-construction-helper.nix : lens-construction-helper/lens-construction-helper.cabal cabal2nix/cabal.sandbox.config
103+ cd cabal2nix && cabal -v0 run cabal2nix -- --maintainer=simons $(srcdir)/lens-construction-helper >../$@
104+
105+release-language-nix.nix : language-nix/language-nix.cabal cabal2nix/cabal.sandbox.config
106+ cd cabal2nix && cabal -v0 run cabal2nix -- --maintainer=simons $(srcdir)/language-nix >../$@
21107
22−packunused::
23− @cabal clean
24− @find . -name "*.imports" -exec rm {} +
25− @cabal configure -O0 --disable-library-profiling
26− @cabal build --ghc-option=-ddump-minimal-imports
27− @packunused
108+release-distribution-nixpkgs.nix : distribution-nixpkgs/distribution-nixpkgs.cabal cabal2nix/cabal.sandbox.config
109+ cd cabal2nix && cabal -v0 run cabal2nix -- --maintainer=simons $(srcdir)/distribution-nixpkgs >../$@
28110
29−clean::
30− @rm -rf dist TAGS
111+release-cabal2nix.nix : cabal2nix/cabal2nix.cabal cabal2nix/cabal.sandbox.config
112+ cd cabal2nix && cabal -v0 run cabal2nix -- --maintainer=simons $(srcdir)/cabal2nix >../$@
31113
32−cabal2nix.cabal : package.yaml
33− @hpack >/dev/null
114+release-hackage2nix.nix : hackage2nix/hackage2nix.cabal cabal2nix/cabal.sandbox.config
115+ cd cabal2nix && cabal -v0 run cabal2nix -- --maintainer=simons $(srcdir)/hackage2nix >../$@