# SccsId = "%Z%%M% %I% (%Q%) %G%"
########################################################################
VPATH=../..
SHELL=/bin/sh

#ICDPATH        =       $(NELSISHOME)
ICDPATH         =       $(CACDSRCHOME)/DEVWSPC/$(ARCHITECTURE)

LEX = flex
LEXCOMPATIBLE = flex -l
YACC = bison -y
CC = gcc
CXX = g++

BIN= $(ICDPATH)/bin/$(MACHINE)
LIB= $(ICDPATH)/lib/$(MACHINE)
LIBPROC= $(ICDPATH)/lib/process
LIBINCL= $(ICDPATH)/lib/include
# ESE = -DESE

DFLAGS= -D$(OSTYPE) 
IFLAGS= -I$(LIBINCL)
CFLAGS= $(OCFLAGS) $(DFLAGS) $(ESE) $(IFLAGS) $(DEBUGFLAGS)
OLIBS= -ll -lm
YFLAGS= -d

DMLIB= $(LIB)/libddm.a 
ESELIB=$(LIB)/libese.a
FMTLIBS=$(LIB)/libcirfmt.a

TARGET=sls_mkdb
TARGETB=putspice
TARGETNAME=csls
TARGETNAMEB=cspice
ESETARGET=eseputsls
ESETARGETB=eseputspice

SRCL= lex.l spilex.l
SRCY= parse.y spipar.y
SRC0= class.h dict.h mkdbincl.h mkdbdefs.h netelem.h ntwdefs.h odb.h\
      queue.h slserr.h stack.h xelem.h sys_incl.h
SRC1= sig_init.c dbopen.c dbaccess.c \
      main.c neteqv.c init_ntw.c class.c simple.c\
      end_ntw.c to_db.c slserr.c util.c bifunc.c dffunc.c
SRC2= diction.c queue.c stack.c ntwdefs.c netelem.c xelem.c
SRCS= $(SRCL) $(SRCY) $(SRC0) $(SRC1) $(SRC2)

OBJL= lex.o 
OBJY= parse.o 
OBJLB= spilex.o
OBJYB= spipar.o

OBJ1= sig_init.o dbopen.o dbaccess.o \
      neteqv.o init_ntw.o class.o simple.o \
      end_ntw.o to_db.o slserr.o util.o bifunc.o dffunc.o
OBJS= $(OBJL) $(OBJY) $(OBJ1) main.o
OBJSB= $(OBJLB) $(OBJYB) $(OBJ1) mainspc.o

default all: $(TARGET) $(TARGETB)

$(TARGET): $(OBJS)
	$(LDXX) $(LDFLAGS) $(CFLAGS) $(OBJS) $(FMTLIBS) $(DMLIB) \
	   $(OLIBS) -o $(TARGET)
	chmod 755 $(TARGET)
	rm -f tmp

$(TARGETB): $(OBJSB)
	$(LDXX) $(LDFLAGS) $(CFLAGS) $(OBJSB) $(FMTLIBS) $(DMLIB) \
	   $(OLIBS) -o $(TARGETB)
	chmod 755 $(TARGETB)
	rm -f tmp

$(ESETARGET): $(OBJS)
	$(CXX) $(LDFLAGS) $(CFLAGS) $(OBJS) $(FMTLIBS) $(DMLIB) \
	   $(ESELIB) $(OLIBS) -o $@
	chmod 755 $@
	rm -f tmp

$(ESETARGETB): $(OBJSB)
	$(CXX) $(LDFLAGS) $(CFLAGS) $(OBJSB) $(FMTLIBS) $(DMLIB) \
	   $(ESELIB) $(OLIBS) -o $@
	chmod 755 $@
	rm -f tmp

csrc: 

ese: $(ESETARGET) $(ESETARGETB)

lex.c: ../../lex.l
	$(LEX) -t $< > $@

spilex.c: ../../spilex.l
	$(LEX) -t $< > $@

lex.o: parse.c

spilex.o: spipar.c

parse.o: parse.c

spipar.o: spipar.c

parse.c: ../../parse.y
	$(YACC) $(YFLAGS) $<
	mv y.tab.c parse.c
	mv y.tab.h parse.h

spipar.c: ../../spipar.y
	$(YACC) $(YFLAGS) $<
	mv y.tab.c spipar.c
	mv y.tab.h spipar.h

install: $(TARGET) $(TARGETB)
	cp $(TARGET) $(BIN)/$(TARGETNAME); rm -f $(TARGET)
	cd $(BIN) ; rm -f $(TARGET) ; ln -s $(TARGETNAME) $(TARGET)
	cp $(TARGETB) $(BIN)/$(TARGETNAMEB); rm -f $(TARGETB)
	cd $(BIN) ; rm -f $(TARGETB) ; ln -s $(TARGETNAMEB) $(TARGETB)

eseinstall: $(ESETARGET) $(ESETARGETB)
	cp $(ESETARGET) $(BIN)/putsls; rm -f $(ESETARGET)
	cp $(ESETARGETB) $(BIN)/putspice; rm -f $(ESETARGETB)

doTouch:

clean:
	/bin/rm -f $(OBJS) $(OBJLB) $(OBJYB) mainspc.o $(TARGET) \
	parse.c spipar.c core tmp y.tab.c lex.yy.c

LINT: $(SRC0) $(CSRCS)
	lint $(CFLAGS) $(CSRCS) > LINT

$(OBJS): $(SRC0)

$(OBJSB): $(SRC0)

class.o: $(SRC0) $(SRC2)

mainspc.o: ../../main.c
	$(CXX) $(CFLAGS) -DSPICE -c -o $@ $<

$(SRCS):
	-@[ $(TESTLINK) $@ ] || ln -s $(SOURCEDIR)/$@ .; \
	cd $(SOURCEDIR) ; [ -f $@ ] || get -s SCCS/s.$@;

.c.o:
	$(CXX) -c -I. -I../.. $(CFLAGS) $<

#EOF
