#!/bin/bash
#
# Copyright (c) 2016,  Intel Corporation.
#
# SPDX-License-Identifier: GPL-2.0-or-later
#

#
# This script is for running tools from native oe sysroot
#

if [ $# -lt 1 -o "$1" = '--help' -o "$1" = '-h' ] ; then
    echo 'oe-run-native: the following arguments are required: <native recipe> <native tool>'
    echo 'Usage: oe-run-native native-recipe tool [parameters]'
    echo ''
    echo 'OpenEmbedded run-native - runs native tools'
    echo ''
    echo 'arguments:'
    echo '  native-recipe       The recipe which provides tool'
    echo '  tool                Native tool to run'
    echo ''
    exit 2
fi

native_recipe="$1"
tool="$2"

if [ "${native_recipe%-native}" = "$native_recipe" ]; then
    echo Error: $native_recipe is not a native recipe
    echo Error: Use \"oe-run-native -h\" for help
    exit 1
fi

shift

SYSROOT_SETUP_SCRIPT=`which oe-find-native-sysroot 2> /dev/null`
if [ -z "$SYSROOT_SETUP_SCRIPT" ]; then
        echo "Error: Unable to find oe-find-native-sysroot script"
        exit 1
fi
. $SYSROOT_SETUP_SCRIPT $native_recipe

OLD_PATH=$PATH

# look for a tool only in native sysroot
PATH=$OECORE_NATIVE_SYSROOT/usr/bin:$OECORE_NATIVE_SYSROOT/bin:$OECORE_NATIVE_SYSROOT/usr/sbin:$OECORE_NATIVE_SYSROOT/sbin$(find $OECORE_NATIVE_SYSROOT/usr/bin -maxdepth 1 -name "*-native" -type d -printf ":%p")
tool_find=`/usr/bin/which $tool 2>/dev/null`

if [ -n "$tool_find" ] ; then
    # add old path to allow usage of host tools
    PATH=$PATH:$OLD_PATH "$@"
else
    echo "Error: Unable to find '$tool' in $PATH"
    echo "Error: Have you run 'bitbake $native_recipe -caddto_recipe_sysroot'?"
    exit 1
fi
