what:
	@echo
	@echo " make hardware-systype"
	@echo 
	@echo " requires"
	@echo "   zlib     ftp.cdrom.com/pub/infozip/zlib/"
	@echo "   libwrap  ftp.win.tue.nl pub/security/tcp_wrappers_7.6.tar.gz"
	@echo
	@echo "This Makefile knows about the following"
	@echo
	@echo sun4-sunos sun4-solaris i386-bsdi i386-linux i386-fbsd
	@echo

sun4-sunos:
	@make X_CFLAGS=-DNEED_MALLOC_H X_OBJS=strerror.o YLIBS="-ly -lfl -lm"\
	 all

sun4-solaris:
	@make X_CFLAGS=-DTIMELOCAL_MKTIME=1 NLIBS="-lnsl -lsocket" \
	YLIBS="-ly -ll -lm" LEX=lex all

i386-bsdi:
	@make X_CFLAGS=-DTIMELOCAL_MKTIME YLIBS="-lfl -ly" all

i386-fbsd:
	@make X_CFLAGS=-DTIMELOCAL_MKTIME YLIBS="-lfl -ly" all

i386-linux:
	@make X_CFLAGS=-DTIMELOCAL_MKTIME YLIBS="-lfl -ly" all


FL="flow-tools"
DIST=flow-tools-0.34
SHELL=/bin/sh
BINDIR=/usr/local/netflow/bin

LEX=flex
CC=gcc
INSTALL=install -c -m0755

YACC=yacc -t -v
#YACC=bison -y

POD2MAN=pod2man
POD2HTML=pod2html
P2MFLAGS = --center="OSU FLOW TOOLS" --date="2000-04-26"


#CFLAGS = -g -DPOSIX_SIGNALS -DDEBUG -DLIBWRAP -I/usr/local/include -L/usr/local/lib 
CFLAGS = -O2 -funroll-all-loops -ffast-math -I/usr/local/include -L/usr/local/lib -DPOSIX_SIGNALS -DLIBWRAP

LIBS = -L. -lz 

# for tcp wrappers
LLIBS = -lwrap

.c.o:;  $(CC) $(CFLAGS) $(X_CFLAGS) $(GCC_FLAGS) -c $*.c

#GCC_FLAGS = -Wimplicit -Wreturn-type -Wunused -Wswitch -Wtrigraphs \
#	-Wformat -Wchar-subscripts -Wuninitialized -Wparentheses -Wshadow \
#	-Wpointer-arith -Wcast-qual -Wcast-align -Wwrite-strings

%.1:	%.pod
	@$(POD2MAN) $(P2MFLAGS) $< > $*.1

%.html:	%.pod
	@$(POD2HTML) $< > $*.html

lex.yy.o:	lex.yy.c y.tab.h

y.tab.c t.tab.h:	acl.y
	$(YACC) -d -v acl.y

lex.yy.c:	acl.l
	$(LEX) acl.l

