Makefile.in 5.73 KB
Newer Older
1
#### Makefile for the Emacs Manual
Glenn Morris's avatar
Glenn Morris committed
2 3

# Copyright (C) 1994, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
4 5
#   2004, 2005, 2006, 2007, 2008, 2009, 2010
#   Free Software Foundation, Inc.
Glenn Morris's avatar
Glenn Morris committed
6 7 8

# This file is part of GNU Emacs.

9
# GNU Emacs is free software: you can redistribute it and/or modify
Glenn Morris's avatar
Glenn Morris committed
10
# it under the terms of the GNU General Public License as published by
11 12
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
Glenn Morris's avatar
Glenn Morris committed
13 14 15 16 17 18 19

# GNU Emacs is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.

# You should have received a copy of the GNU General Public License
20 21
# along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.

Glenn Morris's avatar
Glenn Morris committed
22
SHELL = /bin/sh
Glenn Morris's avatar
Glenn Morris committed
23

24 25
# Where to find the source code.  $(srcdir) will be the doc/emacs subdirectory
# of the source tree.  This is set by configure's `--srcdir' option.
Glenn Morris's avatar
Glenn Morris committed
26 27 28 29 30
srcdir=@srcdir@

# Tell make where to find source files; this is needed for the makefiles.
VPATH=@srcdir@

31 32 33
# Only for make dist.
version=@version@

34 35
## Where the output files go.
## Note that the setfilename command in the .texi files assumes this.
Glenn Morris's avatar
Glenn Morris committed
36 37 38 39 40
## This is a bit funny.  Because the info files are in the
## distribution tarfiles, they are always made in $scrdir/../../info,
## even for out-of-tree builds.  So infodir is really relative to srcdir.
## The use of VPATH makes it work out, but why not set
## infodir = $(srcdir)/../../info and make it explicit?
41
infodir=../../info
42 43
# Directory with the (customized) texinfo.tex file.
texinfodir = $(srcdir)/../misc
Glenn Morris's avatar
Glenn Morris committed
44 45 46 47

# The makeinfo program is part of the Texinfo distribution.
# Use --force so that it generates output even if there are errors.
MAKEINFO = makeinfo --force
48 49

TEXI2DVI = texi2dvi
Glenn Morris's avatar
Glenn Morris committed
50
TEXI2PDF = texi2pdf
Glenn Morris's avatar
Glenn Morris committed
51 52 53 54

# The following rule does not work with all versions of `make'.
.SUFFIXES: .texi .dvi
.texi.dvi:
55
	$(TEXI2DVI) $<
Glenn Morris's avatar
Glenn Morris committed
56

57
ENVADD = TEXINPUTS="$(srcdir):$(texinfodir):$(TEXINPUTS)" MAKEINFO="$(MAKEINFO) -I$(srcdir)"
Glenn Morris's avatar
Glenn Morris committed
58

59

60 61
EMACS_XTRA= \
	${srcdir}/emacs-xtra.texi \
Glenn Morris's avatar
Glenn Morris committed
62 63 64 65 66 67 68 69 70 71 72
	$(srcdir)/arevert-xtra.texi \
	$(srcdir)/cal-xtra.texi \
	$(srcdir)/dired-xtra.texi \
	$(srcdir)/picture-xtra.texi \
	$(srcdir)/emerge-xtra.texi \
	$(srcdir)/vc-xtra.texi \
	$(srcdir)/vc1-xtra.texi \
	$(srcdir)/fortran-xtra.texi \
	$(srcdir)/msdog-xtra.texi

EMACSSOURCES= \
73
	${srcdir}/emacsver.texi \
Glenn Morris's avatar
Glenn Morris committed
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 117 118 119
	${srcdir}/emacs.texi \
	${srcdir}/doclicense.texi \
	${srcdir}/gpl.texi \
	${srcdir}/screen.texi \
	${srcdir}/commands.texi \
	${srcdir}/entering.texi \
	${srcdir}/basic.texi \
	${srcdir}/mini.texi \
	${srcdir}/m-x.texi \
	${srcdir}/help.texi \
	${srcdir}/mark.texi \
	${srcdir}/killing.texi \
	${srcdir}/regs.texi \
	${srcdir}/display.texi \
	${srcdir}/search.texi \
	${srcdir}/fixit.texi \
	${srcdir}/files.texi \
	${srcdir}/buffers.texi \
	${srcdir}/windows.texi \
	${srcdir}/frames.texi \
	${srcdir}/mule.texi \
	${srcdir}/major.texi \
	${srcdir}/indent.texi \
	${srcdir}/text.texi \
	${srcdir}/programs.texi \
	${srcdir}/building.texi \
	${srcdir}/maintaining.texi \
	${srcdir}/abbrevs.texi \
	${srcdir}/sending.texi \
	${srcdir}/rmail.texi \
	${srcdir}/dired.texi \
	${srcdir}/calendar.texi \
	${srcdir}/misc.texi \
	${srcdir}/custom.texi \
	${srcdir}/trouble.texi \
	${srcdir}/cmdargs.texi \
	${srcdir}/xresources.texi \
	${srcdir}/anti.texi \
	${srcdir}/macos.texi \
	${srcdir}/msdog.texi \
	${srcdir}/gnu.texi \
	${srcdir}/glossary.texi \
	${srcdir}/ack.texi \
	${srcdir}/kmacro.texi \
	$(EMACS_XTRA)

