# Makefile for texinfo/info.	-*- Indented-Text -*-
# Copyright (C) 1993 Free Software Foundation, Inc.

# This program 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 2, or (at your option)
# any later version.

# This program 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 this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

#### Start of system configuration section. ####

srcdir = @srcdir@
VPATH  = $(srcdir):$(common)

common = $(srcdir)/../libtxi
util   = $(srcdir)/../util

CC = @CC@

INSTALL = @INSTALL@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_DATA = @INSTALL_DATA@

LN	= ln
RM	= rm -f
TAR	= tar
MKDIR	= mkdir
# Amiga local - setting PATH appears to not be necessary and causes
# an error (that should be tracked down - FIXME).
#MAKEINFO= PATH=../makeinfo:$$PATH makeinfo
MAKEINFO= ../makeinfo/makeinfo
COMPRESS= compress

DEFS = @DEFS@

LDEFS = -DHANDLE_MAN_PAGES -DNAMED_FUNCTIONS=1 -DDEFAULT_INFOPATH='"$(DEFAULT_INFOPATH)"'

TERMLIBS = @TERMLIBS@
LIBS = $(TERMLIBS) -L../libtxi -ltxi @LIBS@
LOADLIBES = $(LIBS)

SHELL = /bin/sh

CFLAGS = @CFLAGS@
LDFLAGS = @LDFLAGS@

prefix = @prefix@
exec_prefix = @exec_prefix@
bindir = $(exec_prefix)/bin
# Prefix for each installed program, normally empty or `g'.
binprefix = 
libdir = $(prefix)/lib
# Prefix for each installed man page, normally empty or `g'.
manprefix = 
mandir = $(prefix)/man/man1
manext = 1
infodir = $(prefix)/info
DEFAULT_INFOPATH= $(infodir):.
guidedir = $(prefix)/guide

#### End of system configuration section. ####

SRCS =	dir.c		display.c	echo_area.c	filesys.c \
	info-utils.c	info.c		infodoc.c	infomap.c \
	m-x.c		nodes.c		search.c	session.c \
	signals.c	terminal.c	tilde.c		window.c \
	xmalloc.c	indices.c	makedoc.c	nodemenu.c \
	footnotes.c	dribble.c	variables.c	gc.c man.c \
	clib.c

HDRS =	display.h	doc.h		echo_area.h	filesys.h \
	general.h	getopt.h	info-utils.h	info.h \
	infomap.h	nodes.h		search.h 	session.h \
	signals.h	termdep.h	terminal.h	tilde.h \
	indices.h	window.h	footnotes.h	dribble.h \
	variables.h	gc.h		clib.h

OBJS =	dir.o display.o doc.o echo_area.o filesys.o info-utils.o info.o \
	infodoc.o infomap.o m-x.o nodes.o search.o session.o signals.o \
	terminal.o tilde.o window.o indices.o xmalloc.o nodemenu.o \
	footnotes.o dribble.o variables.o gc.o man.o clib.o

# The names of files which declare info commands.
CMDFILES = $(srcdir)/session.c $(srcdir)/echo_area.c $(srcdir)/infodoc.c \
	   $(srcdir)/m-x.c $(srcdir)/indices.c $(srcdir)/nodemenu.c \
	   $(srcdir)/footnotes.c $(srcdir)/variables.c

# The name of the program which builds documentation structure from CMDFILES.
MAKEDOC_OBJECTS = makedoc.o clib.o xmalloc.o
MAKEDOC_SOURCE = makedoc.c clib.c xmalloc.c

.c.o:
	$(CC) -c $(CPPFLAGS) $(LDEFS) $(DEFS) -I. -I$(srcdir) -I$(common) $(CFLAGS) $<

all: info info.info info-stnd.info info.guide info-stnd.guide
sub-all: all

install: all
	$(INSTALL_PROGRAM) info $(bindir)/$(binprefix)info
	-d=$(srcdir); test -f ./info.info && d=.; $(INSTALL_DATA) $$d/info.info $(infodir)/info.info
	-d=$(srcdir); test -f ./info-stnd.info && d=.; $(INSTALL_DATA) $$d/info-stnd.info $(infodir)/info-stnd.info
	-d=$(srcdir); test -f ./info.guide && d=.; $(INSTALL_DATA) $$d/info.guide $(guidedir)/info.guide
	-d=$(srcdir); test -f ./info-stnd.guide && d=.; $(INSTALL_DATA) $$d/info-stnd.guide $(guidedir)/info-stnd.guide
	-$(INSTALL_DATA) $(srcdir)/info.1 $(mandir)/$(manprefix)info.$(manext)

uninstall:
	$(RM) $(bindir)/info
	$(RM) $(infodir)/info.info
	$(RM) $(infodir)/info-stnd.info
	$(RM) $(guidedir)/info.guide
	$(RM) $(guidedir)/info-stnd.guide
	$(RM) $(mandir)/info.$(manext)

