~bzr-pqm/bzr/bzr.dev

2399.1.1 by John Arbash Meinel
Update Makefile to add 'make api-docs' using pydoctor
1
# Copyright (C) 2005, 2006, 2007 Canonical Ltd
2
#
3
# This program is free software; you can redistribute it and/or modify
4
# it under the terms of the GNU General Public License as published by
5
# the Free Software Foundation; either version 2 of the License, or
6
# (at your option) any later version.
7
#
8
# This program is distributed in the hope that it will be useful,
9
# but WITHOUT ANY WARRANTY; without even the implied warranty of
10
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11
# GNU General Public License for more details.
12
#
13
# You should have received a copy of the GNU General Public License
14
# along with this program; if not, write to the Free Software
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
16
17
# A relatively simple Makefile to assist in building parts of bzr. Mostly for
18
# building documentation, etc.
19
2691.1.15 by Ian Clatworthy
reorganise Makefile into logical sections
20
21
### Core Stuff ###
22
2916.1.1 by Andrew Bennetts
Allow overriding the PYTHON executable for 'make extensions', and remove *.so files in 'make clean'.
23
PYTHON=python
24
1739.1.6 by Robert Collins
Resolve conflicts with bzr.dev.
25
.PHONY: all clean extensions pyflakes api-docs
26
1739.1.5 by Robert Collins
Review feedback.
27
all: extensions
28
29
extensions:
1739.1.3 by Robert Collins
Merge bzr.dev.
30
	@echo "building extension modules."
2916.1.1 by Andrew Bennetts
Allow overriding the PYTHON executable for 'make extensions', and remove *.so files in 'make clean'.
31
	$(PYTHON) setup.py build_ext -i
1102 by Martin Pool
- merge test refactoring from robertc
32
2495.5.1 by John Arbash Meinel
(Andrew Bennetts) 'make check' builds docs as well
33
check: docs extensions
2934.2.1 by Ian Clatworthy
generates hooks.html correctly and generalise python command in Makefile
34
	$(PYTHON) -Werror -O ./bzr selftest -1v $(tests)
1526.1.1 by Robert Collins
Run the test suite with no locale as well as the default locale. Also add a test for build_tree_shape to selftest.
35
	@echo "Running all tests with no locale."
2749.1.1 by Martin Pool
(mbp) Show 'ascii' prefix when make check runs tests again in ascii mode
36
	LC_CTYPE= LANG=C LC_ALL= ./bzr selftest -1v $(tests) 2>&1 | sed -e 's/^/[ascii] /'
1102 by Martin Pool
- merge test refactoring from robertc
37
1773.4.1 by Martin Pool
Add pyflakes makefile target; fix many warnings
38
# Run Python style checker (apt-get install pyflakes)
2625.11.1 by Martin Pool
(trivial) Remove obsolete Makefile targets
39
#
40
# Note that at present this gives many false warnings, because it doesn't
41
# know about identifiers loaded through lazy_import.
1773.4.1 by Martin Pool
Add pyflakes makefile target; fix many warnings
42
pyflakes:
43
	pyflakes bzrlib
44
45
pyflakes-nounused:
46
	# There are many of these warnings at the moment and they're not a
47
	# high priority to fix
48
	pyflakes bzrlib | grep -v ' imported but unused'
49
50
clean:
2934.2.1 by Ian Clatworthy
generates hooks.html correctly and generalise python command in Makefile
51
	$(PYTHON) setup.py clean
2916.1.1 by Andrew Bennetts
Allow overriding the PYTHON executable for 'make extensions', and remove *.so files in 'make clean'.
52
	-find . -name "*.pyc" -o -name "*.pyo" -o -name "*.so" | xargs rm -f
1185.1.21 by Robert Collins
add a clean target
53
2691.1.15 by Ian Clatworthy
reorganise Makefile into logical sections
54
# Build API documentation
2399.1.9 by John Arbash Meinel
Since I have epydoc working with lazy imports, make it the default api doc generator.
55
docfiles = bzr bzrlib
2399.1.1 by John Arbash Meinel
Update Makefile to add 'make api-docs' using pydoctor
56
api-docs:
2413.4.1 by John Arbash Meinel
Cherrypick just the epydoc builder changes.
57
	mkdir -p api/html
2934.2.1 by Ian Clatworthy
generates hooks.html correctly and generalise python command in Makefile
58
	PYTHONPATH=$(PWD) $(PYTHON) tools/bzr_epydoc --html -o api/html --docformat 'restructuredtext en' $(docfiles)
