[2] | 1 | #!/bin/sh
|
---|
| 2 |
|
---|
| 3 | QMKSPEC=$1
|
---|
| 4 | VERBOSE=$2
|
---|
| 5 | SRCDIR=$3
|
---|
| 6 | OUTDIR=$4
|
---|
| 7 |
|
---|
| 8 | # debuggery
|
---|
| 9 | [ "$VERBOSE" = "yes" ] && echo "Determining floating point word-order... ($*)"
|
---|
| 10 |
|
---|
| 11 | # build and run a test program
|
---|
| 12 | test -d "$OUTDIR/config.tests/unix/doubleformat" || mkdir -p "$OUTDIR/config.tests/unix/doubleformat"
|
---|
[846] | 13 | "$OUTDIR/bin/qmake" -nocache -spec "$QMKSPEC" "QT_BUILD_TREE=$OUTDIR" "$SRCDIR/config.tests/unix/doubleformat/doubleformattest.pro" -o "$OUTDIR/config.tests/unix/doubleformat/Makefile" >/dev/null 2>&1
|
---|
[2] | 14 | cd "$OUTDIR/config.tests/unix/doubleformat"
|
---|
| 15 |
|
---|
| 16 | DOUBLEFORMAT="UNKNOWN"
|
---|
[561] | 17 | [ "$VERBOSE" = "yes" ] && $MAKE || $MAKE >/dev/null 2>&1
|
---|
[2] | 18 |
|
---|
| 19 | if [ -f ./doubleformattest ]; then
|
---|
| 20 | : # nop
|
---|
| 21 | else
|
---|
| 22 | [ "$VERBOSE" = "yes" ] && echo "Unknown floating point format!"
|
---|
| 23 | exit 2
|
---|
| 24 | fi
|
---|
| 25 |
|
---|
| 26 | # LE: strings | grep 0123ABCD0123ABCD
|
---|
| 27 | # BE: strings | grep DCBA3210DCBA3210
|
---|
| 28 | #
|
---|
| 29 | # LE arm-swapped-dword-order: strings | grep ABCD0123ABCD0123
|
---|
| 30 | # BE arm-swapped-dword-order: strings | grep 3210DCBA3210DCBA (untested)
|
---|
| 31 |
|
---|
| 32 |
|
---|
| 33 | if strings ./doubleformattest | grep "0123ABCD0123ABCD" >/dev/null 2>&1; then
|
---|
| 34 | [ "$VERBOSE" = "yes" ] && echo " Normal little endian format"
|
---|
| 35 | DOUBLEFORMAT="LITTLE"
|
---|
| 36 | elif strings ./doubleformattest | grep "ABCD0123ABCD0123" >/dev/null 2>&1; then
|
---|
| 37 | [ "$VERBOSE" = "yes" ] && echo " Swapped little endian format"
|
---|
| 38 | DOUBLEFORMAT="LITTLESWAPPED"
|
---|
| 39 | elif strings ./doubleformattest | grep "DCBA3210DCBA3210" >/dev/null 2>&1; then
|
---|
| 40 | [ "$VERBOSE" = "yes" ] && echo " Normal big endian format"
|
---|
| 41 | DOUBLEFORMAT="BIG"
|
---|
| 42 | elif strings ./doubleformattest | grep "3210DCBA3210DCBA" >/dev/null 2>&1; then
|
---|
| 43 | [ "$VERBOSE" = "yes" ] && echo " Swapped big endian format"
|
---|
| 44 | DOUBLEFORMAT="BIGSWAPPED"
|
---|
| 45 | fi
|
---|
| 46 |
|
---|
| 47 | # done
|
---|
| 48 | if [ "$DOUBLEFORMAT" = "LITTLE" ]; then
|
---|
| 49 | [ "$VERBOSE" = "yes" ] && echo "Using little endian."
|
---|
| 50 | exit 10
|
---|
| 51 | elif [ "$DOUBLEFORMAT" = "BIG" ]; then
|
---|
| 52 | [ "$VERBOSE" = "yes" ] && echo "Using big endian."
|
---|
| 53 | exit 11
|
---|
| 54 | elif [ "$DOUBLEFORMAT" = "LITTLESWAPPED" ]; then
|
---|
| 55 | [ "$VERBOSE" = "yes" ] && echo "Using swapped little endian."
|
---|
| 56 | exit 12
|
---|
| 57 | elif [ "$DOUBLEFORMAT" = "BIGSWAPPED" ]; then
|
---|
| 58 | [ "$VERBOSE" = "yes" ] && echo "Using swapped big endian."
|
---|
| 59 | exit 13
|
---|
| 60 | else
|
---|
| 61 | [ "$VERBOSE" = "yes" ] && echo "Unknown floating point format!"
|
---|
| 62 | exit 99
|
---|
| 63 | fi
|
---|