#
# Makefile for libnids2.
#
# Dug Song <dugsong@monkey.org>

srcdir		= .


install_prefix	=
prefix		= /var/tmp/jwm
exec_prefix	= /var/tmp/jwm
includedir	= ${prefix}/include
libdir		= ${exec_prefix}/lib
mandir		= ${prefix}/share/man
LIBSTATIC      = libnids2.a
LIBSHARED      = libnids2.so.1.21

CC		= gcc
CFLAGS		= -g -O2 -D_BSD_SOURCE -W -Wall -DLIBNET_VER=-1 -DHAVE_ICMPHDR=1 -DHAVE_TCP_STATES=1 -DHAVE_BSD_UDPHDR=1
LDFLAGS		= -L/var/tmp/jwm/lib

PCAP_CFLAGS	= -I/var/tmp/jwm/include
PCAPLIB		= -L/var/tmp/jwm/lib -lpcap

LNET_CFLAGS	= 
LNETLIB		= 

LIBS_CFLAGS	= $(PCAP_CFLAGS) $(LNET_CFLAGS)  
LIBS		= -lnsl   
RANLIB		= ranlib
INSTALL		= /usr/bin/ginstall -c

OBJS		= checksum.o ip_fragment.o ip_options.o killtcp.o \
		  libnids.o scan.o tcp.o util.o allpromisc.o hash.o
OBJS_SHARED	= $(OBJS:.o=_pic.o)
.c.o:
	$(CC) -c $(CFLAGS) -I. $(LIBS_CFLAGS) $<
static: $(LIBSTATIC)
shared: $(LIBSHARED)
# How to write the following rules compactly and portably ? 
# gmake accepts "%_pic.o: %.c", bsd make does not.
checksum_pic.o: checksum.c
	$(CC) -fPIC $(CFLAGS) -I. $(LIBS_CFLAGS) -c checksum.c -o $@
ip_fragment_pic.o: ip_fragment.c
	$(CC) -fPIC $(CFLAGS) -I. $(LIBS_CFLAGS) -c ip_fragment.c -o $@
ip_options_pic.o: ip_options.c
	$(CC) -fPIC $(CFLAGS) -I. $(LIBS_CFLAGS) -c ip_options.c -o $@
killtcp_pic.o: killtcp.c
	$(CC) -fPIC $(CFLAGS) -I. $(LIBS_CFLAGS) -c killtcp.c -o $@
libnids_pic.o: libnids.c
	$(CC) -fPIC $(CFLAGS) -I. $(LIBS_CFLAGS) -c libnids.c -o $@
scan_pic.o: scan.c
	$(CC) -fPIC $(CFLAGS) -I. $(LIBS_CFLAGS) -c scan.c -o $@
tcp_pic.o: tcp.c
	$(CC) -fPIC $(CFLAGS) -I. $(LIBS_CFLAGS) -c tcp.c -o $@
util_pic.o: util.c
	$(CC) -fPIC $(CFLAGS) -I. $(LIBS_CFLAGS) -c util.c -o $@
allpromisc_pic.o: allpromisc.c
	$(CC) -fPIC $(CFLAGS) -I. $(LIBS_CFLAGS) -c allpromisc.c -o $@
hash_pic.o: hash.c
	$(CC) -fPIC $(CFLAGS) -I. $(LIBS_CFLAGS) -c hash.c -o $@


$(LIBSTATIC): $(OBJS)
	ar -cr $@ $(OBJS)
	$(RANLIB) $@
$(LIBSHARED): $(OBJS_SHARED)
	$(CC) -shared -Wl,-soname,$(LIBSHARED) -o $(LIBSHARED) $(OBJS_SHARED) $(LIBS) $(LNETLIB) $(PCAPLIB)

_install install: $(LIBSTATIC)
	../mkinstalldirs $(install_prefix)$(libdir)
	../mkinstalldirs $(install_prefix)$(includedir)
	../mkinstalldirs $(install_prefix)$(mandir)/man3
	# we don't want to distribute the patched version of libnids. It is usefull just for justniffer
	#$(INSTALL) -c -m 644 libnids2.a $(install_prefix)$(libdir)
	#$(INSTALL) -c -m 644 nids2.h $(install_prefix)$(includedir)
_installshared installshared: install $(LIBSHARED)
	#$(INSTALL) -c -m 755 $(LIBSHARED) $(install_prefix)$(libdir)
	#ln -s -f $(LIBSHARED) $(install_prefix)$(libdir)/libnids2.so
 
clean:
	rm -f *.o *~ $(LIBSTATIC) $(LIBSHARED)

# EOF
