-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathMakefile
78 lines (56 loc) · 2.13 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
# vim: noexpandtab
PWD != pwd
BUILD_DIR=${PWD}/_build
HS_ROOT=${PWD}
HS_CABAL=${HS_ROOT}/hsExprTest.cabal
CABAL_OPTS_BLD=--builddir ${BUILD_DIR}
CABAL_OPTS_LOCAL=${CABAL_OPTS_BLD} --package-env=$(BUILD_DIR)
GHC ?= ghc
COMPILER = $(GHC:%=--with-compiler=$(GHC))
PYSRC_PY != find ${PWD} -type f -name '*.py'
PYSRC_HASHBANG != find ${PWD} -type f -executable -exec sh -c 'file {} | grep -iqF python' \; -print
PYSRC != echo $(PYSRC_PY) $(PYSRC_HASHBANG) | tr ' ' '\n' | awk '!a[$$0]++'
-include local.make
CABAL_OPTS_BLD += $(COMPILER)
MYPY ?= mypy
all : submodules build test
${BUILD_DIR} :
mkdir -p $@
touch $@
${BUILD_DIR}/obj :
mkdir -p $@
touch $@
builddir :
mkdir -p ${BUILD_DIR}
rm -f ${BUILD_DIR}/.ghc.environment.*
configure :
build : build-hs pycheck driverWrap
prerequisites : builddir
cabal v2-install --lib ${CABAL_OPTS_LOCAL} QuickCheck ${CABAL_EXTRA_PREREQ}
build-hs : prerequisites
cd ${HS_ROOT} && cabal v2-build ${CABAL_OPTS_BLD}
cabal v2-install --lib ${HS_CABAL} ${CABAL_OPTS_LOCAL}
@echo "set your GHC_ENVIRONMENT to $$(readlink -f ${BUILD_DIR}/.ghc.environment.*) to use hsExprTest"
doc : builddir
cd ${HS_ROOT} && cabal v2-haddock $(CABAL_OPTS_BLD) $(HADDOCKDYN) \
| tee ${BUILD_DIR}/_doclog
rm -rf ${BUILD_DIR}/doc
cp -r $$(dirname $$(tail -n1 ${BUILD_DIR}/_doclog))/../.. ${BUILD_DIR}/doc
find ${BUILD_DIR}/doc/html -name '*.html' \
-exec sed -i 's|<a href="file:///[^"]*/html/libraries/\([^"/]*\)/|<a href="https://hackage.haskell.org/package/\1/docs/|g' {} \;
test : configure build pycheck
cd ${HS_ROOT} && cabal v2-test ${CABAL_OPTS_BLD}
./test/driver examples $T
./test/driver test $T
pycheck : $(PYSRC:%=%-mypy)
$(PYSRC:%=%-mypy) :
env MYPYPATH=$(dir $@) $(MYPY) --check-untyped-defs --warn-redundant-casts --warn-return-any $(@:%-mypy=%)
driverWrap : ${BUILD_DIR}/driverWrap
${BUILD_DIR}/driverWrap : build-hs
printf '#!/bin/sh\nexport GHC_ENVIRONMENT=$$(readlink -f ${BUILD_DIR}/.ghc.environment.*)\n${PWD}/driver "$$@"\n' > $@
chmod +x $@
clean :
rm -rf ${BUILD_DIR}
submodules :
git submodule update -i
.PHONY: all clean test configure build builddir submodules pycheck doc install $(PYSRC:%=%-mypy)