-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Makefile
134 lines (105 loc) · 3.11 KB
/
Makefile
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
# this is only used for custom development!
# well, except for the release target
SHELL=/bin/bash
all: build
build:
stack build
devel:
HOST=127.0.0.1 yesod devel --host 127.0.0.1
profiling:
stack build --profile --flag corydalis:dev
%.ps: %.hp
hp2ps -c $<
%.pdf: %.ps
ps2pdf $<
view: corydalis.ps
gv -orientation seascape $<
%.html: %.md
pandoc -s -o $@ $<
this-week:
date +'%Y.%V'
.PHONY: this-week
git-version:
@if test -d .git; then \
git describe --dirty --always > $@ ; \
elif test ! -f $@ ; then \
echo "Error: cannot generate the '$@' file!"; exit 1; \
fi
@echo "New git version:"
@cat $@
.PHONY: clean-git-version
clean-git-version:
@echo "Force cleaning the git-version file..."
@rm -f git-version
.PHONY: regen-git-version
regen-git-version: clean-git-version git-version
# Target to use after cloning from git
.PHONY: bootstrap
bootstrap:
@echo Installing npm dependencies...
npm install
@echo Fixing font-awesome CSS files...
bash build/patch-font-awesome
@echo One-shot converting typescript to JS...
npx tsc -p js/ --listEmittedFiles
# Continuous typescript compilation
.PHONY: ts-watch
ts-watch:
npx tsc -w -p js/
# Incremental rebuild and installs in dist/ with the current settings
# (vs. release which is clean build).
dist:
stack --work-dir .stack-release install --local-bin-path dist/
# An entire clean build and install in dist.
release: clean lint doc regen-git-version bootstrap
rm -rf .stack-release
stack --work-dir .stack-release build --pedantic $(FLAGS)
stack --work-dir .stack-release install --local-bin-path dist/ $(FLAGS)
mkdir dist/static
cp -aL static/combined dist/static/
mkdir -p dist/static/font-awesome/
cp -aL static/font-awesome/webfonts dist/static/font-awesome/
mkdir -p dist/static/corydalis/
cp -a static/corydalis/manifest.json dist/static/corydalis/
mkdir dist/static/tmp/
.PHONY: demo-release
demo-release:
$(MAKE) release FLAGS="--flag corydalis:public-site"
doc:
mkdocs build -s
haddock:
cabal configure \
--package-db=clear \
--package-db=global \
--package-db=$$(stack path --snapshot-pkg-db) \
--package-db=$$(stack path --local-pkg-db)
cabal haddock --internal --haddock-options=--ignore-all-exports
clean:
rm -rf site/ dist/
rm -f static/tmp/* static/combined/*
.PHONY: really-clean
really-clean: clean
rm -rf .stack-*
test:
stack --work-dir .stack-coverage test --coverage --flag corydalis:dev
STACK_WORK=.stack-coverage hpc-lcov
fast-tests:
# Fast tests with ghc options from
# https://rybczak.net/2016/03/26/how-to-reduce-compilation-times-of-haskell-projects/
stack --work-dir .stack-test test --file-watch --flag corydalis:dev \
--ghc-options="-j +RTS -A128m -n2m -RTS"
fast-build:
stack --work-dir .stack-test build --file-watch --flag corydalis:dev
coverage-tests:
stack --work-dir .stack-coverage test --file-watch --coverage --flag corydalis:dev
lint:
@rm -f lint-report.html
hlint \
--cross \
--report=lint-report.html -c \
--cpp-define=DEVELOPMENT=1 \
src/ test/
lentil:
lentil src static/corydalis templates test
.PHONY: build devel profiling view release doc haddock clean test dist
.INTERMEDIATE: %.ps