ffi 1.9.18 → 1.9.21

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 (366) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +3 -2
  3. data/Rakefile +14 -3
  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/README +164 -52
  17. data/ext/ffi_c/libffi/acinclude.m4 +381 -0
  18. data/ext/ffi_c/libffi/autogen.sh +2 -0
  19. data/ext/ffi_c/libffi/configure.ac +148 -256
  20. data/ext/ffi_c/libffi/configure.host +265 -4
  21. data/ext/ffi_c/libffi/doc/Makefile.am +3 -0
  22. data/ext/ffi_c/libffi/doc/libffi.texi +430 -45
  23. data/ext/ffi_c/libffi/doc/version.texi +4 -4
  24. data/ext/ffi_c/libffi/generate-darwin-source-and-headers.py +207 -0
  25. data/ext/ffi_c/libffi/include/Makefile.am +3 -3
  26. data/ext/ffi_c/libffi/include/ffi.h.in +107 -50
  27. data/ext/ffi_c/libffi/include/ffi_cfi.h +55 -0
  28. data/ext/ffi_c/libffi/include/ffi_common.h +32 -11
  29. data/ext/ffi_c/libffi/libffi.map.in +80 -0
  30. data/ext/ffi_c/libffi/libffi.pc.in +3 -2
  31. data/ext/ffi_c/libffi/libffi.xcodeproj/project.pbxproj +637 -0
  32. data/ext/ffi_c/libffi/libtool-ldflags +106 -0
  33. data/ext/ffi_c/libffi/libtool-version +1 -1
  34. data/ext/ffi_c/libffi/m4/asmcfi.m4 +13 -0
  35. data/ext/ffi_c/libffi/m4/ax_append_flag.m4 +69 -0
  36. data/ext/ffi_c/libffi/m4/ax_cc_maxopt.m4 +13 -8
  37. data/ext/ffi_c/libffi/m4/ax_cflags_warn_all.m4 +31 -104
  38. data/ext/ffi_c/libffi/m4/{ax_check_compiler_flags.m4 → ax_check_compile_flag.m4} +30 -34
  39. data/ext/ffi_c/libffi/m4/ax_compiler_vendor.m4 +32 -11
  40. data/ext/ffi_c/libffi/m4/ax_enable_builddir.m4 +6 -5
  41. data/ext/ffi_c/libffi/m4/ax_gcc_archflag.m4 +31 -21
  42. data/ext/ffi_c/libffi/man/Makefile.am +2 -2
  43. data/ext/ffi_c/libffi/man/ffi.3 +10 -0
  44. data/ext/ffi_c/libffi/man/ffi_prep_cif.3 +6 -4
  45. data/ext/ffi_c/libffi/man/ffi_prep_cif_var.3 +73 -0
  46. data/ext/ffi_c/libffi/msvcc.sh +72 -9
  47. data/ext/ffi_c/libffi/src/aarch64/ffi.c +941 -0
  48. data/ext/ffi_c/libffi/src/aarch64/ffitarget.h +81 -0
  49. data/ext/ffi_c/libffi/src/aarch64/internal.h +67 -0
  50. data/ext/ffi_c/libffi/src/aarch64/sysv.S +438 -0
  51. data/ext/ffi_c/libffi/src/alpha/ffi.c +335 -98
  52. data/ext/ffi_c/libffi/src/alpha/ffitarget.h +10 -1
  53. data/ext/ffi_c/libffi/src/alpha/internal.h +23 -0
  54. data/ext/ffi_c/libffi/src/alpha/osf.S +161 -266
  55. data/ext/ffi_c/libffi/src/arc/arcompact.S +135 -0
  56. data/ext/ffi_c/libffi/src/arc/ffi.c +266 -0
  57. data/ext/ffi_c/libffi/src/arc/ffitarget.h +53 -0
  58. data/ext/ffi_c/libffi/src/arm/ffi.c +597 -517
  59. data/ext/ffi_c/libffi/src/arm/ffitarget.h +24 -7
  60. data/ext/ffi_c/libffi/src/arm/internal.h +7 -0
  61. data/ext/ffi_c/libffi/src/arm/sysv.S +303 -417
  62. data/ext/ffi_c/libffi/src/avr32/ffitarget.h +6 -1
  63. data/ext/ffi_c/libffi/src/bfin/ffi.c +196 -0
  64. data/ext/ffi_c/libffi/src/bfin/ffitarget.h +43 -0
  65. data/ext/ffi_c/libffi/src/bfin/sysv.S +179 -0
  66. data/ext/ffi_c/libffi/src/closures.c +319 -44
  67. data/ext/ffi_c/libffi/src/cris/ffi.c +10 -7
  68. data/ext/ffi_c/libffi/src/cris/ffitarget.h +6 -1
  69. data/ext/ffi_c/libffi/src/debug.c +6 -1
  70. data/ext/ffi_c/libffi/src/dlmalloc.c +16 -11
  71. data/ext/ffi_c/libffi/src/frv/ffi.c +1 -1
  72. data/ext/ffi_c/libffi/src/frv/ffitarget.h +6 -1
  73. data/ext/ffi_c/libffi/src/ia64/ffi.c +11 -7
  74. data/ext/ffi_c/libffi/src/ia64/ffitarget.h +6 -1
  75. data/ext/ffi_c/libffi/src/java_raw_api.c +23 -5
  76. data/ext/ffi_c/libffi/src/m32r/ffi.c +1 -1
  77. data/ext/ffi_c/libffi/src/m32r/ffitarget.h +6 -1
  78. data/ext/ffi_c/libffi/src/m68k/ffi.c +87 -13
  79. data/ext/ffi_c/libffi/src/m68k/ffitarget.h +6 -1
  80. data/ext/ffi_c/libffi/src/m68k/sysv.S +119 -32
  81. data/ext/ffi_c/libffi/src/m88k/ffi.c +400 -0
  82. data/ext/ffi_c/libffi/src/m88k/ffitarget.h +49 -0
  83. data/ext/ffi_c/libffi/src/m88k/obsd.S +209 -0
  84. data/ext/ffi_c/libffi/src/metag/ffi.c +330 -0
  85. data/ext/ffi_c/libffi/{fficonfig.hw → src/metag/ffitarget.h} +22 -26
  86. data/ext/ffi_c/libffi/src/metag/sysv.S +311 -0
  87. data/ext/ffi_c/libffi/src/microblaze/ffi.c +321 -0
  88. data/ext/ffi_c/libffi/src/microblaze/ffitarget.h +53 -0
  89. data/ext/ffi_c/libffi/src/microblaze/sysv.S +302 -0
  90. data/ext/ffi_c/libffi/src/mips/ffi.c +95 -28
  91. data/ext/ffi_c/libffi/src/mips/ffitarget.h +9 -2
  92. data/ext/ffi_c/libffi/src/mips/n32.S +126 -56
  93. data/ext/ffi_c/libffi/src/mips/o32.S +148 -27
  94. data/ext/ffi_c/libffi/src/moxie/eabi.S +55 -82
  95. data/ext/ffi_c/libffi/src/moxie/ffi.c +40 -44
  96. data/ext/ffi_c/libffi/src/moxie/ffitarget.h +52 -0
  97. data/ext/ffi_c/libffi/src/nios2/ffi.c +304 -0
  98. data/ext/ffi_c/libffi/src/nios2/ffitarget.h +52 -0
  99. data/ext/ffi_c/libffi/src/nios2/sysv.S +136 -0
  100. data/ext/ffi_c/libffi/src/or1k/ffi.c +328 -0
  101. data/ext/ffi_c/libffi/src/or1k/ffitarget.h +58 -0
  102. data/ext/ffi_c/libffi/src/or1k/sysv.S +107 -0
  103. data/ext/ffi_c/libffi/src/pa/ffitarget.h +8 -1
  104. data/ext/ffi_c/libffi/src/powerpc/aix.S +6 -6
  105. data/ext/ffi_c/libffi/src/powerpc/aix_closure.S +3 -1
  106. data/ext/ffi_c/libffi/src/powerpc/asm.h +2 -2
  107. data/ext/ffi_c/libffi/src/powerpc/darwin.S +2 -7
  108. data/ext/ffi_c/libffi/src/powerpc/darwin_closure.S +22 -26
  109. data/ext/ffi_c/libffi/src/powerpc/ffi.c +103 -1378
  110. data/ext/ffi_c/libffi/src/powerpc/ffi_darwin.c +25 -25
  111. data/ext/ffi_c/libffi/src/powerpc/ffi_linux64.c +945 -0
  112. data/ext/ffi_c/libffi/src/powerpc/ffi_powerpc.h +94 -0
  113. data/ext/ffi_c/libffi/src/powerpc/ffi_sysv.c +923 -0
  114. data/ext/ffi_c/libffi/src/powerpc/ffitarget.h +100 -44
  115. data/ext/ffi_c/libffi/src/powerpc/linux64.S +100 -59
  116. data/ext/ffi_c/libffi/src/powerpc/linux64_closure.S +360 -108
  117. data/ext/ffi_c/libffi/src/powerpc/ppc_closure.S +138 -68
  118. data/ext/ffi_c/libffi/src/powerpc/sysv.S +68 -112
  119. data/ext/ffi_c/libffi/src/prep_cif.c +108 -24
  120. data/ext/ffi_c/libffi/src/raw_api.c +18 -5
  121. data/ext/ffi_c/libffi/src/s390/ffi.c +294 -318
  122. data/ext/ffi_c/libffi/src/s390/ffitarget.h +9 -1
  123. data/ext/ffi_c/libffi/src/s390/internal.h +11 -0
  124. data/ext/ffi_c/libffi/src/s390/sysv.S +257 -366
  125. data/ext/ffi_c/libffi/src/sh/ffi.c +4 -3
  126. data/ext/ffi_c/libffi/src/sh/ffitarget.h +6 -1
  127. data/ext/ffi_c/libffi/src/sh64/ffi.c +3 -2
  128. data/ext/ffi_c/libffi/src/sh64/ffitarget.h +6 -1
  129. data/ext/ffi_c/libffi/src/sparc/ffi.c +326 -527
  130. data/ext/ffi_c/libffi/src/sparc/ffi64.c +608 -0
  131. data/ext/ffi_c/libffi/src/sparc/ffitarget.h +20 -7
  132. data/ext/ffi_c/libffi/src/sparc/internal.h +26 -0
  133. data/ext/ffi_c/libffi/src/sparc/v8.S +364 -234
  134. data/ext/ffi_c/libffi/src/sparc/v9.S +340 -207
  135. data/ext/ffi_c/libffi/src/tile/ffi.c +355 -0
  136. data/ext/ffi_c/libffi/src/tile/ffitarget.h +65 -0
  137. data/ext/ffi_c/libffi/src/tile/tile.S +360 -0
  138. data/ext/ffi_c/libffi/src/types.c +43 -14
  139. data/ext/ffi_c/libffi/src/vax/elfbsd.S +195 -0
  140. data/ext/ffi_c/libffi/src/vax/ffi.c +276 -0
  141. data/ext/ffi_c/libffi/src/vax/ffitarget.h +49 -0
  142. data/ext/ffi_c/libffi/src/x86/asmnames.h +30 -0
  143. data/ext/ffi_c/libffi/src/x86/ffi.c +589 -500
  144. data/ext/ffi_c/libffi/src/x86/ffi64.c +338 -116
  145. data/ext/ffi_c/libffi/src/x86/ffitarget.h +55 -35
  146. data/ext/ffi_c/libffi/src/x86/ffiw64.c +287 -0
  147. data/ext/ffi_c/libffi/src/x86/internal.h +29 -0
  148. data/ext/ffi_c/libffi/src/x86/internal64.h +22 -0
  149. data/ext/ffi_c/libffi/src/x86/sysv.S +975 -400
  150. data/ext/ffi_c/libffi/src/x86/unix64.S +398 -299
  151. data/ext/ffi_c/libffi/src/x86/win64.S +222 -458
  152. data/ext/ffi_c/libffi/src/x86/win64_intel.S +237 -0
  153. data/ext/ffi_c/libffi/src/xtensa/ffi.c +298 -0
  154. data/ext/ffi_c/libffi/src/xtensa/ffitarget.h +53 -0
  155. data/ext/ffi_c/libffi/src/xtensa/sysv.S +253 -0
  156. data/ext/ffi_c/libffi/stamp-h.in +1 -0
  157. data/ext/ffi_c/libffi/testsuite/Makefile.am +78 -73
  158. data/ext/ffi_c/libffi/testsuite/lib/libffi.exp +120 -25
  159. data/ext/ffi_c/libffi/testsuite/lib/target-libpath.exp +21 -1
  160. data/ext/ffi_c/libffi/testsuite/libffi.call/align_mixed.c +46 -0
  161. data/ext/ffi_c/libffi/testsuite/libffi.call/call.exp +4 -6
  162. data/ext/ffi_c/libffi/testsuite/libffi.call/{closure_stdcall.c → closure_simple.c} +7 -16
  163. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_12byte.c +4 -4
  164. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_16byte.c +4 -4
  165. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_18byte.c +4 -4
  166. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_19byte.c +4 -4
  167. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_1_1byte.c +4 -4
  168. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_20byte.c +4 -4
  169. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_20byte1.c +4 -4
  170. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_24byte.c +5 -5
  171. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_2byte.c +4 -4
  172. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_3_1byte.c +4 -4
  173. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_3byte1.c +4 -4
  174. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_3byte2.c +4 -4
  175. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_4_1byte.c +4 -4
  176. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_4byte.c +4 -4
  177. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_5_1_byte.c +4 -4
  178. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_5byte.c +4 -4
  179. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_64byte.c +5 -5
  180. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_6_1_byte.c +4 -4
  181. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_6byte.c +4 -4
  182. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_7_1_byte.c +4 -4
  183. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_7byte.c +4 -4
  184. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_8byte.c +4 -4
  185. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_9byte1.c +4 -4
  186. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_9byte2.c +4 -4
  187. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_double.c +4 -4
  188. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_float.c +4 -4
  189. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_longdouble.c +4 -4
  190. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_longdouble_split.c +4 -6
  191. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_longdouble_split2.c +4 -6
  192. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_pointer.c +4 -4
  193. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_sint16.c +4 -4
  194. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_sint32.c +4 -4
  195. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_sint64.c +4 -4
  196. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_uint16.c +4 -4
  197. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_uint32.c +4 -4
  198. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_uint64.c +4 -4
  199. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_dbls_struct.c +4 -4
  200. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_double_va.c +10 -9
  201. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_longdouble.c +3 -3
  202. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_longdouble_va.c +10 -9
  203. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_many_mixed_args.c +70 -0
  204. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_many_mixed_float_double.c +55 -0
  205. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_pointer.c +1 -1
  206. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_pointer_stack.c +11 -9
  207. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_struct_va1.c +114 -0
  208. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_uchar_va.c +44 -0
  209. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_uint_va.c +45 -0
  210. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_ulong_va.c +45 -0
  211. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_ulonglong.c +5 -5
  212. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_ushort_va.c +44 -0
  213. data/ext/ffi_c/libffi/testsuite/libffi.call/err_bad_typedef.c +2 -2
  214. data/ext/ffi_c/libffi/testsuite/libffi.call/ffitest.h +23 -40
  215. data/ext/ffi_c/libffi/testsuite/libffi.call/float1.c +3 -1
  216. data/ext/ffi_c/libffi/testsuite/libffi.call/float2.c +6 -4
  217. data/ext/ffi_c/libffi/testsuite/libffi.call/float3.c +4 -2
  218. data/ext/ffi_c/libffi/testsuite/libffi.call/float_va.c +107 -0
  219. data/ext/ffi_c/libffi/testsuite/libffi.call/huge_struct.c +18 -19
  220. data/ext/ffi_c/libffi/testsuite/libffi.call/many.c +6 -16
  221. data/ext/ffi_c/libffi/testsuite/libffi.call/many2.c +57 -0
  222. data/ext/ffi_c/libffi/testsuite/libffi.call/many_double.c +70 -0
  223. data/ext/ffi_c/libffi/testsuite/libffi.call/many_mixed.c +78 -0
  224. data/ext/ffi_c/libffi/testsuite/libffi.call/negint.c +0 -1
  225. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct.c +6 -6
  226. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct1.c +8 -8
  227. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct10.c +6 -6
  228. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct11.c +121 -0
  229. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct2.c +5 -5
  230. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct3.c +5 -5
  231. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct4.c +5 -5
  232. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct5.c +5 -5
  233. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct6.c +6 -6
  234. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct7.c +5 -5
  235. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct8.c +6 -6
  236. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct9.c +6 -6
  237. data/ext/ffi_c/libffi/testsuite/libffi.call/offsets.c +46 -0
  238. data/ext/ffi_c/libffi/testsuite/libffi.call/pr1172638.c +127 -0
  239. data/ext/ffi_c/libffi/testsuite/libffi.call/return_dbl.c +1 -0
  240. data/ext/ffi_c/libffi/testsuite/libffi.call/return_ldl.c +1 -1
  241. data/ext/ffi_c/libffi/testsuite/libffi.call/return_sc.c +1 -1
  242. data/ext/ffi_c/libffi/testsuite/libffi.call/return_uc.c +1 -1
  243. data/ext/ffi_c/libffi/testsuite/libffi.call/stret_large.c +7 -7
  244. data/ext/ffi_c/libffi/testsuite/libffi.call/stret_large2.c +7 -7
  245. data/ext/ffi_c/libffi/testsuite/libffi.call/stret_medium.c +5 -5
  246. data/ext/ffi_c/libffi/testsuite/libffi.call/stret_medium2.c +5 -5
  247. data/ext/ffi_c/libffi/testsuite/libffi.call/strlen.c +2 -2
  248. data/ext/ffi_c/libffi/testsuite/libffi.call/strlen2.c +49 -0
  249. data/ext/ffi_c/libffi/testsuite/libffi.call/strlen3.c +49 -0
  250. data/ext/ffi_c/libffi/testsuite/libffi.call/strlen4.c +55 -0
  251. data/ext/ffi_c/libffi/testsuite/libffi.call/struct1.c +9 -7
  252. data/ext/ffi_c/libffi/testsuite/libffi.call/struct2.c +7 -7
  253. data/ext/ffi_c/libffi/testsuite/libffi.call/struct3.c +7 -6
  254. data/ext/ffi_c/libffi/testsuite/libffi.call/struct4.c +9 -8
  255. data/ext/ffi_c/libffi/testsuite/libffi.call/struct5.c +9 -8
  256. data/ext/ffi_c/libffi/testsuite/libffi.call/struct6.c +9 -9
  257. data/ext/ffi_c/libffi/testsuite/libffi.call/struct7.c +9 -9
  258. data/ext/ffi_c/libffi/testsuite/libffi.call/struct8.c +9 -8
  259. data/ext/ffi_c/libffi/testsuite/libffi.call/struct9.c +9 -8
  260. data/ext/ffi_c/libffi/testsuite/libffi.call/testclosure.c +2 -2
  261. data/ext/ffi_c/libffi/testsuite/libffi.call/uninitialized.c +61 -0
  262. data/ext/ffi_c/libffi/testsuite/{libffi.special → libffi.call}/unwindtest.cc +3 -10
  263. data/ext/ffi_c/libffi/testsuite/{libffi.special → libffi.call}/unwindtest_ffi_call.cc +2 -1
  264. data/ext/ffi_c/libffi/testsuite/libffi.call/va_1.c +196 -0
  265. data/ext/ffi_c/libffi/testsuite/libffi.call/va_struct1.c +121 -0
  266. data/ext/ffi_c/libffi/testsuite/libffi.call/va_struct2.c +123 -0
  267. data/ext/ffi_c/libffi/testsuite/libffi.call/va_struct3.c +125 -0
  268. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex.inc +91 -0
  269. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex_double.c +10 -0
  270. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex_float.c +10 -0
  271. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex_longdouble.c +10 -0
  272. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex.inc +42 -0
  273. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_double.c +10 -0
  274. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_float.c +10 -0
  275. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_longdouble.c +10 -0
  276. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct.inc +71 -0
  277. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct_double.c +10 -0
  278. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct_float.c +10 -0
  279. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct_longdouble.c +10 -0
  280. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va.inc +80 -0
  281. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va_double.c +10 -0
  282. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va_float.c +16 -0
  283. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va_longdouble.c +10 -0
  284. data/ext/ffi_c/libffi/testsuite/{libffi.special/special.exp → libffi.complex/complex.exp} +9 -8
  285. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex.inc +51 -0
  286. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_defs_double.inc +7 -0
  287. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_defs_float.inc +7 -0
  288. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_defs_longdouble.inc +7 -0
  289. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_double.c +10 -0
  290. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_float.c +10 -0
  291. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_int.c +86 -0
  292. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_longdouble.c +10 -0
  293. data/ext/ffi_c/libffi/testsuite/libffi.complex/ffitest.h +1 -0
  294. data/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex.inc +78 -0
  295. data/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex_double.c +10 -0
  296. data/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex_float.c +10 -0
  297. data/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex_longdouble.c +10 -0
  298. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex.inc +37 -0
  299. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1.inc +41 -0
  300. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1_double.c +10 -0
  301. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1_float.c +10 -0
  302. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1_longdouble.c +10 -0
  303. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2.inc +44 -0
  304. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2_double.c +10 -0
  305. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2_float.c +10 -0
  306. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2_longdouble.c +10 -0
  307. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex_double.c +10 -0
  308. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex_float.c +10 -0
  309. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex_longdouble.c +10 -0
  310. data/ext/ffi_c/libffi/testsuite/libffi.go/aa-direct.c +34 -0
  311. data/ext/ffi_c/libffi/testsuite/libffi.go/closure1.c +28 -0
  312. data/ext/ffi_c/libffi/testsuite/libffi.go/ffitest.h +1 -0
  313. data/ext/ffi_c/libffi/testsuite/libffi.go/go.exp +36 -0
  314. data/ext/ffi_c/libffi/testsuite/libffi.go/static-chain.h +19 -0
  315. data/ffi.gemspec +2 -2
  316. data/lib/ffi/enum.rb +124 -0
  317. data/lib/ffi/library.rb +65 -13
  318. data/lib/ffi/platform.rb +7 -2
  319. data/lib/ffi/platform/sparc64-linux/types.conf +102 -0
  320. data/lib/ffi/platform/x86_64-windows/types.conf +113 -20
  321. data/lib/ffi/pointer.rb +1 -0
  322. data/lib/ffi/struct.rb +0 -2
  323. data/lib/ffi/version.rb +1 -1
  324. data/spec/ffi/bitmask_spec.rb +575 -0
  325. data/spec/ffi/fixtures/BitmaskTest.c +51 -0
  326. data/spec/ffi/rbx/memory_pointer_spec.rb +4 -0
  327. data/spec/ffi/struct_spec.rb +0 -4
  328. metadata +143 -51
  329. data/ext/ffi_c/libffi/Makefile.in +0 -1820
  330. data/ext/ffi_c/libffi/Makefile.vc +0 -141
  331. data/ext/ffi_c/libffi/Makefile.vc64 +0 -141
  332. data/ext/ffi_c/libffi/aclocal.m4 +0 -1873
  333. data/ext/ffi_c/libffi/build-ios.sh +0 -67
  334. data/ext/ffi_c/libffi/compile +0 -143
  335. data/ext/ffi_c/libffi/config.guess +0 -1501
  336. data/ext/ffi_c/libffi/config.sub +0 -1705
  337. data/ext/ffi_c/libffi/configure +0 -17191
  338. data/ext/ffi_c/libffi/depcomp +0 -630
  339. data/ext/ffi_c/libffi/doc/libffi.info +0 -593
  340. data/ext/ffi_c/libffi/doc/stamp-vti +0 -4
  341. data/ext/ffi_c/libffi/fficonfig.h.in +0 -199
  342. data/ext/ffi_c/libffi/include/Makefile.in +0 -487
  343. data/ext/ffi_c/libffi/include/ffi.h.vc +0 -427
  344. data/ext/ffi_c/libffi/include/ffi.h.vc64 +0 -427
  345. data/ext/ffi_c/libffi/install-sh +0 -520
  346. data/ext/ffi_c/libffi/ltmain.sh +0 -9636
  347. data/ext/ffi_c/libffi/m4/libtool.m4 +0 -7831
  348. data/ext/ffi_c/libffi/m4/ltoptions.m4 +0 -369
  349. data/ext/ffi_c/libffi/m4/ltsugar.m4 +0 -123
  350. data/ext/ffi_c/libffi/m4/ltversion.m4 +0 -23
  351. data/ext/ffi_c/libffi/m4/lt~obsolete.m4 +0 -98
  352. data/ext/ffi_c/libffi/man/Makefile.in +0 -466
  353. data/ext/ffi_c/libffi/mdate-sh +0 -201
  354. data/ext/ffi_c/libffi/missing +0 -376
  355. data/ext/ffi_c/libffi/src/arm/gentramp.sh +0 -118
  356. data/ext/ffi_c/libffi/src/arm/trampoline.S +0 -4450
  357. data/ext/ffi_c/libffi/src/x86/darwin.S +0 -444
  358. data/ext/ffi_c/libffi/src/x86/darwin64.S +0 -416
  359. data/ext/ffi_c/libffi/src/x86/freebsd.S +0 -458
  360. data/ext/ffi_c/libffi/src/x86/win32.S +0 -1065
  361. data/ext/ffi_c/libffi/testsuite/Makefile.in +0 -500
  362. data/ext/ffi_c/libffi/testsuite/lib/libffi-dg.exp +0 -300
  363. data/ext/ffi_c/libffi/testsuite/libffi.call/many_win32.c +0 -63
  364. data/ext/ffi_c/libffi/testsuite/libffi.call/strlen_win32.c +0 -44
  365. data/ext/ffi_c/libffi/testsuite/libffi.special/ffitestcxx.h +0 -96
  366. data/ext/ffi_c/libffi/texinfo.tex +0 -7210
