mirror of https://github.com/proski/madwifi
121 lines
3.0 KiB
Bash
Executable File
121 lines
3.0 KiB
Bash
Executable File
#! /bin/sh
|
|
#
|
|
# Shell script to integrate madwifi sources into a Linux
|
|
# source tree so it can be built statically. Typically this
|
|
# is done to simplify debugging with tools like kgdb.
|
|
#
|
|
|
|
set -e
|
|
|
|
die()
|
|
{
|
|
echo "FATAL ERROR: $1" >&2
|
|
exit 1
|
|
}
|
|
|
|
SRC=..
|
|
KERNEL_VERSION=`uname -r`
|
|
|
|
if test -n "$1"; then
|
|
KERNEL_PATH="$1"
|
|
else if test -e /lib/modules/${KERNEL_VERSION}/source; then
|
|
KERNEL_PATH="/lib/modules/${KERNEL_VERSION}/source"
|
|
else if test -e /lib/modules/${KERNEL_VERSION}/build; then
|
|
KERNEL_PATH="/lib/modules/${KERNEL_VERSION}/build"
|
|
else
|
|
die "Cannot guess kernel source location"
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
test -d ${KERNEL_PATH} || die "No kernel directory ${KERNEL_PATH}"
|
|
|
|
PATCH()
|
|
{
|
|
patch -N $1 < $2
|
|
}
|
|
|
|
#
|
|
# Location of various pieces. These mimic what is in Makefile.inc
|
|
# and can be overridden from the environment.
|
|
#
|
|
SRC_HAL=${HAL:-${SRC}/hal}
|
|
test -d ${SRC_HAL} || die "No hal directory ${SRC_HAL}"
|
|
SRC_NET80211=${WLAN:-${SRC}/net80211}
|
|
test -d ${SRC_NET80211} || die "No net80211 directory ${SRC_NET80211}"
|
|
SRC_ATH=${ATH:-${SRC}/ath}
|
|
test -d ${SRC_ATH} || die "No ath directory ${SRC_ATH}"
|
|
SRC_ATH_RATE=${SRC}/ath_rate
|
|
test -d ${SRC_ATH_RATE} ||
|
|
die "No rate control algorithm directory ${SRC_ATH_RATE}"
|
|
SRC_COMPAT=${SRC}/include
|
|
test -d ${SRC_COMPAT} || die "No compat directory ${SRC_COMPAT}"
|
|
|
|
WIRELESS=${KERNEL_PATH}/drivers/net/wireless
|
|
test -d ${WIRELESS} || die "No wireless directory ${WIRELESS}"
|
|
|
|
if test -f ${WIRELESS}/Kconfig; then
|
|
kbuild=2.6
|
|
kbuildconf=Kconfig
|
|
else if test -f ${WIRELESS}/Config.in; then
|
|
kbuild=2.4
|
|
kbuildconf=Config.in
|
|
else
|
|
die "Kernel build system is not supported"
|
|
fi
|
|
fi
|
|
|
|
echo "Copying top-level files"
|
|
MADWIFI=${WIRELESS}/madwifi
|
|
rm -rf ${MADWIFI}
|
|
mkdir -p ${MADWIFI}
|
|
make -s -C ${SRC} svnversion.h
|
|
cp -f ${SRC}/BuildCaps.inc ${SRC}/svnversion.h ${SRC}/release.h ${MADWIFI}
|
|
|
|
|
|
echo "Copying source files"
|
|
FILES=`cd ${SRC} && find ath ath_hal ath_rate hal include net80211 -name '*.[ch]'`
|
|
for f in $FILES; do
|
|
case $f in
|
|
*.mod.c) continue;;
|
|
esac
|
|
mkdir -p `dirname ${MADWIFI}/$f`
|
|
cp -f ${SRC}/$f ${MADWIFI}/$f
|
|
done
|
|
|
|
echo "Copying makefiles"
|
|
FILES=`cd ${SRC} && find . -name Makefile.kernel`
|
|
for f in $FILES; do
|
|
cp -f ${SRC}/$f `dirname ${MADWIFI}/$f`/Makefile
|
|
done
|
|
cp -f ${SRC}/ath_hal/ah_target.inc ${MADWIFI}/ath_hal
|
|
|
|
echo "Copying Atheros HAL files"
|
|
DST_HAL=${MADWIFI}/hal
|
|
cp -f ${SRC_HAL}/public/*.hal.o.uu ${DST_HAL}/public
|
|
|
|
|
|
echo "Patching the build system"
|
|
if test "$kbuild" = 2.6; then
|
|
cp -f Kconfig ${MADWIFI}
|
|
sed -i '/madwifi/d;/^endmenu/i\
|
|
source "drivers/net/wireless/madwifi/Kconfig"' ${WIRELESS}/Kconfig
|
|
sed -i '$a\
|
|
obj-$(CONFIG_ATHEROS) += madwifi/
|
|
/madwifi/d;' ${WIRELESS}/Makefile
|
|
else
|
|
cp -f Config.in ${MADWIFI}
|
|
sed -i '$a\
|
|
source drivers/net/wireless/madwifi/Config.in
|
|
/madwifi/d' ${WIRELESS}/Config.in
|
|
sed -i '/madwifi/d;/include/i\
|
|
subdir-$(CONFIG_ATHEROS) += madwifi\
|
|
obj-$(CONFIG_ATHEROS) += madwifi/madwifi.o' ${WIRELESS}/Makefile
|
|
DST_DOC=${KERNEL_PATH}/Documentation
|
|
grep -q 'CONFIG_ATHEROS' ${DST_DOC}/Configure.help || \
|
|
PATCH ${DST_DOC}/Configure.help Configure.help.patch
|
|
fi
|
|
|
|
|
|
echo "Done"
|