#!/bin/sh

export LANG=C

GUMSTIX_HOME="/home/beat/gumstix/gumstix-oe"
SYSMAP="./System.map"

TOOL_PREFIX="${GUMSTIX_HOME}/tmp/cross/bin/arm-angstrom-linux-gnueabi-"
DEPMOD="${TOOL_PREFIX}depmod-2.6"
OBJCOPY=${TOOL_PREFIX}objcopy
MKIMG=${GUMSTIX_HOME}/tmp/staging/i686-linux/bin/uboot-mkimage
UBOOT_ENTRYPOINT="a0008000"
MOD_WORKDIR="./mod_work"

make ARCH=arm CROSS_COMPILE=${TOOL_PREFIX} prepare
KERNREL=`make kernelrelease`
KERNVER=`make kernelversion`
KERNIMG="uImage-${KERNREL}.bin"
MODTGZ="modules-${KERNREL}.tgz"
KERNIMGLN="uImage-${KERNVER}-bc9.bin"
MODTGZLN="modules-${KERNVER}-bc9.tgz"

echo "### Cleanup"
rm -rf ${MOD_WORKDIR}
rm -f ${KERNIMG} ${MODTGZ} ${KERNIMGLN} ${MODTGZLN}

echo "### Build kernel"
make ARCH=arm CROSS_COMPILE=${TOOL_PREFIX}
if [ $? != 0 ]; then
    echo "*** Failed to build kernel"
    exit 1
fi

echo "### Make kernel image"
${OBJCOPY} -O binary -R .note -R .comment \
-S ./arch/arm/boot/compressed/vmlinux linux.bin
if [ $? != 0 ]; then
    echo "*** Failed to make kernel image"
    exit 1
fi

${MKIMG} -A arm -O linux -T kernel -C none -a ${UBOOT_ENTRYPOINT} \
-e ${UBOOT_ENTRYPOINT} -n "oe/verdex/arm" -d linux.bin ${KERNIMG}
if [ $? != 0 ]; then
    echo "*** Failed to make kernel image"
    exit 1
fi

ln -s ${KERNIMG} ${KERNIMGLN}

echo "### Install modules"
make ARCH=arm DEPMOD=echo INSTALL_MOD_PATH=${MOD_WORKDIR} modules_install
if [ $? != 0 ]; then
    echo "*** Failed to modules_install"
    exit 1
fi

${DEPMOD} -A -b ${MOD_WORKDIR} -F ${SYSMAP} ${KERNREL}
if [ $? != 0 ]; then
    echo "*** Failed to depmod modules"
    exit 1
fi

echo "### Make modules tar ball"
tar czvf ${MODTGZ} -C ${MOD_WORKDIR} lib
if [ $? != 0 ]; then
    echo "*** Failed to make modules tarball"
    exit 1
fi

ln -s ${MODTGZ} ${MODTGZLN}

echo "### Finished"
ls -l ${KERNIMG} ${MODTGZ}