@@ -0,0 +1,106 @@
1
+ #! /bin/sh
2
+
3
+ # Script to translate LDFLAGS into a form suitable for use with libtool.
4
+
5
+ # Copyright (C) 2005 Free Software Foundation, Inc.
6
+ #
7
+ # This file is free software; you can redistribute it and/or modify
8
+ # it under the terms of the GNU General Public License as published by
9
+ # the Free Software Foundation; either version 2 of the License, or
10
+ # (at your option) any later version.
11
+ #
12
+ # This program is distributed in the hope that it will be useful,
13
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
+ # GNU General Public License for more details.
16
+ #
17
+ # You should have received a copy of the GNU General Public License
18
+ # along with this program; if not, write to the Free Software
19
+ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
20
+ # MA 02110-1301, USA.
21
+
22
+ # Contributed by CodeSourcery, LLC.
23
+
24
+ # This script is designed to be used from a Makefile that uses libtool
25
+ # to build libraries as follows:
26
+ #
27
+ # LTLDFLAGS = $(shell libtool-ldflags $(LDFLAGS))
28
+ #
29
+ # Then, use (LTLDFLAGS) in place of $(LDFLAGS) in your link line.
30
+
31
+ # The output of the script. This string is built up as we process the
32
+ # arguments.
33
+ result=
34
+ prev_arg=
35
+
36
+ for arg
37
+ do
38
+ case $arg in
39
+ -f*|--*)
40
+ # Libtool does not ascribe any special meaning options
41
+ # that begin with -f or with a double-dash. So, it will
42
+ # think these options are linker options, and prefix them
43
+ # with "-Wl,". Then, the compiler driver will ignore the
44
+ # options. So, we prefix these options with -Xcompiler to
45
+ # make clear to libtool that they are in fact compiler
46
+ # options.
47
+ case $prev_arg in
48
+ -Xpreprocessor|-Xcompiler|-Xlinker)
49
+ # This option is already prefixed; don't prefix it again.
50
+ ;;
51
+ *)
52
+ result="$result -Xcompiler"
53
+ ;;
54
+ esac
55
+ ;;
56
+ *)
57
+ # We do not want to add -Xcompiler to other options because
58
+ # that would prevent libtool itself from recognizing them.
59
+ ;;
60
+ esac
61
+ prev_arg=$arg
62
+
63
+ # If $(LDFLAGS) is (say):
64
+ # a "b'c d" e
65
+ # then the user expects that:
66
+ # $(LD) $(LDFLAGS)
67
+ # will pass three arguments to $(LD):
68
+ # 1) a
69
+ # 2) b'c d
70
+ # 3) e
71
+ # We must ensure, therefore, that the arguments are appropriately
72
+ # quoted so that using:
73
+ # libtool --mode=link ... $(LTLDFLAGS)
74
+ # will result in the same number of arguments being passed to
75
+ # libtool. In other words, when this script was invoked, the shell
76
+ # removed one level of quoting, present in $(LDFLAGS); we have to put
77
+ # it back.
78
+
79
+ # Quote any embedded single quotes.
80
+ case $arg in
81
+ *"'"*)
82
+ # The following command creates the script:
83
+ # 1s,^X,,;s|'|'"'"'|g
84
+ # which removes a leading X, and then quotes and embedded single
85
+ # quotes.
86
+ sed_script="1s,^X,,;s|'|'\"'\"'|g"
87
+ # Add a leading "X" so that if $arg starts with a dash,
88
+ # the echo command will not try to interpret the argument
89
+ # as a command-line option.
90
+ arg="X$arg"
91
+ # Generate the quoted string.
92
+ quoted_arg=`echo "$arg" | sed -e "$sed_script"`
93
+ ;;
94
+ *)
95
+ quoted_arg=$arg
96
+ ;;
97
+ esac
98
+ # Surround the entire argument with single quotes.
99
+ quoted_arg="'"$quoted_arg"'"
100
+
101
+ # Add it to the string.
102
+ result="$result $quoted_arg"
103
+ done
104
+
105
+ # Output the string we have built up.
106
+ echo "$result"
@@ -26,4 +26,4 @@
26
26
  # release, then set age to 0.
