ffi 1.9.18-x86-mingw32 → 1.9.21-x86-mingw32

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of ffi might be problematic. Click here for more details.

Files changed (384) hide show
  1. checksums.yaml +5 -5
  2. data/README.md +3 -2
  3. data/Rakefile +14 -4
  4. data/ext/ffi_c/AbstractMemory.c +6 -1
  5. data/ext/ffi_c/Platform.c +10 -2
  6. data/ext/ffi_c/extconf.rb +7 -2
  7. data/ext/ffi_c/libffi.bsd.mk +9 -3
  8. data/ext/ffi_c/libffi.darwin.mk +14 -4
  9. data/ext/ffi_c/libffi.gnu.mk +2 -1
  10. data/ext/ffi_c/libffi.mk +9 -4
  11. data/ext/ffi_c/libffi/ChangeLog.libffi +2 -2
  12. data/ext/ffi_c/libffi/{ChangeLog → ChangeLog.libffi-3.1} +1402 -2
  13. data/ext/ffi_c/libffi/ChangeLog.v1 +1 -1
  14. data/ext/ffi_c/libffi/LICENSE +1 -1
  15. data/ext/ffi_c/libffi/Makefile.am +166 -157
  16. data/ext/ffi_c/libffi/Makefile.in +923 -938
  17. data/ext/ffi_c/libffi/README +164 -52
  18. data/ext/ffi_c/libffi/acinclude.m4 +381 -0
  19. data/ext/ffi_c/libffi/aclocal.m4 +645 -384
  20. data/ext/ffi_c/libffi/autogen.sh +2 -0
  21. data/ext/ffi_c/libffi/autom4te.cache/output.0 +21972 -0
  22. data/ext/ffi_c/libffi/autom4te.cache/output.1 +21972 -0
  23. data/ext/ffi_c/libffi/autom4te.cache/output.2 +21972 -0
  24. data/ext/ffi_c/libffi/autom4te.cache/output.3 +21972 -0
  25. data/ext/ffi_c/libffi/autom4te.cache/requests +331 -0
  26. data/ext/ffi_c/libffi/autom4te.cache/traces.0 +4010 -0
  27. data/ext/ffi_c/libffi/autom4te.cache/traces.1 +1005 -0
  28. data/ext/ffi_c/libffi/autom4te.cache/traces.2 +4010 -0
  29. data/ext/ffi_c/libffi/autom4te.cache/traces.3 +4010 -0
  30. data/ext/ffi_c/libffi/compile +218 -14
  31. data/ext/ffi_c/libffi/config.guess +329 -368
  32. data/ext/ffi_c/libffi/config.sub +232 -112
  33. data/ext/ffi_c/libffi/configure +6970 -2189
  34. data/ext/ffi_c/libffi/configure.ac +148 -256
  35. data/ext/ffi_c/libffi/configure.host +265 -4
  36. data/ext/ffi_c/libffi/depcomp +346 -185
  37. data/ext/ffi_c/libffi/doc/Makefile.am +3 -0
  38. data/ext/ffi_c/libffi/doc/Makefile.in +811 -0
  39. data/ext/ffi_c/libffi/doc/libffi.texi +430 -45
  40. data/ext/ffi_c/libffi/{mdate-sh → doc/mdate-sh} +40 -13
  41. data/ext/ffi_c/libffi/{texinfo.tex → doc/texinfo.tex} +3990 -1121
  42. data/ext/ffi_c/libffi/doc/version.texi +4 -4
  43. data/ext/ffi_c/libffi/fficonfig.h.in +24 -13
  44. data/ext/ffi_c/libffi/fficonfig.h.in~ +210 -0
  45. data/ext/ffi_c/libffi/generate-darwin-source-and-headers.py +207 -0
  46. data/ext/ffi_c/libffi/include/Makefile.am +3 -3
  47. data/ext/ffi_c/libffi/include/Makefile.in +188 -71
  48. data/ext/ffi_c/libffi/include/ffi.h.in +107 -50
  49. data/ext/ffi_c/libffi/include/ffi_cfi.h +55 -0
  50. data/ext/ffi_c/libffi/include/ffi_common.h +32 -11
  51. data/ext/ffi_c/libffi/install-sh +190 -202
  52. data/ext/ffi_c/libffi/libffi.map.in +80 -0
  53. data/ext/ffi_c/libffi/libffi.pc.in +3 -2
  54. data/ext/ffi_c/libffi/libffi.xcodeproj/project.pbxproj +637 -0
  55. data/ext/ffi_c/libffi/libtool-ldflags +106 -0
  56. data/ext/ffi_c/libffi/libtool-version +1 -1
  57. data/ext/ffi_c/libffi/ltmain.sh +3553 -2033
  58. data/ext/ffi_c/libffi/m4/asmcfi.m4 +13 -0
  59. data/ext/ffi_c/libffi/m4/ax_append_flag.m4 +69 -0
  60. data/ext/ffi_c/libffi/m4/ax_cc_maxopt.m4 +13 -8
  61. data/ext/ffi_c/libffi/m4/ax_cflags_warn_all.m4 +31 -104
  62. data/ext/ffi_c/libffi/m4/{ax_check_compiler_flags.m4 → ax_check_compile_flag.m4} +30 -34
  63. data/ext/ffi_c/libffi/m4/ax_compiler_vendor.m4 +32 -11
  64. data/ext/ffi_c/libffi/m4/ax_enable_builddir.m4 +6 -5
  65. data/ext/ffi_c/libffi/m4/ax_gcc_archflag.m4 +31 -21
  66. data/ext/ffi_c/libffi/m4/libtool.m4 +1691 -1135
  67. data/ext/ffi_c/libffi/m4/ltoptions.m4 +104 -36
  68. data/ext/ffi_c/libffi/m4/ltsugar.m4 +4 -3
  69. data/ext/ffi_c/libffi/m4/ltversion.m4 +6 -6
  70. data/ext/ffi_c/libffi/m4/lt~obsolete.m4 +4 -3
  71. data/ext/ffi_c/libffi/man/Makefile.am +2 -2
  72. data/ext/ffi_c/libffi/man/Makefile.in +141 -49
  73. data/ext/ffi_c/libffi/man/ffi.3 +10 -0
  74. data/ext/ffi_c/libffi/man/ffi_prep_cif.3 +6 -4
  75. data/ext/ffi_c/libffi/man/ffi_prep_cif_var.3 +73 -0
  76. data/ext/ffi_c/libffi/missing +150 -311
  77. data/ext/ffi_c/libffi/msvcc.sh +72 -9
  78. data/ext/ffi_c/libffi/src/aarch64/ffi.c +941 -0
  79. data/ext/ffi_c/libffi/src/aarch64/ffitarget.h +81 -0
  80. data/ext/ffi_c/libffi/src/aarch64/internal.h +67 -0
  81. data/ext/ffi_c/libffi/src/aarch64/sysv.S +438 -0
  82. data/ext/ffi_c/libffi/src/alpha/ffi.c +335 -98
  83. data/ext/ffi_c/libffi/src/alpha/ffitarget.h +10 -1
  84. data/ext/ffi_c/libffi/src/alpha/internal.h +23 -0
  85. data/ext/ffi_c/libffi/src/alpha/osf.S +161 -266
  86. data/ext/ffi_c/libffi/src/arc/arcompact.S +135 -0
  87. data/ext/ffi_c/libffi/src/arc/ffi.c +266 -0
  88. data/ext/ffi_c/libffi/src/arc/ffitarget.h +53 -0
  89. data/ext/ffi_c/libffi/src/arm/ffi.c +597 -517
  90. data/ext/ffi_c/libffi/src/arm/ffitarget.h +24 -7
  91. data/ext/ffi_c/libffi/src/arm/internal.h +7 -0
  92. data/ext/ffi_c/libffi/src/arm/sysv.S +303 -417
  93. data/ext/ffi_c/libffi/src/avr32/ffitarget.h +6 -1
  94. data/ext/ffi_c/libffi/src/bfin/ffi.c +196 -0
  95. data/ext/ffi_c/libffi/src/bfin/ffitarget.h +43 -0
  96. data/ext/ffi_c/libffi/src/bfin/sysv.S +179 -0
  97. data/ext/ffi_c/libffi/src/closures.c +319 -44
  98. data/ext/ffi_c/libffi/src/cris/ffi.c +10 -7
  99. data/ext/ffi_c/libffi/src/cris/ffitarget.h +6 -1
  100. data/ext/ffi_c/libffi/src/debug.c +6 -1
  101. data/ext/ffi_c/libffi/src/dlmalloc.c +16 -11
  102. data/ext/ffi_c/libffi/src/frv/ffi.c +1 -1
  103. data/ext/ffi_c/libffi/src/frv/ffitarget.h +6 -1
  104. data/ext/ffi_c/libffi/src/ia64/ffi.c +11 -7
  105. data/ext/ffi_c/libffi/src/ia64/ffitarget.h +6 -1
  106. data/ext/ffi_c/libffi/src/java_raw_api.c +23 -5
  107. data/ext/ffi_c/libffi/src/m32r/ffi.c +1 -1
  108. data/ext/ffi_c/libffi/src/m32r/ffitarget.h +6 -1
  109. data/ext/ffi_c/libffi/src/m68k/ffi.c +87 -13
  110. data/ext/ffi_c/libffi/src/m68k/ffitarget.h +6 -1
  111. data/ext/ffi_c/libffi/src/m68k/sysv.S +119 -32
  112. data/ext/ffi_c/libffi/src/m88k/ffi.c +400 -0
  113. data/ext/ffi_c/libffi/src/m88k/ffitarget.h +49 -0
  114. data/ext/ffi_c/libffi/src/m88k/obsd.S +209 -0
  115. data/ext/ffi_c/libffi/src/metag/ffi.c +330 -0
  116. data/ext/ffi_c/libffi/{fficonfig.hw → src/metag/ffitarget.h} +22 -26
  117. data/ext/ffi_c/libffi/src/metag/sysv.S +311 -0
  118. data/ext/ffi_c/libffi/src/microblaze/ffi.c +321 -0
  119. data/ext/ffi_c/libffi/src/microblaze/ffitarget.h +53 -0
  120. data/ext/ffi_c/libffi/src/microblaze/sysv.S +302 -0
  121. data/ext/ffi_c/libffi/src/mips/ffi.c +95 -28
  122. data/ext/ffi_c/libffi/src/mips/ffitarget.h +9 -2
  123. data/ext/ffi_c/libffi/src/mips/n32.S +126 -56
  124. data/ext/ffi_c/libffi/src/mips/o32.S +148 -27
  125. data/ext/ffi_c/libffi/src/moxie/eabi.S +55 -82
  126. data/ext/ffi_c/libffi/src/moxie/ffi.c +40 -44
  127. data/ext/ffi_c/libffi/src/moxie/ffitarget.h +52 -0
  128. data/ext/ffi_c/libffi/src/nios2/ffi.c +304 -0
  129. data/ext/ffi_c/libffi/src/nios2/ffitarget.h +52 -0
  130. data/ext/ffi_c/libffi/src/nios2/sysv.S +136 -0
  131. data/ext/ffi_c/libffi/src/or1k/ffi.c +328 -0
  132. data/ext/ffi_c/libffi/src/or1k/ffitarget.h +58 -0
  133. data/ext/ffi_c/libffi/src/or1k/sysv.S +107 -0
  134. data/ext/ffi_c/libffi/src/pa/ffitarget.h +8 -1
  135. data/ext/ffi_c/libffi/src/powerpc/aix.S +6 -6
  136. data/ext/ffi_c/libffi/src/powerpc/aix_closure.S +3 -1
  137. data/ext/ffi_c/libffi/src/powerpc/asm.h +2 -2
  138. data/ext/ffi_c/libffi/src/powerpc/darwin.S +2 -7
  139. data/ext/ffi_c/libffi/src/powerpc/darwin_closure.S +22 -26
  140. data/ext/ffi_c/libffi/src/powerpc/ffi.c +103 -1378
  141. data/ext/ffi_c/libffi/src/powerpc/ffi_darwin.c +25 -25
  142. data/ext/ffi_c/libffi/src/powerpc/ffi_linux64.c +945 -0
  143. data/ext/ffi_c/libffi/src/powerpc/ffi_powerpc.h +94 -0
  144. data/ext/ffi_c/libffi/src/powerpc/ffi_sysv.c +923 -0
  145. data/ext/ffi_c/libffi/src/powerpc/ffitarget.h +100 -44
  146. data/ext/ffi_c/libffi/src/powerpc/linux64.S +100 -59
  147. data/ext/ffi_c/libffi/src/powerpc/linux64_closure.S +360 -108
  148. data/ext/ffi_c/libffi/src/powerpc/ppc_closure.S +138 -68
  149. data/ext/ffi_c/libffi/src/powerpc/sysv.S +68 -112
  150. data/ext/ffi_c/libffi/src/prep_cif.c +108 -24
  151. data/ext/ffi_c/libffi/src/raw_api.c +18 -5
  152. data/ext/ffi_c/libffi/src/s390/ffi.c +294 -318
  153. data/ext/ffi_c/libffi/src/s390/ffitarget.h +9 -1
  154. data/ext/ffi_c/libffi/src/s390/internal.h +11 -0
  155. data/ext/ffi_c/libffi/src/s390/sysv.S +257 -366
  156. data/ext/ffi_c/libffi/src/sh/ffi.c +4 -3
  157. data/ext/ffi_c/libffi/src/sh/ffitarget.h +6 -1
  158. data/ext/ffi_c/libffi/src/sh64/ffi.c +3 -2
  159. data/ext/ffi_c/libffi/src/sh64/ffitarget.h +6 -1
  160. data/ext/ffi_c/libffi/src/sparc/ffi.c +326 -527
  161. data/ext/ffi_c/libffi/src/sparc/ffi64.c +608 -0
  162. data/ext/ffi_c/libffi/src/sparc/ffitarget.h +20 -7
  163. data/ext/ffi_c/libffi/src/sparc/internal.h +26 -0
  164. data/ext/ffi_c/libffi/src/sparc/v8.S +364 -234
  165. data/ext/ffi_c/libffi/src/sparc/v9.S +340 -207
  166. data/ext/ffi_c/libffi/src/tile/ffi.c +355 -0
  167. data/ext/ffi_c/libffi/src/tile/ffitarget.h +65 -0
  168. data/ext/ffi_c/libffi/src/tile/tile.S +360 -0
  169. data/ext/ffi_c/libffi/src/types.c +43 -14
  170. data/ext/ffi_c/libffi/src/vax/elfbsd.S +195 -0
  171. data/ext/ffi_c/libffi/src/vax/ffi.c +276 -0
  172. data/ext/ffi_c/libffi/src/vax/ffitarget.h +49 -0
  173. data/ext/ffi_c/libffi/src/x86/asmnames.h +30 -0
  174. data/ext/ffi_c/libffi/src/x86/ffi.c +589 -500
  175. data/ext/ffi_c/libffi/src/x86/ffi64.c +338 -116
  176. data/ext/ffi_c/libffi/src/x86/ffitarget.h +55 -35
  177. data/ext/ffi_c/libffi/src/x86/ffiw64.c +287 -0
  178. data/ext/ffi_c/libffi/src/x86/internal.h +29 -0
  179. data/ext/ffi_c/libffi/src/x86/internal64.h +22 -0
  180. data/ext/ffi_c/libffi/src/x86/sysv.S +975 -400
  181. data/ext/ffi_c/libffi/src/x86/unix64.S +398 -299
  182. data/ext/ffi_c/libffi/src/x86/win64.S +222 -458
  183. data/ext/ffi_c/libffi/src/x86/win64_intel.S +237 -0
  184. data/ext/ffi_c/libffi/src/xtensa/ffi.c +298 -0
  185. data/ext/ffi_c/libffi/src/xtensa/ffitarget.h +53 -0
  186. data/ext/ffi_c/libffi/src/xtensa/sysv.S +253 -0
  187. data/ext/ffi_c/libffi/stamp-h.in +1 -0
  188. data/ext/ffi_c/libffi/testsuite/Makefile.am +78 -73
  189. data/ext/ffi_c/libffi/testsuite/Makefile.in +218 -111
  190. data/ext/ffi_c/libffi/testsuite/lib/libffi.exp +120 -25
  191. data/ext/ffi_c/libffi/testsuite/lib/target-libpath.exp +21 -1
  192. data/ext/ffi_c/libffi/testsuite/libffi.call/align_mixed.c +46 -0
  193. data/ext/ffi_c/libffi/testsuite/libffi.call/call.exp +4 -6
  194. data/ext/ffi_c/libffi/testsuite/libffi.call/{closure_stdcall.c → closure_simple.c} +7 -16
  195. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_12byte.c +4 -4
  196. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_16byte.c +4 -4
  197. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_18byte.c +4 -4
  198. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_19byte.c +4 -4
  199. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_1_1byte.c +4 -4
  200. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_20byte.c +4 -4
  201. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_20byte1.c +4 -4
  202. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_24byte.c +5 -5
  203. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_2byte.c +4 -4
  204. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_3_1byte.c +4 -4
  205. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_3byte1.c +4 -4
  206. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_3byte2.c +4 -4
  207. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_4_1byte.c +4 -4
  208. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_4byte.c +4 -4
  209. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_5_1_byte.c +4 -4
  210. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_5byte.c +4 -4
  211. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_64byte.c +5 -5
  212. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_6_1_byte.c +4 -4
  213. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_6byte.c +4 -4
  214. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_7_1_byte.c +4 -4
  215. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_7byte.c +4 -4
  216. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_8byte.c +4 -4
  217. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_9byte1.c +4 -4
  218. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_9byte2.c +4 -4
  219. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_double.c +4 -4
  220. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_float.c +4 -4
  221. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_longdouble.c +4 -4
  222. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_longdouble_split.c +4 -6
  223. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_longdouble_split2.c +4 -6
  224. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_pointer.c +4 -4
  225. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_sint16.c +4 -4
  226. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_sint32.c +4 -4
  227. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_sint64.c +4 -4
  228. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_uint16.c +4 -4
  229. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_uint32.c +4 -4
  230. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_uint64.c +4 -4
  231. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_dbls_struct.c +4 -4
  232. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_double_va.c +10 -9
  233. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_longdouble.c +3 -3
  234. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_longdouble_va.c +10 -9
  235. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_many_mixed_args.c +70 -0
  236. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_many_mixed_float_double.c +55 -0
  237. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_pointer.c +1 -1
  238. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_pointer_stack.c +11 -9
  239. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_struct_va1.c +114 -0
  240. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_uchar_va.c +44 -0
  241. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_uint_va.c +45 -0
  242. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_ulong_va.c +45 -0
  243. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_ulonglong.c +5 -5
  244. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_ushort_va.c +44 -0
  245. data/ext/ffi_c/libffi/testsuite/libffi.call/err_bad_typedef.c +2 -2
  246. data/ext/ffi_c/libffi/testsuite/libffi.call/ffitest.h +23 -40
  247. data/ext/ffi_c/libffi/testsuite/libffi.call/float1.c +3 -1
  248. data/ext/ffi_c/libffi/testsuite/libffi.call/float2.c +6 -4
  249. data/ext/ffi_c/libffi/testsuite/libffi.call/float3.c +4 -2
  250. data/ext/ffi_c/libffi/testsuite/libffi.call/float_va.c +107 -0
  251. data/ext/ffi_c/libffi/testsuite/libffi.call/huge_struct.c +18 -19
  252. data/ext/ffi_c/libffi/testsuite/libffi.call/many.c +6 -16
  253. data/ext/ffi_c/libffi/testsuite/libffi.call/many2.c +57 -0
  254. data/ext/ffi_c/libffi/testsuite/libffi.call/many_double.c +70 -0
  255. data/ext/ffi_c/libffi/testsuite/libffi.call/many_mixed.c +78 -0
  256. data/ext/ffi_c/libffi/testsuite/libffi.call/negint.c +0 -1
  257. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct.c +6 -6
  258. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct1.c +8 -8
  259. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct10.c +6 -6
  260. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct11.c +121 -0
  261. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct2.c +5 -5
  262. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct3.c +5 -5
  263. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct4.c +5 -5
  264. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct5.c +5 -5
  265. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct6.c +6 -6
  266. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct7.c +5 -5
  267. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct8.c +6 -6
  268. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct9.c +6 -6
  269. data/ext/ffi_c/libffi/testsuite/libffi.call/offsets.c +46 -0
  270. data/ext/ffi_c/libffi/testsuite/libffi.call/pr1172638.c +127 -0
  271. data/ext/ffi_c/libffi/testsuite/libffi.call/return_dbl.c +1 -0
  272. data/ext/ffi_c/libffi/testsuite/libffi.call/return_ldl.c +1 -1
  273. data/ext/ffi_c/libffi/testsuite/libffi.call/return_sc.c +1 -1
  274. data/ext/ffi_c/libffi/testsuite/libffi.call/return_uc.c +1 -1
  275. data/ext/ffi_c/libffi/testsuite/libffi.call/stret_large.c +7 -7
  276. data/ext/ffi_c/libffi/testsuite/libffi.call/stret_large2.c +7 -7
  277. data/ext/ffi_c/libffi/testsuite/libffi.call/stret_medium.c +5 -5
  278. data/ext/ffi_c/libffi/testsuite/libffi.call/stret_medium2.c +5 -5
  279. data/ext/ffi_c/libffi/testsuite/libffi.call/strlen.c +2 -2
  280. data/ext/ffi_c/libffi/testsuite/libffi.call/strlen2.c +49 -0
  281. data/ext/ffi_c/libffi/testsuite/libffi.call/strlen3.c +49 -0
  282. data/ext/ffi_c/libffi/testsuite/libffi.call/strlen4.c +55 -0
  283. data/ext/ffi_c/libffi/testsuite/libffi.call/struct1.c +9 -7
  284. data/ext/ffi_c/libffi/testsuite/libffi.call/struct2.c +7 -7
  285. data/ext/ffi_c/libffi/testsuite/libffi.call/struct3.c +7 -6
  286. data/ext/ffi_c/libffi/testsuite/libffi.call/struct4.c +9 -8
  287. data/ext/ffi_c/libffi/testsuite/libffi.call/struct5.c +9 -8
  288. data/ext/ffi_c/libffi/testsuite/libffi.call/struct6.c +9 -9
  289. data/ext/ffi_c/libffi/testsuite/libffi.call/struct7.c +9 -9
  290. data/ext/ffi_c/libffi/testsuite/libffi.call/struct8.c +9 -8
  291. data/ext/ffi_c/libffi/testsuite/libffi.call/struct9.c +9 -8
  292. data/ext/ffi_c/libffi/testsuite/libffi.call/testclosure.c +2 -2
  293. data/ext/ffi_c/libffi/testsuite/libffi.call/uninitialized.c +61 -0
  294. data/ext/ffi_c/libffi/testsuite/{libffi.special → libffi.call}/unwindtest.cc +3 -10
  295. data/ext/ffi_c/libffi/testsuite/{libffi.special → libffi.call}/unwindtest_ffi_call.cc +2 -1
  296. data/ext/ffi_c/libffi/testsuite/libffi.call/va_1.c +196 -0
  297. data/ext/ffi_c/libffi/testsuite/libffi.call/va_struct1.c +121 -0
  298. data/ext/ffi_c/libffi/testsuite/libffi.call/va_struct2.c +123 -0
  299. data/ext/ffi_c/libffi/testsuite/libffi.call/va_struct3.c +125 -0
  300. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex.inc +91 -0
  301. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex_double.c +10 -0
  302. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex_float.c +10 -0
  303. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex_longdouble.c +10 -0
  304. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex.inc +42 -0
  305. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_double.c +10 -0
  306. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_float.c +10 -0
  307. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_longdouble.c +10 -0
  308. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct.inc +71 -0
  309. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct_double.c +10 -0
  310. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct_float.c +10 -0
  311. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct_longdouble.c +10 -0
  312. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va.inc +80 -0
  313. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va_double.c +10 -0
  314. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va_float.c +16 -0
  315. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va_longdouble.c +10 -0
  316. data/ext/ffi_c/libffi/testsuite/{libffi.special/special.exp → libffi.complex/complex.exp} +9 -8
  317. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex.inc +51 -0
  318. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_defs_double.inc +7 -0
  319. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_defs_float.inc +7 -0
  320. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_defs_longdouble.inc +7 -0
  321. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_double.c +10 -0
  322. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_float.c +10 -0
  323. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_int.c +86 -0
  324. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_longdouble.c +10 -0
  325. data/ext/ffi_c/libffi/testsuite/libffi.complex/ffitest.h +1 -0
  326. data/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex.inc +78 -0
  327. data/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex_double.c +10 -0
  328. data/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex_float.c +10 -0
  329. data/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex_longdouble.c +10 -0
  330. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex.inc +37 -0
  331. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1.inc +41 -0
  332. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1_double.c +10 -0
  333. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1_float.c +10 -0
  334. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1_longdouble.c +10 -0
  335. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2.inc +44 -0
  336. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2_double.c +10 -0
  337. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2_float.c +10 -0
  338. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2_longdouble.c +10 -0
  339. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex_double.c +10 -0
  340. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex_float.c +10 -0
  341. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex_longdouble.c +10 -0
  342. data/ext/ffi_c/libffi/testsuite/libffi.go/aa-direct.c +34 -0
  343. data/ext/ffi_c/libffi/testsuite/libffi.go/closure1.c +28 -0
  344. data/ext/ffi_c/libffi/testsuite/libffi.go/ffitest.h +1 -0
  345. data/ext/ffi_c/libffi/testsuite/libffi.go/go.exp +36 -0
  346. data/ext/ffi_c/libffi/testsuite/libffi.go/static-chain.h +19 -0
  347. data/ffi.gemspec +2 -2
  348. data/lib/2.0/ffi_c.so +0 -0
  349. data/lib/2.1/ffi_c.so +0 -0
  350. data/lib/2.2/ffi_c.so +0 -0
  351. data/lib/2.3/ffi_c.so +0 -0
  352. data/lib/2.4/ffi_c.so +0 -0
  353. data/lib/2.5/ffi_c.so +0 -0
  354. data/lib/ffi/enum.rb +124 -0
  355. data/lib/ffi/library.rb +65 -13
  356. data/lib/ffi/platform.rb +7 -2
  357. data/lib/ffi/platform/sparc64-linux/types.conf +102 -0
  358. data/lib/ffi/platform/x86_64-windows/types.conf +113 -20
  359. data/lib/ffi/pointer.rb +1 -0
  360. data/lib/ffi/struct.rb +0 -2
  361. data/lib/ffi/version.rb +1 -1
  362. data/spec/ffi/bitmask_spec.rb +575 -0
  363. data/spec/ffi/embed-test/ext/Makefile +242 -0
  364. data/spec/ffi/fixtures/BitmaskTest.c +51 -0
  365. data/spec/ffi/rbx/memory_pointer_spec.rb +4 -0
  366. data/spec/ffi/struct_spec.rb +0 -4
  367. metadata +158 -32
  368. data/ext/ffi_c/libffi/Makefile.vc +0 -141
  369. data/ext/ffi_c/libffi/Makefile.vc64 +0 -141
  370. data/ext/ffi_c/libffi/build-ios.sh +0 -67
  371. data/ext/ffi_c/libffi/doc/libffi.info +0 -593
  372. data/ext/ffi_c/libffi/doc/stamp-vti +0 -4
  373. data/ext/ffi_c/libffi/include/ffi.h.vc +0 -427
  374. data/ext/ffi_c/libffi/include/ffi.h.vc64 +0 -427
  375. data/ext/ffi_c/libffi/src/arm/gentramp.sh +0 -118
  376. data/ext/ffi_c/libffi/src/arm/trampoline.S +0 -4450
  377. data/ext/ffi_c/libffi/src/x86/darwin.S +0 -444
  378. data/ext/ffi_c/libffi/src/x86/darwin64.S +0 -416
  379. data/ext/ffi_c/libffi/src/x86/freebsd.S +0 -458
  380. data/ext/ffi_c/libffi/src/x86/win32.S +0 -1065
  381. data/ext/ffi_c/libffi/testsuite/lib/libffi-dg.exp +0 -300
  382. data/ext/ffi_c/libffi/testsuite/libffi.call/many_win32.c +0 -63
  383. data/ext/ffi_c/libffi/testsuite/libffi.call/strlen_win32.c +0 -44
  384. data/ext/ffi_c/libffi/testsuite/libffi.special/ffitestcxx.h +0 -96
