1#
2# Copyright (C) 2006-2014 OpenWrt.org
3#
4# This is free software, licensed under the GNU General Public License v2.
5# See /LICENSE for more information.
6#
7
8include $(TOPDIR)/rules.mk
9include $(INCLUDE_DIR)/kernel.mk
10
11PKG_NAME:=broadcom-wl
12PKG_VERSION:=5.10.56.27.3
13PKG_RELEASE:=8
14
15PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)_$(ARCH).tar.bz2
16PKG_SOURCE_URL:=http://downloads.openwrt.org/sources
17
18PKG_MD5SUM.mipsel:=3363e3a6b3d9d73c49dea870c7834eac
19PKG_MD5SUM.mips:=f8de63debc75333d6b4e28193eb051ff
20PKG_MD5SUM:=$(PKG_MD5SUM.$(ARCH))
21
22PKG_USE_MIPS16:=0
23PKG_FLAGS:=nonshared
24
25include $(INCLUDE_DIR)/package.mk
26
27define Package/broadcom-wl/Default
28  SECTION:=kernel
29  CATEGORY:=Kernel modules
30  DEPENDS:=@PACKAGE_kmod-brcm-wl||PACKAGE_kmod-brcm-wl-mini
31  SUBMENU:=Proprietary BCM43xx WiFi driver
32  SUBMENUDEP:=@TARGET_brcm47xx||TARGET_brcm63xx
33endef
34
35define KernelPackage/brcm-wl/Default
36  $(call Package/broadcom-wl/Default)
37  SECTION:=kernel
38  DEPENDS:=@TARGET_brcm47xx||TARGET_brcm63xx +wireless-tools
39  TITLE:=Kernel driver for BCM43xx chipsets
40  FILES:=$(PKG_BUILD_DIR)/driver$(1)/wl.ko $(PKG_BUILD_DIR)/glue/wl_glue.ko
41  AUTOLOAD:=$(call AutoLoad,30,wl_glue wl)
42endef
43
44define KernelPackage/brcm-wl/Default/description
45 This package contains the proprietary wireless driver for the Broadcom 
46 BCM43xx chipset.
47endef
48
49define KernelPackage/brcm-wl
50$(call KernelPackage/brcm-wl/Default,)
51  TITLE+= (normal version)
52endef
53
54define KernelPackage/brcm-wl/description
55$(call KernelPackage/brcm-wl/Default/description)
56endef
57
58define KernelPackage/brcm-wl-mini
59$(call KernelPackage/brcm-wl/Default,-mini)
60  TITLE+= (Legacy version)
61endef
62
63define KernelPackage/brcm-wl-mini/description
64$(call KernelPackage/brcm-wl/Default/description)
65endef
66
67define Package/wlc
68$(call Package/broadcom-wl/Default)
69  TITLE:=wl driver setup utility
70endef
71
72define Package/wlc/description
73 This package contains an utility for initializing the proprietary Broadcom 
74 wl driver.
75endef
76
77define Package/wl
78$(call Package/broadcom-wl/Default)
79  TITLE:=Proprietary Broadcom wl driver config utility
80endef
81
82define Package/wl/description
83 This package contains the proprietary utility (wl) for configuring the 
84 proprietary Broadcom wl driver.
85endef
86
87define Package/nas
88$(call Package/broadcom-wl/Default)
89  TITLE:=Proprietary Broadcom WPA/WPA2 authenticator
90endef
91
92define Package/nas/description
93 This package contains the proprietary WPA/WPA2 authenticator (nas) for the 
94 proprietary Broadcom wl driver.
95endef
96
97MAKE_KMOD := $(MAKE) -C "$(LINUX_DIR)" \
98		CROSS_COMPILE="$(TARGET_CROSS)" \
99		ARCH="$(LINUX_KARCH)" \
100		PATH="$(TARGET_PATH)" \
101		SUBDIRS="$(PKG_BUILD_DIR)/kmod" \
102
103define Build/Prepare
104	$(call Build/Prepare/Default)
105	$(CP) $(PKG_BUILD_DIR)/driver $(PKG_BUILD_DIR)/driver-mini
106	$(CP) ./src/glue $(PKG_BUILD_DIR)/glue
107endef
108
109define Build/Compile
110	# Compile the kernel part
111	$(MAKE_KMOD) \
112		SUBDIRS="$(PKG_BUILD_DIR)/driver" \
113		MODFLAGS="-DMODULE -mlong-calls" \
114		modules
115
116	$(MAKE_KMOD) \
117		SUBDIRS="$(PKG_BUILD_DIR)/driver-mini" \
118		MODFLAGS="-DMODULE -mlong-calls" \
119		BUILD_TYPE="wl_apsta_mini" \
120		modules
121
122	# Compile glue driver
123	$(MAKE_KMOD) -C "$(LINUX_DIR)" \
124		SUBDIRS="$(PKG_BUILD_DIR)/glue" \
125		modules                                        
126
127	# Compile libshared
128	$(MAKE) -C $(PKG_BUILD_DIR)/shared \
129		$(TARGET_CONFIGURE_OPTS) \
130		CFLAGS="$(TARGET_CFLAGS) -I. -I$(PKG_BUILD_DIR)/driver/include" \
131		all
132
133	$(TARGET_CC) -o $(PKG_BUILD_DIR)/wlc \
134		-I$(PKG_BUILD_DIR)/shared -I$(PKG_BUILD_DIR)/driver/include \
135		./src/wlc.c $(PKG_BUILD_DIR)/shared/libshared.a
136
137	$(TARGET_CC) -o $(PKG_BUILD_DIR)/nas \
138		$(PKG_BUILD_DIR)/nas_exe.o \
139		$(PKG_BUILD_DIR)/shared/libshared.a
140
141	$(TARGET_CC) -o $(PKG_BUILD_DIR)/wl \
142		$(PKG_BUILD_DIR)/wl_exe.o \
143		$(PKG_BUILD_DIR)/shared/libshared.a
144endef
145
146define Build/InstallDev
147	$(INSTALL_DIR) $(1)/usr/lib
148	$(CP) $(PKG_BUILD_DIR)/shared/libshared.a $(1)/usr/lib/
149endef
150
151define Package/wlc/install
152	$(CP) ./files/* $(1)/
153	$(INSTALL_DIR) $(1)/sbin
154	$(INSTALL_BIN) $(PKG_BUILD_DIR)/wlc $(1)/sbin/
155endef
156
157define Package/wlc/postinst
158#!/bin/sh
159[ -n "$${IPKG_INSTROOT}" ] || /etc/init.d/wlunbind enable || true
160endef
161
162define Package/wl/install
163	$(INSTALL_DIR) $(1)/usr/sbin
164	$(INSTALL_BIN) $(PKG_BUILD_DIR)/wl $(1)/usr/sbin/
165endef
166
167define Package/nas/install
168	$(INSTALL_DIR) $(1)/usr/sbin
169	$(INSTALL_BIN) $(PKG_BUILD_DIR)/nas $(1)/usr/sbin/
170	$(LN) nas $(1)/usr/sbin/nas4not
171	$(LN) nas $(1)/usr/sbin/nas4wds
172endef
173
174$(eval $(call KernelPackage,brcm-wl))
175$(eval $(call KernelPackage,brcm-wl-mini))
176$(eval $(call BuildPackage,wlc))
177$(eval $(call BuildPackage,wl))
178$(eval $(call BuildPackage,nas))
179