xref: /petsc/makefile (revision 5529d32271fbc7326c04da9c58ff89e1dcfe5f78)
1# ---
2
3package = petsc4py
4MODULE  = PETSc
5
6# ---
7
8.PHONY: default \
9	config build test install sdist \
10	docs rst2html sphinx sphinx-html sphinx-pdf epydoc epydoc-html \
11	clean distclean srcclean docsclean fullclean uninstall
12
13PYTHON = python
14
15default: build
16
17config:
18	${PYTHON} setup.py config ${CONFIGOPT}
19
20build:
21	${PYTHON} setup.py build ${BUILDOPT}
22
23test:
24	${MPIEXEC} ${VALGRIND} ${PYTHON} test/runtests.py < /dev/null
25
26install: build
27	${PYTHON} setup.py install --user ${INSTALLOPT}
28
29sdist: docs
30	${PYTHON} setup.py sdist ${SDISTOPT}
31
32clean:
33	${PYTHON} setup.py clean --all
34
35distclean: clean
36	-${RM} -r build  _configtest.* *.py[co]
37	-${RM} -r MANIFEST dist ${package}.egg-info
38	-${RM} -r `find . -name '__pycache__'`
39	-${RM} `find . -name '*.py[co]'`
40	-${RM} `find . -name '*~'`
41
42srcclean:
43	-${RM} src/${package}.${MODULE}.c
44	-${RM} src/lib${package}/lib${package}.[ch]
45	-${RM} src/include/${package}/${package}.${MODULE}.h
46	-${RM} src/include/${package}/${package}.${MODULE}_api.h
47
48fullclean: distclean srcclean docsclean
49
50uninstall:
51	-${RM} -r $(shell ${PYTHON} -m site --user-site)/${package}
52	-${RM} -r $(shell ${PYTHON} -m site --user-site)/${package}-*-py*.egg-info
53
54# ----
55
56docs: rst2html sphinx epydoc
57
58docsclean:
59	-${RM} docs/*.html docs/*.pdf
60	-${RM} -r docs/usrman docs/apiref
61
62RST2HTML = $(shell command -v rst2html || command -v rst2html.py || false)
63RST2HTMLOPTS  = --input-encoding=utf-8
64RST2HTMLOPTS += --no-compact-lists
65RST2HTMLOPTS += --cloak-email-addresses
66rst2html:
67	${RST2HTML} ${RST2HTMLOPTS} ./LICENSE.rst  > docs/LICENSE.html
68	${RST2HTML} ${RST2HTMLOPTS} ./CHANGES.rst  > docs/CHANGES.html
69	${RST2HTML} ${RST2HTMLOPTS} docs/index.rst > docs/index.html
70
71SPHINXBUILD = sphinx-build
72SPHINXOPTS  =
73sphinx: sphinx-html sphinx-pdf
74sphinx-html:
75	${PYTHON} -c 'import ${package}.${MODULE}'
76	mkdir -p build/doctrees docs/usrman
77	${SPHINXBUILD} -b html -d build/doctrees ${SPHINXOPTS} \
78	docs/source docs/usrman
79sphinx-pdf:
80	${PYTHON} -c 'import ${package}.${MODULE}'
81	mkdir -p build/doctrees build/latex
82	${SPHINXBUILD} -b latex -d build/doctrees ${SPHINXOPTS} \
83	docs/source build/latex
84	${MAKE} -C build/latex all-pdf > /dev/null
85	mv build/latex/*.pdf docs/
86
87EPYDOCBUILD = ${PYTHON} ./conf/epydocify.py
88EPYDOCOPTS  =
89epydoc: epydoc-html
90epydoc-html:
91	${PYTHON} -c 'import ${package}.${MODULE}'
92	mkdir -p docs/apiref
93	${EPYDOCBUILD} ${EPYDOCOPTS} -o docs/apiref
94
95# ----
96