3 # This shell script handles all host based configuration for libffi.
6 # THIS TABLE IS SORTED. KEEP IT THAT WAY.
7 # Most of the time we can define all the variables all at once...
9 aarch64*-*-cygwin* | aarch64*-*-mingw* | aarch64*-*-win* )
10 TARGET=ARM_WIN64; TARGETDIR=aarch64
11 if test "${ax_cv_c_compiler_vendor}" = "microsoft"; then
17 TARGET=AARCH64; TARGETDIR=aarch64
18 SOURCES="ffi.c sysv.S"
22 TARGET=ALPHA; TARGETDIR=alpha;
23 # Support 128-bit long double, changeable via command-line switch.
24 HAVE_LONG_DOUBLE='defined(__LONG_DOUBLE_128__)'
29 TARGET=ARC; TARGETDIR=arc
30 SOURCES="ffi.c arcompact.S"
33 arm*-*-cygwin* | arm*-*-mingw* | arm*-*-win* )
34 TARGET=ARM_WIN32; TARGETDIR=arm
39 TARGET=ARM; TARGETDIR=arm
40 SOURCES="ffi.c sysv.S"
44 TARGET=AVR32; TARGETDIR=avr32
45 SOURCES="ffi.c sysv.S"
49 TARGET=BFIN; TARGETDIR=bfin
50 SOURCES="ffi.c sysv.S"
54 TARGET=LIBFFI_CRIS; TARGETDIR=cris
55 SOURCES="ffi.c sysv.S"
59 TARGET=CSKY; TARGETDIR=csky
60 SOURCES="ffi.c sysv.S"
64 TARGET=FRV; TARGETDIR=frv
65 SOURCES="ffi.c eabi.S"
68 hppa*-*-linux* | parisc*-*-linux* | hppa*-*-openbsd*)
69 TARGET=PA_LINUX; TARGETDIR=pa
70 SOURCES="ffi.c linux.S"
73 TARGET=PA64_HPUX; TARGETDIR=pa
76 TARGET=PA_HPUX; TARGETDIR=pa
77 SOURCES="ffi.c hpux32.S"
80 i?86-*-freebsd* | i?86-*-openbsd*)
81 TARGET=X86_FREEBSD; TARGETDIR=x86
84 i?86-*-cygwin* | i?86-*-mingw* | i?86-*-win* | i?86-*-os2* | i?86-*-interix* \
85 | x86_64-*-cygwin* | x86_64-*-mingw* | x86_64-*-win* )
87 if test $ac_cv_sizeof_size_t = 4; then
92 if test "${ax_cv_c_compiler_vendor}" = "microsoft"; then
95 # All mingw/cygwin/win32 builds require -no-undefined for sharedlib.
96 # We must also check with_cross_host to decide if this is a native
97 # or cross-build and select where to install dlls appropriately.
98 if test -n "$with_cross_host" &&
99 test x"$with_cross_host" != x"no"; then
100 AM_LTLDFLAGS='-no-undefined -bindir "$(toolexeclibdir)"';
102 AM_LTLDFLAGS='-no-undefined -bindir "$(bindir)"';
106 i?86-*-darwin* | x86_64-*-darwin* | i?86-*-ios | x86_64-*-ios)
108 if test $ac_cv_sizeof_size_t = 4; then
115 i?86-*-* | x86_64-*-* | amd64-*)
117 if test $ac_cv_sizeof_size_t = 4; then
119 x86_64-*x32|x86_64-x32-*)
124 echo 'int foo (void) { return __x86_64__; }' > conftest.c
125 if $CC $CFLAGS -Werror -S conftest.c -o conftest.s > /dev/null 2>&1; then
140 TARGET=IA64; TARGETDIR=ia64
141 SOURCES="ffi.c unix.S"
145 TARGET=KVX; TARGETDIR=kvx
146 SOURCES="ffi.c sysv.S"
150 TARGET=M32R; TARGETDIR=m32r
151 SOURCES="ffi.c sysv.S"
155 TARGET=M68K; TARGETDIR=m68k
156 SOURCES="ffi.c sysv.S"
160 TARGET=M88K; TARGETDIR=m88k
161 SOURCES="ffi.c obsd.S"
165 TARGET=MICROBLAZE; TARGETDIR=microblaze
166 SOURCES="ffi.c sysv.S"
170 TARGET=MOXIE; TARGETDIR=moxie
171 SOURCES="ffi.c eabi.S"
175 TARGET=METAG; TARGETDIR=metag
176 SOURCES="ffi.c sysv.S"
179 mips-sgi-irix5.* | mips-sgi-irix6.* | mips*-*-rtems*)
180 TARGET=MIPS; TARGETDIR=mips
182 mips*-*linux* | mips*-*-openbsd* | mips*-*-freebsd*)
183 # Support 128-bit long double for NewABI.
184 HAVE_LONG_DOUBLE='defined(__mips64)'
185 TARGET=MIPS; TARGETDIR=mips
189 TARGET=NIOS2; TARGETDIR=nios2
190 SOURCES="ffi.c sysv.S"
194 TARGET=OR1K; TARGETDIR=or1k
195 SOURCES="ffi.c sysv.S"
198 powerpc*-*-linux* | powerpc-*-sysv*)
199 TARGET=POWERPC; TARGETDIR=powerpc
200 HAVE_LONG_DOUBLE_VARIANT=1
203 TARGET=POWERPC; TARGETDIR=powerpc
206 TARGET=POWERPC; TARGETDIR=powerpc
209 TARGET=POWERPC; TARGETDIR=powerpc
211 powerpc-*-darwin* | powerpc64-*-darwin*)
212 TARGET=POWERPC_DARWIN; TARGETDIR=powerpc
214 powerpc-*-aix* | rs6000-*-aix*)
215 TARGET=POWERPC_AIX; TARGETDIR=powerpc
217 powerpc-*-freebsd* | powerpc-*-openbsd* | powerpc-*-netbsd*)
218 TARGET=POWERPC_FREEBSD; TARGETDIR=powerpc
219 HAVE_LONG_DOUBLE_VARIANT=1
221 powerpcspe-*-freebsd*)
222 TARGET=POWERPC_FREEBSD; TARGETDIR=powerpc
223 CFLAGS="$CFLAGS -D__NO_FPRS__"
225 powerpc64-*-freebsd*)
226 TARGET=POWERPC; TARGETDIR=powerpc
229 TARGET=POWERPC; TARGETDIR=powerpc
233 TARGET=RISCV; TARGETDIR=riscv
234 SOURCES="ffi.c sysv.S"
237 s390-*-* | s390x-*-*)
238 TARGET=S390; TARGETDIR=s390
239 SOURCES="ffi.c sysv.S"
242 sh-*-* | sh[34]*-*-*)
243 TARGET=SH; TARGETDIR=sh
244 SOURCES="ffi.c sysv.S"
247 TARGET=SH64; TARGETDIR=sh64
248 SOURCES="ffi.c sysv.S"
252 TARGET=SPARC; TARGETDIR=sparc
253 SOURCES="ffi.c ffi64.c v8.S v9.S"
257 TARGET=TILE; TARGETDIR=tile
258 SOURCES="ffi.c tile.S"
262 TARGET=VAX; TARGETDIR=vax
263 SOURCES="ffi.c elfbsd.S"
267 TARGET=XTENSA; TARGETDIR=xtensa
268 SOURCES="ffi.c sysv.S"
272 # ... but some of the cases above share configury.
275 SOURCES="ffi.c sysv_msvc_arm32.S"
278 if test "$MSVC" = 1; then
279 SOURCES="ffi.c win64_armasm.S"
281 SOURCES="ffi.c sysv.S"
285 SOURCES="ffi.c o32.S n32.S"
288 SOURCES="ffi.c ffi_sysv.c ffi_linux64.c sysv.S ppc_closure.S"
289 SOURCES="${SOURCES} linux64.S linux64_closure.S"
292 SOURCES="ffi_darwin.c aix.S aix_closure.S"
295 SOURCES="ffi_darwin.c darwin.S darwin_closure.S"
298 SOURCES="ffi.c ffi_sysv.c sysv.S ppc_closure.S"
300 X86 | X86_DARWIN | X86_FREEBSD | X86_WIN32)
301 if test "$MSVC" = 1; then
302 SOURCES="ffi.c sysv_intel.S"
304 SOURCES="ffi.c sysv.S"
308 if test x"$TARGET_X32" = xyes; then
309 SOURCES="ffi64.c unix64.S"
311 SOURCES="ffi64.c unix64.S ffiw64.c win64.S"
315 if test "$MSVC" = 1; then
316 SOURCES="ffiw64.c win64_intel.S"
318 SOURCES="ffiw64.c win64.S"
323 # If we failed to configure SOURCES, we can't do anything.
324 if test -z "${SOURCES}"; then