diff options
-rwxr-xr-x | gcc-config | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/gcc-config b/gcc-config new file mode 100755 index 0000000..679be7a --- /dev/null +++ b/gcc-config @@ -0,0 +1,98 @@ +#!/bin/bash +# Copyright 1999-2002 Gentoo Foundation +# Distributed under the terms of the GNU General Public License +# Author: Martin Schlemmer <azarah@gentoo.org> +# $Header: gentoo-x86/sys-devel/gcc-config/files/gcc-config-1.0,v 1.1 2002/10/27 22:38:11 azarah Exp $ + + +source /etc/init.d/functions.sh || { + echo "$0: Could not source /etc/init.d/functions.sh!" + exit 1 +} + +if [ "$(id -u)" -ne 0 ] +then + eerror "$0: Must be root." + exit 1 +fi + +usage() { +cat << "FOO" +usage: gcc-config <CHOST>-<gcc version> + +FOO + exit 1 +} + +if [ "$#" -ne 1 ] && [ "$#" -eq 2 -a "$1" != "--use-old" ] +then + usage +fi + +GCC_COMP="" + +# Only use specified compiler if one is not already selected. +if [ "$1" = "--use-old" ] +then + shift + + if [ -f /etc/env.d/gcc/config ] + then + source /etc/env.d/gcc/config + if [ -n "${CURRENT}" ] + then + GCC_COMP="${CURRENT}" + fi + fi + + if [ -z "${GCC_COMP}" ] + then + GCC_COMP="$1" + fi +else + GCC_COMP="$1" +fi +if [ ! -d /usr/lib/gcc-lib/${GCC_COMP%-*}/${GCC_COMP##*-} -o \ + ! -f /etc/env.d/gcc/${GCC_COMP} ] +then + usage +else + ebegin "Switching to ${GCC_COMP} compiler" + + # Sourcing /etc/env.d/gcc/${GCC_COMP} is going to mess up + # PATH among things... + CP="$(which cp)" + RM="$(which rm)" + MV="$(which mv)" + LN="$(which ln)" + ENV_UPDATE="$(which env-update)" + + source /etc/env.d/gcc/${GCC_COMP} + + ${CP} -f /etc/env.d/gcc/${GCC_COMP} /etc/env.d/05gcc + + if [ -d /usr/include/${STDCXX_INCDIR} -a ! -L /usr/include/${STDCXX_INCDIR} ] + then + ${MV} /usr/include/${STDCXX_INCDIR} /usr/include/${STDCXX_INCDIR}.orig + elif [ -L /usr/include/${STDCXX_INCDIR} ] + then + ${RM} -f /usr/include/${STDCXX_INCDIR} + fi + ${LN} -snf ..${LDPATH/\/usr}/include/${STDCXX_INCDIR} /usr/include/${STDCXX_INCDIR} + + [ -L /lib/cpp -o -f /lib/cpp ] && ${RM} -f /lib/cpp + ${LN} -snf ..${PATH}/cpp /lib/cpp + [ -L /usr/bin/cc -o -f /usr/bin/cc ] && ${RM} -f /usr/bin/cc + ${LN} -snf ../..${PATH}/gcc /usr/bin/cc + + echo "CURRENT=${GCC_COMP}" > /etc/env.d/gcc/config + + source /etc/profile + + ${ENV_UPDATE} &> /dev/null + + eend 0 +fi + + +# vim:ts=4 |