# Makefile for fuzz (linux)
# $Id: Makefile,v 1.1 2002/11/13 13:14:52 mike Exp $

all: fuzz fuzzlib

FUZZ = zparse.o zscan.o param.o main.o spec.o type.o frame.o dict.o \
	sched.o pretty.o error.o expr.o alloc.o unify.o schema.o dump.o
GEN = y.output zparse.c symbol.h absyn.h zscan.c

LEX = flex
LFLAGS = -s
CC=gcc
CPP=/lib/cpp
DEFINES = -DDEBUG -DANSI -DASSUME

fuzz: $(FUZZ)
	$(CC) $(CFLAGS) -o fuzz $(FUZZ)

clean:
	rm -f *.o $(GEN)

distclean: clean
	rm -f fuzz fuzzlib minilib

realclean: distclean

zparse.c : zparse.y
	bison -dv -y zparse.y
	mv y.tab.h symbol.h
	mv y.tab.c zparse.c

symbol.h : zparse.c

absyn.h: absyn.x absyn.k
	gawk -f absyn.k absyn.x >absyn.h

fuzzlib: symdef.x fuzzlib.k fuzzlib.x minilib.x opdef.x symbol.h
	$(CPP) $(DEFINES) symdef.x >symdef.i
	gawk -f fuzzlib.k output=fuzzlib fuzzlib.x >fuzzlib
	gawk -f fuzzlib.k output=minilib minilib.x >minilib
	rm symdef.i

$(FUZZ): fuzz.h proto.h symbol.h absyn.h

%.o : %.c
	$(CC) $(CFLAGS) -c $(DEFINES) $<

force:

