#!/bin/bash
script_full_path=$( cd "$(dirname "$0")" ; pwd -P )

if [ $# -ne 2 ]; then
    echo "illegal number of parameters, usage: ./build KERNEL_PATH out.tar.gz"
    exit 1
fi

# Please provide absolute paths
KERNEL_PATH=$1
OUT_TAR=$2

KERNEL_PATH="$(dirname $(readlink -e $KERNEL_PATH))/$(basename $KERNEL_PATH)"
if [ ! -d "$KERNEL_PATH" ]; then
        echo "Kernel directory couldn't be found"
        exit 3
fi

# kdir=$(basename $KERNEL_PATH)

cd $KERNEL_PATH
find arch -name include -type d -print | xargs -n1 -i: find : -type f > /tmp/kernel-headers.h
find include >> /tmp/kernel-headers.h

grep "include/generated/autoconf.h" /tmp/kernel-headers.h > /dev/null 2>&1
retgrep=$?
if [ $retgrep -ne 0 ]; then
	>&2 echo ""
	>&2 echo "The kernel sources at ${KERNEL_PATH} you pointed to aren't configured and built."
	>&2 echo "Please atleast run in your kernel sources:"
	>&2 echo $'make defconfig\nmake'
	>&2 echo $'\nNote: You dont need to do the full build since headers are generated early on.\n'
	>&2 echo "Note: Please build your kernel in tree (build and source should be in same directory)"
	>&2 echo ""
	exit $retgrep
fi

cat /tmp/kernel-headers.h | tar -zcf $OUT_TAR -T -
rm /tmp/kernel-headers.h