
# $Id: Makefile,v 1.33 2002/12/16 08:47:21 kingofgib Exp $
#

none:
	@echo "use make <system>, which can be: "; \
	echo " 'linux'  : on any Linux flavor"; \
	echo " 'bsd'    : on Free/Net/Open BSD"; \
	echo " 'sun'    : on Sun";	\
	echo " 'macos'  : on Apple's Mac OS X"; \
	echo " 'win32'  : on any MS Windows platform"; \
	echo " 'cygwin' : on Windows, running CYGWIN"; \
	echo " 'mingw'  : on Windows, running MinGW"; \
	echo " 'aix'    : on AIX"; \
	echo " 'tru64'  : on a Tru64"; \
	echo " 'hpux'   : on a HP-UX"; \
	echo " 'unix'   : try this on any other, Unix-like platform"; \
	echo "          : (this is of course, highly experimental)"

install:
	@echo 
	@echo "use 'make install-linux' on linux" ;
	@echo "use 'make install-bsd' on FreeBSD/OpenBSD/NetBSD";
	@echo 
	@echo "For other systems, sorry, haven't gotten around to this yet.";
	@echo "In the mean time, copy lib/libpnet6.a to your /usr/local/lib";
	@echo "and src/pnet6.h, src/pnet6sys.h, src/pnet6pkt.h and ";
	@echo "src/pnet6tlp.h to your /usr/local/include. That should do it..."
	@echo 

INSTALL_BSD = install -D -c -o root -g wheel -m 444 
INSTALL_LINUX= install -D -c -o root -g root -m 444
VERSION = 0.1.5
INST_ROOT=/usr/local
MANDIR = $(INST_ROOT)/man/man3

install-bsd:
	$(INSTALL_BSD) lib/libpnet6.a $(INST_ROOT)/lib/libpnet6.a
	$(INSTALL_BSD) lib/libpnet6.so $(INST_ROOT)/lib/libpnet6.so.1
	ln -sf /usr/local/lib/libpnet6.so.1 $(INST_ROOT)/lib/libpnet6.so
	$(INSTALL_BSD) src/pnet6.h $(INST_ROOT)/include/pnet6.h
	$(INSTALL_BSD) src/pnet6sys.h $(INST_ROOT)/include/pnet6sys.h
	$(INSTALL_BSD) src/pnet6pkt.h $(INST_ROOT)/include/pnet6pkt.h
	$(INSTALL_BSD) src/pnet6tlp.h $(INST_ROOT)/include/pnet6tlp.h
	$(INSTALL_BSD) doc/man/pnet6.3 $(MANDIR)/pnet6.3
	$(INSTALL_BSD) doc/man/pnet6-addr.3 $(MANDIR)/pnet6-addr.3
	$(INSTALL_BSD) doc/man/pnet6-addr.3 $(MANDIR)/pnet6-api.3
	$(INSTALL_BSD) doc/man/pnet6-if.3 $(MANDIR)/pnet6-if.3
	$(INSTALL_BSD) doc/man/pnet6-ip.3 $(MANDIR)/pnet6-ip.3
	$(INSTALL_BSD) doc/man/pnet6-log.3 $(MANDIR)/pnet6-log.3
	$(INSTALL_BSD) doc/man/pnet6-pkt.3 $(MANDIR)/pnet6-pkt.3
	$(INSTALL_BSD) doc/man/pnet6-raw.3 $(MANDIR)/pnet6-raw.3
	$(INSTALL_BSD) doc/man/pnet6-socket.3 $(MANDIR)/pnet6-socket.3
	$(INSTALL_BSD) doc/man/pnet6-tcp.3 $(MANDIR)/pnet6-tcp.3
	$(INSTALL_BSD) doc/man/pnet6-udp.3 $(MANDIR)/pnet6-udp.3

