qt5base-lts/config.tests/unix/endian.test
Simon Hausmann c954bf8b91 Fix host endian detection when compiling with sysroot
Apply the sysroot argument for the endian test only for the test used
for detecting the target endianness, don't use --sysroot for the host
detection.

Change-Id: I53edda6ebfd06e73cc64f2561b707bd2ba052ae7
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-02-14 02:48:35 +01:00

57 lines
1.5 KiB
Bash
Executable File

#!/bin/sh
QMKSPEC=$1
VERBOSE=$2
SRCDIR=$3
OUTDIR=$4
QMFLAGS=$5
# debuggery
[ "$VERBOSE" = "yes" ] && echo "Determining machine byte-order... ($*)"
# build and run a test program
test -d "$OUTDIR/config.tests/unix/endian" || mkdir -p "$OUTDIR/config.tests/unix/endian"
"$OUTDIR/bin/qmake" -nocache -spec "$QMKSPEC" "QT_BUILD_TREE=$OUTDIR" $QMFLAGS "$SRCDIR/config.tests/unix/endian/endiantest.pro" -o "$OUTDIR/config.tests/unix/endian/Makefile" >/dev/null 2>&1
cd "$OUTDIR/config.tests/unix/endian"
ENDIAN="UNKNOWN"
[ "$VERBOSE" = "yes" ] && $MAKE || $MAKE >/dev/null 2>&1
if [ -f ./endiantest.exe ]; then
binary=./endiantest.exe
else
binary=./endiantest
fi
if [ -f $binary ]; then
: # nop
else
[ "$VERBOSE" = "yes" ] && echo "Unknown byte order!"
exit 2
fi
if strings - $binary | grep LeastSignificantByteFirst >/dev/null 2>&1; then
[ "$VERBOSE" = "yes" ] && echo " Found 'LeastSignificantByteFirst' in binary"
ENDIAN="LITTLE"
elif strings - $binary | grep MostSignificantByteFirst >/dev/null 2>&1; then
[ "$VERBOSE" = "yes" ] && echo " Found 'MostSignificantByteFirst' in binary"
ENDIAN="BIG"
fi
# make clean as this tests is compiled for both the host and the target
$MAKE distclean
# done
if [ "$ENDIAN" = "LITTLE" ]; then
[ "$VERBOSE" = "yes" ] && echo "Using little endian."
exit 0
elif [ "$ENDIAN" = "BIG" ]; then
[ "$VERBOSE" = "yes" ] && echo "Using big endian."
exit 1
else
[ "$VERBOSE" = "yes" ] && echo "Unknown byte order!"
exit 2
fi