mirror of
git://repo.or.cz/tinycc.git
synced 2026-07-08 04:18:40 +08:00
configure: allow cc tests even if cross compiling, test i386/x86-64
Adds a tool `ppif` at configure which can test preprocessor conditions even when $cc is a cross compiler to any foreign platform. Currently used only to identify i386 or x86_64 (including when cross compiling) as a mini-demonstration. Hopefully will be used in the future to test more compiler features and/or replace uname-related tests with more accurate results.
This commit is contained in:
parent
3d78918e63
commit
84779b2b84
43
configure
vendored
43
configure
vendored
@ -150,11 +150,46 @@ for opt do
|
|||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
|
|
||||||
|
cc="${cross_prefix}${cc}"
|
||||||
|
ar="${cross_prefix}${ar}"
|
||||||
|
strip="${cross_prefix}${strip}"
|
||||||
|
|
||||||
|
|
||||||
|
PPIF_TEMPLATE="
|
||||||
|
int ppif(void) {
|
||||||
|
#if %s
|
||||||
|
return 0;
|
||||||
|
#else
|
||||||
|
PPIF_FALSE;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
"
|
||||||
|
|
||||||
|
# Succeeds when preprocessor condition `#if $1` is true.
|
||||||
|
# if $2 is not empty, prints to stderr `checking whether $2... <yes/no>`
|
||||||
|
# Works also when $cc is a cross compiler to any foreign platform.
|
||||||
|
# E.g. ppif "defined(__GNUC__) && (GCC_MAJOR >= 3)"
|
||||||
|
# or ppif "defined(_WIN32)" "target is Windows"
|
||||||
|
ppif() {
|
||||||
|
[ -z "${2-}" ] || printf "checking whether %s... " "$2" >&2
|
||||||
|
printf "$PPIF_TEMPLATE" "$1" > ppif.c \
|
||||||
|
&& $cc -o ppif.o -c ppif.c 2>/dev/null
|
||||||
|
ppif_rv=$?
|
||||||
|
rm ppif.c ppif.o 2>/dev/null
|
||||||
|
[ -z "${2-}" ] || { [ 0 = $ppif_rv ] && echo yes || echo no; } >&2
|
||||||
|
return $ppif_rv
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
if test -z "$cpu" ; then
|
if test -z "$cpu" ; then
|
||||||
if test -n "$ARCH" ; then
|
if test -n "$ARCH" ; then
|
||||||
cpu="$ARCH"
|
cpu="$ARCH"
|
||||||
|
elif ppif "defined(__x86_64__)"; then
|
||||||
|
cpu="x86_64"
|
||||||
|
elif ppif "defined(__i386__)"; then
|
||||||
|
cpu="i386"
|
||||||
else
|
else
|
||||||
cpu=`uname -m`
|
cpu=`uname -m`
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -303,10 +338,6 @@ EOF
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
cc="${cross_prefix}${cc}"
|
|
||||||
ar="${cross_prefix}${ar}"
|
|
||||||
strip="${cross_prefix}${strip}"
|
|
||||||
|
|
||||||
if test -z "$cross_prefix" ; then
|
if test -z "$cross_prefix" ; then
|
||||||
CONFTEST=./conftest$EXESUF
|
CONFTEST=./conftest$EXESUF
|
||||||
if ! $cc -o $CONFTEST $source_path/conftest.c 2>/dev/null ; then
|
if ! $cc -o $CONFTEST $source_path/conftest.c 2>/dev/null ; then
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user