scripts/build/kernel/linux.sh
author "Benoît Thébaudeau" <benoit.thebaudeau@advansee.com>
Mon Apr 16 15:25:36 2012 +0200 (2012-04-16)
changeset 2941 13e40098fffc
parent 2798 4d92888ec7cb
child 3060 f46a1d105896
permissions -rw-r--r--
cc/gcc: update Linaro GCC revisions to 2012.04

Update Linaro GCC with the latest available revisions.

The 4.7 revision is also released, but the infrastructure is not yet ready for
it in CT-NG.

Signed-off-by: "Benoît Thébaudeau" <benoit.thebaudeau@advansee.com>
     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     # Sometime, noMMU linux targets have a -uclinux tuple, while
    10     # sometime it's -linux. We currently have only one noMMU linux
    11     # target, and it uses -linux, so let's just use that. Time
    12     # to fix that later...
    13     #    CT_TARGET_KERNEL="uclinux"
    14         CT_TARGET_KERNEL="linux"
    15     fi
    16 }
    17 
    18 # Download the kernel
    19 do_kernel_get() {
    20     local k_ver
    21     local custom_name
    22     local rel_dir
    23     local korg_base mirror_base
    24 
    25     if [ "${CT_KERNEL_LINUX_USE_CUSTOM_HEADERS}" = "y"  ]; then
    26         return 0
    27     fi
    28 
    29     if [ "${CT_KERNEL_LINUX_CUSTOM}" = "y" ]; then
    30         if [ ! -d "${CT_KERNEL_LINUX_CUSTOM_LOCATION}" ]; then
    31             # Wee need to know the custom tarball extension,
    32             # so we can create a properly-named symlink, which
    33             # we use later on in 'extract'
    34             case "${CT_KERNEL_LINUX_CUSTOM_LOCATION}" in
    35                 *.tar.bz2)      custom_name="linux-custom.tar.bz2";;
    36                 *.tar.gz|*.tgz) custom_name="linux-custom.tar.gz";;
    37                 *.tar)          custom_name="linux-custom.tar";;
    38                 *)  CT_Abort "Unknown extension for custom linux tarball '${CT_KERNEL_LINUX_CUSTOM_LOCATION}'";;
    39             esac
    40             CT_DoExecLog DEBUG ln -sf "${CT_KERNEL_LINUX_CUSTOM_LOCATION}"  \
    41                                       "${CT_TARBALLS_DIR}/${custom_name}"
    42         else
    43             custom_name="linux-custom"
    44             CT_DoExecLog DEBUG ln -s "${CT_KERNEL_LINUX_CUSTOM_LOCATION}"  \
    45                                       "${CT_SRC_DIR}/${custom_name}"
    46         fi
    47     else # Not a custom tarball
    48         case "${CT_KERNEL_VERSION}" in
    49             2.6.*.*|3.*.*)
    50                 # 4-part versions (for 2.6 stables and long-terms), and
    51                 # 3-part versions (for 3.x.y stables and long-terms),
    52                 # we need to trash the last digit
    53                 k_ver="${CT_KERNEL_VERSION%.*}"
    54                 ;;
    55             2.6.*|3.*)
    56                 # 3-part version (for 2.6.x initial releases), and 2-part
    57                 # versions (for 3.x initial releases), use all of it
    58                 k_ver="${CT_KERNEL_VERSION}"
    59                 ;;
    60         esac
    61         case "${CT_KERNEL_VERSION}" in
    62             2.6.*)  rel_dir=v2.6;;
    63             3.*)    rel_dir=v3.x;;
    64         esac
    65         korg_base="http://ftp.kernel.org/pub/linux/kernel/${rel_dir}"
    66         CT_GetFile "linux-${CT_KERNEL_VERSION}"         \
    67                    "${korg_base}"                       \
    68                    "${korg_base}/longterm/v${k_ver}"    \
    69                    "${korg_base}/longterm"
    70     fi
    71 }
    72 
    73 # Extract kernel
    74 do_kernel_extract() {
    75     if [ "${CT_KERNEL_LINUX_USE_CUSTOM_HEADERS}" = "y" \
    76          -o -d "${CT_KERNEL_LINUX_CUSTOM_LOCATION}" ]; then
    77         return 0
    78     fi
    79    
    80     # This also handles the custom tarball
    81     CT_Extract "linux-${CT_KERNEL_VERSION}"
    82     CT_Patch "linux" "${CT_KERNEL_VERSION}"
    83 }
    84 
    85 # Wrapper to the actual headers install method
    86 do_kernel_headers() {
    87     CT_DoStep INFO "Installing kernel headers"
    88 
    89     if [ "${CT_KERNEL_LINUX_USE_CUSTOM_HEADERS}" = "y" ]; then
    90         do_kernel_custom
    91     else
    92         do_kernel_install
    93     fi
    94 
    95     CT_EndStep
    96 }
    97 
    98 # Install kernel headers using headers_install from kernel sources.
    99 do_kernel_install() {
   100     local kernel_path
   101 
   102     CT_DoLog DEBUG "Using kernel's headers_install"
   103 
   104     mkdir -p "${CT_BUILD_DIR}/build-kernel-headers"
   105 
   106     kernel_path="${CT_SRC_DIR}/linux-${CT_KERNEL_VERSION}"
   107     if [ "${CT_KERNEL_LINUX_CUSTOM}" = "y" ]; then
   108         kernel_path="${CT_SRC_DIR}/linux-custom"
   109     fi
   110     V_OPT="V=${CT_KERNEL_LINUX_VERBOSE_LEVEL}"
   111 
   112     CT_DoLog EXTRA "Installing kernel headers"
   113     CT_DoExecLog ALL                                    \
   114     make -C "${kernel_path}"                            \
   115          O="${CT_BUILD_DIR}/build-kernel-headers"       \
   116          ARCH=${CT_ARCH}                                \
   117          INSTALL_HDR_PATH="${CT_SYSROOT_DIR}/usr"       \
   118          ${V_OPT}                                       \
   119          headers_install
   120 
   121     if [ "${CT_KERNEL_LINUX_INSTALL_CHECK}" = "y" ]; then
   122         CT_DoLog EXTRA "Checking installed headers"
   123         CT_DoExecLog ALL                                    \
   124         make -C "${kernel_path}"                            \
   125              O="${CT_BUILD_DIR}/build-kernel-headers"       \
   126              ARCH=${CT_ARCH}                                \
   127              INSTALL_HDR_PATH="${CT_SYSROOT_DIR}/usr"       \
   128              ${V_OPT}                                       \
   129              headers_check
   130     fi
   131 
   132     # Cleanup
   133     find "${CT_SYSROOT_DIR}" -type f                        \
   134                              \(    -name '.install'         \
   135                                 -o -name '..install.cmd'    \
   136                                 -o -name '.check'           \
   137                                 -o -name '..check.cmd'      \
   138                              \)                             \
   139                              -exec rm {} \;
   140 }
   141 
   142 # Use custom headers (most probably by using make headers_install in a
   143 # modified (read: customised) kernel tree, or using pre-2.6.18 headers, such
   144 # as 2.4). In this case, simply copy the headers in place
   145 do_kernel_custom() {
   146     local tar_opt
   147 
   148     CT_DoLog EXTRA "Installing custom kernel headers"
   149 
   150     mkdir -p "${CT_SYSROOT_DIR}/usr"
   151     cd "${CT_SYSROOT_DIR}/usr"
   152     if [ "${CT_KERNEL_LINUX_CUSTOM_IS_TARBALL}" = "y" ]; then
   153         case "${CT_KERNEL_LINUX_CUSTOM_PATH}" in
   154             *.tar)      ;;
   155             *.tgz)      tar_opt=--gzip;;
   156             *.tar.gz)   tar_opt=--gzip;;
   157             *.tar.bz2)  tar_opt=--bzip2;;
   158         esac
   159         CT_DoExecLog ALL tar x ${tar_opt} -vf ${CT_KERNEL_LINUX_CUSTOM_PATH}
   160     else
   161         CT_DoExecLog ALL cp -rv "${CT_KERNEL_LINUX_CUSTOM_PATH}/include" .
   162     fi
   163 }