@@ -1,4 +1,4 @@
1
- @set UPDATED 23 August 2011
2
- @set UPDATED-MONTH August 2011
3
- @set EDITION 3.0.10
4
- @set VERSION 3.0.10
1
+ @set UPDATED 8 November 2014
2
+ @set UPDATED-MONTH November 2014
3
+ @set EDITION 3.2.1
4
+ @set VERSION 3.2.1
@@ -20,13 +20,16 @@
20
20
  /* Cannot use PROT_EXEC on this target, so, we revert to alternative means */
21
21
  #undef FFI_EXEC_TRAMPOLINE_TABLE
22
22
 
23
+ /* Define this if you want to enable pax emulated trampolines */
24
+ #undef FFI_MMAP_EXEC_EMUTRAMP_PAX
25
+
23
26
  /* Cannot use malloc on this target, so, we revert to alternative means */
24
27
  #undef FFI_MMAP_EXEC_WRIT
25
28
 
26
- /* Define this is you do not want support for the raw API. */
29
+ /* Define this if you do not want support for the raw API. */
27
30
  #undef FFI_NO_RAW_API
28
31
 
29
- /* Define this is you do not want support for aggregate types. */
32
+ /* Define this if you do not want support for aggregate types. */
30
33
  #undef FFI_NO_STRUCTS
