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 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350
|
### @configure_input@
# Copyright (C) 1994, 1996-2025 Free Software Foundation, Inc.
# This file is part of GNU Emacs.
# GNU Emacs is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# 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
# along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
SHELL = @SHELL@
# Where to find the source code. $(srcdir) will be the doc/misc subdirectory
# of the source tree. This is set by configure's '--srcdir' option.
srcdir=@srcdir@
top_srcdir = @top_srcdir@
top_builddir = @top_builddir@
## Where the output files go.
## 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.
## In a tarfile of Emacs, the Info files should be up to date.
buildinfodir = $(srcdir)/../../info
## Directory with docstyle.texi and emacsver.texi.
emacsdir = $(srcdir)/../emacs
prefix = @prefix@
datarootdir = @datarootdir@
datadir = @datadir@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
docdir = @docdir@
dvidir = @dvidir@
htmldir = @htmldir@
pdfdir = @pdfdir@
psdir = @psdir@
MKDIR_P = @MKDIR_P@
GZIP_PROG = @GZIP_PROG@
HTML_OPTS = --no-split --html
# Options used only when making info output.
# (Note that idlwave, info used --nosplit even without the .info extension.)
INFO_OPTS= --no-split
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
# The makeinfo program is part of the Texinfo distribution.
# Use --force so that it generates output even if there are errors.
# (TODO? Why is this appropriate?)
MAKEINFO = @MAKEINFO@
MAKEINFO_OPTS = --force -I$(emacsdir)
## On MS Windows, efaq-w32; otherwise blank.
DOCMISC_W32 = @DOCMISC_W32@
## Info files to build and install on all platforms.
INFO_COMMON = auth autotype bovine calc ccmode cl dbus dired-x \
ebrowse ede ediff edt eglot eieio emacs-gnutls \
emacs-mime epa erc ert eshell eudc eww flymake forms gnus \
htmlfontify idlwave ido info.info mairix-el message mh-e \
modus-themes newsticker nxml-mode octave-mode org pcl-cvs pgg \
rcirc reftex remember sasl sc semantic ses sieve smtpmail \
speedbar srecode todo-mode tramp transient url use-package \
vhdl-mode vip viper vtable widget wisent woman
## Info files to install on current platform.
INFO_INSTALL = $(INFO_COMMON) $(DOCMISC_W32)
## Info files to build on current platform.
## This is all of them, even though they might not all get installed,
## because the info files are pre-built in release tarfiles.
INFO_TARGETS = $(INFO_COMMON)
## Some manuals have their source in .org format.
## This is discouraged because the .texi files it generates
## are not as well formatted as handwritten ones.
ORG_SETUP = $(wildcard ${srcdir}/*-setup.org)
ORG_SRC = $(filter-out ${ORG_SETUP},$(wildcard ${srcdir}/*.org))
TEXI_FROM_ORG = ${ORG_SRC:.org=.texi}
# There are some naming differences between the info targets and the other
# targets, so let's resolve them here.
TARGETS_1 = $(INFO_INSTALL:ccmode=cc-mode)
TARGETS = $(TARGETS_1:info.info=info)
texi_sources = $(addsuffix .texi,${TARGETS})
texi_notgen = $(filter-out $(notdir ${TEXI_FROM_ORG}),${texi_sources})
texi_and_org = $(notdir ${ORG_SRC}) ${texi_notgen}
SOURCES = $(sort ${texi_and_org})
DVI_TARGETS = $(TARGETS:=.dvi)
HTML_TARGETS = $(TARGETS:=.html)
PDF_TARGETS = $(TARGETS:=.pdf)
PS_TARGETS = $(TARGETS:=.ps)
TEXI2DVI = texi2dvi
TEXI2PDF = texi2pdf
DVIPS = dvips
-include ${top_builddir}/src/verbose.mk
ENVADD = $(AM_V_GEN)TEXINPUTS="$(srcdir):$(emacsdir):$(TEXINPUTS)" \
MAKEINFO="$(MAKEINFO) $(MAKEINFO_OPTS)"
gfdl = ${srcdir}/doclicense.texi
style = ${emacsdir}/docstyle.texi
.PHONY: info dvi html pdf ps echo-info echo-sources $(INFO_TARGETS)
## Prevent implicit rule triggering for foo.info.
.SUFFIXES:
## Disable implicit rules.
%.texi: ;
# Default.
info: $(INFO_TARGETS)
## Used by top-level Makefile.
## Base file names of output info files.
INFO_BASES = $(patsubst %.info,%,$(notdir $(INFO_INSTALL)))
echo-info:
@: $(info $(addsuffix .info,$(INFO_BASES)))
echo-sources:
@: $(info $(SOURCES))
dvi: $(DVI_TARGETS)
html: $(HTML_TARGETS)
pdf: $(PDF_TARGETS)
ps: $(PS_TARGETS)
${buildinfodir}:
${MKDIR_P} $@
### The general case.
EXTRA_OPTS =
${buildinfodir}/%.info: ${srcdir}/%.texi ${gfdl} ${style} | ${buildinfodir}
$(AM_V_GEN)$(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) $(EXTRA_OPTS) \
-o $@ $<
## The short aliases, eg efaq = $(buildinfodir)/efaq.info.
define info_template
$(1): $$(buildinfodir)/$(1).info
endef
## "info" is already taken.
info.info: $(buildinfodir)/info.info
$(foreach ifile,$(filter-out info.info,$(INFO_TARGETS)),$(eval $(call info_template,$(ifile))))
%.dvi: ${srcdir}/%.texi ${gfdl} ${style}
$(ENVADD) $(TEXI2DVI) $<
%.pdf: ${srcdir}/%.texi ${gfdl} ${style}
$(ENVADD) $(TEXI2PDF) $<
%.html: ${srcdir}/%.texi ${gfdl} ${style}
$(AM_V_GEN)$(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) $(EXTRA_OPTS) \
-o $@ $<
%.ps: %.dvi
$(DVIPS) -o $@ $<
### The exceptions.
## Extra dependencies.
## FIXME Updating this list manually is unreliable.
need_emacsver = calc cl dired-x erc forms ido \
newsticker reftex remember use-package woman
need_emacsver_prefix = $(addprefix ${buildinfodir}/,${need_emacsver})
$(need_emacsver_prefix:=.info) $(need_emacsver:=.dvi) $(need_emacsver:=.pdf) $(need_emacsver:=.html) : ${emacsdir}/emacsver.texi
$(buildinfodir)/gnus.info gnus.html: ${srcdir}/gnus-faq.texi
$(buildinfodir)/semantic.info semantic.dvi semantic.pdf semantic.html: ${srcdir}/sem-user.texi
## Please can we just rename cc-mode.texi to ccmode.texi...
${buildinfodir}/ccmode.info: \
${srcdir}/cc-mode.texi ${gfdl} ${style} | ${buildinfodir}
$(AM_V_GEN)$(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ $<
${buildinfodir}/emacs-mime.info emacs-mime.html: EXTRA_OPTS = --enable-encoding
gnus_deps = ${srcdir}/gnus.texi ${srcdir}/gnus-faq.texi ${gfdl} ${style}
gnus.dvi: $(gnus_deps)
sed -e '/@iflatex/,/@end iflatex/d' $< > gnustmpdvi.texi
$(ENVADD) $(TEXI2DVI) gnustmpdvi.texi
cp gnustmpdvi.dvi $@
rm gnustmpdvi.*
gnus.pdf: $(gnus_deps)
sed -e '/@iflatex/,/@end iflatex/d' $< > gnustmppdf.texi
$(ENVADD) $(TEXI2PDF) gnustmppdf.texi
cp gnustmppdf.pdf $@
rm gnustmppdf.*
${buildinfodir}/tramp.info tramp.html: ${srcdir}/trampver.texi
abs_top_builddir = @abs_top_builddir@
# Prevent any settings in the user environment causing problems.
unexport EMACSDATA EMACSDOC EMACSLOADPATH EMACSPATH
EMACS = /usr/bin/emacs
emacs = "${EMACS}" -batch --no-site-file --no-site-lisp --eval '(setq load-prefer-newer t)'
# Generated .texi files go in srcdir so they can be included in the
# release tarfile along with the others.
# Work in srcdir (and use abs_top_builddir) so that +setupfile and
# things like org-setup's "version" macro work. Sigh.
define org_template
$(1:.org=.texi): $(1)
$${AM_V_GEN}cd "$${srcdir}" && $${emacs} -l ox-texinfo \
--eval '(setq gc-cons-threshold 50000000)' \
--eval '(setq org-confirm-babel-evaluate nil)' \
--eval '(setq org-id-track-globally nil)' \
-f org-texinfo-export-to-texinfo-batch $$(notdir $$<) $$(notdir $$@)
endef
$(foreach orgfile,${ORG_SRC},$(eval $(call org_template,$(orgfile))))
## foo.org depends on foo-setup.org, if the latter exists.
define org_setup_template
$(1:-setup.org=.texi): $(1)
endef
$(foreach orgfile,${ORG_SETUP},$(eval $(call org_setup_template,$(orgfile))))
.PHONY: mostlyclean clean distclean bootstrap-clean maintainer-clean
mostlyclean:
rm -f ./*.aux ./*.log ./*.toc ./*.c[mp] ./*.c[mp]s ./*.fn ./*.fns \
./*.ky ./*.kys ./*.op ./*.ops ./*.p[gj] ./*.p[gj]s ./*.sc ./*.scs ./*.ss \
./*.t[gp] ./*.t[gp]s ./*.vr ./*.vrs
rm -f gnustmp*
clean: mostlyclean
rm -f ./*.dvi ./*.html ./*.pdf ./*.ps
distclean: clean
rm -f Makefile
## buildinfodir is relative to srcdir.
infoclean:
for file in $(INFO_TARGETS); do \
file=`echo $${file} | sed 's/\.info$$//'`.info; \
rm -f \
$(buildinfodir)/$${file} \
$(buildinfodir)/$${file}-[1-9] \
$(buildinfodir)/$${file}-[1-9][0-9]; \
done
.PHONY: orgclean
orgclean:
rm -f ${TEXI_FROM_ORG}
bootstrap-clean maintainer-clean: distclean infoclean orgclean
rm -f TAGS
.PHONY: install-dvi install-html install-pdf install-ps install-doc
install-dvi: dvi
umask 022; $(MKDIR_P) "$(DESTDIR)$(dvidir)"
$(INSTALL_DATA) $(DVI_TARGETS) "$(DESTDIR)$(dvidir)"
install-html: html
umask 022; $(MKDIR_P) "$(DESTDIR)$(htmldir)"
$(INSTALL_DATA) $(HTML_TARGETS) "$(DESTDIR)$(htmldir)"
install-pdf: pdf
umask 022;$(MKDIR_P) "$(DESTDIR)$(pdfdir)"
$(INSTALL_DATA) $(PDF_TARGETS) "$(DESTDIR)$(pdfdir)"
install-ps: ps
umask 022; $(MKDIR_P) "$(DESTDIR)$(psdir)"
for file in $(PS_TARGETS); do \
$(INSTALL_DATA) $${file} "$(DESTDIR)$(psdir)"; \
[ -n "${GZIP_PROG}" ] || continue; \
rm -f "$(DESTDIR)$(psdir)/$${file}.gz"; \
${GZIP_PROG} -9n "$(DESTDIR)$(psdir)/$${file}"; \
done
## Top-level Makefile installs the Info manuals.
install-doc: install-dvi install-html install-pdf install-ps
.PHONY: uninstall-dvi uninstall-html uninstall-pdf uninstall-ps uninstall-doc
uninstall-dvi:
for file in $(DVI_TARGETS); do \
rm -f "$(DESTDIR)$(dvidir)/$${file}"; \
done
uninstall-html:
for file in $(HTML_TARGETS); do \
rm -f "$(DESTDIR)$(htmldir)/$${file}"; \
done
uninstall-ps:
ext= ; [ -n "${GZIP_PROG}" ] && ext=.gz; \
for file in $(PS_TARGETS); do \
rm -f "$(DESTDIR)$(psdir)/$${file}$${ext}"; \
done
uninstall-pdf:
for file in $(PDF_TARGETS); do \
rm -f "$(DESTDIR)$(pdfdir)/$${file}"; \
done
uninstall-doc: uninstall-dvi uninstall-html uninstall-pdf uninstall-ps
ETAGS = ../../lib-src/etags${EXEEXT}
${ETAGS}: FORCE
$(MAKE) -C $(dir $@) $(notdir $@)
texifiles = $(wildcard ${srcdir}/*.texi)
TAGS: ${ETAGS} $(texifiles)
$(AM_V_GEN)${ETAGS} $(texifiles)
tags: TAGS
.PHONY: tags
FORCE:
.PHONY: FORCE
### Makefile ends here
|