##################################
# Common Area
SHELL = /bin/sh
PREFIX = /usr/local
INCLUDE_DIR = -I$(PREFIX)/include
BINDIR= /usr/local/bin

noentry:
	@echo "type 'make clean' followed by  'make SYSTEM' "
	@echo "with SYSTEM equal to your OS type: "
	@echo "  sunos   (SunOS)"
	@echo "  solaris (Solaris)"
	@echo "  linux   (Linux)"
	@echo "  netbsd (FreeBSD)"
	@echo "  irix    (SGI Irix)"
	@echo ""
sunos:
	$(MAKE) \
	LIBS='-lm' \
	TKLIBS='-L/usr/X11R6/lib -L${PREFIX}/lib -lX11 -ltk4.2 -ltcl7.6' \
	INCLUDES='-I. $(INCLUDE_DIR) -I/usr/X11R6/include' \
	SYSDEFS='-DSIG_T=int -DSUNOS -DMULTICAST -DERROR_TEST' \
	CC=gcc \
	all

solaris:
	$(MAKE) \
	LIBS='-ldl -lm -lnsl -lsocket' \
	TKLIBS='-L /usr/openwin/lib -L${PREFIX}/lib -lX11 -Bstatic -ltk4.2 -ltcl7.6 -Bdynamic' \
	INCLUDES='-I. $(INCLUDE_DIR) -I/usr/openwin/include' \
	SYSDEFS='-xO4 -dalign -DSIG_T=int -DSOLARIS -DMULTICAST -DERROR_TEST' \
	CC=cc \
	all

irix:
	$(MAKE) \
	LIBS='-lm' \
	TKLIBS='-L$$(PREFIX)/lib -lX11 -static -ltk4.2 -ltcl7.6' \
	INCLUDES='-I. $(INCLUDE_DIR)' \
	SYSDEFS='-DSIG_T=int -Dsgi -DMULTICAST -DERROR_TEST' \
	CC=gcc \
	all

netbsd:
	$(MAKE) \
	LIBS='-lm' \
	TKLIBS='-L$(PREFIX)/lib -L/usr/X11/lib -ltk4.2 -ltcl7.6 -lX11' \
	INCLUDES='-I. $(INCLUDE_DIR) -I/usr/X11/include' \
	SYSDEFS='-g -DSIG_T=int -DMULTICAST -DERROR_TEST' \
	CC=gcc \
	all

linux:
	$(MAKE) \
	LIBS='-lm -ldl' \
	TKLIBS='-L$(PREFIX)/lib -L/usr/X11/lib -ltk4.2 -ltcl7.6 -lX11' \
	INCLUDES='-I. $(INCLUDE_DIR) -I/usr/X11/include' \
	SYSDEFS='-g -DSIG_T=int -DMULTICAST -DERROR_TEST -DLINUX' \
	CC=gcc \
	all

##############
# common defines
INSTALL=cp
VERSION=36a1
EXECS=imm immserv mnm mdpsniff

SRCS=  imm_init.c immserv.c lscomp.c main.c mcl.c mnmserver.c \
protocol.c sorttree.c tcl2c.c tkAppInit.c utils.c xlopen.c mdpsniff.c

TCLS= Listbox.tcl filebox.tcl mcl.tcl mnmserv.tcl \
Radio.tcl imm_def.tcl mkHostname.tcl viewbox.tcl

HEADERS=immserv.h protocol.h mdpsniff.h

CFLAGS = ${SYSDEFS} 

ROBJS = protocol.o utils.o

SOBJS = protocol.o immserv.o sorttree.o utils.o

MOBJS = protocol.o mnmserver.o sorttree.o utils.o

#####################################
default: all

all: $(EXECS)


dist:	$(SRCS) $(HEADERS) $(TCLS) Makefile
	mkdir imm$(VERSION).src
	cp $(SRCS) $(HEADERS) $(TCLS) Makefile imm$(VERSION).src
	tar cf imm$(VERSION).tar imm$(VERSION).src 
	compress imm$(VERSION).tar
	rm -r imm$(VERSION).src

install: $(EXECS)
	$(INSTALL) $(EXECS) $(BINDIR)

mnm: $(ROBJS) main.o xlopen.o mcl.o
	$(CC) $(CFLAGS) main.o xlopen.o mcl.o $(ROBJS) $(LIBS) -o mnm

imm: $(ROBJS) tkAppInit.o imm_init.o imm.o xlopen_imm.o
	$(CC) $(CFLAGS) tkAppInit.o imm_init.o imm.o  xlopen_imm.o \
$(ROBJS) $(LIBS) $(TKLIBS) -o imm

immserv: $(SOBJS)
	$(CC) $(CFLAGS) $(SOBJS) $(LIBS) -o immserv

lscomp: lscomp.o protocol.o sorttree.o utils.o
	$(CC) $(CFLAGS) lscomp.o protocol.o sorttree.o utils.o $(LIBS) -o lscomp

mdpsniff: protocol.o mdpsniff.o
	$(CC) $(CFLAGS) protocol.o mdpsniff.o $(INCLUDES) $(LIBS) -o mdpsniff

clean:
	rm -f *.o tcl2c imm_init.c mdpsniff $(EXECS)

tcl2c: tcl2c.c
	$(CC) $(CFLAGS) tcl2c.c  $(LIBS) -o tcl2c

imm_init.c: tcl2c imm_def.tcl mcl.tcl Radio.tcl Listbox.tcl viewbox.tcl filebox.tcl mkHostname.tcl
	./tcl2c IMM_Init < imm_def.tcl > imm_init.c
	./tcl2c MCL < mcl.tcl >> imm_init.c
	./tcl2c RADIO < Radio.tcl >> imm_init.c
	./tcl2c LISTBOX < Listbox.tcl >> imm_init.c
	./tcl2c VIEWBOX < viewbox.tcl >> imm_init.c
	./tcl2c FILEBOX < filebox.tcl >> imm_init.c
	./tcl2c HOSTBOX < mkHostname.tcl >> imm_init.c
	./tcl2c SERVERBOX < mnmserv.tcl >> imm_init.c

imm_init.o:	imm_init.c

main.o:	main.c

mcl.o:	mcl.c

imm.o:	mcl.c
	$(CC) $(CFLAGS) -DIMM $(INCLUDES) -c mcl.c -o imm.o

xlopen_imm.o:	xlopen.c
	$(CC) $(CFLAGS) -DIMM $(INCLUDES) -c xlopen.c -o xlopen_imm.o 

tkAppInit.o:    tkAppInit.c
	$(CC) $(CFLAGS) $(INCLUDES) tkAppInit.c -c

protocol.o:   protocol.c

utils.o: utils.c

lscomp.o: lscomp.c

sorttree.o: sorttree.c immserv.h

immserv.o: immserv.c immserv.h

mdpsniff.o: mdpsniff.c protocol.o

