# Makefile for ../fwmon/fwmon 

CCOPTS        = -O

EXTRA_AIX_CFLAGS = -qlanglvl=ansi
EXTRA_HPUX_CFLAGS = -Aa -D _HPUX_SOURCE
EXTRA_LINUX_CFLAGS =

CFLAGS	      = -I../include -I$(BACKING)/include $(CCOPTS) -D__WANT_CHKPOINTS
PFLAGS	      = -I../include -I$(BACKING)/include $(CCOPTS)
FFLAGS	      = -I../include -I$(BACKING)/include $(CCOPTS)
CCFLAGS       = -I../include -I$(BACKING)/include $(CCOPTS)
CXXFLAGS      = -I../include -I$(BACKING)/include $(CCOPTS)

CC	      = cc

DEST	      = .

# Uncomment this if you want system header files to be expanded
#
# SYSHDRS       =

EXTHDRS	      = ../include/firewall.h \
		../include/fwmon.h \
		../include/spoofmon.h

HDRS	      =

INSTALL	      = install

LD	      = $(CC)

LDFLAGS	      =

LIBS	      = ../libsrc/firewall.a

LINTLIBS      =

LINTFLAGS     = -u $(CFLAGS)

MAKEFILE      = Makefile

OBJS	      = fwmon.o

SYNLD_OBJS    =	synmonld.o

SPOOF_OBJS    =	spoofmon.o

PROC_OBJS     =	procmon.o

SYN_OBJS      = synmon.o

KX_OBJS       = synmonkx.o

MIX1_OBJS     = addpid.o

MIX2_OBJS     = pmconf.o

PRINT	      = pr

PRINTFLAGS    =

LP	      = lp

LPFLAGS       = 

PROGRAM       = fwmon

SYNLD         = synmonld

SPOOF         = spoofmon

PROC          = procmon

SYN           = synmon

KX	      = synmonkx

KLIST	      = /lib/kernex.exp

SLIST	      = /lib/sockets.exp

SHELL	      = /bin/sh

SRCS	      = fwmon.c

SYNLD_SRCS    =	synmonld.c

SPOOF_SRCS    =	spoofmon.c

PROC_SRCS     =	procmon.c

SYN_SRCS      = synmon.c

KX_SRCS       = synmonkx.c

MIX1_SRCS     = addpid.c

MIX2_SRCS     = pmconf.c

all:		$(PROGRAM) $(PROC) $(SPOOF) $(SYNLD) $(SYN) $(KX)

#$(OBJS) $(MIX1_OBJS) $(MIX1_OBJS):		$(MAKEFILE)
# Linux does not like this, use .c.o:
#addpid.o pmconf.o:	addpid.c pmconf.c $(MAKEFILE)
#		@if [ "`uname`" = "AIX" ]; then \
#		echo "$(CC) -c $(CFLAGS) $(EXTRA_AIX_CFLAGS) $<"; \
#		$(CC) -c $(CFLAGS) $(EXTRA_AIX_CFLAGS) $<; \
#		elif [ "`uname`" = "HP-UX" ]; then \
# 		echo "$(CC) -c $(CFLAGS) $(EXTRA_HPUX_CFLAGS) $<"; \
#		$(CC) -c $(CFLAGS) $(EXTRA_HPUX_CFLAGS) $<; \
#		else \
#		echo "$(CC) -c $(CFLAGS) $<"; \
#		$(CC) -c $(CFLAGS) $<; \
#		fi
fwmon.o:	fwmon.c addpid.o pmconf.o $(MAKEFILE)
		@if [ "`uname`" = "AIX" ]; then \
		echo "$(CC) -c $(CFLAGS) $(EXTRA_AIX_CFLAGS) $<"; \
		$(CC) -c $(CFLAGS) $(EXTRA_AIX_CFLAGS) $<; \
		elif [ "`uname`" = "HP-UX" ]; then \
 		echo "$(CC) -c $(CFLAGS) $(EXTRA_HPUX_CFLAGS) $<"; \
		$(CC) -c $(CFLAGS) $(EXTRA_HPUX_CFLAGS) $<; \
		else \
		echo "$(CC) -c $(CFLAGS) $<"; \
		$(CC) -c $(CFLAGS) $<; \
		fi

