# Makefile for the   GNU Emacs Lisp Reference Manual.
#
# 11 August 1990

# Redefine `TEX' if `tex' does not invoke plain TeX. For example:
# TEX=platex

TEX=tex
MAKE=make

# Where the TeX macros are kept:
texmacrodir = /usr/local/lib/tex/macros

# Where the Emacs hierarchy lives ($EMACS in the INSTALL document for Emacs.)
# For example: 
# emacslibdir = /usr/local/gnu/lib/emacs

# Directory where Emacs is installed, by default:
emacslibdir = /usr/local/emacs

# Unless you have a nonstandard Emacs installation, these shouldn't have to 
# be changed.
prefix = /usr/local
infodir = ${prefix}/info

# The name of the manual:

VERSION=2.4
manual = elisp-manual-19-$(VERSION)

# Uncomment this line for permuted index.
# permuted_index = 1 

# List of all the texinfo files in the manual:

srcs = elisp.texi back.texi \
  abbrevs.texi anti.texi backups.texi locals.texi buffers.texi \
  calendar.texi commands.texi compile.texi control.texi debugging.texi \
  display.texi edebug.texi errors.texi eval.texi files.texi \
  frames.texi functions.texi help.texi hooks.texi \
  internals.texi intro.texi keymaps.texi lists.texi \
  loading.texi macros.texi maps.texi markers.texi \
  minibuf.texi modes.texi numbers.texi objects.texi \
  os.texi positions.texi processes.texi searching.texi \
  sequences.texi streams.texi strings.texi symbols.texi \
  syntax.texi text.texi tips.texi variables.texi \
  windows.texi \
  index.unperm index.perm

.PHONY: elisp.dvi clean

# The info file is named `elisp'.
# We depend on makeinfo.c rather than makeinfo -- there's no need to rebuild
# everything just because makeinfo isn't part of the distribution.

elisp: $(srcs) index.texi makeinfo.c
	$(MAKE) makeinfo
	rm -f elisp-*
	./makeinfo elisp.texi

elisp.dvi: $(srcs) index.texi texindex
	# Avoid losing old contents of aux file entirely.
	-mv elisp.aux elisp.oaux
	# First shot to define xrefs:
	$(TEX) elisp.texi
	if [ a${permuted_index} != a ]; \
	then \
	  ./permute-index; \
	  mv permuted.fns elisp.fns; \
	else \
	  ./texindex elisp.??; \
	fi
	$(TEX) elisp.texi

index.texi:
	if [ a${permuted_index} != a ]; \
	then \
	  ln -s index.perm index.texi; \
	else \
	  ln -s index.unperm index.texi; \
	fi

install: elisp
	./mkinstalldirs $(infodir)
	cp elisp elisp-* $(infodir)
	@echo also add the line for elisp to $(infodir)/dir.

installall: install
	install -c texinfo.tex $(texmacrodir)

clean:
	rm -f *.toc *.aux *.log *.cp *.cps *.fn *.fns *.tp *.tps \
              *.vr *.vrs *.pg *.pgs *.ky *.kys
	rm -f make.out core 
	rm -f makeinfo.o makeinfo getopt.o getopt1.o
	rm -f texindex.o texindex index.texi

maintainer-clean: clean
	rm -f elisp elisp-*

dist:
	-mkdir temp
	-mkdir temp/$(manual)
	-ln README Makefile permute-index $(srcs) \
   texinfo.tex getopt.c getopt1.c getopt.h \
   elisp.dvi elisp.aux elisp.??s elisp elisp-[0-9] elisp-[0-9][0-9] temp/$(manual)
	-(cd temp/$(manual); rm -f texindex.c makeinfo.c mkinstalldirs)
	cp texindex.c makeinfo.c mkinstalldirs temp/$(manual)
	(cd temp/$(manual); rm -f *~)
	(cd temp; tar chf - $(manual)) | gzip > $(manual).tar.gz
	-rm -rf temp

# Make two programs used in generating output from texinfo.

CFLAGS = -g

texindex: texindex.o
	$(CC) -o $@ $(LDFLAGS) $(CFLAGS) $?
texindex.o: texindex.c

MAKEINFO_MAJOR = 1
MAKEINFO_MINOR = 0
MAKEINFO_FLAGS = -DMAKEINFO_MAJOR=$(MAKEINFO_MAJOR) -DMAKEINFO_MINOR=$(MAKEINFO_MINOR)

makeinfo: makeinfo.o getopt.o getopt1.o
	$(CC) $(LDFLAGS) -o makeinfo makeinfo.o getopt.o getopt1.o

makeinfo.o: makeinfo.c
	$(CC) -c $(CFLAGS) $(MAKEINFO_FLAGS) makeinfo.c
