Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

file 116 lines (89 sloc) 3.074 kb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116
PYTHON?=python
PYTHON3?=python3.0
TESTFLAGS=-p -v
TESTOPTS=
SETUPFLAGS=
LXMLVERSION=`cat version.txt`

all: inplace

# Build in-place
inplace:
$(PYTHON) setup.py $(SETUPFLAGS) build_ext -i

build:
$(PYTHON) setup.py $(SETUPFLAGS) build

test_build: build
$(PYTHON) test.py $(TESTFLAGS) $(TESTOPTS)

test_inplace: inplace
$(PYTHON) test.py $(TESTFLAGS) $(TESTOPTS)
PYTHONPATH=src:$(PYTHONPATH) $(PYTHON) selftest.py
PYTHONPATH=src:$(PYTHONPATH) $(PYTHON) selftest2.py

test_inplace3: inplace
$(MAKE) clean
$(PYTHON3) setup.py $(SETUPFLAGS) build_ext -i
$(PYTHON3) test.py $(TESTFLAGS) $(TESTOPTS)
PYTHONPATH=src:$(PYTHONPATH) $(PYTHON3) selftest.py
PYTHONPATH=src:$(PYTHONPATH) $(PYTHON3) selftest2.py

valgrind_test_inplace: inplace
valgrind --tool=memcheck --leak-check=full --num-callers=30 --suppressions=valgrind-python.supp \
$(PYTHON) test.py

gdb_test_inplace: inplace
@echo -e "file $(PYTHON)\nrun test.py" > .gdb.command
gdb -x .gdb.command -d src -d src/lxml

bench_inplace: inplace
$(PYTHON) benchmark/bench_etree.py -i
$(PYTHON) benchmark/bench_xpath.py -i
$(PYTHON) benchmark/bench_xslt.py -i
$(PYTHON) benchmark/bench_objectify.py -i

ftest_build: build
$(PYTHON) test.py -f $(TESTFLAGS) $(TESTOPTS)

ftest_inplace: inplace
$(PYTHON) test.py -f $(TESTFLAGS) $(TESTOPTS)

apihtml: inplace
rm -fr doc/html/api
@[ -x "`which epydoc`" ] \
&& (cd src && echo "Generating API docs ..." && \
PYTHONPATH=. epydoc -v --docformat "restructuredtext en" \
-o ../doc/html/api --exclude='[.]html[.]tests|[.]_' \
--exclude-introspect='[.]usedoctest' \
--name "lxml API" --url / lxml/) \
|| (echo "not generating epydoc API documentation")

website: inplace
PYTHONPATH=src:$(PYTHONPATH) $(PYTHON) doc/mkhtml.py doc/html . ${LXMLVERSION}

html: inplace website apihtml s5

s5:
$(MAKE) -C doc/s5 slides

apipdf: inplace
rm -fr doc/pdf
mkdir -p doc/pdf
@[ -x "`which epydoc`" ] \
&& (cd src && echo "Generating API docs ..." && \
PYTHONPATH=. epydoc -v --latex --docformat "restructuredtext en" \
-o ../doc/pdf --exclude='([.]html)?[.]tests|[.]_' \
--exclude-introspect='html[.]clean|[.]usedoctest' \
--name "lxml API" --url / lxml/) \
|| (echo "not generating epydoc API documentation")

pdf: apipdf
$(PYTHON) doc/mklatex.py doc/pdf . ${LXMLVERSION}
(cd doc/pdf && pdflatex lxmldoc.tex \
&& pdflatex lxmldoc.tex \
&& pdflatex lxmldoc.tex)
@pdfopt doc/pdf/lxmldoc.pdf doc/pdf/lxmldoc-${LXMLVERSION}.pdf
@echo "PDF available as doc/pdf/lxmldoc-${LXMLVERSION}.pdf"

# Two pdflatex runs are needed to build the correct Table of contents.

test: test_inplace

test3: test_inplace3

valtest: valgrind_test_inplace

gdbtest: gdb_test_inplace

bench: bench_inplace

ftest: ftest_inplace

clean:
find . \( -name '*.o' -o -name '*.so' -o -name '*.py[cod]' -o -name '*.dll' \) -exec rm -f {} \;
rm -rf build

docclean:
$(MAKE) -C doc/s5 clean
rm -f doc/html/*.html
rm -fr doc/html/api
rm -fr doc/pdf

realclean: clean docclean
find . -name '*.c' -exec rm -f {} \;
rm -f TAGS
$(PYTHON) setup.py clean -a
Something went wrong with that request. Please try again.