# makefile for ll1gen
# $Header: /u/hyctia/home/bert/CVSRepository/Work/LL1-1.3/makefile,v 1.1 1997/02/19 01:09:02 bert Exp $
# Bert Bos <bert@let.rug.nl>
#
##############################################################################
# Choose Unix (u) or MS-DOS (m)
#
s	      =	u

##############################################################################
# Configuration for MS-DOS (tested with Microsoft C 6.0)
#
$ss_CFLAGS    = /Zi /Zd /Od /W1 /nologo
$ss_RM	      = xdel
$ss_o	      = .obj
$ss_sep	      = \\
# This extra comment is to undo the effect of the backslash
$ss_LIBS      = 

##############################################################################
# Configuration for UNIX
#
CC	      = gcc
$sx_CFLAGS    =	-s -O
#$sx_CFLAGS   =	+O3 -z -Aa -D_HPUX_SOURCE
$sx_RM	      =	rm -f
INSTALL	      = /etc/install
#$sx_LIBS     =	$(HOME)/Lib/libdbmalloc.a
$sx_o	      =	.o
$sx_sep	      =	/
MANEXT	      =	1
MANDIR	      =	$(HOME)/Man/man1
DEST	      = $(HOME)/bin
DEPEND	      = makedepend

##############################################################################
# Should need no configuration below this line
#
EXTHDRS	      =
#parser	      =	parse
parser	      =	ll1
HDRS	      = build.e errors.e generate.e $(parser).def scan.e sets.h types.h
LD	      = $(CC)
LDFLAGS	      = $(CFLAGS)
MAKEFILE      = makefile
OBJS	      = build$o errors$o generate$o $(parser)$o main$o scan$o sets$o
PRINT	      = pr
PROGRAM       = ll1gen
EXPORT        = cexport
SHELL	      = /bin/sh
SRCS	      = build.c errors.c generate.c $(parser).c main.c scan.c sets.c
EXTRASRCS     =	ll1.ll1 ll1.sgml ll1.tex
EXTRAOBJS     =	ll1.inc ll1.dvi ll1.aux ll1.toc ll1.log ll1.ps
DISTR	      =	$(PROGRAM).$(MANEXT) $(SRCS) $(HDRS)
VERSION	      = 1.0

CFLAGS	      =	$(ux_CFLAGS)$(ms_CFLAGS)
o	      = $(ux_o)$(ms_o)
sep	      = $(ux_sep)$(ms_sep)
RM	      = $(ux_RM)$(ms_RM)
LIBS	      = $(ux_LIBS)$(ms_LIBS)

SUFFIX	      =	.c:sC .l:sC .y:sC .s:s .e:h .h:h .def:h .ll1:sC
.SUFFIXES:	.e .ll1 .def
.c.e:;		./do_export $* $(CFLAGS)
.ll1.def:;	ll1gen $<
.ll1.c:;	ll1gen $<

all:		$(EXPORT) $(PROGRAM)

test:		$(PROGRAM)
		@mv ll1.c tmp.c
		@mv ll1.def tmp.def
		@echo "Regenerating ll1.c and ll1.def..."
		@-./$(PROGRAM) ll1.ll1
		@-cmp tmp.c ll1.c&&cmp tmp.def ll1.def&&echo "No change, OK"
		@mv tmp.c ll1.c
		@mv tmp.def ll1.def

$(PROGRAM):     $(EXPORT) $(OBJS) $(LIBS)
		@echo "Linking $(PROGRAM) ..."
		@$(LD) $(LDFLAGS) $(OBJS) $(LIBS) -o $(PROGRAM)
		@echo "done"

clean:;		@$(RM) $(OBJS) core

clobber:;	@$(RM) $(OBJS) $(PROGRAM) $(EXPORT) core tags

# depend:;	@mkmf -f $(MAKEFILE) ROOT=$(ROOT)

echo:;		@echo $(HDRS) $(SRCS)

index:;		@ctags -wx $(HDRS) $(SRCS)

install:	$(PROGRAM)
		@echo Installing $(PROGRAM) in $(DEST)
		@-strip $(PROGRAM)
		@if [ $(DEST) != . ]; then \
		($(RM) -f $(DEST)$(sep)$(PROGRAM); $(INSTALL) -f $(DEST) $(PROGRAM)); fi

install.man:	$(PROGRAM).$(MANEXT)
		cp $(PROGRAM).$(MANEXT) $(MANDIR)

print:;		@$(PRINT) $(HDRS) $(SRCS) $(EXTRASRCS)

tags:           $(HDRS) $(SRCS); @ctags $(HDRS) $(SRCS)

update:		$(DEST)$(sep)$(PROGRAM)

$(DEST)$(sep)$(PROGRAM): $(SRCS) $(LIBS) $(HDRS) $(EXTHDRS)
		@$(MAKE) -f $(MAKEFILE) ROOT=$(ROOT) DEST=$(DEST) install

lint:;		lint $(SRCS)

$(PROGRAM).$(MANEXT): $(PROGRAM).sgml
		format -T man $(PROGRAM).sgml >$(PROGRAM).$(MANEXT)

$(PROGRAM).inc:	$(PROGRAM).sgml
		format $(PROGRAM).sgml >$(PROGRAM).inc

$(PROGRAM).dvi:	$(PROGRAM).tex $(PROGRAM).sgml $(PROGRAM).inc
		latex $(PROGRAM).tex
		latex $(PROGRAM).tex

$(PROGRAM).ps:	$(PROGRAM).dvi
		dvips -o $(PROGRAM).ps $(PROGRAM).dvi

tar:		$(DISTR)
		-mkdir $(PROGRAM)-$(VERSION)
		cp $(DISTR) $(PROGRAM)-$(VERSION)
		tar cf $(PROGRAM)-$(VERSION).tar $(PROGRAM)-$(VERSION)
		compress $(PROGRAM)-$(VERSION).tar
		rm -rf $(PROGRAM)-$(VERSION)

###
build$o: types.h sets.h ll1.def errors.e
errors$o: ll1.def
generate$o: types.h sets.h build.e ll1.def errors.e
main$o: types.h sets.h build.e generate.e ll1.def scan.e errors.e
scan$o: ll1.def errors.e
sets$o: sets.h
ll1$o: scan.e build.e types.h errors.e ll1.def
