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