#
# Makefile for making tcplib and tcplibgen.  See tcplibgen(1)
# for documentation.
#
# @(#) $Id: Makefile,v 1.1 1995/07/29 03:28:40 slm Exp $ (USC)
#

# 
# RCS labels and logs are specific to the University of Arizona 
# x-kernel project.
#
# $Log: Makefile,v $
# Revision 1.1  1995/07/29  03:28:40  slm
# Initial revision
#
# Revision 1.2  1994/11/22  20:45:52  hkaram
# Changed VPATH, includes, misc changes.
#
# Revision 1.1  1994/11/16  17:40:45  hkaram
# Initial revision
#

.SUFFIXES: .h .tc

VPATH = .:..:../../include

DATADIR = data
CC = gcc
CFLAGS = -O -I. -I.. -I../../include

AR    =ar
SHELL = /bin/sh


LIB = libtcp.a
TCPLIBAPI = tcpapps.h
TCPLIBGEN = COPYRIGHT tcplibgenh tcplibgenc $(TCPLIBAPI)

OBJS = tcplib.o tcplibutils.o telnet.o ftp.o nntp.o smtp.o phone.o brkdn_dist.o distributions.o
APPHDR = telnet.h ftp.h nntp.h smtp.h phone.h
APPSRC = telnet.c ftp.c nntp.c smtp.c phone.c

tcplib: $(LIB)
	touch tcplib

tcplibgen: tcplibgenh tcplibgenc

tcplibtest: tcplibtest.o $(LIB)
	$(CC) -o $@ $(CFLAGS) tcplibtest.o $(LIB) -lm

#
# The source library
#
$(LIB): $(OBJS)
	$(AR) rcv $@ $?
	$(RANLIB) $@

#
# The traffic characteristic generator
# and the api generator.
#
tcplibgenh: tcplibgen.h tcplib.h tcplibgenh.o tcplibutils.o
	rm -f $(APPHDR)
	$(CC) -o $@ $(CFLAGS) tcplibgenh.o tcplibutils.o

tcplibgenc: tcplibgen.h tcplib.h tcplibgenc.o tcplibutils.o
	rm -f $(APPSRC)
	cp COPYRIGHT $(TCPLIBAPI)
	chmod +w $(TCPLIBAPI)
	$(CC) -o $@ $(CFLAGS) tcplibgenc.o tcplibutils.o

breakdown: breakdown.c
	$(CC) $(CFLAGS) -o breakdown $< -lm

clean:
	-rm -f *.o $(APPSRC) $(APPHDR) $(LIB) tcplib breakdown tcplibgenh tcplibgenc $(TCPLIBAPI) app_brkdn.h

#
# The traffic characteristics per application.
#
brkdn_dist.o: brkdn_dist.c $(DATADIR)/breakdown brkdn_dist.h breakdown distributions.h
	cp COPYRIGHT app_brkdn.h
	chmod +w app_brkdn.h
	breakdown
	$(CC) $(CFLAGS) -c $<

telnet.o:  telnet.tc $(TCPLIBGEN) telnet.h telnet.c
	$(CC) $(CFLAGS) -c $*.c

ftp.o: ftp.tc $(TCPLIBGEN) ftp.h ftp.c
	$(CC) $(CFLAGS) -c $*.c

smtp.o: smtp.tc $(TCPLIBGEN) smtp.h smtp.c
	$(CC) $(CFLAGS) -c $*.c

nntp.o: nntp.tc $(TCPLIBGEN) nntp.h nntp.c
	$(CC) $(CFLAGS) -c $*.c

phone.o: phone.tc $(TCPLIBGEN) phone.h phone.c
	$(CC) $(CFLAGS) -c $*.c

#
# The dependency rules for the generators.
#
.tc.h: 
	cp COPYRIGHT $*.h
	chmod +w $*.h
	tcplibgenh $*

.tc.c:
	cp COPYRIGHT $*.c
	chmod +w $*.c
	tcplibgenc $*

xksetup:
	ln -s ../Makefile .
	ln -s ../COPYRIGHT .
	ln -s ../data .
	ln -s ../*.tc .
