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