#
# use make [target] [options]
#
# where options
#       - PREFIX:		prefix for install
#	- IPT_LIB_DIR:		location of iptables userspace modules
#       - IPTABLES_1_2:		compile for iptables 1.2.x  [true|false]
#

PREFIX		:= /usr/local
IPT_LIB_DIR	:= /lib/iptables
IPTABLES_1_2	:= false

DEBUG		:= false

LIBDIR		:= $(PREFIX)/lib
BINDIR		:= $(PREFIX)/sbin

SRC		:= nf-hipac.c nf-hipac-core.c libnfhipac.c
LIB		:= libnfhipac.so
BIN		:= nf-hipac

CC		:= gcc
INSTALL		:= install
LDCONFIG	:= ldconfig

CFLAGS		:= -Wall -Wno-long-long -Wstrict-prototypes -Wno-trigraphs   \
		   -Wunused -fno-strict-aliasing -fno-common -rdynamic \
		   -D IPT_LIB_DIR=\"$(IPT_LIB_DIR)\"

ifeq ($(IPTABLES_1_2), true)
CFLAGS += -D IPTABLES_1_2
endif

ifeq ($(DEBUG), true)
CFLAGS += -g
BINFLAGS := $(CFLAGS) -Wl,-rpath,$(shell pwd)
else
CFLAGS += -O2 -fomit-frame-pointer
BINFLAGS := $(CFLAGS)
endif

OFLAGS		:= $(CFLAGS) -fPIC
SFLAGS		:= $(CFLAGS) -shared -nostartfiles


.PHONY: 	install clean

all:		$(BIN)

install:	$(BIN)
		mkdir -p "$(BINDIR)"
		$(INSTALL) -o root -g root -m 755 $(BIN) $(BINDIR)
		mkdir -p "$(LIBDIR)"
		$(INSTALL) -o root -g root -m 755 $(LIB) $(LIBDIR)
		$(LDCONFIG)

nf-hipac:	%:%.o -ldl $(LIB) nf-hipac-core.o
		$(CC) $(BINFLAGS) $^ -o $@

clean:
		-@ rm -f $(SRC:.c=.d) $(SRC:.c=.o) $(BIN) $(LIB)

%.so:           %.o
		$(CC) $(SFLAGS) $(filter %.o %.so, $^) -o $@

%.o:            %.c
		$(CC) $(OFLAGS) -c $< -o $@

%.d: 		%.c
		@ set -e; $(CC) -MM $(CFLAGS) $<              \
		  | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \
		  [ -s $@ ] || rm -f $@

ifneq ($(MAKECMDGOALS), clean)
ifneq ($(MAKECMDGOALS), etags)
-include $(SRC:.c=.d)
endif
endif
