1#! /usr/bin/make
2
3all: $(SHARED_LIBS) $(EXTRAS)
4
5experimental: $(EXTRAS_EXP)
6
7# Have to handle extensions which no longer exist.
8clean: $(EXTRA_CLEANS)
9	rm -f $(SHARED_LIBS) $(EXTRAS) $(EXTRAS_EXP) $(SHARED_LIBS:%.so=%_sh.o)
10	rm -f extensions/initext.c extensions/initext6.c
11	@find . -name '*.[ao]' -o -name '*.so' | xargs rm -f
12
13install: all $(EXTRA_INSTALLS)
14	@if [ -f /usr/local/bin/iptables -a "$(BINDIR)" = "/usr/local/sbin" ];\
15	then echo 'Erasing iptables from old location (now /usr/local/sbin).';\
16	rm -f /usr/local/bin/iptables;\
17	fi
18
19install-experimental: $(EXTRA_INSTALLS_EXP)
20
21TAGS:
22	@rm -f $@
23	find . -name '*.[ch]' | xargs etags -a
24
25dep: $(DEPFILES) $(EXTRA_DEPENDS)
26	@echo Dependencies will be generated on next make.
27	rm -f $(DEPFILES) $(EXTRA_DEPENDS) .makefirst
28
29$(SHARED_LIBS:%.so=%.d): %.d: %.c
30	@-$(CC) -M -MG $(CFLAGS) $< | \
31	    sed -e 's@^.*\.o:@$*.d $*_sh.o:@' > $@
32
33$(SHARED_LIBS): %.so : %_sh.o
34	$(LD) -shared -o $@ $<
35
36%_sh.o : %.c
37	$(CC) $(SH_CFLAGS) -o $@ -c $<
38
39.makefirst:
40	@echo Making dependencies: please wait...
41	@touch .makefirst
42
43# This is useful for when dependencies completely screwed
44%.h::
45	@echo Something wrong... deleting dependencies.
46	@-rm -f $(DEPFILES) $(EXTRA_DEPENDS) .makefirst
47	@[ -d $(KERNEL_DIR)/include/linux/netfilter_ipv4 ] || echo -e '\n\n    Please try `make KERNEL_DIR=path-to-correct-kernel'\'.'\n\n'
48	@exit 1
49
50-include $(DEPFILES) $(EXTRA_DEPENDS)
51-include .makefirst
52