LICENSE     := GPL
VERSION     := 1
DOWNLOADS   := dwc_otg.git usb.archive lxip.archive wifi.archive \
               libnl.archive wpa_supplicant.archive \
               fw_6000.archive fw_6205a.archive fw_6205b.archive fw_7260.archive fw_7265.archive

#
# Tools
#
$(call check_tool,flex)
$(call check_tool,bison)

FLEX = flex
YACC = bison

#
# The git checkout checks for the existence of SRC_DIR, which is created by the
# Linux extraction, therefore make sure to checkout the GIT sources first.
#
usb.archive: dwc_otg.git

#
# USB
#
SRC_DIR_USB  := src/lib/usb
VERSION_USB  := 3.14.5
URL(usb)     := http://www.kernel.org/pub/linux/kernel/v3.x/linux-$(VERSION_USB).tar.gz
SHA(usb)     := 675bb3446cbf0889d59a048f6af177ca0a7aacb5
DIR(usb)     := $(SRC_DIR_USB)
TAR_OPT(usb) := --strip-components=1 --files-from $(REP_DIR)/usb.list
HASH_INPUT   += $(REP_DIR)/usb.list

#
# Raspberry Pi USB controller
#
URL(dwc_otg) := https://github.com/nfeske/dwc_otg.git
REV(dwc_otg) := r2
DIR(dwc_otg) := $(SRC_DIR_USB)/drivers/usb/host/dwc_otg

#
# mac80211 stack, iwlwifi and iwslegacy sources
#
SRC_DIR_WIFI  := src/lib/wifi
URL(wifi)     := ${URL(usb)}
SHA(wifi)     := ${SHA(usb)}
DIR(wifi)     := $(SRC_DIR_WIFI)
TAR_OPT(wifi) := --strip-components=1  --files-from $(REP_DIR)/wifi.list
HASH_INPUT    += $(REP_DIR)/wifi.list

#
# IP stack sources
#
SRC_DIR_LXIP  := src/lib/lxip
VERSION_LXIP  := 3.9
URL(lxip)     := http://www.kernel.org/pub/linux/kernel/v3.x/linux-$(VERSION_LXIP).tar.gz
SHA(lxip)     := 7979f0d670838d0552c7ede5cc06497b81dcd812
DIR(lxip)     := $(SRC_DIR_LXIP)
TAR_OPT(lxip) := --strip-components=1  --files-from $(REP_DIR)/lxip.list
HASH_INPUT    += $(REP_DIR)/lxip.list


# libnl sources
#
URL(libnl) := http://www.infradead.org/~tgr/libnl/files/libnl-3.2.25.tar.gz
SHA(libnl) := b7a4981f7edf7398256d35fd3c0b87bc84ae27d1
DIR(libnl) := src/lib/libnl


default: generate_libnl_files
generate_libnl_files: $(DOWNLOADS)
	@$(MSG_PREFIX)"generate libnl files "
	$(VERBOSE)$(FLEX) --header-file=${DIR(libnl)}/lib/route/pktloc_grammar.h \
	                  -o ${DIR(libnl)}/lib/route/pktloc_grammar.c            \
	                   ${DIR(libnl)}/lib/route/pktloc_grammar.l
	$(VERBOSE)$(YACC) -d -o ${DIR(libnl)}/lib/route/pktloc_syntax.c \
	                  ${DIR(libnl)}/lib/route/pktloc_syntax.y
	$(VERBOSE)$(FLEX) --header-file=${DIR(libnl)}/lib/route/cls/ematch_grammar.h \
	                  -o ${DIR(libnl)}/lib/route/cls/ematch_grammar.c            \
	                  ${DIR(libnl)}/lib/route/cls/ematch_grammar.l
	$(VERBOSE)$(YACC) -d -o ${DIR(libnl)}/lib/route/cls/ematch_syntax.c \
	                  ${DIR(libnl)}/lib/route/cls/ematch_syntax.y

#
# wpa_supplicant sources
#
URL(wpa_supplicant) := http://w1.fi/releases/wpa_supplicant-2.2.tar.gz
SHA(wpa_supplicant) := 0c2ff4fd2e2f6325147cca0357d6c9f524efa26a
DIR(wpa_supplicant) := src/app/wpa_supplicant