27
27
  #
28
28
  # CURRENT:REVISION:AGE
29
- 5:10:0
29
+ 8:0:1
@@ -0,0 +1,13 @@
1
+ AC_DEFUN([GCC_AS_CFI_PSEUDO_OP],
2
+ [AC_CACHE_CHECK([assembler .cfi pseudo-op support],
3
+ gcc_cv_as_cfi_pseudo_op, [
4
+ gcc_cv_as_cfi_pseudo_op=unknown
5
+ AC_TRY_COMPILE([asm (".cfi_startproc\n\t.cfi_endproc");],,
6
+ [gcc_cv_as_cfi_pseudo_op=yes],
7
+ [gcc_cv_as_cfi_pseudo_op=no])
8
+ ])
9
+ if test "x$gcc_cv_as_cfi_pseudo_op" = xyes; then
10
+ AC_DEFINE(HAVE_AS_CFI_PSEUDO_OP, 1,
11
+ [Define if your assembler supports .cfi_* directives.])
12
+ fi
13
+ ])
@@ -0,0 +1,69 @@
1
+ # ===========================================================================
2
+ # http://www.gnu.org/software/autoconf-archive/ax_append_flag.html
3
+ # ===========================================================================
4
+ #
5
+ # SYNOPSIS
6
+ #
7
+ # AX_APPEND_FLAG(FLAG, [FLAGS-VARIABLE])
8
+ #
9
+ # DESCRIPTION
10
+ #
11
+ # FLAG is appended to the FLAGS-VARIABLE shell variable, with a space
12
+ # added in between.
13
+ #
14
+ # If FLAGS-VARIABLE is not specified, the current language's flags (e.g.
15
+ # CFLAGS) is used. FLAGS-VARIABLE is not changed if it already contains
16
+ # FLAG. If FLAGS-VARIABLE is unset in the shell, it is set to exactly
17
+ # FLAG.
18
+ #
19
+ # NOTE: Implementation based on AX_CFLAGS_GCC_OPTION.
20
+ #
21
+ # LICENSE
22
+ #
23
+ # Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de>
24
+ # Copyright (c) 2011 Maarten Bosmans <mkbosmans@gmail.com>
25
+ #
26
+ # This program is free software: you can redistribute it and/or modify it
27
+ # under the terms of the GNU General Public License as published by the
28
+ # Free Software Foundation, either version 3 of the License, or (at your
29
+ # option) any later version.
30
+ #
31
+ # This program is distributed in the hope that it will be useful, but
32
+ # WITHOUT ANY WARRANTY; without even the implied warranty of
33
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
34
+ # Public License for more details.
35
+ #
36
+ # You should have received a copy of the GNU General Public License along
37
+ # with this program. If not, see <http://www.gnu.org/licenses/>.
38
+ #
39
+ # As a special exception, the respective Autoconf Macro's copyright owner
40
+ # gives unlimited permission to copy, distribute and modify the configure
41
+ # scripts that are the output of Autoconf when processing the Macro. You
42
+ # need not follow the terms of the GNU General Public License when using
43
+ # or distributing such scripts, even though portions of the text of the
44
+ # Macro appear in them. The GNU General Public License (GPL) does govern
45
+ # all other use of the material that constitutes the Autoconf Macro.
46
+ #
47
+ # This special exception to the GPL applies to versions of the Autoconf
48
+ # Macro released by the Autoconf Archive. When you make and distribute a
49
+ # modified version of the Autoconf Macro, you may extend this special
50
+ # exception to the GPL to apply to your modified version as well.
51
+
52
+ #serial 2
53
+
54
+ AC_DEFUN([AX_APPEND_FLAG],
55
+ [AC_PREREQ(2.59)dnl for _AC_LANG_PREFIX
56
+ AS_VAR_PUSHDEF([FLAGS], [m4_default($2,_AC_LANG_PREFIX[FLAGS])])dnl
57
+ AS_VAR_SET_IF(FLAGS,
58
+ [case " AS_VAR_GET(FLAGS) " in
59
+ *" $1 "*)
60
+ AC_RUN_LOG([: FLAGS already contains $1])
61
+ ;;
62
+ *)
63
+ AC_RUN_LOG([: FLAGS="$FLAGS $1"])
64
+ AS_VAR_SET(FLAGS, ["AS_VAR_GET(FLAGS) $1"])
65
+ ;;
66
+ esac],
67
+ [AS_VAR_SET(FLAGS,["$1"])])
68
+ AS_VAR_POPDEF([FLAGS])dnl
69
+ ])dnl AX_APPEND_FLAG
@@ -21,7 +21,7 @@
21
21
  # by the code (e.g. for gcc's -fstrict-aliasing), and that floating-point
