scripts/build/companion_libs/gmp.sh
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Mon Mar 29 00:15:32 2010 +0200 (2010-03-29)
changeset 1864 758d5137fe87
parent 1809 b488b4815f9b
child 1890 39045a2f1163
permissions -rw-r--r--
scripts/populate: optimise search loop

Curently, populate will iterate over all ELF (shared objects|executables)
to look for missing NEEDED DSOs, adding to the list at every iterations
of the search loop.

Instead of looking again at previously handled ELF files, recursively
resolve every ELf files.

Also, in case there are a whole lot of files (more than the shell can
accept as arguments list, or creating a command line longer than the
shell can cope with), use a temporary file with the list of files
to search for missing dependencies.
     1 # This file adds the functions to build the GMP library
     2 # Copyright 2008 Yann E. MORIN
     3 # Licensed under the GPL v2. See COPYING in the root of this package
     4 
     5 do_gmp_get() { :; }
     6 do_gmp_extract() { :; }
     7 do_gmp() { :; }
     8 do_gmp_target() { :; }
     9 
    10 # Overide functions depending on configuration
    11 if [ "${CT_GMP}" = "y" -o "${CT_GMP_TARGET}" = "y" ]; then
    12 
    13 # Download GMP
    14 do_gmp_get() {
    15     CT_GetFile "gmp-${CT_GMP_VERSION}" {ftp,http}://{ftp.sunet.se/pub,ftp.gnu.org}/gnu/gmp
    16 }
    17 
    18 # Extract GMP
    19 do_gmp_extract() {
    20     CT_Extract "gmp-${CT_GMP_VERSION}"
    21     CT_Patch "gmp-${CT_GMP_VERSION}"
    22 }
    23 
    24 if [ "${CT_GMP}" = "y" ]; then
    25 
    26 do_gmp() {
    27 
    28     mkdir -p "${CT_BUILD_DIR}/build-gmp"
    29     cd "${CT_BUILD_DIR}/build-gmp"
    30 
    31     CT_DoStep INFO "Installing GMP"
    32 
    33     CT_DoLog EXTRA "Configuring GMP"
    34 
    35     CFLAGS="${CT_CFLAGS_FOR_HOST} -fexceptions"     \
    36     CT_DoExecLog ALL                                \
    37     "${CT_SRC_DIR}/gmp-${CT_GMP_VERSION}/configure" \
    38         --build=${CT_BUILD}                         \
    39         --host=${CT_HOST}                           \
    40         --prefix="${CT_PREFIX_DIR}"                 \
    41         --enable-shared                             \
    42         --disable-static                            \
    43         --enable-fft                                \
    44         --enable-mpbsd                              \
    45         --enable-cxx
    46 
    47     CT_DoLog EXTRA "Building GMP"
    48     CT_DoExecLog ALL make ${PARALLELMFLAGS}
    49 
    50     if [ "${CT_COMP_LIBS_CHECK}" = "y" ]; then
    51         CT_DoLog EXTRA "Checking GMP"
    52         CT_DoExecLog ALL make ${PARALLELMFLAGS} -s check
    53     fi
    54 
    55     CT_DoLog EXTRA "Installing GMP"
    56     CT_DoExecLog ALL make install
    57 
    58     CT_EndStep
    59 }
    60 
    61 fi # CT_GMP
    62 
    63 if [ "${CT_GMP_TARGET}" = "y" ]; then
    64 
    65 do_gmp_target() {
    66     mkdir -p "${CT_BUILD_DIR}/build-gmp-target"
    67     cd "${CT_BUILD_DIR}/build-gmp-target"
    68 
    69     CT_DoStep INFO "Installing GMP for the target"
    70 
    71     CT_DoLog EXTRA "Configuring GMP"
    72     CFLAGS="${CT_CFLAGS_FOR_TARGET}"                \
    73     CT_DoExecLog ALL                                \
    74     "${CT_SRC_DIR}/gmp-${CT_GMP_VERSION}/configure" \
    75         --build=${CT_BUILD}                         \
    76         --host=${CT_TARGET}                         \
    77         --prefix=/usr                               \
    78         --disable-shared                            \
    79         --enable-static                             \
    80         --enable-fft                                \
    81         --enable-mpbsd                              \
    82 
    83     CT_DoLog EXTRA "Building GMP"
    84     CT_DoExecLog ALL make ${PARALLELMFLAGS}
    85 
    86     # Not possible to check MPFR while X-compiling
    87 
    88     CT_DoLog EXTRA "Installing GMP"
    89     CT_DoExecLog ALL make DESTDIR="${CT_SYSROOT_DIR}" install
    90 
    91     CT_EndStep
    92 }
    93 
    94 fi # CT_GMP_TARGET
    95 
    96 fi # CT_GMP || CT_GMP_TARGET