@@ -8,29 +8,37 @@ STACK_WORK ?= .stack-work
88VERBOSITY ?= warn
99
1010CABAL_FILE := $(PROJECT_NAME).cabal
11+DOC_TEST := $(DIST)/build/doc-test/doc-test
1112GHCID := $(BIN)/ghcid
1213STACK_FLAGS := --verbosity $(VERBOSITY)
1314
14−.DEFAULT_GOAL := build
15+.DEFAULT_GOAL := $(EMPTY)/build
1516
1617$(BIN) $(DIST) $(EMPTY):
1718 mkdir -p $@
1819
19−$(EMPTY)/stack-setup: | $(EMPTY)
20− $(STACK) $(STACK_FLAGS) setup
21− touch $@
22−
23−$(GHCID): $(EMPTY)/stack-setup | $(BIN)
24− $(STACK) $(STACK_FLAGS) install ghcid --local-bin-path $(BIN)
25−
2620$(CABAL_FILE): package.yaml
2721 # `stack` has no way to run `hpack` directly.
2822 # We can run `hpack` indirectly with little overhead.
2923 $(STACK) $(STACK_FLAGS) build --dry-run
3024
31−.PHONY: build
32−build: $(EMPTY)/stack-setup
25+$(DOC_TEST): $(EMPTY)/build golden/**/*.json
26+ $@
27+
28+$(EMPTY)/build: $(EMPTY)/stack-setup README.md Setup.hs package.yaml stack.yaml src/**/*.hs test/**/*.hs | $(DIST)
3329 $(STACK) $(STACK_FLAGS) build --no-run-tests --test
30+ cp -R $$($(STACK) $(STACK_FLAGS) path --dist-dir)/build $(DIST)/build
31+ touch $@
32+
33+$(EMPTY)/doc-test: $(EMPTY)/build
34+ touch $@
35+
36+$(EMPTY)/stack-setup: | $(EMPTY)
37+ $(STACK) $(STACK_FLAGS) setup
38+ touch $@
39+
40+$(GHCID): $(EMPTY)/stack-setup | $(BIN)
41+ $(STACK) $(STACK_FLAGS) install ghcid --local-bin-path $(BIN)
3442
3543.PHONY: cabal-check
3644cabal-check: $(CABAL_FILE)
@@ -49,8 +57,7 @@ sdist: cabal-check | $(DIST)
4957 $(CABAL) sdist
5058
5159.PHONY: test
52−test: build
53− $(STACK) $(STACK_FLAGS) test
60+test: $(DOC_TEST)
5461
5562.PHONY: upload-hackage
5663upload-hackage: sdist