ffi 1.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (530) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +22 -0
  3. data/.gitmodules +3 -0
  4. data/.travis.yml +43 -0
  5. data/.yardopts +5 -0
  6. data/CHANGELOG.md +98 -0
  7. data/COPYING +49 -0
  8. data/Gemfile +15 -0
  9. data/LICENSE +24 -0
  10. data/LICENSE.SPECS +22 -0
  11. data/README.md +112 -0
  12. data/Rakefile +268 -0
  13. data/appveyor.yml +22 -0
  14. data/ext/ffi_c/AbstractMemory.c +1109 -0
  15. data/ext/ffi_c/AbstractMemory.h +175 -0
  16. data/ext/ffi_c/ArrayType.c +162 -0
  17. data/ext/ffi_c/ArrayType.h +59 -0
  18. data/ext/ffi_c/Buffer.c +365 -0
  19. data/ext/ffi_c/Call.c +520 -0
  20. data/ext/ffi_c/Call.h +110 -0
  21. data/ext/ffi_c/ClosurePool.c +283 -0
  22. data/ext/ffi_c/ClosurePool.h +57 -0
  23. data/ext/ffi_c/DataConverter.c +91 -0
  24. data/ext/ffi_c/DynamicLibrary.c +339 -0
  25. data/ext/ffi_c/DynamicLibrary.h +98 -0
  26. data/ext/ffi_c/Function.c +1001 -0
  27. data/ext/ffi_c/Function.h +87 -0
  28. data/ext/ffi_c/FunctionInfo.c +271 -0
  29. data/ext/ffi_c/LastError.c +229 -0
  30. data/ext/ffi_c/LastError.h +47 -0
  31. data/ext/ffi_c/LongDouble.c +63 -0
  32. data/ext/ffi_c/LongDouble.h +51 -0
  33. data/ext/ffi_c/MappedType.c +168 -0
  34. data/ext/ffi_c/MappedType.h +59 -0
  35. data/ext/ffi_c/MemoryPointer.c +197 -0
  36. data/ext/ffi_c/MemoryPointer.h +53 -0
  37. data/ext/ffi_c/MethodHandle.c +358 -0
  38. data/ext/ffi_c/MethodHandle.h +55 -0
  39. data/ext/ffi_c/Platform.c +129 -0
  40. data/ext/ffi_c/Platform.h +45 -0
  41. data/ext/ffi_c/Pointer.c +508 -0
  42. data/ext/ffi_c/Pointer.h +63 -0
  43. data/ext/ffi_c/Struct.c +829 -0
  44. data/ext/ffi_c/Struct.h +106 -0
  45. data/ext/ffi_c/StructByReference.c +190 -0
  46. data/ext/ffi_c/StructByReference.h +50 -0
  47. data/ext/ffi_c/StructByValue.c +150 -0
  48. data/ext/ffi_c/StructByValue.h +55 -0
  49. data/ext/ffi_c/StructLayout.c +698 -0
  50. data/ext/ffi_c/Thread.c +353 -0
  51. data/ext/ffi_c/Thread.h +95 -0
  52. data/ext/ffi_c/Type.c +397 -0
  53. data/ext/ffi_c/Type.h +62 -0
  54. data/ext/ffi_c/Types.c +139 -0
  55. data/ext/ffi_c/Types.h +89 -0
  56. data/ext/ffi_c/Variadic.c +304 -0
  57. data/ext/ffi_c/compat.h +78 -0
  58. data/ext/ffi_c/extconf.rb +72 -0
  59. data/ext/ffi_c/ffi.c +98 -0
  60. data/ext/ffi_c/libffi.bsd.mk +40 -0
  61. data/ext/ffi_c/libffi.darwin.mk +105 -0
  62. data/ext/ffi_c/libffi.gnu.mk +32 -0
  63. data/ext/ffi_c/libffi.mk +18 -0
  64. data/ext/ffi_c/libffi.vc.mk +26 -0
  65. data/ext/ffi_c/libffi.vc64.mk +26 -0
  66. data/ext/ffi_c/libffi/.appveyor.yml +50 -0
  67. data/ext/ffi_c/libffi/.github/issue_template.md +10 -0
  68. data/ext/ffi_c/libffi/.gitignore +38 -0
  69. data/ext/ffi_c/libffi/.travis.yml +34 -0
  70. data/ext/ffi_c/libffi/.travis/ar-lib +270 -0
  71. data/ext/ffi_c/libffi/.travis/build.sh +34 -0
  72. data/ext/ffi_c/libffi/.travis/compile +351 -0
  73. data/ext/ffi_c/libffi/.travis/install.sh +22 -0
  74. data/ext/ffi_c/libffi/.travis/moxie-sim.exp +60 -0
  75. data/ext/ffi_c/libffi/.travis/site.exp +18 -0
  76. data/ext/ffi_c/libffi/ChangeLog.libffi +584 -0
  77. data/ext/ffi_c/libffi/ChangeLog.libffi-3.1 +6000 -0
  78. data/ext/ffi_c/libffi/ChangeLog.libgcj +40 -0
  79. data/ext/ffi_c/libffi/ChangeLog.v1 +764 -0
  80. data/ext/ffi_c/libffi/LICENSE +21 -0
  81. data/ext/ffi_c/libffi/LICENSE-BUILDTOOLS +352 -0
  82. data/ext/ffi_c/libffi/Makefile.am +166 -0
  83. data/ext/ffi_c/libffi/README.md +461 -0
  84. data/ext/ffi_c/libffi/acinclude.m4 +479 -0
  85. data/ext/ffi_c/libffi/autogen.sh +2 -0
  86. data/ext/ffi_c/libffi/config.guess +1466 -0
  87. data/ext/ffi_c/libffi/config.sub +1836 -0
  88. data/ext/ffi_c/libffi/configure.ac +390 -0
  89. data/ext/ffi_c/libffi/configure.host +289 -0
  90. data/ext/ffi_c/libffi/generate-darwin-source-and-headers.py +203 -0
  91. data/ext/ffi_c/libffi/include/Makefile.am +9 -0
  92. data/ext/ffi_c/libffi/include/ffi.h.in +511 -0
  93. data/ext/ffi_c/libffi/include/ffi_cfi.h +55 -0
  94. data/ext/ffi_c/libffi/include/ffi_common.h +149 -0
  95. data/ext/ffi_c/libffi/libffi.map.in +80 -0
  96. data/ext/ffi_c/libffi/libffi.pc.in +11 -0
  97. data/ext/ffi_c/libffi/libffi.xcodeproj/project.pbxproj +1043 -0
  98. data/ext/ffi_c/libffi/libtool-version +29 -0
  99. data/ext/ffi_c/libffi/m4/asmcfi.m4 +13 -0
  100. data/ext/ffi_c/libffi/m4/ax_append_flag.m4 +71 -0
  101. data/ext/ffi_c/libffi/m4/ax_cc_maxopt.m4 +194 -0
  102. data/ext/ffi_c/libffi/m4/ax_cflags_warn_all.m4 +122 -0
  103. data/ext/ffi_c/libffi/m4/ax_check_compile_flag.m4 +74 -0
  104. data/ext/ffi_c/libffi/m4/ax_compiler_vendor.m4 +87 -0
  105. data/ext/ffi_c/libffi/m4/ax_configure_args.m4 +70 -0
  106. data/ext/ffi_c/libffi/m4/ax_enable_builddir.m4 +302 -0
  107. data/ext/ffi_c/libffi/m4/ax_gcc_archflag.m4 +263 -0
  108. data/ext/ffi_c/libffi/m4/ax_gcc_x86_cpuid.m4 +89 -0
  109. data/ext/ffi_c/libffi/m4/ax_require_defined.m4 +37 -0
  110. data/ext/ffi_c/libffi/man/Makefile.am +8 -0
  111. data/ext/ffi_c/libffi/man/ffi.3 +41 -0
  112. data/ext/ffi_c/libffi/man/ffi_call.3 +103 -0
  113. data/ext/ffi_c/libffi/man/ffi_prep_cif.3 +68 -0
  114. data/ext/ffi_c/libffi/man/ffi_prep_cif_var.3 +73 -0
  115. data/ext/ffi_c/libffi/msvcc.sh +328 -0
  116. data/ext/ffi_c/libffi/src/aarch64/ffi.c +941 -0
  117. data/ext/ffi_c/libffi/src/aarch64/ffitarget.h +81 -0
  118. data/ext/ffi_c/libffi/src/aarch64/internal.h +67 -0
  119. data/ext/ffi_c/libffi/src/aarch64/sysv.S +438 -0
  120. data/ext/ffi_c/libffi/src/alpha/ffi.c +521 -0
  121. data/ext/ffi_c/libffi/src/alpha/ffitarget.h +57 -0
  122. data/ext/ffi_c/libffi/src/alpha/internal.h +23 -0
  123. data/ext/ffi_c/libffi/src/alpha/osf.S +282 -0
  124. data/ext/ffi_c/libffi/src/arc/arcompact.S +135 -0
  125. data/ext/ffi_c/libffi/src/arc/ffi.c +266 -0
  126. data/ext/ffi_c/libffi/src/arc/ffitarget.h +53 -0
  127. data/ext/ffi_c/libffi/src/arm/ffi.c +819 -0
  128. data/ext/ffi_c/libffi/src/arm/ffitarget.h +82 -0
  129. data/ext/ffi_c/libffi/src/arm/internal.h +7 -0
  130. data/ext/ffi_c/libffi/src/arm/sysv.S +383 -0
  131. data/ext/ffi_c/libffi/src/avr32/ffi.c +423 -0
  132. data/ext/ffi_c/libffi/src/avr32/ffitarget.h +55 -0
  133. data/ext/ffi_c/libffi/src/avr32/sysv.S +208 -0
  134. data/ext/ffi_c/libffi/src/bfin/ffi.c +196 -0
  135. data/ext/ffi_c/libffi/src/bfin/ffitarget.h +43 -0
  136. data/ext/ffi_c/libffi/src/bfin/sysv.S +179 -0
  137. data/ext/ffi_c/libffi/src/closures.c +966 -0
  138. data/ext/ffi_c/libffi/src/cris/ffi.c +386 -0
  139. data/ext/ffi_c/libffi/src/cris/ffitarget.h +56 -0
  140. data/ext/ffi_c/libffi/src/cris/sysv.S +215 -0
  141. data/ext/ffi_c/libffi/src/debug.c +64 -0
  142. data/ext/ffi_c/libffi/src/dlmalloc.c +5166 -0
  143. data/ext/ffi_c/libffi/src/frv/eabi.S +128 -0
  144. data/ext/ffi_c/libffi/src/frv/ffi.c +292 -0
  145. data/ext/ffi_c/libffi/src/frv/ffitarget.h +62 -0
  146. data/ext/ffi_c/libffi/src/ia64/ffi.c +604 -0
  147. data/ext/ffi_c/libffi/src/ia64/ffitarget.h +56 -0
  148. data/ext/ffi_c/libffi/src/ia64/ia64_flags.h +40 -0
  149. data/ext/ffi_c/libffi/src/ia64/unix.S +567 -0
  150. data/ext/ffi_c/libffi/src/java_raw_api.c +374 -0
  151. data/ext/ffi_c/libffi/src/m32r/ffi.c +232 -0
  152. data/ext/ffi_c/libffi/src/m32r/ffitarget.h +53 -0
  153. data/ext/ffi_c/libffi/src/m32r/sysv.S +121 -0
  154. data/ext/ffi_c/libffi/src/m68k/ffi.c +362 -0
  155. data/ext/ffi_c/libffi/src/m68k/ffitarget.h +54 -0
  156. data/ext/ffi_c/libffi/src/m68k/sysv.S +357 -0
  157. data/ext/ffi_c/libffi/src/m88k/ffi.c +400 -0
  158. data/ext/ffi_c/libffi/src/m88k/ffitarget.h +49 -0
  159. data/ext/ffi_c/libffi/src/m88k/obsd.S +209 -0
  160. data/ext/ffi_c/libffi/src/metag/ffi.c +330 -0
  161. data/ext/ffi_c/libffi/src/metag/ffitarget.h +53 -0
  162. data/ext/ffi_c/libffi/src/metag/sysv.S +311 -0
  163. data/ext/ffi_c/libffi/src/microblaze/ffi.c +321 -0
  164. data/ext/ffi_c/libffi/src/microblaze/ffitarget.h +53 -0
  165. data/ext/ffi_c/libffi/src/microblaze/sysv.S +302 -0
  166. data/ext/ffi_c/libffi/src/mips/ffi.c +1130 -0
  167. data/ext/ffi_c/libffi/src/mips/ffitarget.h +244 -0
  168. data/ext/ffi_c/libffi/src/mips/n32.S +663 -0
  169. data/ext/ffi_c/libffi/src/mips/o32.S +502 -0
  170. data/ext/ffi_c/libffi/src/moxie/eabi.S +101 -0
  171. data/ext/ffi_c/libffi/src/moxie/ffi.c +285 -0
  172. data/ext/ffi_c/libffi/src/moxie/ffitarget.h +52 -0
  173. data/ext/ffi_c/libffi/src/nios2/ffi.c +304 -0
  174. data/ext/ffi_c/libffi/src/nios2/ffitarget.h +52 -0
  175. data/ext/ffi_c/libffi/src/nios2/sysv.S +136 -0
  176. data/ext/ffi_c/libffi/src/or1k/ffi.c +328 -0
  177. data/ext/ffi_c/libffi/src/or1k/ffitarget.h +58 -0
  178. data/ext/ffi_c/libffi/src/or1k/sysv.S +107 -0
  179. data/ext/ffi_c/libffi/src/pa/ffi.c +719 -0
  180. data/ext/ffi_c/libffi/src/pa/ffitarget.h +85 -0
  181. data/ext/ffi_c/libffi/src/pa/hpux32.S +368 -0
  182. data/ext/ffi_c/libffi/src/pa/linux.S +357 -0
  183. data/ext/ffi_c/libffi/src/powerpc/aix.S +566 -0
  184. data/ext/ffi_c/libffi/src/powerpc/aix_closure.S +694 -0
  185. data/ext/ffi_c/libffi/src/powerpc/asm.h +125 -0
  186. data/ext/ffi_c/libffi/src/powerpc/darwin.S +378 -0
  187. data/ext/ffi_c/libffi/src/powerpc/darwin_closure.S +571 -0
  188. data/ext/ffi_c/libffi/src/powerpc/ffi.c +173 -0
  189. data/ext/ffi_c/libffi/src/powerpc/ffi_darwin.c +1440 -0
  190. data/ext/ffi_c/libffi/src/powerpc/ffi_linux64.c +974 -0
  191. data/ext/ffi_c/libffi/src/powerpc/ffi_powerpc.h +94 -0
  192. data/ext/ffi_c/libffi/src/powerpc/ffi_sysv.c +923 -0
  193. data/ext/ffi_c/libffi/src/powerpc/ffitarget.h +198 -0
  194. data/ext/ffi_c/libffi/src/powerpc/linux64.S +228 -0
  195. data/ext/ffi_c/libffi/src/powerpc/linux64_closure.S +488 -0
  196. data/ext/ffi_c/libffi/src/powerpc/ppc_closure.S +397 -0
  197. data/ext/ffi_c/libffi/src/powerpc/sysv.S +175 -0
  198. data/ext/ffi_c/libffi/src/prep_cif.c +261 -0
  199. data/ext/ffi_c/libffi/src/raw_api.c +267 -0
  200. data/ext/ffi_c/libffi/src/riscv/ffi.c +445 -0
  201. data/ext/ffi_c/libffi/src/riscv/ffitarget.h +68 -0
  202. data/ext/ffi_c/libffi/src/riscv/sysv.S +214 -0
  203. data/ext/ffi_c/libffi/src/s390/ffi.c +756 -0
  204. data/ext/ffi_c/libffi/src/s390/ffitarget.h +70 -0
  205. data/ext/ffi_c/libffi/src/s390/internal.h +11 -0
  206. data/ext/ffi_c/libffi/src/s390/sysv.S +325 -0
  207. data/ext/ffi_c/libffi/src/sh/ffi.c +717 -0
  208. data/ext/ffi_c/libffi/src/sh/ffitarget.h +54 -0
  209. data/ext/ffi_c/libffi/src/sh/sysv.S +850 -0
  210. data/ext/ffi_c/libffi/src/sh64/ffi.c +469 -0
  211. data/ext/ffi_c/libffi/src/sh64/ffitarget.h +58 -0
  212. data/ext/ffi_c/libffi/src/sh64/sysv.S +539 -0
  213. data/ext/ffi_c/libffi/src/sparc/ffi.c +468 -0
  214. data/ext/ffi_c/libffi/src/sparc/ffi64.c +608 -0
  215. data/ext/ffi_c/libffi/src/sparc/ffitarget.h +81 -0
  216. data/ext/ffi_c/libffi/src/sparc/internal.h +26 -0
  217. data/ext/ffi_c/libffi/src/sparc/v8.S +443 -0
  218. data/ext/ffi_c/libffi/src/sparc/v9.S +440 -0
  219. data/ext/ffi_c/libffi/src/tile/ffi.c +355 -0
  220. data/ext/ffi_c/libffi/src/tile/ffitarget.h +65 -0
  221. data/ext/ffi_c/libffi/src/tile/tile.S +360 -0
  222. data/ext/ffi_c/libffi/src/types.c +108 -0
  223. data/ext/ffi_c/libffi/src/vax/elfbsd.S +195 -0
  224. data/ext/ffi_c/libffi/src/vax/ffi.c +276 -0
  225. data/ext/ffi_c/libffi/src/vax/ffitarget.h +49 -0
  226. data/ext/ffi_c/libffi/src/x86/asmnames.h +30 -0
  227. data/ext/ffi_c/libffi/src/x86/ffi.c +753 -0
  228. data/ext/ffi_c/libffi/src/x86/ffi64.c +884 -0
  229. data/ext/ffi_c/libffi/src/x86/ffitarget.h +147 -0
  230. data/ext/ffi_c/libffi/src/x86/ffiw64.c +308 -0
  231. data/ext/ffi_c/libffi/src/x86/internal.h +29 -0
  232. data/ext/ffi_c/libffi/src/x86/internal64.h +22 -0
  233. data/ext/ffi_c/libffi/src/x86/sysv.S +1043 -0
  234. data/ext/ffi_c/libffi/src/x86/unix64.S +525 -0
  235. data/ext/ffi_c/libffi/src/x86/win64.S +232 -0
  236. data/ext/ffi_c/libffi/src/x86/win64_intel.S +237 -0
  237. data/ext/ffi_c/libffi/src/xtensa/ffi.c +298 -0
  238. data/ext/ffi_c/libffi/src/xtensa/ffitarget.h +53 -0
  239. data/ext/ffi_c/libffi/src/xtensa/sysv.S +258 -0
  240. data/ext/ffi_c/libffi/stamp-h.in +1 -0
  241. data/ext/ffi_c/libffi/testsuite/Makefile.am +117 -0
  242. data/ext/ffi_c/libffi/testsuite/config/default.exp +1 -0
  243. data/ext/ffi_c/libffi/testsuite/lib/libffi.exp +636 -0
  244. data/ext/ffi_c/libffi/testsuite/lib/target-libpath.exp +283 -0
  245. data/ext/ffi_c/libffi/testsuite/lib/wrapper.exp +45 -0
  246. data/ext/ffi_c/libffi/testsuite/libffi.bhaible/Makefile +28 -0
  247. data/ext/ffi_c/libffi/testsuite/libffi.bhaible/README +78 -0
  248. data/ext/ffi_c/libffi/testsuite/libffi.bhaible/alignof.h +50 -0
  249. data/ext/ffi_c/libffi/testsuite/libffi.bhaible/bhaible.exp +58 -0
  250. data/ext/ffi_c/libffi/testsuite/libffi.bhaible/test-call.c +1745 -0
  251. data/ext/ffi_c/libffi/testsuite/libffi.bhaible/test-callback.c +2885 -0
  252. data/ext/ffi_c/libffi/testsuite/libffi.bhaible/testcases.c +743 -0
  253. data/ext/ffi_c/libffi/testsuite/libffi.call/align_mixed.c +46 -0
  254. data/ext/ffi_c/libffi/testsuite/libffi.call/align_stdcall.c +46 -0
  255. data/ext/ffi_c/libffi/testsuite/libffi.call/call.exp +43 -0
  256. data/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn0.c +89 -0
  257. data/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn1.c +81 -0
  258. data/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn2.c +81 -0
  259. data/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn3.c +82 -0
  260. data/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn4.c +89 -0
  261. data/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn5.c +92 -0
  262. data/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn6.c +90 -0
  263. data/ext/ffi_c/libffi/testsuite/libffi.call/closure_loc_fn0.c +95 -0
  264. data/ext/ffi_c/libffi/testsuite/libffi.call/closure_simple.c +55 -0
  265. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_12byte.c +94 -0
  266. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_16byte.c +95 -0
  267. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_18byte.c +96 -0
  268. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_19byte.c +102 -0
  269. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_1_1byte.c +89 -0
  270. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_20byte.c +91 -0
  271. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_20byte1.c +93 -0
  272. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_24byte.c +113 -0
  273. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_2byte.c +90 -0
  274. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_3_1byte.c +95 -0
  275. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_3byte1.c +90 -0
  276. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_3byte2.c +90 -0
  277. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_3float.c +95 -0
  278. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_4_1byte.c +98 -0
  279. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_4byte.c +90 -0
  280. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_5_1_byte.c +109 -0
  281. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_5byte.c +98 -0
  282. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_64byte.c +124 -0
  283. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_6_1_byte.c +113 -0
  284. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_6byte.c +99 -0
  285. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_7_1_byte.c +117 -0
  286. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_7byte.c +97 -0
  287. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_8byte.c +88 -0
  288. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_9byte1.c +90 -0
  289. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_9byte2.c +91 -0
  290. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_double.c +93 -0
  291. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_float.c +91 -0
  292. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_longdouble.c +92 -0
  293. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_longdouble_split.c +132 -0
  294. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_longdouble_split2.c +115 -0
  295. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_pointer.c +95 -0
  296. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_sint16.c +91 -0
  297. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_sint32.c +91 -0
  298. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_sint64.c +92 -0
  299. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_uint16.c +91 -0
  300. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_uint32.c +91 -0
  301. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_uint64.c +93 -0
  302. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_dbls_struct.c +66 -0
  303. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_double.c +43 -0
  304. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_double_va.c +61 -0
  305. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_float.c +42 -0
  306. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_longdouble.c +105 -0
  307. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_longdouble_va.c +61 -0
  308. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_many_mixed_args.c +70 -0
  309. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_many_mixed_float_double.c +55 -0
  310. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_schar.c +74 -0
  311. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_sshort.c +74 -0
  312. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_sshortchar.c +86 -0
  313. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_uchar.c +91 -0
  314. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_ushort.c +74 -0
  315. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_ushortchar.c +86 -0
  316. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_pointer.c +74 -0
  317. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_pointer_stack.c +142 -0
  318. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_schar.c +44 -0
  319. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_sint.c +42 -0
  320. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_sshort.c +42 -0
  321. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_struct_va1.c +114 -0
  322. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_uchar.c +42 -0
  323. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_uchar_va.c +44 -0
  324. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_uint.c +43 -0
  325. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_uint_va.c +45 -0
  326. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_ulong_va.c +45 -0
  327. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_ulonglong.c +47 -0
  328. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_ushort.c +43 -0
  329. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_ushort_va.c +44 -0
  330. data/ext/ffi_c/libffi/testsuite/libffi.call/err_bad_abi.c +36 -0
  331. data/ext/ffi_c/libffi/testsuite/libffi.call/err_bad_typedef.c +26 -0
  332. data/ext/ffi_c/libffi/testsuite/libffi.call/ffitest.h +138 -0
  333. data/ext/ffi_c/libffi/testsuite/libffi.call/float.c +59 -0
  334. data/ext/ffi_c/libffi/testsuite/libffi.call/float1.c +60 -0
  335. data/ext/ffi_c/libffi/testsuite/libffi.call/float2.c +60 -0
  336. data/ext/ffi_c/libffi/testsuite/libffi.call/float3.c +74 -0
  337. data/ext/ffi_c/libffi/testsuite/libffi.call/float4.c +62 -0
  338. data/ext/ffi_c/libffi/testsuite/libffi.call/float_va.c +107 -0
  339. data/ext/ffi_c/libffi/testsuite/libffi.call/huge_struct.c +341 -0
  340. data/ext/ffi_c/libffi/testsuite/libffi.call/many.c +59 -0
  341. data/ext/ffi_c/libffi/testsuite/libffi.call/many2.c +57 -0
  342. data/ext/ffi_c/libffi/testsuite/libffi.call/many_double.c +70 -0
  343. data/ext/ffi_c/libffi/testsuite/libffi.call/many_mixed.c +78 -0
  344. data/ext/ffi_c/libffi/testsuite/libffi.call/negint.c +52 -0
  345. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct.c +152 -0
  346. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct1.c +161 -0
  347. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct10.c +134 -0
  348. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct11.c +121 -0
  349. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct2.c +110 -0
  350. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct3.c +111 -0
  351. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct4.c +111 -0
  352. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct5.c +112 -0
  353. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct6.c +131 -0
  354. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct7.c +111 -0
  355. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct8.c +131 -0
  356. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct9.c +131 -0
  357. data/ext/ffi_c/libffi/testsuite/libffi.call/offsets.c +46 -0
  358. data/ext/ffi_c/libffi/testsuite/libffi.call/pr1172638.c +127 -0
  359. data/ext/ffi_c/libffi/testsuite/libffi.call/problem1.c +90 -0
  360. data/ext/ffi_c/libffi/testsuite/libffi.call/promotion.c +59 -0
  361. data/ext/ffi_c/libffi/testsuite/libffi.call/pyobjc-tc.c +114 -0
  362. data/ext/ffi_c/libffi/testsuite/libffi.call/return_dbl.c +36 -0
  363. data/ext/ffi_c/libffi/testsuite/libffi.call/return_dbl1.c +43 -0
  364. data/ext/ffi_c/libffi/testsuite/libffi.call/return_dbl2.c +42 -0
  365. data/ext/ffi_c/libffi/testsuite/libffi.call/return_fl.c +35 -0
  366. data/ext/ffi_c/libffi/testsuite/libffi.call/return_fl1.c +36 -0
  367. data/ext/ffi_c/libffi/testsuite/libffi.call/return_fl2.c +49 -0
  368. data/ext/ffi_c/libffi/testsuite/libffi.call/return_fl3.c +42 -0
  369. data/ext/ffi_c/libffi/testsuite/libffi.call/return_ldl.c +34 -0
  370. data/ext/ffi_c/libffi/testsuite/libffi.call/return_ll.c +41 -0
  371. data/ext/ffi_c/libffi/testsuite/libffi.call/return_ll1.c +43 -0
  372. data/ext/ffi_c/libffi/testsuite/libffi.call/return_sc.c +36 -0
  373. data/ext/ffi_c/libffi/testsuite/libffi.call/return_sl.c +38 -0
  374. data/ext/ffi_c/libffi/testsuite/libffi.call/return_uc.c +38 -0
  375. data/ext/ffi_c/libffi/testsuite/libffi.call/return_ul.c +38 -0
  376. data/ext/ffi_c/libffi/testsuite/libffi.call/stret_large.c +145 -0
  377. data/ext/ffi_c/libffi/testsuite/libffi.call/stret_large2.c +148 -0
  378. data/ext/ffi_c/libffi/testsuite/libffi.call/stret_medium.c +124 -0
  379. data/ext/ffi_c/libffi/testsuite/libffi.call/stret_medium2.c +125 -0
  380. data/ext/ffi_c/libffi/testsuite/libffi.call/strlen.c +44 -0
  381. data/ext/ffi_c/libffi/testsuite/libffi.call/strlen2.c +49 -0
  382. data/ext/ffi_c/libffi/testsuite/libffi.call/strlen3.c +49 -0
  383. data/ext/ffi_c/libffi/testsuite/libffi.call/strlen4.c +55 -0
  384. data/ext/ffi_c/libffi/testsuite/libffi.call/struct1.c +67 -0
  385. data/ext/ffi_c/libffi/testsuite/libffi.call/struct10.c +57 -0
  386. data/ext/ffi_c/libffi/testsuite/libffi.call/struct2.c +67 -0
  387. data/ext/ffi_c/libffi/testsuite/libffi.call/struct3.c +60 -0
  388. data/ext/ffi_c/libffi/testsuite/libffi.call/struct4.c +64 -0
  389. data/ext/ffi_c/libffi/testsuite/libffi.call/struct5.c +66 -0
  390. data/ext/ffi_c/libffi/testsuite/libffi.call/struct6.c +64 -0
  391. data/ext/ffi_c/libffi/testsuite/libffi.call/struct7.c +74 -0
  392. data/ext/ffi_c/libffi/testsuite/libffi.call/struct8.c +81 -0
  393. data/ext/ffi_c/libffi/testsuite/libffi.call/struct9.c +68 -0
  394. data/ext/ffi_c/libffi/testsuite/libffi.call/testclosure.c +70 -0
  395. data/ext/ffi_c/libffi/testsuite/libffi.call/uninitialized.c +61 -0
  396. data/ext/ffi_c/libffi/testsuite/libffi.call/unwindtest.cc +117 -0
  397. data/ext/ffi_c/libffi/testsuite/libffi.call/unwindtest_ffi_call.cc +54 -0
  398. data/ext/ffi_c/libffi/testsuite/libffi.call/va_1.c +196 -0
  399. data/ext/ffi_c/libffi/testsuite/libffi.call/va_struct1.c +121 -0
  400. data/ext/ffi_c/libffi/testsuite/libffi.call/va_struct2.c +123 -0
  401. data/ext/ffi_c/libffi/testsuite/libffi.call/va_struct3.c +125 -0
  402. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex.inc +91 -0
  403. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex_double.c +10 -0
  404. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex_float.c +10 -0
  405. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex_longdouble.c +10 -0
  406. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex.inc +42 -0
  407. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_double.c +10 -0
  408. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_float.c +10 -0
  409. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_longdouble.c +10 -0
  410. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct.inc +71 -0
  411. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct_double.c +10 -0
  412. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct_float.c +10 -0
  413. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct_longdouble.c +10 -0
  414. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va.inc +80 -0
  415. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va_double.c +10 -0
  416. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va_float.c +16 -0
  417. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va_longdouble.c +10 -0
  418. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex.exp +36 -0
  419. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex.inc +51 -0
  420. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_defs_double.inc +7 -0
  421. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_defs_float.inc +7 -0
  422. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_defs_longdouble.inc +7 -0
  423. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_double.c +10 -0
  424. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_float.c +10 -0
  425. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_int.c +86 -0
  426. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_longdouble.c +10 -0
  427. data/ext/ffi_c/libffi/testsuite/libffi.complex/ffitest.h +1 -0
  428. data/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex.inc +78 -0
  429. data/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex_double.c +10 -0
  430. data/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex_float.c +10 -0
  431. data/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex_longdouble.c +10 -0
  432. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex.inc +37 -0
  433. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1.inc +41 -0
  434. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1_double.c +10 -0
  435. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1_float.c +10 -0
  436. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1_longdouble.c +10 -0
  437. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2.inc +44 -0
  438. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2_double.c +10 -0
  439. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2_float.c +10 -0
  440. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2_longdouble.c +10 -0
  441. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex_double.c +10 -0
  442. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex_float.c +10 -0
  443. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex_longdouble.c +10 -0
  444. data/ext/ffi_c/libffi/testsuite/libffi.go/aa-direct.c +34 -0
  445. data/ext/ffi_c/libffi/testsuite/libffi.go/closure1.c +28 -0
  446. data/ext/ffi_c/libffi/testsuite/libffi.go/ffitest.h +1 -0
  447. data/ext/ffi_c/libffi/testsuite/libffi.go/go.exp +36 -0
  448. data/ext/ffi_c/libffi/testsuite/libffi.go/static-chain.h +19 -0
  449. data/ext/ffi_c/rbffi.h +57 -0
  450. data/ext/ffi_c/rbffi_endian.h +59 -0
  451. data/ext/ffi_c/win32/stdbool.h +8 -0
  452. data/ext/ffi_c/win32/stdint.h +201 -0
  453. data/ffi.gemspec +36 -0
  454. data/lib/ffi.rb +20 -0
  455. data/lib/ffi/autopointer.rb +203 -0
  456. data/lib/ffi/buffer.rb +4 -0
  457. data/lib/ffi/callback.rb +4 -0
  458. data/lib/ffi/enum.rb +296 -0
  459. data/lib/ffi/errno.rb +43 -0
  460. data/lib/ffi/ffi.rb +44 -0
  461. data/lib/ffi/io.rb +62 -0
  462. data/lib/ffi/library.rb +588 -0
  463. data/lib/ffi/managedstruct.rb +84 -0
  464. data/lib/ffi/memorypointer.rb +1 -0
  465. data/lib/ffi/platform.rb +170 -0
  466. data/lib/ffi/platform/aarch64-freebsd/types.conf +128 -0
  467. data/lib/ffi/platform/aarch64-freebsd12/types.conf +128 -0
  468. data/lib/ffi/platform/aarch64-linux/types.conf +104 -0
  469. data/lib/ffi/platform/arm-freebsd/types.conf +152 -0
  470. data/lib/ffi/platform/arm-freebsd12/types.conf +152 -0
  471. data/lib/ffi/platform/arm-linux/types.conf +104 -0
  472. data/lib/ffi/platform/i386-cygwin/types.conf +3 -0
  473. data/lib/ffi/platform/i386-darwin/types.conf +100 -0
  474. data/lib/ffi/platform/i386-freebsd/types.conf +152 -0
  475. data/lib/ffi/platform/i386-freebsd12/types.conf +152 -0
  476. data/lib/ffi/platform/i386-gnu/types.conf +107 -0
  477. data/lib/ffi/platform/i386-linux/types.conf +103 -0
  478. data/lib/ffi/platform/i386-netbsd/types.conf +126 -0
  479. data/lib/ffi/platform/i386-openbsd/types.conf +128 -0
  480. data/lib/ffi/platform/i386-solaris/types.conf +122 -0
  481. data/lib/ffi/platform/i386-windows/types.conf +105 -0
  482. data/lib/ffi/platform/ia64-linux/types.conf +104 -0
  483. data/lib/ffi/platform/mips-linux/types.conf +102 -0
  484. data/lib/ffi/platform/mips64-linux/types.conf +104 -0
  485. data/lib/ffi/platform/mips64el-linux/types.conf +104 -0
  486. data/lib/ffi/platform/mipsel-linux/types.conf +102 -0
  487. data/lib/ffi/platform/mipsisa32r6-linux/types.conf +102 -0
  488. data/lib/ffi/platform/mipsisa32r6el-linux/types.conf +102 -0
  489. data/lib/ffi/platform/mipsisa64r6-linux/types.conf +104 -0
  490. data/lib/ffi/platform/mipsisa64r6el-linux/types.conf +104 -0
  491. data/lib/ffi/platform/powerpc-aix/types.conf +180 -0
  492. data/lib/ffi/platform/powerpc-darwin/types.conf +100 -0
  493. data/lib/ffi/platform/powerpc-linux/types.conf +100 -0
  494. data/lib/ffi/platform/powerpc64-linux/types.conf +104 -0
  495. data/lib/ffi/platform/s390-linux/types.conf +102 -0
  496. data/lib/ffi/platform/s390x-linux/types.conf +102 -0
  497. data/lib/ffi/platform/sparc-linux/types.conf +102 -0
  498. data/lib/ffi/platform/sparc-solaris/types.conf +128 -0
  499. data/lib/ffi/platform/sparc64-linux/types.conf +102 -0
  500. data/lib/ffi/platform/sparcv9-solaris/types.conf +128 -0
  501. data/lib/ffi/platform/x86_64-cygwin/types.conf +3 -0
  502. data/lib/ffi/platform/x86_64-darwin/types.conf +126 -0
  503. data/lib/ffi/platform/x86_64-freebsd/types.conf +128 -0
  504. data/lib/ffi/platform/x86_64-freebsd12/types.conf +128 -0
  505. data/lib/ffi/platform/x86_64-linux/types.conf +102 -0
  506. data/lib/ffi/platform/x86_64-netbsd/types.conf +128 -0
  507. data/lib/ffi/platform/x86_64-openbsd/types.conf +134 -0
  508. data/lib/ffi/platform/x86_64-solaris/types.conf +122 -0
  509. data/lib/ffi/platform/x86_64-windows/types.conf +120 -0
  510. data/lib/ffi/pointer.rb +160 -0
  511. data/lib/ffi/struct.rb +371 -0
  512. data/lib/ffi/struct_layout_builder.rb +227 -0
  513. data/lib/ffi/tools/const_generator.rb +229 -0
  514. data/lib/ffi/tools/generator.rb +60 -0
  515. data/lib/ffi/tools/generator_task.rb +36 -0
  516. data/lib/ffi/tools/struct_generator.rb +194 -0
  517. data/lib/ffi/tools/types_generator.rb +134 -0
  518. data/lib/ffi/types.rb +194 -0
  519. data/lib/ffi/union.rb +43 -0
  520. data/lib/ffi/variadic.rb +78 -0
  521. data/lib/ffi/version.rb +3 -0
  522. data/samples/getlogin.rb +8 -0
  523. data/samples/getpid.rb +8 -0
  524. data/samples/gettimeofday.rb +18 -0
  525. data/samples/hello.rb +7 -0
  526. data/samples/inotify.rb +60 -0
  527. data/samples/pty.rb +76 -0
  528. data/samples/qsort.rb +21 -0
  529. data/samples/sample_helper.rb +6 -0
  530. metadata +658 -0
