
# tcptb makefile
#
# Mark Allman (mallman@icir.org)

V=0.4.1
VERSION=tcptb-$(V)
SVERSION=\"$(VERSION)\"

CC=gcc
INC=-Ilib/include
CFLAGS=-g -Wall -Werror $(INC) $(OTHER)
LD=gcc
LDFLAGS=$(CFLAGS)
LIBS=-lpcap
TOOL_LIBS=-L. -ltcptb
TOOL_INC=-Ilib/include

TBHDR=lib/include/tcptb.h
TBINT=lib/include/tcptb-int.h
TCPTB_OBJS=api.o cnn_db.o cnn_iterator.o cnn_stats.o error.o process.o \
	read.o tmalloc.o tv.o util.o

all: libtcptb.a tcpsum tcptsg # tester ds nicr cpair

## libtcptb

libtcptb.a: $(TCPTB_OBJS)
	ar -r libtcptb.a $(TCPTB_OBJS)
	ranlib libtcptb.a

api.o: lib/api.c $(TBHDR) $(TBINT)
	$(CC) $(CFLAGS) -DTCPTB_VERSION=$(SVERSION) -c lib/api.c

cnn_db.o: lib/cnn_db.c $(TBHDR) $(TBINT)
	$(CC) $(CFLAGS) -c lib/cnn_db.c

cnn_iterator.o: lib/cnn_iterator.c $(TBHDR)
	$(CC) $(CFLAGS) -c lib/cnn_iterator.c

cnn_stats.o: lib/cnn_stats.c $(TBHDR)
	$(CC) $(CFLAGS) -c lib/cnn_stats.c

error.o: lib/error.c $(TBHDR) $(TBINT)
	$(CC) $(CFLAGS) -c lib/error.c

process.o: lib/process.c $(TBHDR) $(TBINT)
	$(CC) $(CFLAGS) -c lib/process.c

read.o: lib/read.c $(TBHDR) $(TBINT)
	$(CC) $(CFLAGS) -c lib/read.c

tmalloc.o: lib/tmalloc.c
	$(CC) $(CFLAGS) -c lib/tmalloc.c

tv.o: lib/tv.c
	$(CC) $(CFLAGS) -c lib/tv.c

util.o: lib/util.c $(TBHDR)
	$(CC) $(CFLAGS) -c lib/util.c

## cpair

cpair: libtcptb.a cpair.o
	$(CC) $(CFLAGS) -o cpair cpair.o $(TOOL_LIBS) $(LIBS) -lm

cpair.o: tools/cpair/cpair.c tools/cpair/cpair.h $(TBHDR)
	$(CC) $(CFLAGS) $(TOOLS_INC) -Itools/cpair -c tools/cpair/cpair.c

## nimi data cruncher

nicr: libtcptb.a nicr.o
	$(CC) $(CFLAGS) -o nicr nicr.o $(TOOL_LIBS) $(LIBS) -lm

nicr.o: tools/nimi_cruncher/nicr.c tools/nimi_cruncher/nicr.h $(TBHDR)
	$(CC) $(CFLAGS) $(TOOL_INC) -c tools/nimi_cruncher/nicr.c

## data sucker

ds: libtcptb.a ds.o
	$(CC) $(CFLAGS) -o ds ds.o $(TOOL_LIBS) $(LIBS) -lm

ds.o: tools/data_sucker/ds.c $(TBHDR)
	$(CC) $(CFLAGS) $(TOOL_INC) -c tools/data_sucker/ds.c

## tcpsum

tcpsum: libtcptb.a tcpsum.o
	$(CC) $(CFLAGS) -o tcpsum tcpsum.o $(TOOL_LIBS) $(LIBS)

tcpsum.o: tools/tcpsum/tcpsum.c $(TBHDR)
	$(CC) $(CFLAGS) $(TOOL_INC) -c tools/tcpsum/tcpsum.c

## tcptsg

tcptsg:
	cd tools/tcptsg; $(MAKE); cd ../..
	cp tools/tcptsg/tcptsg .

## tester

tester: libtcptb.a tester.o
	$(CC) $(CFLAGS) -o tester tester.o $(TOOL_LIBS) $(LIBS)

tester.o: tools/tester/tester.c $(TBHDR)
	$(CC) $(CFLAGS) $(TOOL_INC) -c tools/tester/tester.c

## misc

clean:
	rm -f *.o *core core 
	rm -f y.*
	rm -f lex.yy.c parser.h

distclean: clean
	rm -f libtcptb.a tcpsum tester nicr cpair ds tcptsg
	rm -f $(VERSION).tar.gz
	cd tools/tcptsg; $(MAKE) clean; cd ../..

tar:
	cd ..; ln -s tcptb $(VERSION); tar czvf tcptb/$(VERSION).tar.gz $(VERSION)/Makefile* $(VERSION)/README $(VERSION)/HISTORY $(VERSION)/lib/*.c $(VERSION)/lib/include/*.h $(VERSION)/tools/tcpsum/*.[ch] $(VERSION)/tools/tcptsg/[Mt]*; rm $(VERSION)