2399.1.12 by John Arbash Meinel
Add make check-api-docs, which runs epydoc --check, rather than generating output
59
check-api-docs:
2934.2.1 by Ian Clatworthy
generates hooks.html correctly and generalise python command in Makefile
60
	PYTHONPATH=$(PWD) $(PYTHON) tools/bzr_epydoc --check --docformat 'restructuredtext en' $(docfiles)
2399.1.12 by John Arbash Meinel
Add make check-api-docs, which runs epydoc --check, rather than generating output
61
2625.11.2 by Martin Pool
Put back better rules for building ctags
62
# build tags for emacs and vim
63
TAGS:
64
	ctags -R -e bzrlib
65
66
tags:
67
	ctags -R bzrlib
68
69
# these are treated as phony so they'll always be rebuilt - it's pretty quick
70
.PHONY: TAGS tags
71
2691.1.15 by Ian Clatworthy
reorganise Makefile into logical sections
72
### Documentation ###
1821.1.1 by Alexander Belchenko
win32 installer for bzr.dev.0.9
73
2691.1.17 by Ian Clatworthy
Fix pretty doc generation so works for all html docs
74
# set PRETTY to get docs that look like the Bazaar web site
75
ifdef PRETTY
2934.2.1 by Ian Clatworthy
generates hooks.html correctly and generalise python command in Makefile
76
rst2html := $(PYTHON) tools/rst2prettyhtml.py doc/bazaar-vcs.org.kid 
2691.1.17 by Ian Clatworthy
Fix pretty doc generation so works for all html docs
77
else
2934.2.1 by Ian Clatworthy
generates hooks.html correctly and generalise python command in Makefile
78
rst2html := $(PYTHON) tools/rst2html.py --link-stylesheet --footnote-references=superscript 
2691.1.17 by Ian Clatworthy
Fix pretty doc generation so works for all html docs
79
endif
80
1821.1.1 by Alexander Belchenko
win32 installer for bzr.dev.0.9
81
# translate txt docs to html
2691.1.4 by Ian Clatworthy
teach Makefile and .bzrignore re new doc structure
82
derived_txt_files := \
83
	doc/en/user-reference/bzr_man.txt \
84
	doc/en/developer-guide/HACKING.txt \
85
	doc/en/release-notes/NEWS.txt
