CC		= g++
#CC		= /s/ogcc/bin/g++
#CC		= /s/std/bin/g++
#CC		= /s/insurepp-5.1/common/bin/insure
linker		= g++
#linker 	= /s/insurepp-5.1/common/bin/insure
#linker 	= /s/insurepp/alpha_dux40f/bin/ins_ld
#linker		= ld
#linker		= /s/std/bin/g++
#CFLAGS		=  -g -W -Wall -O1 -DYYDEBUG=1
CFLAGS		=  -static -O1
LKFLAGS		=  -g

CROWBAR_SRCS		= scanner.cc interface.cc block_array.cc blocks.cc \
				cell.cc primitives.cc custom.cc signal.cc
CROWBAR_INCLUDES	= interface.h block_array.h blocks.h cell.h \
				primitives.h custom.h signal.h

CROWBAR_OBJS        	= sim-crowbar.o interface.o block_array.o blocks.o \
				cell.o primitives.o custom.o signal.o

LIBRARIES		= -ll

#LEX		= /usr/bin/lex
LEX            = /s/std/bin/flex
LFLAGS		=   -i -I

sim-crowbar: $(CROWBAR_OBJS) $(CROWBAR_INCLUDES) 
	$(linker) $(LKFLAGS) -o sim-crowbar $(CROWBAR_OBJS) $(LIBRARIES)

sim-crowbar.o: scanner.cc interface.h
	$(CC) $(CFLAGS) -c scanner.cc -o sim-crowbar.o

scanner.cc: scanner.l interface.h
	$(LEX) $(LFLAGS) -oscanner.cc scanner.l

interface.o: interface.cc interface.h block_array.h signal.h
	$(CC) $(CFLAGS) -c interface.cc -o interface.o

block_array.o: block_array.cc block_array.h blocks.h signal.h
	$(CC) $(CFLAGS) -c block_array.cc -o block_array.o

blocks.o: blocks.cc blocks.h cell.h signal.h
	$(CC) $(CFLAGS) -c blocks.cc -o blocks.o

cell.o: cell.cc cell.h primitives.h custom.h signal.h
	$(CC) $(CFLAGS) -c cell.cc -o cell.o

custom.o: custom.cc custom.h signal.h
	$(CC) $(CFLAGS) -c custom.cc -o custom.o

primitives.o: primitives.cc primitives.h signal.h
	$(CC) $(CFLAGS) -c primitives.cc -o primitives.o

signal.o: signal.cc signal.h
	$(CC) $(CFLAGS) -c signal.cc -o signal.o

clean:
	rm -f $(CROWBAR_OBJS) scanner.cc sim-crowbar core *pure*