31
34
 
32
35
  /* Define to 1 if you have `alloca', as a function or macro. */
@@ -36,22 +39,19 @@
36
39
  */
37
40
  #undef HAVE_ALLOCA_H
38
41
 
39
- /* Define if your assembler supports .ascii. */
40
- #undef HAVE_AS_ASCII_PSEUDO_OP
41
-
42
42
  /* Define if your assembler supports .cfi_* directives. */
43
43
  #undef HAVE_AS_CFI_PSEUDO_OP
44
44
 
45
45
  /* Define if your assembler supports .register. */
46
46
  #undef HAVE_AS_REGISTER_PSEUDO_OP
47
47
 
48
+ /* Define if the compiler uses zarch features. */
49
+ #undef HAVE_AS_S390_ZARCH
50
+
48
51
  /* Define if your assembler and linker support unaligned PC relative relocs.
49
52
  */
50
53
  #undef HAVE_AS_SPARC_UA_PCREL
51
54
 
52
- /* Define if your assembler supports .string. */
53
- #undef HAVE_AS_STRING_PSEUDO_OP
54
-
55
55
  /* Define if your assembler supports unwind section type. */
56
56
  #undef HAVE_AS_X86_64_UNWIND_SECTION_TYPE
57
57
 
@@ -70,12 +70,18 @@
70
70
  /* Define if you have the long double type and it is bigger than a double */
