scripts/build/companion_libs/mpfr.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 1422 ff866c9faad2
child 1797 42c618ca576e
child 1922 78dded99f609
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.
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@602
     7
do_mpfr() { :; }
yann@602
     8
do_mpfr_target() { :; }
yann@602
     9
yann@602
    10
# Overide function depending on configuration
yann@602
    11
if [ "${CT_GMP_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@1126
    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
oron@1449
    33
        2.4.1)
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"
oron@1449
    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@595
    67
do_mpfr() {
yann@595
    68
    mkdir -p "${CT_BUILD_DIR}/build-mpfr"
yann@595
    69
    cd "${CT_BUILD_DIR}/build-mpfr"
yann@595
    70
yann@595
    71
    CT_DoStep INFO "Installing MPFR"
yann@584
    72
yann@1205
    73
    mpfr_opt=
yann@1251
    74
    # Under Cygwin, we can't build a thread-safe library
yann@1205
    75
    case "${CT_HOST}" in
yann@1422
    76
        *cygwin*)   mpfr_opt="--disable-thread-safe";;
yann@1422
    77
        *mingw*)    mpfr_opt="--disable-thread-safe";;
yann@1205
    78
        *)          mpfr_opt="--enable-thread-safe";;
yann@1205
    79
    esac
yann@1205
    80
yann@466
    81
    CT_DoLog EXTRA "Configuring MPFR"
yann@1251
    82
    CC="${CT_HOST}-gcc"                                 \
yann@1119
    83
    CFLAGS="${CT_CFLAGS_FOR_HOST}"                      \
yann@1119
    84
    CT_DoExecLog ALL                                    \
yann@1119
    85
    "${CT_SRC_DIR}/mpfr-${CT_MPFR_VERSION}/configure"   \
yann@1119
    86
        --build=${CT_BUILD}                             \
yann@1119
    87
        --host=${CT_HOST}                               \
yann@1119
    88
        --prefix="${CT_PREFIX_DIR}"                     \
yann@1205
    89
        ${mpfr_opt}                                     \
yann@1376
    90
        --enable-shared                                 \
yann@1376
    91
        --disable-static                                \
yann@656
    92
        --with-gmp="${CT_PREFIX_DIR}"
yann@466
    93
yann@466
    94
    CT_DoLog EXTRA "Building MPFR"
yann@656
    95
    CT_DoExecLog ALL make ${PARALLELMFLAGS}
yann@466
    96
yann@1386
    97
    if [ "${CT_COMP_LIBS_CHECK}" = "y" ]; then
yann@466
    98
        CT_DoLog EXTRA "Checking MPFR"
yann@656
    99
        CT_DoExecLog ALL make ${PARALLELMFLAGS} -s check
yann@466
   100
    fi
yann@466
   101
yann@466
   102
    CT_DoLog EXTRA "Installing MPFR"
yann@656
   103
    CT_DoExecLog ALL make install
yann@466
   104
yann@466
   105
    CT_EndStep
yann@466
   106
}
yann@468
   107
yann@1386
   108
if [ "${CT_COMP_LIBS_TARGET}" = "y" ]; then
yann@468
   109
yann@602
   110
do_mpfr_target() {
yann@602
   111
    mkdir -p "${CT_BUILD_DIR}/build-mpfr-target"
yann@602
   112
    cd "${CT_BUILD_DIR}/build-mpfr-target"
yann@468
   113
yann@602
   114
    CT_DoStep INFO "Installing MPFR for the target"
yann@602
   115
yann@1205
   116
    mpfr_opt=
yann@1251
   117
    # Under Cygwin, we can't build a thread-safe library
yann@1205
   118
    case "${CT_TARGET}" in
yann@1205
   119
        *-cygwin)   mpfr_opt="--disable-thread-safe";;
yann@1205
   120
        *)          mpfr_opt="--enable-thread-safe";;
yann@1205
   121
    esac
yann@1205
   122
yann@602
   123
    CT_DoLog EXTRA "Configuring MPFR"
yann@1251
   124
    CC="${CT_TARGET}-gcc"                               \
yann@1119
   125
    CFLAGS="${CT_CFLAGS_FOR_TARGET}"                    \
yann@1119
   126
    CT_DoExecLog ALL                                    \
yann@1119
   127
    "${CT_SRC_DIR}/mpfr-${CT_MPFR_VERSION}/configure"   \
yann@1119
   128
        --build=${CT_BUILD}                             \
yann@1119
   129
        --host=${CT_TARGET}                             \
yann@1119
   130
        --prefix=/usr                                   \
yann@1205
   131
        ${mpfr_opt}                                     \
yann@1205
   132
        --disable-shared                                \
yann@1205
   133
        --enable-static                                 \
yann@656
   134
        --with-gmp="${CT_SYSROOT_DIR}/usr"
yann@602
   135
yann@602
   136
    CT_DoLog EXTRA "Building MPFR"
yann@656
   137
    CT_DoExecLog ALL make ${PARALLELMFLAGS}
yann@602
   138
yann@602
   139
    # Not possible to check MPFR while X-compiling
yann@602
   140
yann@602
   141
    CT_DoLog EXTRA "Installing MPFR"
yann@656
   142
    CT_DoExecLog ALL make DESTDIR="${CT_SYSROOT_DIR}" install
yann@602
   143
yann@602
   144
    CT_EndStep
yann@602
   145
}
yann@602
   146
yann@602
   147
fi # CT_GMP_MPFR_TARGET == y
yann@602
   148
yann@602
   149
fi # CT_GMP_MPFR == y