merge of '178eac00dc5aa8338d42e8e203633bec7817bbf6'
[vuplus_openembedded] / packages / linux / linux.inc
1 DESCRIPTION = "Linux Kernel"
2 SECTION = "kernel"
3 LICENSE = "GPL"
4
5 inherit kernel
6
7 # Add dependency on mkimage for kernels that build a uImage
8
9 python __anonymous () {
10
11     import bb
12
13     kerneltype = bb.data.getVar('KERNEL_IMAGETYPE', d, 1) or ''
14     if kerneltype == 'uImage':
15         depends = bb.data.getVar("DEPENDS", d, 1)
16         depends = "%s u-boot-mkimage-openmoko-native" % depends
17         bb.data.setVar("DEPENDS", depends, d)
18 }
19
20
21 RPSRC = "http://www.rpsys.net/openzaurus/patches/archive"
22
23 # Specify the commandline for your device
24
25 # Boot from mmc
26 CMDLINE_at91sam9263ek = "mem=64M console=ttyS0,115200 root=/dev/mmcblk0p1 rootfstype=ext2 rootdelay=5"
27 # Boot from nfs
28 #CMDLINE_at91sam9263ek = "mem=64M console=ttyS0,115200 root=301 root=/dev/nfs nfsroot=172.20.3.1:/data/at91 ip=172.20.0.5:::255.255.0.0"
29
30 # Set the verbosity of kernel messages during runtime
31 # You can define CMDLINE_DEBUG in your local.conf or distro.conf to override this behaviour  
32 CMDLINE_DEBUG ?= '${@base_conditional("DISTRO_TYPE", "release", "quiet", "debug",d)}'
33 CMDLINE_append = " ${CMDLINE_DEBUG} "
34
35 do_configure_prepend() {
36         echo "" > ${S}/.config
37
38         #
39         # logo support, if you supply logo_linux_clut224.ppm in SRC_URI, then it's going to be used
40         #
41         if [ -e ${WORKDIR}/logo_linux_clut224.ppm ]; then
42                 install -m 0644 ${WORKDIR}/logo_linux_clut224.ppm drivers/video/logo/logo_linux_clut224.ppm
43                 echo "CONFIG_LOGO=y"                    >> ${S}/.config
44                 echo "CONFIG_LOGO_LINUX_CLUT224=y"      >> ${S}/.config
45         fi
46
47         #
48         # oabi / eabi support
49         #
50         if [ "${TARGET_OS}" = "linux-gnueabi" -o  "${TARGET_OS}" = "linux-uclibcgnueabi" ]; then
51                 echo "CONFIG_AEABI=y"                   >> ${S}/.config
52                 echo "CONFIG_OABI_COMPAT=y"             >> ${S}/.config
53         else
54                 echo "# CONFIG_AEABI is not set"        >> ${S}/.config
55                 echo "# CONFIG_OABI_COMPAT is not set"  >> ${S}/.config
56         fi
57
58         #
59         # endian support
60         #
61         if [ "${SITEINFO_ENDIANESS}" = "be" ]; then
62                 echo "CONFIG_CPU_BIG_ENDIAN=y"          >> ${S}/.config
63         fi
64
65         echo "CONFIG_CMDLINE=\"${CMDLINE}\"" >> ${S}/.config
66
67         sed -e '/CONFIG_AEABI/d' \
68             -e '/CONFIG_OABI_COMPAT=/d' \
69             -e '/CONFIG_CMDLINE=/d' \
70             -e '/CONFIG_CPU_BIG_ENDIAN/d' \
71             -e '/CONFIG_LOGO=/d' \
72             -e '/CONFIG_LOGO_LINUX_CLUT224=/d' \
73             -e '/CONFIG_LOCALVERSION/d' \
74             < '${WORKDIR}/defconfig' >>'${S}/.config'
75
76         #
77         # root-over-nfs-over-usb-eth support. Limited, but should cover some cases.
78         # Enable this by setting a proper CMDLINE_NFSROOT_USB.
79         #
80         if [ ! -z "${CMDLINE_NFSROOT_USB}" ]; then
81                 oenote "Configuring the kernel for root-over-nfs-over-usb-eth with CMDLINE ${CMDLINE_NFSROOT_USB}"
82                 sed -e '/CONFIG_INET/d' \
83                     -e '/CONFIG_IP_PNP=/d' \
84                     -e '/CONFIG_USB_GADGET=/d' \
85                     -e '/CONFIG_USB_GADGET_SELECTED=/d' \
86                     -e '/CONFIG_USB_ETH=/d' \
87                     -e '/CONFIG_NFS_FS=/d' \
88                     -e '/CONFIG_ROOT_NFS=/d' \
89                     -e '/CONFIG_CMDLINE=/d' \
90                     -i ${S}/.config
91                 echo "CONFIG_INET=y"                     >> ${S}/.config
92                 echo "CONFIG_IP_PNP=y"                   >> ${S}/.config
93                 echo "CONFIG_USB_GADGET=y"               >> ${S}/.config
94                 echo "CONFIG_USB_GADGET_SELECTED=y"      >> ${S}/.config
95                 echo "CONFIG_USB_ETH=y"                  >> ${S}/.config
96                 echo "CONFIG_NFS_FS=y"                   >> ${S}/.config
97                 echo "CONFIG_ROOT_NFS=y"                 >> ${S}/.config
98                 echo "CONFIG_CMDLINE=\"${CMDLINE_NFSROOT_USB}\"" >> ${S}/.config
99         fi
100         yes '' | oe_runmake oldconfig
101 }
102
103 do_configure_append_avr32() {
104         sed -i -e s:-mno-pic::g arch/avr32/Makefile
105 }
106
107
108 UBOOT_ENTRYPOINT ?= "20008000"
109 UBOOT_LOADADDRESS ?= "${UBOOT_ENTRYPOINT}"
110
111 do_compile_append() {
112     if test "x${KERNEL_IMAGETYPE}" = "xuImage" ; then 
113         if test "x${ARCH}" = "xpowerpc" ; then
114                 UBOOT_ARCH=ppc
115         else
116                 UBOOT_ARCH=$ARCH
117         fi
118         if test -e arch/${ARCH}/boot/compressed/vmlinux ; then
119             ${OBJCOPY} -O binary -R .note -R .comment -S arch/${ARCH}/boot/compressed/vmlinux linux.bin
120             uboot-mkimage -A ${UBOOT_ARCH} -O linux -T kernel -C none -a ${UBOOT_LOADADDRESS} -e ${UBOOT_ENTRYPOINT} -n "${DISTRO_NAME}/${PV}/${MACHINE}" -d linux.bin arch/${ARCH}/boot/uImage
121             rm -f linux.bin
122         else
123             ${OBJCOPY} -O binary -R .note -R .comment -S vmlinux linux.bin
124             rm -f linux.bin.gz
125             gzip -9 linux.bin
126             uboot-mkimage -A ${UBOOT_ARCH} -O linux -T kernel -C gzip -a ${UBOOT_LOADADDRESS} -e ${UBOOT_ENTRYPOINT} -n "${DISTRO_NAME}/${PV}/${MACHINE}" -d linux.bin.gz arch/${ARCH}/boot/uImage
127             rm -f linux.bin.gz
128         fi
129     fi
130 }
131
132 KERNEL_IMAGE_BASE_NAME = "${KERNEL_IMAGETYPE}-${PV}-${PR}-${MACHINE}"
133 KERNEL_IMAGE_SYMLINK_NAME = "${KERNEL_IMAGETYPE}-${MACHINE}"
134
135 do_deploy() {
136         install -d ${DEPLOY_DIR_IMAGE}
137         install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGE_BASE_NAME}.bin
138         tar -cvzf ${DEPLOY_DIR_IMAGE}/modules-${PV}-${PR}-${MACHINE}.tgz -C ${D} lib
139
140         cd ${DEPLOY_DIR_IMAGE}
141         rm -f ${KERNEL_IMAGE_SYMLINK_NAME}.bin
142         ln -sf ${KERNEL_IMAGE_BASE_NAME}.bin ${KERNEL_IMAGE_SYMLINK_NAME}.bin
143 }
144
145 do_deploy[dirs] = "${S}"
146
147 addtask deploy before do_package after do_install
148