BigBrother1984 | 3657045 | 2013-11-09 22:10:23 +0100 | [diff] [blame] | 1 | #!/bin/bash |
| 2 | |
xilence2210 | eac1291 | 2013-12-14 15:01:14 +0800 | [diff] [blame] | 3 | # Version 2.0.4, Adapted for AOSPAL. |
| 4 | |
| 5 | if [ "pa$1" == "pa" ] |
| 6 | then |
| 7 | echo "Usage: './mk [Device] {Variable}'" |
| 8 | echo " Device - your device name" |
| 9 | echo " Variable - functions" |
| 10 | echo " fix :start build without any cleanning for fix build" |
| 11 | echo " clean :run 'make installclean' before build" |
| 12 | echo " sync :run 'repo sync' before build" |
| 13 | echo " " |
| 14 | exit 0 |
| 15 | fi |
BigBrother1984 | 3657045 | 2013-11-09 22:10:23 +0100 | [diff] [blame] | 16 | |
| 17 | # We don't allow scrollback buffer |
| 18 | echo -e '\0033\0143' |
| 19 | clear |
| 20 | |
| 21 | # Get current path |
| 22 | DIR="$(cd `dirname $0`; pwd)" |
| 23 | OUT="$(readlink $DIR/out)" |
| 24 | [ -z "${OUT}" ] && OUT="${DIR}/out" |
| 25 | |
| 26 | # Prepare output customization commands |
| 27 | red=$(tput setaf 1) # red |
| 28 | grn=$(tput setaf 2) # green |
| 29 | blu=$(tput setaf 4) # blue |
| 30 | cya=$(tput setaf 6) # cyan |
| 31 | txtbld=$(tput bold) # Bold |
| 32 | bldred=${txtbld}$(tput setaf 1) # red |
| 33 | bldgrn=${txtbld}$(tput setaf 2) # green |
| 34 | bldblu=${txtbld}$(tput setaf 4) # blue |
| 35 | bldcya=${txtbld}$(tput setaf 6) # cyan |
| 36 | txtrst=$(tput sgr0) # Reset |
| 37 | |
| 38 | # Local defaults, can be overriden by environment |
| 39 | : ${PREFS_FROM_SOURCE:="false"} |
| 40 | : ${THREADS:="$(cat /proc/cpuinfo | grep "^processor" | wc -l)"} |
| 41 | |
| 42 | # If there is more than one jdk installed, use latest 6.x |
| 43 | if [ "`update-alternatives --list javac | wc -l`" -gt 1 ]; then |
| 44 | JDK6=$(dirname `update-alternatives --list javac | grep "\-6\-"` | tail -n1) |
| 45 | JRE6=$(dirname ${JDK6}/../jre/bin/java) |
| 46 | export PATH=${JDK6}:${JRE6}:$PATH |
| 47 | fi |
| 48 | JVER=$(javac -version 2>&1 | head -n1 | cut -f2 -d' ') |
| 49 | |
| 50 | # Import command line parameters |
xilence2210 | eac1291 | 2013-12-14 15:01:14 +0800 | [diff] [blame] | 51 | THREADS="4" |
BigBrother1984 | 3657045 | 2013-11-09 22:10:23 +0100 | [diff] [blame] | 52 | DEVICE="$1" |
BigBrother1984 | 3657045 | 2013-11-09 22:10:23 +0100 | [diff] [blame] | 53 | |
| 54 | # Get build version |
Paul Beeler | 761c43c | 2014-03-18 03:10:27 -0600 | [diff] [blame] | 55 | PA_MAJOR=$(cat $DIR/vendor/pa/vendor.mk | grep 'ROM_VERSION_MAJOR := *' | sed 's/ROM_VERSION_MAJOR := //g') |
| 56 | PA_MINOR=$(cat $DIR/vendor/pa/vendor.mk | grep 'ROM_VERSION_MINOR := *' | sed 's/ROM_VERSION_MINOR := //g') |
| 57 | PA_MAINTENANCE=$(cat $DIR/vendor/pa/vendor.mk | grep 'ROM_VERSION_MAINTENANCE := *' | sed 's/ROM_VERSION_MAINTENANCE := //g') |
| 58 | PA_TAG=$(cat $DIR/vendor/pa/vendor.mk | grep 'ROM_VERSION_TAG := *' | sed 's/ROM_VERSION_TAG := //g') |
BigBrother1984 | 3657045 | 2013-11-09 22:10:23 +0100 | [diff] [blame] | 59 | |
Paul Beeler | 761c43c | 2014-03-18 03:10:27 -0600 | [diff] [blame] | 60 | PSD_MAJOR=$(cat $DIR/vendor/psd/vendor.mk | grep 'PSD_VERSION_MAJOR := *' | sed 's/PSD_VERSION_MAJOR := //g') |
| 61 | PSD_MINOR=$(cat $DIR/vendor/psd/vendor.mk | grep 'PSD_VERSION_MINOR := *' | sed 's/PSD_VERSION_MINOR := //g') |
| 62 | PSD_MAINTENANCE=$(cat $DIR/vendor/psd/vendor.mk | grep 'PSD_VERSION_MAINTENANCE := *' | sed 's/PSD_VERSION_MAINTENANCE := //g') |
TheMrcool212 | d1a19db | 2014-05-17 18:33:58 +0800 | [diff] [blame] | 63 | PSD_TAG=$(cat $DIR/vendor/psd/vendor.mk | grep 'PSD_TYPE := *' | sed 's/PSD_TYPE := //g') |
Paul Beeler | 761c43c | 2014-03-18 03:10:27 -0600 | [diff] [blame] | 64 | |
| 65 | if [ -n "$PA_TAG" ]; then |
Yamil Ghazi | 38b55c8 | 2014-01-13 06:14:54 -0600 | [diff] [blame] | 66 | VERSION=$MAJOR.$MINOR$MAINTENANCE-$TAG |
| 67 | else |
| 68 | VERSION=$MAJOR.$MINOR$MAINTENANCE |
| 69 | fi |
BigBrother1984 | 3657045 | 2013-11-09 22:10:23 +0100 | [diff] [blame] | 70 | |
Paul Beeler | 761c43c | 2014-03-18 03:10:27 -0600 | [diff] [blame] | 71 | if [ -n "$PSD_TAG" ]; then |
TheMrcool212 | d1a19db | 2014-05-17 18:33:58 +0800 | [diff] [blame] | 72 | PSD_VERSION=$PSD_MAINTENANCE-$PSD_TAG-$PSD_MAJOR.$PSD_MINOR |
Paul Beeler | 761c43c | 2014-03-18 03:10:27 -0600 | [diff] [blame] | 73 | else |
TheMrcool212 | d1a19db | 2014-05-17 18:33:58 +0800 | [diff] [blame] | 74 | PSD_VERSION=$PSD_MAINTENANCE-$PSD_MAJOR.$PSD_MINOR |
Paul Beeler | 761c43c | 2014-03-18 03:10:27 -0600 | [diff] [blame] | 75 | fi |
BigBrother1984 | 3657045 | 2013-11-09 22:10:23 +0100 | [diff] [blame] | 76 | |
| 77 | # Get start time |
| 78 | res1=$(date +%s.%N) |
| 79 | |
TheMrcool212 | 7c586cd | 2014-05-17 14:13:53 +0800 | [diff] [blame] | 80 | echo -e "${cya}Building ${bldcya}AOSPAL $PSD_TAG $PSD_MAJOR.$PSD_MINOR for $DEVICE ${txtrst}"; |
BigBrother1984 | 3657045 | 2013-11-09 22:10:23 +0100 | [diff] [blame] | 81 | echo -e "${bldgrn}Start time: $(date) ${txtrst}" |
| 82 | |
| 83 | # Decide what command to execute |
| 84 | case "$EXTRAS" in |
| 85 | threads) |
| 86 | echo -e "${bldblu}Please enter desired building/syncing threads number followed by [ENTER]${txtrst}" |
| 87 | read threads |
| 88 | THREADS=$threads |
| 89 | ;; |
| 90 | clean|cclean) |
| 91 | echo -e "${bldblu}Cleaning intermediates and output files${txtrst}" |
| 92 | export CLEAN_BUILD="true" |
| 93 | [ -d "${DIR}/out" ] && rm -Rf ${DIR}/out/* |
| 94 | ;; |
| 95 | esac |
| 96 | |
| 97 | echo -e "" |
| 98 | |
Yamil Ghazi | 676e835 | 2014-01-14 03:23:30 -0600 | [diff] [blame] | 99 | export DEVICE=$DEVICE |
| 100 | |
D4rKn3sSyS | 3c87e45 | 2013-11-10 08:58:19 -0500 | [diff] [blame] | 101 | # Fetch latest sources |
BigBrother1984 | 3657045 | 2013-11-09 22:10:23 +0100 | [diff] [blame] | 102 | if [ "$SYNC" == "true" ]; then |
| 103 | echo -e "" |
| 104 | echo -e "${bldblu}Fetching latest sources${txtrst}" |
| 105 | repo sync -j"$THREADS" |
| 106 | echo -e "" |
| 107 | fi |
| 108 | |
| 109 | if [ ! -r "${DIR}/out/versions_checked.mk" ] && [ -n "$(java -version 2>&1 | grep -i openjdk)" ]; then |
| 110 | echo -e "${bldcya}Your java version still not checked and is candidate to fail, masquerading.${txtrst}" |
| 111 | JAVA_VERSION="java_version=${JVER}" |
| 112 | fi |
| 113 | |
xilence2210 | eac1291 | 2013-12-14 15:01:14 +0800 | [diff] [blame] | 114 | makeme=0 |
BigBrother1984 | 3657045 | 2013-11-09 22:10:23 +0100 | [diff] [blame] | 115 | if [ -n "${INTERACTIVE}" ]; then |
| 116 | echo -e "${bldblu}Dropping to interactive shell${txtrst}" |
| 117 | echo -en "${bldblu}Remeber to lunch you device:" |
| 118 | if [ "${VENDOR}" == "pa" ]; then |
| 119 | echo -e "[${bldgrn}lunch pa_$DEVICE-userdebug${bldblu}]${txtrst}" |
| 120 | else |
| 121 | echo -e "[${bldgrn}lunch full_$DEVICE-userdebug${bldblu}]${txtrst}" |
| 122 | fi |
| 123 | bash --init-file build/envsetup.sh -i |
| 124 | else |
| 125 | # Setup environment |
| 126 | echo -e "" |
| 127 | echo -e "${bldblu}Setting up environment${txtrst}" |
xilence2210 | eac1291 | 2013-12-14 15:01:14 +0800 | [diff] [blame] | 128 | export USE_CCACHE=1 |
| 129 | export CCACHE_DIR=~/.ccache |
| 130 | # set ccache due to your disk space,set it at your own risk |
| 131 | prebuilts/misc/linux-x86/ccache/ccache -M 15G |
BigBrother1984 | 3657045 | 2013-11-09 22:10:23 +0100 | [diff] [blame] | 132 | . build/envsetup.sh |
| 133 | echo -e "" |
| 134 | |
| 135 | # lunch/brunch device |
| 136 | echo -e "${bldblu}Lunching device [$DEVICE] ${cya}(Includes dependencies sync)${txtrst}" |
| 137 | export PREFS_FROM_SOURCE |
| 138 | lunch "pa_$DEVICE-userdebug"; |
Paul Beeler | 761c43c | 2014-03-18 03:10:27 -0600 | [diff] [blame] | 139 | |
xilence2210 | eac1291 | 2013-12-14 15:01:14 +0800 | [diff] [blame] | 140 | makeme=1 |
| 141 | fi |
BigBrother1984 | 3657045 | 2013-11-09 22:10:23 +0100 | [diff] [blame] | 142 | |
xilence2210 | eac1291 | 2013-12-14 15:01:14 +0800 | [diff] [blame] | 143 | # Decide what command to execute |
xilence2210 | c33072f | 2013-12-18 13:05:35 +0800 | [diff] [blame] | 144 | fix_count=0 |
xilence2210 | eac1291 | 2013-12-14 15:01:14 +0800 | [diff] [blame] | 145 | for var in $* ; do |
| 146 | if [ "$var" == "sync" ] |
| 147 | then |
| 148 | echo -e "${bldblu}Fetching latest sources ${txtrst}" |
| 149 | repo sync |
| 150 | echo -e "" |
| 151 | elif [ "$var" == "clean" ] |
| 152 | then |
| 153 | echo -e "${bldblu}Clearing previous build info ${txtrst}" |
| 154 | mka installclean |
| 155 | elif [ "$var" == "allclean" ] |
| 156 | then |
| 157 | echo -e "${bldblu}Clearing build path ${txtrst}" |
| 158 | mka clean |
| 159 | elif [ "$var" == "fix" ] |
| 160 | then |
| 161 | echo -e "skip for remove build.prop" |
| 162 | fix_count=1 |
| 163 | else |
| 164 | echo -e "running..." |
| 165 | fi |
| 166 | done |
| 167 | |
| 168 | if [ "$fix_count" == "0" ] |
| 169 | then |
xilence2210 | c33072f | 2013-12-18 13:05:35 +0800 | [diff] [blame] | 170 | echo -e "removing build.prop..." |
| 171 | rm $OUT/system/build.prop |
xilence2210 | eac1291 | 2013-12-14 15:01:14 +0800 | [diff] [blame] | 172 | fi |
| 173 | |
| 174 | echo -e "" |
| 175 | |
| 176 | if [ "$makeme" == "1" ] |
| 177 | then |
BigBrother1984 | 3657045 | 2013-11-09 22:10:23 +0100 | [diff] [blame] | 178 | echo -e "${bldblu}Starting compilation${txtrst}" |
| 179 | mka bacon |
| 180 | fi |
| 181 | echo -e "" |
| 182 | |
| 183 | # Get elapsed time |
| 184 | res2=$(date +%s.%N) |
| 185 | echo -e "${bldgrn}Total time elapsed: ${txtrst}${grn}$(echo "($res2 - $res1) / 60"|bc ) minutes ($(echo "$res2 - $res1"|bc ) seconds)${txtrst}" |