| 1 | #!/usr/bin/make -f |
|---|
| 2 | |
|---|
| 3 | ifndef BUILDROOT |
|---|
| 4 | ERR := $(error Please set BUILDROOT to OpenWRT's buildroot) |
|---|
| 5 | endif |
|---|
| 6 | |
|---|
| 7 | ARCH:=mipsel |
|---|
| 8 | |
|---|
| 9 | WIFIDOG_MAJOR_VERSION := $(shell awk -F= '$$1 == "WIFIDOG_MAJOR_VERSION" {print $$2}' configure.in) |
|---|
| 10 | WIFIDOG_MINOR_VERSION := $(shell awk -F= '$$1 == "WIFIDOG_MINOR_VERSION" {print $$2}' configure.in) |
|---|
| 11 | WIFIDOG_MICRO_VERSION := $(shell awk -F= '$$1 == "WIFIDOG_MICRO_VERSION" {print $$2}' configure.in) |
|---|
| 12 | VERSION=$(WIFIDOG_MAJOR_VERSION).$(WIFIDOG_MINOR_VERSION).$(WIFIDOG_MICRO_VERSION) |
|---|
| 13 | |
|---|
| 14 | BUILD_DIR:=$(CURDIR)/ipkg |
|---|
| 15 | TMP_DIR:=$(BUILD_DIR)/tmp |
|---|
| 16 | STAGING_DIR=$(BUILDROOT)/build_$(ARCH)/staging_dir |
|---|
| 17 | IPKG_DIR := $(wildcard $(BUILDROOT)/build_$(ARCH)/ipkg-utils-*/) |
|---|
| 18 | IPTABLES_DIR := $(wildcard $(BUILDROOT)/build_$(ARCH)/iptables-*/) |
|---|
| 19 | KERNEL_VERSION := $(shell awk '$$1 == "\#define" && $$2 == "UTS_RELEASE" {gsub(/["]/, "", $$3); print $$3}' $(BUILDROOT)/build_$(ARCH)/WRT54GS/release/src/linux/linux/include/linux/version.h) |
|---|
| 20 | KERNEL_MODULES_DIR := $(BUILDROOT)/build_$(ARCH)/WRT54GS/release/src/linux/linux/modules/lib/modules/$(KERNEL_VERSION) |
|---|
| 21 | UCLIBC_DIR := $(wildcard $(BUILDROOT)/build_$(ARCH)/uClibc*/) |
|---|
| 22 | |
|---|
| 23 | GNU_TARGET_NAME=$(ARCH)-linux |
|---|
| 24 | TARGET_CROSS=$(STAGING_DIR)/bin/$(ARCH)-linux-uclibc- |
|---|
| 25 | |
|---|
| 26 | CC=$(TARGET_CROSS)gcc |
|---|
| 27 | LD=$(TARGET_CROSS)ld |
|---|
| 28 | AR=$(TARGET_CROSS)ar |
|---|
| 29 | RANLIB=$(TARGET_CROSS)ranlib |
|---|
| 30 | STRIP=$(TARGET_CROSS)strip |
|---|
| 31 | IPKG_BUILD=$(STAGING_DIR)/bin/ipkg-build |
|---|
| 32 | |
|---|
| 33 | all: binary |
|---|
| 34 | |
|---|
| 35 | build: build-wifidog build-iptables build-ipkg-utils |
|---|
| 36 | |
|---|
| 37 | build-wifidog: build-wifidog-stamp |
|---|
| 38 | build-wifidog-stamp: |
|---|
| 39 | ./autogen.sh |
|---|
| 40 | -$(MAKE) distclean |
|---|
| 41 | CC=$(CC) LD=$(LD) AR=$(AR) RANLIB=$(RANLIB) ./configure --prefix=/usr --host=$(ARCH) --target=$(ARCH) |
|---|
| 42 | $(MAKE) |
|---|
| 43 | |
|---|
| 44 | touch build-wifidog-stamp |
|---|
| 45 | |
|---|
| 46 | build-ipkg-utils: build-ipkg-utils-stamp |
|---|
| 47 | build-ipkg-utils-stamp: |
|---|
| 48 | $(MAKE) -C $(BUILDROOT) ipkg-utils |
|---|
| 49 | touch build-ipkg-utils-stamp |
|---|
| 50 | |
|---|
| 51 | build-iptables: build-iptables-stamp |
|---|
| 52 | build-iptables-stamp: |
|---|
| 53 | sed "s/PF_EXT_SLIB:=icmp/PF_EXT_SLIB:=mac icmp/" $(IPTABLES_DIR)/extensions/Makefile > $(IPTABLES_DIR)/extensions/Makefile.patched |
|---|
| 54 | mv -f $(IPTABLES_DIR)/extensions/Makefile.patched $(IPTABLES_DIR)/extensions/Makefile |
|---|
| 55 | CC=$(CC) LD=$(LD) AR=$(AR) RANLIB=$(RANLIB) $(MAKE) -C $(IPTABLES_DIR) KERNEL_DIR=../../linux/linux/ |
|---|
| 56 | |
|---|
| 57 | touch build-iptables-stamp |
|---|
| 58 | |
|---|
| 59 | clean: |
|---|
| 60 | -$(MAKE) clean |
|---|
| 61 | -$(MAKE) distclean |
|---|
| 62 | $(MAKE) -C $(IPTABLES_DIR) clean |
|---|
| 63 | rm -rf $(TMP_DIR) |
|---|
| 64 | rm -f build-wifidog-stamp |
|---|
| 65 | rm -f build-iptables-stamp |
|---|
| 66 | rm -f build-ipkg-utils-stamp |
|---|
| 67 | |
|---|
| 68 | install: build install-wifidog install-iptables install-kernel-modules install-pthread |
|---|
| 69 | mkdir -p $(TMP_DIR)/etc |
|---|
| 70 | cp $(CURDIR)/wifidog.conf $(TMP_DIR)/etc |
|---|
| 71 | mkdir -p $(TMP_DIR)/usr/bin |
|---|
| 72 | #OpenWrt doesn't have a full init.d architecture, but we still need the module check so we install the normal init.d script in /usr/bin/wifidog-init |
|---|
| 73 | cp $(CURDIR)/scripts/init.d/wifidog $(TMP_DIR)/usr/bin/wifidog-init |
|---|
| 74 | chmod +x $(TMP_DIR)/usr/bin/wifidog-init |
|---|
| 75 | #And call wifidog-init from S65wifidog |
|---|
| 76 | mkdir -p $(TMP_DIR)/etc/init.d |
|---|
| 77 | cp $(CURDIR)/scripts/openwrt/S65wifidog $(TMP_DIR)/etc/init.d |
|---|
| 78 | chmod +x $(TMP_DIR)/etc/init.d/S65wifidog |
|---|
| 79 | |
|---|
| 80 | install-wifidog: |
|---|
| 81 | mkdir -p $(TMP_DIR)/usr/bin |
|---|
| 82 | cp $(CURDIR)/src/wifidog $(TMP_DIR)/usr/bin |
|---|
| 83 | cp $(CURDIR)/src/wdctl $(TMP_DIR)/usr/bin |
|---|
| 84 | $(STRIP) $(TMP_DIR)/usr/bin/wifidog |
|---|
| 85 | $(STRIP) $(TMP_DIR)/usr/bin/wdctl |
|---|
| 86 | |
|---|
| 87 | install-iptables: |
|---|
| 88 | mkdir -p $(TMP_DIR)/usr/lib/iptables |
|---|
| 89 | cp $(IPTABLES_DIR)/extensions/libipt_{mac,mark,MARK}.so $(TMP_DIR)/usr/lib/iptables |
|---|
| 90 | |
|---|
| 91 | install-kernel-modules: |
|---|
| 92 | mkdir -p $(TMP_DIR)/lib/modules/$(KERNEL_VERSION)/kernel/net/ipv4/netfilter |
|---|
| 93 | cp $(KERNEL_MODULES_DIR)/kernel/net/ipv4/netfilter/ipt_mac.o $(TMP_DIR)/lib/modules/$(KERNEL_VERSION)/kernel/net/ipv4/netfilter |
|---|
| 94 | |
|---|
| 95 | install-pthread: |
|---|
| 96 | mkdir -p $(TMP_DIR)/lib |
|---|
| 97 | cp $(UCLIBC_DIR)/lib/libpthread*so $(TMP_DIR)/lib |
|---|
| 98 | cp $(UCLIBC_DIR)/lib/libpthread*so.0 $(TMP_DIR)/lib |
|---|
| 99 | |
|---|
| 100 | binary: build install |
|---|
| 101 | mkdir -p $(TMP_DIR)/CONTROL |
|---|
| 102 | echo "Package: wifidog" > $(TMP_DIR)/CONTROL/control |
|---|
| 103 | echo "Version: $(VERSION)" >> $(TMP_DIR)/CONTROL/control |
|---|
| 104 | echo "Architecture: $(ARCH)" >> $(TMP_DIR)/CONTROL/control |
|---|
| 105 | echo "Section: base" >> $(TMP_DIR)/CONTROL/control |
|---|
| 106 | echo "Maintainer: WiFiDog <wifidog@listes.ilesansfil.org>" >> $(TMP_DIR)/CONTROL/control |
|---|
| 107 | echo "Priority: optional" >> $(TMP_DIR)/CONTROL/control |
|---|
| 108 | echo "Description: The WiFiDog project is a complete and embeedable captive portal solution for wireless community groups or individuals who wish to open a free HotSpot while still preventing abuse of their Internet connection." >> $(TMP_DIR)/CONTROL/control |
|---|
| 109 | echo "Source: http://www.ilesansfil.org/wiki/WiFiDog" >> $(TMP_DIR)/CONTROL/control |
|---|
| 110 | echo "/etc/wifidog.conf" > $(TMP_DIR)/CONTROL/conffiles |
|---|
| 111 | $(IPKG_BUILD) -c -o root -g root $(TMP_DIR) $(CURDIR) |
|---|
| 112 | |
|---|
| 113 | .PHONY: all clean build install binary |
|---|
| 114 | |
|---|