# SccsId = "@(#)Makefile 4.13 (TU-Delft) 02/25/92"
########################################################################
## the env vars
## CACDSRCHOME	path to cacdsrc home
## NELSISHOME	path to nelsis home
## ARCHITECTURE
## HOSTNAME
## defined automagically
## IF etdisrc entered correctly e.g set home=~cacdsrc;newgrp etdisrc

## ARCHITECTURE DEPENDENT DEFINES ############################################
CONFIGDIR=$(CACDSRCHOME)/CONFIG
include $(CONFIGDIR)/M.$(ARCHITECTURE)

SHELL=/bin/sh

#ESE=-DESE
#ICDPATH        =       $(NELSISHOME)
ICDPATH         =       $(CACDSRCHOME)/DEVWSPC/$(ARCHITECTURE)
#ICDPATH=/usr0/cacd
LDFLAGS=
OLIBS = -ll

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

#OCFLAGS= -DNCF_RELEASE=300 -DEXPDATE=9110
CFLAGS=$(OCFLAGS) -DSLS -D$(OSTYPE) -DLIBPROC=\"$(LIBPROC)\" $(ESE) -I$(LIBINCL)
DMLIB=$(LIB)/libddm.a
ESELIB=$(LIB)/libese.a

# NOTE: The files bsearch.c deb.c find.c hiername.c monit.c and vfunc.c
#       are equal for the expander and the simulator,
#       and the include files gntype.h and gndefine.h must
#       always exactly be equal for the expander and the simulator

SRCL= cmd_l.c procp_l.c
SRCY= cmd_y.c procp_y.c

SRCE1= gndefine.h gntype.h
SRCE2= bsearch.c deb.c find.c hiername.c monit.c vfunc.c
SRCE= $(SRCE1) $(SRCE2)

SRCFH= func.h

SRC1= define.h type.h extern.h
SRC2= binfil.c chargesh.c zdeffunc.c dissip.c evalf.c\
	evalv.c eventl.c findhdum.c futil.c getcmd.c getsig.c\
	initmode.c intrup.c main.c plot.c prsignal.c procpar.c\
	resdiv.c resfile.c simul.c slserr.c timing.c
SRC3= cmd_l.l cmd_y.y procp_l.l procp_y.y
SRCS= $(SRCFH) $(SRC1) $(SRC2) $(SRC3)

OBJ2= binfil.o chargesh.o deb.o zdeffunc.o dissip.o evalf.o\
	evalv.o eventl.o find.o findhdum.o futil.o getcmd.o getsig.o\
	hiername.o initmode.o intrup.o main.o plot.o prsignal.o procpar.o\
	resdiv.o resfile.o simul.o slserr.o timing.o vfunc.o
OBJ3= cmd_y.o procp_y.o
OBJ4= bsearch.o monit.o
OBJS= $(OBJ2) $(OBJ3) $(OBJ4)

TARGET = sls

$(TARGET): $(OBJS)
	$(CC) $(LDFLAGS) $(CFLAGS) $(OBJS) $(DMLIB) $(OLIBS) -o $@

ESETARGET = esesls

$(ESETARGET): $(OBJS)
	$(CC) $(LDFLAGS) $(CFLAGS) $(OBJS) $(DMLIB) $(ESELIB) $(OLIBS) -o $@

ese: $(ESETARGET)

eseinstall: $(ESETARGET)
	cp $(ESETARGET) $(BIN)/sls
	rm $(ESETARGET)
	$(CC) -c $(CFLAGS) -DFUNCSLS main.c
	$(CC) -c $(CFLAGS) evalf.c
	/bin/rm -rf $(LIB)/sls
	mkdir $(LIB)/sls
	$(LD) -r [a-y]*.o $(LLIB) $(DMLIB) $(ESELIB) $(LIB)/libfunc.a -lcurses \
	      $(OLIBS) -o $(LIB)/sls/sls.o
	cp $(SRCE1) $(LIB)/sls
	cp $(SRCFH) $(LIB)/sls
	/bin/rm -f main.o
	/bin/rm -f evalf.o

install: $(TARGET)
	cp $(TARGET) $(BIN)
	rm $(TARGET)
	$(CC) -c $(CFLAGS) main.c
	$(CC) -c $(CFLAGS) evalf.c
	/bin/rm -rf $(LIB)/sls
	mkdir $(LIB)/sls
	ld -r [a-y]*.o -o $(LIB)/sls/sls.o
	cp $(SRCE1) $(LIB)/sls
	cp $(SRCFH) $(LIB)/sls
	/bin/rm -f main.o
	/bin/rm -f evalf.o

clean:
	/bin/rm -f $(OBJS) core $(TARGET) LINT y.tab.c lex.yy.c $(SRCL) $(SRCY)

LINT: $(SRC2) $(SRC3) $(SRCE2)
	lint $(CFLAGS) $(SRC2) $(SRC3) $(SRCE2) > LINT

cmd_y.o: cmd_l.c cmd_y.c
cmd_l.c: cmd_l.l
	$(LEX) cmd_l.l
	sed -e "s/yy/yy0/g" -e "s/yy0wrap/yywrap/g" lex.yy.c > cmd_l.c
	rm lex.yy.c
cmd_y.c: cmd_y.y
	$(YACC) cmd_y.y
	sed -e "s/yy/yy0/g" -e "s/yy00/yy0/g" y.tab.c > cmd_y.c
	rm y.tab.c

procp_y.o: procp_l.c procp_y.c
procp_l.c: procp_l.l
	$(LEX) procp_l.l
	sed -e "s/yy/yy1/g" -e "s/yy1wrap/yywrap/g" lex.yy.c > procp_l.c
	rm lex.yy.c
procp_y.c: procp_y.y
	$(YACC) procp_y.y
	sed -e "s/yy/yy1/g" -e "s/yy11/yy1/g" y.tab.c > procp_y.c
	rm y.tab.c

$(OBJ2): $(SRC1) $(SRCE1)

$(OBJ3): $(SRC1) $(SRCE1)

$(SRCE):
	ln -s ../sls_exp/$@ $@

$(SRCS):
	-@if [ ! -h $@ ]; then \
	    ln -f -s $(SOURCEDIR)/$@ .; \
	fi; \
	cd $(SOURCEDIR) ; \
	if [ ! -f $@ ]; then \
	    get -s SCCS/s.$@; \
	fi;
#EOF
