# SccsId = "@(#)Makefile 4.4 (TU-Delft) 04/14/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)

## and you could use this
#include $(CONFIGDIR)/M.$(HOSTNAME)

SHELL=/bin/sh

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

BIN=$(ICDPATH)/bin
LIB=$(ICDPATH)/lib
LIBINCL=$(LIB)/include
LIBPROC=$(LIB)/process

CFLAGS=$(DEBUGFLAGS) $(OCFLAGS) -D$(OSTYPE) -I$(LIBINCL)

SOURCEDIR=./SRC

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

SRC1=incl.h gdef.h extern.h ldm_lex.l ldm_parse.y cif_lex.l cif_parse.y
SRC2=main.c files.c func.c ini_mtree.c\
    man_tree.c pr_exit.c\
    proc_box.c proc_circ.c proc_cont.c proc_mc.c\
    proc_poly.c proc_sbox.c proc_term.c\
    proc_wire.c proc_swire.c write_info.c 
SRCS=$(SRC1) $(SRC2)

OBJ1=main.o
OBJ2=files.o func.o ini_mtree.o\
    man_tree.o pr_exit.o\
    proc_box.o proc_circ.o proc_cont.o proc_mc.o\
    proc_poly.o proc_sbox.o proc_term.o\
    proc_wire.o proc_swire.o write_info.o
OBJ3=ldm_parse.o
OBJ4=cif_parse.o
LOBJS=$(OBJ1) $(OBJ2) $(OBJ3)
COBJS=$(OBJ1) $(OBJ2) $(OBJ4)
OBJS=$(OBJ1) $(OBJ2) $(OBJ3) $(OBJ4)

all:	cldm ccif

All:	cldm ccif putcif

ese: putcif

cldm: always 
	rm -f main.o proc_term.o
	$(MAKE) OCFLAGS="$(OCFLAGS) -DCLDM" ICDPATH=$(ICDPATH) OSTYPE=$(OSTYPE) \
	DMLIB="$(DMLIB)" LDFLAGS="$(LDFLAGS)" OLIBS="$(OLIBS)" FMTLIBS="$(FMTLIBS)" \
	CC="$(CC)" _cldm

ccif: always
	rm -f main.o proc_term.o
	$(MAKE) OCFLAGS="$(OCFLAGS) -UCLDM" ICDPATH=$(ICDPATH) OSTYPE=$(OSTYPE) \
	DMLIB="$(DMLIB)" LDFLAGS="$(LDFLAGS)" OLIBS="$(OLIBS)" FMTLIBS="$(FMTLIBS)" \
	CC="$(CC)" _ccif

putcif: always
	rm -f main.o proc_term.o
	$(MAKE) OCFLAGS="$(OCFLAGS) -UCLDM -DESE" ICDPATH=$(ICDPATH) OSTYPE=$(OSTYPE) \
	DMLIB="$(DMLIB)" LDFLAGS="$(LDFLAGS)" OLIBS="$(OLIBS)" FMTLIBS="$(FMTLIBS)" ESELIB="$(ESELIB)" _putcif

_cldm:	$(LOBJS)
	$(CC) $(LDFLAGS) $(CFLAGS) $(LOBJS) $(FMTLIBS) $(DMLIB) $(OLIBS) -o cldm

_ccif:	$(COBJS)
	$(CC) $(LDFLAGS) $(CFLAGS) $(COBJS) $(FMTLIBS) $(DMLIB) $(OLIBS) -o ccif

_putcif: $(COBJS)
	$(CC) $(LDFLAGS) $(CFLAGS) $(COBJS) $(FMTLIBS) $(DMLIB) $(ESELIB) $(OLIBS) -o putcif

install: cldm ccif
	cp cldm $(BIN) && rm cldm
	cp ccif $(BIN) && rm ccif

eseinstall: putcif
	cp putcif $(BIN) && rm putcif

clean:
	rm -f lex.src ldm_parse.c ciflex.src cif_parse.c $(OBJS) cldm ccif core LINT putcif

always:

LINT: $(SRCS) lex.src ldm_parse.c
	lint $(CFLAGS) ldm_parse.c $(SRC2) > LINT

$(OBJ1): incl.h gdef.h
$(OBJ2): incl.h extern.h

ldm_parse.o: lex.src ldm_parse.c
lex.src: ldm_lex.l
	$(LEX) ldm_lex.l
	mv lex.yy.c lex.src
ldm_parse.c: ldm_parse.y
	$(YACC) ldm_parse.y 
	mv y.tab.c ldm_parse.c

cif_parse.o: ciflex.src cif_parse.c
ciflex.src: cif_lex.l
	$(LEX) cif_lex.l
	mv lex.yy.c ciflex.src
cif_parse.c: cif_parse.y
	$(YACC) cif_parse.y 
	mv y.tab.c cif_parse.c

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