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