#
# Firmware images for iwlwifi Ultimate-N 6300 and Advanced-N 6200
#
URL(fw_6000)     := https://wireless.wiki.kernel.org/_media/en/users/drivers/iwlwifi-6000-ucode-9.221.4.1.tgz
SHA(fw_6000)     := a888cf54974702594e82bcbfca20c26d8f906e9f
DIR(fw_6000)     := firmware

default: symlink_fw_6000
symlink_fw_6000: $(DOWNLOADS)
	@$(MSG_PREFIX)symlink firmware 6000-4 to 6000-6
	$(VERBOSE)ln -sf iwlwifi-6000-4.ucode firmware/iwlwifi-6000-6.ucode

#
# Firmware images for iwlwifi Advanced-N 6205
#
URL(fw_6205a)     := https://wireless.wiki.kernel.org/_media/en/users/drivers/iwlwifi-6000g2a-ucode-18.168.6.1.tgz
SHA(fw_6205a)     := a542c82dba96e0bfb1b0e01817a59575c5c87fc4
DIR(fw_6205a)     := firmware

#
# Firmware images for iwlwifi Advanced-N 6230 / 6235 and Wireless-N 130 / 1030
#
URL(fw_6205b)     := https://wireless.wiki.kernel.org/_media/en/users/drivers/iwlwifi-6000g2b-ucode-18.168.6.1.tgz
SHA(fw_6205b)     := f4c72b75ae8415661182d63154234dc0a55bc3db
DIR(fw_6205b)     := firmware

#
# Firmware images for iwlwifi Wireless 7260
#
URL(fw_7260)     := https://wireless.wiki.kernel.org/_media/en/users/drivers/iwlwifi-7260-ucode-22.24.8.0.tgz
SHA(fw_7260)     := d4ef19560464b9dc9a2278c31d6158f0615871c7
DIR(fw_7260)     := firmware

#
# Firmware images for iwlwifi Wireless 7265
#
URL(fw_7265)     := https://wireless.wiki.kernel.org/_media/en/users/drivers/iwlwifi-7265-ucode-22.24.8.0.tgz
SHA(fw_7265)     := 92ab0629010c2545689a868bc53b808474410159
DIR(fw_7265)     := firmware

#
# Patches
#
PATCHES := $(addprefix patches/,$(notdir $(wildcard $(REP_DIR)/patches/*.patch)))

# USB
USB_OPT = -p1 -d$(SRC_DIR_USB)
PATCH_OPT(patches/usb_ax88179.patch)     := $(USB_OPT)
PATCH_OPT(patches/usb_csum.patch)        := $(USB_OPT)
PATCH_OPT(patches/usb_evdev.patch)       := $(USB_OPT)
PATCH_OPT(patches/usb_mem.patch)         := $(USB_OPT)
PATCH_OPT(patches/usb_usbnet.patch)      := $(USB_OPT)
PATCH_OPT(patches/usb_xchi-quirks.patch) := $(USB_OPT)
PATCH_OPT(patches/usb_wacom.patch)       := $(USB_OPT)

#IP stack
LXIP_OPT = -p1 -d$(SRC_DIR_LXIP)
PATCH_OPT(patches/lxip_icmp.patch)      := $(LXIP_OPT)
PATCH_OPT(patches/lxip_ip_config.patch) := $(LXIP_OPT)
PATCH_OPT(patches/lxip_skbuff.patch)    := $(LXIP_OPT)
PATCH_OPT(patches/lxip_tcp.patch)       := $(LXIP_OPT)
PATCH_OPT(patches/lxip_netlink.patch)   := $(LXIP_OPT)

# WIFI
WIFI_OPT = -p1 -d$(SRC_DIR_WIFI)
PATCH_OPT(patches/wifi.patch)     := $(WIFI_OPT)
PATCH_OPT(patches/wifi_crypto.patch) := $(WIFI_OPT)
PATCH_OPT(patches/wifi_mem.patch) := $(WIFI_OPT)

# libnl
PATCH_OPT(patches/libnl.patch) := -p1 -d ${DIR(libnl)}

# WPA supplicant
PATCH_OPT(patches/wpa_supplicant.patch) := -p1 -d ${DIR(wpa_supplicant)}

# vi: set ft=make :
