Browse Source

broadcom-wl: - fix compilation against eglibc and glibc (#7521) - unbind device from b43 ssb bridge on boot (#7529)

SVN-Revision: 22007
Jo-Philipp Wich 15 years ago
parent
commit
28e4d39009

+ 8 - 1
package/broadcom-wl/Makefile

@@ -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/

+ 23 - 0
package/broadcom-wl/files/etc/init.d/wlunbind

@@ -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() { :; }

+ 30 - 0
package/broadcom-wl/patches/002-ctype.patch

@@ -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