#
# Perro (The Internet Protocols logger)
#

#
# Modify this, if you need to and if you know what you are doing.
#

srcdir = .

prefix = /usr/local
bindir = $(prefix)/sbin
docdir = ../doc

# logdir is the directory were Perro will put his logs
logdir = /var/log/perro
mandir = $(prefix)/man/man8

MKDIR = mkdir -p

# Mode for user binaries
BINMODE=700

# Mode for the log directory
LOGDIRMODE=700

# Compiler to use
CC=gcc

# Compiler warnings
#WARNINGS= -pedantic -Wall
WARNINGS= -Wall

# Compiler flags
CCOPTS = -O2 -fomit-frame-pointer

# The makefile standards document I read says that I have to put it here...
SHELL = /bin/sh

# Clear and set suffixes 
.SUFFIXES:
.SUFFIXES: .c .o

# Install program
INSTALL = install

# Miscellaneous
PER_VERSION  = 1.0.3
RELEASEDATE  = March 2000

# Location of sed
SEDBIN  = sed

# sed command
SEDCMDS = "s/@version@/$(PER_VERSION)/g;s/@releasedate@/$(RELEASEDATE)/g;s%@logdir@%$(logdir)%g"
SEDC2   = "s%@installdir@%$(bindir)%g"

TCPOBJ   = common.o perrotcp.o
UDPOBJ   = common.o perroudp.o
ICMPOBJ  = common.o perroicmp.o
IPRETOBJ = common.o ipretperro.o

PROGRAMS = perrotcp perroudp perroicmp ipretperro
OBJS     = $(TCPOBJ) $(UDPOBJ) $(ICMPOBJ) $(IPRETOBJ)

all: $(PROGRAMS)

perrotcp: $(TCPOBJ)
	$(CC) $(CCOPTS) $(TCPOBJ) -o $@

perroudp: $(UDPOBJ)
	$(CC) $(CCOPTS) $(UDPOBJ) -o $@

perroicmp: $(ICMPOBJ)
	$(CC) $(CCOPTS) $(ICMPOBJ) -o $@

ipretperro: $(IPRETOBJ)
	$(CC) $(CCOPTS) $(IPRETOBJ) -o $@

clean:
	rm -f core defines.h $(PROGRAMS) $(OBJS)

strip:
	strip $(PROGRAMS)

install:
	@echo
	@$(MKDIR) $(bindir)
	@echo "Installing binaries..."
	@$(INSTALL) -g root -m $(BINMODE) -o root -s $(srcdir)/perrotcp $(bindir)
	@$(INSTALL) -g root -m $(BINMODE) -o root -s $(srcdir)/perroudp $(bindir)
	@$(INSTALL) -g root -m $(BINMODE) -o root -s $(srcdir)/perroicmp $(bindir)
	@$(INSTALL) -g root -m $(BINMODE) -o root -s $(srcdir)/ipretperro $(bindir)
	@$(SEDBIN) $(SEDC2) $(srcdir)/LaunchLoggers > $(bindir)/LaunchLoggers
	@chown 0.0 $(bindir)/LaunchLoggers
	@chmod $(BINMODE) $(bindir)/LaunchLoggers
	@$(INSTALL) -g root -m $(BINMODE) -o root $(srcdir)/KillLoggers $(bindir)
	@echo "Installing man pages..."
	@$(MKDIR) $(mandir)
	@$(SEDBIN) $(SEDCMDS) $(docdir)/perrotcp.8.in   > $(mandir)/perrotcp.8
	@$(SEDBIN) $(SEDCMDS) $(docdir)/perroudp.8.in   > $(mandir)/perroudp.8
	@$(SEDBIN) $(SEDCMDS) $(docdir)/perroicmp.8.in  > $(mandir)/perroicmp.8
	@$(SEDBIN) $(SEDCMDS) $(docdir)/ipretperro.8.in > $(mandir)/ipretperro.8
	@chown 0.0 $(mandir)/perrotcp.8
	@chown 0.0 $(mandir)/perroudp.8
	@chown 0.0 $(mandir)/perroicmp.8
	@chown 0.0 $(mandir)/ipretperro.8
	@$(MKDIR) $(logdir)
	@chmod $(LOGDIRMODE) $(logdir)
	@chown 0.0 $(logdir)
	@echo "Done."
	@echo

uninstall:
	rm -f $(bindir)/perrotcp
	rm -f $(bindir)/perroudp
	rm -f $(bindir)/perroicmp
	rm -f $(bindir)/ipretperro
	rm -f $(mandir)/perrotcp.8
	rm -f $(mandir)/perroudp.8
	rm -f $(mandir)/perroicmp.8
	rm -f $(mandir)/ipretperro.8
	rm -f $(bindir)/LaunchLoggers
	rm -f $(bindir)/KillLoggers
	rmdir $(logdir)

.c.o:
	$(CC) $(CCOPTS) $(WARNINGS) -c $<

$(TCPOBJ): common.h defines.h internet.h
$(UDPOBJ): common.h defines.h internet.h
$(ICMPOBJ): common.h defines.h internet.h
$(IPRETOBJ): common.h defines.h internet.h

defines.h:
	@echo "Creating file \"defines.h\""
	@echo "/*"                                                           >> $(srcdir)/defines.h
	@echo "   Global #defines for Perro"                                 >> $(srcdir)/defines.h
	@echo "   Copyright (C) 1999, 2000 Diego Javier Grigna <diego@grigna.com>" >> $(srcdir)/defines.h
	@echo ""                                                             >> $(srcdir)/defines.h
	@echo "   File automatically created by the Makefile."               >> $(srcdir)/defines.h
	@echo "   Do not edit by hand, modify the Makefile instead."         >> $(srcdir)/defines.h
	@echo "*/"                                                           >> $(srcdir)/defines.h
	@echo ""                                                             >> $(srcdir)/defines.h
	@echo "#define PER_VERSION    \"$(PER_VERSION)\""                    >> $(srcdir)/defines.h
	@echo ""                                                             >> $(srcdir)/defines.h
	@echo "#define PER_ICMP_RAW   \"$(logdir)/icmp.raw\""                >> $(srcdir)/defines.h
	@echo "#define PER_ICMP_LOG   \"$(logdir)/icmp.log\""                >> $(srcdir)/defines.h
	@echo ""                                                             >> $(srcdir)/defines.h
	@echo "#define PER_TCP_RAW    \"$(logdir)/tcp.raw\""                 >> $(srcdir)/defines.h
	@echo "#define PER_TCP_LOG    \"$(logdir)/tcp.log\""                 >> $(srcdir)/defines.h
	@echo ""                                                             >> $(srcdir)/defines.h
	@echo "#define PER_UDP_RAW    \"$(logdir)/udp.raw\""                 >> $(srcdir)/defines.h
	@echo "#define PER_UDP_LOG    \"$(logdir)/udp.log\""                 >> $(srcdir)/defines.h
	@echo ""                                                             >> $(srcdir)/defines.h


