haiku/data/bin/setgcc
Jérôme Duval f659f955ba Added an optional package DevelopmentPowerPC
* haiku-devlibs-ppc-gcc4 zip archive contains libroot and glue (but no stdc++).
* fixed /boot/develop/lib/$arch symlink to point to the right dir instead of current.
* setgcc now handles the ppc arch and updates the arch link /boot/develop/lib.
2012-03-18 15:36:26 +01:00

99 lines
1.8 KiB
Bash
Executable File

#!/bin/sh
#
# setgcc [ <arch> ] [ <gcc> ]
abiDir=/boot/develop/abi
abiLink=$abiDir/current
libDir=/boot/develop/lib
usage()
{
cat << EOF
Usage: $0 [ <arch> ] [ <gcc> ]
Sets the current gcc version, respectively prints it, if no arguments are
given.
<arch> - The architecture to set. Supported values: "x86", "ppc".
<gcc> - The major gcc version to set. Supported values: "gcc2", "gcc4".
EOF
}
if [ $# -gt 2 ]; then
usage
exit 1
fi
if [ $# -eq 0 ]; then
if [ -h $abiLink ]; then
abi=$(readlink $abiLink 2> /dev/null) || {
echo "Failed to read GCC symlink." >&2
exit 1
}
echo "Current GCC: $abi"
exit
else
echo "GCC symlink not installed." >&2
exit 1
fi
fi
arch=
gcc=
# parse the args
while [ $# -gt 0 ]; do
case $1 in
-h,--help) usage; exit;;
x86) arch=$1;;
ppc) arch=$1;;
gcc2|gcc4) gcc=$1;;
*) usage; exit 1;;
esac
shift
done
# use the native arch, if not given
if [ -z "$arch" ]; then
case $(uname -m) in
BePC) arch=x86;;
*) echo "Can't guess native architecture. Please specify!" >&2
exit 1;;
esac
fi
# guess the native gcc version, if not given
if [ -z "$gcc" ]; then
if [ -e /system/lib/gcc2 ]; then
gcc=gcc4
elif [ -e /system/lib/gcc4 ]; then
gcc=gcc2
elif [ -e /system/lib/libstdc++.r4.so ]; then
gcc=gcc2
else
echo "Can't guess native GCC version. Please specify!" >&2
exit 1
fi
fi
# check whether the gcc exists
if [ ! -e $abiDir/$arch/$gcc/tools/current/bin/*gcc ]; then
echo "Can't set GCC $arch/$gcc -- not installed." >&2
exit 1
fi
# create the symlink
( rm $abiLink && ln -sf $arch/$gcc $abiLink ) || {
echo "Failed to set GCC $arch/$gcc." >&2
exit 1
}
# create the lib symlink
libLink=$libDir/$arch
( rm -f $libLink && ln -sf $abiDir/$arch/$gcc/lib $libLink ) || {
echo "Failed to set lib $arch/$gcc." >&2
exit 1
}