
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/io.o primitives/token.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/memory.o\
	vm/compiler/quotations.o vm/compiler/combinators.o\
	vm/compiler/quotations.o vm/compiler/stack.o
#	primitives/branchConditionals.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/io.c primitives/token.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/memory.c\
	vm/compiler/quotations.c vm/compiler/combinators.c\
	vm/compiler/quotations.c vm/compiler/stack.c
#	primitives/branchConditionals.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
# suffix for zip files
suffix = *.[cfht^~]

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 $(OBJECTS) 
	$(CC) $(CFLAGS) vm/*.o primitives/*.o vm/compiler/*.o -o cfrtil-gdb

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

cfrtil : cfrtil-gdb
	make _clean
	make _cfrtil
	
debug : cfrtil-gdb
	make kde

ctags :
	ctags -R --c++-types=+px --excmd=pattern --exclude=Makefile --exclude=. /home/dennisj/projects/workspace/cfrtil

proto: 
	touch includes/defines.h
	make prototypes

optimize : cfrtil

cleanCfrtil : clean cfrtil

cleanCfrtil-gdb : clean cfrtil-gdb

clean : proto
	make

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

realClean : _clean editorClean
	rm cfrtil cfrtil-gdb

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

zip :
	cp -rp ../cfrtil/* ../backup/
	zip  cfrtil.zip vm/$(suffix) vm/compiler/$(suffix) primitives/$(suffix) includes/$(suffix) *.[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 : cfrtil
	make kde
	make ctags
	make zip

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


