#
#	The Berkeley Packet Filter Traffic collector.
#
#	Copyleft (c) 2001 Grumbler <g@grumbler.org>
#
#	Copyright (c) 1999 RISS-Telecom Networking Center
#
#	Copyright (c) 1993-1996 The CAD lab of the
#	Siberian State Academy of Telecommunication.
#
#	BPFT $Id: Makefile,v 1.9 2004/02/25 19:54:25 stas_degteff Exp $
#
#	Main Makefile. Build everything in directories...
#
#


PREFIX?=/usr/local

# Man pages prefix
PREFIX_MANPAGES=${PREFIX}/man/man
PREFIX_CATMANPAGES=${PREFIX}/man/cat

# Path to local startup directory (rc.d)
PATH_LOCAL_STARTUP_DIR=${PREFIX}/etc/rc.d

# Target directory for install execution files.
PATH_BINDIR=${PREFIX}/bin

# Target directory for install execution daemons files.
PATH_SBINDIR=${PREFIX}/sbin

# Trailing slash directory, summary traffic log files will be put there.
PATH_TOSAVE=/usr/local/var/trafd/

# Full pathname where locate trafstat program.
PATH_TRAFSTAT=${PREFIX}/bin/trafstat

# Where locate trafstatd log file, if you want log then file must exist.
PATH_TRAFSTAT_LOG=/var/log/trafstat.log

# File with user defined descriptions of the traflog output format.
PATH_TRAFLOG_FMT=${PREFIX}/etc/traflog.format

MANPAGES_1 = traflog trafstat
MANPAGES_8 = trafstatd trafd

# Only group wheel can execute binary files.
SHELL	= /bin/sh
MODE	= 750
DATA_MODE = 644
DIR_MODE = 750
GROUP	= wheel

# This options intended for BSD/OS V2.
CC	?= gcc
#FLAGS	= -O2
DEFINE	= -DRETSIGTYPE=void -DRETSIGVAL=
#DEFINE += -DHAVE_FCNTL_H=1
#DEFINE += -DHAVE_MEMORY_H=1
#DEFINE += -DHAVE_MALLOC_H=1

LDFLAGS	= -L../lib -lbpft -lpcap -lcurses -ltermcap -ll -static

INCLUDE	= -I../include
CFLAGS	+= ${INCLUDE} ${DEFINE} \
	-DPATH_TOSAVE=\"${PATH_TOSAVE}\"\
	-DPATH_TRAFSTAT=\"${PATH_TRAFSTAT}\"\
	-DPATH_TRAFSTAT_LOG=\"${PATH_TRAFSTAT_LOG}\"\
	-DPATH_TRAFLOG_FMT=\"${PATH_TRAFLOG_FMT}\"
DEPFLAGS= ${INCLUDE} ${DEFINE}
ARFLAGS	= rc
SUBDIR	= lib trafd trafstat trafstatd traflog
PROGRAMS = trafd trafstat trafstatd traflog

INSTALL_PROGRAM = install -c -o root -g ${GROUP} -m ${MODE}
INSTALL_SCRIPT  = install -c -o root -g ${GROUP} -m ${MODE}
INSTALL_FILE    = install -c -o root -g ${GROUP} -m ${DATA_MODE}
INSTALL_DIRECTORY = install -d -o root -g ${GROUP} -m ${DIR_MODE}

all:
	@for i in ${SUBDIR}; do \
		( cd $$i; \
			echo "===> Build in $$i <==="; \
			${MAKE} CC=${CC} CFLAGS='${CFLAGS}' ARFLAGS=${ARFLAGS} LDFLAGS='${LDFLAGS}' \
			); \
	done
	@echo
	@echo "Before install programs read the 'Whatsnew' file please!
	@echo
	@echo "Done."


