New routers supported
[tomato.git] / release / src / router / ipset / Makefile
blob826b2f997645e4f3f5092caca59525823b630cbb
1 #!/usr/bin/make
3 ######################################################################
4 # YOU SHOULD NOT NEED TO TOUCH ANYTHING BELOW THIS LINE
5 ######################################################################
7 ifndef KERNEL_DIR
8 KERNEL_DIR=/lib/modules/`uname -r`/build
9 endif
10 ifndef KBUILD_OUTPUT
11 KBUILD_OUTPUT=$(KERNEL_DIR)
12 endif
13 ifndef IP_NF_SET_MAX
14 IP_NF_SET_MAX=256
15 endif
16 ifndef IP_NF_SET_HASHSIZE
17 IP_NF_SET_HASHSIZE=1024
18 endif
19 ifndef V
20 V=0
21 endif
23 IPSET_VERSION:=4.5
25 PREFIX:=/usr/local
26 LIBDIR:=$(PREFIX)/lib
27 BINDIR:=$(PREFIX)/sbin
28 MANDIR:=$(PREFIX)/man
29 INCDIR:=$(PREFIX)/include
30 IPSET_LIB_DIR:=$(LIBDIR)/ipset
32 # directory for new iptables releases
33 RELEASE_DIR:=/tmp
35 COPT_FLAGS:=-O2
36 WARN_FLAGS:=-Wall
37 EXTRA_WARN_FLAGS:=\
38 -Wextra \
39 -Waggregate-return \
40 -Wbad-function-cast \
41 -Wcast-align \
42 -Wformat=2 \
43 -Wfloat-equal \
44 -Winit-self \
45 -Winline \
46 -Wmissing-declarations \
47 -Wmissing-prototypes \
48 -Wnested-externs \
49 -Wold-style-definition \
50 -Wpacked \
51 -Wredundant-decls \
52 -Wshadow \
53 -Wsign-compare \
54 -Wstrict-prototypes \
55 -Wswitch-default \
56 -Wswitch-enum \
57 -Wundef \
58 -Wwrite-strings \
59 -Wno-missing-field-initializers
61 ifndef NO_EXTRA_WARN_FLAGS
62 WARN_FLAGS+=$(EXTRA_WARN_FLAGS)
63 endif
65 ABI_FLAGS:=
66 CFLAGS:=$(ABI_FLAGS) $(COPT_FLAGS) $(WARN_FLAGS) -Ikernel/include -I. # -g -DIPSET_DEBUG
67 CFLAGS+=-DIP_NF_SET_HASHSIZE=$(IP_NF_SET_HASHSIZE)
68 SH_CFLAGS:=$(CFLAGS) -fPIC
69 LDFLAGS:=$(ABI_FLAGS)
70 SETTYPES:=ipmap portmap macipmap
71 SETTYPES+=iptree iptreemap
72 SETTYPES+=iphash nethash ipporthash ipportiphash ipportnethash
73 SETTYPES+=setlist
75 PROGRAMS=ipset
76 SHARED_LIBS=$(foreach T, $(SETTYPES),libipset_$(T).so)
77 INSTALL=$(DESTDIR)$(BINDIR)/ipset $(DESTDIR)$(MANDIR)/man8/ipset.8
78 INSTALL+=$(foreach T, $(SETTYPES), $(DESTDIR)$(LIBDIR)/ipset/libipset_$(T).so)
80 all: binaries modules
82 .PHONY: tests
84 tests:
85 cd tests; ./runtest.sh
87 binaries: $(PROGRAMS) $(SHARED_LIBS)
89 binaries_install: binaries $(INSTALL)
91 patch_kernel:
92 cd kernel; ./patch_kernel $(KERNEL_DIR)
94 modules:
95 @[ ! -f $(KERNEL_DIR)/net/ipv4/netfilter/Config.in ] || (echo "Error: The directory '$(KERNEL_DIR)' looks like a Linux 2.4.x kernel source tree, you have to patch it by 'make patch_kernel'." && exit 1)
96 @[ -f $(KERNEL_DIR)/net/ipv4/netfilter/Kconfig ] || (echo "Error: The directory '$(KERNEL_DIR)' doesn't look like a Linux 2.6.x kernel source tree." && exit 1)
97 @[ -f $(KBUILD_OUTPUT)/.config ] || (echo "Error: The kernel source in '$(KERNEL_DIR)' must be configured" && exit 1)
98 @[ -f $(KBUILD_OUTPUT)/Module.symvers ] || echo "Warning: You should run 'make modules' in '$(KERNEL_DIR)' beforehand"
99 cd kernel; make -C $(KBUILD_OUTPUT) M=`pwd` V=$V IP_NF_SET_MAX=$(IP_NF_SET_MAX) IP_NF_SET_HASHSIZE=$(IP_NF_SET_HASHSIZE) modules
101 modules_install: modules
102 cd kernel; make -C $(KBUILD_OUTPUT) M=`pwd` modules_install
104 install: binaries_install modules_install
106 clean: $(EXTRA_CLEANS)
107 rm -rf $(PROGRAMS) $(SHARED_LIBS) *.o *~ tests/*~
108 # [ -f $(KERNEL_DIR)/net/ipv4/netfilter/Config.in ] || (cd kernel; make -C $(KERNEL_DIR) M=`pwd` clean)
110 release: clean
111 cp -a . /tmp/ipset-$(IPSET_VERSION)
112 tar cjf ../ipset-$(IPSET_VERSION).tar.bz2 -C /tmp --exclude=.git ipset-$(IPSET_VERSION)
113 rm -rf /tmp/ipset-$(IPSET_VERSION)
115 #The ipset(8) self
116 ipset.o: ipset.c ipset.h
117 $(CC) $(CFLAGS) -DIPSET_VERSION=\"$(IPSET_VERSION)\" -DIPSET_LIB_DIR=\"$(IPSET_LIB_DIR)\" -c -o $@ $<
119 ipset: ipset.o
120 $(CC) $(CFLAGS) $(LDFLAGS) -rdynamic -o $@ $^ -ldl
122 #Pooltypes
123 ipset_%.o: ipset_%.c ipset.h
124 $(CC) $(SH_CFLAGS) -o $@ -c $<
126 libipset_%.so: ipset_%.o
127 $(CC) -shared $(LDFLAGS) -o $@ $<
129 $(DESTDIR)$(LIBDIR)/ipset/libipset_%.so: libipset_%.so
130 @[ -d $(DESTDIR)$(LIBDIR)/ipset ] || mkdir -p $(DESTDIR)$(LIBDIR)/ipset
131 cp $< $@
133 $(DESTDIR)$(BINDIR)/ipset: ipset
134 @[ -d $(DESTDIR)$(BINDIR) ] || mkdir -p $(DESTDIR)$(BINDIR)
135 cp $< $@
137 $(DESTDIR)$(MANDIR)/man8/ipset.8: ipset.8
138 @[ -d $(DESTDIR)$(MANDIR)/man8 ] || mkdir -p $(DESTDIR)$(MANDIR)/man8
139 cp $< $@