
# implicit network interface
#DDEV = -DDEV=eth0
# database library for mydbm.h
# NDBM (BSD), GDBM (GNU), BDB (Berkeley/Oracle DB4)
#DBTYPE = BDB
# /usr/local/include/db47, /usr/include/db47, etc
#DBFLAGS = -I/usr/local/include/db47
# NDBM = empty, GDBM = -lgdbm, BDB = -L/usr/local/lib/db47 -ldb-4.7
#DBLIB = -L/usr/local/lib/db47 -ldb-4.7
#
# use MySQL for ndwatch (undef for NDBM)
#NDWATCHDB = -DSQL
CXX = g++
CXXFLAGS = -ldb -Weffc++ -Wall -O2 -fpic -fno-exceptions -lpcap -g -I/usr/local/include -I/usr/include $(NDWATCHDB) $(DDEV)

all : libpacket.a

libpacket.a : packet.o ethernet.o vlan.o ipv6.o icmpv6.o ipv4.o arp.o udp.o tcp.o bootp.o 
	ar rcs libpacket.a packet.o ethernet.o vlan.o ipv6.o icmpv6.o ipv4.o arp.o udp.o tcp.o bootp.o 

packet.o : packet.h common.h

nd_pcap.o : nd_pcap.h packet.h common.h

ethernet.o : ethernet.h packet.h common.h

vlan.o : vlan.h ethernet.h packet.h common.h

ipv6.o : ipv6.h packet.h common.h

ipv4.o : ipv4.h packet.h common.h

arp.o : arp.h ipv4.h ethernet.h packet.h common.h

icmpv6.o : icmpv6.h packet.h common.h

udp.o : udp.h packet.h common.h

tcp.o : tcp.h packet.h common.h

bootp.o : bootp.h udp.h packet.h common.h

mysql.o : mysql.h

mydbm.o : mydbm.h

nc6.o : nc6.h util.h

tests : test_ethernet test_icmpv6 test_nd_pcap test_ra test_mysql ndwatch test_util test_arp test_udp test_tcp test_bootp

test_ethernet.o : libpacket.so

test_icmpv6.o : libpacket.so

test_ra.o : libpacket.so

test_nd_pcap.o : libpacket.so

test_arp.o : libpacket.so

test_udp.o : libpacket.so

test_tcp.o : libpacket.so

test_bootp.o : libpacket.so

test_mysql.o : libpacket.so

test_util.o : libpacket.so util.h

ndwatch.o : libpacket.so util.h cfgparser.h

test_ethernet : test_ethernet.o 
	$(CXX) -o test_ethernet -g test_ethernet.o -L. -Wl,-R. -lpacket

test_icmpv6 : test_icmpv6.o 
	$(CXX) -o test_icmpv6 -g test_icmpv6.o -L. -Wl,-R. -lpacket

test_ra : test_ra.o 
	$(CXX) -o test_ra -g test_ra.o -L. -Wl,-R. -lpacket

test_nd_pcap : test_nd_pcap.o 
	$(CXX) -o test_nd_pcap -g test_nd_pcap.o -L. -Wl,-R. -lpacket 

test_udp : test_udp.o 
	$(CXX) -o test_udp -g test_udp.o -L. -Wl,-R. -lpacket 

test_tcp : test_tcp.o 
	$(CXX) -o test_tcp -g test_tcp.o -L. -Wl,-R. -lpacket 

test_bootp : test_bootp.o 
	$(CXX) -o test_bootp -g test_bootp.o -L. -Wl,-R. -lpacket 

test_arp : test_arp.o 
	$(CXX) -o test_arp -g test_arp.o -L. -Wl,-R. -lpacket 

test_mysql : test_mysql.o 
	$(CXX) -o test_mysql -g test_mysql.o -L. -Wl,-R. -lpacket 

test_util : test_util.o 
	$(CXX) -o test_util -g test_util.o -L. -Wl,-R. -lpacket 

ndwatch : ndwatch.o 
	$(CXX) -o ndwatch -g ndwatch.o -L. -Wl,-R. -lpacket 

clean : 
	@rm -f packet.o ethernet.o vlan.o ipv6.o icmpv6.o ipv4.o arp.o udp.o tcp.o bootp.o nd_pcap.o nc6.o mysql.o mydbm.o libpacket.so test_ethernet.o test_icmpv6.o test_nd_pcap.o test_util.o test_mysql.o test_ra.o test_udp.o test_tcp.o test_bootp.o test_arp.o ndwatch.o test_ethernet test_icmpv6 test_nd_pcap test_util test_mysql test_ra test_udp test_tcp test_bootp test_arp ndwatch

archive:
	tar cvzf libpacket-0.8.2.tar.gz *.cc *.h ndwatch.cfg Makefile
