2004-08-30 23:43:03 +08:00
|
|
|
# configure.host
|
|
|
|
#
|
|
|
|
# This shell script handles all host based configuration for libffi.
|
2015-01-13 00:19:59 +08:00
|
|
|
#
|
2004-08-30 23:43:03 +08:00
|
|
|
|
|
|
|
# THIS TABLE IS SORTED. KEEP IT THAT WAY.
|
2015-01-13 00:19:59 +08:00
|
|
|
# Most of the time we can define all the variables all at once...
|
2004-08-30 23:43:03 +08:00
|
|
|
case "${host}" in
|
2015-01-13 00:19:59 +08:00
|
|
|
aarch64*-*-*)
|
|
|
|
TARGET=AARCH64; TARGETDIR=aarch64
|
|
|
|
SOURCES="ffi.c sysv.S"
|
|
|
|
;;
|
|
|
|
|
|
|
|
alpha*-*-*)
|
|
|
|
TARGET=ALPHA; TARGETDIR=alpha;
|
|
|
|
# Support 128-bit long double, changeable via command-line switch.
|
|
|
|
HAVE_LONG_DOUBLE='defined(__LONG_DOUBLE_128__)'
|
|
|
|
SOURCES="ffi.c osf.S"
|
|
|
|
;;
|
|
|
|
|
|
|
|
arc*-*-*)
|
|
|
|
TARGET=ARC; TARGETDIR=arc
|
|
|
|
SOURCES="ffi.c arcompact.S"
|
|
|
|
;;
|
|
|
|
|
|
|
|
arm*-*-*)
|
|
|
|
TARGET=ARM; TARGETDIR=arm
|
|
|
|
SOURCES="ffi.c sysv.S"
|
|
|
|
;;
|
|
|
|
|
|
|
|
avr32*-*-*)
|
|
|
|
TARGET=AVR32; TARGETDIR=avr32
|
|
|
|
SOURCES="ffi.c sysv.S"
|
|
|
|
;;
|
|
|
|
|
|
|
|
bfin*)
|
|
|
|
TARGET=BFIN; TARGETDIR=bfin
|
|
|
|
SOURCES="ffi.c sysv.S"
|
|
|
|
;;
|
|
|
|
|
|
|
|
cris-*-*)
|
|
|
|
TARGET=LIBFFI_CRIS; TARGETDIR=cris
|
|
|
|
SOURCES="ffi.c sysv.S"
|
|
|
|
;;
|
|
|
|
|
|
|
|
frv-*-*)
|
|
|
|
TARGET=FRV; TARGETDIR=frv
|
|
|
|
SOURCES="ffi.c eabi.S"
|
|
|
|
;;
|
|
|
|
|
|
|
|
hppa*-*-linux* | parisc*-*-linux* | hppa*-*-openbsd*)
|
|
|
|
TARGET=PA_LINUX; TARGETDIR=pa
|
|
|
|
SOURCES="ffi.c linux.S"
|
|
|
|
;;
|
|
|
|
hppa*64-*-hpux*)
|
|
|
|
TARGET=PA64_HPUX; TARGETDIR=pa
|
|
|
|
;;
|
|
|
|
hppa*-*-hpux*)
|
|
|
|
TARGET=PA_HPUX; TARGETDIR=pa
|
|
|
|
SOURCES="ffi.c hpux32.S"
|
|
|
|
;;
|
|
|
|
|
|
|
|
i?86-*-freebsd* | i?86-*-openbsd*)
|
|
|
|
TARGET=X86_FREEBSD; TARGETDIR=x86
|
|
|
|
;;
|
|
|
|
|
|
|
|
i?86-win32* | i?86-*-cygwin* | i?86-*-mingw* | i?86-*-os2* | i?86-*-interix* \
|
|
|
|
| x86_64-*-cygwin* | x86_64-*-mingw*)
|
|
|
|
TARGETDIR=x86
|
|
|
|
if test $ac_cv_sizeof_size_t = 4; then
|
|
|
|
TARGET=X86_WIN32
|
|
|
|
else
|
|
|
|
TARGET=X86_WIN64
|
|
|
|
fi
|
|
|
|
# All mingw/cygwin/win32 builds require -no-undefined for sharedlib.
|
|
|
|
# We must also check with_cross_host to decide if this is a native
|
|
|
|
# or cross-build and select where to install dlls appropriately.
|
|
|
|
if test -n "$with_cross_host" &&
|
|
|
|
test x"$with_cross_host" != x"no"; then
|
|
|
|
AM_LTLDFLAGS='-no-undefined -bindir "$(toolexeclibdir)"';
|
|
|
|
else
|
|
|
|
AM_LTLDFLAGS='-no-undefined -bindir "$(bindir)"';
|
|
|
|
fi
|
|
|
|
;;
|
|
|
|
|
|
|
|
i?86-*-darwin* | x86_64-*-darwin*)
|
|
|
|
TARGETDIR=x86
|
|
|
|
if test $ac_cv_sizeof_size_t = 4; then
|
|
|
|
TARGET=X86_DARWIN
|
|
|
|
else
|
|
|
|
TARGET=X86_64_DARWIN
|
|
|
|
fi
|
|
|
|
;;
|
|
|
|
|
|
|
|
i?86-*-* | x86_64-*-* | amd64-*)
|
|
|
|
TARGETDIR=x86
|
|
|
|
if test $ac_cv_sizeof_size_t = 4; then
|
|
|
|
case "$host" in
|
|
|
|
*-gnux32)
|
|
|
|
TARGET=X86_64
|
|
|
|
;;
|
|
|
|
*)
|
2015-01-13 23:57:27 +08:00
|
|
|
echo 'int foo (void) { return __x86_64__; }' > conftest.c
|
|
|
|
if $CC $CFLAGS -Werror -S conftest.c -o conftest.s > /dev/null 2>&1; then
|
|
|
|
TARGET=X86_64;
|
|
|
|
else
|
|
|
|
TARGET=X86;
|
|
|
|
fi
|
|
|
|
rm -f conftest.*
|
2015-01-13 00:19:59 +08:00
|
|
|
;;
|
|
|
|
esac
|
|
|
|
else
|
|
|
|
TARGET=X86_64;
|
|
|
|
fi
|
|
|
|
;;
|
|
|
|
|
|
|
|
ia64*-*-*)
|
|
|
|
TARGET=IA64; TARGETDIR=ia64
|
|
|
|
SOURCES="ffi.c unix.S"
|
|
|
|
;;
|
|
|
|
|
|
|
|
m32r*-*-*)
|
|
|
|
TARGET=M32R; TARGETDIR=m32r
|
|
|
|
SOURCES="ffi.c sysv.S"
|
|
|
|
;;
|
|
|
|
|
|
|
|
m68k-*-*)
|
|
|
|
TARGET=M68K; TARGETDIR=m68k
|
|
|
|
SOURCES="ffi.c sysv.S"
|
|
|
|
;;
|
|
|
|
|
|
|
|
m88k-*-*)
|
|
|
|
TARGET=M88K; TARGETDIR=m88k
|
|
|
|
SOURCES="ffi.c obsd.S"
|
|
|
|
;;
|
|
|
|
|
|
|
|
microblaze*-*-*)
|
|
|
|
TARGET=MICROBLAZE; TARGETDIR=microblaze
|
|
|
|
SOURCES="ffi.c sysv.S"
|
|
|
|
;;
|
|
|
|
|
|
|
|
moxie-*-*)
|
|
|
|
TARGET=MOXIE; TARGETDIR=moxie
|
|
|
|
SOURCES="ffi.c eabi.S"
|
|
|
|
;;
|
|
|
|
|
|
|
|
metag-*-*)
|
|
|
|
TARGET=METAG; TARGETDIR=metag
|
|
|
|
SOURCES="ffi.c sysv.S"
|
|
|
|
;;
|
|
|
|
|
|
|
|
mips-sgi-irix5.* | mips-sgi-irix6.* | mips*-*-rtems*)
|
|
|
|
TARGET=MIPS; TARGETDIR=mips
|
|
|
|
;;
|
|
|
|
mips*-*linux* | mips*-*-openbsd*)
|
|
|
|
# Support 128-bit long double for NewABI.
|
|
|
|
HAVE_LONG_DOUBLE='defined(__mips64)'
|
|
|
|
TARGET=MIPS; TARGETDIR=mips
|
|
|
|
;;
|
|
|
|
|
|
|
|
nios2*-linux*)
|
|
|
|
TARGET=NIOS2; TARGETDIR=nios2
|
|
|
|
SOURCES="ffi.c sysv.S"
|
|
|
|
;;
|
|
|
|
|
|
|
|
or1k*-linux*)
|
|
|
|
TARGET=OR1K; TARGETDIR=or1k
|
|
|
|
SOURCES="ffi.c sysv.S"
|
|
|
|
;;
|
|
|
|
|
|
|
|
powerpc*-*-linux* | powerpc-*-sysv*)
|
|
|
|
TARGET=POWERPC; TARGETDIR=powerpc
|
|
|
|
HAVE_LONG_DOUBLE_VARIANT=1
|
|
|
|
;;
|
|
|
|
powerpc-*-amigaos*)
|
|
|
|
TARGET=POWERPC; TARGETDIR=powerpc
|
|
|
|
;;
|
|
|
|
powerpc-*-beos*)
|
|
|
|
TARGET=POWERPC; TARGETDIR=powerpc
|
|
|
|
;;
|
|
|
|
powerpc-*-darwin* | powerpc64-*-darwin*)
|
|
|
|
TARGET=POWERPC_DARWIN; TARGETDIR=powerpc
|
|
|
|
;;
|
|
|
|
powerpc-*-aix* | rs6000-*-aix*)
|
|
|
|
TARGET=POWERPC_AIX; TARGETDIR=powerpc
|
|
|
|
;;
|
|
|
|
powerpc-*-freebsd* | powerpc-*-openbsd*)
|
|
|
|
TARGET=POWERPC_FREEBSD; TARGETDIR=powerpc
|
|
|
|
HAVE_LONG_DOUBLE_VARIANT=1
|
|
|
|
;;
|
|
|
|
powerpc64-*-freebsd*)
|
|
|
|
TARGET=POWERPC; TARGETDIR=powerpc
|
|
|
|
;;
|
|
|
|
powerpc*-*-rtems*)
|
|
|
|
TARGET=POWERPC; TARGETDIR=powerpc
|
|
|
|
;;
|
|
|
|
|
2018-05-08 18:29:16 +08:00
|
|
|
riscv*-*)
|
|
|
|
TARGET=RISCV; TARGETDIR=riscv
|
|
|
|
SOURCES="ffi.c sysv.S"
|
|
|
|
;;
|
|
|
|
|
2015-01-13 00:19:59 +08:00
|
|
|
s390-*-* | s390x-*-*)
|
|
|
|
TARGET=S390; TARGETDIR=s390
|
|
|
|
SOURCES="ffi.c sysv.S"
|
|
|
|
;;
|
|
|
|
|
2015-01-14 07:30:33 +08:00
|
|
|
sh-*-* | sh[34]*-*-*)
|
2015-01-13 00:19:59 +08:00
|
|
|
TARGET=SH; TARGETDIR=sh
|
|
|
|
SOURCES="ffi.c sysv.S"
|
|
|
|
;;
|
|
|
|
sh64-*-* | sh5*-*-*)
|
|
|
|
TARGET=SH64; TARGETDIR=sh64
|
|
|
|
SOURCES="ffi.c sysv.S"
|
|
|
|
;;
|
|
|
|
|
|
|
|
sparc*-*-*)
|
|
|
|
TARGET=SPARC; TARGETDIR=sparc
|
|
|
|
SOURCES="ffi.c ffi64.c v8.S v9.S"
|
|
|
|
;;
|
|
|
|
|
|
|
|
tile*-*)
|
|
|
|
TARGET=TILE; TARGETDIR=tile
|
|
|
|
SOURCES="ffi.c tile.S"
|
|
|
|
;;
|
|
|
|
|
|
|
|
vax-*-*)
|
|
|
|
TARGET=VAX; TARGETDIR=vax
|
|
|
|
SOURCES="ffi.c elfbsd.S"
|
|
|
|
;;
|
|
|
|
|
|
|
|
xtensa*-*)
|
|
|
|
TARGET=XTENSA; TARGETDIR=xtensa
|
|
|
|
SOURCES="ffi.c sysv.S"
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
|
|
|
|
# ... but some of the cases above share configury.
|
|
|
|
case "${TARGET}" in
|
|
|
|
MIPS)
|
|
|
|
SOURCES="ffi.c o32.S n32.S"
|
|
|
|
;;
|
|
|
|
POWERPC)
|
|
|
|
SOURCES="ffi.c ffi_sysv.c ffi_linux64.c sysv.S ppc_closure.S"
|
|
|
|
SOURCES="${SOURCES} linux64.S linux64_closure.S"
|
|
|
|
;;
|
|
|
|
POWERPC_AIX)
|
|
|
|
SOURCES="ffi_darwin.c aix.S aix_closure.S"
|
|
|
|
;;
|
|
|
|
POWERPC_DARWIN)
|
|
|
|
SOURCES="ffi_darwin.c darwin.S darwin_closure.S"
|
|
|
|
;;
|
|
|
|
POWERPC_FREEBSD)
|
|
|
|
SOURCES="ffi.c ffi_sysv.c sysv.S ppc_closure.S"
|
|
|
|
;;
|
|
|
|
X86 | X86_FREEBSD | X86_WIN32)
|
|
|
|
SOURCES="ffi.c sysv.S"
|
|
|
|
;;
|
|
|
|
X86_64)
|
|
|
|
SOURCES="ffi64.c unix64.S"
|
|
|
|
;;
|
|
|
|
X86_WIN64)
|
|
|
|
SOURCES="ffiw64.c win64.S"
|
|
|
|
;;
|
|
|
|
X86_DARWIN)
|
|
|
|
SOURCES="darwin_c.c darwin.S"
|
|
|
|
;;
|
|
|
|
X86_64_DARWIN)
|
|
|
|
SOURCES="darwin64_c.c darwin64.S"
|
|
|
|
;;
|
2004-08-30 23:43:03 +08:00
|
|
|
esac
|
2015-01-13 00:19:59 +08:00
|
|
|
|
|
|
|
# If we failed to configure SOURCES, we can't do anything.
|
|
|
|
if test -z "${SOURCES}"; then
|
|
|
|
UNSUPPORTED=1
|
|
|
|
fi
|