120 121 122 123
## This seems pointless.  The info/ directory exists in both the
## repository and the release tarfiles.  We do not use any
## equivalent of mkdir -p/mkinstalldirs, so this is not a general
## solution anyway.  The second test -d is for parallel builds.
124
mkinfodir = @cd ${srcdir}; test -d ${infodir} || mkdir ${infodir} || test -d ${infodir}
125

Glenn Morris's avatar
Glenn Morris committed
126 127
.PHONY: info dvi pdf

Glenn Morris's avatar
Glenn Morris committed
128 129 130
info: $(infodir)/emacs
dvi: emacs.dvi
pdf: emacs.pdf
Glenn Morris's avatar
Glenn Morris committed
131

Glenn Morris's avatar
Glenn Morris committed
132 133
# Note that all the Info targets build the Info files in srcdir.
# There is no provision for Info files to exist in the build directory.
Glenn Morris's avatar
Glenn Morris committed
134 135
# In a distribution of Emacs, the Info files should be up to date.

136 137
$(infodir)/emacs: ${EMACSSOURCES}
	$(mkinfodir)
Glenn Morris's avatar
Glenn Morris committed
138
	cd $(srcdir); $(MAKEINFO) emacs.texi -o $@
Glenn Morris's avatar
Glenn Morris committed
139 140 141 142

emacs.dvi: ${EMACSSOURCES}
	$(ENVADD) $(TEXI2DVI) ${srcdir}/emacs.texi

Glenn Morris's avatar
Glenn Morris committed
143 144 145
emacs.pdf: ${EMACSSOURCES}
	$(ENVADD) $(TEXI2PDF) ${srcdir}/emacs.texi

Glenn Morris's avatar
Glenn Morris committed
146

147
emacs-xtra.dvi: $(EMACS_XTRA)
Glenn Morris's avatar
Glenn Morris committed
148 149
	$(ENVADD) $(TEXI2DVI) ${srcdir}/emacs-xtra.texi

150
emacs-xtra.pdf: $(EMACS_XTRA)
Glenn Morris's avatar
Glenn Morris committed
151 152
	$(ENVADD) $(TEXI2PDF) ${srcdir}/emacs-xtra.texi

153
.PHONY: mostlyclean clean distclean maintainer-clean infoclean
Glenn Morris's avatar
Glenn Morris committed
154

155
## Temp files.
Glenn Morris's avatar
Glenn Morris committed
156
mostlyclean:
157 158
	rm -f *.aux *.log *.toc *.cp *.cps *.fn *.fns *.ky *.kys \
	  *.op *.ops *.pg *.pgs *.tp *.tps *.vr *.vrs
Glenn Morris's avatar
Glenn Morris committed
159

160
## Products not in the release tarfiles.
Glenn Morris's avatar
Glenn Morris committed
161
clean: mostlyclean
162
	rm -f emacs.dvi emacs-xtra.dvi emacs.pdf emacs-xtra.pdf
163
	rm -f emacs-manual-${version}.tar*
Glenn Morris's avatar
Glenn Morris committed
164 165 166

distclean: clean

167 168
## In the standalone tarfile, the clean rule runs this.
infoclean:
Glenn Morris's avatar
Glenn Morris committed
169
	-cd $(srcdir) && cd $(infodir) && rm -f emacs emacs-[1-9] emacs-[1-9][0-9]
170

171 172
maintainer-clean: distclean infoclean

Glenn Morris's avatar
Glenn Morris committed
173 174
.PHONY: dist

175 176 177
## Make a standalone tarfile of the Emacs manual sources.
## The [c] is a dumb way to prevent configure expanding it.
dist:
178 179
	rm -rf emacs-manual-${version}
	mkdir emacs-manual-${version}
180
	cp ${srcdir}/*.texi ${texinfodir}/texinfo.tex \
181
	  ${srcdir}/ChangeLog* emacs-manual-${version}/
182
	sed -e 's/@sr[c]dir@/./' -e 's/\(texinfodir *=\).*/\1 ./' \
Glenn Morris's avatar
Glenn Morris committed
183
	  -e 's/\(infodir *=\).*/\1 ./' -e 's/^\(clean:.*\)/\1 infoclean/' \
184 185
	  -e "s/@ver[s]ion@/${version}/" \
	  ${srcdir}/Makefile.in > emacs-manual-${version}/Makefile
186 187
	sed -e "s/@ver[s]ion@/${version}/" \
	  ${srcdir}/emacsver.texi.in > emacs-manual-${version}/emacsver.texi
188 189
	tar -cf emacs-manual-${version}.tar emacs-manual-${version}
	rm -rf emacs-manual-${version}
190

191
### Makefile ends here