# Manually generated by programmer 

# Visual C++
#CC = cl
DEBUG = -g
# GCC
#CC = gcc -efence -Wall -pedantic
CC = gcc -Wall -pedantic
YACC = bison -v -y
LEX = flex
LIBS =
#LIBS = -lefence
#LIBS = -ll -ly

HEADERS = cola.h parser.h

default :
	chmod 775 colac
	$(MAKE) colacc
	(cd ../imcc ; $(MAKE))
	cp ../imcc/imcc .

nogen : gen.o semant.o sym.o type.o
	$(CC) $(DEBUG) -c parser.c
	$(CC) $(DEBUG) -c lexer.c
	$(CC) $(DEBUG) -o colacc parser.o lexer.o gen.o semant.o sym.o type.o $(LIBS)

clean :
	rm -f core
	rm -f *.o
	rm -f parser.h parser.output
	rm -f lexer.c parser.c
	rm -f colacc imcc

publish :
	perl publish.pl < MANIFEST

dist :
	perl distribution.pl < MANIFEST

parser.c : cola.y
	$(YACC) -d -o parser.c cola.y

imcparser.c : imcc.y
	$(YACC) -d -o imcparser.c imcc.y

lexer.c : cola.l $(HEADERS) 
	$(LEX) cola.l

imclexer.c : imcc.l $(HEADERS) 
	$(LEX) imcc.l

lexer.o : lexer.c $(HEADERS) 
	$(CC) $(DEBUG) -c lexer.c

parser.o : parser.c $(HEADERS)
	$(CC) $(DEBUG) -c parser.c

imcparser.o : imcparser.c $(HEADERS)
	$(CC) $(DEBUG) -c imcparser.c

imclexer.o : imclexer.c $(HEADERS)
	$(CC) $(DEBUG) -c imclexer.c

semant.o : semant.c $(HEADERS)
	$(CC) $(DEBUG) -c semant.c

sym.o : sym.c $(HEADERS)
	$(CC) $(DEBUG) -c sym.c

type.o : type.c $(HEADERS)
	$(CC) $(DEBUG) -c type.c

gen.o : gen.c $(HEADERS)
	$(CC) $(DEBUG) -c gen.c

imc.o : imc.c $(HEADERS)
	$(CC) $(DEBUG) -c imc.c

colacc : parser.o lexer.o gen.o semant.o sym.o type.o
	$(CC) $(DEBUG) -o colacc parser.o lexer.o gen.o semant.o sym.o type.o $(LIBS)

imcc : imc.o imcparser.o imclexer.o
	$(CC) $(DEBUG) -o imcc imc.o imcparser.o imclexer.o $(LIBS)

