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