Merge remote-tracking branch 'aosp/android-3.0' into develop-3.0
[firefly-linux-kernel-4.4.55.git] / pack-kernel.sh
1 #!/bin/bash
2 set -e
3
4 FILES=(
5 # arch
6 arch/arm/mach-rk29/clock.c
7 arch/arm/mach-rk29/ddr.c
8 arch/arm/mach-rk29/vpu*.c
9
10 drivers/staging/rk29/ipp/rk29-ipp.c
11 )
12
13 DIRS=(
14 drivers/staging/rk29/vivante/
15 )
16
17 EXCLUDES=(
18 arch/arm/mach-rk2818/*.c
19 arch/arm/mach-rk2818/*.h
20 arch/arm/mach-rk2818/include/mach
21 arch/arm/configs/rk28*
22 drivers/*rk28*.c
23 sound/*rk28*.c
24 sound/*rk28*.h
25 include/*rk28*
26
27 arch/arm/mach-rk29/ddr_reconfig.c
28
29 drivers/staging/rk29/vivante/*.c
30 drivers/staging/rk29/vivante/*.h
31
32 arch/arm/mach-rk29/board-rk29sdk.c
33 arch/arm/configs/rk29_sdk_defconfig
34 arch/arm/configs/rk29_sdk_yaffs2_defconfig
35
36 arch/arm/mach-rk29/board-malata.c
37 arch/arm/mach-rk29/board-rk29malata-key.c
38 arch/arm/configs/rk29_malata_defconfig
39
40 arch/arm/mach-rk29/board-rk29-winaccord.c
41 arch/arm/configs/rk29_Winaccord_defconfig
42
43 arch/arm/mach-rk29/board-rk29-a22*
44 arch/arm/configs/rk29_a22_defconfig
45
46 arch/arm/mach-rk29/board-rk29-fih*
47 arch/arm/configs/rk29_FIH_defconfig
48
49 arch/arm/mach-rk29/board-rk29-k97*
50 arch/arm/mach-rk29/board-rk29k97*
51 arch/arm/configs/rk29_k97_defconfig
52
53 arch/arm/mach-rk29/board-rk29-newton*
54 arch/arm/mach-rk29/board-newton*
55 arch/arm/configs/rk29_newton_defconfig
56
57 arch/arm/mach-rk29/board-rk29-p91*
58 arch/arm/configs/rk29_p91_defconfig
59
60 arch/arm/mach-rk29/board-rk29phonepadsdk*
61 arch/arm/configs/rk29_phonepadsdk_defconfig
62
63 arch/arm/mach-rk29/board-rk29-phonesdk*
64 arch/arm/configs/rk29_phonesdk_defconfig
65
66 arch/arm/mach-rk29/board-rk29-td8801*
67 arch/arm/configs/rk29_td8801_v2_defconfig
68
69 arch/arm/mach-rk29/board-rk29-z5*
70 arch/arm/configs/rk29_z5_defconfig
71 )
72
73 # ---------------------------------------------------------------------------
74 usage() {
75         echo usage: $0 kerneldir defconfig
76         echo example: $0 . rk29_ddr3sdk_defconfig
77         exit
78 }
79
80 while getopts "h" options; do
81   case $options in
82     h ) usage;;
83   esac
84 done
85 # ---------------------------------------------------------------------------
86
87 # ---------------------------------------------------------------------------
88 kerndir=${1-.}
89 kerndir=$(cd $kerndir; pwd)     # get absolute path
90 [ -d $kerndir ] || usage
91
92 defconfig=${2-rk29_ddr3sdk_defconfig}
93 if [ "$defconfig" = ".config" ]; then
94         [ -f $kerndir/.config ] || usage
95 else
96         [ -f $kerndir/arch/arm/configs/$defconfig ] || usage
97 fi
98 # ---------------------------------------------------------------------------
99
100 # make .uu
101 pushd $kerndir >/dev/null
102
103 declare -a files
104
105 for file in ${FILES[@]}; do
106         [ -e ${file} ] && files=( ${files[@]} ${file} ) || echo No such file: ${file}
107         [ -f ${file/.[cS]/.uu} ] && rm -f ${file/.[cS]/.uu}
108 done
109
110 for d in ${DIRS[@]}; do
111         [ -d $d ] && find $d -type f -name '*.uu' -print0 | xargs -0 rm -f
112 done
113
114 echo build kernel on $kerndir with $defconfig
115 make clean >/dev/null 2>&1
116 make $defconfig >/dev/null 2>&1
117 make -j`grep 'processor' /proc/cpuinfo | wc -l` ${files[@]/.[cS]/.o} ${DIRS[@]}
118
119 for file in ${FILES[@]}; do
120         filename=${file##*/} 
121         base=${filename%%.*}
122         dir=${file%/*}
123         [ -f $dir/$base.o ] && echo UU $dir/$base.uu && uuencode $dir/$base.o $base.o > $dir/$base.uu
124 done
125
126 for d in ${DIRS[@]}; do
127         for file in `find $d -type f -name '*.o'`; do
128                 filename=${file##*/} 
129                 base=${filename%%.*}
130                 dir=${file%/*}
131                 echo UU $dir/$base.uu && uuencode $dir/$base.o $base.o > $dir/$base.uu
132         done
133 done
134
135 make distclean >/dev/null 2>&1
136
137 popd >/dev/null
138
139 # fix local version
140 echo "+" > $kerndir/.scmversion
141
142 # tar kernel
143 pushd $kerndir/../ >/dev/null
144 package=$(basename $kerndir).tar
145 ex=$package.ex
146 > $ex
147 for file in ${FILES[@]}; do
148         echo "$file" >> $ex
149 done
150 for file in ${EXCLUDES[@]}; do
151         echo "$file" >> $ex
152 done
153 echo TAR $(pwd)/$package
154 tar cf $package --numeric-owner --exclude-from $ex --exclude=.git --exclude=`basename $0` $(basename $kerndir)
155 tar rf $package --numeric-owner --exclude=.git toolchain/arm-eabi-4.4.0
156 echo GZIP $(pwd)/$package.gz
157 gzip -9 -c $package > $package.gz
158 rm $ex
159 popd >/dev/null
160
161 rm -f $kerndir/.scmversion
162
163 echo done
164
165