configure.host 6.4 KB

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