@@ -0,0 +1,390 @@
1
+ dnl Process this with autoconf to create configure
2
+
3
+ AC_PREREQ(2.68)
4
+
5
+ AC_INIT([libffi], [3.3-rc0], [http://github.com/libffi/libffi/issues])
6
+ AC_CONFIG_HEADERS([fficonfig.h])
7
+
8
+ AC_CANONICAL_SYSTEM
9
+ target_alias=${target_alias-$host_alias}
10
+
11
+ case "${host}" in
12
+ frv*-elf)
13
+ LDFLAGS=`echo $LDFLAGS | sed "s/\-B[^ ]*libgloss\/frv\///"`\ -B`pwd`/../libgloss/frv/
14
+ ;;
15
+ esac
16
+
17
+ AX_ENABLE_BUILDDIR
18
+
19
+ AM_INIT_AUTOMAKE
20
+
21
+ # The same as in boehm-gc and libstdc++. Have to borrow it from there.
22
+ # We must force CC to /not/ be precious variables; otherwise
23
+ # the wrong, non-multilib-adjusted value will be used in multilibs.
24
+ # As a side effect, we have to subst CFLAGS ourselves.
25
+ # Also save and restore CFLAGS, since AC_PROG_CC will come up with
26
+ # defaults of its own if none are provided.
27
+
28
+ m4_rename([_AC_ARG_VAR_PRECIOUS],[real_PRECIOUS])
29
+ m4_define([_AC_ARG_VAR_PRECIOUS],[])
30
+ save_CFLAGS=$CFLAGS
31
+ AC_PROG_CC
32
+ AC_PROG_CXX
33
+ CFLAGS=$save_CFLAGS
34
+ m4_undefine([_AC_ARG_VAR_PRECIOUS])
35
+ m4_rename_force([real_PRECIOUS],[_AC_ARG_VAR_PRECIOUS])
36
+
37
+ AC_SUBST(CFLAGS)
38
+
39
+ AM_PROG_AS
40
+ AM_PROG_CC_C_O
41
+ AC_PROG_LIBTOOL
42
+ AC_CONFIG_MACRO_DIR([m4])
43
+
44
+ # Test for 64-bit build.
45
+ AC_CHECK_SIZEOF([size_t])
46
+
47
+ AX_COMPILER_VENDOR
48
+ AX_CC_MAXOPT
49
+ # The AX_CFLAGS_WARN_ALL macro doesn't currently work for sunpro
50
+ # compiler.
51
+ if test "$ax_cv_c_compiler_vendor" != "sun"; then
52
+ AX_CFLAGS_WARN_ALL
53
+ fi
54
+
55
+ if test "x$GCC" = "xyes"; then
56
+ CFLAGS="$CFLAGS -fexceptions"
57
+ fi
58
+
59
+ cat > local.exp <<EOF
60
+ set CC_FOR_TARGET "$CC"
61
+ set CXX_FOR_TARGET "$CXX"
62
+ EOF
63
+
64
+ AM_MAINTAINER_MODE
65
+
66
+ AC_CHECK_HEADERS(sys/mman.h)
67
+ AC_CHECK_FUNCS([mmap mkostemp])
68
+ AC_FUNC_MMAP_BLACKLIST
69
+
70
+ dnl The -no-testsuite modules omit the test subdir.
71
+ AM_CONDITIONAL(TESTSUBDIR, test -d $srcdir/testsuite)
72
+
73
+ TARGETDIR="unknown"
74
+ HAVE_LONG_DOUBLE_VARIANT=0
75
+
76
+ . ${srcdir}/configure.host
77
+
78
+ if test -n "${UNSUPPORTED}"; then
79
+ AC_MSG_ERROR(["libffi has not been ported to $host."])
80
+ fi
81
+
82
+ AC_SUBST(AM_RUNTESTFLAGS)
83
+ AC_SUBST(AM_LTLDFLAGS)
84
+
85
+ AC_HEADER_STDC
86
+ AC_CHECK_FUNCS(memcpy)
87
+ AC_FUNC_ALLOCA
88
+
89
+ AC_CHECK_SIZEOF(double)
90
+ AC_CHECK_SIZEOF(long double)
91
+
92
+ # Also AC_SUBST this variable for ffi.h.
93
+ if test -z "$HAVE_LONG_DOUBLE"; then
94
+ HAVE_LONG_DOUBLE=0
95
+ if test $ac_cv_sizeof_long_double != 0; then
96
+ if test $HAVE_LONG_DOUBLE_VARIANT != 0; then
97
+ AC_DEFINE(HAVE_LONG_DOUBLE_VARIANT, 1, [Define if you support more than one size of the long double type])
98
+ HAVE_LONG_DOUBLE=1
99
+ else
100
+ if test $ac_cv_sizeof_double != $ac_cv_sizeof_long_double; then
101
+ HAVE_LONG_DOUBLE=1
102
+ AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define if you have the long double type and it is bigger than a double])
103
+ fi
104
+ fi
105
+ fi
106
+ fi
107
+ AC_SUBST(HAVE_LONG_DOUBLE)
108
+ AC_SUBST(HAVE_LONG_DOUBLE_VARIANT)
109
+
110
+ AC_C_BIGENDIAN
111
+
112
+ GCC_AS_CFI_PSEUDO_OP
113
+
114
+ case "$TARGET" in
115
+ SPARC)
116
+ AC_CACHE_CHECK([assembler and linker support unaligned pc related relocs],
117
+ libffi_cv_as_sparc_ua_pcrel, [
118
+ save_CFLAGS="$CFLAGS"
119
+ save_LDFLAGS="$LDFLAGS"
120
+ CFLAGS="$CFLAGS -fpic"
121
+ LDFLAGS="$LDFLAGS -shared"
122
+ AC_TRY_LINK([asm (".text; foo: nop; .data; .align 4; .byte 0; .uaword %r_disp32(foo); .text");],,
123
+ [libffi_cv_as_sparc_ua_pcrel=yes],
124
+ [libffi_cv_as_sparc_ua_pcrel=no])
125
+ CFLAGS="$save_CFLAGS"
126
+ LDFLAGS="$save_LDFLAGS"])
127
+ if test "x$libffi_cv_as_sparc_ua_pcrel" = xyes; then
128
+ AC_DEFINE(HAVE_AS_SPARC_UA_PCREL, 1,
129
+ [Define if your assembler and linker support unaligned PC relative relocs.])
130
+ fi
131
+
132
+ AC_CACHE_CHECK([assembler .register pseudo-op support],
133
+ libffi_cv_as_register_pseudo_op, [
134
+ libffi_cv_as_register_pseudo_op=unknown
135
+ # Check if we have .register
136
+ AC_TRY_COMPILE(,[asm (".register %g2, #scratch");],
137
+ [libffi_cv_as_register_pseudo_op=yes],
138
+ [libffi_cv_as_register_pseudo_op=no])
139
+ ])
140
+ if test "x$libffi_cv_as_register_pseudo_op" = xyes; then
141
+ AC_DEFINE(HAVE_AS_REGISTER_PSEUDO_OP, 1,
142
+ [Define if your assembler supports .register.])
143
+ fi
144
+ ;;
145
+
146
+ X86*)
147
+ AC_CACHE_CHECK([assembler supports pc related relocs],
148
+ libffi_cv_as_x86_pcrel, [
149
+ libffi_cv_as_x86_pcrel=no
150
+ echo '.text; foo: nop; .data; .long foo-.; .text' > conftest.s
151
+ if $CC $CFLAGS -c conftest.s > /dev/null 2>&1; then
152
+ libffi_cv_as_x86_pcrel=yes
153
+ fi
154
+ ])
155
+ if test "x$libffi_cv_as_x86_pcrel" = xyes; then
156
+ AC_DEFINE(HAVE_AS_X86_PCREL, 1,
157
+ [Define if your assembler supports PC relative relocs.])
158
+ fi
159
+ ;;
160
+
161
+ S390)
162
+ AC_CACHE_CHECK([compiler uses zarch features],
163
+ libffi_cv_as_s390_zarch, [
164
+ libffi_cv_as_s390_zarch=no
165
+ echo 'void foo(void) { bar(); bar(); }' > conftest.c
166
+ if $CC $CFLAGS -S conftest.c > /dev/null 2>&1; then
167
+ if grep -q brasl conftest.s; then
168
+ libffi_cv_as_s390_zarch=yes
169
+ fi
170
+ fi
171
+ ])
172
+ if test "x$libffi_cv_as_s390_zarch" = xyes; then
173
+ AC_DEFINE(HAVE_AS_S390_ZARCH, 1,
174
+ [Define if the compiler uses zarch features.])
175
+ fi
176
+ ;;
177
+ esac
178
+
179
+ # On PaX enable kernels that have MPROTECT enable we can't use PROT_EXEC.
180
+ AC_ARG_ENABLE(pax_emutramp,
181
+ [ --enable-pax_emutramp enable pax emulated trampolines, for we can't use PROT_EXEC],
182
+ if test "$enable_pax_emutramp" = "yes"; then
183
+ AC_DEFINE(FFI_MMAP_EXEC_EMUTRAMP_PAX, 1,
184
+ [Define this if you want to enable pax emulated trampolines])
185
+ fi)
186
+
187
+ LT_SYS_SYMBOL_USCORE
188
+ if test "x$sys_symbol_underscore" = xyes; then
189
+ AC_DEFINE(SYMBOL_UNDERSCORE, 1, [Define if symbols are underscored.])
190
+ fi
191
+
192
+ FFI_EXEC_TRAMPOLINE_TABLE=0
193
+ case "$target" in
194
+ *arm*-apple-* | aarch64-apple-*)
195
+ FFI_EXEC_TRAMPOLINE_TABLE=1
196
+ AC_DEFINE(FFI_EXEC_TRAMPOLINE_TABLE, 1,
197
+ [Cannot use PROT_EXEC on this target, so, we revert to
198
+ alternative means])
199
+ ;;
200
+ *-apple-* | *-*-freebsd* | *-*-kfreebsd* | *-*-openbsd* | *-pc-solaris* | *-linux-android*)
201
+ AC_DEFINE(FFI_MMAP_EXEC_WRIT, 1,
202
+ [Cannot use malloc on this target, so, we revert to
203
+ alternative means])
204
+ ;;
205
+ esac
206
+ AM_CONDITIONAL(FFI_EXEC_TRAMPOLINE_TABLE, test x$FFI_EXEC_TRAMPOLINE_TABLE = x1)
207
+ AC_SUBST(FFI_EXEC_TRAMPOLINE_TABLE)
208
+
209
+ if test x$TARGET = xX86_64; then
210
+ AC_CACHE_CHECK([toolchain supports unwind section type],
211
+ libffi_cv_as_x86_64_unwind_section_type, [
212
+ cat > conftest1.s << EOF
213
+ .text
214
+ .globl foo
215
+ foo:
216
+ jmp bar
217
+ .section .eh_frame,"a",@unwind
218
+ bar:
219
+ EOF
220
+
221
+ cat > conftest2.c << EOF
222
+ extern void foo();
223
+ int main(){foo();}
224
+ EOF
225
+
226
+ libffi_cv_as_x86_64_unwind_section_type=no
227
+ # we ensure that we can compile _and_ link an assembly file containing an @unwind section
228
+ # since the compiler can support it and not the linker (ie old binutils)
229
+ if $CC -Wa,--fatal-warnings $CFLAGS -c conftest1.s > /dev/null 2>&1 && \
230
+ $CC conftest2.c conftest1.o > /dev/null 2>&1 ; then
231
+ libffi_cv_as_x86_64_unwind_section_type=yes
232
+ fi
233
+ ])
234
+ if test "x$libffi_cv_as_x86_64_unwind_section_type" = xyes; then
235
+ AC_DEFINE(HAVE_AS_X86_64_UNWIND_SECTION_TYPE, 1,
236
+ [Define if your assembler supports unwind section type.])
237
+ fi
238
+ fi
239
+
240
+ if test "x$GCC" = "xyes"; then
241
+ AC_CACHE_CHECK([whether .eh_frame section should be read-only],
242
+ libffi_cv_ro_eh_frame, [
243
+ libffi_cv_ro_eh_frame=no
244
+ echo 'extern void foo (void); void bar (void) { foo (); foo (); }' > conftest.c
245
+ if $CC $CFLAGS -c -fpic -fexceptions -o conftest.o conftest.c > /dev/null 2>&1; then
246
+ objdump -h conftest.o > conftest.dump 2>&1
247
+ libffi_eh_frame_line=`grep -n eh_frame conftest.dump | cut -d: -f 1`
248
+ if test "x$libffi_eh_frame_line" != "x"; then
249
+ libffi_test_line=`expr $libffi_eh_frame_line + 1`p
250
+ sed -n $libffi_test_line conftest.dump > conftest.line
251
+ if grep READONLY conftest.line > /dev/null; then
252
+ libffi_cv_ro_eh_frame=yes
253
+ fi
254
+ fi
255
+ fi
256
+ rm -f conftest.*
257
+ ])
258
+ if test "x$libffi_cv_ro_eh_frame" = xyes; then
259
+ AC_DEFINE(HAVE_RO_EH_FRAME, 1,
260
+ [Define if .eh_frame sections should be read-only.])
261
+ AC_DEFINE(EH_FRAME_FLAGS, "a",
262
+ [Define to the flags needed for the .section .eh_frame directive. ])
263
+ else
264
+ AC_DEFINE(EH_FRAME_FLAGS, "aw",
265
+ [Define to the flags needed for the .section .eh_frame directive. ])
266
+ fi
267
+
268
+ AC_CACHE_CHECK([for __attribute__((visibility("hidden")))],
269
+ libffi_cv_hidden_visibility_attribute, [
270
+ echo 'int __attribute__ ((visibility ("hidden"))) foo (void) { return 1 ; }' > conftest.c
271
+ libffi_cv_hidden_visibility_attribute=no
272
+ if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
273
+ if grep '\.hidden.*foo' conftest.s >/dev/null; then
274
+ libffi_cv_hidden_visibility_attribute=yes
275
+ fi
276
+ fi
277
+ rm -f conftest.*
278
+ ])
279
+ if test $libffi_cv_hidden_visibility_attribute = yes; then
280
+ AC_DEFINE(HAVE_HIDDEN_VISIBILITY_ATTRIBUTE, 1,
281
+ [Define if __attribute__((visibility("hidden"))) is supported.])
282
+ fi
283
+ fi
284
+
285
+ AC_ARG_ENABLE(docs,
286
+ AC_HELP_STRING([--disable-docs],
287
+ [Disable building of docs (default: no)]),
288
+ [enable_docs=no],
289
+ [enable_docs=yes])
290
+ AM_CONDITIONAL(BUILD_DOCS, [test x$enable_docs = xyes])
291
+
292
+ AH_BOTTOM([
293
+ #ifdef HAVE_HIDDEN_VISIBILITY_ATTRIBUTE
294
+ #ifdef LIBFFI_ASM
295
+ #define FFI_HIDDEN(name) .hidden name
296
+ #else
297
+ #define FFI_HIDDEN __attribute__ ((visibility ("hidden")))
298
+ #endif
299
+ #else
300
+ #ifdef LIBFFI_ASM
301
+ #define FFI_HIDDEN(name)
302
+ #else
303
+ #define FFI_HIDDEN
304
+ #endif
305
+ #endif
306
+ ])
307
+
308
+ AC_SUBST(TARGET)
309
+ AC_SUBST(TARGETDIR)
310
+
311
+ changequote(<,>)
312
+ TARGET_OBJ=
313
+ for i in $SOURCES; do
314
+ TARGET_OBJ="${TARGET_OBJ} src/${TARGETDIR}/"`echo $i | sed 's/[cS]$/lo/'`
315
+ done
316
+ changequote([,])
317
+ AC_SUBST(TARGET_OBJ)
318
+
319
+ AC_SUBST(SHELL)
320
+
321
+ AC_ARG_ENABLE(debug,
322
+ [ --enable-debug debugging mode],
323
+ if test "$enable_debug" = "yes"; then
324
+ AC_DEFINE(FFI_DEBUG, 1, [Define this if you want extra debugging.])
325
+ fi)
326
+ AM_CONDITIONAL(FFI_DEBUG, test "$enable_debug" = "yes")
327
+
328
+ AC_ARG_ENABLE(structs,
329
+ [ --disable-structs omit code for struct support],
330
+ if test "$enable_structs" = "no"; then
331
+ AC_DEFINE(FFI_NO_STRUCTS, 1, [Define this if you do not want support for aggregate types.])
332
+ fi)
333
+ AM_CONDITIONAL(FFI_DEBUG, test "$enable_debug" = "yes")
334
+
335
+ AC_ARG_ENABLE(raw-api,
336
+ [ --disable-raw-api make the raw api unavailable],
337
+ if test "$enable_raw_api" = "no"; then
338
+ AC_DEFINE(FFI_NO_RAW_API, 1, [Define this if you do not want support for the raw API.])
339
+ fi)
340
+
341
+ AC_ARG_ENABLE(purify-safety,
342
+ [ --enable-purify-safety purify-safe mode],
343
+ if test "$enable_purify_safety" = "yes"; then
344
+ AC_DEFINE(USING_PURIFY, 1, [Define this if you are using Purify and want to suppress spurious messages.])
345
+ fi)
346
+
347
+ AC_ARG_ENABLE(multi-os-directory,
348
+ [ --disable-multi-os-directory
349
+ disable use of gcc --print-multi-os-directory to change the library installation directory])
350
+
351
+ # These variables are only ever used when we cross-build to X86_WIN32.
352
+ # And we only support this with GCC, so...
353
+ if test "x$GCC" = "xyes"; then
354
+ if test -n "$with_cross_host" &&
355
+ test x"$with_cross_host" != x"no"; then
356
+ toolexecdir='${exec_prefix}'/'$(target_alias)'
357
+ toolexeclibdir='${toolexecdir}'/lib
358
+ else
359
+ toolexecdir='${libdir}'/gcc-lib/'$(target_alias)'
360
+ toolexeclibdir='${libdir}'
361
+ fi
362
+ if test x"$enable_multi_os_directory" != x"no"; then
363
+ multi_os_directory=`$CC $CFLAGS -print-multi-os-directory`
364
+ case $multi_os_directory in
365
+ .) ;; # Avoid trailing /.
366
+ ../*) toolexeclibdir=$toolexeclibdir/$multi_os_directory ;;
367
+ esac
368
+ fi
369
+ AC_SUBST(toolexecdir)
370
+ else
371
+ toolexeclibdir='${libdir}'
372
+ fi
373
+ AC_SUBST(toolexeclibdir)
374
+
375
+ # Check linker support.
376
+ LIBFFI_ENABLE_SYMVERS
377
+
378
+ AC_CONFIG_COMMANDS(include, [test -d include || mkdir include])
379
+ AC_CONFIG_COMMANDS(src, [
380
+ test -d src || mkdir src
381
+ test -d src/$TARGETDIR || mkdir src/$TARGETDIR
382
+ ], [TARGETDIR="$TARGETDIR"])
383
+
384
+ AC_CONFIG_FILES(include/Makefile include/ffi.h Makefile testsuite/Makefile man/Makefile doc/Makefile libffi.pc)
385
+
386
+ AC_OUTPUT
387
+
388
+ # Copy this file instead of using AC_CONFIG_LINK in order to support
389
+ # compiling with MSVC, which won't understand cygwin style symlinks.
390
+ cp ${srcdir}/src/$TARGETDIR/ffitarget.h include/ffitarget.h
@@ -0,0 +1,289 @@
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-*-cygwin* | i?86-*-mingw* | i?86-*-os2* | i?86-*-interix* \
68
+ | x86_64-*-cygwin* | x86_64-*-mingw* | x86_64-*-win* )
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
+ if test "${ax_cv_c_compiler_vendor}" = "microsoft"; then
76
+ MSVC=1
77
+ if test $ac_cv_sizeof_size_t = 4; then
78
+ # libffi does not support microsoft tools for 32-bit windows
79
+ # hosts. Try porting src/x86/sysv.S to intel assembly
80
+ # format.
81
+ UNSUPPORTED=1
82
+ fi
83
+ fi
84
+ # All mingw/cygwin/win32 builds require -no-undefined for sharedlib.
85
+ # We must also check with_cross_host to decide if this is a native
86
+ # or cross-build and select where to install dlls appropriately.
87
+ if test -n "$with_cross_host" &&
88
+ test x"$with_cross_host" != x"no"; then
89
+ AM_LTLDFLAGS='-no-undefined -bindir "$(toolexeclibdir)"';
90
+ else
91
+ AM_LTLDFLAGS='-no-undefined -bindir "$(bindir)"';
92
+ fi
93
+ ;;
94
+
95
+ i?86-*-darwin* | x86_64-*-darwin* | i?86-*-ios | x86_64-*-ios)
96
+ TARGETDIR=x86
97
+ if test $ac_cv_sizeof_size_t = 4; then
98
+ TARGET=X86_DARWIN
99
+ else
100
+ TARGET=X86_64
101
+ fi
102
+ ;;
103
+
104
+ i?86-*-* | x86_64-*-* | amd64-*)
105
+ TARGETDIR=x86
106
+ if test $ac_cv_sizeof_size_t = 4; then
107
+ case "$host" in
108
+ x86_64-*x32|x86_64-x32-*)
109
+ TARGET_X32=yes
110
+ TARGET=X86_64
111
+ ;;
112
+ *)
113
+ echo 'int foo (void) { return __x86_64__; }' > conftest.c
114
+ if $CC $CFLAGS -Werror -S conftest.c -o conftest.s > /dev/null 2>&1; then
115
+ TARGET_X32=yes
116
+ TARGET=X86_64
117
+ else
118
+ TARGET=X86;
119
+ fi
120
+ rm -f conftest.*
121
+ ;;
122
+ esac
123
+ else
124
+ TARGET=X86_64;
125
+ fi
126
+ ;;
127
+
128
+ ia64*-*-*)
129
+ TARGET=IA64; TARGETDIR=ia64
130
+ SOURCES="ffi.c unix.S"
131
+ ;;
132
+
133
+ m32r*-*-*)
134
+ TARGET=M32R; TARGETDIR=m32r
135
+ SOURCES="ffi.c sysv.S"
136
+ ;;
137
+
138
+ m68k-*-*)
139
+ TARGET=M68K; TARGETDIR=m68k
140
+ SOURCES="ffi.c sysv.S"
141
+ ;;
142
+
143
+ m88k-*-*)
144
+ TARGET=M88K; TARGETDIR=m88k
145
+ SOURCES="ffi.c obsd.S"
146
+ ;;
147
+
148
+ microblaze*-*-*)
149
+ TARGET=MICROBLAZE; TARGETDIR=microblaze
150
+ SOURCES="ffi.c sysv.S"
151
+ ;;
152
+
153
+ moxie-*-*)
154
+ TARGET=MOXIE; TARGETDIR=moxie
155
+ SOURCES="ffi.c eabi.S"
156
+ ;;
157
+
158
+ metag-*-*)
159
+ TARGET=METAG; TARGETDIR=metag
160
+ SOURCES="ffi.c sysv.S"
161
+ ;;
162
+
163
+ mips-sgi-irix5.* | mips-sgi-irix6.* | mips*-*-rtems*)
164
+ TARGET=MIPS; TARGETDIR=mips
165
+ ;;
166
+ mips*-*linux* | mips*-*-openbsd*)
167
+ # Support 128-bit long double for NewABI.
168
+ HAVE_LONG_DOUBLE='defined(__mips64)'
169
+ TARGET=MIPS; TARGETDIR=mips
170
+ ;;
171
+
172
+ nios2*-linux*)
173
+ TARGET=NIOS2; TARGETDIR=nios2
174
+ SOURCES="ffi.c sysv.S"
175
+ ;;
176
+
177
+ or1k*-linux*)
178
+ TARGET=OR1K; TARGETDIR=or1k
179
+ SOURCES="ffi.c sysv.S"
180
+ ;;
181
+
182
+ powerpc*-*-linux* | powerpc-*-sysv*)
183
+ TARGET=POWERPC; TARGETDIR=powerpc
184
+ HAVE_LONG_DOUBLE_VARIANT=1
185
+ ;;
186
+ powerpc-*-amigaos*)
187
+ TARGET=POWERPC; TARGETDIR=powerpc
188
+ ;;
189
+ powerpc-*-beos*)
190
+ TARGET=POWERPC; TARGETDIR=powerpc
191
+ ;;
192
+ powerpc-*-darwin* | powerpc64-*-darwin*)
193
+ TARGET=POWERPC_DARWIN; TARGETDIR=powerpc
194
+ ;;
195
+ powerpc-*-aix* | rs6000-*-aix*)
196
+ TARGET=POWERPC_AIX; TARGETDIR=powerpc
197
+ ;;
198
+ powerpc-*-freebsd* | powerpc-*-openbsd* | powerpc-*-netbsd*)
199
+ TARGET=POWERPC_FREEBSD; TARGETDIR=powerpc
200
+ HAVE_LONG_DOUBLE_VARIANT=1
201
+ ;;
202
+ powerpc64-*-freebsd*)
203
+ TARGET=POWERPC; TARGETDIR=powerpc
204
+ ;;
205
+ powerpc*-*-rtems*)
206
+ TARGET=POWERPC; TARGETDIR=powerpc
207
+ ;;
208
+
209
+ riscv*-*)
210
+ TARGET=RISCV; TARGETDIR=riscv
211
+ SOURCES="ffi.c sysv.S"
212
+ ;;
213
+
214
+ s390-*-* | s390x-*-*)
215
+ TARGET=S390; TARGETDIR=s390
216
+ SOURCES="ffi.c sysv.S"
217
+ ;;
218
+
219
+ sh-*-* | sh[34]*-*-*)
220
+ TARGET=SH; TARGETDIR=sh
221
+ SOURCES="ffi.c sysv.S"
222
+ ;;
223
+ sh64-*-* | sh5*-*-*)
224
+ TARGET=SH64; TARGETDIR=sh64
225
+ SOURCES="ffi.c sysv.S"
226
+ ;;
227
+
228
+ sparc*-*-*)
229
+ TARGET=SPARC; TARGETDIR=sparc
230
+ SOURCES="ffi.c ffi64.c v8.S v9.S"
231
+ ;;
232
+
233
+ tile*-*)
234
+ TARGET=TILE; TARGETDIR=tile
235
+ SOURCES="ffi.c tile.S"
236
+ ;;
237
+
238
+ vax-*-*)
239
+ TARGET=VAX; TARGETDIR=vax
240
+ SOURCES="ffi.c elfbsd.S"
241
+ ;;
242
+
243
+ xtensa*-*)
244
+ TARGET=XTENSA; TARGETDIR=xtensa
245
+ SOURCES="ffi.c sysv.S"
246
+ ;;
247
+ esac
248
+
249
+ # ... but some of the cases above share configury.
250
+ case "${TARGET}" in
251
+ MIPS)
252
+ SOURCES="ffi.c o32.S n32.S"
253
+ ;;
254
+ POWERPC)
255
+ SOURCES="ffi.c ffi_sysv.c ffi_linux64.c sysv.S ppc_closure.S"
256
+ SOURCES="${SOURCES} linux64.S linux64_closure.S"
257
+ ;;
258
+ POWERPC_AIX)
259
+ SOURCES="ffi_darwin.c aix.S aix_closure.S"
260
+ ;;
261
+ POWERPC_DARWIN)
262
+ SOURCES="ffi_darwin.c darwin.S darwin_closure.S"
263
+ ;;
264
+ POWERPC_FREEBSD)
265
+ SOURCES="ffi.c ffi_sysv.c sysv.S ppc_closure.S"
266
+ ;;
267
+ X86 | X86_DARWIN | X86_FREEBSD | X86_WIN32)
268
+ SOURCES="ffi.c sysv.S"
269
+ ;;
270
+ X86_64)
271
+ if test x"$TARGET_X32" = xyes; then
272
+ SOURCES="ffi64.c unix64.S"
273
+ else
274
+ SOURCES="ffi64.c unix64.S ffiw64.c win64.S"
275
+ fi
276
+ ;;
277
+ X86_WIN64)
278
+ if test "$MSVC" = 1; then
279
+ SOURCES="ffiw64.c win64_intel.S"
280
+ else
281
+ SOURCES="ffiw64.c win64.S"
282
+ fi
283
+ ;;
284
+ esac
285
+
286
+ # If we failed to configure SOURCES, we can't do anything.
287
+ if test -z "${SOURCES}"; then
288
+ UNSUPPORTED=1
289
+ fi