2016-05-10 01:22:38 +08:00
|
|
|
# Makefile for LAMMPS documentation
|
2016-09-22 04:50:23 +08:00
|
|
|
|
2020-08-25 05:56:17 +08:00
|
|
|
SHELL = /bin/bash
|
2020-09-18 00:40:09 +08:00
|
|
|
HAS_BASH = YES
|
|
|
|
ifeq (,$(wildcard $(SHELL)))
|
|
|
|
OSHELL := $(SHELL)
|
|
|
|
override SHELL = /bin/sh
|
|
|
|
HAS_BASH = NO
|
|
|
|
endif
|
2020-08-25 05:56:17 +08:00
|
|
|
BUILDDIR = ${CURDIR}
|
|
|
|
RSTDIR = $(BUILDDIR)/src
|
|
|
|
VENV = $(BUILDDIR)/docenv
|
|
|
|
TXT2RST = $(VENV)/bin/txt2rst
|
|
|
|
ANCHORCHECK = $(VENV)/bin/rst_anchor_check
|
|
|
|
SPHINXCONFIG = $(BUILDDIR)/utils/sphinx-config
|
2020-08-26 01:38:12 +08:00
|
|
|
MATHJAX = $(SPHINXCONFIG)/_static/mathjax
|
2020-08-25 05:56:17 +08:00
|
|
|
|
|
|
|
PYTHON = $(shell which python3)
|
|
|
|
DOXYGEN = $(shell which doxygen)
|
2018-06-01 07:03:28 +08:00
|
|
|
VIRTUALENV = virtualenv
|
2016-10-13 23:40:44 +08:00
|
|
|
HAS_PYTHON3 = NO
|
|
|
|
HAS_VIRTUALENV = NO
|
2020-08-25 05:56:17 +08:00
|
|
|
HAS_DOXYGEN = NO
|
2020-04-03 02:31:47 +08:00
|
|
|
HAS_PDFLATEX = NO
|
2016-05-10 01:22:38 +08:00
|
|
|
|
2016-10-13 23:40:44 +08:00
|
|
|
ifeq ($(shell which python3 >/dev/null 2>&1; echo $$?), 0)
|
2020-08-25 05:56:17 +08:00
|
|
|
HAS_PYTHON3 = YES
|
|
|
|
endif
|
|
|
|
|
|
|
|
ifeq ($(shell which doxygen >/dev/null 2>&1; echo $$?), 0)
|
|
|
|
HAS_DOXYGEN = YES
|
2016-05-10 01:22:38 +08:00
|
|
|
endif
|
|
|
|
|
2018-06-01 07:03:28 +08:00
|
|
|
ifeq ($(shell which virtualenv-3 >/dev/null 2>&1; echo $$?), 0)
|
|
|
|
VIRTUALENV = virtualenv-3
|
|
|
|
HAS_VIRTUALENV = YES
|
|
|
|
endif
|
|
|
|
|
2016-10-13 23:40:44 +08:00
|
|
|
ifeq ($(shell which virtualenv >/dev/null 2>&1; echo $$?), 0)
|
2018-06-01 07:03:28 +08:00
|
|
|
VIRTUALENV = virtualenv
|
2016-10-13 23:40:44 +08:00
|
|
|
HAS_VIRTUALENV = YES
|
2016-05-10 01:22:38 +08:00
|
|
|
endif
|
|
|
|
|
2020-04-03 02:31:47 +08:00
|
|
|
ifeq ($(shell which pdflatex >/dev/null 2>&1; echo $$?), 0)
|
2020-09-20 06:16:52 +08:00
|
|
|
ifeq ($(shell which latexmk >/dev/null 2>&1; echo $$?), 0)
|
2020-04-03 02:31:47 +08:00
|
|
|
HAS_PDFLATEX = YES
|
|
|
|
endif
|
2020-09-20 06:16:52 +08:00
|
|
|
endif
|
2020-04-03 02:31:47 +08:00
|
|
|
|
2021-02-17 00:40:25 +08:00
|
|
|
# override settings for PIP commands
|
|
|
|
# PIP_OPTIONS = --cert /etc/pki/ca-trust/extracted/openssl/ca-bundle.trust.crt --proxy http://proxy.mydomain.org
|
2020-04-03 02:31:47 +08:00
|
|
|
|
2020-09-11 04:14:18 +08:00
|
|
|
#SPHINXEXTRA = -j $(shell $(PYTHON) -c 'import multiprocessing;print(multiprocessing.cpu_count())') $(shell test -f $(BUILDDIR)/doxygen/xml/run.stamp && printf -- "-E")
|
|
|
|
|
|
|
|
# temporarily disable caching so that the hack for the sphinx-tabs extensions to get proper non-html output works
|
|
|
|
SPHINXEXTRA = -E -j $(shell $(PYTHON) -c 'import multiprocessing;print(multiprocessing.cpu_count())')
|
2020-08-25 05:56:17 +08:00
|
|
|
|
|
|
|
# grab list of sources from doxygen config file.
|
|
|
|
# we only want to use explicitly listed files.
|
|
|
|
DOXYFILES = $(shell sed -n -e 's/\#.*$$//' -e '/^ *INPUT \+=/,/^[A-Z_]\+ \+=/p' doxygen/Doxyfile.in | sed -e 's/@LAMMPS_SOURCE_DIR@/..\/src/g' -e 's/\\//g' -e 's/ \+/ /' -e 's/[A-Z_]\+ \+= *\(YES\|NO\|\)//')
|
2016-05-10 01:22:38 +08:00
|
|
|
|
2020-08-25 05:56:17 +08:00
|
|
|
.PHONY: help clean-all clean clean-spelling epub mobi rst html pdf spelling anchor_check style_check xmlgen
|
2016-09-22 05:22:32 +08:00
|
|
|
|
|
|
|
# ------------------------------------------
|
2016-05-10 01:22:38 +08:00
|
|
|
|
|
|
|
help:
|
2020-09-18 00:40:09 +08:00
|
|
|
@if [ "$(HAS_BASH)" == "NO" ] ; then echo "bash was not found at $(OSHELL)! Please use: $(MAKE) SHELL=/path/to/bash" 1>&2; exit 1; fi
|
2016-05-10 01:22:38 +08:00
|
|
|
@echo "Please use \`make <target>' where <target> is one of"
|
2020-10-08 10:29:26 +08:00
|
|
|
@echo " html create HTML pages in html dir"
|
2020-08-28 22:42:05 +08:00
|
|
|
@echo " pdf create Manual.pdf in this dir"
|
2020-02-22 15:27:18 +08:00
|
|
|
@echo " fetch fetch HTML and PDF files from LAMMPS web site"
|
|
|
|
@echo " epub create ePUB format manual for e-book readers"
|
|
|
|
@echo " mobi convert ePUB to MOBI format manual for e-book readers (e.g. Kindle)"
|
2018-08-23 10:24:51 +08:00
|
|
|
@echo " (requires ebook-convert tool from calibre)"
|
2020-02-22 15:27:18 +08:00
|
|
|
@echo " clean remove all intermediate RST files"
|
|
|
|
@echo " clean-all reset the entire build environment"
|
2017-03-17 10:21:55 +08:00
|
|
|
@echo " anchor_check scan for duplicate anchor labels"
|
2020-01-12 09:39:58 +08:00
|
|
|
@echo " style_check check for complete and consistent style lists"
|
2020-02-23 00:46:31 +08:00
|
|
|
@echo " package_check check for complete and consistent package lists"
|
2020-02-22 15:27:18 +08:00
|
|
|
@echo " spelling spell-check the manual"
|
2016-09-22 05:22:32 +08:00
|
|
|
|
|
|
|
# ------------------------------------------
|
2016-05-10 01:22:38 +08:00
|
|
|
|
2018-07-26 04:49:51 +08:00
|
|
|
clean-all: clean
|
2020-10-28 05:50:57 +08:00
|
|
|
rm -rf $(BUILDDIR)/docenv $(MATHJAX) $(BUILDDIR)/LAMMPS.mobi $(BUILDDIR)/LAMMPS.epub $(BUILDDIR)/Manual.pdf
|
2016-05-10 01:22:38 +08:00
|
|
|
|
2020-02-22 15:27:18 +08:00
|
|
|
clean: clean-spelling
|
2020-08-25 05:56:17 +08:00
|
|
|
rm -rf $(BUILDDIR)/html $(BUILDDIR)/epub $(BUILDDIR)/latex $(BUILDDIR)/doctrees $(BUILDDIR)/doxygen/xml $(BUILDDIR)/doxygen-warn.log $(BUILDDIR)/doxygen/Doxyfile $(SPHINXCONFIG)/conf.py
|
2017-03-06 10:23:41 +08:00
|
|
|
|
|
|
|
clean-spelling:
|
2020-08-25 05:56:17 +08:00
|
|
|
rm -rf $(BUILDDIR)/spelling
|
2016-05-10 01:22:38 +08:00
|
|
|
|
2020-08-25 05:56:17 +08:00
|
|
|
$(SPHINXCONFIG)/conf.py: $(SPHINXCONFIG)/conf.py.in
|
|
|
|
sed -e 's,@DOXYGEN_XML_DIR@,$(BUILDDIR)/doxygen/xml,g' \
|
|
|
|
-e 's,@LAMMPS_SOURCE_DIR@,$(BUILDDIR)/../src,g' \
|
|
|
|
-e 's,@LAMMPS_PYTHON_DIR@,$(BUILDDIR)/../python,g' \
|
|
|
|
-e 's,@LAMMPS_DOC_DIR@,$(BUILDDIR),g' $< > $@
|
|
|
|
|
2021-02-02 07:13:00 +08:00
|
|
|
html: xmlgen $(VENV) $(SPHINXCONFIG)/conf.py $(ANCHORCHECK) $(MATHJAX)
|
2020-09-18 00:40:09 +08:00
|
|
|
@if [ "$(HAS_BASH)" == "NO" ] ; then echo "bash was not found at $(OSHELL)! Please use: $(MAKE) SHELL=/path/to/bash" 1>&2; exit 1; fi
|
2020-08-25 05:56:17 +08:00
|
|
|
@$(MAKE) $(MFLAGS) -C graphviz all
|
2016-05-10 01:22:38 +08:00
|
|
|
@(\
|
2020-08-25 05:56:17 +08:00
|
|
|
. $(VENV)/bin/activate ; env PYTHONWARNINGS= \
|
|
|
|
sphinx-build $(SPHINXEXTRA) -b html -c $(SPHINXCONFIG) -d $(BUILDDIR)/doctrees $(RSTDIR) html ;\
|
|
|
|
ln -sf Manual.html html/index.html;\
|
|
|
|
rm -f $(BUILDDIR)/doxygen/xml/run.stamp;\
|
2017-03-17 10:21:55 +08:00
|
|
|
echo "############################################" ;\
|
2019-11-06 03:01:48 +08:00
|
|
|
rst_anchor_check src/*.rst ;\
|
2020-08-25 05:56:17 +08:00
|
|
|
python $(BUILDDIR)/utils/check-packages.py -s ../src -d src ;\
|
2019-11-06 03:01:48 +08:00
|
|
|
env LC_ALL=C grep -n '[^ -~]' $(RSTDIR)/*.rst ;\
|
2020-08-25 05:56:17 +08:00
|
|
|
python $(BUILDDIR)/utils/check-styles.py -s ../src -d src ;\
|
2017-03-17 10:21:55 +08:00
|
|
|
echo "############################################" ;\
|
2016-05-10 01:22:38 +08:00
|
|
|
deactivate ;\
|
2016-09-01 09:55:31 +08:00
|
|
|
)
|
2016-09-22 06:14:06 +08:00
|
|
|
@rm -rf html/_sources
|
|
|
|
@rm -rf html/PDF
|
|
|
|
@rm -rf html/USER
|
2020-02-11 05:21:19 +08:00
|
|
|
@rm -rf html/JPG
|
2016-09-22 06:14:06 +08:00
|
|
|
@cp -r src/PDF html/PDF
|
|
|
|
@rm -rf html/PDF/.[sg]*
|
2016-05-10 01:22:38 +08:00
|
|
|
@echo "Build finished. The HTML pages are in doc/html."
|
|
|
|
|
2020-10-02 09:56:30 +08:00
|
|
|
spelling: xmlgen $(SPHINXCONFIG)/conf.py $(VENV) $(SPHINXCONFIG)/false_positives.txt
|
2020-09-18 00:40:09 +08:00
|
|
|
@if [ "$(HAS_BASH)" == "NO" ] ; then echo "bash was not found at $(OSHELL)! Please use: $(MAKE) SHELL=/path/to/bash" 1>&2; exit 1; fi
|
2017-03-06 10:23:41 +08:00
|
|
|
@(\
|
2020-08-25 05:56:17 +08:00
|
|
|
. $(VENV)/bin/activate ; env PYTHONWARNINGS= \
|
|
|
|
cp $(SPHINXCONFIG)/false_positives.txt $(RSTDIR)/ ; env PYTHONWARNINGS= \
|
|
|
|
sphinx-build -b spelling -c $(SPHINXCONFIG) -d $(BUILDDIR)/doctrees $(RSTDIR) spelling ;\
|
|
|
|
rm -f $(BUILDDIR)/doxygen/xml/run.stamp;\
|
2017-03-06 10:23:41 +08:00
|
|
|
deactivate ;\
|
|
|
|
)
|
|
|
|
@echo "Spell check finished."
|
|
|
|
|
2020-08-25 05:56:17 +08:00
|
|
|
epub: xmlgen $(VENV) $(SPHINXCONFIG)/conf.py $(ANCHORCHECK)
|
2020-09-18 00:40:09 +08:00
|
|
|
@if [ "$(HAS_BASH)" == "NO" ] ; then echo "bash was not found at $(OSHELL)! Please use: $(MAKE) SHELL=/path/to/bash" 1>&2; exit 1; fi
|
2020-08-25 05:56:17 +08:00
|
|
|
@$(MAKE) $(MFLAGS) -C graphviz all
|
2018-10-22 06:38:46 +08:00
|
|
|
@mkdir -p epub/JPG
|
2016-10-22 00:05:21 +08:00
|
|
|
@rm -f LAMMPS.epub
|
2018-10-22 06:38:46 +08:00
|
|
|
@cp src/JPG/*.* epub/JPG
|
2016-10-20 21:27:26 +08:00
|
|
|
@(\
|
|
|
|
. $(VENV)/bin/activate ;\
|
2020-08-25 05:56:17 +08:00
|
|
|
sphinx-build $(SPHINXEXTRA) -b epub -c $(SPHINXCONFIG) -d $(BUILDDIR)/doctrees $(RSTDIR) epub ;\
|
|
|
|
rm -f $(BUILDDIR)/doxygen/xml/run.stamp;\
|
2016-10-20 21:27:26 +08:00
|
|
|
deactivate ;\
|
|
|
|
)
|
2016-10-22 00:05:21 +08:00
|
|
|
@mv epub/LAMMPS.epub .
|
2016-10-20 21:27:26 +08:00
|
|
|
@rm -rf epub
|
2016-10-22 00:05:21 +08:00
|
|
|
@echo "Build finished. The ePUB manual file is created."
|
2018-08-23 07:17:21 +08:00
|
|
|
|
|
|
|
mobi: epub
|
|
|
|
@rm -f LAMMPS.mobi
|
|
|
|
@ebook-convert LAMMPS.epub LAMMPS.mobi
|
|
|
|
@echo "Conversion finished. The MOBI manual file is created."
|
2016-10-20 21:27:26 +08:00
|
|
|
|
2020-08-25 05:56:17 +08:00
|
|
|
pdf: xmlgen $(VENV) $(SPHINXCONFIG)/conf.py $(ANCHORCHECK)
|
2020-09-18 00:40:09 +08:00
|
|
|
@if [ "$(HAS_BASH)" == "NO" ] ; then echo "bash was not found at $(OSHELL)! Please use: $(MAKE) SHELL=/path/to/bash" 1>&2; exit 1; fi
|
2020-08-25 05:56:17 +08:00
|
|
|
@$(MAKE) $(MFLAGS) -C graphviz all
|
2020-09-24 04:11:22 +08:00
|
|
|
@if [ "$(HAS_PDFLATEX)" == "NO" ] ; then echo "PDFLaTeX or latexmk were not found! Please check README for further instructions" 1>&2; exit 1; fi
|
2019-02-07 08:56:09 +08:00
|
|
|
@(\
|
2020-08-25 05:56:17 +08:00
|
|
|
. $(VENV)/bin/activate ; env PYTHONWARNINGS= \
|
|
|
|
sphinx-build $(SPHINXEXTRA) -b latex -c $(SPHINXCONFIG) -d $(BUILDDIR)/doctrees $(RSTDIR) latex ;\
|
|
|
|
rm -f $(BUILDDIR)/doxygen/xml/run.stamp;\
|
2020-01-13 01:34:54 +08:00
|
|
|
echo "############################################" ;\
|
|
|
|
rst_anchor_check src/*.rst ;\
|
2020-02-23 00:46:31 +08:00
|
|
|
python utils/check-packages.py -s ../src -d src ;\
|
2020-01-12 09:39:58 +08:00
|
|
|
env LC_ALL=C grep -n '[^ -~]' $(RSTDIR)/*.rst ;\
|
|
|
|
python utils/check-styles.py -s ../src -d src ;\
|
2020-01-13 01:34:54 +08:00
|
|
|
echo "############################################" ;\
|
|
|
|
deactivate ;\
|
2019-02-07 08:56:09 +08:00
|
|
|
)
|
|
|
|
@cd latex && \
|
2020-01-13 01:34:54 +08:00
|
|
|
sed 's/\\begin{equation}//g' LAMMPS.tex > tmp.tex && \
|
|
|
|
mv tmp.tex LAMMPS.tex && \
|
|
|
|
sed 's/\\end{equation}//g' LAMMPS.tex > tmp.tex && \
|
|
|
|
mv tmp.tex LAMMPS.tex && \
|
2020-09-19 12:54:54 +08:00
|
|
|
sed 's/\\contentsname}{.*}}/\\contentsname}{LAMMPS Documentation}}/g' LAMMPS.tex > tmp.tex && \
|
|
|
|
mv tmp.tex LAMMPS.tex && \
|
2020-09-19 06:32:41 +08:00
|
|
|
$(MAKE) $(MFLAGS) && \
|
2020-01-13 01:34:54 +08:00
|
|
|
mv LAMMPS.pdf ../Manual.pdf && \
|
|
|
|
cd ../;
|
2019-02-07 08:56:09 +08:00
|
|
|
@rm -rf latex/_sources
|
|
|
|
@rm -rf latex/PDF
|
|
|
|
@rm -rf latex/USER
|
|
|
|
@cp -r src/PDF latex/PDF
|
|
|
|
@rm -rf latex/PDF/.[sg]*
|
2020-08-28 22:42:05 +08:00
|
|
|
@echo "Build finished. Manual.pdf is in this directory."
|
2016-05-10 22:07:05 +08:00
|
|
|
|
2016-09-22 05:22:32 +08:00
|
|
|
fetch:
|
2020-08-28 22:42:05 +08:00
|
|
|
@rm -rf html_www Manual_www.pdf
|
2016-09-22 05:29:19 +08:00
|
|
|
@curl -s -o Manual_www.pdf http://lammps.sandia.gov/doc/Manual.pdf
|
2016-09-22 06:31:49 +08:00
|
|
|
@curl -s -o lammps-doc.tar.gz http://lammps.sandia.gov/tars/lammps-doc.tar.gz
|
|
|
|
@tar xzf lammps-doc.tar.gz
|
|
|
|
@rm -f lammps-doc.tar.gz
|
2016-09-22 05:22:32 +08:00
|
|
|
|
2017-03-23 02:40:30 +08:00
|
|
|
anchor_check : $(ANCHORCHECK)
|
2017-03-17 10:21:55 +08:00
|
|
|
@(\
|
|
|
|
. $(VENV)/bin/activate ;\
|
2020-01-23 12:51:53 +08:00
|
|
|
rst_anchor_check src/*.rst ;\
|
2017-03-17 10:21:55 +08:00
|
|
|
deactivate ;\
|
|
|
|
)
|
|
|
|
|
2020-02-23 02:49:57 +08:00
|
|
|
style_check : $(VENV)
|
2020-01-12 09:39:58 +08:00
|
|
|
@(\
|
|
|
|
. $(VENV)/bin/activate ;\
|
|
|
|
python utils/check-styles.py -s ../src -d src ;\
|
|
|
|
deactivate ;\
|
|
|
|
)
|
|
|
|
|
2020-02-23 02:49:57 +08:00
|
|
|
package_check : $(VENV)
|
2020-02-23 00:46:31 +08:00
|
|
|
@(\
|
|
|
|
. $(VENV)/bin/activate ;\
|
|
|
|
python utils/check-packages.py -s ../src -d src ;\
|
|
|
|
deactivate ;\
|
|
|
|
)
|
|
|
|
|
2020-08-25 05:56:17 +08:00
|
|
|
xmlgen : doxygen/xml/index.xml
|
|
|
|
|
|
|
|
doxygen/Doxyfile: doxygen/Doxyfile.in
|
|
|
|
sed -e 's/@LAMMPS_SOURCE_DIR@/..\/..\/src/g' $< > $@
|
|
|
|
|
|
|
|
doxygen/xml/index.xml : $(VENV) doxygen/Doxyfile $(DOXYFILES)
|
|
|
|
@(cd doxygen; $(DOXYGEN) Doxyfile && touch xml/run.stamp)
|
2016-09-22 05:22:32 +08:00
|
|
|
# ------------------------------------------
|
|
|
|
|
2016-05-10 01:22:38 +08:00
|
|
|
$(VENV):
|
2020-09-18 00:40:09 +08:00
|
|
|
@if [ "$(HAS_BASH)" == "NO" ] ; then echo "bash was not found at $(OSHELL)! Please use: $(MAKE) SHELL=/path/to/bash" 1>&2; exit 1; fi
|
2020-08-25 05:56:17 +08:00
|
|
|
@if [ "$(HAS_PYTHON3)" == "NO" ] ; then echo "python3 was not found! Please see README for further instructions" 1>&2; exit 1; fi
|
|
|
|
@if [ "$(HAS_DOXYGEN)" == "NO" ] ; then echo "doxygen was not found! Please see README for further instructions" 1>&2; exit 1; fi
|
|
|
|
@if [ "$(HAS_VIRTUALENV)" == "NO" ] ; then echo "virtualenv was not found! Please see README for further instructions" 1>&2; exit 1; fi
|
2016-05-10 01:22:38 +08:00
|
|
|
@( \
|
2018-06-01 07:03:28 +08:00
|
|
|
$(VIRTUALENV) -p $(PYTHON) $(VENV); \
|
2016-05-12 21:58:19 +08:00
|
|
|
. $(VENV)/bin/activate; \
|
2021-02-17 00:40:25 +08:00
|
|
|
pip $(PIP_OPTIONS) install --upgrade pip; \
|
|
|
|
pip $(PIP_OPTIONS) install -r $(BUILDDIR)/utils/requirements.txt; \
|
2016-05-10 01:22:38 +08:00
|
|
|
deactivate;\
|
|
|
|
)
|
|
|
|
|
2020-02-22 15:27:18 +08:00
|
|
|
$(MATHJAX):
|
2021-02-17 00:40:25 +08:00
|
|
|
@git clone --depth 1 git://github.com/mathjax/MathJax.git $@
|
2020-08-25 05:56:17 +08:00
|
|
|
|
2017-03-23 02:40:30 +08:00
|
|
|
$(TXT2RST) $(ANCHORCHECK): $(VENV)
|
2016-05-10 01:22:38 +08:00
|
|
|
@( \
|
2016-05-12 21:58:19 +08:00
|
|
|
. $(VENV)/bin/activate; \
|
|
|
|
(cd utils/converters;\
|
|
|
|
python setup.py develop);\
|
2016-05-10 01:22:38 +08:00
|
|
|
deactivate;\
|
|
|
|
)
|