23fa114c18
Package-Manager: Portage-2.3.89, Repoman-2.3.20
83 lines
2.1 KiB
Bash
83 lines
2.1 KiB
Bash
#!/bin/sh
|
|
#
|
|
# icecream-create-env - helper script to create icecc environments(mostly for cross-compiling)
|
|
#
|
|
# Copyright 1999-2020 Gentoo Authors
|
|
# Distributed under the terms of the GNU General Public License v2
|
|
#
|
|
# Please note, this script has been designed to work with Gentoo's crossdev, it may or may
|
|
# not work with cross-toolchains that were build differently.
|
|
#
|
|
#
|
|
# Usage: "./icecream-create-env" creates a native environment(similar to icecc --build-native)
|
|
# "./icecream-create-env prefix" creates a cross-compile environment using the cross-toolchain created by crossdev
|
|
# Example:
|
|
# "emerge crossdev && crossdev -t sparc-unknown-linux-gnu && icecream-create-env sparc-unknown-linux"
|
|
|
|
if [ `id -u` -ne 0 ]
|
|
then
|
|
echo "Only the superuser can execute this script."
|
|
exit 1
|
|
fi
|
|
|
|
# param 1 = CHOST
|
|
prefix="${1}"
|
|
|
|
if [ -z "${prefix}" ]
|
|
then
|
|
prefix="`gcc -dumpmachine`"
|
|
fi
|
|
|
|
gccbin=`which ${prefix}-gcc 2>/dev/null`
|
|
if [ ! -e "${gccbin}" ]
|
|
then
|
|
echo "Can't find ${prefix}-gcc!"
|
|
exit 1
|
|
fi
|
|
|
|
gxxbin=`which ${prefix}-g++ 2>/dev/null`
|
|
if [ ! -e "${gxxbin}" ]
|
|
then
|
|
echo "Can't find ${prefix}-g++!"
|
|
exit 2
|
|
fi
|
|
|
|
version="`${prefix}-gcc -dumpversion`"
|
|
|
|
tmpdir=`mktemp -d`
|
|
tmpfile=`mktemp`
|
|
|
|
target=`gcc -dumpmachine`
|
|
if [ "x${target}" = "x${prefix}" ]
|
|
then
|
|
/usr/libexec/icecc/icecc-create-env \
|
|
/usr/${prefix}/gcc-bin/${version}/gcc \
|
|
/usr/${prefix}/gcc-bin/${version}/g++ \
|
|
| tee ${tmpfile}
|
|
else
|
|
/usr/libexec/icecc/icecc-create-env \
|
|
/usr/${target}/${prefix}/gcc-bin/${version}/${prefix}-gcc \
|
|
/usr/${target}/${prefix}/gcc-bin/${version}/${prefix}-g++ \
|
|
| tee ${tmpfile}
|
|
fi
|
|
|
|
# figure out the name of the archive
|
|
icecc_envname=`grep "creating" ${tmpfile} | awk '{print $2}'`
|
|
|
|
echo "Testing icecc environment..."
|
|
tar -x -z -f ${icecc_envname} -C ${tmpdir}
|
|
touch ${tmpdir}/empty.c
|
|
chroot ${tmpdir}/ /usr/bin/gcc -c /empty.c
|
|
tested=${?}
|
|
rm ${tmpdir}/empty.c
|
|
|
|
if [ "${tested}" -ne 0 ]
|
|
then
|
|
echo ""
|
|
echo "Creating icecc environment failed. Please see error message(s) above! The temporary directory is: ${tmpdir}/"
|
|
else
|
|
echo ""
|
|
echo "Icecc environment has been created. It has been saved as ${icecc_envname}!"
|
|
fi
|
|
|