install: all
	${INSTALL_PROGRAM} trafd/trafd ${PATH_SBINDIR}
	${INSTALL_SCRIPT} trafd/trafstart ${PATH_BINDIR}
	${INSTALL_SCRIPT} trafd/trafstop ${PATH_BINDIR}
	${INSTALL_SCRIPT} trafd/trafsave ${PATH_BINDIR}
	${INSTALL_SCRIPT} trafd/trafdump ${PATH_BINDIR}
	${INSTALL_SCRIPT} trafd/trafd.sh ${PATH_LOCAL_STARTUP_DIR}
	${INSTALL_PROGRAM} trafstat/trafstat ${PATH_BINDIR}
	${INSTALL_PROGRAM} trafstatd/trafstatd ${PATH_SBINDIR}
	${INSTALL_PROGRAM} traflog/traflog ${PATH_BINDIR}
	${INSTALL_FILE} traflog/traflog.format ${PATH_TRAFLOG_FMT}
	${INSTALL_DIRECTORY} ${PATH_TOSAVE}
	@echo Install man pages:
	@-for iii in ${MANPAGES_1}; do echo ${PREFIX_MANPAGES}1/$${iii}.1 ; gzip <$${iii}/$${iii}.1 >$${iii}/$${iii}.1.gz ; ${INSTALL_FILE} $${iii}/$${iii}.1.gz ${PREFIX_MANPAGES}1 ; done
	@-for iii in ${MANPAGES_8}; do echo ${PREFIX_MANPAGES}8/$${iii}.8 ; gzip <$${iii}/$${iii}.8 >$${iii}/$${iii}.8.gz ; ${INSTALL_FILE} $${iii}/$${iii}.8.gz ${PREFIX_MANPAGES}8 ; done
	@echo Done.

clean:
	@for i in ${SUBDIR}; do \
		( cd $$i; ${MAKE} clean ); \
	done
	@echo "Done."

distclean:
	@for i in ${SUBDIR}; do \
		( echo Distclean in $$i; cd $$i; ${MAKE} distclean ); \
	done
	@echo "Done."

depend:
	@for i in ${SUBDIR}; do \
		( cd $$i; ${MAKE} DEPFLAGS='${DEPFLAGS}' depend	); \
	done
	@echo "Done."

uninstall:
	@echo Remove BPFT from ${PATH_BINDIR}
	@-if [ -f ${PATH_SBINDIR}/trafd ] ; then rm ${PATH_SBINDIR}/trafd ; fi
	@-if [ -f ${PATH_BINDIR}/trafstart ] ; then rm ${PATH_BINDIR}/trafstart ; fi
	@-if [ -f ${PATH_BINDIR}/trafstop ] ; then rm ${PATH_BINDIR}/trafstop ; fi
	@-if [ -f ${PATH_BINDIR}/trafsave ] ; then rm ${PATH_BINDIR}/trafsave ; fi
	@-if [ -f ${PATH_BINDIR}/trafdump ] ; then rm ${PATH_BINDIR}/trafdump ; fi
	@-if [ -f ${PATH_BINDIR}/trafstat ] ; then rm ${PATH_BINDIR}/trafstat ; fi
	@-if [ -f ${PATH_SBINDIR}/trafstatd ] ; then rm ${PATH_SBINDIR}/trafstatd ; fi
	@-if [ -f ${PATH_BINDIR}/traflog ] ; then rm ${PATH_BINDIR}/traflog ; fi
	@echo Remove BPFT man pages
	@-for iii in ${MANPAGES_1}; do rm ${PREFIX_MANPAGES}1/$${iii}.1.gz ; rm ${PREFIX_CATMANPAGES}1/$${iii}.1.gz ; done
	@-for iii in ${MANPAGES_8}; do rm ${PREFIX_MANPAGES}8/$${iii}.8.gz ; rm ${PREFIX_CATMANPAGES}8/$${iii}.8.gz ; done
	@echo Remove start/stop script from \*/rc.d
	@-if [ -f ${PATH_RC_D}/trafd.sh ] ; then rm ${PATH_RC_D}/trafd.sh ; fi
	@echo Remove ${PATH_TRAFLOG_FMT}
	@-if [ -f ${PATH_TRAFLOG_FMT} ] ; then rm ${PATH_TRAFLOG_FMT} ; fi
	@echo Remove traffic save files \& directory \(if not empty\)
	@-rm ${PATH_TOSAVE}trafd.*
	@-if [ -d ${PATH_TOSAVE} ] ; then rm -d ${PATH_TOSAVE} ; fi
#	@ echo Remove log files
	@-chat ABORT no "" "Remove log files?(yes/no)\n" "yes\n"; if [ -f ${PATH_TRAFSTAT_LOG} -a ! $${?} ] ; then rm ${PATH_TRAFSTAT_LOG} ; fi
	@echo Done.