dist:
	cd ..; mv $(FL) $(DIST); tar -cf $(DIST)/$(DIST).tar $(DIST)/*.c\
	$(DIST)/*.h $(DIST)/*.y \
	$(DIST)/*.l $(DIST)/flow.acl $(DIST)/Makefile $(DIST)/README* \
	$(DIST)/INSTALL \
	$(DIST)/*.pod \
	$(DIST)/asn.txt $(DIST)/asn2c; mv $(DIST) $(FL)

OBJS = flow-capture.o flow-print.o flow-stat.o flowlib.o hash_ip.o \
	hash_ip2.o flow-cat.o sym.o flow-send.o flow-receive.o flow-dscan.o \
	bit1024.o report.o fmt.o support.o prof_dump.o hash_ip_s2.o \
	hash_ip_s.o flow-stat.o flow-profile.o flow-filter.o flow-fanout.o \
	flow-export.o flow-fanout.o acl2.o flow-gen.o flow-expire.o file.o 

BINS = flow-capture flow-stat flow-print flow-cat flow-dscan flow-export \
	flow-filter flow-fanout flow-send flow-receive flow-gen flow-profile \
	flow-expire
#flow-test

MAN = flow-capture.1 flow-export.1 flow-stat.1 flow-cat.1 \
	flow-fanout.1 flow-mirror.1 flow-tools.1 flow-dscan.1 flow-filter.1 \
	flow-print.1 flow-expire.1 flow-gen.1 flow-search.1 flow-profile.1

HTML = flow-capture.html flow-export.html flow-stat.html \
	flow-cat.html flow-fanout.html flow-mirror.html flow-tools.html \
	flow-dscan.html flow-filter.html flow-print.html flow-expire.html \
	flow-gen.html flow-search.html flow-profile.html

all: ${BINS}

install:
	mkdir -p ${BINDIR}
	${INSTALL} ${BINS} flow-mirror ${BINDIR}
	@echo files installed in ${BINDIR}

clean:
	/bin/rm -f ${BINS} *.o sym_asn.c *.1 *.html

docs: $(MAN) $(HTML)

flow-capture: flow-capture.o fmt.o flowlib.o report.o file.o support.o $(X_OBJS)
	$(CC) $(CFLAGS) $(X_CFLAGS) $(GCC_FLAGS) -o flow-capture \
	flow-capture.o flowlib.o fmt.o report.o file.o support.o \
	$(X_OBJS) $(LIBS) $(NLIBS) $(LLIBS)

flow-stat: flow-stat.o flowlib.o hash_ip.o hash_ip2.o fmt.o sym.o sym_asn.o \
	support.o $(X_OBJS)
	$(CC) $(CFLAGS) $(X_CFLAGS) $(GCC_FLAGS) -o flow-stat \
	flow-stat.o flowlib.o hash_ip.o hash_ip2.o fmt.o sym.o sym_asn.o \
	support.o $(X_OBJS) $(LIBS)

flow-print: flow-print.o flowlib.o hash_ip.o hash_ip2.o fmt.o sym.o \
	sym_asn.o $(X_OBJS)
	$(CC) $(CFLAGS) $(X_CFLAGS) $(GCC_FLAGS) -o flow-print \
	flow-print.o flowlib.o hash_ip.o hash_ip2.o fmt.o sym.o sym_asn.o \
	$(X_OBJS) $(LIBS)

flow-cat: flow-cat.o flowlib.o hash_ip.o hash_ip2.o fmt.o $(X_OBJS)
	$(CC) $(CFLAGS) $(X_CFLAGS) $(GCC_FLAGS) -o flow-cat \
	flow-cat.o flowlib.o hash_ip.o hash_ip2.o fmt.o $(X_OBJS) $(LIBS)

flow-dscan: flow-dscan.o flowlib.o hash_ip.o hash_ip2.o fmt.o \
	bit1024.o support.o report.o $(X_OBJS)
	$(CC) $(CFLAGS) $(X_CFLAGS) $(GCC_FLAGS) -o flow-dscan \
	flow-dscan.o flowlib.o fmt.o bit1024.o support.o report.o \
	$(X_OBJS) $(LIBS)

flow-export: flow-export.o flowlib.o hash_ip.o hash_ip2.o fmt.o $(X_OBJS)
	$(CC) $(CFLAGS) $(X_CFLAGS) $(GCC_FLAGS) -o flow-export \
	flow-export.o flowlib.o hash_ip.o hash_ip2.o fmt.o $(X_OBJS) $(LIBS)

flow-filter: flow-filter.o flowlib.o fmt.o hash_ip.o hash_ip2.o y.tab.o \
	lex.yy.o support.o acl2.o $(X_OBJS)
	$(CC) $(CFLAGS) $(X_CFLAGS) $(GCC_FLAGS) -o flow-filter \
	flow-filter.o flowlib.o fmt.o hash_ip.o hash_ip2.o y.tab.o lex.yy.o \
	support.o acl2.o $(X_OBJS) $(LIBS) $(YLIBS)

flow-fanout: flow-fanout.o support.o $(X_OBJS)
	$(CC) $(CFLAGS) $(X_CFLAGS) $(GCC_FLAGS) -o flow-fanout \
	flow-fanout.o support.o $(X_OBJS) $(LIBS) $(NLIBS)

flow-send: flow-send.o support.o flowlib.o fmt.o $(X_OBJS)
	$(CC) $(CFLAGS) $(X_CFLAGS) $(GCC_FLAGS) -o flow-send \
	flow-send.o support.o flowlib.o fmt.o $(X_OBJS) $(LIBS) $(NLIBS)

flow-receive: flow-receive.o support.o flowlib.o fmt.o $(X_OBJS)
	$(CC) $(CFLAGS) $(X_CFLAGS) $(GCC_FLAGS) -o flow-receive \
	flow-receive.o support.o flowlib.o fmt.o \
	$(X_OBJS) $(LIBS) $(NLIBS)

flow-gen: flow-gen.o support.o flowlib.o fmt.o $(X_OBJS)
	$(CC) $(CFLAGS) $(X_CFLAGS) $(GCC_FLAGS) -o flow-gen \
	flow-gen.o support.o flowlib.o fmt.o \
	$(X_OBJS) $(LIBS)

flow-profile: flow-profile.o support.o flowlib.o fmt.o hash_ip_s.o sym.o \
	hash_ip_s2.o prof_dump.o $(X_OBJS)
	$(CC) $(CFLAGS) $(X_CFLAGS) $(GCC_FLAGS) -o flow-profile \
	flow-profile.o support.o flowlib.o fmt.o hash_ip_s.o sym.o \
	hash_ip_s2.o prof_dump.o $(X_OBJS) $(LIBS)

flow-expire: flow-expire.o support.o report.o support.o file.o $(X_OBJS)
	$(CC) $(CFLAGS) $(X_CFLAGS) $(GCC_FLAGS) -o flow-expire \
	flow-expire.o report.o support.o $(X_OBJS) file.o \
	$(LIBS) $(NLIBS)

sym_asn.c: asn.txt asn2c
	./asn2c < asn.txt > sym_asn.c