#$(SPOOF_OBJS):	$(MAKEFILE)
# Linux gnumake does not support nroff so macros can't be targets
spoofmon.o:	spoofmon.c $(MAKEFILE)
		@if [ "`uname`" = "AIX" ]; then \
		echo "$(CC) -c $(CFLAGS) $(EXTRA_AIX_CFLAGS) $<"; \
		$(CC) -c $(CFLAGS) $(EXTRA_AIX_CFLAGS) $<; \
		elif [ "`uname`" = "HP-UX" ]; then \
 		echo "$(CC) -c $(CFLAGS) $(EXTRA_HPUX_CFLAGS) $<"; \
		$(CC) -c $(CFLAGS) $(EXTRA_HPUX_CFLAGS) $<; \
		elif [ "`uname`" = "Linux" ]; then \
		echo "$(CC) -c $(CFLAGS) $(EXTRA_LINUX_CFLAGS) $<"; \
		$(CC) -c $(CFLAGS) $(EXTRA_LINUX_CFLAGS) $<; \
		fi

#$(PROC_OBJS):	$(MAKEFILE)
procmon.o:	procmon.c $(MAKEFILE)
		@if [ "`uname`" = "AIX" ]; then \
			if [ "`uname -v`" = "4" ]; then \
			echo "$(CC) -c $(CFLAGS) $(EXTRA_AIX_CFLAGS) $<"; \
			$(CC) -c $(CFLAGS) $(EXTRA_AIX_CFLAGS) $<; \
			else \
			echo "**** $(PROC_OBJS) can only be built on AIX V4"; \
			fi \
		elif [ "`uname`" = "HP-UX" ]; then \
 		echo "$(CC) -c $(CFLAGS) $(EXTRA_HPUX_CFLAGS) $<"; \
		$(CC) -c $(CFLAGS) $(EXTRA_HPUX_CFLAGS) $<; \
		elif [ "`uname`" = "SunOS" ]; then \
		echo "$(CC) -c $(CFLAGS) $<"; \
		$(CC) -c $(CFLAGS) $<; \
		elif [ "`uname`" = "Linux" ]; then \
		echo "$(CC) -c $(CFLAGS) $<"; \
		$(CC) -c $(CFLAGS) $<; \
		fi

#$(SYNLD_OBJS) $(SYN_OBJS):	$(MAKEFILE)
synmonld.o synmon.o:	synmonld.c synmon.c $(MAKEFILE)
		@if [ "`uname`" = "AIX" ]; then \
			if [ "`uname -v`" = "4" ]; then \
			echo "$(CC) -c $(CFLAGS) $(EXTRA_AIX_CFLAGS) $<"; \
			$(CC) -c $(CFLAGS) $(EXTRA_AIX_CFLAGS) $<; \
			else \
			echo "**** $(SYN_OBJS) $(SYNLD_OBJS) can only be built on AIX V4"; \
			fi \
		fi

#$(KX_OBJS):	$(MAKEFILE)
synmonkx.o:	synmonkx.c $(MAKEFILE)
		@if [ "`uname`" = "AIX" ]; then \
			if [ "`uname -v`" = "4" ]; then \
			echo "$(CC) -D_ALL_SOURCE -D_KERNEL -c $(CFLAGS) $(EXTRA_AIX_CFLAGS) $<"; \
			$(CC) -c -D_ALL_SOURCE -D_KERNEL $(CFLAGS) $(EXTRA_AIX_CFLAGS) $<; \
			else \
			echo "**** $(KX_OBJS) can only be built on AIX V4"; \
			fi \
		fi

