.SUFFIXES: .o .c
CC = CC
CFLAGS = -g -DDEBUG -DWITH_GC -DWITH_VIRTUAL_BACK
NOVCFLAGS = -g -DDEBUG -DWITH_GC
LD = ld
LDFLAGS = -r

OBJS = hash_table.o memory.o basics.o control.o inst_args.o scan.o built_ins.o get_put_unify.o inst_table.o string_table.o main.o assembler.o top_level.o compile.o arg_types.o mark_copy.o mark_compact.o fast_copy.o
NOVOBJS = hash_table.o memory.o basics.o control.o inst_args.o scan.o built_ins.o get_put_unify.o inst_table.o string_table.o main.o assembler.o top_level.o compile.o arg_types.o nov_mark_copy.o nov_mark_compact.o fast_copy.o
HEADFILES = instructions.h built_ins.h commands.h
pas: $(OBJS) $(HEADFILES)
	$(CC) $(CFLAGS) -o pas $(OBJS) -lm

novpas: $(OBJS) $(HEADFILES)
	$(CC) -c $(NOVCFLAGS) mark_copy.o mark_copy.c
	mv mark_copy.o nov_mark_copy.o
	$(CC) -c $(NOVCFLAGS) mark_compact.o mark_compact.c
	mv mark_compact.o nov_mark_compact.o
	$(CC) $(NOVCFLAGS) -o novpas $(NOVOBJS) -lm

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

instructions.h:
	cd Instructions
	make_skels
	cd ..
built_ins.h:
	cd BuiltIns
	make_skels
	cd ..
commands.h:
	cd Commands
	make_skels
	cd ..
