# 
# Makefile.in for etc
#

prefix 		= @prefix@
exec_prefix 	= @exec_prefix@

srcdir  = @srcdir@
VPATH	= @srcdir@

bindir  = @bindir@
libdir  = @libdir@
tooldir = $(libdir)
datadir = @datadir@

mandir  = @mandir@
man1dir = $(mandir)/man1
man2dir = $(mandir)/man2
man3dir = $(mandir)/man3
man4dir = $(mandir)/man4
man5dir = $(mandir)/man5
man6dir = $(mandir)/man6
man7dir = $(mandir)/man7
man8dir = $(mandir)/man8
man9dir = $(mandir)/man9
infodir = @infodir@

SHELL = /bin/sh

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

MAKEINFO = makeinfo
TEXI2DVI = texi2dvi

# Where to find texinfo.tex to format documentation with TeX.
TEXIDIR = $(srcdir)/../texinfo

#### Host, target, and site specific Makefile fragments come in here.
###

INFOFILES = standards.info
DVIFILES = standards.dvi

all:

install:

uninstall:

info: $(INFOFILES)

install-info: info
	if test ! -f standards.info ; then cd $(srcdir); fi; \
	for i in standards.info*; do \
	  $(INSTALL_DATA) $$i $(infodir)/$$i; \
	done

dvi: $(DVIFILES)

standards.info: $(srcdir)/standards.texi $(srcdir)/make-stds.texi
	$(MAKEINFO) --no-split -I$(srcdir) -o standards.info $(srcdir)/standards.texi

standards.dvi: $(srcdir)/standards.texi
	TEXINPUTS=$(TEXIDIR):$$TEXINPUTS $(TEXI2DVI) $(srcdir)/standards.texi


clean:
	rm -f *.aux *.cp *.cps *.dvi *.fn *.fns *.ky *.kys *.log
	rm -f *.pg *.pgs *.toc *.tp *.tps *.vr *.vrs

mostlyclean: clean

distclean:   clean
	rm -f Makefile config.status config.cache

maintainer-clean realclean:   distclean
	rm -f *.info*

Makefile: $(srcdir)/Makefile.in $(host_makefile_frag) $(target_makefile_frag)
	$(SHELL) ./config.status

## these last targets are for standards.texi conformance
dist:
check:
installcheck:
TAGS:
