#
# Copyright  2000, QNX Software Systems Ltd.  All Rights Reserved
#
# This source code has been published by QNX Software Systems Ltd.
# (QSSL).  However, any use, reproduction, modification, distribution
# or transfer of this software, or any software which includes or is
# based upon any of this code, is only permitted under the terms of
# the QNX Open Community License version 1.0 (see licensing.qnx.com for
# details) or as otherwise expressly authorized by a written license
# agreement from QSSL.  For more information, please email licensing@qnx.com.
#
TOP=..
OSDEP=.
CFLAGS=-w3 -I$(TOP) -mf $(DEF) -DQNX=425
DEBUG=-Oax
#DEBUG=-g
#
DEF=-DINET -DIPF_DEFAULT_PASS=FR_PASS -DFWRITE=S_IWRITE -DFREAD=S_IREAD -Dioctl=devctl
IPDEF=$(DEF) -DGATEWAY -DDIRECTED_BROADCAST
LOGDEF=-DIPFILTER_LOG
TESTDEF=$(DEF) -DIPFTEST
LIBS=-lvpack -lsocket -M
#
########## ########## ########## ########## ########## ########## ##########
#
CP=/bin/cp
RM=/bin/rm
LN=/bin/ln
CHMOD=/bin/chmod
INSTALL=install
DFLAGS=$(IPDEF) $(LOGDEF)

IPFD=ipf_main.o ipfd.o parse.o opt.o ip_fil.o fil.o ip_frag.o \
    ip_state.o facpri.o in_cksum.o ip_log.o ipf_res.o ipf_subr.o ip_auth.o common.o misc.o
NAT=ip_nat.o ip_proxy.o natparse.o kmem.o
IPF=ipf.o parse.o natparse.o opt.o facpri.o common.o misc.o kmem.o
IPT=ipt.o common.o parse.o fil_u.o ipft_sn.o ipft_ef.o ipft_td.o ipft_pc.o opt.o \
    ipft_tx.o misc.o ip_frag_u.o ip_state_u.o ip_nat_u.o ip_proxy_u.o \
    ipft_hx.o ip_fil_u.o natparse.o ipf_subr.o in_cksum.o facpri.o \
    ip_auth_u.o kmem.o
FILS=fils.o parse.o opt.o facpri.o kmem.o common.o misc.o
IPFS=ipfs.o kmem.o

build all: ipfd  ipf ipfstat ipmon ipnat ipftest ipfs

ipfd: $(IPFD) $(NAT)
	$(CC) $(DEBUG) $(CFLAGS) $(IPFD) $(NAT) -T1 -o $@ $(LIBS)
	usemsg $@ $(TOP)/$@.use
	
ipf: $(IPF)
	$(CC) $(DEBUG) $(CFLAGS) $(IPF) -o $@ $(LIBS)
	usemsg $@ $(TOP)/$@.use

ipfstat: $(FILS)
	$(CC) $(DEBUG) $(CFLAGS) $(FILS) -o $@ $(LIBS)
	usemsg $@ $(TOP)/$@.use

ipmon: ipmon.o kmem.o
	$(CC) $(DEBUG) $(CFLAGS) kmem.o ipmon.o -o $@ $(LIBS)
	usemsg $@ $(TOP)/$@.use

ipnat: ipnat.o natparse.o kmem.o common.o
	$(CC) $(DEBUG) $(CFLAGS) ipnat.o natparse.o kmem.o common.o -o $@ $(LIBS)
	usemsg $@ $(TOP)/$@.use

ipftest: $(IPT)
	$(CC) $(DEBUG) $(CFLAGS) $(IPT) -o $@ $(LIBS)
	usemsg $@ $(TOP)/$@.use

ipfs: $(IPFS)
	$(CC) $(DEBUG) $(CFLAGS) $(IPFS) -o $@ $(LIBS)
	usemsg $@ $(TOP)/$@.use

#
# Object Rules
#
ipfd.o: $(TOP)/ipfd.c $(TOP)/netinet/ip_fil.h $(TOP)/netinet/ipf.h
	$(CC) $(DEBUG) $(CFLAGS) -c $(TOP)/ipfd.c -o $@

ipf_main.o: $(OSDEP)/ipf_main.c
	$(CC) $(DEBUG) $(CFLAGS) -I$(OSDEP) -c $(OSDEP)/ipf_main.c -o $@
#	$(CC) $(DEBUG) -w3 -mf -I$(TOP)  -I$(OSDEP) -c $(OSDEP)/ipf_main.c -o $@

ipf_res.o: $(OSDEP)/ipf_res.c
	$(CC) $(DEBUG) $(CFLAGS) $(DFLAGS) -I$(OSDEP) -c $(OSDEP)/ipf_res.c -o $@

ipf_subr.o: $(OSDEP)/ipf_subr.c
	$(CC) $(DEBUG) $(CFLAGS) -I$OSDEP -c $(OSDEP)/ipf_subr.c -o $@

parse.o: $(TOP)/parse.c $(TOP)/netinet/ip_fil.h
	$(CC) $(DEBUG) $(CFLAGS) -c $(TOP)/parse.c -o $@

opt.o: $(TOP)/opt.c $(TOP)/netinet/ip_fil.h $(TOP)/netinet/ipf.h
	$(CC) $(DEBUG) $(CFLAGS) -c $(TOP)/opt.c -o $@

fil.o: $(TOP)/fil.c $(TOP)/netinet/ip_fil.h $(TOP)/netinet/ipf.h $(TOP)/netinet/ip_compat.h
	$(CC) $(DEBUG) $(CFLAGS) $(DFLAGS) -c $(TOP)/fil.c -o $@

ip_frag.o: $(TOP)/ip_frag.c $(TOP)/netinet/ip_frag.h $(TOP)/netinet/ip_compat.h $(TOP)/netinet/ip_fil.h
	$(CC) $(DEBUG) $(CFLAGS) $(DFLAGS) -c $(TOP)/ip_frag.c -o $@

ip_state.o: $(TOP)/ip_state.c $(TOP)/netinet/ip_state.h $(TOP)/netinet/ip_compat.h \
	$(TOP)/netinet/ip_fil.h
	$(CC) $(DEBUG) $(CFLAGS) $(DFLAGS) -c $(TOP)/ip_state.c -o $@

facpri.o: $(TOP)/facpri.c $(TOP)/netinet/facpri.h
	$(CC) $(DEBUG) $(CFLAGS) -c $(TOP)/facpri.c -o $@

ip_nat.o: $(TOP)/ip_nat.c $(TOP)/netinet/ip_nat.h $(TOP)/netinet/ip_compat.h $(TOP)/netinet/ip_fil.h
	$(CC) $(DEBUG) $(CFLAGS) $(DFLAGS) -c $(TOP)/ip_nat.c -o $@

ip_proxy.o: $(TOP)/ip_proxy.c $(TOP)/netinet/ip_proxy.h $(TOP)/netinet/ip_compat.h \
	$(TOP)/netinet/ip_fil.h $(TOP)/netinet/ip_ftp_pxy.c
	$(CC) $(DEBUG) $(CFLAGS) $(DFLAGS) -c $(TOP)/ip_proxy.c -o $@

ip_fil.o: $(TOP)/ip_fil.c $(TOP)/netinet/ip_fil.h $(TOP)/netinet/ip_compat.h $(TOP)/netinet/ip_nat.h
	$(CC) $(DEBUG) $(CFLAGS) $(DFLAGS) -c $(TOP)/ip_fil.c -o $@

natparse.o: $(TOP)/natparse.c $(TOP)/netinet/ip_fil.h $(TOP)/netinet/ipf.h $(TOP)/netinet/ip_nat.h
	$(CC) $(DEBUG) $(CFLAGS) -c $(TOP)/natparse.c -o $@

common.o: $(TOP)/common.c $(TOP)/netinet/ip_fil.h $(TOP)/netinet/ipf.h
	$(CC) $(DEBUG) $(CFLAGS) -c $(TOP)/common.c -o $@

in_cksum.o: $(TOP)/in_cksum.c 
	$(CC) $(DEBUG) $(CFLAGS) -c $(TOP)/in_cksum.c -o $@

ip_auth.o: $(TOP)/ip_auth.c $(TOP)/netinet/ip_auth.h $(TOP)/netinet/ip_compat.h
	$(CC) $(DEBUG) $(CFLAGS) $(DFLAGS) -c $(TOP)/ip_auth.c -o $@

ip_log.o: $(OSDEP)/ip_log.c $(TOP)/netinet/ip_fil.h $(TOP)/netinet/ip_compat.h $(TOP)/netinet/ip_nat.h
	$(CC) $(DEBUG) $(CFLAGS) $(DFLAGS) -c $(OSDEP)/ip_log.c -o $@

ipf.o: $(TOP)/ipf.c $(TOP)/netinet/ip_fil.h $(TOP)/netinet/ipf.h
	$(CC) $(DEBUG) $(CFLAGS) -c $(TOP)/ipf.c -o $@

ipnat.o: $(TOP)/ipnat.c $(TOP)/netinet/ip_fil.h $(TOP)/netinet/ipf.h $(TOP)/netinet/ip_nat.h
	$(CC) $(DEBUG) $(CFLAGS) -c $(TOP)/ipnat.c -o $@

ipmon.o: $(TOP)/ipmon.c $(TOP)/netinet/ip_fil.h $(TOP)/netinet/ipf.h
	$(CC) $(DEBUG) $(CFLAGS) -c $(TOP)/ipmon.c -o $@

fils.o: $(TOP)/fils.c $(TOP)/netinet/ip_fil.h $(TOP)/netinet/ipf.h $(TOP)/netinet/ip_frag.h \
	$(TOP)/netinet/ip_compat.h $(TOP)/netinet/ip_state.h
	$(CC) $(DEBUG) $(CFLAGS) -c $(TOP)/fils.c -o $@

kmem.o: $(OSDEP)/kmem.c
	$(CC) $(DEBUG) -w3 -I$(TOP) -mf -I$(OSDEP) -c $(OSDEP)/kmem.c -o $@

ipt.o: $(TOP)/ipt.c $(TOP)/netinet/ip_fil.h $(TOP)/netinet/ipt.h $(TOP)/netinet/ipf.h
	$(CC) $(DEBUG) $(CFLAGS) -c $(TOP)/ipt.c -o $@

ipft_sn.o: $(TOP)/ipft_sn.c $(TOP)/netinet/ipt.h $(TOP)/netinet/ipf.h \
	$(TOP)/netinet/ip_fil.h $(TOP)/snoop.h
	$(CC) $(DEBUG) $(CFLAGS) -c $(TOP)/ipft_sn.c -o $@

misc.o: $(TOP)/misc.c $(TOP)/netinet/ip_fil.h $(TOP)/netinet/ipt.h $(TOP)/netinet/ipf.h
	$(CC) $(DEBUG) $(CFLAGS) -c $(TOP)/misc.c -o $@

ipft_ef.o: $(TOP)/ipft_ef.c $(TOP)/netinet/ipf.h $(TOP)/netinet/ip_fil.h $(TOP)/netinet/ipt.h
	$(CC) $(DEBUG) $(CFLAGS) -c $(TOP)/ipft_ef.c -o $@

ipft_td.o: $(TOP)/ipft_td.c $(TOP)/netinet/ipf.h $(TOP)/netinet/ip_fil.h $(TOP)/netinet/ipt.h
	$(CC) $(DEBUG) $(CFLAGS) -c $(TOP)/ipft_td.c -o $@

ipft_pc.o: $(TOP)/ipft_pc.c $(TOP)/netinet/ipf.h $(TOP)/netinet/ip_fil.h $(TOP)/netinet/ipt.h
	$(CC) $(DEBUG) $(CFLAGS) -c $(TOP)/ipft_pc.c -o $@

ipft_tx.o: $(TOP)/ipft_tx.c $(TOP)/netinet/ipf.h $(TOP)/netinet/ip_fil.h $(TOP)/netinet/ipt.h
	$(CC) $(DEBUG) $(CFLAGS) -c $(TOP)/ipft_tx.c -o $@

ipft_hx.o: $(TOP)/ipft_hx.c $(TOP)/netinet/ipf.h $(TOP)/netinet/ip_fil.h $(TOP)/netinet/ipt.h
	$(CC) $(DEBUG) $(CFLAGS) -c $(TOP)/ipft_hx.c -o $@

ip_frag_u.o: $(TOP)/ip_frag.c $(TOP)/netinet/ip_frag.h $(TOP)/netinet/ip_compat.h \
	$(TOP)/netinet/ip_fil.h
	$(CC) $(DEBUG) $(CFLAGS) $(TESTDEF) -c $(TOP)/ip_frag.c -o $@

ip_state_u.o: $(TOP)/ip_state.c $(TOP)/netinet/ip_state.h $(TOP)/netinet/ip_compat.h \
	$(TOP)/netinet/ip_fil.h
	$(CC) $(DEBUG) $(CFLAGS) -c $(TOP)/ip_state.c -o $@

ip_nat_u.o: $(TOP)/ip_nat.c $(TOP)/netinet/ip_nat.h $(TOP)/netinet/ip_compat.h $(TOP)/netinet/ip_fil.h
	$(CC) $(DEBUG) $(CFLAGS) -c $(TOP)/ip_nat.c -o $@

ip_proxy_u.o: $(TOP)/ip_proxy_u.c $(TOP)/netinet/ip_proxy.h $(TOP)/netinet/ip_compat.h \
	$(TOP)/netinet/ip_fil.h
	$(CC) $(DEBUG) $(CFLAGS) $(TESTDEF) -c $(TOP)/ip_proxy_u.c -o $@

ip_fil_u.o: $(TOP)/ip_fil_u.c $(TOP)/netinet/ip_fil.h $(TOP)/netinet/ip_compat.h
	$(CC) $(DEBUG) $(CFLAGS) $(TESTDEF) -c $(TOP)/ip_fil_u.c -o $@

fil_u.o: $(TOP)/fil_u.c $(TOP)/netinet/ip_fil.h $(TOP)/netinet/ipf.h $(TOP)/netinet/ip_compat.h
	$(CC) $(DEBUG) $(CFLAGS) $(TESTDEF) -c $(TOP)/fil_u.c -o $@

ip_auth_u.o: $(TOP)/ip_auth_u.c $(TOP)/netinet/ip_auth.h $(TOP)/netinet/ip_compat.h
	$(CC) $(DEBUG) $(CFLAGS) $(TESTDEF) -c $(TOP)/ip_auth_u.c -o $@

ipfs.o: $(TOP)/ipfs.c $(TOP)/netinet/ip_auth.h $(TOP)/netinet/ip_compat.h
	$(CC) $(DEBUG) $(CFLAGS) -c $(TOP)/ipfs.c -o $@
#

clean:
	${RM} -f *.o *.map *.err ipfd ipf ipfstat ipmon ipnat ipftest

test:
	(cd test; make)
