scripts/build/companion_libs/mpfr.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 2929 22e495b7bee8
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 adds the functions to build the MPFR library
     2 # Copyright 2008 Yann E. MORIN
     3 # Licensed under the GPL v2. See COPYING in the root of this package
     4 
     5 do_mpfr_get() { :; }
     6 do_mpfr_extract() { :; }
     7 do_mpfr_for_build() { :; }
     8 do_mpfr_for_host() { :; }
     9 
    10 # Overide function depending on configuration
    11 if [ "${CT_MPFR}" = "y" ]; then
    12 
    13 # Download MPFR
    14 do_mpfr_get() {
    15     CT_GetFile "mpfr-${CT_MPFR_VERSION}" http://www.mpfr.org/mpfr-current/  \
    16                                  http://www.mpfr.org/mpfr-${CT_MPFR_VERSION}/
    17 }
    18 
    19 # Extract MPFR
    20 do_mpfr_extract() {
    21     CT_Extract "mpfr-${CT_MPFR_VERSION}"
    22     CT_Patch "mpfr" "${CT_MPFR_VERSION}"
    23 
    24     # OK, Gentoo have a sanity check that libtool.m4 and ltmain.sh have the
    25     # same version number. Unfortunately, some tarballs of MPFR are not
    26     # built sanely, and thus ./configure fails on Gentoo.
    27     # See: http://sourceware.org/ml/crossgcc/2008-05/msg00080.html
    28     # and: http://sourceware.org/ml/crossgcc/2008-06/msg00005.html
    29     # This hack is not bad per se, but the MPFR guys would be better not to
    30     # do that in the future...
    31     # It seems that MPFR >= 2.4.0 do not need this...
    32     case "${CT_MPFR_VERSION}" in
    33         2.4.*)
    34             CT_Pushd "${CT_SRC_DIR}/mpfr-${CT_MPFR_VERSION}"
    35             if [ ! -f .autoreconf.ct-ng ]; then
    36                 CT_DoLog DEBUG "Running autoreconf"
    37                 CT_DoExecLog ALL autoreconf
    38                 touch .autoreconf.ct-ng
    39             fi
    40             CT_Popd
    41             ;;
    42         1.*|2.0.*|2.1.*|2.2.*|2.3.*)
    43             CT_Pushd "${CT_SRC_DIR}/mpfr-${CT_MPFR_VERSION}"
    44             if [ ! -f .autotools.ct-ng ]; then
    45                 CT_DoLog DEBUG "Re-building autotools files"
    46                 CT_DoExecLog ALL autoreconf -fi
    47                 # Starting with libtool-1.9f, config.{guess,sub} are no longer
    48                 # installed without -i, but starting with libtool-2.2.6, they
    49                 # are no longer removed without -i. Sight... Just use -i with
    50                 # libtool >=2
    51                 # See: http://sourceware.org/ml/crossgcc/2008-11/msg00046.html
    52                 # and: http://sourceware.org/ml/crossgcc/2008-11/msg00048.html
    53                 libtoolize_opt=
    54                 case "$(libtoolize --version |head -n 1 |awk '{ print $(NF); }')" in
    55                     0.*)    ;;
    56                     1.*)    ;;
    57                     *)      libtoolize_opt=-i;;
    58                 esac
    59                 CT_DoExecLog ALL libtoolize -f ${libtoolize_opt}
    60                 touch .autotools.ct-ng
    61             fi
    62             CT_Popd
    63             ;;
    64     esac
    65 }
    66 
    67 # Build MPFR for running on build
    68 # - always build statically
    69 # - we do not have build-specific CFLAGS
    70 # - install in build-tools prefix
    71 do_mpfr_for_build() {
    72     local -a mpfr_opts
    73 
    74     case "${CT_TOOLCHAIN_TYPE}" in
    75         native|cross)   return 0;;
    76     esac
    77 
    78     CT_DoStep INFO "Installing MPFR for build"
    79     CT_mkdir_pushd "${CT_BUILD_DIR}/build-mpfr-build-${CT_BUILD}"
    80 
    81     mpfr_opts+=( "host=${CT_BUILD}" )
    82     mpfr_opts+=( "prefix=${CT_BUILDTOOLS_PREFIX_DIR}" )
    83     do_mpfr_backend "${mpfr_opts[@]}"
    84 
    85     CT_Popd
    86     CT_EndStep
    87 }
    88 
    89 # Build MPFR for running on host
    90 do_mpfr_for_host() {
    91     local -a mpfr_opts
    92 
    93     CT_DoStep INFO "Installing MPFR for host"
    94     CT_mkdir_pushd "${CT_BUILD_DIR}/build-mpfr-host-${CT_HOST}"
    95 
    96     mpfr_opts+=( "host=${CT_HOST}" )
    97     mpfr_opts+=( "prefix=${CT_HOST_COMPLIBS_DIR}" )
    98     mpfr_opts+=( "cflags=${CT_CFLAGS_FOR_HOST}" )
    99     do_mpfr_backend "${mpfr_opts[@]}"
   100 
   101     CT_Popd
   102     CT_EndStep
   103 }
   104 
   105 # Build MPFR
   106 #     Parameter     : description               : type      : default
   107 #     host          : machine to run on         : tuple     : (none)
   108 #     prefix        : prefix to install into    : dir       : (none)
   109 #     cflags        : host cflags to use        : string    : (empty)
   110 do_mpfr_backend() {
   111     local host
   112     local prefix
   113     local cflags
   114     local arg
   115 
   116     for arg in "$@"; do
   117         eval "${arg// /\\ }"
   118     done
   119 
   120     # Under Cygwin, we can't build a thread-safe library
   121     case "${CT_HOST}" in
   122         *cygwin*)   mpfr_opts+=( --disable-thread-safe );;
   123         *mingw*)    mpfr_opts+=( --disable-thread-safe );;
   124         *darwin*)   mpfr_opts+=( --disable-thread-safe );;
   125         *)          mpfr_opts+=( --enable-thread-safe  );;
   126     esac
   127 
   128     CT_DoLog EXTRA "Configuring MPFR"
   129     CT_DoExecLog CFG                                    \
   130     CC="${host}-gcc"                                    \
   131     CFLAGS="${CT_CFLAGS_FOR_HOST}"                      \
   132     "${CT_SRC_DIR}/mpfr-${CT_MPFR_VERSION}/configure"   \
   133         --build=${CT_BUILD}                             \
   134         --host=${host}                                  \
   135         --prefix="${prefix}"                            \
   136         --with-gmp="${prefix}"                          \
   137         --disable-shared                                \
   138         --enable-static
   139 
   140     CT_DoLog EXTRA "Building MPFR"
   141     CT_DoExecLog ALL make ${JOBSFLAGS}
   142 
   143     if [ "${CT_COMPLIBS_CHECK}" = "y" ]; then
   144         CT_DoLog EXTRA "Checking MPFR"
   145         CT_DoExecLog ALL make ${JOBSFLAGS} -s check
   146     fi
   147 
   148     CT_DoLog EXTRA "Installing MPFR"
   149     CT_DoExecLog ALL make install
   150 }
   151 
   152 fi # CT_MPFR