-#!/usr/bin/make
-
-######################################################################
-# YOU SHOULD NOT NEED TO TOUCH ANYTHING BELOW THIS LINE
-######################################################################
-
-ifndef KERNEL_DIR
-KERNEL_DIR=/usr/src/linux
-endif
-
IPSET_VERSION:=2.3.0
-PREFIX:=/usr/local
-LIBDIR:=$(PREFIX)/lib
-BINDIR:=$(PREFIX)/sbin
-MANDIR:=$(PREFIX)/man
-INCDIR:=$(PREFIX)/include
IPSET_LIB_DIR:=$(LIBDIR)/ipset
-# directory for new iptables releases
-RELEASE_DIR:=/tmp
-
-COPT_FLAGS:=-O2
-CFLAGS:=$(COPT_FLAGS) -Wall -Wunused -I$(KERNEL_DIR)/include -I. -g -DIPSET_DEBUG #-pg # -DIPTC_DEBUG
-SH_CFLAGS:=$(CFLAGS) -fPIC
+IPSET_CFLAGS:=# -g -DIPSET_DEBUG #-pg # -DIPTC_DEBUG
SETTYPES:=ipmap portmap macipmap iphash nethash iptree iptreemap ipporthash
-PROGRAMS=ipset
-SHARED_LIBS=$(foreach T, $(SETTYPES),libipset_$(T).so)
-INSTALL=$(DESTDIR)$(BINDIR)/ipset $(DESTDIR)$(MANDIR)/man8/ipset.8
-INSTALL+=$(foreach T, $(SETTYPES), $(DESTDIR)$(LIBDIR)/ipset/libipset_$(T).so)
-
-all: $(PROGRAMS) $(SHARED_LIBS)
+ifneq ($(wildcard $(KERNEL_DIR)/include/linux/netfilter_ipv4/ip_set.h),)
-install: all $(INSTALL)
+EXTRAS+=ipset/ipset
+EXTRAS+=$(foreach T, $(SETTYPES),ipset/libipset_$(T).so)
+EXTRA_INSTALLS+=$(DESTDIR)$(BINDIR)/ipset $(DESTDIR)$(MANDIR)/man8/ipset.8
+EXTRA_INSTALLS+=$(foreach T, $(SETTYPES), $(DESTDIR)$(LIBDIR)/ipset/libipset_$(T).so)
-clean: $(EXTRA_CLEANS)
- rm -rf $(PROGRAMS) $(SHARED_LIBS) *.o *~
+#Dependencies
+ipset/libipset.d: $(foreach T, $(SETTYPES),ipset/ipset_$(T).c)
+ @-$(CC) -M -MG $(CFLAGS) $(IPSET_CFLAGS) $^ | sed -e 's@^.*\.o:@$*.d $*.a($*.o):@' > $@
#The ipset(8) self
-ipset.o: ipset.c
- $(CC) $(CFLAGS) -DIPSET_VERSION=\"$(IPSET_VERSION)\" -DIPSET_LIB_DIR=\"$(IPSET_LIB_DIR)\" -c -o $@ $<
+ipset/ipset.o: ipset/ipset.c
+ $(CC) $(CFLAGS) $(IPSET_CFLAGS) -DIPSET_VERSION=\"$(IPSET_VERSION)\" -DIPSET_LIB_DIR=\"$(IPSET_LIB_DIR)\" -c -o $@ $<
-ipset: ipset.o
- $(CC) $(CFLAGS) -ldl -rdynamic -o $@ $^
+ipset/ipset: ipset/ipset.o
+ $(CC) $(CFLAGS) $(IPSET_CFLAGS) -ldl -rdynamic -o $@ $^
#Pooltypes
-ipset_%.o: ipset_%.c
- $(CC) $(SH_CFLAGS) -o $@ -c $<
+ipset/ipset_%.o: ipset/ipset_%.c
+ $(CC) $(SH_CFLAGS) $(IPSET_CFLAGS) -o $@ -c $<
-libipset_%.so: ipset_%.o
+ipset/libipset_%.so: ipset/ipset_%.o
$(LD) -shared -o $@ $<
-$(DESTDIR)$(LIBDIR)/ipset/libipset_%.so: libipset_%.so
+$(DESTDIR)$(LIBDIR)/ipset/libipset_%.so: ipset/libipset_%.so
@[ -d $(DESTDIR)$(LIBDIR)/ipset ] || mkdir -p $(DESTDIR)$(LIBDIR)/ipset
cp $< $@
-$(DESTDIR)$(BINDIR)/ipset: ipset
+$(DESTDIR)$(BINDIR)/ipset: ipset/ipset
@[ -d $(DESTDIR)$(BINDIR) ] || mkdir -p $(DESTDIR)$(BINDIR)
cp $< $@
-$(DESTDIR)$(MANDIR)/man8/ipset.8: ipset.8
+$(DESTDIR)$(MANDIR)/man8/ipset.8: ipset/ipset.8
@[ -d $(DESTDIR)$(MANDIR)/man8 ] || mkdir -p $(DESTDIR)$(MANDIR)/man8
cp $< $@
+
+endif