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