
OBJECTS = vm/cfrtil.o vm/parse.o vm/memory.o vm/dictionary.o vm/reset.o\
	vm/dllist.o vm/interpret.o vm/globals.o vm/io.o vm/token.o vm/cstack.o\
	vm/namespaces.o vm/history.o vm/readline.o vm/dataStack.o vm/macros.o\
	vm/primitives.o primitives/math.o primitives/logic.o\
	primitives/branchConditionals.o primitives/io.o\
	primitives/interpreter.o primitives/namespaces.o primitives/system.o\
	primitives/vm.o primitives/compiler.o\
	vm/compiler/machineCode.o vm/compiler/compile.o\
	vm/compiler/quotations.o 
#	primitives/localsStackVariables.o

SOURCES = vm/cfrtil.c vm/parse.c vm/memory.c vm/dictionary.c vm/reset.c\
	vm/dllist.c vm/interpret.c vm/globals.c vm/io.c vm/token.c vm/cstack.c\
	vm/namespaces.c vm/history.c vm/readline.c vm/dataStack.c vm/macros.c\
	vm/primitives.c primitives/math.c primitives/logic.c\
	primitives/branchConditionals.c primitives/io.c\
	primitives/interpreter.c primitives/namespaces.c primitives/system.c\
	primitives/vm.c primitives/compiler.c\
	vm/compiler/machineCode.c vm/compiler/compile.c\
	vm/compiler/quotations.c 
#	primitives/localsStackVariables.c

INCLUDES = includes/machineCode.h includes/defines.h includes/types.h includes/declarations.h includes/cfrtil.h includes/globals.h
CFLAGS_CORE = -Wall -march=core2 -fomit-frame-pointer -std=gnu99
CC = gcc

debug:

_clean : 
	rm vm/*.o primitives/*.o vm/compiler/*.o 

includes/prototypes.h : $(INCLUDES) 
	cproto -o proto.h primitives/*.c vm/compiler/*.c vm/*.c
	mv includes/prototypes.h includes/prototypes.h.bak
	mv proto.h includes/prototypes.h
	make _clean

prototypes : includes/prototypes.h

cfrtil-gdb : CFLAGS = $(CFLAGS_CORE) -ggdb 
cfrtil-gdb : prototypes $(SOURCES) $(OBJECTS) 
	$(CC) $(CFLAGS) vm/*.o primitives/*.o vm/compiler/*.o -o cfrtil-gdb

cfrtil : CFLAGS = $(CFLAGS_CORE) -O3
cfrtil : $(SOURCES) $(OBJECTS) 
	make prototypes 
	$(CC) $(CFLAGS) vm/*.o primitives/*.o vm/compiler/*.o -o cfrtil

debug : cfrtil-gdb

proto: 
	touch includes/defines.h
	make prototypes
	ctags -R --c++-types=+px --excmd=pattern --exclude=Makefile --exclude=. /home/dennisj/projects/workspace/cfrtil

optimize : cfrtil

cleanCfrtil : clean cfrtil

cleanCfrtil-gdb : clean cfrtil-gdb

clean : proto
	make

cleaned : 
	make _cfrtil
	make cfrtil-gdb
	
realClean : _clean
	rm *.*~ vm/*.*~ vm/compiler/*.*~ primitives/*.*~ includes/*.*~ 
	rm cfrtil cfrtil-gdb

eclipse :
	cp *.cft ~/projects/workspace/cfrtil-20090620/

zip :
	cp -rpu ../cfrtil/* ../backup/
	zip  cfrtil.zip vm/*.[chfst]* vm/compiler/*.[chf] primitives/*.[chf] includes/*.[chf] *.txt *.cft Makefile m r
	cp *.zip /home/dennisj/backup
	cp *.zip /home/dennisj/Documents/backup/
	cp *.zip /home/dennisj/Programs/forth/cfrtil/backup/
	cp *.zip /home/dennisj/backup/

all : eclipse cfrtil-gdb 
	make _clean
	make cfrtil 
	make zip

_install : 
	sudo cp cfrtil /usr/local/bin
	
install : 
	make all
	make _install
	
vmcore : CFLAGS = $(CFLAGS_CORE) -O3
vmcore : 
	touch vm.c
	$(CC) $(CFLAGS) vm.c -S
	as -adhls=vm.list -o vm.o vm.s


