INCL	=
COPTS	= -O -g
CFLAGS	= $(COPTS) $(CEXT) $(INCL)
CC	= gcc
DEPEND	= $(CC) -MM $(INCL)
LOADLIBES =
INSTALL	= install
INSTFLAGS = -c -s -m 755

PREFIX	= /usr/local
BINDIR	= $(PREFIX)/bin
MANDIR	= $(PREFIX)/man
LIBDIR	= $(PREFIX)/lib
INFODIR	= /common/lib/gnu/emacs/info

INST_NAME = gm4			# Program name
INFO_NAME = m4			# Info file name

ALL	= m4
HDRS	= m4.h
SRCS	= m4.c input.c output.c symtab.c builtin.c macro.c debug.c eval.c path.c format.c
OBJS	= m4.o input.o output.o symtab.o builtin.o macro.o debug.o eval.o path.o format.o
MISC	= Makefile README get_examples.sh check_examples.sh

LIBHDRS	= obstack.h regex.h version.h
LIBSRCS	= obstack.c regex.c # vfprintf.c
LIBOBJS	= obstack.o regex.o # vfprintf.o
LIBMISC	= COPYING

ALLHDRS = $(HDRS) $(LIBHDRS)
ALLSRCS = $(SRCS) $(LIBSRCS)
ALLOBJS = $(OBJS) $(LIBOBJS)
ALLMISC	= $(MISC) $(LIBMISC)

DIST	= $(ALLMISC) $(ALLSRCS) $(ALLHDRS) vfprintf.c newvers.sh nextvers.sh m4.texinfo m4.dvi examples test

all:	$(ALL)

$(ALL): $(ALLOBJS)
	$(CC) -o $@ $(CFLAGS) $(LDFLAGS) $(ALLOBJS) $(LOADLIBES)

version.h: always
	@./newvers.sh m4.c

m4.info: m4.texinfo
	makeinfo m4.texinfo

install: $(BINDIR)/$(INST_NAME) $(INFODIR)/$(INFO_NAME)
	@echo Installation done

$(BINDIR)/$(INST_NAME):  $(ALL)
	$(INSTALL) $(INSTFLAGS) $(ALL) $(BINDIR)/$(INST_NAME)

$(INFODIR)/$(INFO_NAME): m4.info
	$(INSTALL) -c -m 444 m4.info $(INFODIR)/$(INFO_NAME)
	$(INSTALL) -c -m 444 m4.info-1 $(INFODIR)
	$(INSTALL) -c -m 444 m4.info-2 $(INFODIR)

uninstall:
	rm -f $(BINDIR)/$(INST_NAME)

index: m4.fn m4.cp
	texindex m4.fn m4.cp

tags:	$(SRCS) $(HDRS)
	etags $(SRCS) $(HDRS)

ci:
	ci $(CIOPTS) -f -l"`./nextvers.sh m4.c`" -t/dev/null -m'$(MSG)' $(MISC) $(SRCS) $(HDRS)

diff:
	rcsdiff -c $(MISC) $(SRCS) $(HDRS) 2>&1

clean:
	rm -f $(ALL) *.o *~ *.bak '#*' m4.?? m4.??? m4.info core a.out
	cd test; rm -f *~ '#*'

reallyclean:	clean

NUMBER	= cat -n	# BSD
#NUMBER	= nl -ba 	# System V ??
test:	m4
	@for i in examples/[0-9][0-9].*; do \
		echo ">>> Input: $$i"; \
		$(NUMBER) $$i; \
		echo ">>> Output"; \
		./m4 $$i; \
		echo ">>> Fin. ($$?)"; \
	done

dist:	version.h
	-rm -rf dist
	-mkdir dist
	-mkdir dist/m4-dist
	cd dist/m4-dist; for i in $(DIST); do ln -s ../../$$i .; done
	cd dist; tar cfh ../m4.tar m4-dist
	compress < m4.tar > m4.tar.Z
	-rm -fr m4.tar dist


examples: always
	rm -f examples/[0-9][0-9].*
	./get_examples.sh m4.texinfo

check:	examples
	./check_examples.sh examples/[0-9][0-9].*

namecheck:
	find . -print | awk -F/ 'length($$NF) > 14'

always:

depend:	$(ALLSRCS)
	for i in $(ALLSRCS) ; do $(DEPEND) $$i >> makedep; done
	echo '/^# DO NOT DELETE THIS LINE/+2,$$d' >eddep
	echo '$$r makedep' >>eddep
	echo 'w' >>eddep
	cp Makefile Makefile.bak
	ed - Makefile < eddep
	rm eddep makedep
	echo '# DEPENDENCIES MUST END AT END OF FILE' >> Makefile
	echo '# IF YOU PUT STUFF HERE IT WILL GO AWAY' >> Makefile
	echo '# see make depend above' >> Makefile

# DO NOT DELETE THIS LINE

m4.o : m4.c m4.h obstack.h version.h
input.o : input.c m4.h obstack.h
output.o : output.c m4.h obstack.h
symtab.o : symtab.c m4.h obstack.h
builtin.o : builtin.c m4.h obstack.h regex.h
macro.o : macro.c m4.h obstack.h
debug.o : debug.c m4.h obstack.h
eval.o : eval.c m4.h obstack.h
path.o : path.c m4.h obstack.h
format.o : format.c m4.h obstack.h
obstack.o : obstack.c obstack.h
regex.o : regex.c regex.h
# DEPENDENCIES MUST END AT END OF FILE
# IF YOU PUT STUFF HERE IT WILL GO AWAY
# see make depend above
