Merge remote-tracking branch 'stable/linux-3.0.y' into develop-3.0-jb
[firefly-linux-kernel-4.4.55.git] / pack-kernel-common.sh
1 #!/bin/bash
2 set -e
3
4 # ---------------------------------------------------------------------------
5 usage() {
6         echo usage: $0 kerneldir defconfig
7         echo example: $0 . rk29_ddr3sdk_defconfig
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=${1-.}
20 kerndir=$(cd $kerndir; pwd)     # get absolute path
21 [ -d $kerndir ] || usage
22
23 if [ "$defconfig" = ".config" ]; then
24         [ -f $kerndir/.config ] || usage
25 else
26         [ -f $kerndir/arch/arm/configs/$defconfig ] || usage
27 fi
28 # ---------------------------------------------------------------------------
29
30 # make .uu
31 pushd $kerndir >/dev/null
32
33 declare -a files
34
35 for file in ${FILES[@]}; do
36         [ -e ${file} ] && files=( ${files[@]} ${file} ) || echo No such file: ${file}
37         [ -f ${file/.[cS]/.uu} ] && rm -f ${file/.[cS]/.uu}
38 done
39
40 for d in ${DIRS[@]}; do
41         [ -d $d ] && find $d -type f -name '*.uu' -print0 | xargs -0 rm -f
42 done
43
44 echo build kernel on $kerndir with $defconfig
45 make clean >/dev/null 2>&1
46 make $defconfig >/dev/null 2>&1
47 make -j`grep 'processor' /proc/cpuinfo | wc -l` ${files[@]/.[cS]/.o} ${DIRS[@]}
48
49 for file in ${FILES[@]}; do
50         filename=${file##*/} 
51         base=${filename%%.*}
52         dir=${file%/*}
53         [ -f $dir/$base.o ] && echo UU $dir/$base.uu && uuencode $dir/$base.o $base.o > $dir/$base.uu
54 done
55
56 for d in ${DIRS[@]}; do
57         for file in `find $d -type f -name '*.o'`; do
58                 filename=${file##*/} 
59                 base=${filename%%.*}
60                 dir=${file%/*}
61                 echo UU $dir/$base.uu && uuencode $dir/$base.o $base.o > $dir/$base.uu
62         done
63 done
64
65 make distclean >/dev/null 2>&1
66
67 popd >/dev/null
68
69 # fix local version
70 echo "+" > $kerndir/.scmversion
71
72 # tar kernel
73 pushd $kerndir/../ >/dev/null
74 package=$(basename $kerndir).tar
75 ex=$package.ex
76 > $ex
77 for file in ${FILES[@]}; do
78         echo "$file" >> $ex
79 done
80 for file in ${EXCLUDES[@]}; do
81         echo "$file" >> $ex
82 done
83 echo TAR $(pwd)/$package
84 tar cf $package --numeric-owner --exclude-from $ex --exclude=.git $(basename $kerndir)
85 tar rf $package --numeric-owner --exclude=.git prebuilt/linux-x86/toolchain/arm-eabi-4.4.0
86 echo GZIP $(pwd)/$package.gz
87 gzip -9 -c $package > $package.gz
88 rm $ex
89 popd >/dev/null
90
91 rm -f $kerndir/.scmversion
92
93 echo done
94
95