summaryrefslogtreecommitdiffstats
path: root/js/src/ctypes/libffi/configure.host
diff options
context:
space:
mode:
Diffstat (limited to 'js/src/ctypes/libffi/configure.host')
-rw-r--r--js/src/ctypes/libffi/configure.host303
1 files changed, 303 insertions, 0 deletions
diff --git a/js/src/ctypes/libffi/configure.host b/js/src/ctypes/libffi/configure.host
new file mode 100644
index 0000000000..9a72cda87e
--- /dev/null
+++ b/js/src/ctypes/libffi/configure.host
@@ -0,0 +1,303 @@
+# configure.host
+#
+# This shell script handles all host based configuration for libffi.
+#
+
+# THIS TABLE IS SORTED. KEEP IT THAT WAY.
+# Most of the time we can define all the variables all at once...
+case "${host}" in
+ aarch64*-*-cygwin* | aarch64*-*-mingw* | aarch64*-*-win* )
+ TARGET=ARM_WIN64; TARGETDIR=aarch64
+ MSVC=1
+ ;;
+
+ 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*-*-cygwin* | arm*-*-mingw* | arm*-*-win* )
+ TARGET=ARM_WIN32; TARGETDIR=arm
+ MSVC=1
+ ;;
+
+ 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-*-cygwin* | i?86-*-mingw* | i?86-*-win* | i?86-*-os2* | i?86-*-interix* \
+ | x86_64-*-cygwin* | x86_64-*-mingw* | x86_64-*-win* )
+ TARGETDIR=x86
+ if test $ac_cv_sizeof_size_t = 4; then
+ TARGET=X86_WIN32
+ else
+ TARGET=X86_WIN64
+ fi
+ if test "${ax_cv_c_compiler_vendor}" = "microsoft"; then
+ MSVC=1
+ 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* | i?86-*-ios | x86_64-*-ios)
+ TARGETDIR=x86
+ if test $ac_cv_sizeof_size_t = 4; then
+ TARGET=X86_DARWIN
+ else
+ TARGET=X86_64
+ fi
+ ;;
+
+ i?86-*-* | x86_64-*-* | amd64-*)
+ TARGETDIR=x86
+ if test $ac_cv_sizeof_size_t = 4; then
+ case "$host" in
+ x86_64-*x32|x86_64-x32-*)
+ TARGET_X32=yes
+ TARGET=X86_64
+ ;;
+ *)
+ 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_X32=yes
+ TARGET=X86_64
+ else
+ TARGET=X86;
+ fi
+ rm -f conftest.*
+ ;;
+ 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*-*-*)
+ 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* | powerpc-*-netbsd*)
+ TARGET=POWERPC_FREEBSD; TARGETDIR=powerpc
+ HAVE_LONG_DOUBLE_VARIANT=1
+ ;;
+ powerpc64-*-freebsd*)
+ TARGET=POWERPC; TARGETDIR=powerpc
+ ;;
+ powerpc*-*-rtems*)
+ TARGET=POWERPC; TARGETDIR=powerpc
+ ;;
+
+ riscv*-*)
+ TARGET=RISCV; TARGETDIR=riscv
+ SOURCES="ffi.c sysv.S"
+ ;;
+
+ s390-*-* | s390x-*-*)
+ TARGET=S390; TARGETDIR=s390
+ SOURCES="ffi.c sysv.S"
+ ;;
+
+ sh-*-* | sh[34]*-*-*)
+ 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
+ ARM_WIN32)
+ SOURCES="ffi.c sysv_msvc_arm32.S"
+ ;;
+ ARM_WIN64)
+ SOURCES="ffi.c win64_armasm.S"
+ ;;
+ 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_DARWIN | X86_FREEBSD | X86_WIN32)
+ if test "$MSVC" = 1; then
+ SOURCES="ffi.c sysv_intel.S"
+ else
+ SOURCES="ffi.c sysv.S"
+ fi
+ ;;
+ X86_64)
+ if test x"$TARGET_X32" = xyes; then
+ SOURCES="ffi64.c unix64.S"
+ else
+ SOURCES="ffi64.c unix64.S ffiw64.c win64.S"
+ fi
+ ;;
+ X86_WIN64)
+ if test "$MSVC" = 1; then
+ SOURCES="ffiw64.c win64_intel.S"
+ else
+ SOURCES="ffiw64.c win64.S"
+ fi
+ ;;
+esac
+
+# If we failed to configure SOURCES, we can't do anything.
+if test -z "${SOURCES}"; then
+ UNSUPPORTED=1
+fi