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