introduce-smdk6410.patch
[kernel.git] / build
1 #!/bin/sh
2 #
3 # Kernel building helper script (C)2008 Openmoko, Inc
4 # Andy Green <andy@openmoko.org>
5 #
6 # Licensed under GPLv3 or later
7 #
8 #
9 # you need to run this from the top level source dir, but it creates all
10 # object files into a subdir given in the first argument, eg
11 #
12 # ./build GTA02
13 #
14 # this radically speeds up swapping between build contexts.  Note the config
15 # for each build lives in the subdir.
16
17 PARALLEL=16
18
19 if [ -z "$1" ] ; then
20         echo "Specify the build subdir, eg, GTA02 which contains the .config"
21         echo "and will hold the object files"
22         exit 1
23 fi
24
25 mkdir -p $1
26
27 export CROSS_COMPILE=/usr/local/openmoko/arm/bin/arm-angstrom-linux-gnueabi-
28 make O=$1 ARCH=arm silentoldconfig
29
30 #
31 # figure out what we are building
32 #
33
34 PRODUCT=
35
36 if [ ! -z "`grep CONFIG_MACH_NEO1973_GTA01=y $1/.config`" ] ; then
37         START=30008000
38         PRODUCT=GTA01
39 fi
40
41 if [ ! -z "`grep CONFIG_MACH_NEO1973_GTA02=y $1/.config`" ] ; then
42         START=30008000
43         PRODUCT=GTA02
44 fi
45
46 if [ ! -z "`grep CONFIG_MACH_OPENMOKO_GTA03=y $1/.config`" ] ; then
47         START=50008000
48         PRODUCT=GTA03
49 fi
50
51 if [ ! -z "`grep CONFIG_MACH_SMDK6410=y $1/.config`" ] ; then
52         START=50008000
53         PRODUCT=SMDK6410
54 fi
55
56 if [ ! -z "`grep CONFIG_MACH_M800=y $1/.config`" ] ; then
57         START=30008000
58         PRODUCT=M800
59 fi
60
61 if [ -z "$PRODUCT" ] ; then
62         echo "Unable to figure out what we are building from the config"
63         exit 1
64 fi
65
66 #
67 # get the branch and head hash for the version we are building to
68 # allow source tracability
69 #
70
71 VERSION=
72 if [ -d .git ] ; then
73  HEAD=`git show --pretty=oneline | head -n1 | cut -d' ' -f1 | cut -b1-16`
74  BRANCH=`git branch | grep ^\* | cut -d' ' -f2 | sed s/-hist//g`
75  VERSION=-$PRODUCT\_$BRANCH
76 fi
77
78
79 echo $MKIMAGECMD
80
81 #
82 # actually make it
83 #
84
85 if make -j$PARALLEL O=$1 ARCH=arm CONFIG_DEBUG_SECTION_MISMATCH=y EXTRAVERSION=$VERSION; then
86
87         #
88         # if the build is happy, postprocess it by strip and with U-Boot header wrapper
89         # you can get mkimage from U-Boot or Qi build
90         #
91
92         ${CROSS_COMPILE}objcopy -O binary -R .note -R .comment -S $1/arch/arm/boot/compressed/vmlinux $1/linux.bin
93         mkimage -A arm -O linux -T kernel -C none -a $START -e $START -n "OM $PRODUCT $BRANCH""_$HEAD" -d $1/linux.bin $1/uImage-$PRODUCT.bin
94
95         # we can see if it is an "moredrivers" build by looking for USB Eth gadget
96         # if it is then keep a stamped copy of last build
97
98         if [ ! -z "`grep CONFIG_USB_USBNET=y $1/.config`" ] ; then
99                 rm -f $1/uImage-moredrivers-$PRODUCT*.bin $1/modules-$PRODUCT*.tar.gz
100                 cp $1/uImage-$PRODUCT.bin $1/uImage-moredrivers$VERSION.bin
101                 rm -rf $1/staging
102                 mkdir -p $1/staging
103                 if [ ! -z "$2" ] ; then
104                         make O=$1 ARCH=arm modules_install INSTALL_MOD_PATH=staging
105                         cd $1/staging
106                         tar czf ../modules$VERSION.tar.gz .
107                         cd ../..
108                 fi
109         fi
110         exit 0
111 else
112         exit 1
113 fi
114