pack-kernel.sh: exclude rk3168m
[firefly-linux-kernel-4.4.55.git] / pack-kernel.sh
1 #!/bin/bash
2 set -e
3
4 # ---------------------------------------------------------------------------
5 usage() {
6         echo "usage: $0 [rk2928|rk30|rk3066b|rk3188]"
7         echo "example: $0 rk3066b"
8         exit
9 }
10
11 while getopts "h" options; do
12   case $options in
13     h ) usage;;
14   esac
15 done
16 # ---------------------------------------------------------------------------
17
18 # ---------------------------------------------------------------------------
19 kerndir=$(cd .; pwd)    # get absolute path
20 [ -d $kerndir ] || usage
21
22 arch=${1}
23 FILES=()
24 DIRS=()
25 EXCLUDES=()
26
27 if [ "$arch" == "rk30" ]; then
28
29 EXCLUDES=(
30 arch/arm/mach-rk30/*rk3066b*
31 arch/arm/mach-rk30/include/mach/*rk3066b*
32
33 arch/arm/mach-rk3188/*.c
34 arch/arm/mach-rk3188/*.h
35 arch/arm/mach-rk3188/Makefile*
36 arch/arm/mach-rk3188/include
37 arch/arm/configs/rk3188_*
38
39 arch/arm/mach-rk29*/*.c
40 arch/arm/mach-rk29*/*.h
41 arch/arm/mach-rk29*/*.S
42 arch/arm/mach-rk29*/Makefile*
43 arch/arm/mach-rk29*/include
44 arch/arm/configs/rk29*
45
46 arch/arm/mach-rk30/board-rk30-phone-*
47 arch/arm/configs/rk30_phone_*
48
49 arch/arm/configs/rk30_phonepad_c8003*
50 )
51
52 defconfig=rk3066_sdk_defconfig
53
54 elif [ "$arch" == "rk2928" ]; then
55
56 EXCLUDES=(
57 arch/arm/mach-rk30/*.c
58 arch/arm/mach-rk30/*.h
59 arch/arm/mach-rk30/*.S
60 arch/arm/mach-rk30/*.inc
61 arch/arm/mach-rk30/Makefile*
62 arch/arm/mach-rk30/include
63 arch/arm/configs/rk30*
64
65 arch/arm/mach-rk3188/*.c
66 arch/arm/mach-rk3188/*.h
67 arch/arm/mach-rk3188/Makefile*
68 arch/arm/mach-rk3188/include
69 arch/arm/configs/rk3188_*
70
71 drivers/video/rockchip/lcdc/rk30*
72 drivers/video/rockchip/hdmi/chips/rk30/rk30*
73 drivers/video/rockchip/hdmi/chips/rk30/hdcp/rk30*
74
75 arch/arm/mach-rk2928/board-rk2928-a720*
76 arch/arm/configs/rk2928_a720_defconfig
77
78 arch/arm/mach-rk2928/board-rk2928.c
79 arch/arm/configs/rk2928_defconfig
80
81 arch/arm/mach-rk2928/board-rk2928-phonepad*
82 arch/arm/configs/rk2928_phonepad_defconfig
83 )
84
85 defconfig=rk2928_sdk_defconfig
86
87 elif [ "$arch" == "rk3066b" -o "$arch" == "rk3188" ]; then
88
89 EXCLUDES=(
90 arch/arm/mach-rk30/clock_data.c
91 arch/arm/mach-rk30/board-rk30-ds*
92 arch/arm/mach-rk30/board-rk30-phone*
93 arch/arm/mach-rk30/board-rk30-sdk.c
94 arch/arm/mach-rk30/board-rk30-sdk-tps65910.c
95 arch/arm/mach-rk30/board-rk30-sdk-twl80032.c
96 arch/arm/mach-rk30/board-rk30-sdk-rfkill.c
97 arch/arm/mach-rk30/board-rk30-sdk-wm8326.c
98
99 arch/arm/configs/rk30_*
100 arch/arm/configs/rk3066_*
101
102 arch/arm/mach-rk29*/*.c
103 arch/arm/mach-rk29*/*.h
104 arch/arm/mach-rk29*/*.S
105 arch/arm/mach-rk29*/Makefile*
106 arch/arm/mach-rk29*/include
107 arch/arm/configs/rk29*
108 )
109
110 if [ "$arch" == "rk3066b" ]; then
111         defconfig=rk3168_tb_defconfig
112 else
113         defconfig=rk3188_tb_defconfig
114 fi
115
116 else
117         echo "unknown arch" && usage
118 fi
119
120 [ -f $kerndir/arch/arm/configs/$defconfig ] || usage
121
122 COMMON_EXCLUDES=(
123 pack-kernel*
124 arch/arm/plat-rk/vpu*.c
125 drivers/staging/rk29/vivante
126 drivers/staging/rk29/ipp/rk29-ipp.c
127 drivers/*rk28*.c
128 include/*rk28*
129 arch/arm/mach-rk29/*.c
130 arch/arm/mach-rk29/*.h
131 arch/arm/mach-rk29/*.S
132 arch/arm/mach-rk29/Makefile*
133 arch/arm/mach-rk29/include
134 arch/arm/mach-rk30/*rk3168m*
135 arch/arm/mach-rk*/*-fpga*
136 arch/arm/configs/rk29_*
137 arch/arm/configs/rk3168m_*
138 arch/arm/configs/*_fpga_*
139 )
140 # ---------------------------------------------------------------------------
141
142 # make .uu
143 pushd $kerndir >/dev/null
144
145 declare -a files
146
147 for file in ${FILES[@]}; do
148         [ -e ${file} ] && files=( ${files[@]} ${file} ) || echo No such file: ${file}
149         [ -f ${file/.[cS]/.uu} ] && rm -f ${file/.[cS]/.uu}
150 done
151
152 for dir in ${DIRS[@]}; do
153         [ -d $dir ] && find $dir -type f -name '*.uu' -print0 | xargs -0 rm -f
154 done
155
156 echo build kernel on $kerndir with $defconfig, arch is $arch
157 make clean >/dev/null 2>&1
158 make $defconfig >/dev/null 2>&1
159
160 [ -z "${files}${DIRS}" ] ||
161 make -j`grep 'processor' /proc/cpuinfo | wc -l` ${files[@]/.[cS]/.o} ${DIRS[@]}
162
163 for file in ${FILES[@]}; do
164         filename=${file##*/} 
165         base=${filename%%.*}
166         dir=${file%/*}
167         [ -f $dir/$base.o ] && echo UU $dir/$base.uu && uuencode $dir/$base.o $base.o > $dir/$base.uu
168 done
169
170 for d in ${DIRS[@]}; do
171         for file in `find $d -type f -name '*.o'`; do
172                 filename=${file##*/} 
173                 base=${filename%%.*}
174                 dir=${file%/*}
175                 echo UU $dir/$base.uu && uuencode $dir/$base.o $base.o > $dir/$base.uu
176         done
177 done
178
179 make distclean >/dev/null 2>&1
180
181 popd >/dev/null
182
183 # fix local version
184 echo "+" > $kerndir/.scmversion
185
186 # tar kernel
187 pushd $kerndir/../ >/dev/null
188 package=$(basename $kerndir).tar
189 ex=$package.ex
190 > $ex
191 for file in ${FILES[@]}; do
192         echo "$file" >> $ex
193 done
194 for file in ${EXCLUDES[@]}; do
195         echo "$file" >> $ex
196 done
197 for file in ${COMMON_EXCLUDES[@]}; do
198         echo "$file" >> $ex
199 done
200 echo TAR $(pwd)/$package
201 tar cf $package --numeric-owner --exclude-from $ex --exclude=.git $(basename $kerndir)
202 #tar rf $package --numeric-owner --exclude=.git prebuilt/linux-x86/toolchain/arm-eabi-4.4.0
203 echo GZIP $(pwd)/$package.gz
204 gzip -9 -c $package > $package.gz
205 rm $ex
206 popd >/dev/null
207
208 rm -f $kerndir/.scmversion
209
210 echo done