scripts/build/companion_libs/mpfr.sh
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Tue Aug 02 18:26:53 2011 +0200 (2011-08-02)
changeset 2592 4908eb2b6f17
parent 2347 7175fe0a6318
child 2927 ddaae597fd7c
permissions -rw-r--r--
scripts/functions: cvs retrieval first tries the mirror for tarballs

The cvs download helper looks for the local tarballs dir to see if it
can find a pre-downloaded tarball, and if it does not find it, does
the actual fetch to upstream via cvs.

In the process, it does not even try to get a tarball from the local
mirror, which can be useful if the mirror has been pre-populated
manually (or with a previously downloaded tree).

Fake a tarball get with the standard tarball-download helper, but
without specifying any upstream URL, which makes the helper directly
try the LAN mirror.

Of course, if no mirror is specified, no URL wil be available, and
the standard cvs retrieval will kick in.

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