22
22
  # computations can be re-ordered as needed.
23
23
  #
24
- # Requires macros: AX_CHECK_COMPILER_FLAGS, AX_COMPILER_VENDOR,
24
+ # Requires macros: AX_CHECK_COMPILE_FLAG, AX_COMPILER_VENDOR,
25
25
  # AX_GCC_ARCHFLAG, AX_GCC_X86_CPUID.
26
26
  #
27
27
  # LICENSE
@@ -55,7 +55,7 @@
55
55
  # modified version of the Autoconf Macro, you may extend this special
56
56
  # exception to the GPL to apply to your modified version as well.
57
57
 
58
- #serial 11
58
+ #serial 13
59
59
 
60
60
  AC_DEFUN([AX_CC_MAXOPT],
61
61
  [
@@ -64,7 +64,7 @@ AC_REQUIRE([AX_COMPILER_VENDOR])
64
64
  AC_REQUIRE([AC_CANONICAL_HOST])
65
65
 
66
66
  AC_ARG_ENABLE(portable-binary, [AS_HELP_STRING([--enable-portable-binary], [disable compiler optimizations that would produce unportable binaries])],
67
- acx_maxopt_portable=$withval, acx_maxopt_portable=no)
67
+ acx_maxopt_portable=$enableval, acx_maxopt_portable=no)
68
68
 
69
69
  # Try to determine "good" native compiler flags if none specified via CFLAGS
70
70
  if test "$ac_test_CFLAGS" != "set"; then
@@ -90,7 +90,7 @@ if test "$ac_test_CFLAGS" != "set"; then
90
90
  else
91
91
  xlc_opt="-qtune=auto"
92
92
  fi
93
- AX_CHECK_COMPILER_FLAGS($xlc_opt,
93
+ AX_CHECK_COMPILE_FLAG($xlc_opt,
94
94
  CFLAGS="-O3 -qansialias -w $xlc_opt",
95
95
  [CFLAGS="-O3 -qansialias -w"
96
96
  echo "******************************************************"
@@ -125,7 +125,7 @@ if test "$ac_test_CFLAGS" != "set"; then
125
125
  esac
126
126
  if test "x$icc_flags" != x; then
127
127
  for flag in $icc_flags; do
128
- AX_CHECK_COMPILER_FLAGS($flag, [icc_archflag=$flag; break])
128
+ AX_CHECK_COMPILE_FLAG($flag, [icc_archflag=$flag; break])
129
129
  done
130
130
  fi
131
131
  AC_MSG_CHECKING([for icc architecture flag])
@@ -140,11 +140,16 @@ if test "$ac_test_CFLAGS" != "set"; then
140
140
  # default optimization flags for gcc on all systems
141
141
  CFLAGS="-O3 -fomit-frame-pointer"
142
142
 
143
+ # -malign-double for x86 systems
144
+ # LIBFFI -- DON'T DO THIS - CHANGES ABI
145
+ # AX_CHECK_COMPILE_FLAG(-malign-double, CFLAGS="$CFLAGS -malign-double")
146
+
143
147
  # -fstrict-aliasing for gcc-2.95+
144
- AX_CHECK_COMPILER_FLAGS(-fstrict-aliasing,
148
+ AX_CHECK_COMPILE_FLAG(-fstrict-aliasing,
145
149
  CFLAGS="$CFLAGS -fstrict-aliasing")
146
150
 
147
- AX_CHECK_COMPILER_FLAGS(-ffast-math, CFLAGS="$CFLAGS -ffast-math")
151
+ # note that we enable "unsafe" fp optimization with other compilers, too
152
+ AX_CHECK_COMPILE_FLAG(-ffast-math, CFLAGS="$CFLAGS -ffast-math")
148
153
 
149
154
  AX_GCC_ARCHFLAG($acx_maxopt_portable)
150
155
  ;;
@@ -161,7 +166,7 @@ if test "$ac_test_CFLAGS" != "set"; then
161
166
  CFLAGS="-O3"
162
167
  fi
163
168
 
164
- AX_CHECK_COMPILER_FLAGS($CFLAGS, [], [
169
+ AX_CHECK_COMPILE_FLAG($CFLAGS, [], [
165
170
  echo ""
166
171
  echo "********************************************************"
167
172
  echo "* WARNING: The guessed CFLAGS don't seem to work with *"
@@ -25,6 +25,8 @@
25
25
  # - $3 action-if-found : add value to shellvariable
26
26
  # - $4 action-if-not-found : nothing
27
27
  #
28
+ # NOTE: These macros depend on AX_APPEND_FLAG.
29
+ #
28
30
  # LICENSE
29
31
  #
30
32
  # Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de>
@@ -56,99 +58,14 @@
56
58
  # modified version of the Autoconf Macro, you may extend this special
57
59
  # exception to the GPL to apply to your modified version as well.
58
60
 
59
- #serial 10
61
+ #serial 14
60
62
 
61
- AC_DEFUN([AX_CFLAGS_WARN_ALL],[dnl
62
- AS_VAR_PUSHDEF([FLAGS],[CFLAGS])dnl
63
- AS_VAR_PUSHDEF([VAR],[ac_cv_cflags_warn_all])dnl
63
+ AC_DEFUN([AX_FLAGS_WARN_ALL],[dnl
64
+ AS_VAR_PUSHDEF([FLAGS],[_AC_LANG_PREFIX[]FLAGS])dnl
65
+ AS_VAR_PUSHDEF([VAR],[ac_cv_[]_AC_LANG_ABBREV[]flags_warn_all])dnl
64
66
  AC_CACHE_CHECK([m4_ifval($1,$1,FLAGS) for maximum warnings],
65
67
  VAR,[VAR="no, unknown"
66
- AC_LANG_PUSH([C])
67
- ac_save_[]FLAGS="$[]FLAGS"
68
- for ac_arg dnl
69
- in "-pedantic % -Wall" dnl GCC
70
- "-xstrconst % -v" dnl Solaris C
71
- "-std1 % -verbose -w0 -warnprotos" dnl Digital Unix
72
- "-qlanglvl=ansi % -qsrcmsg -qinfo=all:noppt:noppc:noobs:nocnd" dnl AIX
73
- "-ansi -ansiE % -fullwarn" dnl IRIX
74
- "+ESlit % +w1" dnl HP-UX C
75
- "-Xc % -pvctl[,]fullmsg" dnl NEC SX-5 (Super-UX 10)
76
- "-h conform % -h msglevel 2" dnl Cray C (Unicos)
77
- #
78
- do FLAGS="$ac_save_[]FLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'`
79
- AC_COMPILE_IFELSE([AC_LANG_PROGRAM],
80
- [VAR=`echo $ac_arg | sed -e 's,.*% *,,'` ; break])
81
- done
82
- FLAGS="$ac_save_[]FLAGS"
83
- AC_LANG_POP([C])
84
- ])
85
- case ".$VAR" in
86
- .ok|.ok,*) m4_ifvaln($3,$3) ;;
87
- .|.no|.no,*) m4_ifvaln($4,$4,[m4_ifval($2,[
88
- AC_RUN_LOG([: m4_ifval($1,$1,FLAGS)="$m4_ifval($1,$1,FLAGS) $2"])
89
- m4_ifval($1,$1,FLAGS)="$m4_ifval($1,$1,FLAGS) $2"])]) ;;
90
- *) m4_ifvaln($3,$3,[
91
- if echo " $[]m4_ifval($1,$1,FLAGS) " | grep " $VAR " 2>&1 >/dev/null
92
- then AC_RUN_LOG([: m4_ifval($1,$1,FLAGS) does contain $VAR])
93
- else AC_RUN_LOG([: m4_ifval($1,$1,FLAGS)="$m4_ifval($1,$1,FLAGS) $VAR"])
94
- m4_ifval($1,$1,FLAGS)="$m4_ifval($1,$1,FLAGS) $VAR"
95
- fi ]) ;;
96
- esac
97
- AS_VAR_POPDEF([VAR])dnl
98
- AS_VAR_POPDEF([FLAGS])dnl
99
- ])
100
-
101
- dnl the only difference - the LANG selection... and the default FLAGS
102
-
103
- AC_DEFUN([AX_CXXFLAGS_WARN_ALL],[dnl
104
- AS_VAR_PUSHDEF([FLAGS],[CXXFLAGS])dnl
105
- AS_VAR_PUSHDEF([VAR],[ax_cv_cxxflags_warn_all])dnl
106
- AC_CACHE_CHECK([m4_ifval($1,$1,FLAGS) for maximum warnings],
107
- VAR,[VAR="no, unknown"
108
- AC_LANG_PUSH([C++])
109
- ac_save_[]FLAGS="$[]FLAGS"
110
- for ac_arg dnl
111
- in "-pedantic % -Wall" dnl GCC
112
- "-xstrconst % -v" dnl Solaris C
113
- "-std1 % -verbose -w0 -warnprotos" dnl Digital Unix
114
- "-qlanglvl=ansi % -qsrcmsg -qinfo=all:noppt:noppc:noobs:nocnd" dnl AIX
115
- "-ansi -ansiE % -fullwarn" dnl IRIX
116
- "+ESlit % +w1" dnl HP-UX C
117
- "-Xc % -pvctl[,]fullmsg" dnl NEC SX-5 (Super-UX 10)
118
- "-h conform % -h msglevel 2" dnl Cray C (Unicos)
119
- #
120
- do FLAGS="$ac_save_[]FLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'`
121
- AC_COMPILE_IFELSE([AC_LANG_PROGRAM],
122
- [VAR=`echo $ac_arg | sed -e 's,.*% *,,'` ; break])
123
- done
124
- FLAGS="$ac_save_[]FLAGS"
125
- AC_LANG_POP([C++])
126
- ])
127
- case ".$VAR" in
128
- .ok|.ok,*) m4_ifvaln($3,$3) ;;
129
- .|.no|.no,*) m4_ifvaln($4,$4,[m4_ifval($2,[
130
- AC_RUN_LOG([: m4_ifval($1,$1,FLAGS)="$m4_ifval($1,$1,FLAGS) $2"])
131
- m4_ifval($1,$1,FLAGS)="$m4_ifval($1,$1,FLAGS) $2"])]) ;;
132
- *) m4_ifvaln($3,$3,[
133
- if echo " $[]m4_ifval($1,$1,FLAGS) " | grep " $VAR " 2>&1 >/dev/null
134
- then AC_RUN_LOG([: m4_ifval($1,$1,FLAGS) does contain $VAR])
135
- else AC_RUN_LOG([: m4_ifval($1,$1,FLAGS)="$m4_ifval($1,$1,FLAGS) $VAR"])
136
- m4_ifval($1,$1,FLAGS)="$m4_ifval($1,$1,FLAGS) $VAR"
137
- fi ]) ;;
138
- esac
139
- AS_VAR_POPDEF([VAR])dnl
140
- AS_VAR_POPDEF([FLAGS])dnl
141
- ])
142
-
143
- dnl the only difference - the LANG selection... and the default FLAGS
144
-
145
- AC_DEFUN([AX_FCFLAGS_WARN_ALL],[dnl
146
- AS_VAR_PUSHDEF([FLAGS],[FCFLAGS])dnl
147
- AS_VAR_PUSHDEF([VAR],[ax_cv_fcflags_warn_all])dnl
148
- AC_CACHE_CHECK([m4_ifval($1,$1,FLAGS) for maximum warnings],
149
- VAR,[VAR="no, unknown"
150
- AC_LANG_PUSH([Fortran])
151
- ac_save_[]FLAGS="$[]FLAGS"
68
+ ac_save_[]FLAGS="$[]FLAGS"
152
69
  for ac_arg dnl
153
70
  in "-warn all % -warn all" dnl Intel
154
71
  "-pedantic % -Wall" dnl GCC
@@ -164,25 +81,17 @@ do FLAGS="$ac_save_[]FLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'`
164
81
  AC_COMPILE_IFELSE([AC_LANG_PROGRAM],
165
82
  [VAR=`echo $ac_arg | sed -e 's,.*% *,,'` ; break])
166
83
  done
167
- FLAGS="$ac_save_[]FLAGS"
168
- AC_LANG_POP([Fortran])
84
+ FLAGS="$ac_save_[]FLAGS"
169
85
  ])
86
+ AS_VAR_POPDEF([FLAGS])dnl
87
+ AC_REQUIRE([AX_APPEND_FLAG])
170
88
  case ".$VAR" in
171
89
  .ok|.ok,*) m4_ifvaln($3,$3) ;;
172
- .|.no|.no,*) m4_ifvaln($4,$4,[m4_ifval($2,[
173
- AC_RUN_LOG([: m4_ifval($1,$1,FLAGS)="$m4_ifval($1,$1,FLAGS) $2"])
174
- m4_ifval($1,$1,FLAGS)="$m4_ifval($1,$1,FLAGS) $2"])]) ;;
175
- *) m4_ifvaln($3,$3,[
176
- if echo " $[]m4_ifval($1,$1,FLAGS) " | grep " $VAR " 2>&1 >/dev/null
177
- then AC_RUN_LOG([: m4_ifval($1,$1,FLAGS) does contain $VAR])
178
- else AC_RUN_LOG([: m4_ifval($1,$1,FLAGS)="$m4_ifval($1,$1,FLAGS) $VAR"])
179
- m4_ifval($1,$1,FLAGS)="$m4_ifval($1,$1,FLAGS) $VAR"
180
- fi ]) ;;
90
+ .|.no|.no,*) m4_default($4,[m4_ifval($2,[AX_APPEND_FLAG([$2], [$1])])]) ;;
91
+ *) m4_default($3,[AX_APPEND_FLAG([$VAR], [$1])]) ;;
181
92
  esac
182
93
  AS_VAR_POPDEF([VAR])dnl
183
- AS_VAR_POPDEF([FLAGS])dnl
184
- ])
185
-
94
+ ])dnl AX_FLAGS_WARN_ALL
186
95
  dnl implementation tactics:
