OBJS=  compile.o env.o interpret.o objenv.o print.o table.o tree.o \
       types.o stack.o utils.o valuelist.o parser.o lexer.o alloc.o global.o \
       calloc.o mudlle.o ports.o ins.o error.o mcompile.o \
       module.o call.o context.o builtins.o

CC=lcc -g -D__SVR4
CFLAGS= -I.

mudlle: $(OBJS) runlib
	$(CC) -o mudlle $(OBJS) runtime/librun.a -lm

puremud: $(OBJS) runlib
	purify -cache-dir=/tmp $(CC) -o puremud $(OBJS) runtime/librun.a -lm

runlib: 
		(cd runtime; $(MAKE) -f mkf "CC=$(CC)")

clean:
	rm -f *.o libmudlle.a lexer.c tokens.h parser.c
	(cd runtime; make -f mkf clean)

mytar:
	tar cvf - *.[chylsa] *.mud smakefile.base Makefile.base mkf SCOPTIONS runtime/*.[ch] runtime/smakefile runtime/SCOPTIONS runtime/Makefile.base runtime/mkf doc/*.doc | gzip >mudlle.tar.gz

tar:
	tar cvf mudlle.tar mkf *.[chylsa] *.mud smakefile.base SCOPTIONS \
runtime/mkf runtime/arith.[ch] runtime/basic.[ch] runtime/bool.[ch] \
runtime/list.[ch] runtime/runtime.[ch] runtime/SCOPTIONS compile \
runtime/smakefile runtime/string.c runtime/stringops.h runtime/files.[ch] \
runtime/symbol.[ch] runtime/symbol.h runtime/vector.[ch] doc/mudlle-ref.doc \
doc/mudlle-intro.doc runtime/support.[ch] runtime/bitset.[ch] runtime/io.[ch] \
runtime/debug.[ch]


lexer.c: lexer.l
	flex -F lexer.l
	mv lex.yy.c lexer.c

tokens.h parser.c: parser.y
	bison -dt parser.y
	mv parser.tab.h tokens.h
	mv parser.tab.c parser.c

builtins.o: builtins.s
	$(CC) -Wa-P -c builtins.s
	
depend:
	makedepend -f .depend $(CFLAGS) *.c 2>/dev/null
	(cd runtime; make -f mkf depend)

compiler:
	/bin/sh install-compiler

include .depend
