#!/bin/bash

SOURCE="/root/broadcom-wl"
KERNEL_VERSION="$(uname -r)"

echo "This script assumes that you have downloaded version 5.10.79.10 of the Broadcom
'wl' Linux driver (3/5/2009) from http://www.broadcom.com/support/802.11/linux_sta.php
and unpacked it to \"${SOURCE}\".

It will build the module and then copy it into the running kernel's modules
tree (/lib/modules/${KERNEL_VERSION}/kernel/net/wireless/).
"
read -p "Press enter to proceed, CTRL-C to abort."

cd "${SOURCE}" || \
 { echo -e "\nAn error occurred while changing directory to ${SOURCE}.\n"; exit 1; }
echo -e "\nCleaning..."
make -C /lib/modules/${KERNEL_VERSION}/build M=${SOURCE} clean || \
 { echo -e "\nAn error occurred while cleaning out ${SOURCE}.\n"; exit 3; }
echo -e "\nBuilding..."
make -C /lib/modules/${KERNEL_VERSION}/build M=${SOURCE} || \
 { echo -e "\nAn error occurred while building the driver. Incompatible kernel version?\n"; exit 4; }
echo -e "\nCopying the finished driver into the modules directory (under kernel/net/wireless)..."
cp wl.ko /lib/modules/${KERNEL_VERSION}/kernel/net/wireless/ || \
 { echo -e "\nAn error occurred while copying the driver to the modules directory.\n"; exit 5; }
echo -e "\nUpdating module dependencies..."
depmod -ae || \
 { echo -e "\nAn error occurred while updating module dependencies.\n"; exit 6; }
echo -e "\nAll done. \`modprobe wl\` should load the driver now."