187
96
  dnl the for-argument contains a list of options. The first part of
188
97
  dnl these does only exist to detect the compiler - usually it is
@@ -193,3 +102,21 @@ dnl like -Woption or -Xoption as they think of it is a pass-through
193
102
  dnl to later compile stages or something. The "%" is used as a
194
103
  dnl delimiter. A non-option comment can be given after "%%" marks
195
104
  dnl which will be shown but not added to the respective C/CXXFLAGS.
105
+
106
+ AC_DEFUN([AX_CFLAGS_WARN_ALL],[dnl
107
+ AC_LANG_PUSH([C])
108
+ AX_FLAGS_WARN_ALL([$1], [$2], [$3], [$4])
109
+ AC_LANG_POP([C])
110
+ ])
111
+
112
+ AC_DEFUN([AX_CXXFLAGS_WARN_ALL],[dnl
113
+ AC_LANG_PUSH([C++])
114
+ AX_FLAGS_WARN_ALL([$1], [$2], [$3], [$4])
115
+ AC_LANG_POP([C++])
116
+ ])
117
+
118
+ AC_DEFUN([AX_FCFLAGS_WARN_ALL],[dnl
119
+ AC_LANG_PUSH([Fortran])
120
+ AX_FLAGS_WARN_ALL([$1], [$2], [$3], [$4])
121
+ AC_LANG_POP([Fortran])
122
+ ])
@@ -1,24 +1,31 @@
1
1
  # ===========================================================================
