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