broadcom-wl: - fix compilation against eglibc and glibc (#7521) - unbind device from...
authorJo-Philipp Wich <jow@openwrt.org>
Thu, 1 Jul 2010 01:06:32 +0000 (01:06 +0000)
committerJo-Philipp Wich <jow@openwrt.org>
Thu, 1 Jul 2010 01:06:32 +0000 (01:06 +0000)
SVN-Revision: 22007

package/broadcom-wl/Makefile
package/broadcom-wl/files/etc/init.d/wlunbind [new file with mode: 0755]
package/broadcom-wl/patches/002-ctype.patch [new file with mode: 0644]

index 2d4aacf14eddaecf9c596bf9586a312704703023..ebf9b38618735503f130d7e1ca1850a128d3fa4a 100644 (file)
@@ -126,7 +126,9 @@ define Build/Compile
                $(PKG_BUILD_DIR)/nas_exe.o \
                $(PKG_BUILD_DIR)/shared/libshared.a
 
-       $(TARGET_CC) -o $(PKG_BUILD_DIR)/wl $(PKG_BUILD_DIR)/wl_exe.o
+       $(TARGET_CC) -o $(PKG_BUILD_DIR)/wl \
+               $(PKG_BUILD_DIR)/wl_exe.o \
+               $(PKG_BUILD_DIR)/shared/libshared.a
 endef
 
 define Build/InstallDev
@@ -140,6 +142,11 @@ define Package/wlc/install
        $(INSTALL_BIN) $(PKG_BUILD_DIR)/wlc $(1)/sbin/
 endef
 
+define Package/wlc/postinst
+#!/bin/sh
+[ -n "$${IPKG_INSTROOT}" ] || /etc/init.d/wlunbind enable || true
+endef
+
 define Package/wl/install
        $(INSTALL_DIR) $(1)/usr/sbin
        $(INSTALL_BIN) $(PKG_BUILD_DIR)/wl $(1)/usr/sbin/
diff --git a/package/broadcom-wl/files/etc/init.d/wlunbind b/package/broadcom-wl/files/etc/init.d/wlunbind
new file mode 100755 (executable)
index 0000000..80a8f0e
--- /dev/null
@@ -0,0 +1,23 @@
+#!/bin/sh /etc/rc.common
+# Copyright (C) 2010 OpenWrt.org
+
+START=09
+
+boot() {
+       local sysfs=/sys/bus/pci/drivers/b43-pci-bridge
+       if [ -d "$sysfs" ]; then
+               local lnk
+               for lnk in $sysfs/*; do
+                       [ -h "$lnk" ] || continue
+                       case "${lnk##*/}" in
+                               *:*:*.*)
+                                       logger "Unbinding WL PCI device ${lnk##*/} from B43 SSB bridge"
+                                       echo -n "${lnk##*/}" > "$sysfs/unbind"
+                               ;;
+                       esac
+               done
+       fi
+}
+
+start() { :; }
+stop() { :; }
diff --git a/package/broadcom-wl/patches/002-ctype.patch b/package/broadcom-wl/patches/002-ctype.patch
new file mode 100644 (file)
index 0000000..16d13df
--- /dev/null
@@ -0,0 +1,30 @@
+--- a/shared/Makefile
++++ b/shared/Makefile
+@@ -19,7 +19,7 @@ LDFLAGS += -L.
+ AR=ar
+ RANLIB=ranlib
+-OBJS := shutils.o wl.o wl_linux.o linux_timer.o
++OBJS := shutils.o wl.o wl_linux.o linux_timer.o ctype.o
+ all: libshared.a
+ clean:
+--- /dev/null
++++ b/shared/ctype.c
+@@ -0,0 +1,16 @@
++#include <features.h>
++
++#ifndef __UCLIBC__
++extern void **__ctype_b_loc();
++extern void **__ctype_tolower_loc();
++
++void *__ctype_b;
++void *__ctype_tolower;
++
++static void init(void) __attribute__((constructor));
++static void init(void)
++{
++    __ctype_b = *__ctype_b_loc();
++    __ctype_tolower = *__ctype_tolower_loc();
++}
++#endif