scripts/addToolVersion.sh
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Thu Jan 29 22:09:55 2009 +0000 (2009-01-29)
changeset 1176 8508ec77df4c
parent 1173 4b32ffb3f34d
child 1200 136731f6f597
permissions -rwxr-xr-x
If compiling the Java frontend, we'll require a native gcj, but only in this case.

/trunk/scripts/crosstool-NG.sh.in | 8 7 1 0 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
     1 #!/bin/sh
     2 set -e
     3 
     4 # Adds a new version to one of the toolchain component
     5 myname="$0"
     6 
     7 # Parse the tools' paths configuration
     8 . "paths.mk"
     9 
    10 doHelp() {
    11     cat <<-EOF
    12 Usage: ${myname} <tool> <[options] version [...]> ...
    13   'tool' in one of:
    14     --gcc, --binutils, --glibc, --eglibc, --uClibc, --linux,
    15     --gdb, --dmalloc, --duma, --strace, --ltrace, --libelf
    16     --gmp, --mpfr
    17 
    18   Valid options for all tools:
    19     --stable, -s, +x   (default)
    20       mark the version as being stable (as opposed to experimental)
    21 
    22     --experimental, -x, +s
    23       mark the version as being experimental (as opposed to stable)
    24 
    25     --current, -c, +o   (default)
    26       mark the version as being cuurent (as opposed to obsolete)
    27 
    28     --obsolete, -o, +c
    29       mark the version as being obsolete (as opposed to current)
    30 
    31   Note: setting a new tool resets to the defaults: 'stable' and 'current'.
    32 
    33   'version' is a valid version for the specified tool.
    34 
    35   Examples:
    36     add stable current version 2.6.19.2 to linux kernel:
    37       ${myname} --linux 2.6.19.2
    38 
    39     add experimental obsolete version 2.3.5 and stable current versions 2.6.1
    40     and 2.6.2 to glibc, add stable obsolete version 3.3.3 to gcc:
    41       ${myname} --glibc -x -o 2.3.5 -s -c 2.6.1 2.6.2 --gcc -o 3.3.3
    42 EOF
    43 }
    44 
    45 # Effectively add a version to the specified tool
    46 # $cat          : tool category
    47 # $tool         : tool name
    48 # $tool_prefix  : tool directory prefix
    49 # $EXP          : set to non empty if experimental, to empty otherwise
    50 # #OBS          : set to non empty if obsolete, to empty otherwise
    51 # $1            : version string to add
    52 addToolVersion() {
    53     local version="$1"
    54     local file
    55     local exp_obs_prompt
    56     local deps v ver_M ver_m
    57     local SedExpr1 SedExpr2
    58 
    59     file="config/${tool_prefix}/${tool}.in"
    60     v=$(echo "${version}" |"${sed}" -r -e 's/-/_/g; s/\./_/g;')
    61 
    62     SedExpr1="${SedExpr1}config ${cat}_V_${v}\n"
    63     SedExpr1="${SedExpr1}    bool\n"
    64     SedExpr1="${SedExpr1}    prompt \"${version}"
    65     case "${EXP},${OBS}" in
    66         ,)  ;;
    67         ,*) exp_obs_prompt="  (OBSOLETE)"
    68             deps="    depends on OBSOLETE\n"
    69             ;;
    70         *,) exp_obs_prompt="  (EXPERIMENTAL)"
    71             deps="    depends on EXPERIMENTAL\n"
    72             ;;
    73         *)  exp_obs_prompt="  (EXPERIMENTAL, OBSOLETE)"
    74             deps="    depends on EXPERIMENTAL && OBSOLETE\n"
    75             ;;
    76     esac
    77     [ -n "${exp_obs_prompt}" ] && SedExpr1="${SedExpr1}${exp_obs_prompt}"
    78     SedExpr1="${SedExpr1}\"\n"
    79     [ -n "${deps}" ] && SedExpr1="${SedExpr1}${deps}"
    80     if [ "${tool}" = "gcc" ]; then
    81         # Extract 'M'ajor and 'm'inor from version string
    82         ver_M=$(echo "${version}...." |cut -d . -f 1)
    83         ver_m=$(echo "${version}...." |cut -d . -f 2)
    84         if [    ${ver_M} -gt 4                          \
    85              -o \( ${ver_M} -eq 4 -a ${ver_m} -ge 3 \)  ]; then
    86             SedExpr1="    select CC_GCC_4_3_or_later\n"
    87         fi
    88     fi
    89     SedExpr2="    default \"${version}\" if ${cat}_V_${v}"
    90     "${sed}" -r -i -e 's/^(# CT_INSERT_VERSION_ABOVE)$/'"${SedExpr1}"'\n\1/;' "${file}"
    91     "${sed}" -r -i -e 's/^(# CT_INSERT_VERSION_STRING_ABOVE)$/'"${SedExpr2}"'\n\1/;' "${file}"
    92 }
    93 
    94 cat=
    95 tool=
    96 tool_prefix=
    97 VERSION=
    98 EXP=
    99 OBS=
   100 
   101 if [ $# -eq 0 ]; then
   102     doHelp
   103     exit 1
   104 fi
   105 
   106 while [ $# -gt 0 ]; do
   107     case "$1" in
   108         # Tools:
   109         --gcc)      EXP=; OBS=; cat=CC;        tool=gcc;      tool_prefix=cc;;
   110         --binutils) EXP=; OBS=; cat=BINUTILS;  tool=binutils; tool_prefix=;;
   111         --glibc)    EXP=; OBS=; cat=LIBC;      tool=glibc;    tool_prefix=libc;;
   112         --eglibc)   EXP=; OBS=; cat=LIBC;      tool=eglibc;   tool_prefix=libc;;
   113         --uClibc)   EXP=; OBS=; cat=LIBC;      tool=uClibc;   tool_prefix=libc;;
   114         --linux)    EXP=; OBS=; cat=KERNEL;    tool=linux;    tool_prefix=kernel;;
   115         --gdb)      EXP=; OBS=; cat=GDB;       tool=gdb;      tool_prefix=debug;;
   116         --dmalloc)  EXP=; OBS=; cat=DMALLOC;   tool=dmalloc;  tool_prefix=debug;;
   117         --duma)     EXP=; OBS=; cat=DUMA;      tool=duma;     tool_prefix=debug;;
   118         --strace)   EXP=; OBS=; cat=STRACE;    tool=strace;   tool_prefix=debug;;
   119         --ltrace)   EXP=; OBS=; cat=LTRACE;    tool=ltrace;   tool_prefix=debug;;
   120         --libelf)   EXP=; OBS=; cat=LIBELF;    tool=libelf;   tool_prefix=tools;;
   121         --gmp)      EXP=; OBS=; cat=GMP;       tool=gmp;      tool_prefix=gmp_mpfr;;
   122         --mpfr)     EXP=; OBS=; cat=MPFR;      tool=mpfr;     tool_prefix=gmp_mpfr;;
   123 
   124         # Tools options:
   125         -x|--experimental|+s)   EXP=1;;
   126         -s|--stable|+x)         EXP=;;
   127         -o|--obsolete|+c)       OBS=1;;
   128         -c|--current|+o)        OBS=;;
   129 
   130         # Misc:
   131         -h|--help)  doHelp; exit 0;;
   132         -*)         echo "Unknown option: '$1' (use -h/--help for help)."; exit 1;;
   133 
   134         # Version string:
   135         *)  [ -n "${tool}" ] || { doHelp; exit 1; }
   136             addToolVersion "$1"
   137             ;;
   138     esac
   139     shift
   140 done