build: Make detect_cc.sh handle --cross-prefix
This internal tool can now be passed an optional --cross-prefix, which sets up the prefix used for a cross compiler. Change-Id: Ia4bbbae3bd5a2e4ddc9da342cd03d600e9ee6099 Signed-off-by: Ben Walker <benjamin.walker@intel.com> Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/463016 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Reviewed-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com> Reviewed-by: Paul Luse <paul.e.luse@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com>
This commit is contained in:
parent
c510bd8830
commit
1a56982da3
@ -21,6 +21,7 @@ function usage()
|
|||||||
err " --cxx=path C++ compiler to use"
|
err " --cxx=path C++ compiler to use"
|
||||||
err " --ld=path Linker to use"
|
err " --ld=path Linker to use"
|
||||||
err " --lto=[y|n] Attempt to configure for LTO"
|
err " --lto=[y|n] Attempt to configure for LTO"
|
||||||
|
err " --cross-prefix=prefix Use the given prefix for the cross compiler toolchain"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -51,6 +52,11 @@ for i in "$@"; do
|
|||||||
LD="${i#*=}"
|
LD="${i#*=}"
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
|
--cross-prefix=*)
|
||||||
|
if [[ -n "${i#*=}" ]]; then
|
||||||
|
CROSS_PREFIX="${i#*=}"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
--)
|
--)
|
||||||
break
|
break
|
||||||
;;
|
;;
|
||||||
@ -67,6 +73,7 @@ OS=$(uname)
|
|||||||
: ${CXX=c++}
|
: ${CXX=c++}
|
||||||
: ${LD=}
|
: ${LD=}
|
||||||
: ${LTO=n}
|
: ${LTO=n}
|
||||||
|
: ${CROSS_PREFIX=}
|
||||||
|
|
||||||
if [ -z "$LD" ]; then
|
if [ -z "$LD" ]; then
|
||||||
if [ "$OS" = "Linux" ]; then
|
if [ "$OS" = "Linux" ]; then
|
||||||
@ -113,6 +120,53 @@ if [ "$LTO" = "y" ]; then
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [ ! -z "$CROSS_PREFIX" ]; then
|
||||||
|
expected_prefix=$($CC -dumpmachine)
|
||||||
|
|
||||||
|
if [ ! "$expected_prefix" = "$CROSS_PREFIX" ]; then
|
||||||
|
err "Cross prefix specified ($CROSS_PREFIX) does not match prefix of $CC ($expected_prefix)."
|
||||||
|
|
||||||
|
# Try to fix this automatically. Maybe the user set CROSS_PREFIX but not CC.
|
||||||
|
CC=$CROSS_PREFIX-$CC
|
||||||
|
if hash $CC 2>/dev/null; then
|
||||||
|
expected_prefix=$($CC -dumpmachine)
|
||||||
|
|
||||||
|
if [ "$expected_prefix" = "$CROSS_PREFIX" ]; then
|
||||||
|
err "Automatically changed CC to $CC"
|
||||||
|
else
|
||||||
|
err "Set CC to the appropriate compiler."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
err "Set CC to the appropriate compiler."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
expected_prefix=$($CXX -dumpmachine)
|
||||||
|
|
||||||
|
if [ ! "$expected_prefix" = "$CROSS_PREFIX" ]; then
|
||||||
|
err "Cross prefix specified ($CROSS_PREFIX) does not match prefix of $CXX ($expected_prefix)."
|
||||||
|
|
||||||
|
# Try to fix this automatically. Maybe the user set CROSS_PREFIX but not CXX.
|
||||||
|
CXX=$CROSS_PREFIX-$CXX
|
||||||
|
if hash $CXX 2>/dev/null; then
|
||||||
|
expected_prefix=$($CXX -dumpmachine)
|
||||||
|
|
||||||
|
if [ "$expected_prefix" = "$CROSS_PREFIX" ]; then
|
||||||
|
err "Automatically changed CXX to $CXX"
|
||||||
|
else
|
||||||
|
err "Set CXX to the appropriate compiler."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
err "Set CXX to the appropriate compiler."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
function set_default() {
|
function set_default() {
|
||||||
echo "ifeq (\$(origin $1),default)"
|
echo "ifeq (\$(origin $1),default)"
|
||||||
echo "$1=$2"
|
echo "$1=$2"
|
||||||
@ -127,3 +181,7 @@ set_default LD $LD
|
|||||||
echo "CCAR=$CCAR"
|
echo "CCAR=$CCAR"
|
||||||
echo "CC_TYPE=$CC_TYPE"
|
echo "CC_TYPE=$CC_TYPE"
|
||||||
echo "LD_TYPE=$LD_TYPE"
|
echo "LD_TYPE=$LD_TYPE"
|
||||||
|
|
||||||
|
if [ ! -z "$CROSS_PREFIX" ]; then
|
||||||
|
echo "CROSS_PREFIX=$CROSS_PREFIX"
|
||||||
|
fi
|
||||||
|
Loading…
Reference in New Issue
Block a user