packaging: pass '--enable-portable-binary' to configure
[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         MSVC=1
12         ;;
13
14   aarch64*-*-*)
15         TARGET=AARCH64; TARGETDIR=aarch64
16         SOURCES="ffi.c sysv.S"
17         ;;
18
19   alpha*-*-*)
20         TARGET=ALPHA; TARGETDIR=alpha;
21         # Support 128-bit long double, changeable via command-line switch.
22         HAVE_LONG_DOUBLE='defined(__LONG_DOUBLE_128__)'
23         SOURCES="ffi.c osf.S"
24         ;;
25
26   arc*-*-*)
27         TARGET=ARC; TARGETDIR=arc
28         SOURCES="ffi.c arcompact.S"
29         ;;
30
31   arm*-*-cygwin* | arm*-*-mingw* | arm*-*-win* )
32         TARGET=ARM_WIN32; TARGETDIR=arm
33         MSVC=1
34         ;;
35
36   arm*-*-*)
37         TARGET=ARM; TARGETDIR=arm
38         SOURCES="ffi.c sysv.S"
39         ;;
40
41   avr32*-*-*)
42         TARGET=AVR32; TARGETDIR=avr32
43         SOURCES="ffi.c sysv.S"
44         ;;
45
46   bfin*)
47         TARGET=BFIN; TARGETDIR=bfin
48         SOURCES="ffi.c sysv.S"
49         ;;
50
51   cris-*-*)
52         TARGET=LIBFFI_CRIS; TARGETDIR=cris
53         SOURCES="ffi.c sysv.S"
54         ;;
55
56   frv-*-*)
57         TARGET=FRV; TARGETDIR=frv
58         SOURCES="ffi.c eabi.S"
59         ;;
60
61   hppa*-*-linux* | parisc*-*-linux* | hppa*-*-openbsd*)
62         TARGET=PA_LINUX; TARGETDIR=pa
63         SOURCES="ffi.c linux.S"
64         ;;
65   hppa*64-*-hpux*)
66         TARGET=PA64_HPUX; TARGETDIR=pa
67         ;;
68   hppa*-*-hpux*)
69         TARGET=PA_HPUX; TARGETDIR=pa
70         SOURCES="ffi.c hpux32.S"
71         ;;
72
73   i?86-*-freebsd* | i?86-*-openbsd*)
74         TARGET=X86_FREEBSD; TARGETDIR=x86
75         ;;
76
77   i?86-*-cygwin* | i?86-*-mingw* | i?86-*-win* | i?86-*-os2* | i?86-*-interix* \
78   | x86_64-*-cygwin* | x86_64-*-mingw* | x86_64-*-win* )
79         TARGETDIR=x86
80         if test $ac_cv_sizeof_size_t = 4; then
81           TARGET=X86_WIN32
82         else
83           TARGET=X86_WIN64
84         fi
85         if test "${ax_cv_c_compiler_vendor}" = "microsoft"; then
86           MSVC=1
87         fi
88         # All mingw/cygwin/win32 builds require -no-undefined for sharedlib.
89         # We must also check with_cross_host to decide if this is a native
90         # or cross-build and select where to install dlls appropriately.
91         if test -n "$with_cross_host" &&
92            test x"$with_cross_host" != x"no"; then
93           AM_LTLDFLAGS='-no-undefined -bindir "$(toolexeclibdir)"';
94         else
95           AM_LTLDFLAGS='-no-undefined -bindir "$(bindir)"';
96         fi
97         ;;
98
99   i?86-*-darwin* | x86_64-*-darwin* | i?86-*-ios | x86_64-*-ios)
100         TARGETDIR=x86
101         if test $ac_cv_sizeof_size_t = 4; then
102           TARGET=X86_DARWIN
103         else
104           TARGET=X86_64
105         fi
106         ;;
107
108   i?86-*-* | x86_64-*-* | amd64-*)
109         TARGETDIR=x86
110         if test $ac_cv_sizeof_size_t = 4; then
111           case "$host" in
112             x86_64-*x32|x86_64-x32-*)
113               TARGET_X32=yes
114               TARGET=X86_64
115               ;;
116             *)
117               echo 'int foo (void) { return __x86_64__; }' > conftest.c
118               if $CC $CFLAGS -Werror -S conftest.c -o conftest.s > /dev/null 2>&1; then
119                 TARGET_X32=yes
120                 TARGET=X86_64
121               else
122                 TARGET=X86;
123               fi
124               rm -f conftest.*
125               ;;
126           esac
127         else
128           TARGET=X86_64;
129         fi
130         ;;
131
132   ia64*-*-*)
133         TARGET=IA64; TARGETDIR=ia64
134         SOURCES="ffi.c unix.S"
135         ;;
136
137   m32r*-*-*)
138         TARGET=M32R; TARGETDIR=m32r
139         SOURCES="ffi.c sysv.S"
140         ;;
141
142   m68k-*-*)
143         TARGET=M68K; TARGETDIR=m68k
144         SOURCES="ffi.c sysv.S"
145         ;;
146
147   m88k-*-*)
148         TARGET=M88K; TARGETDIR=m88k
149         SOURCES="ffi.c obsd.S"
150         ;;
151
152   microblaze*-*-*)
153         TARGET=MICROBLAZE; TARGETDIR=microblaze
154         SOURCES="ffi.c sysv.S"
155         ;;
156
157   moxie-*-*)
158         TARGET=MOXIE; TARGETDIR=moxie
159         SOURCES="ffi.c eabi.S"
160         ;;
161
162   metag-*-*)
163         TARGET=METAG; TARGETDIR=metag
164         SOURCES="ffi.c sysv.S"
165         ;;
166
167   mips-sgi-irix5.* | mips-sgi-irix6.* | mips*-*-rtems*)
168         TARGET=MIPS; TARGETDIR=mips
169         ;;
170   mips*-*linux* | mips*-*-openbsd*)
171         # Support 128-bit long double for NewABI.
172         HAVE_LONG_DOUBLE='defined(__mips64)'
173         TARGET=MIPS; TARGETDIR=mips
174         ;;
175
176   nios2*-linux*)
177         TARGET=NIOS2; TARGETDIR=nios2
178         SOURCES="ffi.c sysv.S"
179         ;;
180
181   or1k*-*-*)
182         TARGET=OR1K; TARGETDIR=or1k
183         SOURCES="ffi.c sysv.S"
184         ;;
185
186   powerpc*-*-linux* | powerpc-*-sysv*)
187         TARGET=POWERPC; TARGETDIR=powerpc
188         HAVE_LONG_DOUBLE_VARIANT=1
189         ;;
190   powerpc-*-amigaos*)
191         TARGET=POWERPC; TARGETDIR=powerpc
192         ;;
193   powerpc-*-beos*)
194         TARGET=POWERPC; TARGETDIR=powerpc
195         ;;
196   powerpc-*-darwin* | powerpc64-*-darwin*)
197         TARGET=POWERPC_DARWIN; TARGETDIR=powerpc
198         ;;
199   powerpc-*-aix* | rs6000-*-aix*)
200         TARGET=POWERPC_AIX; TARGETDIR=powerpc
201         ;;
202   powerpc-*-freebsd* | powerpc-*-openbsd* | powerpc-*-netbsd*)
203         TARGET=POWERPC_FREEBSD; TARGETDIR=powerpc
204         HAVE_LONG_DOUBLE_VARIANT=1
205         ;;
206   powerpc64-*-freebsd*)
207         TARGET=POWERPC; TARGETDIR=powerpc
208         ;;
209   powerpc*-*-rtems*)
210         TARGET=POWERPC; TARGETDIR=powerpc
211         ;;
212
213   riscv*-*)
214         TARGET=RISCV; TARGETDIR=riscv
215         SOURCES="ffi.c sysv.S"
216         ;;
217
218   s390-*-* | s390x-*-*)
219         TARGET=S390; TARGETDIR=s390
220         SOURCES="ffi.c sysv.S"
221         ;;
222
223   sh-*-* | sh[34]*-*-*)
224         TARGET=SH; TARGETDIR=sh
225         SOURCES="ffi.c sysv.S"
226         ;;
227   sh64-*-* | sh5*-*-*)
228         TARGET=SH64; TARGETDIR=sh64
229         SOURCES="ffi.c sysv.S"
230         ;;
231
232   sparc*-*-*)
233         TARGET=SPARC; TARGETDIR=sparc
234         SOURCES="ffi.c ffi64.c v8.S v9.S"
235         ;;
236
237   tile*-*)
238         TARGET=TILE; TARGETDIR=tile
239         SOURCES="ffi.c tile.S"
240         ;;
241
242   vax-*-*)
243         TARGET=VAX; TARGETDIR=vax
244         SOURCES="ffi.c elfbsd.S"
245         ;;
246
247   xtensa*-*)
248         TARGET=XTENSA; TARGETDIR=xtensa
249         SOURCES="ffi.c sysv.S"
250         ;;
251 esac
252
253 # ... but some of the cases above share configury.
254 case "${TARGET}" in
255   ARM_WIN32)
256         SOURCES="ffi.c sysv_msvc_arm32.S"
257         ;;
258   ARM_WIN64)
259         SOURCES="ffi.c win64_armasm.S"
260         ;;
261   MIPS)
262         SOURCES="ffi.c o32.S n32.S"
263         ;;
264   POWERPC)
265         SOURCES="ffi.c ffi_sysv.c ffi_linux64.c sysv.S ppc_closure.S"
266         SOURCES="${SOURCES} linux64.S linux64_closure.S"
267         ;;
268   POWERPC_AIX)
269         SOURCES="ffi_darwin.c aix.S aix_closure.S"
270         ;;
271   POWERPC_DARWIN)
272         SOURCES="ffi_darwin.c darwin.S darwin_closure.S"
273         ;;
274   POWERPC_FREEBSD)
275         SOURCES="ffi.c ffi_sysv.c sysv.S ppc_closure.S"
276         ;;
277   X86 | X86_DARWIN | X86_FREEBSD | X86_WIN32)
278         if test "$MSVC" = 1; then
279                 SOURCES="ffi.c sysv_intel.S"
280         else
281                 SOURCES="ffi.c sysv.S"
282         fi
283         ;;
284   X86_64)
285         if test x"$TARGET_X32" = xyes; then
286                 SOURCES="ffi64.c unix64.S"
287         else
288                 SOURCES="ffi64.c unix64.S ffiw64.c win64.S"
289         fi
290         ;;
291   X86_WIN64)
292         if test "$MSVC" = 1; then
293                 SOURCES="ffiw64.c win64_intel.S"
294         else
295                 SOURCES="ffiw64.c win64.S"
296         fi
297         ;;
298 esac
299
300 # If we failed to configure SOURCES, we can't do anything.
301 if test -z "${SOURCES}"; then
302   UNSUPPORTED=1
303 fi