2
- # http://www.gnu.org/software/autoconf-archive/ax_check_compiler_flags.html
2
+ # http://www.gnu.org/software/autoconf-archive/ax_check_compile_flag.html
3
3
  # ===========================================================================
4
4
  #
5
5
  # SYNOPSIS
6
6
  #
7
- # AX_CHECK_COMPILER_FLAGS(FLAGS, [ACTION-SUCCESS], [ACTION-FAILURE])
7
+ # AX_CHECK_COMPILE_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS])
8
8
  #
9
9
  # DESCRIPTION
10
10
  #
11
- # Check whether the given compiler FLAGS work with the current language's
12
- # compiler, or whether they give an error. (Warnings, however, are
13
- # ignored.)
11
+ # Check whether the given FLAG works with the current language's compiler
12
+ # or gives an error. (Warnings, however, are ignored)
14
13
  #
15
14
  # ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on
16
15
  # success/failure.
17
16
  #
17
+ # If EXTRA-FLAGS is defined, it is added to the current language's default
18
+ # flags (e.g. CFLAGS) when the check is done. The check is thus made with
19
+ # the flags: "CFLAGS EXTRA-FLAGS FLAG". This can for example be used to
20
+ # force the compiler to issue an error when a bad flag is given.
21
+ #
22
+ # NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this
23
+ # macro in sync with AX_CHECK_{PREPROC,LINK}_FLAG.
24
+ #
18
25
  # LICENSE
