1*d1874862SSatish Balay-include ../../../petscdir.mk 25808f684SSatish Balay.PHONY: default 35808f684SSatish Balaydefault: build 45808f684SSatish Balay 55808f684SSatish Balaypackage = petsc4py 65808f684SSatish BalayMODULE = PETSc 75808f684SSatish Balay 85808f684SSatish BalayPYTHON = python$(py) 95808f684SSatish BalayMPIEXEC = mpiexec 105808f684SSatish Balay 115808f684SSatish Balay# ---- 125808f684SSatish Balay 135808f684SSatish Balay.PHONY: config build test 145808f684SSatish Balayconfig: 155808f684SSatish Balay ${PYTHON} setup.py config ${CONFIGOPT} 165808f684SSatish Balaybuild: 175808f684SSatish Balay ${PYTHON} setup.py build ${BUILDOPT} 185808f684SSatish Balaytest: 195808f684SSatish Balay ${VALGRIND} ${PYTHON} ${PWD}/test/runtests.py 205808f684SSatish Balaytest-%: 215808f684SSatish Balay ${MPIEXEC} -n $* ${VALGRIND} ${PYTHON} ${PWD}/test/runtests.py 225808f684SSatish Balay 235808f684SSatish Balay.PHONY: srcbuild srcclean 245808f684SSatish Balaysrcbuild: 255808f684SSatish Balay ${PYTHON} setup.py build_src ${SRCOPT} 265808f684SSatish Balaysrcclean: 275808f684SSatish Balay -${RM} src/${package}.${MODULE}.c 285808f684SSatish Balay -${RM} src/include/${package}/${package}.${MODULE}.h 295808f684SSatish Balay -${RM} src/include/${package}/${package}.${MODULE}_api.h 305808f684SSatish Balay -${RM} src/lib${package}/lib${package}.[ch] 315808f684SSatish Balay 325808f684SSatish Balay.PHONY: clean distclean fullclean 335808f684SSatish Balayclean: 345808f684SSatish Balay ${PYTHON} setup.py clean --all 355808f684SSatish Balaydistclean: clean 365808f684SSatish Balay -${RM} -r build _configtest.* *.py[co] 375808f684SSatish Balay -${RM} -r MANIFEST dist ${package}.egg-info 385808f684SSatish Balay -${RM} -r `find . -name '__pycache__'` 395808f684SSatish Balay -${RM} `find . -name '*.py[co]'` 405808f684SSatish Balayfullclean: distclean srcclean docsclean 415808f684SSatish Balay -find . -name '*~' -exec rm -f {} ';' 425808f684SSatish Balay 435808f684SSatish Balay# ---- 445808f684SSatish Balay 455808f684SSatish Balay.PHONY: install uninstall 465808f684SSatish Balayinstall: build 475808f684SSatish Balay ${PYTHON} setup.py install --prefix='' --user ${INSTALLOPT} 485808f684SSatish Balayuninstall: 495808f684SSatish Balay -${RM} -r $(shell ${PYTHON} -m site --user-site)/${package} 505808f684SSatish Balay -${RM} -r $(shell ${PYTHON} -m site --user-site)/${package}-*-py*.egg-info 515808f684SSatish Balay 525808f684SSatish Balay# ---- 535808f684SSatish Balay 545808f684SSatish Balay.PHONY: docs docs-html docs-pdf docs-misc 555808f684SSatish Balaydocs: docs-html docs-pdf docs-misc 565808f684SSatish Balaydocs-html: rst2html sphinx-html epydoc-html 575808f684SSatish Balaydocs-pdf: sphinx-pdf epydoc-pdf 585808f684SSatish Balaydocs-misc: sphinx-man sphinx-info 595808f684SSatish Balay 6048c91c14SBarry Smith#it appears some of the documentation requires a python2 installation to build 6148c91c14SBarry SmithPYTHON2 = python2 6248c91c14SBarry Smith 6348c91c14SBarry Smithcheckdocutils: 6448c91c14SBarry Smith @${PYTHON} -c $$'try:\n import docutils\nexcept:\n print("Run python -m pip install docutils and then try this command again");exit(1)' 6548c91c14SBarry Smith @${PYTHON2} -c $$'try:\n import docutils\nexcept:\n print("Run python2 -m pip install docutils or pip2 install docutils or [sudo] easy_install docutils and then try the command again");exit(1)' 6648c91c14SBarry Smith @${PYTHON2} -c $$'try:\n import epydoc\nexcept:\n print("Run python2 -m pip install epydoc or pip2 install epydoc or [sudo] easy_install epydoc and then try the command again");exit(1)' 6748c91c14SBarry Smith 685808f684SSatish BalayRST2HTML = $(shell command -v rst2html || command -v rst2html.py || false) 695808f684SSatish BalayRST2HTMLOPTS = --input-encoding=utf-8 705808f684SSatish BalayRST2HTMLOPTS += --no-compact-lists 715808f684SSatish BalayRST2HTMLOPTS += --cloak-email-addresses 725808f684SSatish Balay.PHONY: rst2html 7348c91c14SBarry Smithrst2html: checkdocutils 745808f684SSatish Balay ${RST2HTML} ${RST2HTMLOPTS} ./LICENSE.rst > docs/LICENSE.html 755808f684SSatish Balay ${RST2HTML} ${RST2HTMLOPTS} ./CHANGES.rst > docs/CHANGES.html 765808f684SSatish Balay ${RST2HTML} ${RST2HTMLOPTS} docs/index.rst > docs/index.html 775808f684SSatish Balay 785808f684SSatish BalaySPHINXBUILD = sphinx-build 795808f684SSatish BalaySPHINXOPTS = 805808f684SSatish Balay.PHONY: sphinx sphinx-html sphinx-pdf sphinx-man sphinx-info 815808f684SSatish Balaysphinx: sphinx-html sphinx-pdf sphinx-man sphinx-info 825808f684SSatish Balaysphinx-html: 835808f684SSatish Balay mkdir -p build/doctrees docs/usrman 845808f684SSatish Balay ${SPHINXBUILD} -b html -d build/doctrees ${SPHINXOPTS} \ 855808f684SSatish Balay docs/source docs/usrman 865808f684SSatish Balay ${RM} docs/usrman/.buildinfo 875808f684SSatish Balaysphinx-pdf: 885808f684SSatish Balay mkdir -p build/doctrees build/latex 895808f684SSatish Balay ${SPHINXBUILD} -b latex -d build/doctrees ${SPHINXOPTS} \ 905808f684SSatish Balay docs/source build/latex 915808f684SSatish Balay ${MAKE} -C build/latex all-pdf > /dev/null 925808f684SSatish Balay mv build/latex/*.pdf docs/ 935808f684SSatish Balaysphinx-man: 945808f684SSatish Balay mkdir -p build/doctrees build/man 955808f684SSatish Balay ${SPHINXBUILD} -b man -d build/doctrees ${SPHINXOPTS} \ 965808f684SSatish Balay docs/source build/man 975808f684SSatish Balay mv build/man/*.[137] docs/ 985808f684SSatish Balaysphinx-info: 995808f684SSatish Balay mkdir -p build/doctrees build/texinfo 1005808f684SSatish Balay ${SPHINXBUILD} -b texinfo -d build/doctrees ${SPHINXOPTS} \ 1015808f684SSatish Balay docs/source build/texinfo 1025808f684SSatish Balay ${MAKE} -C build/texinfo info > /dev/null 1035808f684SSatish Balay mv build/texinfo/*.info docs/ 1045808f684SSatish Balay 1055808f684SSatish BalayEPYDOCBUILD = ${PYTHON2} ./conf/epydocify.py 1065808f684SSatish BalayEPYDOCOPTS = 1075808f684SSatish Balay.PHONY: epydoc epydoc-html epydoc-pdf 1085808f684SSatish Balayepydoc: epydoc-html epydoc-pdf 1095808f684SSatish Balayepydoc-html: srcbuild 1105808f684SSatish Balay mkdir -p docs/apiref 1115808f684SSatish Balay env CFLAGS=-O0 ${PYTHON2} setup.py -q build --build-lib build/lib.py2 1125808f684SSatish Balay env PYTHONPATH=$$PWD/build/lib.py2 ${PYTHON2} -c 'import ${package}.${MODULE}' 1135808f684SSatish Balay env PYTHONPATH=$$PWD/build/lib.py2 ${EPYDOCBUILD} ${EPYDOCOPTS} --html -o docs/apiref 1145808f684SSatish Balayepydoc-pdf: 1155808f684SSatish Balay 1165808f684SSatish Balay.PHONY: docsclean 1175808f684SSatish Balaydocsclean: 1185808f684SSatish Balay -${RM} docs/*.info docs/*.[137] 1195808f684SSatish Balay -${RM} docs/*.html docs/*.pdf 1205808f684SSatish Balay -${RM} -r docs/usrman docs/apiref 1215808f684SSatish Balay 1225808f684SSatish Balay# ---- 1235808f684SSatish Balay 1245808f684SSatish Balay.PHONY: sdist 1255808f684SSatish Balaysdist: srcbuild docs 1265808f684SSatish Balay ${PYTHON} setup.py sdist ${SDISTOPT} 1275808f684SSatish Balay 1285808f684SSatish Balay# ---- 129