configure.host 6.0 KB

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