#$(PROGRAM):     $(OBJS) $(MIX1_OBJS) $(MIX2_OBJS) $(LIBS) $(MAKEFILE)
fwmon:     $(OBJS) $(MIX1_OBJS) $(MIX2_OBJS) $(LIBS) $(MAKEFILE)
		@echo "Linking $(PROGRAM) ..."
		$(LD) $(LDFLAGS) $(OBJS) $(MIX1_OBJS) $(MIX2_OBJS) $(LIBS) \
			-o $(PROGRAM)
		@echo "done"

#$(SPOOF):       $(SPOOF_OBJS) $(MIX1_OBJS) $(MIX2_OBJS) $(LIBS) $(MAKEFILE)
spoofmon:       $(SPOOF_OBJS) $(MIX1_OBJS) $(MIX2_OBJS) $(LIBS) $(MAKEFILE)
		@if [ "`uname`" = "AIX" ] || [ "`uname`" = "HP-UX" ] || \
			[ "`uname`" = "Linux" ] ; then \
		echo "Linking $(SPOOF) ..."; \
		$(LD) $(LDFLAGS) $(SPOOF_OBJS) $(MIX1_OBJS) $(MIX2_OBJS) \
			$(LIBS) -o $(SPOOF); \
		echo "done"; \
		fi

#$(SYNLD):       $(SYNLD_OBJS) $(MAKEFILE)
synmonld:       $(SYNLD_OBJS) $(MAKEFILE)
		@if [ "`uname`" = "AIX" ]; then \
			if [ "`uname -v`" = "4" ]; then \
			echo "Linking $(SYNLD) ..."; \
			$(LD) $(LDFLAGS) $(SYNLD_OBJS) -o $(SYNLD); \
			echo "done"; \
			else \
			echo "**** $(SYNLD) can only be built on AIX V4"; \
			fi \
		fi

#$(PROC):        $(PROC_OBJS) $(MIX1_OBJS) $(MIX2_OBJS) $(LIBS) $(MAKEFILE)
procmon:        $(PROC_OBJS) $(MIX1_OBJS) $(MIX2_OBJS) $(LIBS) $(MAKEFILE)
		@if [ "`uname`" = "AIX" ]; then \
			if [ "`uname -v`" = "4" ]; then \
			echo "Linking $(PROC) ..."; \
			$(LD) $(LDFLAGS) $(PROC_OBJS) $(MIX1_OBJS) \
				$(MIX2_OBJS) $(LIBS) -o $(PROC); \
			echo "done"; \
			else \
			echo "**** $(PROC) can only be built on AIX V4"; \
			fi \
		elif [ "`uname`" = "HP-UX" ]; then \
			echo "Linking $(PROC) ..."; \
			$(LD) $(LDFLAGS) $(PROC_OBJS) $(MIX1_OBJS) \
				$(MIX2_OBJS) $(LIBS) -o $(PROC); \
			echo "done"; \
		elif [ "`uname`" = "SunOS" ]; then \
			echo "Linking $(PROC) ..."; \
			$(LD) $(LDFLAGS) $(PROC_OBJS) $(MIX1_OBJS) \
				$(MIX2_OBJS) $(LIBS) -o $(PROC) \
				-lkvm -lelf; \
			echo "done"; \
		elif [ "`uname`" = "Linux" ]; then \
			echo "Linking $(PROC) ..."; \
			$(LD) $(LDFLAGS) $(PROC_OBJS) $(MIX1_OBJS) \
				$(MIX2_OBJS) $(LIBS) -o $(PROC) ;\
			echo "done"; \
		fi

#$(SYN):         $(SYN_OBJS) $(MIX1_OBJS) $(MIX2_OBJS) $(LIBS) $(MAKEFILE)
synmon:         $(SYN_OBJS) $(MIX1_OBJS) $(MIX2_OBJS) $(LIBS) $(MAKEFILE)
		@if [ "`uname`" = "AIX" ]; then \
			if [ "`uname -v`" = "4" ]; then \
			echo "Linking $(SYN) ..."; \
			$(LD) -bI:synmonkx.exp $(LDFLAGS) $(SYN_OBJS) \
				$(MIX1_OBJS) $(MIX2_OBJS) $(LIBS) -o $(SYN); \
			echo "done"; \
			else \
			echo "**** $(SYN) can only be built on AIX V4"; \
			fi \
		fi