71
71
  #undef HAVE_LONG_DOUBLE
72
72
 
73
+ /* Define if you support more than one size of the long double type */
74
+ #undef HAVE_LONG_DOUBLE_VARIANT
75
+
73
76
  /* Define to 1 if you have the `memcpy' function. */
74
77
  #undef HAVE_MEMCPY
75
78
 
76
79
  /* Define to 1 if you have the <memory.h> header file. */
77
80
  #undef HAVE_MEMORY_H
78
81
 
82
+ /* Define to 1 if you have the `mkostemp' function. */
83
+ #undef HAVE_MKOSTEMP
84
+
79
85
  /* Define to 1 if you have the `mmap' function. */
80
86
  #undef HAVE_MMAP
81
87
 
@@ -115,12 +121,11 @@
115
121
  /* Define to 1 if you have the <unistd.h> header file. */
116
122
  #undef HAVE_UNISTD_H
117
123
 
118
- /* Define to the sub-directory in which libtool stores uninstalled libraries.
119
- */
120
- #undef LT_OBJDIR
124
+ /* Define to 1 if GNU symbol versioning is used for libatomic. */
125
+ #undef LIBFFI_GNU_SYMBOL_VERSIONING
121
126
 
122
- /* Define to 1 if your C compiler doesn't accept -c and -o together. */
123
- #undef NO_MINUS_C_MINUS_O
127
+ /* Define to the sub-directory where libtool stores uninstalled libraries. */
128
+ #undef LT_OBJDIR
124
129
 
