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