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