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