#!/bin/sh # $Id$ # ----------------------------------------------------------------------------- # # Slackware SlackBuild script # =========================== # By: Eric Hameleers # For: bcm5700 # URL: http://www.broadcom.com/drivers/downloaddrivers.php # Needs: # Changelog: # 8.1.55-1: 09/Aug/2005 by Eric Hameleers # * Initial build. # 8.3.14-1: 30/mar/2007 by Eric Hameleers # * Upgrade needed for new 2.6 kernels... # # Run 'sh bcm5700.SlackBuild --cleanup' to build a Slackware package. # The package (.tgz) plus descriptive .txt file are created in /tmp . # Install using 'installpkg'. # # ----------------------------------------------------------------------------- # Where do we look for sources? CWD=`pwd` SRCDIR=`dirname $0` [ "${SRCDIR:0:1}" == "." ] && SRCDIR=${CWD}/${SRCDIR} # Place to build (TMP) package (PKG) and output (OUTPUT) the program: TMP=${TMP:-/tmp/build} PKG=$TMP/package-$PRGNAM OUTPUT=${OUTPUT:-/tmp} PRGNAM=bcm5700 VERSION=8.3.14 ARCH=${ARCH:-i486} BUILD=1 DOCS="DISTRIB.TXT LICENSE README.TXT RELEASE.TXT" KVER=${KVER:-`/bin/uname -r`} KSRC=${KSRC:-/lib/modules/${KVER}/build} PATCHLEVEL=`echo $KVER | cut -f 2 -d '.'` if [ "$ARCH" = "i386" ]; then SLKCFLAGS="-O2 -march=i386 -mcpu=i686" elif [ "$ARCH" = "i486" ]; then SLKCFLAGS="-O2 -march=i486 -mcpu=i686" elif [ "$ARCH" = "s390" ]; then SLKCFLAGS="-O2" elif [ "$ARCH" = "x86_64" ]; then SLKCFLAGS="-O2" elif [ "$ARCH" = "athlon-xp" ]; then SLKCFLAGS="-march=athlon-xp -O3 -pipe -fomit-frame-pointer" fi if [ ! -d $TMP/tmp-$PRGNAM ]; then mkdir -p $TMP/tmp-$PRGNAM # location to build the source else # Remove the remnants of previous build: rm -rf $TMP/tmp-$PRGNAM/* fi if [ ! -d $PKG ]; then mkdir -p $PKG # place for the package to be built else rm -rf $PKG/* # We always erase old package's contents: fi if [ ! -d $OUTPUT ]; then mkdir -p $OUTPUT # place for the package to be saved fi # --- PACKAGE BUILDING --- echo "++" echo "|| $PRGNAM-$VERSION" echo "++" cd $TMP/tmp-$PRGNAM echo "Extracting the program tarball for $PRGNAM..." tar -xzvf $SRCDIR/${PRGNAM}-${VERSION}.tar.gz cd ${PRGNAM}-${VERSION}/src # Patch Makefile so we can compile for more kernels than just the running one: patch -p2 < $SRCDIR/bcm5700_Makefile.diff 2>&1 | tee $OUTPUT/patch-${PRGNAM}.log # Patch to accommodate changes in the 2.6.18 kernel: [ -f $KSRC/include/linux/utsrelease.h ] && \ patch -p2 < $SRCDIR/bcm5700_kernel2.6.18.diff 2>&1 | tee -a $OUTPUT/patch-${PRGNAM}.log chown -R root.root * find . -perm 777 -exec chmod 755 {} \; # --- BUILDING --- echo Building ... CFLAGS="$SLKCFLAGS" \ make KVER=$KVER KSRC=$KSRC PREFIX=$PKG 2>&1 | tee $OUTPUT/make-${PRGNAM}.log # Install all the needed stuff to the package dir mkdir -p $PKG/usr/man/man4 mkdir -p $PKG/lib/modules/${KVER}/kernel/drivers/net if [ $PATCHLEVEL -eq 6 ]; then cp bcm5700.ko $PKG/lib/modules/${KVER}/kernel/drivers/net/ else gzip -c9 bcm5700.o > \ $PKG/lib/modules/${KVER}/kernel/drivers/net/bcm5700.o.gz fi gzip -c9 bcm5700.4 > $PKG/usr/man/man4/bcm5700.4.gz cd .. # --- DOCUMENTATION --- mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION cp -a $DOCS $PKG/usr/doc/$PRGNAM-$VERSION chmod -R a-w $PKG/usr/doc/$PRGNAM-$VERSION/* # --- PACKAGE DESCRIPTION --- mkdir -p $PKG/install cat $SRCDIR/slack-desc > $PKG/install/slack-desc # --- BUILDING --- # Build the package: cd $PKG makepkg --linkadd y --chown n $OUTPUT/${PRGNAM}-${VERSION}_$(echo $KVER | tr - _)-${ARCH}-${BUILD}.tgz 2>&1 | tee $OUTPUT/makepkg-${PRGNAM}.log (cd $OUTPUT && md5sum ${PRGNAM}-${VERSION}_$(echo $KVER | tr - _)-${ARCH}-${BUILD}.tgz > ${PRGNAM}-${VERSION}_$(echo $KVER | tr - _)-${ARCH}-${BUILD}.tgz.md5) cat $PKG/install/slack-desc | grep "^${PRGNAM}" > $OUTPUT/${PRGNAM}-${VERSION}_$(echo $KVER | tr - _)-${ARCH}-${BUILD}.txt # --- CLEANUP --- # Clean up the extra stuff: if [ "$1" = "--cleanup" ]; then rm -rf $TMP/tmp-$PRGNAM rm -rf $PKG fi