#!/bin/bash
cd /usr/src/linux

# ccache doesn't seem to help, since each kernel build is unique (version
# info)

# 2010-02-03 ICE, trying without distcc
CC="distcc $MACHTYPE-gcc"
MAKEOPTS="-j5"

# safe mode
#CC=gcc
#MAKEOPTS="-j1"

DTB=kirkwood-lsxhl.dtb

if [ "$1" == "mod" ]; then
        nice make CC="$CC" $MAKEOPTS modules && \
        nice make CC="$CC" $MAKEOPTS modules_install 
	exit
else
        nice make CC="$CC" $MAKEOPTS zImage modules $DTB && \
        nice make CC="$CC" $MAKEOPTS modules_install || exit
fi


for i in VERSION PATCHLEVEL SUBLEVEL EXTRAVERSION; do
	eval $i=`grep "^$i =" Makefile | cut -d" " -f3`
done

for i in CONFIG_LOCALVERSION; do
        eval `grep "^$i=" .config`
done
        
KV=$VERSION.$PATCHLEVEL.$SUBLEVEL$EXTRAVERSION$CONFIG_LOCALVERSION

# mkimage from dev-embedded/u-boot-tools
cat arch/arm/boot/zImage arch/arm/boot/dts/$DTB > arch/arm/boot/zImage_w_dtb
mkimage -A arm -O linux -T kernel -C none -a 0x00008000 -e 0x00008000 -n Linux-$KV -d arch/arm/boot/zImage_w_dtb arch/arm/boot/uImage

# backup the old kernel at /boot/uImage.buffalo and copy uImage.new in its place.
        
BI=/boot/uImage.buffalo

# old versions stay as backups, but only one older piece of the same
# kernelversion

if [ -f $BI-$KV ]; then
	mv -f $BI-$KV $BI-$KV.old
fi

cp arch/arm/boot/uImage $BI-$KV

# wonder if a symlink would work
cp -f $BI-$KV $BI