info: $(OBJS) ../libtxi/libtxi.a
	$(CC) $(LDFLAGS) -o info $(OBJS) $(LOADLIBES)

all-info: info.info info-stnd.info

info.info: info.texi
	$(MAKEINFO) --no-split -I$(srcdir) info.texi
	
info.guide: info.texi
	$(MAKEINFO) --amiga-39 -I$(srcdir) info.texi -o info.guide

info-stnd.info: info-stnd.texi
	$(MAKEINFO) --no-split -I$(srcdir) info-stnd.texi

info-stnd.guide: info-stnd.texi
	$(MAKEINFO) --amiga-39 -I$(srcdir) info-stnd.texi -o info-stnd.guide

all-dvi: info.dvi info-stnd.dvi
info.dvi: info.texi
	PATH="$(util):$${PATH}" TEXINPUTS="$(srcdir):$(common):$${TEXINPUTS}" texi2dvi $(srcdir)/info.texi

info-stnd.dvi: info-stnd.texi
	PATH="$(util):$${PATH}" TEXINPUTS="$(srcdir):$(common):$${TEXINPUTS}" texi2dvi $(srcdir)/info-stnd.texi

makedoc: $(MAKEDOC_OBJECTS) ../libtxi/libtxi.a
	$(CC) $(LDFLAGS) -o makedoc $(MAKEDOC_OBJECTS) $(LOADLIBES)

Makefile: $(srcdir)/Makefile.in ../config.status
	cd ..; sh config.status

clean:
	$(RM) info funs.h doc.c makedoc $(OBJS) $(MAKEDOC_OBJECTS)

distclean: clean texclean
	$(RM) Makefile config.status config.cache *~ core core.* *.core
	$(RM) *.BAK makedoc-TAGS TAGS \#*

mostlyclean: clean

realclean: distclean
	$(RM) info.info info-stnd.info *.guide

TAGS: $(SRCS) makedoc-TAGS
	etags $(SRCS)
	cat makedoc-TAGS >>TAGS && $(RM) makedoc-TAGS

makedoc-TAGS: $(CMDFILES)
	./makedoc -tags $(CMDFILES) >makedoc-TAGS

texclean:
	$(RM) *.toc *.aux *.log *.cp *.fn *.tp *.vr *.pg *.ky *.cps
	$(RM) *.tps *.fns *.kys *.pgs *.vrs

check: info

# The files `doc.c' and `funs.h' are created by ./makedoc run over the source
# files which contain DECLARE_INFO_COMMAND.  `funs.h' is a header file
# listing the functions found.  `doc.c' is a structure containing pointers
# to those functions along with completable names and documentation strings.
funs.h: makedoc $(CMDFILES)
	-@if test -f funs.h; then mv -f funs.h old-funs.h; fi; :
	-@if test -f doc.c; then mv -f doc.c old-doc.c; fi; :
	./makedoc $(CMDFILES)
	-@if cmp -s old-funs.h funs.h; then mv old-funs.h funs.h; \
	  else $(RM) old-funs.h; fi; :
	-@if cmp -s old-doc.c doc.c; then mv old-doc.c doc.c; \
	  else $(RM) old-doc.c; fi; :

doc.c: 		funs.h
dribble.o:	dribble.c dribble.h
display.o:	display.c
echo_area.o:	echo_area.c
filesys.o:	filesys.c
info-utils.o:	info-utils.c
info.o:		info.c filesys.h
infodoc.o:	infodoc.c
infomap.o:	infomap.c
m-x.o:		m-x.c
nodes.o:	nodes.c
search.o:	search.c
session.o:	session.c
signals.o:	signals.c
terminal.o:	terminal.c
tilde.o:	tilde.c
window.o:	window.c
xmalloc.o:	xmalloc.c
indices.o:	indices.c
makedoc.o:	makedoc.c

dir.o: 		dir.c
display.o: 	nodes.h info-utils.h search.h
display.o: 	terminal.h window.h display.h
echo_area.o: 	info.h
filesys.o: 	general.h tilde.h filesys.h
footnotes.o: 	footnotes.h
info-utils.o: 	info-utils.h nodes.h search.h
info.o: 	info.h $(common)/getopt.h
infodoc.o: 	info.h doc.h
infomap.o: 	infomap.h funs.h
gc.o:		info.h
m-x.o: 		info.h
nodes.o: 	search.h filesys.h
nodes.o: 	nodes.h info-utils.h
search.o: 	general.h search.h nodes.h
session.o: 	info.h
signals.o: 	info.h signals.h
terminal.o: 	terminal.h termdep.h
tilde.o: 	tilde.h
variables.c: 	variables.h
window.o: 	nodes.h window.h display.h
window.o: 	info-utils.h search.h infomap.h

# Prevent GNU make v3 from overflowing arg limit on SysV.
.NOEXPORT:

# eof
