diff options
| author | Joshua Watt <jpewhacker@gmail.com> | 2018-02-12 10:52:08 -0600 |
|---|---|---|
| committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2018-02-16 18:05:38 +0000 |
| commit | c129cbe1b88d5d497a55af3c66d5541133484a09 (patch) | |
| tree | aace59193564a0e48929b0881b492434ea595bca | |
| parent | cf85c5a490b7044f2a5291c7df646248e81770f7 (diff) | |
| download | poky-c129cbe1b88d5d497a55af3c66d5541133484a09.tar.gz | |
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.
(From OE-Core rev: 7e524096879e821256812633ce37cda4b85b3073)
Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
3 files changed, 118 insertions, 0 deletions
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 @@ | |||
| 1 | #! /bin/sh | ||
| 2 | # Copyright (c) 2018 Joshua Watt, Garmin International,Inc. | ||
| 3 | # | ||
| 4 | # Permission is hereby granted, free of charge, to any person obtaining a copy | ||
| 5 | # of this software and associated documentation files (the "Software"), to deal | ||
| 6 | # in the Software without restriction, including without limitation the rights | ||
| 7 | # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||
| 8 | # copies of the Software, and to permit persons to whom the Software is | ||
| 9 | # furnished to do so, subject to the following conditions: | ||
| 10 | # | ||
| 11 | # The above copyright notice and this permission notice shall be included in | ||
| 12 | # all copies or substantial portions of the Software. | ||
| 13 | # | ||
| 14 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
| 15 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
| 16 | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
| 17 | # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
| 18 | # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||
| 19 | # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||
| 20 | # SOFTWARE. | ||
| 21 | # | ||
| 22 | |||
| 23 | if [ -z "$ICECC_PATH" ]; then | ||
| 24 | ICECC_PATH=$(which icecc 2> /dev/null) | ||
| 25 | fi | ||
| 26 | |||
| 27 | if [ -n "$ICECC_PATH" ]; then | ||
| 28 | export ICECC_PATH | ||
| 29 | export ICECC_VERSION="$OECORE_NATIVE_SYSROOT/usr/share/icecream/@TOOLCHAIN_ENV@" | ||
| 30 | export ICECC="$(which ${CROSS_COMPILE}gcc)" | ||
| 31 | export ICECXX="$(which ${CROSS_COMPILE}g++)" | ||
| 32 | export ICEAS="$(which ${CROSS_COMPILE}as)" | ||
| 33 | export PATH="$OECORE_NATIVE_SYSROOT/usr/share/icecream/bin:$PATH" | ||
| 34 | else | ||
| 35 | echo "Icecc not found. Disabling distributed compiling" | ||
| 36 | fi | ||
| 37 | |||
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 @@ | |||
| 1 | #! /bin/sh | ||
| 2 | # Copyright (c) 2018 Joshua Watt, Garmin International,Inc. | ||
| 3 | # | ||
| 4 | # Permission is hereby granted, free of charge, to any person obtaining a copy | ||
| 5 | # of this software and associated documentation files (the "Software"), to deal | ||
| 6 | # in the Software without restriction, including without limitation the rights | ||
| 7 | # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||
| 8 | # copies of the Software, and to permit persons to whom the Software is | ||
| 9 | # furnished to do so, subject to the following conditions: | ||
| 10 | # | ||
| 11 | # The above copyright notice and this permission notice shall be included in | ||
| 12 | # all copies or substantial portions of the Software. | ||
| 13 | # | ||
| 14 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
| 15 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
| 16 | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
| 17 | # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
| 18 | # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||
| 19 | # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||
| 20 | # SOFTWARE. | ||
| 21 | # | ||
| 22 | |||
| 23 | # Setup environment | ||
| 24 | for env_setup_script in `ls $1/environment-setup-*`; do | ||
| 25 | . $env_setup_script | ||
| 26 | done | ||
| 27 | |||
| 28 | # ICECC_PATH will have been found icecc-env.sh | ||
| 29 | if [ -z "$ICECC_PATH" ]; then | ||
| 30 | exit 0 | ||
| 31 | fi | ||
| 32 | |||
| 33 | echo "Setting up IceCream distributed compiling..." | ||
| 34 | |||
| 35 | # Create the environment | ||
| 36 | mkdir -p "`dirname $ICECC_VERSION`" | ||
| 37 | icecc-create-env $ICECC $ICECXX $ICEAS $ICECC_VERSION || exit $? | ||
| 38 | |||
| 39 | # Create symbolic links | ||
| 40 | d="$OECORE_NATIVE_SYSROOT/usr/share/icecream/bin" | ||
| 41 | mkdir -p "$d" | ||
| 42 | ln -s "$ICECC_PATH" "$d/${CROSS_COMPILE}gcc" | ||
| 43 | 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 @@ | |||
| 1 | # Copyright (c) 2018 Joshua Watt, Garmin International,Inc. | ||
| 2 | # Released under the MIT license (see COPYING.MIT for the terms) | ||
| 3 | SUMMARY = "Generates Icecream toolchain for SDK" | ||
| 4 | LICENSE = "MIT" | ||
| 5 | LIC_FILES_CHKSUM = "file://${WORKDIR}/icecc-env.sh;beginline=2;endline=20;md5=aafdb7bc2aa7ac5d039fda0c8733983c" | ||
| 6 | |||
| 7 | INHIBIT_DEFAULT_DEPS = "1" | ||
| 8 | |||
| 9 | SRC_URI = "\ | ||
| 10 | file://icecc-env.sh \ | ||
| 11 | file://icecc-setup.sh \ | ||
| 12 | " | ||
| 13 | |||
| 14 | inherit nativesdk | ||
| 15 | |||
| 16 | ENV_NAME="${DISTRO}-${TCLIBC}-${SDK_ARCH}-${TUNE_PKGARCH}-${DISTRO_VERSION}.tar.gz" | ||
| 17 | |||
| 18 | do_compile() { | ||
| 19 | } | ||
| 20 | |||
| 21 | do_install() { | ||
| 22 | install -d ${D}${SDKPATHNATIVE}${datadir}/icecream/bin | ||
| 23 | |||
| 24 | install -d ${D}${SDKPATHNATIVE}/environment-setup.d/ | ||
| 25 | install -m 0644 ${WORKDIR}/icecc-env.sh ${D}${SDKPATHNATIVE}/environment-setup.d/ | ||
| 26 | sed -i ${D}${SDKPATHNATIVE}/environment-setup.d/icecc-env.sh \ | ||
| 27 | -e "s,@TOOLCHAIN_ENV@,${ENV_NAME},g" | ||
| 28 | |||
| 29 | install -d ${D}${SDKPATHNATIVE}/post-relocate-setup.d/ | ||
| 30 | install -m 0755 ${WORKDIR}/icecc-setup.sh ${D}${SDKPATHNATIVE}/post-relocate-setup.d/ | ||
| 31 | sed -i ${D}${SDKPATHNATIVE}/post-relocate-setup.d/icecc-setup.sh \ | ||
| 32 | -e "s,@TOOLCHAIN_ENV@,${ENV_NAME},g" | ||
| 33 | } | ||
| 34 | |||
| 35 | PACKAGES = "${PN}" | ||
| 36 | FILES_${PN} = "${SDKPATHNATIVE}" | ||
| 37 | RDEPENDS_${PN} += "nativesdk-icecc-create-env" | ||
| 38 | |||
