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