#$(KX):          $(KX_OBJS) $(MAKEFILE)
synmonkx:          $(KX_OBJS) $(MAKEFILE)
		@if [ "`uname`" = "AIX" ]; then \
			if [ "`uname -v`" = "4" ]; then \
			echo "Linking $(KX) ..."; \
			$(LD) -e synchk $(LDFLAGS) /lib/netinet.exp \
				-bI:/lib/kernex.exp -bI:/lib/sockets.exp \
				-bE:synmonkx.exp -bmap:synmonkx.map -o $(KX) \
				$(KX_OBJS); \
			echo "done"; \
			else \
			echo "**** $(KX) can only be built on AIX V4"; \
			fi \
		fi

clean:;		@rm -f $(PROGRAM) $(LIBRARY) $(OBJS) core make.log
		@rm -f $(SPOOF) $(SPOOF_OBJS) $(MIX1_OBJS) $(MIX2_OBJS)
		@if [ "`uname`" = "AIX" ] && [ "`uname -v`" = "4" ]; then \
		rm -f $(SYN) $(SYN_OBJS) $(SYNLD) $(SYNLD_OBJS) \
			$(KX) $(KX_OBJS); \
		fi
		@if [ "`uname`" != "AIX" ] || [ "`uname -v`" = "4" ]; then \
		rm -f $(PROC) $(PROC_OBJS); \
		fi

clobber:;	@rm -f $(OBJS) $(SPOOF_OBJS)
		@rm -f $(PROGRAM) $(SPOOF) core tags
		@rm -f $(MIX1_OBJS) $(MIX2_OBJS)
		@if [ "`uname`" = "AIX" ] && [ "`uname -v`" = "4" ]; then \
		rm -f $(SYN_OBJS) $(KX_OBJS) $(SYNLD_OBJS) \
			$(SYNLD) $(SYN) $(KX); \
		fi
		@if [ "`uname`" != "AIX" ] || [ "`uname -v`" = "4" ]; then \
		rm -f $(PROC) $(PROC_OBJS); \
		fi

depend:;	@mkmf -f $(MAKEFILE) ROOT=$(ROOT)

echo:;		@echo $(HDRS) $(SRCS)

-1:;		@ctags -wx $(HDRS) $(SRCS)

install:	$(PROGRAM)
		@echo Installing $(PROGRAM) in $(DEST)
		@-strip $(PROGRAM)
		@if [ $(DEST) != . ]; then \
		(rm -f $(DEST)/$(PROGRAM); $(INSTALL) -d $(DEST); $(INSTALL) $(PROGRAM) $(DEST)); fi

lint:		$(LINTLIBS) $(SRCS) $(HDRS) $(EXTHDRS)
		lint $(LINTFLAGS) $(LINTLIBS) $(SRCS)

print:;		@$(PRINT) $(PRINTFLAGS) $(HDRS) $(SRCS) | $(LP) $(LPFLAGS)

tags:           $(HDRS) $(SRCS); @ctags $(HDRS) $(SRCS)

update:		$(DEST)/$(PROGRAM)

touch:;		@touch $(SRCS) $(HDRS)

###
pmconf.o: ../include/firewall.h ../include/fwmon.h
procmon.o: ../include/fwmon.h ../include/firewall.h chkpoint.h
fwmon.o: ../include/fwmon.h ../include/firewall.h chkpoint.h
spoofmon.o: ../include/firewall.h ../include/spoofmon.h ../include/fwmon.h chkpoint.h
synmon.o: ../include/fwmon.h ../include/firewall.h
synmonkx.o: ../include/fwmon.h
synmonld.o: ../include/firewall.h
