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 3963e03bb38594807c04d9bb184e3204235916e689Young-Ho ChaOPTION_ARMV7=yes 405c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' TurnerOPTION_OUT= 415c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' TurnerOPTION_CROSS= 425c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' TurnerOPTION_ARCH= 435c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' TurnerOPTION_CONFIG= 448621048ded576220927651915e2d6942096f31bcYoung-Ho ChaOPTION_SAVEDEFCONFIG=no 45fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' TurnerOPTION_JOBS= 46ebba0e7bc8fe2cddaf2c7fd13c04a00353793726David 'Digit' TurnerOPTION_VERBOSE= 472905b20226f06f50140804fe130764e98f2bd975Young-Ho ChaCCACHE= 482905b20226f06f50140804fe130764e98f2bd975Young-Ho Cha 492905b20226f06f50140804fe130764e98f2bd975Young-Ho Chacase "$USE_CCACHE" in 502905b20226f06f50140804fe130764e98f2bd975Young-Ho Cha "") 512905b20226f06f50140804fe130764e98f2bd975Young-Ho Cha CCACHE= 522905b20226f06f50140804fe130764e98f2bd975Young-Ho Cha ;; 532905b20226f06f50140804fe130764e98f2bd975Young-Ho Cha *) 542905b20226f06f50140804fe130764e98f2bd975Young-Ho Cha # use ccache bundled in AOSP source tree 552905b20226f06f50140804fe130764e98f2bd975Young-Ho Cha CCACHE=${ANDROID_BUILD_TOP:-$(dirname $0)/../../..}/prebuilts/misc/$HOST_TAG/ccache/ccache 562905b20226f06f50140804fe130764e98f2bd975Young-Ho Cha [ -x $CCACHE ] || CCACHE= 572905b20226f06f50140804fe130764e98f2bd975Young-Ho Cha ;; 582905b20226f06f50140804fe130764e98f2bd975Young-Ho Chaesac 595c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner 605c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turnerfor opt do 615c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner optarg=$(expr "x$opt" : 'x[^=]*=\(.*\)') 625c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner case $opt in 635c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner --help|-h|-\?) OPTION_HELP=yes 645c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner ;; 6563e03bb38594807c04d9bb184e3204235916e689Young-Ho Cha --armv5) 6663e03bb38594807c04d9bb184e3204235916e689Young-Ho Cha OPTION_ARMV7=no 6763e03bb38594807c04d9bb184e3204235916e689Young-Ho Cha ;; 685c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner --armv7) 695c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner OPTION_ARMV7=yes 705c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner ;; 715c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner --out=*) 725c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner OPTION_OUT=$optarg 735c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner ;; 745c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner --cross=*) 755c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner OPTION_CROSS=$optarg 765c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner ;; 775c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner --arch=*) 785c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner OPTION_ARCH=$optarg 795c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner ;; 805c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner --config=*) 815c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner OPTION_CONFIG=$optarg 825c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner ;; 838621048ded576220927651915e2d6942096f31bcYoung-Ho Cha --savedefconfig) 848621048ded576220927651915e2d6942096f31bcYoung-Ho Cha OPTION_SAVEDEFCONFIG=yes 858621048ded576220927651915e2d6942096f31bcYoung-Ho Cha ;; 862905b20226f06f50140804fe130764e98f2bd975Young-Ho Cha --ccache=*) 872905b20226f06f50140804fe130764e98f2bd975Young-Ho Cha CCACHE=$optarg 882905b20226f06f50140804fe130764e98f2bd975Young-Ho Cha ;; 89ebba0e7bc8fe2cddaf2c7fd13c04a00353793726David 'Digit' Turner --verbose) 90ebba0e7bc8fe2cddaf2c7fd13c04a00353793726David 'Digit' Turner OPTION_VERBOSE=true 91ebba0e7bc8fe2cddaf2c7fd13c04a00353793726David 'Digit' Turner ;; 925c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner -j*) 93fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner OPTION_JOBS=$optarg 945c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner ;; 955c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner *) 965c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner echo "unknown option '$opt', use --help" 975c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner exit 1 985c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner esac 995c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turnerdone 1005c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner 1015c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turnerif [ $OPTION_HELP = "yes" ] ; then 1025c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner echo "Rebuild the prebuilt kernel binary for Android's emulator." 1035c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner echo "" 1045c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner echo "options (defaults are within brackets):" 1055c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner echo "" 1065c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner echo " --help print this message" 1075c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner echo " --arch=<arch> change target architecture [$ARCH]" 10863e03bb38594807c04d9bb184e3204235916e689Young-Ho Cha echo " --armv5 build ARMv5 binaries" 10963e03bb38594807c04d9bb184e3204235916e689Young-Ho Cha echo " --armv7 build ARMv7 binaries (default. see note below)" 1105c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner echo " --out=<directory> output directory [$OUTPUT]" 1115c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner echo " --cross=<prefix> cross-toolchain prefix [$CROSSPREFIX]" 1125c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner echo " --config=<name> kernel config name [$CONFIG]" 1138621048ded576220927651915e2d6942096f31bcYoung-Ho Cha echo " --savedefconfig run savedefconfig" 1142905b20226f06f50140804fe130764e98f2bd975Young-Ho Cha echo " --ccache=<path> use compiler cache [${CCACHE:-not set}]" 115ebba0e7bc8fe2cddaf2c7fd13c04a00353793726David 'Digit' Turner echo " --verbose show build commands" 116fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner echo " -j<number> launch <number> parallel build jobs [$JOBS]" 1175c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner echo "" 1185c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner echo "NOTE: --armv7 is equivalent to --config=goldfish_armv7. It is" 1195c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner echo " ignored if --config=<name> is used." 1205c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner echo "" 1215c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner exit 0 1225c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turnerfi 1235c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner 1245c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turnerif [ -n "$OPTION_ARCH" ]; then 125fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner ARCH=$OPTION_ARCH 1265c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turnerfi 1275c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner 1285c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turnerif [ -n "$OPTION_CONFIG" ]; then 129fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner CONFIG=$OPTION_CONFIG 130fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turnerelse 13184b2e58be9ca804fef3a9da630a96fbcc9890600Young-Ho Cha if [ "$ARCH" = "arm" -a "$OPTION_ARMV7" = "yes" ]; then 132fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner CONFIG=goldfish_armv7 133fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner fi 134fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner echo "Auto-config: --config=$CONFIG" 1355c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turnerfi 1365c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner 1375c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner# Check that we are in the kernel directory 1385c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turnerif [ ! -d arch/$ARCH/mach-$MACHINE ] ; then 1395c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner echo "Cannot find arch/$ARCH/mach-$MACHINE. Please cd to the kernel source directory." 1405c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner echo "Aborting." 1415c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner #exit 1 1425c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turnerfi 1435c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner 1445c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner# Check output directory. 1455c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turnerif [ -n "$OPTION_OUT" ] ; then 1465c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner if [ ! -d "$OPTION_OUT" ] ; then 1475c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner echo "Output directory '$OPTION_OUT' does not exist ! Aborting." 1485c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner exit 1 1495c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner fi 1505c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner OUTPUT=$OPTION_OUT 1515c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turnerelse 1525c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner mkdir -p $OUTPUT 1535c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turnerfi 1545c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner 1555c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turnerif [ -n "$OPTION_CROSS" ] ; then 1565c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner CROSSPREFIX="$OPTION_CROSS" 1575c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turnerelse 1585c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner case $ARCH in 1595c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner arm) 1609ada5ea3626964561ed983c64cf04bcdf44e6806Andrew Hsieh CROSSTOOLCHAIN=arm-linux-androideabi-4.6 1619ada5ea3626964561ed983c64cf04bcdf44e6806Andrew Hsieh CROSSPREFIX=arm-linux-androideabi- 1625c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner ;; 1635c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner x86) 1640621eeb599686e1d7dea3bf39ae8057bec574e0dH.J. Lu CROSSTOOLCHAIN=i686-linux-android-4.6 1650621eeb599686e1d7dea3bf39ae8057bec574e0dH.J. Lu CROSSPREFIX=i686-linux-android- 1665c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner ;; 16788f828e91ff4f13fb3d4f873fc0eedd6ef49a156Bhanu Chetlapalli mips) 1689ada5ea3626964561ed983c64cf04bcdf44e6806Andrew Hsieh CROSSTOOLCHAIN=mipsel-linux-android-4.6 16988f828e91ff4f13fb3d4f873fc0eedd6ef49a156Bhanu Chetlapalli CROSSPREFIX=mipsel-linux-android- 17088f828e91ff4f13fb3d4f873fc0eedd6ef49a156Bhanu Chetlapalli ;; 1715c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner *) 1725c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner echo "ERROR: Unsupported architecture!" 1735c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner exit 1 1745c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner ;; 1755c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner esac 176fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner echo "Auto-config: --cross=$CROSSPREFIX" 1775c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turnerfi 1785c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner 1796f0425a8f6d386d7ca10e69ad90cbd5d5c5228a9Andrew HsiehZIMAGE=zImage 1806f0425a8f6d386d7ca10e69ad90cbd5d5c5228a9Andrew Hsieh 1816f0425a8f6d386d7ca10e69ad90cbd5d5c5228a9Andrew Hsiehcase $ARCH in 1826f0425a8f6d386d7ca10e69ad90cbd5d5c5228a9Andrew Hsieh x86) 1836f0425a8f6d386d7ca10e69ad90cbd5d5c5228a9Andrew Hsieh ZIMAGE=bzImage 1846f0425a8f6d386d7ca10e69ad90cbd5d5c5228a9Andrew Hsieh ;; 18588f828e91ff4f13fb3d4f873fc0eedd6ef49a156Bhanu Chetlapalli mips) 18688f828e91ff4f13fb3d4f873fc0eedd6ef49a156Bhanu Chetlapalli ZIMAGE= 18788f828e91ff4f13fb3d4f873fc0eedd6ef49a156Bhanu Chetlapalli ;; 1886f0425a8f6d386d7ca10e69ad90cbd5d5c5228a9Andrew Hsiehesac 1896f0425a8f6d386d7ca10e69ad90cbd5d5c5228a9Andrew Hsieh 190fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner# If the cross-compiler is not in the path, try to find it automatically 191fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' TurnerCROSS_COMPILER="${CROSSPREFIX}gcc" 1925c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' TurnerCROSS_COMPILER_VERSION=$($CROSS_COMPILER --version 2>/dev/null) 1935c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turnerif [ $? != 0 ] ; then 194fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner BUILD_TOP=$ANDROID_BUILD_TOP 195fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner if [ -z "$BUILD_TOP" ]; then 196fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner # Assume this script is under external/qemu/distrib/ in the 197fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner # Android source tree. 198fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner BUILD_TOP=$(dirname $0)/../../.. 1999ada5ea3626964561ed983c64cf04bcdf44e6806Andrew Hsieh if [ ! -d "$BUILD_TOP/prebuilts" ]; then 200fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner BUILD_TOP= 201fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner else 202fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner BUILD_TOP=$(cd $BUILD_TOP && pwd) 203fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner fi 204fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner fi 2059ada5ea3626964561ed983c64cf04bcdf44e6806Andrew Hsieh CROSSPREFIX=$BUILD_TOP/prebuilts/gcc/$HOST_TAG/$ARCH/$CROSSTOOLCHAIN/bin/$CROSSPREFIX 206fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner if [ "$BUILD_TOP" -a -f ${CROSSPREFIX}gcc ]; then 207fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner echo "Auto-config: --cross=$CROSSPREFIX" 208fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner else 209fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner echo "It looks like $CROSS_COMPILER is not in your path ! Aborting." 210fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner exit 1 211fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner fi 212fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turnerfi 213fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner 2142905b20226f06f50140804fe130764e98f2bd975Young-Ho Chaif [ "$CCACHE" ] ; then 2152905b20226f06f50140804fe130764e98f2bd975Young-Ho Cha echo "Using ccache program: $CCACHE" 2162905b20226f06f50140804fe130764e98f2bd975Young-Ho Cha CROSSPREFIX="$CCACHE $CROSSPREFIX" 2172905b20226f06f50140804fe130764e98f2bd975Young-Ho Chafi 2182905b20226f06f50140804fe130764e98f2bd975Young-Ho Cha 219fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turnerexport CROSS_COMPILE="$CROSSPREFIX" ARCH SUBARCH=$ARCH 220fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner 221fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turnerif [ "$OPTION_JOBS" ]; then 222fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner JOBS=$OPTION_JOBS 223fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turnerelse 224fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner echo "Auto-config: -j$JOBS" 2255c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turnerfi 2265c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner 227bc9cbbe2a02d84d57854c211449f6491a6140eabDavid 'Digit' Turner 228bc9cbbe2a02d84d57854c211449f6491a6140eabDavid 'Digit' Turner# Special magic redirection with our magic toolbox script 2299ada5ea3626964561ed983c64cf04bcdf44e6806Andrew Hsieh# This is needed to add extra compiler flags to compiler. 2309ada5ea3626964561ed983c64cf04bcdf44e6806Andrew Hsieh# See kernel-toolchain/android-kernel-toolchain-* for details 231bc9cbbe2a02d84d57854c211449f6491a6140eabDavid 'Digit' Turner# 2329ada5ea3626964561ed983c64cf04bcdf44e6806Andrew Hsiehexport REAL_CROSS_COMPILE="$CROSS_COMPILE" 2339ada5ea3626964561ed983c64cf04bcdf44e6806Andrew HsiehCROSS_COMPILE=$(dirname "$0")/kernel-toolchain/android-kernel-toolchain- 234bc9cbbe2a02d84d57854c211449f6491a6140eabDavid 'Digit' Turner 235ebba0e7bc8fe2cddaf2c7fd13c04a00353793726David 'Digit' TurnerMAKE_FLAGS= 236ebba0e7bc8fe2cddaf2c7fd13c04a00353793726David 'Digit' Turnerif [ "$OPTION_VERBOSE" ]; then 237ebba0e7bc8fe2cddaf2c7fd13c04a00353793726David 'Digit' Turner MAKE_FLAGS="$MAKE_FLAGS V=1" 238ebba0e7bc8fe2cddaf2c7fd13c04a00353793726David 'Digit' Turnerfi 239ebba0e7bc8fe2cddaf2c7fd13c04a00353793726David 'Digit' Turner 240fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner# Do the build 241fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner# 2425c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turnerrm -f include/asm && 2435c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turnermake ${CONFIG}_defconfig && # configure the kernel 244ebba0e7bc8fe2cddaf2c7fd13c04a00353793726David 'Digit' Turnermake -j$JOBS $MAKE_FLAGS # build it 2455c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner 2465c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turnerif [ $? != 0 ] ; then 2475c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner echo "Could not build the kernel. Aborting !" 2485c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner exit 1 2495c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turnerfi 2505c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner 2518621048ded576220927651915e2d6942096f31bcYoung-Ho Chaif [ "$OPTION_SAVEDEFCONFIG" = "yes" ]; then 2528621048ded576220927651915e2d6942096f31bcYoung-Ho Cha make savedefconfig 2538621048ded576220927651915e2d6942096f31bcYoung-Ho Cha mv -f defconfig arch/$ARCH/configs/${CONFIG}_defconfig 2548621048ded576220927651915e2d6942096f31bcYoung-Ho Chafi 2558621048ded576220927651915e2d6942096f31bcYoung-Ho Cha 256fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner# Note: The exact names of the output files are important for the Android build, 257fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner# do not change the definitions lightly. 258fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turnercase $CONFIG in 259fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner vbox*) 260fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner OUTPUT_KERNEL=kernel-vbox 261fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner OUTPUT_VMLINUX=vmlinux-vbox 262fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner ;; 263fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner goldfish) 264fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner OUTPUT_KERNEL=kernel-qemu 265fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner OUTPUT_VMLINUX=vmlinux-qemu 266fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner ;; 267fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner goldfish_armv7) 268fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner OUTPUT_KERNEL=kernel-qemu-armv7 269fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner OUTPUT_VMLINUX=vmlinux-qemu-armv7 270fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner ;; 271fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner *) 272fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner OUTPUT_KERNEL=kernel-$CONFIG 273fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turner OUTPUT_VMLINUX=vmlinux-$CONFIG 274fe6c89d7d8684c112db7da6bbea12284c4896f3aDavid 'Digit' Turneresac 2755c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner 2765c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turnercp -f vmlinux $OUTPUT/$OUTPUT_VMLINUX 27788f828e91ff4f13fb3d4f873fc0eedd6ef49a156Bhanu Chetlapalliif [ ! -z $ZIMAGE ]; then 27888f828e91ff4f13fb3d4f873fc0eedd6ef49a156Bhanu Chetlapalli cp -f arch/$ARCH/boot/$ZIMAGE $OUTPUT/$OUTPUT_KERNEL 27988f828e91ff4f13fb3d4f873fc0eedd6ef49a156Bhanu Chetlapallielse 2809bc2c5eba30c83bf3a1ae78f99a79eb763fd267bBhanu Chetlapalli cp -f vmlinux $OUTPUT/$OUTPUT_KERNEL 28188f828e91ff4f13fb3d4f873fc0eedd6ef49a156Bhanu Chetlapallifi 2829bc2c5eba30c83bf3a1ae78f99a79eb763fd267bBhanu Chetlapalliecho "Kernel $CONFIG prebuilt images ($OUTPUT_KERNEL and $OUTPUT_VMLINUX) copied to $OUTPUT successfully !" 2835c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turner 2845c25d3d60c64efb11709b625714ca1dac7c043f4David 'Digit' Turnerexit 0 285