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