#! /usr/bin/make

EXT_FUNC+=nat arp ip standard log
EXT_TABLES+=filter nat
EXT_OBJS+=$(foreach T,$(EXT_FUNC), extensions/ebt_$(T).o)
EXT_OBJS+=$(foreach T,$(EXT_TABLES), extensions/ebtable_$(T).o)

initext.o: initext.c

initext.c: extensions/Makefile
	echo "" > $@
	for i in $(EXT_FUNC); do \
		echo "extern void $${i}_init(void);" >> $@; \
	done
	for i in $(EXT_TABLES); do \
		echo "extern void $${i}_init_t(void);" >> $@; \
	done
	echo "void init_extensions(void) {" >> $@
	for i in $(EXT_FUNC); do \
		echo "  $${i}_init();" >> $@; \
	done
	for i in $(EXT_TABLES); do \
		echo "  $${i}_init_t();" >> $@; \
	done
	echo "}" >> $@

extensions/ebt_%.o: extensions/ebt_%.c include/ebtables_u.h
	$(CC) -D_INIT=$*_init $(CFLAGS) -c -o $@ $<
extensions/ebtable_%.o: extensions/ebtable_%.c
	$(CC) -D_INIT=$*_init_t $(CFLAGS) -c -o $@ $<

