| #!/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 |