scripts/build/debug/duma.in
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Sun Jul 17 22:43:07 2011 +0200 (2011-07-17)
changeset 2893 a8a65758664f
parent 635 0d7348cb7faa
child 2908 dcdb309b7967
permissions -rw-r--r--
cc/gcc: do not use the core pass-2 to build the baremetal compiler

In case we build a baremetal compiler, use the standard passes:
- core_cc is used to build the C library;
- as such, it is meant to run on build, not host;
- the final compiler is meant to run on host;

As the current final compiler step can not build a baremetal compiler,
call the core backend from the final step.

NB: Currently, newlib is built during the start_files pass, so we have
to have a core compiler by then... Once we can build the baremetal
compiler from the final cc step, then we can move the newlib build to
the proper step, and then get rid of the core pass-1 static compiler...

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