19
26
  #
20
- # Copyright (c) 2009 Steven G. Johnson <stevenj@alum.mit.edu>
21
- # Copyright (c) 2009 Matteo Frigo
27
+ # Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de>
28
+ # Copyright (c) 2011 Maarten Bosmans <mkbosmans@gmail.com>
22
29
  #
23
30
  # This program is free software: you can redistribute it and/or modify it
24
31
  # under the terms of the GNU General Public License as published by the
@@ -46,31 +53,20 @@
46
53
  # modified version of the Autoconf Macro, you may extend this special
47
54
  # exception to the GPL to apply to your modified version as well.
48
55
 
49
- #serial 9
56
+ #serial 2
50
57
 
51
- AC_DEFUN([AX_CHECK_COMPILER_FLAGS],
52
- [AC_PREREQ(2.59) dnl for _AC_LANG_PREFIX
53
- AC_MSG_CHECKING([whether _AC_LANG compiler accepts $1])
54
- dnl Some hackery here since AC_CACHE_VAL can't handle a non-literal varname:
55
- AS_LITERAL_IF([$1],
56
- [AC_CACHE_VAL(AS_TR_SH(ax_cv_[]_AC_LANG_ABBREV[]_flags_[$1]), [
57
- ax_save_FLAGS=$[]_AC_LANG_PREFIX[]FLAGS
58
- _AC_LANG_PREFIX[]FLAGS="$1"
59
- AC_COMPILE_IFELSE([AC_LANG_PROGRAM()],
60
- AS_TR_SH(ax_cv_[]_AC_LANG_ABBREV[]_flags_[$1])=yes,
61
- AS_TR_SH(ax_cv_[]_AC_LANG_ABBREV[]_flags_[$1])=no)
62
- _AC_LANG_PREFIX[]FLAGS=$ax_save_FLAGS])],
63
- [ax_save_FLAGS=$[]_AC_LANG_PREFIX[]FLAGS
64
- _AC_LANG_PREFIX[]FLAGS="$1"
65
- AC_COMPILE_IFELSE([AC_LANG_PROGRAM()],
66
- eval AS_TR_SH(ax_cv_[]_AC_LANG_ABBREV[]_flags_[$1])=yes,
67
- eval AS_TR_SH(ax_cv_[]_AC_LANG_ABBREV[]_flags_[$1])=no)
68
- _AC_LANG_PREFIX[]FLAGS=$ax_save_FLAGS])
69
- eval ax_check_compiler_flags=$AS_TR_SH(ax_cv_[]_AC_LANG_ABBREV[]_flags_[$1])
70
- AC_MSG_RESULT($ax_check_compiler_flags)
71
- if test "x$ax_check_compiler_flags" = xyes; then
72
- m4_default([$2], :)
73
- else
74
- m4_default([$3], :)
75
- fi
76
- ])dnl AX_CHECK_COMPILER_FLAGS
58
+ AC_DEFUN([AX_CHECK_COMPILE_FLAG],
59
+ [AC_PREREQ(2.59)dnl for _AC_LANG_PREFIX
60
+ AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_[]_AC_LANG_ABBREV[]flags_$4_$1])dnl
61
+ AC_CACHE_CHECK([whether _AC_LANG compiler accepts $1], CACHEVAR, [
62
+ ax_check_save_flags=$[]_AC_LANG_PREFIX[]FLAGS
63
+ _AC_LANG_PREFIX[]FLAGS="$[]_AC_LANG_PREFIX[]FLAGS $4 $1"
64
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM()],
65
+ [AS_VAR_SET(CACHEVAR,[yes])],
66
+ [AS_VAR_SET(CACHEVAR,[no])])
67
+ _AC_LANG_PREFIX[]FLAGS=$ax_check_save_flags])
68
+ AS_IF([test x"AS_VAR_GET(CACHEVAR)" = xyes],
69
+ [m4_default([$2], :)],
70
+ [m4_default([$3], :)])
71
+ AS_VAR_POPDEF([CACHEVAR])dnl
72
+ ])dnl AX_CHECK_COMPILE_FLAGS