config-om3d7k-ohci.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 if [ -z "$CROSS_COMPILE" ]; then
28     export CROSS_COMPILE=/usr/local/openmoko/arm/bin/arm-angstrom-linux-gnueabi-
29 fi
30 make O=$1 ARCH=arm silentoldconfig
31
32 #
33 # figure out what we are building
34 #
35
36 PRODUCT=
37
38 if [ ! -z "`grep CONFIG_MACH_NEO1973_GTA01=y $1/.config`" ] ; then
39         START=30008000
40         PRODUCT=GTA01
41 fi
42
43 if [ ! -z "`grep CONFIG_MACH_NEO1973_GTA02=y $1/.config`" ] ; then
44         START=30008000
45         PRODUCT=GTA02
46 fi
47
48 if [ ! -z "`grep CONFIG_MACH_OM_3D7K=y $1/.config`" ] ; then
49         START=50008000
50         PRODUCT=OM_3D7K
51 fi
52
53 if [ ! -z "`grep CONFIG_MACH_SMDK6410=y $1/.config`" ] ; then
54         START=50008000
55         PRODUCT=SMDK6410
56 fi
57
58 if [ ! -z "`grep CONFIG_MACH_M800=y $1/.config`" ] ; then
59         START=30008000
60         PRODUCT=M800
61 fi
62
63 if [ -z "$PRODUCT" ] ; then
64         echo "Unable to figure out what we are building from the config"
65         exit 1
66 fi
67
68 #
69 # check that we are in a valid branch
70 #
71
72 if git branch | head -n1 | grep -q "* (no branch)"; then
73         cat <<EOF 1>&2
74 There is no branch in the local copy of the repository right now!
75 Hint: type git-branch, make sure you are in a valid branch and then try again
76 EOF
77    exit 1
78 fi;
79
80 #
81 # get the branch and head hash for the version we are building to
82 # allow source tracability
83 #
84
85 VERSION=
86 if [ -d .git ] ; then
87  HEAD=`git show --pretty=oneline | head -n1 | cut -d' ' -f1 | cut -b1-16`
88  BRANCH=`git branch | grep ^\* | cut -d' ' -f2 | sed s/-hist//g`
89  VERSION=-$PRODUCT\_$BRANCH
90 fi
91
92
93 echo $MKIMAGECMD
94
95 #
96 # actually make it
97 #
98
99 if make -j$PARALLEL O=$1 ARCH=arm CONFIG_DEBUG_SECTION_MISMATCH=y EXTRAVERSION=$VERSION; then
100
101         #
102         # if the build is happy, postprocess it by strip and with U-Boot header wrapper
103         # you can get mkimage from U-Boot or Qi build
104         #
105
106         ${CROSS_COMPILE}objcopy -O binary -R .note -R .comment -S $1/arch/arm/boot/compressed/vmlinux $1/linux.bin
107         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
108
109         # we can see if it is an "moredrivers" build by looking for USB Eth gadget
110         # if it is then keep a stamped copy of last build
111
112         if [ ! -z "`grep CONFIG_USB_USBNET=y $1/.config`" ] ; then
113                 rm -f $1/uImage-moredrivers-$PRODUCT*.bin $1/modules-$PRODUCT*.tar.gz
114                 cp $1/uImage-$PRODUCT.bin $1/uImage-moredrivers$VERSION-$HEAD.bin
115                 rm -rf $1/staging
116                 mkdir -p $1/staging
117                 if [ ! -z "$2" ] ; then
118                         make O=$1 ARCH=arm modules_install INSTALL_MOD_PATH=staging
119                         cd $1/staging
120                         tar czf ../modules$VERSION-$HEAD.tar.gz .
121                         cd ../..
122                 fi
123         fi
124         exit 0
125 else
126         exit 1
127 fi
128