build-kernel.sh revision 9ada5ea3626964561ed983c64cf04bcdf44e6806
15c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner#!/bin/sh
25c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner#
35c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner# A small script used to rebuild the Android goldfish kernel image
45c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner# See docs/KERNEL.TXT for usage instructions.
55c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner#
65c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' TurnerMACHINE=goldfish
75c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' TurnerVARIANT=goldfish
85c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' TurnerOUTPUT=/tmp/kernel-qemu
99ada5ea3626964561ed983c64cf04bcdf44e6806Andrew HsiehCROSSPREFIX=arm-linux-androideabi-
105c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' TurnerCONFIG=goldfish
115c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner
12fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner# Determine the host architecture, and which default prebuilt tag we need.
13fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner# For the toolchain auto-detection.
14fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner#
15fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' TurnerHOST_OS=`uname -s`
16fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turnercase "$HOST_OS" in
17fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner    Darwin)
18fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner        HOST_OS=darwin
19fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner        HOST_TAG=darwin-x86
20fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner        BUILD_NUM_CPUS=$(sysctl -n hw.ncpu)
21fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner        ;;
22fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner    Linux)
23fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner        # note that building  32-bit binaries on x86_64 is handled later
24fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner        HOST_OS=linux
25fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner        HOST_TAG=linux-x86
26fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner        BUILD_NUM_CPUS=$(grep -c processor /proc/cpuinfo)
27fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner        ;;
28fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner    *)
29fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner        echo "ERROR: Unsupported OS: $HOST_OS"
30fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner        exit 1
31fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turneresac
32fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner
33fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner# Default number of parallel jobs during the build: cores * 2
34fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' TurnerJOBS=$(( $BUILD_NUM_CPUS * 2 ))
355c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner
365c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' TurnerARCH=arm
375c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner
385c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' TurnerOPTION_HELP=no
395c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' TurnerOPTION_ARMV7=no
405c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' TurnerOPTION_OUT=
415c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' TurnerOPTION_CROSS=
425c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' TurnerOPTION_ARCH=
435c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' TurnerOPTION_CONFIG=
44fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' TurnerOPTION_JOBS=
455c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner
465c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turnerfor opt do
475c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner    optarg=$(expr "x$opt" : 'x[^=]*=\(.*\)')
485c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner    case $opt in
495c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner    --help|-h|-\?) OPTION_HELP=yes
505c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner        ;;
515c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner    --armv7)
525c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner        OPTION_ARMV7=yes
535c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner        ;;
545c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner    --out=*)
555c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner        OPTION_OUT=$optarg
565c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner        ;;
575c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner    --cross=*)
585c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner        OPTION_CROSS=$optarg
595c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner        ;;
605c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner    --arch=*)
615c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner        OPTION_ARCH=$optarg
625c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner        ;;
635c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner    --config=*)
645c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner        OPTION_CONFIG=$optarg
655c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner        ;;
665c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner    -j*)
67fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner        OPTION_JOBS=$optarg
685c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner        ;;
695c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner    *)
705c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner        echo "unknown option '$opt', use --help"
715c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner        exit 1
725c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner    esac
735c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turnerdone
745c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner
755c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turnerif [ $OPTION_HELP = "yes" ] ; then
765c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner    echo "Rebuild the prebuilt kernel binary for Android's emulator."
775c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner    echo ""
785c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner    echo "options (defaults are within brackets):"
795c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner    echo ""
805c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner    echo "  --help                   print this message"
815c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner    echo "  --arch=<arch>            change target architecture [$ARCH]"
825c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner    echo "  --armv7                  build ARMv7 binaries (see note below)"
835c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner    echo "  --out=<directory>        output directory [$OUTPUT]"
845c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner    echo "  --cross=<prefix>         cross-toolchain prefix [$CROSSPREFIX]"
855c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner    echo "  --config=<name>          kernel config name [$CONFIG]"
86fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner    echo "  -j<number>               launch <number> parallel build jobs [$JOBS]"
875c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner    echo ""
885c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner    echo "NOTE: --armv7 is equivalent to --config=goldfish_armv7. It is"
895c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner    echo "      ignored if --config=<name> is used."
905c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner    echo ""
915c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner    exit 0
925c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turnerfi
935c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner
945c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turnerif [ -n "$OPTION_ARCH" ]; then
95fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner    ARCH=$OPTION_ARCH
965c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turnerfi
975c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner
985c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turnerif [ -n "$OPTION_CONFIG" ]; then
99fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner    CONFIG=$OPTION_CONFIG
100fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turnerelse
101fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner    if [ "$OPTION_ARMV7" = "yes" ]; then
102fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner        CONFIG=goldfish_armv7
103fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner    fi
104fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner    echo "Auto-config: --config=$CONFIG"
1055c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turnerfi
1065c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner
1075c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner# Check that we are in the kernel directory
1085c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turnerif [ ! -d arch/$ARCH/mach-$MACHINE ] ; then
1095c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner    echo "Cannot find arch/$ARCH/mach-$MACHINE. Please cd to the kernel source directory."
1105c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner    echo "Aborting."
1115c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner    #exit 1
1125c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turnerfi
1135c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner
1145c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner# Check output directory.
1155c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turnerif [ -n "$OPTION_OUT" ] ; then
1165c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner    if [ ! -d "$OPTION_OUT" ] ; then
1175c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner        echo "Output directory '$OPTION_OUT' does not exist ! Aborting."
1185c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner        exit 1
1195c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner    fi
1205c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner    OUTPUT=$OPTION_OUT
1215c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turnerelse
1225c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner    mkdir -p $OUTPUT
1235c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turnerfi
1245c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner
1255c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turnerif [ -n "$OPTION_CROSS" ] ; then
1265c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner    CROSSPREFIX="$OPTION_CROSS"
1275c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turnerelse
1285c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner    case $ARCH in
1295c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner        arm)
1309ada5ea3626964561ed983c64cf04bcdf44e6806Andrew Hsieh            CROSSTOOLCHAIN=arm-linux-androideabi-4.6
1319ada5ea3626964561ed983c64cf04bcdf44e6806Andrew Hsieh            CROSSPREFIX=arm-linux-androideabi-
1325c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner            ;;
1335c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner        x86)
1340621eeb599686e1d7dea3bf39ae8057bec574e0dH.J. Lu            CROSSTOOLCHAIN=i686-linux-android-4.6
1350621eeb599686e1d7dea3bf39ae8057bec574e0dH.J. Lu            CROSSPREFIX=i686-linux-android-
1365c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner            ;;
13788f828e91ff4f13fb3d4f873fc0eedd6ef49a156Bhanu Chetlapalli        mips)
1389ada5ea3626964561ed983c64cf04bcdf44e6806Andrew Hsieh            CROSSTOOLCHAIN=mipsel-linux-android-4.6
13988f828e91ff4f13fb3d4f873fc0eedd6ef49a156Bhanu Chetlapalli            CROSSPREFIX=mipsel-linux-android-
14088f828e91ff4f13fb3d4f873fc0eedd6ef49a156Bhanu Chetlapalli            ;;
1415c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner        *)
1425c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner            echo "ERROR: Unsupported architecture!"
1435c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner            exit 1
1445c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner            ;;
1455c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner    esac
146fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner    echo "Auto-config: --cross=$CROSSPREFIX"
1475c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turnerfi
1485c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner
1496f0425a8f6d386d7ca10e69ad90cbd5d5c5228a9Andrew HsiehZIMAGE=zImage
1506f0425a8f6d386d7ca10e69ad90cbd5d5c5228a9Andrew Hsieh
1516f0425a8f6d386d7ca10e69ad90cbd5d5c5228a9Andrew Hsiehcase $ARCH in
1526f0425a8f6d386d7ca10e69ad90cbd5d5c5228a9Andrew Hsieh    x86)
1536f0425a8f6d386d7ca10e69ad90cbd5d5c5228a9Andrew Hsieh        ZIMAGE=bzImage
1546f0425a8f6d386d7ca10e69ad90cbd5d5c5228a9Andrew Hsieh        ;;
15588f828e91ff4f13fb3d4f873fc0eedd6ef49a156Bhanu Chetlapalli    mips)
15688f828e91ff4f13fb3d4f873fc0eedd6ef49a156Bhanu Chetlapalli        ZIMAGE=
15788f828e91ff4f13fb3d4f873fc0eedd6ef49a156Bhanu Chetlapalli        ;;
1586f0425a8f6d386d7ca10e69ad90cbd5d5c5228a9Andrew Hsiehesac
1596f0425a8f6d386d7ca10e69ad90cbd5d5c5228a9Andrew Hsieh
160fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner# If the cross-compiler is not in the path, try to find it automatically
161fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' TurnerCROSS_COMPILER="${CROSSPREFIX}gcc"
1625c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' TurnerCROSS_COMPILER_VERSION=$($CROSS_COMPILER --version 2>/dev/null)
1635c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turnerif [ $? != 0 ] ; then
164fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner    BUILD_TOP=$ANDROID_BUILD_TOP
165fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner    if [ -z "$BUILD_TOP" ]; then
166fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner        # Assume this script is under external/qemu/distrib/ in the
167fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner        # Android source tree.
168fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner        BUILD_TOP=$(dirname $0)/../../..
1699ada5ea3626964561ed983c64cf04bcdf44e6806Andrew Hsieh        if [ ! -d "$BUILD_TOP/prebuilts" ]; then
170fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner            BUILD_TOP=
171fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner        else
172fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner            BUILD_TOP=$(cd $BUILD_TOP && pwd)
173fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner        fi
174fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner    fi
1759ada5ea3626964561ed983c64cf04bcdf44e6806Andrew Hsieh    CROSSPREFIX=$BUILD_TOP/prebuilts/gcc/$HOST_TAG/$ARCH/$CROSSTOOLCHAIN/bin/$CROSSPREFIX
176fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner    if [ "$BUILD_TOP" -a -f ${CROSSPREFIX}gcc ]; then
177fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner        echo "Auto-config: --cross=$CROSSPREFIX"
178fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner    else
179fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner        echo "It looks like $CROSS_COMPILER is not in your path ! Aborting."
180fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner        exit 1
181fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner    fi
182fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turnerfi
183fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner
184fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turnerexport CROSS_COMPILE="$CROSSPREFIX" ARCH SUBARCH=$ARCH
185fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner
186fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turnerif [ "$OPTION_JOBS" ]; then
187fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner    JOBS=$OPTION_JOBS
188fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turnerelse
189fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner    echo "Auto-config: -j$JOBS"
1905c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turnerfi
1915c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner
192bc9cbbe2a02d84d57854c211449f6491a6140eabDavid 'Digit' Turner
193bc9cbbe2a02d84d57854c211449f6491a6140eabDavid 'Digit' Turner# Special magic redirection with our magic toolbox script
1949ada5ea3626964561ed983c64cf04bcdf44e6806Andrew Hsieh# This is needed to add extra compiler flags to compiler.
1959ada5ea3626964561ed983c64cf04bcdf44e6806Andrew Hsieh# See kernel-toolchain/android-kernel-toolchain-* for details
196bc9cbbe2a02d84d57854c211449f6491a6140eabDavid 'Digit' Turner#
1979ada5ea3626964561ed983c64cf04bcdf44e6806Andrew Hsiehexport REAL_CROSS_COMPILE="$CROSS_COMPILE"
1989ada5ea3626964561ed983c64cf04bcdf44e6806Andrew HsiehCROSS_COMPILE=$(dirname "$0")/kernel-toolchain/android-kernel-toolchain-
199bc9cbbe2a02d84d57854c211449f6491a6140eabDavid 'Digit' Turner
200fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner# Do the build
201fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner#
2025c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turnerrm -f include/asm &&
2035c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turnermake ${CONFIG}_defconfig &&    # configure the kernel
2045c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turnermake -j$JOBS                   # build it
2055c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner
2065c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turnerif [ $? != 0 ] ; then
2075c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner    echo "Could not build the kernel. Aborting !"
2085c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner    exit 1
2095c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turnerfi
2105c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner
211fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner# Note: The exact names of the output files are important for the Android build,
212fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner#       do not change the definitions lightly.
213fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turnercase $CONFIG in
214fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner    vbox*)
215fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner        OUTPUT_KERNEL=kernel-vbox
216fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner        OUTPUT_VMLINUX=vmlinux-vbox
217fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner        ;;
218fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner    goldfish)
219fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner        OUTPUT_KERNEL=kernel-qemu
220fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner        OUTPUT_VMLINUX=vmlinux-qemu
221fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner        ;;
222fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner    goldfish_armv7)
223fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner        OUTPUT_KERNEL=kernel-qemu-armv7
224fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner        OUTPUT_VMLINUX=vmlinux-qemu-armv7
225fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner        ;;
226fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner    *)
227fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner        OUTPUT_KERNEL=kernel-$CONFIG
228fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner        OUTPUT_VMLINUX=vmlinux-$CONFIG
229fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turneresac
2305c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner
2315c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turnercp -f vmlinux $OUTPUT/$OUTPUT_VMLINUX
23288f828e91ff4f13fb3d4f873fc0eedd6ef49a156Bhanu Chetlapalliif [ ! -z $ZIMAGE ]; then
23388f828e91ff4f13fb3d4f873fc0eedd6ef49a156Bhanu Chetlapalli    cp -f arch/$ARCH/boot/$ZIMAGE $OUTPUT/$OUTPUT_KERNEL
23488f828e91ff4f13fb3d4f873fc0eedd6ef49a156Bhanu Chetlapalli    echo "Kernel $CONFIG prebuilt images ($OUTPUT_KERNEL and $OUTPUT_VMLINUX) copied to $OUTPUT successfully !"
23588f828e91ff4f13fb3d4f873fc0eedd6ef49a156Bhanu Chetlapallielse
23688f828e91ff4f13fb3d4f873fc0eedd6ef49a156Bhanu Chetlapalli    echo "Kernel $CONFIG prebuilt image ($OUTPUT_VMLINUX) copied to $OUTPUT successfully !"
23788f828e91ff4f13fb3d4f873fc0eedd6ef49a156Bhanu Chetlapallifi
2385c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner
2395c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turnerexit 0
240