# enable extra debugging information
# Do not set with = or := so we can inherit from the caller
$(warning Building userland ipfw for $(VER))
-EXTRA_CFLAGS +=
EXTRA_CFLAGS += -O1
+EXTRA_CFLAGS += -Wall -Werror
EXTRA_CFLAGS += -include ../glue.h
-
-LDFLAGS=
-
-EXTRA_CFLAGS += -I ./include
+EXTRA_CFLAGS += -I ./include_e -I ./include
ifneq ($(VER),openwrt)
OSARCH := $(shell uname)
endif # !openwrt
CFLAGS += $(EXTRA_CFLAGS)
+# Location of OS headers and libraries. After our stuff.
+USRDIR?= /usr
+CFLAGS += -I$(USRDIR)/include
+LDFLAGS += -L$(USRDIR)/lib
-OBJS = ipfw2.o dummynet.o main.o ipv6.o altq.o
+OBJS = ipfw2.o dummynet.o main.o ipv6.o altq.o qsort_r.o
+OBJS += expand_number.o humanize_number.o
ifneq ($(HAVE_NAT),)
OBJS += nat.o
EXTRA_CFLAGS += -DHAVE_NAT
ipfw: $(OBJS)
$(CC) $(LDFLAGS) -o $@ $^
-$(OBJS) : ipfw2.h ../glue.h
+$(OBJS) : ipfw2.h ../glue.h include/netinet include_e
+
+# support to create empty dirs and files in include_e/
+# EDIRS is the list of directories, EFILES is the list of files.
+
+EDIRS = sys
+
+EFILES = sys/sockio.h libutil.h
+M ?= $(shell pwd)
+
+include_e:
+ echo "running in $M"
+ -@rm -rf $(M)/include_e opt_*
+ -@mkdir -p $(M)/include_e
+ -@(cd $(M)/include_e; mkdir -p $(EDIRS); touch $(EFILES) )
+
+include/netinet:
+ -@rm -rf include/netinet
+ -@mkdir -p include/netinet
+ -(cd include/netinet; \
+ for i in ip_fw.h ip_dummynet.h tcp.h; do \
+ ln -s ../../../dummynet/include/netinet/$$i; done; )
clean distclean:
-rm -f $(OBJS) ipfw
+ -rm -rf include/netinet/