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