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