scripts/build/companion_libs/mpfr.sh
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Wed Apr 06 22:30:57 2011 +0200 (2011-04-06)
changeset 2381 0ca0f85a4b2a
parent 2347 7175fe0a6318
child 2927 ddaae597fd7c
permissions -rw-r--r--
complibs: disable building shared libs

Managing the shared version of the companion libraries
has become cumbersome.

Also, it will one day be possible to use the companion
libraries from the host distribution, and then we will
be able to easily use either shared or static libs.

As a side note, while working on the canadian-rework
series, it has become quite more complex to properly
handle shared companion libraries, as they need to be
built both for the build and gost systems. That's not
easy to handle. At all.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
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
yann@602
     9
# Overide function depending on configuration
yann@2099
    10
if [ "${CT_MPFR}" = "y" ]; then
yann@468
    11
yann@466
    12
# Download MPFR
yann@466
    13
do_mpfr_get() {
yann@1119
    14
    CT_GetFile "mpfr-${CT_MPFR_VERSION}" http://www.mpfr.org/mpfr-current/  \
yann@522
    15
                                 http://www.mpfr.org/mpfr-${CT_MPFR_VERSION}/
yann@466
    16
}
yann@466
    17
yann@466
    18
# Extract MPFR
yann@466
    19
do_mpfr_extract() {
yann@1126
    20
    CT_Extract "mpfr-${CT_MPFR_VERSION}"
yann@1901
    21
    CT_Patch "mpfr" "${CT_MPFR_VERSION}"
yann@466
    22
yann@584
    23
    # OK, Gentoo have a sanity check that libtool.m4 and ltmain.sh have the
yann@584
    24
    # same version number. Unfortunately, some tarballs of MPFR are not
yann@584
    25
    # built sanely, and thus ./configure fails on Gentoo.
yann@584
    26
    # See: http://sourceware.org/ml/crossgcc/2008-05/msg00080.html
yann@584
    27
    # and: http://sourceware.org/ml/crossgcc/2008-06/msg00005.html
yann@598
    28
    # This hack is not bad per se, but the MPFR guys would be better not to
yann@584
    29
    # do that in the future...
yann@1251
    30
    # It seems that MPFR >= 2.4.0 do not need this...
yann@1251
    31
    case "${CT_MPFR_VERSION}" in
yann@1889
    32
        2.4.*)
oron@1449
    33
            CT_Pushd "${CT_SRC_DIR}/mpfr-${CT_MPFR_VERSION}"
oron@1449
    34
            if [ ! -f .autoreconf.ct-ng ]; then
oron@1449
    35
                CT_DoLog DEBUG "Running autoreconf"
yann@1904
    36
                CT_DoExecLog ALL autoreconf
oron@1449
    37
                touch .autoreconf.ct-ng
oron@1449
    38
            fi
oron@1449
    39
            CT_Popd
oron@1449
    40
            ;;
yann@1251
    41
        1.*|2.0.*|2.1.*|2.2.*|2.3.*)
yann@1251
    42
            CT_Pushd "${CT_SRC_DIR}/mpfr-${CT_MPFR_VERSION}"
yann@1251
    43
            if [ ! -f .autotools.ct-ng ]; then
yann@1251
    44
                CT_DoLog DEBUG "Re-building autotools files"
yann@1251
    45
                CT_DoExecLog ALL autoreconf -fi
yann@1251
    46
                # Starting with libtool-1.9f, config.{guess,sub} are no longer
yann@1251
    47
                # installed without -i, but starting with libtool-2.2.6, they
yann@1251
    48
                # are no longer removed without -i. Sight... Just use -i with
yann@1251
    49
                # libtool >=2
yann@1251
    50
                # See: http://sourceware.org/ml/crossgcc/2008-11/msg00046.html
yann@1251
    51
                # and: http://sourceware.org/ml/crossgcc/2008-11/msg00048.html
yann@1251
    52
                libtoolize_opt=
yann@1299
    53
                case "$(libtoolize --version |head -n 1 |awk '{ print $(NF); }')" in
yann@1251
    54
                    0.*)    ;;
yann@1251
    55
                    1.*)    ;;
yann@1251
    56
                    *)      libtoolize_opt=-i;;
yann@1251
    57
                esac
yann@1251
    58
                CT_DoExecLog ALL libtoolize -f ${libtoolize_opt}
yann@1251
    59
                touch .autotools.ct-ng
yann@1251
    60
            fi
yann@1251
    61
            CT_Popd
yann@1251
    62
            ;;
yann@1251
    63
    esac
yann@595
    64
}
yann@595
    65
yann@595
    66
do_mpfr() {
yann@595
    67
    mkdir -p "${CT_BUILD_DIR}/build-mpfr"
yann@595
    68
    cd "${CT_BUILD_DIR}/build-mpfr"
yann@595
    69
yann@595
    70
    CT_DoStep INFO "Installing MPFR"
yann@584
    71
yann@1251
    72
    # Under Cygwin, we can't build a thread-safe library
yann@1205
    73
    case "${CT_HOST}" in
yann@1892
    74
        *cygwin*)   mpfr_opts+=( --disable-thread-safe );;
yann@1892
    75
        *mingw*)    mpfr_opts+=( --disable-thread-safe );;
yann@1892
    76
        *darwin*)   mpfr_opts+=( --disable-thread-safe );;
yann@1892
    77
        *)          mpfr_opts+=( --enable-thread-safe  );;
yann@1205
    78
    esac
yann@1205
    79
yann@1892
    80
yann@466
    81
    CT_DoLog EXTRA "Configuring MPFR"
yann@2347
    82
    CT_DoExecLog CFG                                    \
yann@1251
    83
    CC="${CT_HOST}-gcc"                                 \
yann@1119
    84
    CFLAGS="${CT_CFLAGS_FOR_HOST}"                      \
yann@1119
    85
    "${CT_SRC_DIR}/mpfr-${CT_MPFR_VERSION}/configure"   \
yann@1119
    86
        --build=${CT_BUILD}                             \
yann@1119
    87
        --host=${CT_HOST}                               \
yann@1893
    88
        --prefix="${CT_COMPLIBS_DIR}"                   \
yann@1893
    89
        --with-gmp="${CT_COMPLIBS_DIR}"                 \
yann@2381
    90
        --disable-shared                                \
yann@2381
    91
        --enable-static
yann@466
    92
yann@466
    93
    CT_DoLog EXTRA "Building MPFR"
yann@2275
    94
    CT_DoExecLog ALL make ${JOBSFLAGS}
yann@466
    95
yann@1890
    96
    if [ "${CT_COMPLIBS_CHECK}" = "y" ]; then
yann@466
    97
        CT_DoLog EXTRA "Checking MPFR"
yann@2275
    98
        CT_DoExecLog ALL make ${JOBSFLAGS} -s check
yann@466
    99
    fi
yann@466
   100
yann@466
   101
    CT_DoLog EXTRA "Installing MPFR"
yann@656
   102
    CT_DoExecLog ALL make install
yann@466
   103
yann@466
   104
    CT_EndStep
yann@466
   105
}
yann@468
   106
yann@1810
   107
fi # CT_MPFR