86
doc_dir := doc/en/user-guide
2691.1.6 by Ian Clatworthy
Add a top level doc index
87
txt_files := $(wildcard $(addsuffix /*.txt, $(doc_dir))) $(derived_txt_files) \
2691.1.16 by Ian Clatworthy
Ensure doc hierarchy is setup correctly for the Windows installer
88
	doc/en/mini-tutorial/index.txt \
2934.2.1 by Ian Clatworthy
generates hooks.html correctly and generalise python command in Makefile
89
	doc/en/user-reference/hooks.txt \
2691.1.6 by Ian Clatworthy
Add a top level doc index
90
	doc/index.txt
2691.1.17 by Ian Clatworthy
Fix pretty doc generation so works for all html docs
91
non_txt_files := \
92
       doc/default.css \
93
       doc/en/quick-reference/quick-start-summary.svg
2666.2.1 by Alexander Belchenko
change generated documentation extension from htm to html
94
htm_files := $(patsubst %.txt, %.html, $(txt_files)) 
2481.1.3 by Robert Collins
Add the performance roadmap rationale.
95
dev_txt_files := $(wildcard $(addsuffix /*.txt, doc/developers))
2666.2.1 by Alexander Belchenko
change generated documentation extension from htm to html
96
dev_htm_files := $(patsubst %.txt, %.html, $(dev_txt_files)) 
2054.2.14 by Aaron Bentley
Add 'pretty-docs' target to makefile
97
2666.2.1 by Alexander Belchenko
change generated documentation extension from htm to html
98
doc/developers/%.html: doc/developers/%.txt
2691.1.17 by Ian Clatworthy
Fix pretty doc generation so works for all html docs
99
	$(rst2html) --stylesheet=../default.css $< $@
2666.2.1 by Alexander Belchenko
change generated documentation extension from htm to html
100
2691.1.6 by Ian Clatworthy
Add a top level doc index
101
doc/index.html: doc/index.txt
2691.1.17 by Ian Clatworthy
Fix pretty doc generation so works for all html docs
102
	$(rst2html) --stylesheet=default.css $< $@
2691.1.6 by Ian Clatworthy
Add a top level doc index
103
2666.2.1 by Alexander Belchenko
change generated documentation extension from htm to html
104
%.html: %.txt
2691.1.17 by Ian Clatworthy
Fix pretty doc generation so works for all html docs
105
	$(rst2html) --stylesheet=../../default.css $< $@
2054.2.14 by Aaron Bentley
Add 'pretty-docs' target to makefile
106
2425.1.1 by Robert Collins
``make docs`` now creates a man page at ``man1/bzr.1`` fixing bug 107388.
107
MAN_DEPENDENCIES = bzrlib/builtins.py \
1928.2.1 by Alexander Belchenko
New target to produce html docs to upload on server
108
		 bzrlib/bundle/commands.py \
109
		 bzrlib/conflicts.py \
110
		 bzrlib/sign_my_commits.py \
111
		 generate_docs.py \
112
		 tools/doc_generate/__init__.py \
2677.1.1 by Alexander Belchenko
rst2html: workaround for IE bug with id="tags"
113
		 tools/doc_generate/autodoc_man.py \
1928.2.1 by Alexander Belchenko
New target to produce html docs to upload on server
114
		 tools/doc_generate/autodoc_rstx.py
2425.1.1 by Robert Collins
``make docs`` now creates a man page at ``man1/bzr.1`` fixing bug 107388.
115
2691.1.4 by Ian Clatworthy
teach Makefile and .bzrignore re new doc structure
116
doc/en/user-reference/bzr_man.txt: $(MAN_DEPENDENCIES)
2934.2.1 by Ian Clatworthy
generates hooks.html correctly and generalise python command in Makefile
117
	$(PYTHON) generate_docs.py -o $@ rstx
2425.1.1 by Robert Collins
``make docs`` now creates a man page at ``man1/bzr.1`` fixing bug 107388.
118
2691.1.4 by Ian Clatworthy
teach Makefile and .bzrignore re new doc structure
119
doc/en/developer-guide/HACKING.txt: doc/developers/HACKING.txt
2934.2.1 by Ian Clatworthy
generates hooks.html correctly and generalise python command in Makefile
120
	$(PYTHON) tools/win32/ostools.py copytodir doc/developers/HACKING.txt doc/en/developer-guide
2691.1.4 by Ian Clatworthy
teach Makefile and .bzrignore re new doc structure
121
122
doc/en/release-notes/NEWS.txt: NEWS
2934.2.1 by Ian Clatworthy
generates hooks.html correctly and generalise python command in Makefile
123
	$(PYTHON) -c "import shutil; shutil.copyfile('$<', '$@')"
2691.1.4 by Ian Clatworthy
teach Makefile and .bzrignore re new doc structure
124
2425.1.1 by Robert Collins
``make docs`` now creates a man page at ``man1/bzr.1`` fixing bug 107388.
125
MAN_PAGES = man1/bzr.1
126
man1/bzr.1: $(MAN_DEPENDENCIES)
2934.2.1 by Ian Clatworthy
generates hooks.html correctly and generalise python command in Makefile
127
	$(PYTHON) generate_docs.py -o $@ man
2425.1.1 by Robert Collins
``make docs`` now creates a man page at ``man1/bzr.1`` fixing bug 107388.
128
2691.1.15 by Ian Clatworthy
reorganise Makefile into logical sections
129
# build a png of our performance task list
130
doc/developers/performance.png: doc/developers/performance.dot
131
	@echo Generating $@
132
	@dot -Tpng $< -o$@ || echo "Dot not installed; skipping generation of $@"
133
2691.1.17 by Ian Clatworthy
Fix pretty doc generation so works for all html docs
134
derived_web_docs = $(htm_files) $(dev_htm_files) doc/developers/performance.png
135
WEB_DOCS = $(derived_web_docs) $(non_txt_files)
136
ALL_DOCS = $(derived_web_docs) $(MAN_PAGES)
137
138
# the main target to build all the docs
139
docs: $(ALL_DOCS)
140
141
# produce a tree containing just the final docs, ready for uploading to the web
2691.1.15 by Ian Clatworthy
reorganise Makefile into logical sections
142
HTMLDIR := html_docs
143
html-docs: docs
2934.2.1 by Ian Clatworthy
generates hooks.html correctly and generalise python command in Makefile
144
	$(PYTHON) tools/win32/ostools.py copytree $(WEB_DOCS) $(HTMLDIR)
2691.1.15 by Ian Clatworthy
reorganise Makefile into logical sections
145
1928.2.1 by Alexander Belchenko
New target to produce html docs to upload on server
146
# clean produced docs
147
clean-docs:
2934.2.1 by Ian Clatworthy
generates hooks.html correctly and generalise python command in Makefile
148
	$(PYTHON) tools/win32/ostools.py remove $(ALL_DOCS) \
2691.1.17 by Ian Clatworthy
Fix pretty doc generation so works for all html docs
149
	$(HTMLDIR) $(derived_txt_files)
2522.3.1 by Robert Collins
Draft proposed integration order for performance changes.
150
151
2691.1.15 by Ian Clatworthy
reorganise Makefile into logical sections
152
### Windows Support ###
1928.2.1 by Alexander Belchenko
New target to produce html docs to upload on server
153
154
# make bzr.exe for win32 with py2exe
155
exe:
156
	@echo *** Make bzr.exe
2934.2.1 by Ian Clatworthy
generates hooks.html correctly and generalise python command in Makefile
157
	$(PYTHON) setup.py build_ext -i -f
158
	$(PYTHON) setup.py py2exe > py2exe.log
159
	$(PYTHON) tools/win32/ostools.py copytodir tools/win32/start_bzr.bat win32_bzr.exe
160
	$(PYTHON) tools/win32/ostools.py copytodir tools/win32/bazaar.url win32_bzr.exe
1928.2.1 by Alexander Belchenko
New target to produce html docs to upload on server
161
1821.1.1 by Alexander Belchenko
win32 installer for bzr.dev.0.9
162
# win32 installer for bzr.exe
1982.2.1 by Alexander Belchenko
small but important fix for 'make installer' dependencies
163
installer: exe copy-docs
1861.2.18 by Alexander Belchenko
Makefile: cross-platform actions for building installer
164
	@echo *** Make windows installer
165
	cog.py -d -o tools/win32/bzr.iss tools/win32/bzr.iss.cog
166
	iscc /Q tools/win32/bzr.iss
1821.1.1 by Alexander Belchenko
win32 installer for bzr.dev.0.9
167
2934.2.1 by Ian Clatworthy
generates hooks.html correctly and generalise python command in Makefile
168
# win32 Python's distutils-based installer
169
# require to have Python interpreter installed on win32
1860.1.3 by Alexander Belchenko
python-installer:
170
python-installer: docs
2571.3.1 by Alexander Belchenko
Building Python-based installer for bot Python 2.4 and 2.5
171
	python24 setup.py bdist_wininst --install-script="bzr-win32-bdist-postinstall.py" -d .
172
	python25 setup.py bdist_wininst --install-script="bzr-win32-bdist-postinstall.py" -d .
1821.1.2 by Alexander Belchenko
resurrected python's distutils based installer for win32
173
2691.1.15 by Ian Clatworthy
reorganise Makefile into logical sections
174
copy-docs: docs
2934.2.1 by Ian Clatworthy
generates hooks.html correctly and generalise python command in Makefile
175
	$(PYTHON) tools/win32/ostools.py copytodir README win32_bzr.exe/doc
176
	$(PYTHON) tools/win32/ostools.py copytree $(WEB_DOCS) win32_bzr.exe
1821.1.2 by Alexander Belchenko
resurrected python's distutils based installer for win32
177
1821.1.1 by Alexander Belchenko
win32 installer for bzr.dev.0.9
178
# clean on win32 all installer-related files and directories
2666.2.1 by Alexander Belchenko
change generated documentation extension from htm to html
179
clean-win32: clean-docs
2934.2.1 by Ian Clatworthy
generates hooks.html correctly and generalise python command in Makefile
180
	$(PYTHON) tools/win32/ostools.py remove build
181
	$(PYTHON) tools/win32/ostools.py remove win32_bzr.exe
182
	$(PYTHON) tools/win32/ostools.py remove py2exe.log
183
	$(PYTHON) tools/win32/ostools.py remove tools/win32/bzr.iss
184
	$(PYTHON) tools/win32/ostools.py remove bzr-setup*.exe
185
	$(PYTHON) tools/win32/ostools.py remove bzr-*win32.exe
186
	$(PYTHON) tools/win32/ostools.py remove dist