Removing unnecessary instruction from ffi_call_unix64 (#588)
[platform/upstream/libffi.git] / configure.host
1 # configure.host
2 #
3 # This shell script handles all host based configuration for libffi.
4 #
5
6 # THIS TABLE IS SORTED.  KEEP IT THAT WAY.
7 # Most of the time we can define all the variables all at once...
8 case "${host}" in
9   aarch64*-*-cygwin* | aarch64*-*-mingw* | aarch64*-*-win* )
10         TARGET=ARM_WIN64; TARGETDIR=aarch64
11         if test "${ax_cv_c_compiler_vendor}" = "microsoft"; then
12           MSVC=1
13         fi
14         ;;
15
16   aarch64*-*-*)
17         TARGET=AARCH64; TARGETDIR=aarch64
18         SOURCES="ffi.c sysv.S"
19         ;;
20
21   alpha*-*-*)
22         TARGET=ALPHA; TARGETDIR=alpha;
23         # Support 128-bit long double, changeable via command-line switch.
24         HAVE_LONG_DOUBLE='defined(__LONG_DOUBLE_128__)'
25         SOURCES="ffi.c osf.S"
26         ;;
27
28   arc*-*-*)
29         TARGET=ARC; TARGETDIR=arc
30         SOURCES="ffi.c arcompact.S"
31         ;;
32
33   arm*-*-cygwin* | arm*-*-mingw* | arm*-*-win* )
34         TARGET=ARM_WIN32; TARGETDIR=arm
35         MSVC=1
36         ;;
37
38   arm*-*-*)
39         TARGET=ARM; TARGETDIR=arm
40         SOURCES="ffi.c sysv.S"
41         ;;
42
43   avr32*-*-*)
44         TARGET=AVR32; TARGETDIR=avr32
45         SOURCES="ffi.c sysv.S"
46         ;;
47
48   bfin*)
49         TARGET=BFIN; TARGETDIR=bfin
50         SOURCES="ffi.c sysv.S"
51         ;;
52
53   cris-*-*)
54         TARGET=LIBFFI_CRIS; TARGETDIR=cris
55         SOURCES="ffi.c sysv.S"
56         ;;
57
58   csky-*-*)
59         TARGET=CSKY; TARGETDIR=csky
60         SOURCES="ffi.c sysv.S"
61         ;;
62
63   frv-*-*)
64         TARGET=FRV; TARGETDIR=frv
65         SOURCES="ffi.c eabi.S"
66         ;;
67
68   hppa*-*-linux* | parisc*-*-linux* | hppa*-*-openbsd*)
69         TARGET=PA_LINUX; TARGETDIR=pa
70         SOURCES="ffi.c linux.S"
71         ;;
72   hppa*64-*-hpux*)
73         TARGET=PA64_HPUX; TARGETDIR=pa
74         ;;
75   hppa*-*-hpux*)
76         TARGET=PA_HPUX; TARGETDIR=pa
77         SOURCES="ffi.c hpux32.S"
78         ;;
79
80   i?86-*-freebsd* | i?86-*-openbsd*)
81         TARGET=X86_FREEBSD; TARGETDIR=x86
82         ;;
83
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* )
86         TARGETDIR=x86
87         if test $ac_cv_sizeof_size_t = 4; then
88           TARGET=X86_WIN32
89         else
90           TARGET=X86_WIN64
91         fi
92         if test "${ax_cv_c_compiler_vendor}" = "microsoft"; then
93           MSVC=1
94         fi
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)"';
101         else
102           AM_LTLDFLAGS='-no-undefined -bindir "$(bindir)"';
103         fi
104         ;;
105
106   i?86-*-darwin* | x86_64-*-darwin* | i?86-*-ios | x86_64-*-ios)
107         TARGETDIR=x86
108         if test $ac_cv_sizeof_size_t = 4; then
109           TARGET=X86_DARWIN
110         else
111           TARGET=X86_64
112         fi
113         ;;
114
115   i?86-*-* | x86_64-*-* | amd64-*)
116         TARGETDIR=x86
117         if test $ac_cv_sizeof_size_t = 4; then
118           case "$host" in
119             x86_64-*x32|x86_64-x32-*)
120               TARGET_X32=yes
121               TARGET=X86_64
122               ;;
123             *)
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
126                 TARGET_X32=yes
127                 TARGET=X86_64
128               else
129                 TARGET=X86;
130               fi
131               rm -f conftest.*
132               ;;
133           esac
134         else
135           TARGET=X86_64;
136         fi
137         ;;
138
139   ia64*-*-*)
140         TARGET=IA64; TARGETDIR=ia64
141         SOURCES="ffi.c unix.S"
142         ;;
143
144   kvx-*-*)
145         TARGET=KVX; TARGETDIR=kvx
146         SOURCES="ffi.c sysv.S"
147         ;;
148
149   m32r*-*-*)
150         TARGET=M32R; TARGETDIR=m32r
151         SOURCES="ffi.c sysv.S"
152         ;;
153
154   m68k-*-*)
155         TARGET=M68K; TARGETDIR=m68k
156         SOURCES="ffi.c sysv.S"
157         ;;
158
159   m88k-*-*)
160         TARGET=M88K; TARGETDIR=m88k
161         SOURCES="ffi.c obsd.S"
162         ;;
163
164   microblaze*-*-*)
165         TARGET=MICROBLAZE; TARGETDIR=microblaze
166         SOURCES="ffi.c sysv.S"
167         ;;
168
169   moxie-*-*)
170         TARGET=MOXIE; TARGETDIR=moxie
171         SOURCES="ffi.c eabi.S"
172         ;;
173
174   metag-*-*)
175         TARGET=METAG; TARGETDIR=metag
176         SOURCES="ffi.c sysv.S"
177         ;;
178
179   mips-sgi-irix5.* | mips-sgi-irix6.* | mips*-*-rtems*)
180         TARGET=MIPS; TARGETDIR=mips
181         ;;
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
186         ;;
187
188   nios2*-linux*)
189         TARGET=NIOS2; TARGETDIR=nios2
190         SOURCES="ffi.c sysv.S"
191         ;;
192
193   or1k*-*-*)
194         TARGET=OR1K; TARGETDIR=or1k
195         SOURCES="ffi.c sysv.S"
196         ;;
197
198   powerpc*-*-linux* | powerpc-*-sysv*)
199         TARGET=POWERPC; TARGETDIR=powerpc
200         HAVE_LONG_DOUBLE_VARIANT=1
201         ;;
202   powerpc-*-amigaos*)
203         TARGET=POWERPC; TARGETDIR=powerpc
204         ;;
205   powerpc-*-eabi*)
206         TARGET=POWERPC; TARGETDIR=powerpc
207         ;;
208   powerpc-*-beos*)
209         TARGET=POWERPC; TARGETDIR=powerpc
210         ;;
211   powerpc-*-darwin* | powerpc64-*-darwin*)
212         TARGET=POWERPC_DARWIN; TARGETDIR=powerpc
213         ;;
214   powerpc-*-aix* | rs6000-*-aix*)
215         TARGET=POWERPC_AIX; TARGETDIR=powerpc
216         ;;
217   powerpc-*-freebsd* | powerpc-*-openbsd* | powerpc-*-netbsd*)
218         TARGET=POWERPC_FREEBSD; TARGETDIR=powerpc
219         HAVE_LONG_DOUBLE_VARIANT=1
220         ;;
221   powerpcspe-*-freebsd*)
222         TARGET=POWERPC_FREEBSD; TARGETDIR=powerpc
223         CFLAGS="$CFLAGS -D__NO_FPRS__"
224         ;;
225   powerpc64-*-freebsd*)
226         TARGET=POWERPC; TARGETDIR=powerpc
227         ;;
228   powerpc*-*-rtems*)
229         TARGET=POWERPC; TARGETDIR=powerpc
230         ;;
231
232   riscv*-*)
233         TARGET=RISCV; TARGETDIR=riscv
234         SOURCES="ffi.c sysv.S"
235         ;;
236
237   s390-*-* | s390x-*-*)
238         TARGET=S390; TARGETDIR=s390
239         SOURCES="ffi.c sysv.S"
240         ;;
241
242   sh-*-* | sh[34]*-*-*)
243         TARGET=SH; TARGETDIR=sh
244         SOURCES="ffi.c sysv.S"
245         ;;
246   sh64-*-* | sh5*-*-*)
247         TARGET=SH64; TARGETDIR=sh64
248         SOURCES="ffi.c sysv.S"
249         ;;
250
251   sparc*-*-*)
252         TARGET=SPARC; TARGETDIR=sparc
253         SOURCES="ffi.c ffi64.c v8.S v9.S"
254         ;;
255
256   tile*-*)
257         TARGET=TILE; TARGETDIR=tile
258         SOURCES="ffi.c tile.S"
259         ;;
260
261   vax-*-*)
262         TARGET=VAX; TARGETDIR=vax
263         SOURCES="ffi.c elfbsd.S"
264         ;;
265
266   xtensa*-*)
267         TARGET=XTENSA; TARGETDIR=xtensa
268         SOURCES="ffi.c sysv.S"
269         ;;
270 esac
271
272 # ... but some of the cases above share configury.
273 case "${TARGET}" in
274   ARM_WIN32)
275         SOURCES="ffi.c sysv_msvc_arm32.S"
276         ;;
277   ARM_WIN64)
278         if test "$MSVC" = 1; then
279                 SOURCES="ffi.c win64_armasm.S"
280         else
281                 SOURCES="ffi.c sysv.S"
282         fi
283         ;;
284   MIPS)
285         SOURCES="ffi.c o32.S n32.S"
286         ;;
287   POWERPC)
288         SOURCES="ffi.c ffi_sysv.c ffi_linux64.c sysv.S ppc_closure.S"
289         SOURCES="${SOURCES} linux64.S linux64_closure.S"
290         ;;
291   POWERPC_AIX)
292         SOURCES="ffi_darwin.c aix.S aix_closure.S"
293         ;;
294   POWERPC_DARWIN)
295         SOURCES="ffi_darwin.c darwin.S darwin_closure.S"
296         ;;
297   POWERPC_FREEBSD)
298         SOURCES="ffi.c ffi_sysv.c sysv.S ppc_closure.S"
299         ;;
300   X86 | X86_DARWIN | X86_FREEBSD | X86_WIN32)
301         if test "$MSVC" = 1; then
302                 SOURCES="ffi.c sysv_intel.S"
303         else
304                 SOURCES="ffi.c sysv.S"
305         fi
306         ;;
307   X86_64)
308         if test x"$TARGET_X32" = xyes; then
309                 SOURCES="ffi64.c unix64.S"
310         else
311                 SOURCES="ffi64.c unix64.S ffiw64.c win64.S"
312         fi
313         ;;
314   X86_WIN64)
315         if test "$MSVC" = 1; then
316                 SOURCES="ffiw64.c win64_intel.S"
317         else
318                 SOURCES="ffiw64.c win64.S"
319         fi
320         ;;
321 esac
322
323 # If we failed to configure SOURCES, we can't do anything.
324 if test -z "${SOURCES}"; then
325   UNSUPPORTED=1
326 fi