125
130
  /* Name of package */
126
131
  #undef PACKAGE
@@ -149,6 +154,9 @@
149
154
  /* The size of `long double', as computed by sizeof. */
150
155
  #undef SIZEOF_LONG_DOUBLE
151
156
 
157
+ /* The size of `size_t', as computed by sizeof. */
158
+ #undef SIZEOF_SIZE_T
159
+
152
160
  /* If using the C implementation of alloca, define if you know the
153
161
  direction of stack growth for your system; otherwise it will be
154
162
  automatically deduced at runtime.
@@ -160,6 +168,9 @@
160
168
  /* Define to 1 if you have the ANSI C header files. */
161
169
  #undef STDC_HEADERS
162
170
 
171
+ /* Define if symbols are underscored. */
172
+ #undef SYMBOL_UNDERSCORE
173
+
163
174
  /* Define this if you are using Purify and want to suppress spurious messages.
164
175
  */
165
176
  #undef USING_PURIFY
@@ -0,0 +1,210 @@
1
+ /* fficonfig.h.in. Generated from configure.ac by autoheader. */
2
+
3
+ /* Define if building universal (internal helper macro) */
4
+ #undef AC_APPLE_UNIVERSAL_BUILD
5
+
6
+ /* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
7
+ systems. This function is required for `alloca.c' support on those systems.
8
+ */
9
+ #undef CRAY_STACKSEG_END
10
+
11
+ /* Define to 1 if using `alloca.c'. */
12
+ #undef C_ALLOCA
13
+
14
+ /* Define to the flags needed for the .section .eh_frame directive. */
15
+ #undef EH_FRAME_FLAGS
16
+
17
+ /* Define this if you want extra debugging. */
18
+ #undef FFI_DEBUG
19
+
20
+ /* Cannot use PROT_EXEC on this target, so, we revert to alternative means */
21
+ #undef FFI_EXEC_TRAMPOLINE_TABLE
22
+
23
+ /* Define this if you want to enable pax emulated trampolines */
24
+ #undef FFI_MMAP_EXEC_EMUTRAMP_PAX
25
+
26
+ /* Cannot use malloc on this target, so, we revert to alternative means */
27
+ #undef FFI_MMAP_EXEC_WRIT
28
+
29
+ /* Define this if you do not want support for the raw API. */
30
+ #undef FFI_NO_RAW_API
31
+
32
+ /* Define this if you do not want support for aggregate types. */
33
+ #undef FFI_NO_STRUCTS
34
+
35
+ /* Define to 1 if you have `alloca', as a function or macro. */
36
+ #undef HAVE_ALLOCA
37
+
38
+ /* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
39
+ */
40
+ #undef HAVE_ALLOCA_H
41
+
42
+ /* Define if your assembler supports .cfi_* directives. */
43
+ #undef HAVE_AS_CFI_PSEUDO_OP
44
+
45
+ /* Define if your assembler supports .register. */
46
+ #undef HAVE_AS_REGISTER_PSEUDO_OP
47
+
48
+ /* Define if the compiler uses zarch features. */
49
+ #undef HAVE_AS_S390_ZARCH
50
+
51
+ /* Define if your assembler and linker support unaligned PC relative relocs.
52
+ */
53
+ #undef HAVE_AS_SPARC_UA_PCREL
54
+
55
+ /* Define if your assembler supports unwind section type. */
56
+ #undef HAVE_AS_X86_64_UNWIND_SECTION_TYPE
57
+
58
+ /* Define if your assembler supports PC relative relocs. */
59
+ #undef HAVE_AS_X86_PCREL
60
+
61
+ /* Define to 1 if you have the <dlfcn.h> header file. */
62
+ #undef HAVE_DLFCN_H
63
+
64
+ /* Define if __attribute__((visibility("hidden"))) is supported. */
65
+ #undef HAVE_HIDDEN_VISIBILITY_ATTRIBUTE
66
+
67
+ /* Define to 1 if you have the <inttypes.h> header file. */
68
+ #undef HAVE_INTTYPES_H
69
+
70
+ /* Define if you have the long double type and it is bigger than a double */
71
+ #undef HAVE_LONG_DOUBLE
72
+
73
+ /* Define if you support more than one size of the long double type */
74
+ #undef HAVE_LONG_DOUBLE_VARIANT
75
+
76
+ /* Define to 1 if you have the `memcpy' function. */
77
+ #undef HAVE_MEMCPY
78
+
79
+ /* Define to 1 if you have the <memory.h> header file. */
80
+ #undef HAVE_MEMORY_H
81
+
82
+ /* Define to 1 if you have the `mkostemp' function. */
83
+ #undef HAVE_MKOSTEMP
84
+
85
+ /* Define to 1 if you have the `mmap' function. */
86
+ #undef HAVE_MMAP
87
+
88
+ /* Define if mmap with MAP_ANON(YMOUS) works. */
89
+ #undef HAVE_MMAP_ANON
90
+
91
+ /* Define if mmap of /dev/zero works. */
92
+ #undef HAVE_MMAP_DEV_ZERO
93
+
94
+ /* Define if read-only mmap of a plain file works. */
95
+ #undef HAVE_MMAP_FILE
96
+
97
+ /* Define if .eh_frame sections should be read-only. */
98
+ #undef HAVE_RO_EH_FRAME
99
+
100
+ /* Define to 1 if you have the <stdint.h> header file. */
101
+ #undef HAVE_STDINT_H
102
+
103
+ /* Define to 1 if you have the <stdlib.h> header file. */
104
+ #undef HAVE_STDLIB_H
105
+
106
+ /* Define to 1 if you have the <strings.h> header file. */
107
+ #undef HAVE_STRINGS_H
108
+
109
+ /* Define to 1 if you have the <string.h> header file. */
110
+ #undef HAVE_STRING_H
111
+
112
+ /* Define to 1 if you have the <sys/mman.h> header file. */
113
+ #undef HAVE_SYS_MMAN_H
114
+
115
+ /* Define to 1 if you have the <sys/stat.h> header file. */
116
+ #undef HAVE_SYS_STAT_H
117
+
118
+ /* Define to 1 if you have the <sys/types.h> header file. */
119
+ #undef HAVE_SYS_TYPES_H
120
+
121
+ /* Define to 1 if you have the <unistd.h> header file. */
122
+ #undef HAVE_UNISTD_H
123
+
124
+ /* Define to 1 if GNU symbol versioning is used for libatomic. */
125
+ #undef LIBFFI_GNU_SYMBOL_VERSIONING
126
+
127
+ /* Define to the sub-directory where libtool stores uninstalled libraries. */
128
+ #undef LT_OBJDIR
129
+
130
+ /* Name of package */
131
+ #undef PACKAGE
132
+
133
+ /* Define to the address where bug reports for this package should be sent. */
134
+ #undef PACKAGE_BUGREPORT
135
+
136
+ /* Define to the full name of this package. */
137
+ #undef PACKAGE_NAME
138
+
139
+ /* Define to the full name and version of this package. */
140
+ #undef PACKAGE_STRING
141
+
142
+ /* Define to the one symbol short name of this package. */
143
+ #undef PACKAGE_TARNAME
144
+
145
+ /* Define to the home page for this package. */
146
+ #undef PACKAGE_URL
147
+
148
+ /* Define to the version of this package. */
149
+ #undef PACKAGE_VERSION
150
+
151
+ /* The size of `double', as computed by sizeof. */
152
+ #undef SIZEOF_DOUBLE
153
+
154
+ /* The size of `long double', as computed by sizeof. */
155
+ #undef SIZEOF_LONG_DOUBLE
156
+
157
+ /* The size of `size_t', as computed by sizeof. */
158
+ #undef SIZEOF_SIZE_T
159
+
160
+ /* If using the C implementation of alloca, define if you know the
161
+ direction of stack growth for your system; otherwise it will be
162
+ automatically deduced at runtime.
163
+ STACK_DIRECTION > 0 => grows toward higher addresses
164
+ STACK_DIRECTION < 0 => grows toward lower addresses
165
+ STACK_DIRECTION = 0 => direction of growth unknown */
166
+ #undef STACK_DIRECTION
167
+
168
+ /* Define to 1 if you have the ANSI C header files. */
169
+ #undef STDC_HEADERS
170
+
171
+ /* Define if symbols are underscored. */
172
+ #undef SYMBOL_UNDERSCORE
173
+
174
+ /* Define this if you are using Purify and want to suppress spurious messages.
175
+ */
176
+ #undef USING_PURIFY
177
+
178
+ /* Version number of package */
179
+ #undef VERSION
180
+
181
+ /* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
182
+ significant byte first (like Motorola and SPARC, unlike Intel). */
183
+ #if defined AC_APPLE_UNIVERSAL_BUILD
184
+ # if defined __BIG_ENDIAN__
185
+ # define WORDS_BIGENDIAN 1
186
+ # endif
187
+ #else
188
+ # ifndef WORDS_BIGENDIAN
189
+ # undef WORDS_BIGENDIAN
190
+ # endif
191
+ #endif
192
+
193
+ /* Define to `unsigned int' if <sys/types.h> does not define. */
194
+ #undef size_t
195
+
196
+
197
+ #ifdef HAVE_HIDDEN_VISIBILITY_ATTRIBUTE
198
+ #ifdef LIBFFI_ASM
199
+ #define FFI_HIDDEN(name) .hidden name
200
+ #else
201
+ #define FFI_HIDDEN __attribute__ ((visibility ("hidden")))
202
+ #endif
203
+ #else
204
+ #ifdef LIBFFI_ASM
205
+ #define FFI_HIDDEN(name)
206
+ #else
207
+ #define FFI_HIDDEN
208
+ #endif
209
+ #endif
210
+
@@ -0,0 +1,207 @@
1
+ #!/usr/bin/env python
2
+ import subprocess
3
+ import os
4
+ import errno
5
+ import collections
6
+ import glob
7
+ import argparse
8
+
9
+ class Platform(object):
10
+ pass
11
+
12
+ class simulator_platform(Platform):
13
+ directory = 'darwin_ios'
14
+ sdk = 'iphonesimulator'
15
+ arch = 'i386'
16
+ triple = 'i386-apple-darwin11'
17
+ version_min = '-miphoneos-version-min=7.0'
18
+
19
+ prefix = "#ifdef __i386__\n\n"
20
+ suffix = "\n\n#endif"
21
+ src_dir = 'x86'
22
+ src_files = ['sysv.S', 'ffi.c']
23
+
24
+
25
+ class simulator64_platform(Platform):
26
+ directory = 'darwin_ios'
27
+ sdk = 'iphonesimulator'
28
+ arch = 'x86_64'
29
+ triple = 'x86_64-apple-darwin13'
30
+ version_min = '-miphoneos-version-min=7.0'
31
+
32
+ prefix = "#ifdef __x86_64__\n\n"
33
+ suffix = "\n\n#endif"
34
+ src_dir = 'x86'
35
+ src_files = ['unix64.S', 'ffi64.c']
36
+
37
+
38
+ class device_platform(Platform):
39
+ directory = 'darwin_ios'
40
+ sdk = 'iphoneos'
41
+ arch = 'armv7'
42
+ triple = 'arm-apple-darwin11'
43
+ version_min = '-miphoneos-version-min=7.0'
44
+
45
+ prefix = "#ifdef __arm__\n\n"
46
+ suffix = "\n\n#endif"
47
+ src_dir = 'arm'
48
+ src_files = ['sysv.S', 'trampoline.S', 'ffi.c']
49
+
50
+
51
+ class device64_platform(Platform):
52
+ directory = 'darwin_ios'
53
+ sdk = 'iphoneos'
54
+ arch = 'arm64'
55
+ triple = 'aarch64-apple-darwin13'
56
+ version_min = '-miphoneos-version-min=7.0'
57
+
58
+ prefix = "#ifdef __arm64__\n\n"
59
+ suffix = "\n\n#endif"
60
+ src_dir = 'aarch64'
61
+ src_files = ['sysv.S', 'ffi.c']
62
+
63
+
64
+ class desktop32_platform(Platform):
65
+ directory = 'darwin_osx'
66
+ sdk = 'macosx'
67
+ arch = 'i386'
68
+ triple = 'i386-apple-darwin10'
69
+ version_min = '-mmacosx-version-min=10.6'
70
+ src_dir = 'x86'
71
+ src_files = ['sysv.S', 'ffi.c']
72
+
73
+ prefix = "#ifdef __i386__\n\n"
74
+ suffix = "\n\n#endif"
75
+
76
+
77
+ class desktop64_platform(Platform):
78
+ directory = 'darwin_osx'
79
+ sdk = 'macosx'
80
+ arch = 'x86_64'
81
+ triple = 'x86_64-apple-darwin10'
82
+ version_min = '-mmacosx-version-min=10.6'
83
+
84
+ prefix = "#ifdef __x86_64__\n\n"
85
+ suffix = "\n\n#endif"
86
+ src_dir = 'x86'
87
+ src_files = ['unix64.S', 'ffi64.c']
88
+
89
+
90
+ def mkdir_p(path):
91
+ try:
92
+ os.makedirs(path)
93
+ except OSError as exc: # Python >2.5
94
+ if exc.errno != errno.EEXIST:
95
+ raise
96
+
97
+
98
+ def move_file(src_dir, dst_dir, filename, file_suffix=None, prefix='', suffix=''):
99
+ mkdir_p(dst_dir)
100
+ out_filename = filename
101
+
102
+ if file_suffix:
103
+ split_name = os.path.splitext(filename)
104
+ out_filename = "%s_%s%s" % (split_name[0], file_suffix, split_name[1])
105
+
106
+ with open(os.path.join(src_dir, filename)) as in_file:
107
+ with open(os.path.join(dst_dir, out_filename), 'w') as out_file:
108
+ if prefix:
109
+ out_file.write(prefix)
110
+
111
+ out_file.write(in_file.read())
112
+
113
+ if suffix:
114
+ out_file.write(suffix)
115
+
116
+
117
+ def list_files(src_dir, pattern=None, filelist=None):
118
+ if pattern: filelist = glob.iglob(os.path.join(src_dir, pattern))
119
+ for file in filelist:
120
+ yield os.path.basename(file)
121
+
122
+
123
+ def copy_files(src_dir, dst_dir, pattern=None, filelist=None, file_suffix=None, prefix=None, suffix=None):
124
+ for filename in list_files(src_dir, pattern=pattern, filelist=filelist):
125
+ move_file(src_dir, dst_dir, filename, file_suffix=file_suffix, prefix=prefix, suffix=suffix)
126
+
127
+
128
+ def copy_src_platform_files(platform):
129
+ src_dir = os.path.join('src', platform.src_dir)
130
+ dst_dir = os.path.join(platform.directory, 'src', platform.src_dir)
131
+ copy_files(src_dir, dst_dir, filelist=platform.src_files, file_suffix=platform.arch, prefix=platform.prefix, suffix=platform.suffix)
132
+
133
+
134
+ def build_target(platform, platform_headers):
135
+ def xcrun_cmd(cmd):
136
+ return 'xcrun -sdk %s %s -arch %s' % (platform.sdk, cmd, platform.arch)
137
+
138
+ tag='%s-%s' % (platform.sdk, platform.arch)
139
+ build_dir = 'build_%s' % tag
140
+ mkdir_p(build_dir)
141
+ env = dict(CC=xcrun_cmd('clang'),
142
+ LD=xcrun_cmd('ld'),
143
+ CFLAGS='%s' % (platform.version_min))
144
+ working_dir = os.getcwd()
145
+ try:
146
+ os.chdir(build_dir)
147
+ subprocess.check_call(['../configure', '-host', platform.triple], env=env)
148
+ finally:
149
+ os.chdir(working_dir)
150
+
151
+ for src_dir in [build_dir, os.path.join(build_dir, 'include')]:
152
+ copy_files(src_dir,
153
+ os.path.join(platform.directory, 'include'),
154
+ pattern='*.h',
155
+ file_suffix=platform.arch,
156
+ prefix=platform.prefix,
157
+ suffix=platform.suffix)
158
+
159
+ for filename in list_files(src_dir, pattern='*.h'):
160
+ platform_headers[filename].add((platform.prefix, platform.arch, platform.suffix))
161
+
162
+
163
+ def make_tramp():
164
+ with open('src/arm/trampoline.S', 'w') as tramp_out:
165
+ p = subprocess.Popen(['bash', 'src/arm/gentramp.sh'], stdout=tramp_out)
166
+ p.wait()
167
+
168
+
169
+ def generate_source_and_headers(generate_osx=True, generate_ios=True):
170
+ copy_files('src', 'darwin_common/src', pattern='*.c')
171
+ copy_files('include', 'darwin_common/include', pattern='*.h')
172
+
173
+ if generate_ios:
174
+ make_tramp()
175
+ copy_src_platform_files(simulator_platform)
176
+ copy_src_platform_files(simulator64_platform)
177
+ copy_src_platform_files(device_platform)
178
+ copy_src_platform_files(device64_platform)
179
+ if generate_osx:
180
+ copy_src_platform_files(desktop32_platform)
181
+ copy_src_platform_files(desktop64_platform)
182
+
183
+ platform_headers = collections.defaultdict(set)
184
+
185
+ if generate_ios:
186
+ build_target(simulator_platform, platform_headers)
187
+ build_target(simulator64_platform, platform_headers)
188
+ build_target(device_platform, platform_headers)
189
+ build_target(device64_platform, platform_headers)
190
+ if generate_osx:
191
+ build_target(desktop32_platform, platform_headers)
192
+ build_target(desktop64_platform, platform_headers)
193
+
194
+ mkdir_p('darwin_common/include')
195
+ for header_name, tag_tuples in platform_headers.iteritems():
196
+ basename, suffix = os.path.splitext(header_name)
197
+ with open(os.path.join('darwin_common/include', header_name), 'w') as header:
198
+ for tag_tuple in tag_tuples:
199
+ header.write('%s#include <%s_%s%s>\n%s\n' % (tag_tuple[0], basename, tag_tuple[1], suffix, tag_tuple[2]))
200
+
201
+ if __name__ == '__main__':
202
+ parser = argparse.ArgumentParser()
203
+ parser.add_argument('--only-ios', action='store_true', default=False)
204
+ parser.add_argument('--only-osx', action='store_true', default=False)
205
+ args = parser.parse_args()
206
+
207
+ generate_source_and_headers(generate_osx=not args.only_ios, generate_ios=not args.only_osx)