scripts/build/kernel/linux.sh
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Wed Feb 17 23:50:49 2010 +0100 (2010-02-17)
changeset 1810 e44f67656c5f
parent 1746 5851a36db763
child 1901 bdb3a98e064b
permissions -rw-r--r--
complibs: hide companion libraries for target entry

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