From 7e524096879e821256812633ce37cda4b85b3073 Mon Sep 17 00:00:00 2001 From: Joshua Watt Date: Mon, 12 Feb 2018 10:52:08 -0600 Subject: icecc-toolchain: Add SDK icecream setup Icecream can now be optionally included in the generated SDK by including nativesdk-icecc-toolchain to TOOLCHAIN_HOST_TASK. When the SDK is installed a post-relocation script will check if icecc exists and if so will generate the toolchain environment. Signed-off-by: Joshua Watt Signed-off-by: Richard Purdie --- .../icecc-toolchain/icecc-toolchain/icecc-env.sh | 37 +++++++++++++++++++ .../icecc-toolchain/icecc-toolchain/icecc-setup.sh | 43 ++++++++++++++++++++++ .../nativesdk-icecc-toolchain_0.1.bb | 38 +++++++++++++++++++ 3 files changed, 118 insertions(+) create mode 100644 meta/recipes-devtools/icecc-toolchain/icecc-toolchain/icecc-env.sh create mode 100644 meta/recipes-devtools/icecc-toolchain/icecc-toolchain/icecc-setup.sh create mode 100644 meta/recipes-devtools/icecc-toolchain/nativesdk-icecc-toolchain_0.1.bb (limited to 'meta/recipes-devtools') diff --git a/meta/recipes-devtools/icecc-toolchain/icecc-toolchain/icecc-env.sh b/meta/recipes-devtools/icecc-toolchain/icecc-toolchain/icecc-env.sh new file mode 100644 index 0000000000..9c9bb4dc4e --- /dev/null +++ b/meta/recipes-devtools/icecc-toolchain/icecc-toolchain/icecc-env.sh @@ -0,0 +1,37 @@ +#! /bin/sh +# Copyright (c) 2018 Joshua Watt, Garmin International,Inc. +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +# + +if [ -z "$ICECC_PATH" ]; then + ICECC_PATH=$(which icecc 2> /dev/null) +fi + +if [ -n "$ICECC_PATH" ]; then + export ICECC_PATH + export ICECC_VERSION="$OECORE_NATIVE_SYSROOT/usr/share/icecream/@TOOLCHAIN_ENV@" + export ICECC="$(which ${CROSS_COMPILE}gcc)" + export ICECXX="$(which ${CROSS_COMPILE}g++)" + export ICEAS="$(which ${CROSS_COMPILE}as)" + export PATH="$OECORE_NATIVE_SYSROOT/usr/share/icecream/bin:$PATH" +else + echo "Icecc not found. Disabling distributed compiling" +fi + diff --git a/meta/recipes-devtools/icecc-toolchain/icecc-toolchain/icecc-setup.sh b/meta/recipes-devtools/icecc-toolchain/icecc-toolchain/icecc-setup.sh new file mode 100644 index 0000000000..0480826578 --- /dev/null +++ b/meta/recipes-devtools/icecc-toolchain/icecc-toolchain/icecc-setup.sh @@ -0,0 +1,43 @@ +#! /bin/sh +# Copyright (c) 2018 Joshua Watt, Garmin International,Inc. +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +# + +# Setup environment +for env_setup_script in `ls $1/environment-setup-*`; do + . $env_setup_script +done + +# ICECC_PATH will have been found icecc-env.sh +if [ -z "$ICECC_PATH" ]; then + exit 0 +fi + +echo "Setting up IceCream distributed compiling..." + +# Create the environment +mkdir -p "`dirname $ICECC_VERSION`" +icecc-create-env $ICECC $ICECXX $ICEAS $ICECC_VERSION || exit $? + +# Create symbolic links +d="$OECORE_NATIVE_SYSROOT/usr/share/icecream/bin" +mkdir -p "$d" +ln -s "$ICECC_PATH" "$d/${CROSS_COMPILE}gcc" +ln -s "$ICECC_PATH" "$d/${CROSS_COMPILE}g++" diff --git a/meta/recipes-devtools/icecc-toolchain/nativesdk-icecc-toolchain_0.1.bb b/meta/recipes-devtools/icecc-toolchain/nativesdk-icecc-toolchain_0.1.bb new file mode 100644 index 0000000000..91958d7fbc --- /dev/null +++ b/meta/recipes-devtools/icecc-toolchain/nativesdk-icecc-toolchain_0.1.bb @@ -0,0 +1,38 @@ +# Copyright (c) 2018 Joshua Watt, Garmin International,Inc. +# Released under the MIT license (see COPYING.MIT for the terms) +SUMMARY = "Generates Icecream toolchain for SDK" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://${WORKDIR}/icecc-env.sh;beginline=2;endline=20;md5=aafdb7bc2aa7ac5d039fda0c8733983c" + +INHIBIT_DEFAULT_DEPS = "1" + +SRC_URI = "\ + file://icecc-env.sh \ + file://icecc-setup.sh \ + " + +inherit nativesdk + +ENV_NAME="${DISTRO}-${TCLIBC}-${SDK_ARCH}-${TUNE_PKGARCH}-${DISTRO_VERSION}.tar.gz" + +do_compile() { +} + +do_install() { + install -d ${D}${SDKPATHNATIVE}${datadir}/icecream/bin + + install -d ${D}${SDKPATHNATIVE}/environment-setup.d/ + install -m 0644 ${WORKDIR}/icecc-env.sh ${D}${SDKPATHNATIVE}/environment-setup.d/ + sed -i ${D}${SDKPATHNATIVE}/environment-setup.d/icecc-env.sh \ + -e "s,@TOOLCHAIN_ENV@,${ENV_NAME},g" + + install -d ${D}${SDKPATHNATIVE}/post-relocate-setup.d/ + install -m 0755 ${WORKDIR}/icecc-setup.sh ${D}${SDKPATHNATIVE}/post-relocate-setup.d/ + sed -i ${D}${SDKPATHNATIVE}/post-relocate-setup.d/icecc-setup.sh \ + -e "s,@TOOLCHAIN_ENV@,${ENV_NAME},g" +} + +PACKAGES = "${PN}" +FILES_${PN} = "${SDKPATHNATIVE}" +RDEPENDS_${PN} += "nativesdk-icecc-create-env" + -- cgit 1.2.3-korg