scripts/build/kernel/linux.sh
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Wed Jan 13 20:46:01 2010 +0100 (2010-01-13)
changeset 1732 6b2ae7804c6f
parent 1337 7f742f73c2d1
child 1746 5851a36db763
permissions -rw-r--r--
debug/gdb: staticaly link to ncurses for the native gdb

Staticaly link the native gdb (the one that runs on the target,
not the cross one that runs on the host) to ncurses.
     1 # This file declares functions to install the kernel headers for linux
     2 # Copyright 2007 Yann E. MORIN
     3 # Licensed under the GPL v2. See COPYING in the root of this package
     4 
     5 CT_DoKernelTupleValues() {
     6     if [ "${CT_ARCH_USE_MMU}" = "y" ]; then
     7         CT_TARGET_KERNEL="linux"
     8     else
     9         CT_TARGET_KERNEL="uclinux"
    10     fi
    11 }
    12 
    13 # Download the kernel
    14 do_kernel_get() {
    15     if [ "${CT_KERNEL_LINUX_USE_CUSTOM_HEADERS}" != "y" ]; then
    16         CT_GetFile "linux-${CT_KERNEL_VERSION}" \
    17                    {ftp,http}://ftp.{de.,eu.,}kernel.org/pub/linux/kernel/v2.{6{,/testing},4,2}
    18     fi
    19     return 0
    20 }
    21 
    22 # Extract kernel
    23 do_kernel_extract() {
    24     if [ "${CT_KERNEL_LINUX_USE_CUSTOM_HEADERS}" != "y" ]; then
    25         CT_Extract "linux-${CT_KERNEL_VERSION}"
    26         CT_Patch "linux-${CT_KERNEL_VERSION}"
    27     fi
    28     return 0
    29 }
    30 
    31 # Wrapper to the actual headers install method
    32 do_kernel_headers() {
    33     CT_DoStep INFO "Installing kernel headers"
    34 
    35     if [ "${CT_KERNEL_LINUX_USE_CUSTOM_HEADERS}" = "y" ]; then
    36         do_kernel_custom
    37     else
    38         do_kernel_install
    39     fi
    40 
    41     CT_EndStep
    42 }
    43 
    44 # Install kernel headers using headers_install from kernel sources.
    45 do_kernel_install() {
    46     CT_DoLog DEBUG "Using kernel's headers_install"
    47 
    48     mkdir -p "${CT_BUILD_DIR}/build-kernel-headers"
    49     cd "${CT_BUILD_DIR}/build-kernel-headers"
    50 
    51     # Only starting with 2.6.18 does headers_install is usable. We only
    52     # have 2.6 version available, so only test for sublevel.
    53     k_sublevel=$(awk '/^SUBLEVEL =/ { print $3 }' "${CT_SRC_DIR}/linux-${CT_KERNEL_VERSION}/Makefile")
    54     [ ${k_sublevel} -ge 18 ] || CT_Abort "Kernel version >= 2.6.18 is needed to install kernel headers."
    55 
    56     V_OPT="V=${CT_KERNEL_LINUX_VERBOSE_LEVEL}"
    57 
    58     CT_DoLog EXTRA "Installing kernel headers"
    59     CT_DoExecLog ALL                                    \
    60     make -C "${CT_SRC_DIR}/linux-${CT_KERNEL_VERSION}"  \
    61          O=$(pwd)                                       \
    62          ARCH=${CT_KERNEL_ARCH}                         \
    63          INSTALL_HDR_PATH="${CT_SYSROOT_DIR}/usr"       \
    64          ${V_OPT}                                       \
    65          headers_install
    66 
    67     if [ "${CT_KERNEL_LINUX_INSTALL_CHECK}" = "y" ]; then
    68         CT_DoLog EXTRA "Checking installed headers"
    69         CT_DoExecLog ALL                                    \
    70         make -C "${CT_SRC_DIR}/linux-${CT_KERNEL_VERSION}"  \
    71              O=$(pwd)                                       \
    72              ARCH=${CT_KERNEL_ARCH}                         \
    73              INSTALL_HDR_PATH="${CT_SYSROOT_DIR}/usr"       \
    74              ${V_OPT}                                       \
    75              headers_check
    76         find "${CT_SYSROOT_DIR}" -type f -name '.check*' -exec rm {} \;
    77     fi
    78 }
    79 
    80 # Use custom headers (most probably by using make headers_install in a
    81 # modified (read: customised) kernel tree, or using pre-2.6.18 headers, such
    82 # as 2.4). In this case, simply copy the headers in place
    83 do_kernel_custom() {
    84     local tar_opt
    85 
    86     CT_DoLog EXTRA "Installing custom kernel headers"
    87 
    88     mkdir -p "${CT_SYSROOT_DIR}/usr"
    89     cd "${CT_SYSROOT_DIR}/usr"
    90     if [ "${CT_KERNEL_LINUX_CUSTOM_IS_TARBALL}" = "y" ]; then
    91         case "${CT_KERNEL_LINUX_CUSTOM_PATH}" in
    92             *.tar)      ;;
    93             *.tgz)      tar_opt=--gzip;;
    94             *.tar.gz)   tar_opt=--gzip;;
    95             *.tar.bz2)  tar_opt=--bzip2;;
    96             *.tar.lzma) tar_opt=--lzma;;
    97         esac
    98         CT_DoExecLog ALL tar x ${tar_opt} -vf ${CT_KERNEL_LINUX_CUSTOM_PATH}
    99     else
   100         CT_DoExecLog ALL cp -rv "${CT_KERNEL_LINUX_CUSTOM_PATH}/include" .
   101     fi
   102 }