
sbl: parse.o stack.o eval.o string.o variable.o main.o glob.o module.o debug.o ref.o hash.o data.o regexp.o
	cc -rdynamic stack.o parse.o eval.o string.o variable.o main.o glob.o module.o ref.o debug.o data.o hash.o regexp.o -osbl -lfl -lm -ldl $(DEBUG) 

tsbl: parse.o stack.o teval.o string.o variable.o main.o glob.o module.o ref.o hash.o data.o regexp.o 
	cc -rdynamic stack.o parse.o teval.o string.o variable.o main.o glob.o module.o hash.o data.o ref.o regexp.o -osbl -lfl -lm -ldl $(DEBUG) 

spp: sparse.o sym.o
	cc sparse.o sym.o -lfl -ospp $(DEBUG) $(OP)

parse.o: sbl.l token.h
	flex sbl.l
	mv lex.yy.c sbl.c
	cc sbl.c -c $(DEBUG) -oparse.o  $(OP)	

stack.o: stack.c
	cc stack.c -c $(DEBUG) -ostack.o $(OP)

eval.o: eval.c token.h
	cc eval.c -c $(DEBUG) -oeval.o $(OP)

teval.o: eval.c token.h
	cc eval.c -c $(DEBUG) -oteval.o -DSMALL $(OP)

neval.o: eval.c token.h
	cc eval.c -c $(DEBUG) -oneval.o -DLIB -DSMALL $(OP)

string.o: string.c
	cc string.c -c $(DEBUG) -ostring.o $(OP)

variable.o: variable.c
	cc variable.c -c $(DEBUG) -ovariable.o $(OP)

sparse.o: spp.l spp.h
	flex spp.l
	mv lex.yy.c sparse.c
	cc sparse.c -c $(DEBUG) -osparse.o $(OP)

sym.o: sym.c spp.h
	cc sym.c -c $(DEBUG) -osym.o $(OP)

main.o: main.c
	cc main.c -c $(DEBUG) -omain.o $(OP)

libsbl.o: libsbl.c
	cc libsbl.c -c $(DEBUG) -olibsbl.o $(OP)

glob.o: glob.c
	cc glob.c -c $(DEBUG) -oglob.o $(OP)

module.o: module.c
	cc -rdynamic module.c -c $(DEBUG) -omodule.o $(OP)

debug.o: debug.c
	cc debug.c -c $(DEBUG) -odebug.o $(OP)

ref.o: ref.c
	cc ref.c -c $(DEBUG) -oref.o $(OP)

hash.o: hash.c
	cc hash.c -c $(DEBUG) -ohash.o $(OP)

data.o: data.c
	cc data.c -c $(DEBUG) -odata.o $(OP)

regexp.o: regexp.c
	cc regexp.c -c $(DEBUG) -oregexp.o $(OP)

bitflip.o: bitflip.c
	cc bitflip.c -shared -obitflip.o
