Merge branch 'develop' of 10.10.10.29:/home/rockchip/kernel into develop
[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/vpu_mem.c
10
11 drivers/staging/rk29/ipp/rk29-ipp.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 drivers/staging/rk29/vivante/*.c
29 drivers/staging/rk29/vivante/*.h
30
31 arch/arm/configs/rk29_sdk_yaffs2_defconfig
32
33 arch/arm/mach-rk29/board-malata.c
34 arch/arm/mach-rk29/board-rk29malata-key.c
35 arch/arm/configs/rk29_malata_defconfig
36
37 arch/arm/mach-rk29/board-rk29-winaccord.c
38 arch/arm/configs/rk29_Winaccord_defconfig
39
40 arch/arm/mach-rk29/board-rk29-aigo.c
41 arch/arm/mach-rk29/board-rk29aigo-key.c
42 arch/arm/configs/rk29_aigo_defconfig
43 )
44
45 # ---------------------------------------------------------------------------
46 usage() {
47         echo usage: $0 kerneldir defconfig
48         echo example: $0 . rk29_sdk_defconfig
49         exit
50 }
51
52 while getopts "h" options; do
53   case $options in
54     h ) usage;;
55   esac
56 done
57 # ---------------------------------------------------------------------------
58
59 # ---------------------------------------------------------------------------
60 kerndir=${1-.}
61 kerndir=$(cd $kerndir; pwd)     # get absolute path
62 [ -d $kerndir ] || usage
63
64 defconfig=${2-rk29_sdk_defconfig}
65 if [ "$defconfig" = ".config" ]; then
66         [ -f $kerndir/.config ] || usage
67 else
68         [ -f $kerndir/arch/arm/configs/$defconfig ] || usage
69 fi
70 # ---------------------------------------------------------------------------
71
72 # make .uu
73 pushd $kerndir >/dev/null
74
75 declare -a files
76
77 for file in ${FILES[@]}; do
78         [ -e ${file} ] && files=( ${files[@]} ${file} ) || echo No such file: ${file}
79         [ -f ${file/.[cS]/.uu} ] && rm -f ${file/.[cS]/.uu}
80 done
81
82 for d in ${DIRS[@]}; do
83         [ -d $d ] && find $d -type f -name '*.uu' -print0 | xargs -0 rm -f
84 done
85
86 echo build kernel on $kerndir with $defconfig
87 make clean >/dev/null 2>&1
88 make $defconfig >/dev/null 2>&1
89 make -j`grep 'processor' /proc/cpuinfo | wc -l` ${files[@]/.[cS]/.o} ${DIRS[@]}
90
91 for file in ${FILES[@]}; do
92         filename=${file##*/} 
93         base=${filename%%.*}
94         dir=${file%/*}
95         [ -f $dir/$base.o ] && echo UU $dir/$base.uu && uuencode $dir/$base.o $base.o > $dir/$base.uu
96 done
97
98 for d in ${DIRS[@]}; do
99         for file in `find $d -type f -name '*.o'`; do
100                 filename=${file##*/} 
101                 base=${filename%%.*}
102                 dir=${file%/*}
103                 echo UU $dir/$base.uu && uuencode $dir/$base.o $base.o > $dir/$base.uu
104         done
105 done
106
107 make clean >/dev/null 2>&1
108
109 popd >/dev/null
110
111 # tar kernel
112 pushd $kerndir/../ >/dev/null
113 package=$(basename $kerndir).tar
114 ex=$package.ex
115 > $ex
116 for file in ${FILES[@]}; do
117         echo "$file" >> $ex
118 done
119 for file in ${EXCLUDES[@]}; do
120         echo "$file" >> $ex
121 done
122 echo TAR $(pwd)/$package
123 tar cf $package --numeric-owner --exclude-from $ex --exclude=.git --exclude=`basename $0` $(basename $kerndir)
124 tar rf $package --numeric-owner --exclude=.git toolchain/arm-eabi-4.4.0
125 echo GZIP $(pwd)/$package.gz
126 gzip -9 -c $package > $package.gz
127 rm $ex
128 popd >/dev/null
129
130 echo done
131
132