1
0
mirror of https://git.savannah.gnu.org/git/emacs/org-mode.git synced 2024-11-30 08:08:26 +00:00
org-mode/doc/Makefile
Ihor Radchenko 41b7410a8c
doc/Makefile: Limit memory consumption when generating docs
* doc/Makefile: Do not disable garbage collection completely (as it
was after 3684c7967) when generating docs.  Use no too large 50Mb
`gc-cons-threshold' instead.

See
https://yhetil.org/emacs-devel/9778F176-E724-4E61-B0FB-327BCDD316C0@acm.org
for the testing behind the 50Mb constant.
2022-06-17 13:18:39 +08:00

111 lines
3.5 KiB
Makefile

.SUFFIXES: # we don't need default suffix rules
ifeq ($(MAKELEVEL), 0)
$(error This make needs to be started as a sub-make from the toplevel directory.)
endif
.PHONY: all info html pdf card manual guide install \
clean cleanall clean-install
all: $(ORG_MAKE_DOC)
info: org orgguide
html: org.html orgguide.html
pdf: org.pdf orgguide.pdf
card: orgcard.pdf orgcard_letter.pdf orgguide.pdf
ifneq ($(SERVERMK),)
manual guide::
-$(RMR) $@
$(MKDIR) $@
manual:: org.texi org-version.inc
$(TEXI2HTML) -o $@ $<
../mk/mansplit.pl $@/*
guide:: orgguide.texi org-version.inc
$(TEXI2HTML) -o $@ $<
../mk/guidesplit.pl $@/*
endif
# We increase GC threshold when generating documentation. This
# imrpoves the performance significantly. See
# https://yhetil.org/emacs-devel/9778F176-E724-4E61-B0FB-327BCDD316C0@acm.org
# Too high number may cause memory overflow (for example, it has
# happened in CI during automated build). We choose 50Mb threshold,
# based on the above discussion.
org.texi: org-manual.org
$(BATCH) \
--eval '(add-to-list `load-path "../lisp")' \
--eval '(load "../mk/org-fixup.el")' \
--eval '(setq gc-cons-threshold (* 50 1000 1000))' \
--eval '(org-make-manual)'
orgguide.texi: org-guide.org
$(BATCH) \
--eval '(add-to-list `load-path "../lisp")' \
--eval '(load "../mk/org-fixup.el")' \
--eval '(setq gc-cons-threshold (* 50 1000 1000))' \
--eval '(org-make-guide)'
org-version.inc: org.texi
@echo "org-version: $(ORGVERSION) ($(GITVERSION))"
@echo "@c automatically generated, do not edit" > org-version.inc
@echo "@set VERSION $(ORGVERSION) ($(GITVERSION))" >> org-version.inc
@echo "@set DATE $(DATE)" >> org-version.inc
org-version.tex: orgcard.tex
@printf "org-version: $(ORGVERSION) ($(GITVERSION))\n"
@printf "%% automatically generated, do not edit\n" > org-version.tex
@printf "\def\orgversionnumber{$(ORGVERSION)}\n" >> org-version.tex
@printf "\def\\\\versionyear{$(YEAR)}\n" >> org-version.tex
@printf "\def\year{$(YEAR)}\n" >> org-version.tex
install: org orgguide
if [ ! -d $(DESTDIR)$(infodir) ]; then $(MKDIR) $(DESTDIR)$(infodir); else true; fi ;
$(CP) org.info $(DESTDIR)$(infodir)
$(CP) orgguide.info $(DESTDIR)$(infodir)
$(INSTALL_INFO) --infodir=$(DESTDIR)$(infodir) org.info
$(INSTALL_INFO) --infodir=$(DESTDIR)$(infodir) orgguide.info
clean:
$(RM) *.pdf *.html *.info *_letter.tex org-version.inc org-version.tex \
*.aux *.cp *.cps *.dvi *.fn *.fns *.ky *.kys *.pg *.pgs *.toc \
*.tp *.tps *.vr *.vrs *.log *.ps
cleanall: clean
$(RM) org.texi orgguide.texi
$(RMR) guide manual
clean-install:
$(RM) $(DESTDIR)$(infodir)/org*
$(INSTALL_INFO) --infodir=$(DESTDIR)$(infodir) --remove org
$(INSTALL_INFO) --infodir=$(DESTDIR)$(infodir) --remove orgguide
.SUFFIXES: .texi .tex .txt _letter.tex
%: %.texi org-version.inc
$(MAKEINFO) --no-split $< -o $@.info
# the following two lines work around a bug in some versions of texi2dvi
%.pdf: LC_ALL=C
%.pdf: LANG=C
%.pdf: %.texi org-version.inc
$(TEXI2PDF) $<
%.pdf: %.tex org-version.tex
PDFLATEX=$(PDFTEX) $(TEXI2PDF) $<
%.html: %.texi org-version.inc
$(TEXI2HTML) --no-split -o $@ $<
ifneq ($(SERVERMK),)
../mk/manfull.pl $@
%.txt: %.tex
perl ../mk/orgcard2txt.pl $< > $@
endif
%_letter.tex: %.tex
$(BATCH) \
--eval '(add-to-list `load-path "../lisp")' \
--eval '(load "org-compat.el")' \
--eval '(load "../mk/org-fixup.el")' \
--eval '(org-make-letterformat "$(<F)" "$(@F)")'