1PYTHON ?= python
2top_srcdir = `pwd`
3PYTHONPATH ?= $(top_srcdir)
4SUBDIRS = \
5	$(top_srcdir)/dynrules \
6	$(top_srcdir)/dynrules/test \
7	$(top_srcdir)/dynrules/test/util \
8	$(top_srcdir)/doc \
9	$(top_srcdir)/examples \
10	$(top_srcdir)/cplusplus
11
12INTERPRETERS = python2.7 python3.2 python3.3 pypy2.0
13
14all: clean build
15
16docs: clean
17	@cd doc/ && make html
18	@mv doc/build/html doc/
19	@cd doc/ && rm -rf build
20	@cd cplusplus/ && make docs
21
22dist: docs
23	@echo "Creating dist..."
24	@$(PYTHON) setup.py sdist --format=zip
25	@$(PYTHON) setup.py sdist --format=gztar
26
27bdist: clean docs
28	@echo "Creating bdist..."
29	@$(PYTHON) setup.py bdist
30
31build:
32	@echo "Running build..."
33	@$(PYTHON) setup.py build
34	@echo "Build finished, invoke 'make install' to install."
35
36install:
37	@echo "Installing..."
38	@$(PYTHON) setup.py build install
39
40clean:
41	@echo "Cleaning up in $(top_srcdir)/ ..."
42	@rm -f *.cache *.core *~ MANIFEST
43	@rm -rf build dist __pycache__
44
45	@for dir in $(SUBDIRS); do \
46		if test -f $$dir/Makefile; then \
47			make -C $$dir clean; \
48		else \
49			cd $$dir; \
50			echo "Cleaning up in $$dir..."; \
51			rm -rf *~ *.cache *.core *.pyc __pycache__; \
52		fi \
53	done
54
55release: clean dist
56
57buildall: clean
58	@for interp in $(INTERPRETERS); do \
59		$$interp setup.py build; \
60	done
61
62installall:
63	@for interp in $(INTERPRETERS); do \
64		$$interp setup.py install; \
65	done
66
67testall:
68	@for interp in $(INTERPRETERS); do \
69		PYTHONPATH=$(PYTHONPATH) $$interp -B -m dynrules.test.util.runtests || true; \
70	done
71
72testpackage:
73	@for interp in $(INTERPRETERS); do \
74		$$interp -c "import dynrules.test; dynrules.test.run()" || true \
75	done
76
77purge_installs:
78	@for interp in $(INTERPRETERS); do \
79		rm -rf /usr/local/lib/$$interp/site-packages/dynrules*; \
80	done
81