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