scripts/build/debug/duma.in
author Johannes Stezenbach <js@sig21.net>
Thu Jul 29 19:47:16 2010 +0200 (2010-07-29)
changeset 2045 fdaa6c7f6dea
parent 635 0d7348cb7faa
child 2908 dcdb309b7967
permissions -rw-r--r--
cc/gcc: add option to compile against static libstdc++, for gcc-4.4 and newer

Idea and know-how taken from CodeSourcery build script.

Normal build:
$ ldd arm-unknown-linux-uclibcgnueabi-gcc
linux-gate.so.1 => (0xb77f3000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0xb76e8000)
libc.so.6 => /lib/i686/cmov/libc.so.6 (0xb75a1000)
libm.so.6 => /lib/i686/cmov/libm.so.6 (0xb757a000)
/lib/ld-linux.so.2 (0xb77f4000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0xb755c000)

CC_STATIC_LIBSTDCXX=y:
$ ldd arm-unknown-linux-uclibcgnueabi-gcc
linux-gate.so.1 => (0xb7843000)
libc.so.6 => /lib/i686/cmov/libc.so.6 (0xb76e6000)
/lib/ld-linux.so.2 (0xb7844000)

I made CC_STATIC_LIBSTDCXX default=y since I think
it is always desirable.

Signed-off-by: Johannes Stezenbach <js@sig21.net>
     1 #!/bin/sh
     2 # (C) 2008 Yann E. MORIN <yann.morin.1998@anciens.enib.fr>
     3 # Licensed under the GPL v.2
     4 
     5 LIBDUMA_SO=
     6 
     7 case "$1" in
     8   -on)
     9     case "${LD_PRELOAD}" in
    10       *${LIBDUMA_SO}*) ;;
    11       *) LD_PRELOAD="${LIBDUMA_SO} ${LD_PRELOAD}";;
    12     esac
    13     shift
    14     ;;
    15   -off)
    16     # We use a suposedly POSIX-compliant shell: /bin/sh
    17     #  -> we can't use "${LD_PRELOAD//${LIBDUMA_SO}/}", it's not POSIX
    18     # We don't know if sed will be present on the target
    19     #  -> we can't use $(echo "${LD_PRELOAD}" |sed -r -e "s|${LIBDUMA_SO}||;")
    20     # So, iterate through LD_PRELOAD, and keep only those libs that
    21     # are not "${LIBDUMA_SO}"
    22     old_LD_PRELOAD="${LD_PRELOAD}"
    23     LD_PRELOAD=
    24     for lib in ${old_LD_PRELOAD}; do
    25       [ "${lib}" = "${LIBDUMA_SO}" ] || LD_PRELOAD="${LD_PRELOAD} ${lib}"
    26     done
    27     unset old_LD_PRELOAD
    28     shift
    29     ;;
    30   -show)
    31     case "${LD_PRELOAD}" in
    32       *${LIBDUMA_SO}*) echo "duma is enabled";;
    33       *)               echo "duma is disabled";;
    34     esac
    35     exit 0
    36     ;;
    37   "")
    38     cat <<_EOF_
    39 Usage:
    40     . $0 <-on|-off|-show>
    41         Sets, unsets or show DUMA usage.
    42     $0 <executable [arg...]>
    43         Execute 'executable' (with arguments 'args') using DUMA.
    44 _EOF_
    45     false # Don't 'exit', we could well be source'd
    46     ;;
    47   *)
    48     exec "$0" -on "$@"
    49     ;;
    50 esac
    51 
    52 export LD_PRELOAD
    53 if [ -n "$1" ]; then
    54   exec "$@"
    55 fi