2016-05-10 01:22:38 +08:00
# Makefile for LAMMPS documentation
2016-09-22 04:50:23 +08:00
2018-12-04 03:59:43 +08:00
SHELL = /bin/bash
SHA1 = $( shell echo ${ USER } -${ PWD } | python utils/sha1sum.py)
2016-05-10 01:22:38 +08:00
BUILDDIR = /tmp/lammps-docs-$( SHA1)
RSTDIR = $( BUILDDIR) /rst
VENV = $( BUILDDIR) /docenv
TXT2RST = $( VENV) /bin/txt2rst
2017-03-23 02:40:30 +08:00
ANCHORCHECK = $( VENV) /bin/doc_anchor_check
2016-05-10 01:22:38 +08:00
PYTHON = $( shell which python3)
2018-06-01 07:03:28 +08:00
VIRTUALENV = virtualenv
2016-10-13 23:40:44 +08:00
HAS_PYTHON3 = NO
HAS_VIRTUALENV = NO
2016-05-10 01:22:38 +08:00
2016-10-13 23:40:44 +08:00
i f e q ( $( shell which python 3 >/dev /null 2>&1; echo $ $ ?) , 0 )
HAS_PYTHON3 = YES
2016-05-10 01:22:38 +08:00
e n d i f
2018-06-01 07:03:28 +08:00
i f e q ( $( shell which virtualenv -3 >/dev /null 2>&1; echo $ $ ?) , 0 )
VIRTUALENV = virtualenv-3
HAS_VIRTUALENV = YES
e n d i f
2016-10-13 23:40:44 +08:00
i f e q ( $( 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
e n d i f
2017-12-08 04:38:15 +08:00
SPHINXEXTRA = -j $( shell $( PYTHON) -c 'import multiprocessing;print(multiprocessing.cpu_count())' )
2018-03-21 03:42:13 +08:00
SOURCES = $( filter-out $( wildcard src/lammps_commands*.txt) src/lammps_support.txt src/lammps_tutorials.txt,$( wildcard src/*.txt) )
2016-05-10 01:22:38 +08:00
OBJECTS = $( SOURCES:src/%.txt= $( RSTDIR) /%.rst)
2018-08-23 07:17:21 +08:00
.PHONY : help clean -all clean epub mobi html pdf old venv spelling anchor_check
2016-09-22 05:22:32 +08:00
# ------------------------------------------
2016-05-10 01:22:38 +08:00
help :
@echo "Please use \`make <target>' where <target> is one of"
2016-09-22 05:22:32 +08:00
@echo " html create HTML doc pages in html dir"
2018-09-27 18:15:03 +08:00
@echo " pdf create Developer.pdf and Manual.pdf in this dir"
2019-02-14 01:43:35 +08:00
@echo " old create old-style HTML doc pages and Manual.pdf in old dir"
2016-09-22 05:22:32 +08:00
@echo " fetch fetch HTML and PDF files from LAMMPS web site"
2016-10-22 00:05:21 +08:00
@echo " epub create ePUB format manual for e-book readers"
2018-08-23 10:24:51 +08:00
@echo " mobi convert ePUB to MOBI format manual for e-book readers (e.g. Kindle)"
@echo " (requires ebook-convert tool from calibre)"
2016-09-22 05:22:32 +08:00
@echo " clean remove all intermediate RST files"
@echo " clean-all reset the entire build environment"
@echo " txt2html build txt2html tool"
2017-03-17 10:21:55 +08:00
@echo " anchor_check scan for duplicate anchor labels"
2018-12-12 10:02:52 +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
2016-05-12 21:58:19 +08:00
rm -rf $( BUILDDIR) /* utils/txt2html/txt2html.exe
2016-05-10 01:22:38 +08:00
clean :
2019-02-07 08:56:09 +08:00
rm -rf $( RSTDIR) html old epub latex
2017-03-06 10:23:41 +08:00
rm -rf spelling
clean-spelling :
rm -rf spelling
2016-05-10 01:22:38 +08:00
2017-03-23 02:40:30 +08:00
html : $( OBJECTS ) $( ANCHORCHECK )
2016-05-10 01:22:38 +08:00
@( \
2016-05-12 21:58:19 +08:00
. $( VENV) /bin/activate ; \
2016-05-10 01:22:38 +08:00
cp -r src/* $( RSTDIR) / ; \
2017-12-08 04:38:15 +08:00
sphinx-build $( SPHINXEXTRA) -b html -c utils/sphinx-config -d $( BUILDDIR) /doctrees $( RSTDIR) html ; \
2017-03-17 10:21:55 +08:00
echo "############################################" ; \
doc_anchor_check src/*.txt ; \
echo "############################################" ; \
2016-05-10 01:22:38 +08:00
deactivate ; \
2016-09-01 09:55:31 +08:00
)
-rm html/searchindex.js
2016-09-22 06:14:06 +08:00
@rm -rf html/_sources
@rm -rf html/PDF
@rm -rf html/USER
@cp -r src/PDF html/PDF
@cp -r src/USER html/USER
@rm -rf html/PDF/.[ sg] *
@rm -rf html/USER/.[ sg] *
@rm -rf html/USER/*/.[ sg] *
@rm -rf html/USER/*/*.[ sg] *
2016-05-10 01:22:38 +08:00
@echo "Build finished. The HTML pages are in doc/html."
2017-03-06 10:23:41 +08:00
spelling : $( OBJECTS ) utils /sphinx -config /false_positives .txt
@( \
. $( VENV) /bin/activate ; \
pip install sphinxcontrib-spelling ; \
cp -r src/* $( RSTDIR) / ; \
cp utils/sphinx-config/false_positives.txt $( RSTDIR) / ; \
sphinx-build -b spelling -c utils/sphinx-config -d $( BUILDDIR) /doctrees $( RSTDIR) spelling ; \
deactivate ; \
)
@echo "Spell check finished."
2016-10-22 00:05:21 +08:00
epub : $( OBJECTS )
2018-10-22 06:38:46 +08:00
@mkdir -p epub/JPG
2016-10-22 00:05:21 +08:00
@rm -f LAMMPS.epub
2016-10-21 04:16:17 +08:00
@cp src/JPG/lammps-logo.png 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 ; \
cp -r src/* $( RSTDIR) / ; \
2017-12-08 04:38:15 +08:00
sphinx-build $( SPHINXEXTRA) -b epub -c utils/sphinx-config -d $( BUILDDIR) /doctrees $( RSTDIR) epub ; \
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
2019-02-07 08:56:09 +08:00
pdf : $( OBJECTS ) $( ANCHORCHECK )
@( \
. $( VENV) /bin/activate ; \
cp -r src/* $( RSTDIR) / ; \
sphinx-build $( SPHINXEXTRA) -b latex -c utils/sphinx-config -d $( BUILDDIR) /doctrees $( RSTDIR) latex ; \
echo "############################################" ; \
doc_anchor_check src/*.txt ; \
echo "############################################" ; \
deactivate ; \
)
@cd latex && \
2019-02-07 09:32:47 +08:00
sed 's/latexmk -pdf -dvi- -ps-/pdflatex/g' Makefile > temp && \
mv temp Makefile && \
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 && \
make && \
2019-02-07 08:56:09 +08:00
make && \
mv LAMMPS.pdf ../Manual.pdf && \
cd ../;
2016-05-12 21:58:19 +08:00
@( \
2018-09-27 18:15:03 +08:00
cd src/Developer; \
pdflatex developer; \
pdflatex developer; \
mv developer.pdf ../../Developer.pdf; \
2019-02-07 08:56:09 +08:00
cd ../../; \
2016-05-12 21:58:19 +08:00
)
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
@cp -r src/USER latex/USER
@rm -rf latex/PDF/.[ sg] *
@rm -rf latex/USER/.[ sg] *
@rm -rf latex/USER/*/.[ sg] *
@rm -rf latex/USER/*/*.[ sg] *
@echo "Build finished. Manual.pdf and Developer.pdf are in this directory."
2016-05-10 22:07:05 +08:00
2016-09-22 05:22:32 +08:00
old : utils /txt 2html /txt 2html .exe
@rm -rf old
@mkdir old; mkdir old/Eqs; mkdir old/JPG; mkdir old/PDF
@cd src; ../utils/txt2html/txt2html.exe -b *.txt; \
mv *.html ../old; \
cp Eqs/*.jpg ../old/Eqs; \
cp JPG/* ../old/JPG; \
cp PDF/* ../old/PDF;
2019-02-14 01:43:35 +08:00
@( set -e; \
cd src/Developer; \
pdflatex developer; \
pdflatex developer; \
mv developer.pdf ../../old/Developer.pdf; \
cd ../../old; \
for s in ` echo ../src/*.txt | sed -e 's,\.\./src/,,g' -e 's/ \(pairs\|bonds\|angles\|dihedrals\|impropers\|commands_list\|fixes\|computes\).txt/ /g' | sed -e 's,\.txt,\.html,g' ` ; \
do grep -q ^$$ s ../src/lammps.book || \
echo WARNING: doc file $$ s missing in src/lammps.book; done ; \
htmldoc --batch ../src/lammps.book; \
)
2016-09-22 05:22:32 +08:00
fetch :
2016-09-22 05:29:19 +08:00
@rm -rf html_www Manual_www.pdf Developer_www.pdf
@curl -s -o Manual_www.pdf http://lammps.sandia.gov/doc/Manual.pdf
@curl -s -o Developer_www.pdf http://lammps.sandia.gov/doc/Developer.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
txt2html : utils /txt 2html /txt 2html .exe
2017-03-23 02:40:30 +08:00
anchor_check : $( ANCHORCHECK )
2017-03-17 10:21:55 +08:00
@( \
. $( VENV) /bin/activate ; \
doc_anchor_check src/*.txt ; \
deactivate ; \
)
2016-09-22 05:22:32 +08:00
# ------------------------------------------
2016-05-12 21:58:19 +08:00
utils/txt2html/txt2html.exe : utils /txt 2html /txt 2html .cpp
g++ -O -Wall -o $@ $<
2016-05-10 01:22:38 +08:00
$(RSTDIR)/%.rst : src /%.txt $( TXT 2RST )
@( \
mkdir -p $( RSTDIR) ; \
2016-05-12 21:58:19 +08:00
. $( VENV) /bin/activate ; \
2018-07-27 14:29:10 +08:00
txt2rst -v $< > $@ ; \
2016-05-10 01:22:38 +08:00
deactivate ; \
)
$(VENV) :
2016-10-13 23:40:44 +08:00
@if [ " $( HAS_PYTHON3) " = = "NO" ] ; then echo "Python3 was not found! Please check README.md for further instructions" 1>& 2; exit 1; fi
@if [ " $( HAS_VIRTUALENV) " = = "NO" ] ; then echo "virtualenv was not found! Please check README.md 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; \
2017-12-08 04:38:15 +08:00
pip install Sphinx; \
2016-05-10 01:22:38 +08:00
deactivate; \
)
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; \
)