scripts/build/internals.sh: compile wrapper with portable options.
static linking is not possible on MacOS, and unnessecary on other systems.
The old optimization and warning flags crash the gcc on MacOS
and (imho) are a bit overdone for this software.
4 # Adds a new version to one of the toolchain component
7 # Parse the tools' paths configuration
8 # It is expected that this script is only to be run from the
9 # source directory of crosstool-NG, so it is trivial to find
10 # paths.mk (we can't use ". paths.mk", as POSIX states that
11 # $PATH should be searched for, and $PATH most probably doe
12 # not include "."), hence the "./".
17 Usage: ${myname} <--tool> <[options] version [...]> ...
19 gcc, binutils, glibc, eglibc, uClibc, newlib, linux, gdb, dmalloc,
20 duma, strace, ltrace, libelf, gmp, mpfr, ppl, cloog, mpc
22 Valid options for all tools:
23 --stable, -s, +x (default)
24 mark the version as being stable (as opposed to experimental, below)
26 --experimental, -x, +s
27 mark the version as being experimental (as opposed to stable, above)
29 --current, -c, +o (default)
30 mark the version as being cuurent (as opposed to obsolete, below)
33 mark the version as being obsolete (as opposed to current, above)
35 Note: setting a new tool resets to the defaults: 'stable' and 'current'.
37 'version' is a valid version for the specified tool.
40 add stable current version 2.6.19.2 to linux kernel:
41 ${myname} --linux 2.6.19.2
43 add experimental obsolete version 2.3.5 and stable current versions 2.6.1
44 and 2.6.2 to glibc, add stable obsolete version 3.3.3 to gcc:
45 ${myname} --glibc -x -o 2.3.5 -s -c 2.6.1 2.6.2 --gcc -o 3.3.3
49 # Effectively add a version to the specified tool
50 # $cat : tool category
52 # $tool_prefix : tool directory prefix
53 # $EXP : set to non empty if experimental, to empty otherwise
54 # #OBS : set to non empty if obsolete, to empty otherwise
55 # $1 : version string to add
59 local config_ver_option
61 local deps v ver_M ver_m ver_p
62 local SedExpr1 SedExpr2
64 file="config/${tool_prefix}/${tool}.in"
65 v=$(echo "${version}" |"${sed}" -r -e 's/-/_/g; s/\./_/g;')
67 config_ver_option="${cat}_V_${v}"
69 # Check for existing version: it can be legitimitate for an end-user
70 # to try adding a new version if the one he/she wants is not listed.
71 # But it can be the case where the version is hidden behind either one
72 # of EXPERIMENTAL or OBSOLETE, so warn if the version is already listed.
73 if (GREP_OPTIONS= grep -E "^config ${config_ver_option}$" "${file}" >/dev/null 2>&1); then
74 echo "'${tool}': version '${version}' already present:"
75 GREP_OPTIONS= grep -A3 -B0 -E "^config ${config_ver_option}$" "${file}"
79 SedExpr1="${SedExpr1}config ${config_ver_option}\n"
80 SedExpr1="${SedExpr1} bool\n"
81 SedExpr1="${SedExpr1} prompt \"${version}"
82 case "${EXP},${OBS}" in
84 ,*) exp_obs_prompt=" (OBSOLETE)"
85 deps=" depends on OBSOLETE"
87 *,) exp_obs_prompt=" (EXPERIMENTAL)"
88 deps=" depends on EXPERIMENTAL"
90 *) exp_obs_prompt=" (EXPERIMENTAL, OBSOLETE)"
91 deps=" depends on EXPERIMENTAL \\&\\& OBSOLETE"
94 [ -n "${exp_obs_prompt}" ] && SedExpr1="${SedExpr1}${exp_obs_prompt}"
95 SedExpr1="${SedExpr1}\""
96 [ -n "${deps}" ] && SedExpr1="${SedExpr1}\n${deps}"
99 # Extract 'M'ajor and 'm'inor from version string
100 ver_M=$(echo "${version}...." |cut -d . -f 1)
101 ver_m=$(echo "${version}...." |cut -d . -f 2)
102 if [ ${ver_M} -gt 4 \
103 -o \( ${ver_M} -eq 4 -a ${ver_m} -ge 5 \) ]; then
104 SedExpr1="${SedExpr1}\n select CC_GCC_4_5_or_later"
105 elif [ ${ver_M} -gt 4 \
106 -o \( ${ver_M} -eq 4 -a ${ver_m} -ge 4 \) ]; then
107 SedExpr1="${SedExpr1}\n select CC_GCC_4_4_or_later"
108 elif [ ${ver_M} -gt 4 \
109 -o \( ${ver_M} -eq 4 -a ${ver_m} -ge 3 \) ]; then
110 SedExpr1="${SedExpr1}\n select CC_GCC_4_3_or_later"
114 # uClibc-0.9.30 and above need some love
115 ver_M=$(echo "${version}...." |cut -d . -f 1)
116 ver_m=$(echo "${version}...." |cut -d . -f 2)
117 ver_p=$(echo "${version}...." |cut -d . -f 3)
118 if [ ${ver_M} -ge 1 \
119 -o ${ver_M} -eq 0 -a ${ver_m} -ge 10 \
120 -o ${ver_M} -eq 0 -a ${ver_m} -eq 9 -a ${ver_p} -ge 30 ]; then
121 SedExpr1="${SedExpr1}\n select LIBC_UCLIBC_0_9_30_or_later"
125 # gdb-7.0 and above have special handling
126 ver_M=$(echo "${version}...." |cut -d . -f 1)
127 if [ ${ver_M} -ge 7 ]; then
128 SedExpr1="${SedExpr1}\n select GDB_7_0_or_later"
132 SedExpr2=" default \"${version}\" if ${config_ver_option}"
133 "${sed}" -r -i -e 's/^(# CT_INSERT_VERSION_BELOW)$/\1\n\n'"${SedExpr1}"'/;' "${file}"
134 "${sed}" -r -i -e 's/^(# CT_INSERT_VERSION_STRING_BELOW)$/\1\n'"${SedExpr2}"'/;' "${file}"
144 if [ $# -eq 0 ]; then
149 while [ $# -gt 0 ]; do
152 --gcc) EXP=; OBS=; cat=CC; tool=gcc; tool_prefix=cc;;
153 --binutils) EXP=; OBS=; cat=BINUTILS; tool=binutils; tool_prefix=binutils;;
154 --glibc) EXP=; OBS=; cat=LIBC_GLIBC; tool=glibc; tool_prefix=libc;;
155 --eglibc) EXP=; OBS=; cat=LIBC_EGLIBC; tool=eglibc; tool_prefix=libc;;
156 --uClibc) EXP=; OBS=; cat=LIBC_UCLIBC; tool=uClibc; tool_prefix=libc;;
157 --newlib) EXP=; OBS=; cat=LIBC_NEWLIB; tool=newlib; tool_prefix=libc;;
158 --linux) EXP=; OBS=; cat=KERNEL; tool=linux; tool_prefix=kernel;;
159 --gdb) EXP=; OBS=; cat=GDB; tool=gdb; tool_prefix=debug;;
160 --dmalloc) EXP=; OBS=; cat=DMALLOC; tool=dmalloc; tool_prefix=debug;;
161 --duma) EXP=; OBS=; cat=DUMA; tool=duma; tool_prefix=debug;;
162 --strace) EXP=; OBS=; cat=STRACE; tool=strace; tool_prefix=debug;;
163 --ltrace) EXP=; OBS=; cat=LTRACE; tool=ltrace; tool_prefix=debug;;
164 --gmp) EXP=; OBS=; cat=GMP; tool=gmp; tool_prefix=companion_libs;;
165 --mpfr) EXP=; OBS=; cat=MPFR; tool=mpfr; tool_prefix=companion_libs;;
166 --ppl) EXP=; OBS=; cat=PPL; tool=ppl; tool_prefix=companion_libs;;
167 --cloog) EXP=; OBS=; cat=CLOOG; tool=cloog; tool_prefix=companion_libs;;
168 --mpc) EXP=; OBS=; cat=MPC; tool=mpc; tool_prefix=companion_libs;;
169 --libelf) EXP=; OBS=; cat=LIBELF; tool=libelf; tool_prefix=companion_libs;;
172 -x|--experimental|+s) EXP=1;;
173 -s|--stable|+x) EXP=;;
174 -o|--obsolete|+c) OBS=1;;
175 -c|--current|+o) OBS=;;
178 -h|--help) doHelp; exit 0;;
179 -*) echo "Unknown option: '$1' (use -h/--help for help)."; exit 1;;
182 *) [ -n "${tool}" ] || { doHelp; exit 1; }