install-linux:
	$(INSTALL_LINUX) lib/libpnet6.a $(INST_ROOT)/lib/libpnet6.a
	install -D -c -o root -g root -m 755 \
		lib/libpnet6.so $(INST_ROOT)/lib/libpnet6-$(VERSION).so
	ln -sf $(INST_ROOT)/lib/libpnet6-$(VERSION).so \
			$(INST_ROOT)/lib/libpnet6.so.0
	$(INSTALL_LINUX) src/pnet6.h $(INST_ROOT)/include/pnet6.h
	$(INSTALL_LINUX) src/pnet6sys.h $(INST_ROOT)/include/pnet6sys.h
	$(INSTALL_LINUX) src/pnet6pkt.h $(INST_ROOT)/include/pnet6pkt.h
	$(INSTALL_LINUX) src/pnet6tlp.h $(INST_ROOT)/include/pnet6tlp.h
	$(INSTALL_LINUX) doc/man/pnet6.3 $(MANDIR)/pnet6.3
	$(INSTALL_LINUX) doc/man/pnet6-addr.3 $(MANDIR)/pnet6-addr.3
	$(INSTALL_LINUX) doc/man/pnet6-addr.3 $(MANDIR)/pnet6-api.3
	$(INSTALL_LINUX) doc/man/pnet6-if.3 $(MANDIR)/pnet6-if.3
	$(INSTALL_LINUX) doc/man/pnet6-ip.3 $(MANDIR)/pnet6-ip.3
	$(INSTALL_LINUX) doc/man/pnet6-log.3 $(MANDIR)/pnet6-log.3
	$(INSTALL_LINUX) doc/man/pnet6-pkt.3 $(MANDIR)/pnet6-pkt.3
	$(INSTALL_LINUX) doc/man/pnet6-raw.3 $(MANDIR)/pnet6-raw.3
	$(INSTALL_LINUX) doc/man/pnet6-socket.3 $(MANDIR)/pnet6-socket.3
	$(INSTALL_LINUX) doc/man/pnet6-tcp.3 $(MANDIR)/pnet6-tcp.3
	$(INSTALL_LINUX) doc/man/pnet6-udp.3 $(MANDIR)/pnet6-udp.3

config:
	@cd tools; $(CC) config.c -o config.exe
	@tools/config.exe
	@cat LICENSE > src/pnet6sys.h
	@tools/config.exe -vs >> src/pnet6sys.h
	@mv config.h src
	@echo 
	@echo "config.h written to src."
	@echo

linux:
	$(MAKE) config
	cp -f files/Make.header.gcc files/Make.header
	$(MAKE) -s pnet6shared
	$(MAKE) -s ex
bsd:
	$(MAKE) config
	cp -f files/Make.header.freebsd files/Make.header
	$(MAKE) -s pnet6shared
	$(MAKE) ex
sun:
	$(MAKE) config
	cd files; cp -f Make.header.sunos Make.header
	$(MAKE) pnet6
	$(MAKE) ex
aix:
	$(MAKE) config
	cd files; cp -f Make.header.aix Make.header
	$(MAKE) pnet6
	$(MAKE) ex
macos:
	$(MAKE) config
	cd files; cp -f Make.header.macosx Make.header
	$(MAKE) pnet6
	$(MAKE) ex
tru64:
	$(MAKE) config
	cd files; cp -f Make.header.tru64 Make.header
	$(MAKE) pnet6
	$(MAKE) ex
hpux:
	$(MAKE) config
	cd files; cp -f Make.header.hpux Make.header
	$(MAKE) pnet6
	$(MAKE) ex

unix:
	$(MAKE) config
	cd files; cp -f Make.header.unix Make.header
	$(MAKE) pnet6
	$(MAKE) ex

win32:
	echo "/* # include <windows.h> */" > src\config.h
	cd tools
	cl ./config.c -o config.exe 
	cd ..
	@cat LICENSE > src/pnet6sys.h
	@tools\config.exe -vs >> src/pnet6sys.h
	copy files\Make.header.cl files\Make.header
	cd src
	$(MAKE) pnetw
	cd ..
	$(MAKE) wex

mingw:
	cp -f src/pnet6sys-mingw.h src/pnet6sys.h
	cp -f files/Make.header.mingw files/Make.header
	@echo > src/config.h
	$(MAKE) -C src pnetmingw
#	$(MAKE) exmingw

cygwin:
	$(MAKE) -s config
	cd files; cp -f Make.header.cygwin Make.header
	$(MAKE) -s pnet6
	$(MAKE) -s ex


pnet6:
	$(MAKE) doclean
	cd src; $(MAKE) allclean; $(MAKE) pnet

pnet6shared:
	$(MAKE) doclean
	cd src; $(MAKE) allclean; $(MAKE) pnetshared

doclean:
	-rm -f src/*.o src/*.obj src/*/*.obj src/*/*.o
	-rm -f tests/*/*.o
	-rm -f tests/*/*.obj
	-rm -f examples/*/*.o
	-rm -f examples/*/*.obj
	-rm -f lib/libpnet6.*

ex:
	cd examples/arp6; $(MAKE)
	cd tests/client; $(MAKE)
	cd tests/server; $(MAKE)
	cd tests/ifinfo; $(MAKE)
	cd tests/mcast; $(MAKE)
	cd tests/raw; $(MAKE)
	cd examples/snoop6; $(MAKE)
	cd examples/udpserv; $(MAKE)
	cd examples/tcpmon; $(MAKE)

wex:
	cd examples\arp6
	$(MAKE)
	cd ..\snoop6
	$(MAKE)
	cd ..\tcpmon
	$(MAKE)
	cd ..\udpserv
	$(MAKE)
	cd ..\..\tests
	cd client
	$(MAKE)
	cd ..\server
	$(MAKE)
	cd ..\ifinfo
	$(MAKE)
	cd ..\raw
	$(MAKE)
	cd ..\mcast
	$(MAKE)
