ffi 0.4.0-x86-mswin32

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 (316) hide show
  1. data/LICENSE +51 -0
  2. data/README.rdoc +69 -0
  3. data/Rakefile +142 -0
  4. data/ext/ffi_c/AbstractMemory.c +412 -0
  5. data/ext/ffi_c/AbstractMemory.h +68 -0
  6. data/ext/ffi_c/AutoPointer.c +60 -0
  7. data/ext/ffi_c/AutoPointer.h +18 -0
  8. data/ext/ffi_c/Buffer.c +171 -0
  9. data/ext/ffi_c/Callback.c +374 -0
  10. data/ext/ffi_c/Callback.h +47 -0
  11. data/ext/ffi_c/DynamicLibrary.c +213 -0
  12. data/ext/ffi_c/DynamicLibrary.h +22 -0
  13. data/ext/ffi_c/Invoker.c +962 -0
  14. data/ext/ffi_c/LastError.c +135 -0
  15. data/ext/ffi_c/LastError.h +18 -0
  16. data/ext/ffi_c/MemoryPointer.c +156 -0
  17. data/ext/ffi_c/MemoryPointer.h +20 -0
  18. data/ext/ffi_c/NullPointer.c +143 -0
  19. data/ext/ffi_c/Platform.c +59 -0
  20. data/ext/ffi_c/Platform.h +16 -0
  21. data/ext/ffi_c/Pointer.c +164 -0
  22. data/ext/ffi_c/Pointer.h +25 -0
  23. data/ext/ffi_c/Struct.c +477 -0
  24. data/ext/ffi_c/Struct.h +26 -0
  25. data/ext/ffi_c/Type.c +230 -0
  26. data/ext/ffi_c/Type.h +28 -0
  27. data/ext/ffi_c/Types.c +118 -0
  28. data/ext/ffi_c/Types.h +54 -0
  29. data/ext/ffi_c/compat.h +22 -0
  30. data/ext/ffi_c/endian.h +40 -0
  31. data/ext/ffi_c/extconf.rb +31 -0
  32. data/ext/ffi_c/ffi.c +76 -0
  33. data/ext/ffi_c/libffi.bsd.mk +34 -0
  34. data/ext/ffi_c/libffi.darwin.mk +75 -0
  35. data/ext/ffi_c/libffi.gnu.mk +29 -0
  36. data/ext/ffi_c/libffi.mk +13 -0
  37. data/ext/ffi_c/libffi/ChangeLog +3243 -0
  38. data/ext/ffi_c/libffi/ChangeLog.libffi +347 -0
  39. data/ext/ffi_c/libffi/ChangeLog.libgcj +40 -0
  40. data/ext/ffi_c/libffi/ChangeLog.v1 +764 -0
  41. data/ext/ffi_c/libffi/LICENSE +21 -0
  42. data/ext/ffi_c/libffi/Makefile.am +177 -0
  43. data/ext/ffi_c/libffi/Makefile.in +1640 -0
  44. data/ext/ffi_c/libffi/README +328 -0
  45. data/ext/ffi_c/libffi/TODO +1 -0
  46. data/ext/ffi_c/libffi/acinclude.m4 +92 -0
  47. data/ext/ffi_c/libffi/aclocal.m4 +7516 -0
  48. data/ext/ffi_c/libffi/compile +142 -0
  49. data/ext/ffi_c/libffi/config.guess +1516 -0
  50. data/ext/ffi_c/libffi/config.sub +1626 -0
  51. data/ext/ffi_c/libffi/configure +24414 -0
  52. data/ext/ffi_c/libffi/configure.ac +365 -0
  53. data/ext/ffi_c/libffi/configure.host +11 -0
  54. data/ext/ffi_c/libffi/depcomp +584 -0
  55. data/ext/ffi_c/libffi/doc/libffi.info +533 -0
  56. data/ext/ffi_c/libffi/doc/libffi.texi +541 -0
  57. data/ext/ffi_c/libffi/doc/stamp-vti +4 -0
  58. data/ext/ffi_c/libffi/doc/version.texi +4 -0
  59. data/ext/ffi_c/libffi/fficonfig.h.in +160 -0
  60. data/ext/ffi_c/libffi/include/Makefile.am +9 -0
  61. data/ext/ffi_c/libffi/include/Makefile.in +422 -0
  62. data/ext/ffi_c/libffi/include/ffi.h.in +393 -0
  63. data/ext/ffi_c/libffi/include/ffi_common.h +98 -0
  64. data/ext/ffi_c/libffi/install-sh +323 -0
  65. data/ext/ffi_c/libffi/libffi.pc.in +10 -0
  66. data/ext/ffi_c/libffi/libtool-version +29 -0
  67. data/ext/ffi_c/libffi/ltcf-c.sh +861 -0
  68. data/ext/ffi_c/libffi/ltcf-cxx.sh +1069 -0
  69. data/ext/ffi_c/libffi/ltcf-gcj.sh +700 -0
  70. data/ext/ffi_c/libffi/ltconfig +2862 -0
  71. data/ext/ffi_c/libffi/ltmain.sh +6930 -0
  72. data/ext/ffi_c/libffi/man/Makefile.am +8 -0
  73. data/ext/ffi_c/libffi/man/Makefile.in +395 -0
  74. data/ext/ffi_c/libffi/man/ffi.3 +31 -0
  75. data/ext/ffi_c/libffi/man/ffi_call.3 +103 -0
  76. data/ext/ffi_c/libffi/man/ffi_prep_cif.3 +66 -0
  77. data/ext/ffi_c/libffi/mdate-sh +201 -0
  78. data/ext/ffi_c/libffi/missing +353 -0
  79. data/ext/ffi_c/libffi/mkinstalldirs +158 -0
  80. data/ext/ffi_c/libffi/src/alpha/ffi.c +284 -0
  81. data/ext/ffi_c/libffi/src/alpha/ffitarget.h +48 -0
  82. data/ext/ffi_c/libffi/src/alpha/osf.S +366 -0
  83. data/ext/ffi_c/libffi/src/arm/ffi.c +309 -0
  84. data/ext/ffi_c/libffi/src/arm/ffitarget.h +49 -0
  85. data/ext/ffi_c/libffi/src/arm/sysv.S +299 -0
  86. data/ext/ffi_c/libffi/src/closures.c +596 -0
  87. data/ext/ffi_c/libffi/src/cris/ffi.c +383 -0
  88. data/ext/ffi_c/libffi/src/cris/ffitarget.h +51 -0
  89. data/ext/ffi_c/libffi/src/cris/sysv.S +215 -0
  90. data/ext/ffi_c/libffi/src/debug.c +59 -0
  91. data/ext/ffi_c/libffi/src/dlmalloc.c +5099 -0
  92. data/ext/ffi_c/libffi/src/frv/eabi.S +128 -0
  93. data/ext/ffi_c/libffi/src/frv/ffi.c +292 -0
  94. data/ext/ffi_c/libffi/src/frv/ffitarget.h +61 -0
  95. data/ext/ffi_c/libffi/src/ia64/ffi.c +580 -0
  96. data/ext/ffi_c/libffi/src/ia64/ffitarget.h +50 -0
  97. data/ext/ffi_c/libffi/src/ia64/ia64_flags.h +40 -0
  98. data/ext/ffi_c/libffi/src/ia64/unix.S +560 -0
  99. data/ext/ffi_c/libffi/src/java_raw_api.c +359 -0
  100. data/ext/ffi_c/libffi/src/m32r/ffi.c +232 -0
  101. data/ext/ffi_c/libffi/src/m32r/ffitarget.h +48 -0
  102. data/ext/ffi_c/libffi/src/m32r/sysv.S +121 -0
  103. data/ext/ffi_c/libffi/src/m68k/ffi.c +278 -0
  104. data/ext/ffi_c/libffi/src/m68k/ffitarget.h +49 -0
  105. data/ext/ffi_c/libffi/src/m68k/sysv.S +234 -0
  106. data/ext/ffi_c/libffi/src/mips/ffi.c +926 -0
  107. data/ext/ffi_c/libffi/src/mips/ffitarget.h +202 -0
  108. data/ext/ffi_c/libffi/src/mips/n32.S +534 -0
  109. data/ext/ffi_c/libffi/src/mips/o32.S +381 -0
  110. data/ext/ffi_c/libffi/src/pa/ffi.c +709 -0
  111. data/ext/ffi_c/libffi/src/pa/ffitarget.h +77 -0
  112. data/ext/ffi_c/libffi/src/pa/hpux32.S +368 -0
  113. data/ext/ffi_c/libffi/src/pa/linux.S +357 -0
  114. data/ext/ffi_c/libffi/src/powerpc/aix.S +225 -0
  115. data/ext/ffi_c/libffi/src/powerpc/aix_closure.S +247 -0
  116. data/ext/ffi_c/libffi/src/powerpc/asm.h +125 -0
  117. data/ext/ffi_c/libffi/src/powerpc/darwin.S +245 -0
  118. data/ext/ffi_c/libffi/src/powerpc/darwin_closure.S +317 -0
  119. data/ext/ffi_c/libffi/src/powerpc/ffi.c +1429 -0
  120. data/ext/ffi_c/libffi/src/powerpc/ffi_darwin.c +800 -0
  121. data/ext/ffi_c/libffi/src/powerpc/ffitarget.h +118 -0
  122. data/ext/ffi_c/libffi/src/powerpc/linux64.S +187 -0
  123. data/ext/ffi_c/libffi/src/powerpc/linux64_closure.S +236 -0
  124. data/ext/ffi_c/libffi/src/powerpc/ppc_closure.S +327 -0
  125. data/ext/ffi_c/libffi/src/powerpc/sysv.S +230 -0
  126. data/ext/ffi_c/libffi/src/prep_cif.c +174 -0
  127. data/ext/ffi_c/libffi/src/raw_api.c +254 -0
  128. data/ext/ffi_c/libffi/src/s390/ffi.c +780 -0
  129. data/ext/ffi_c/libffi/src/s390/ffitarget.h +60 -0
  130. data/ext/ffi_c/libffi/src/s390/sysv.S +434 -0
  131. data/ext/ffi_c/libffi/src/sh/ffi.c +716 -0
  132. data/ext/ffi_c/libffi/src/sh/ffitarget.h +49 -0
  133. data/ext/ffi_c/libffi/src/sh/sysv.S +850 -0
  134. data/ext/ffi_c/libffi/src/sh64/ffi.c +453 -0
  135. data/ext/ffi_c/libffi/src/sh64/ffitarget.h +53 -0
  136. data/ext/ffi_c/libffi/src/sh64/sysv.S +530 -0
  137. data/ext/ffi_c/libffi/src/sparc/ffi.c +610 -0
  138. data/ext/ffi_c/libffi/src/sparc/ffitarget.h +66 -0
  139. data/ext/ffi_c/libffi/src/sparc/v8.S +272 -0
  140. data/ext/ffi_c/libffi/src/sparc/v9.S +307 -0
  141. data/ext/ffi_c/libffi/src/types.c +77 -0
  142. data/ext/ffi_c/libffi/src/x86/darwin.S +443 -0
  143. data/ext/ffi_c/libffi/src/x86/darwin64.S +416 -0
  144. data/ext/ffi_c/libffi/src/x86/ffi.c +475 -0
  145. data/ext/ffi_c/libffi/src/x86/ffi64.c +572 -0
  146. data/ext/ffi_c/libffi/src/x86/ffitarget.h +90 -0
  147. data/ext/ffi_c/libffi/src/x86/freebsd.S +458 -0
  148. data/ext/ffi_c/libffi/src/x86/sysv.S +437 -0
  149. data/ext/ffi_c/libffi/src/x86/unix64.S +418 -0
  150. data/ext/ffi_c/libffi/src/x86/win32.S +391 -0
  151. data/ext/ffi_c/libffi/testsuite/Makefile.am +71 -0
  152. data/ext/ffi_c/libffi/testsuite/Makefile.in +447 -0
  153. data/ext/ffi_c/libffi/testsuite/config/default.exp +1 -0
  154. data/ext/ffi_c/libffi/testsuite/lib/libffi-dg.exp +289 -0
  155. data/ext/ffi_c/libffi/testsuite/lib/target-libpath.exp +263 -0
  156. data/ext/ffi_c/libffi/testsuite/lib/wrapper.exp +45 -0
  157. data/ext/ffi_c/libffi/testsuite/libffi.call/call.exp +36 -0
  158. data/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn0.c +97 -0
  159. data/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn1.c +89 -0
  160. data/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn2.c +89 -0
  161. data/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn3.c +90 -0
  162. data/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn4.c +97 -0
  163. data/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn5.c +99 -0
  164. data/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn6.c +98 -0
  165. data/ext/ffi_c/libffi/testsuite/libffi.call/closure_stdcall.c +72 -0
  166. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_12byte.c +102 -0
  167. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_16byte.c +103 -0
  168. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_18byte.c +104 -0
  169. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_19byte.c +110 -0
  170. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_1_1byte.c +97 -0
  171. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_20byte.c +99 -0
  172. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_20byte1.c +101 -0
  173. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_24byte.c +121 -0
  174. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_2byte.c +98 -0
  175. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_3_1byte.c +103 -0
  176. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_3byte1.c +98 -0
  177. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_3byte2.c +98 -0
  178. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_4_1byte.c +106 -0
  179. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_4byte.c +98 -0
  180. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_5_1_byte.c +117 -0
  181. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_5byte.c +106 -0
  182. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_64byte.c +132 -0
  183. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_6_1_byte.c +121 -0
  184. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_6byte.c +107 -0
  185. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_7_1_byte.c +125 -0
  186. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_7byte.c +105 -0
  187. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_8byte.c +96 -0
  188. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_9byte1.c +98 -0
  189. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_9byte2.c +99 -0
  190. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_double.c +101 -0
  191. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_float.c +99 -0
  192. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_longdouble.c +100 -0
  193. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_pointer.c +101 -0
  194. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_sint16.c +99 -0
  195. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_sint32.c +99 -0
  196. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_sint64.c +99 -0
  197. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_uint16.c +99 -0
  198. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_uint32.c +99 -0
  199. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_uint64.c +100 -0
  200. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_double.c +51 -0
  201. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_float.c +51 -0
  202. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_schar.c +82 -0
  203. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_sshort.c +82 -0
  204. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_sshortchar.c +94 -0
  205. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_uchar.c +99 -0
  206. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_ushort.c +82 -0
  207. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_ushortchar.c +94 -0
  208. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_schar.c +52 -0
  209. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_sint.c +50 -0
  210. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_sshort.c +50 -0
  211. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_uchar.c +50 -0
  212. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_uint.c +51 -0
  213. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_ulonglong.c +54 -0
  214. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_ushort.c +51 -0
  215. data/ext/ffi_c/libffi/testsuite/libffi.call/ffitest.h +86 -0
  216. data/ext/ffi_c/libffi/testsuite/libffi.call/float.c +59 -0
  217. data/ext/ffi_c/libffi/testsuite/libffi.call/float1.c +58 -0
  218. data/ext/ffi_c/libffi/testsuite/libffi.call/float2.c +57 -0
  219. data/ext/ffi_c/libffi/testsuite/libffi.call/float3.c +72 -0
  220. data/ext/ffi_c/libffi/testsuite/libffi.call/float4.c +62 -0
  221. data/ext/ffi_c/libffi/testsuite/libffi.call/many.c +69 -0
  222. data/ext/ffi_c/libffi/testsuite/libffi.call/many_win32.c +63 -0
  223. data/ext/ffi_c/libffi/testsuite/libffi.call/negint.c +53 -0
  224. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct.c +160 -0
  225. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct1.c +169 -0
  226. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct10.c +141 -0
  227. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct2.c +118 -0
  228. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct3.c +119 -0
  229. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct4.c +119 -0
  230. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct5.c +120 -0
  231. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct6.c +139 -0
  232. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct7.c +119 -0
  233. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct8.c +139 -0
  234. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct9.c +139 -0
  235. data/ext/ffi_c/libffi/testsuite/libffi.call/problem1.c +98 -0
  236. data/ext/ffi_c/libffi/testsuite/libffi.call/promotion.c +59 -0
  237. data/ext/ffi_c/libffi/testsuite/libffi.call/pyobjc-tc.c +114 -0
  238. data/ext/ffi_c/libffi/testsuite/libffi.call/return_dbl.c +35 -0
  239. data/ext/ffi_c/libffi/testsuite/libffi.call/return_dbl1.c +43 -0
  240. data/ext/ffi_c/libffi/testsuite/libffi.call/return_dbl2.c +42 -0
  241. data/ext/ffi_c/libffi/testsuite/libffi.call/return_fl.c +35 -0
  242. data/ext/ffi_c/libffi/testsuite/libffi.call/return_fl1.c +36 -0
  243. data/ext/ffi_c/libffi/testsuite/libffi.call/return_fl2.c +49 -0
  244. data/ext/ffi_c/libffi/testsuite/libffi.call/return_fl3.c +42 -0
  245. data/ext/ffi_c/libffi/testsuite/libffi.call/return_ldl.c +34 -0
  246. data/ext/ffi_c/libffi/testsuite/libffi.call/return_ll.c +41 -0
  247. data/ext/ffi_c/libffi/testsuite/libffi.call/return_ll1.c +42 -0
  248. data/ext/ffi_c/libffi/testsuite/libffi.call/return_sc.c +36 -0
  249. data/ext/ffi_c/libffi/testsuite/libffi.call/return_sl.c +38 -0
  250. data/ext/ffi_c/libffi/testsuite/libffi.call/return_uc.c +38 -0
  251. data/ext/ffi_c/libffi/testsuite/libffi.call/return_ul.c +38 -0
  252. data/ext/ffi_c/libffi/testsuite/libffi.call/strlen.c +44 -0
  253. data/ext/ffi_c/libffi/testsuite/libffi.call/strlen_win32.c +44 -0
  254. data/ext/ffi_c/libffi/testsuite/libffi.call/struct1.c +65 -0
  255. data/ext/ffi_c/libffi/testsuite/libffi.call/struct2.c +67 -0
  256. data/ext/ffi_c/libffi/testsuite/libffi.call/struct3.c +59 -0
  257. data/ext/ffi_c/libffi/testsuite/libffi.call/struct4.c +63 -0
  258. data/ext/ffi_c/libffi/testsuite/libffi.call/struct5.c +65 -0
  259. data/ext/ffi_c/libffi/testsuite/libffi.call/struct6.c +64 -0
  260. data/ext/ffi_c/libffi/testsuite/libffi.call/struct7.c +74 -0
  261. data/ext/ffi_c/libffi/testsuite/libffi.call/struct8.c +80 -0
  262. data/ext/ffi_c/libffi/testsuite/libffi.call/struct9.c +67 -0
  263. data/ext/ffi_c/libffi/testsuite/libffi.special/ffitestcxx.h +86 -0
  264. data/ext/ffi_c/libffi/testsuite/libffi.special/special.exp +38 -0
  265. data/ext/ffi_c/libffi/testsuite/libffi.special/unwindtest.cc +123 -0
  266. data/ext/ffi_c/libffi/testsuite/libffi.special/unwindtest_ffi_call.cc +53 -0
  267. data/ext/ffi_c/libffi/texinfo.tex +7482 -0
  268. data/ext/ffi_c/rbffi.h +23 -0
  269. data/gen/Rakefile +12 -0
  270. data/lib/1.8/ffi_c.so +0 -0
  271. data/lib/1.9/ffi_c.so +0 -0
  272. data/lib/ffi.rb +11 -0
  273. data/lib/ffi/autopointer.rb +61 -0
  274. data/lib/ffi/buffer.rb +0 -0
  275. data/lib/ffi/callback.rb +10 -0
  276. data/lib/ffi/enum.rb +78 -0
  277. data/lib/ffi/errno.rb +8 -0
  278. data/lib/ffi/ffi.rb +96 -0
  279. data/lib/ffi/io.rb +21 -0
  280. data/lib/ffi/library.rb +243 -0
  281. data/lib/ffi/managedstruct.rb +55 -0
  282. data/lib/ffi/memorypointer.rb +73 -0
  283. data/lib/ffi/platform.rb +78 -0
  284. data/lib/ffi/pointer.rb +119 -0
  285. data/lib/ffi/struct.rb +354 -0
  286. data/lib/ffi/tools/const_generator.rb +177 -0
  287. data/lib/ffi/tools/generator.rb +58 -0
  288. data/lib/ffi/tools/generator_task.rb +35 -0
  289. data/lib/ffi/tools/struct_generator.rb +194 -0
  290. data/lib/ffi/tools/types_generator.rb +123 -0
  291. data/lib/ffi/types.rb +153 -0
  292. data/lib/ffi/union.rb +17 -0
  293. data/lib/ffi/variadic.rb +30 -0
  294. data/spec/ffi/bool_spec.rb +24 -0
  295. data/spec/ffi/buffer_spec.rb +196 -0
  296. data/spec/ffi/callback_spec.rb +560 -0
  297. data/spec/ffi/enum_spec.rb +164 -0
  298. data/spec/ffi/errno_spec.rb +13 -0
  299. data/spec/ffi/library_spec.rb +144 -0
  300. data/spec/ffi/managed_struct_spec.rb +56 -0
  301. data/spec/ffi/number_spec.rb +231 -0
  302. data/spec/ffi/pointer_spec.rb +195 -0
  303. data/spec/ffi/rbx/attach_function_spec.rb +27 -0
  304. data/spec/ffi/rbx/memory_pointer_spec.rb +102 -0
  305. data/spec/ffi/rbx/spec_helper.rb +1 -0
  306. data/spec/ffi/rbx/struct_spec.rb +13 -0
  307. data/spec/ffi/spec_helper.rb +17 -0
  308. data/spec/ffi/string_spec.rb +103 -0
  309. data/spec/ffi/struct_callback_spec.rb +41 -0
  310. data/spec/ffi/struct_initialize_spec.rb +30 -0
  311. data/spec/ffi/struct_spec.rb +476 -0
  312. data/spec/ffi/typedef_spec.rb +48 -0
  313. data/spec/ffi/union_spec.rb +60 -0
  314. data/spec/ffi/variadic_spec.rb +84 -0
  315. data/spec/spec.opts +4 -0
  316. metadata +375 -0
@@ -0,0 +1,1069 @@
1
+ #### This script is meant to be sourced by ltconfig.
2
+
3
+ # ltcf-cxx.sh - Create a C++ compiler specific configuration
4
+ #
5
+ # Copyright (C) 1996-1999, 2000, 2001, 2003 Free Software Foundation, Inc.
6
+ # Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
7
+ #
8
+ # Original C++ support by:Gary V. Vaughan <gvv@techie.com>
9
+ # Alexandre Oliva <oliva@lsd.ic.unicamp.br>
10
+ # Ossama Othman <ossama@debian.org>
11
+ # Thomas Thanner <tanner@gmx.de>
12
+ #
13
+ # This file is free software; you can redistribute it and/or modify it
14
+ # under the terms of the GNU General Public License as published by
15
+ # the Free Software Foundation; either version 2 of the License, or
16
+ # (at your option) any later version.
17
+ #
18
+ # This program is distributed in the hope that it will be useful, but
19
+ # WITHOUT ANY WARRANTY; without even the implied warranty of
20
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
21
+ # General Public License for more details.
22
+ #
23
+ # You should have received a copy of the GNU General Public License
24
+ # along with this program; if not, write to the Free Software
25
+ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
26
+ #
27
+ # As a special exception to the GNU General Public License, if you
28
+ # distribute this file as part of a program that contains a
29
+ # configuration script generated by Autoconf, you may include it under
30
+ # the same distribution terms that you use for the rest of that program.
31
+
32
+
33
+ # Source file extension for C++ test sources.
34
+ ac_ext=cc
35
+
36
+ # Object file extension for compiled C++ test sources.
37
+ objext=o
38
+
39
+ # Code to be used in simple compile tests
40
+ lt_simple_compile_test_code="int some_variable = 0;"
41
+
42
+ # Code to be used in simple link tests
43
+ lt_simple_link_test_code='int main(int, char *[]) { return (0); }'
44
+
45
+ # C++ compiler
46
+ CXX=${CXX-c++}
47
+
48
+ # ltmain only uses $CC for tagged configurations so make sure $CC is set.
49
+ CC=${CC-"$CXX"}
50
+ CFLAGS=${CFLAGS-"$CXXFLAGS"}
51
+
52
+ # Allow CC to be a program name with arguments.
53
+ set dummy $CC
54
+ compiler=$2
55
+ cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'`
56
+
57
+ # Check if we are using GNU gcc (taken/adapted from configure script)
58
+ # We need to check here since "--with-gcc" is set at configure time,
59
+ # not ltconfig time!
60
+ cat > conftest.$ac_ext <<EOF
61
+ #ifdef __GNUC__
62
+ yes;
63
+ #endif
64
+ EOF
65
+ if { ac_try='${CC-c++} -E conftest.$ac_ext'; { (eval echo \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
66
+ with_gcc=yes
67
+
68
+ # Set up default GNU C++ configuration
69
+
70
+ # Check if GNU C++ uses GNU ld as the underlying linker, since the
71
+ # archiving commands below assume that GNU ld is being used. The
72
+ # assumption here is that the linker is going to be the same as that
73
+ # used by the C compiler. For the purposes of GCC, this is ok, but
74
+ # if someone uses g++ along with a non-GNU C compiler that doesn't
75
+ # use GNU ld, we may lose. This is ok for the toolchain tree, since
76
+ # the only users of ltcf-cxx.sh are libstdc++-v3 and libjava,
77
+ # anyway, and those use both gcc and g++, so the settings are bound
78
+ # to be the same.
79
+
80
+ if test "$with_gnu_ld" = yes; then
81
+ archive_cmds='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
82
+ archive_expsym_cmds='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
83
+
84
+ hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir'
85
+ export_dynamic_flag_spec='${wl}--export-dynamic'
86
+
87
+ # If archive_cmds runs LD, not CC, wlarc should be empty
88
+ # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
89
+ # investigate it a little bit more. (MM)
90
+ wlarc='${wl}'
91
+
92
+ # ancient GNU ld didn't support --whole-archive et. al.
93
+ if eval "`$CC -print-prog-name=ld` --help 2>&1" | \
94
+ egrep 'no-whole-archive' > /dev/null; then
95
+ whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
96
+ else
97
+ whole_archive_flag_spec=
98
+ fi
99
+ else
100
+ wlarc=
101
+
102
+ # A generic and very simple default shared library creation
103
+ # command for GNU C++ for the case where it uses the native
104
+ # linker, instead of GNU ld. If possible, this setting should
105
+ # overridden to take advantage of the native linker features on
106
+ # the platform it is being used on.
107
+ archive_cmds='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
108
+ fi
109
+
110
+ # Commands to make compiler produce verbose output that lists
111
+ # what "hidden" libraries, object files and flags are used when
112
+ # linking a shared library.
113
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | egrep "\-L"'
114
+
115
+ else
116
+ with_gcc=no
117
+ wlarc=
118
+ fi
119
+
120
+ # PORTME: fill in a description of your system's C++ link characteristics
121
+ case $host_os in
122
+ aix3*)
123
+ # FIXME: insert proper C++ library support
124
+ ld_shlibs=no
125
+ ;;
126
+ aix4* | aix5*)
127
+ archive_cmds=''
128
+ hardcode_direct=yes
129
+ hardcode_libdir_separator=':'
130
+ link_all_deplibs=yes
131
+ # When large executables or shared objects are built, AIX ld can
132
+ # have problems creating the table of contents. If linking a library
133
+ # or program results in "error TOC overflow" add -mminimal-toc to
134
+ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
135
+ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
136
+ if test "$with_gcc" = yes; then
137
+ case $host_os in aix4.[012]|aix4.[012].*)
138
+ # We only want to do this on AIX 4.2 and lower, the check
139
+ # below for broken collect2 doesn't work under 4.3+
140
+ collect2name=`${CC} -print-prog-name=collect2`
141
+ if test -f "$collect2name" && \
142
+ strings "$collect2name" | grep resolve_lib_name >/dev/null
143
+ then
144
+ # We have reworked collect2
145
+ hardcode_direct=yes
146
+ else
147
+ # We have old collect2
148
+ hardcode_direct=unsupported
149
+ # It fails to find uninstalled libraries when the uninstalled
150
+ # path is not listed in the libpath. Setting hardcode_minus_L
151
+ # to unsupported forces relinking
152
+ hardcode_minus_L=yes
153
+ hardcode_libdir_flag_spec='-L$libdir'
154
+ hardcode_libdir_separator=
155
+ fi
156
+ esac
157
+ shared_flag='-shared'
158
+ else
159
+ # not using gcc
160
+ if test "$host_cpu" = ia64; then
161
+ shared_flag='${wl}-G'
162
+ else
163
+ shared_flag='${wl}-bM:SRE'
164
+ fi
165
+ fi
166
+
167
+ if test "$host_cpu" = ia64; then
168
+ # On IA64, the linker does run time linking by default, so we don't
169
+ # have to do anything special.
170
+ aix_use_runtimelinking=no
171
+ if test $with_gnu_ld = no; then
172
+ exp_sym_flag='-Bexport'
173
+ no_entry_flag=""
174
+ fi
175
+ else
176
+ # Test if we are trying to use run time linking, or normal AIX style linking.
177
+ # If -brtl is somewhere in LDFLAGS, we need to do run time linking.
178
+ aix_use_runtimelinking=no
179
+ for ld_flag in $LDFLAGS; do
180
+ if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl" ); then
181
+ aix_use_runtimelinking=yes
182
+ break
183
+ fi
184
+ done
185
+ exp_sym_flag='-bexport'
186
+ no_entry_flag='-bnoentry'
187
+ fi
188
+ # It seems that -bexpall does not export symbols beginning with
189
+ # underscore (_), so it is better to generate a list of symbols to export.
190
+ always_export_symbols=yes
191
+ if test "$aix_use_runtimelinking" = yes; then
192
+ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:/usr/lib:/lib'
193
+ allow_undefined_flag=' -Wl,-G'
194
+ archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}-brtl \${wl}$exp_sym_flag:\$export_symbols"
195
+ else
196
+ if test "$host_cpu" = ia64; then
197
+ if test $with_gnu_ld = no; then
198
+ hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
199
+ allow_undefined_flag="-z nodefs"
200
+ archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
201
+ fi
202
+ else
203
+ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:/usr/lib:/lib'
204
+ # Warning - without using the other run time loading flags, -berok will
205
+ # link without error, but may produce a broken library.
206
+ no_undefined_flag=' ${wl}-bnoerok'
207
+ allow_undefined_flag=' ${wl}-berok'
208
+ # -bexpall does not export symbols beginning with underscore (_)
209
+ always_export_symbols=yes
210
+ # Exported symbols can be pulled into shared objects from archives
211
+ whole_archive_flag_spec=' '
212
+ build_libtool_need_lc=yes
213
+ # This is similar to how AIX traditionally builds it's shared libraries.
214
+ archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
215
+ fi
216
+ fi
217
+ ;;
218
+ chorus*)
219
+ case $cc_basename in
220
+ *)
221
+ # FIXME: insert proper C++ library support
222
+ ld_shlibs=no
223
+ ;;
224
+ esac
225
+ ;;
226
+
227
+ darwin* | rhapsody*)
228
+ case "$host_os" in
229
+ rhapsody* | darwin1.[[012]])
230
+ allow_undefined_flag='-undefined suppress'
231
+ ;;
232
+ *) # Darwin 1.3 on
233
+ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
234
+ allow_undefined_flag='-flat_namespace -undefined suppress'
235
+ else
236
+ case ${MACOSX_DEPLOYMENT_TARGET} in
237
+ 10.[[012]])
238
+ allow_undefined_flag='-flat_namespace -undefined suppress'
239
+ ;;
240
+ 10.*)
241
+ allow_undefined_flag='-undefined dynamic_lookup'
242
+ ;;
243
+ esac
244
+ fi
245
+ ;;
246
+ esac
247
+ # Disable shared library build on OS-X older than 10.3.
248
+ case $host_os in
249
+ darwin[1-6]*)
250
+ can_build_shared=no
251
+ ;;
252
+ darwin7*)
253
+ can_build_shared=yes
254
+ ;;
255
+ esac
256
+ output_verbose_link_cmd='echo'
257
+
258
+ archive_cmds='$CXX -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
259
+ module_cmds='$CC ${wl}-bind_at_load $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
260
+
261
+ # Don't fix this by using the ld -exported_symbols_list flag,
262
+ # it doesn't exist in older darwin ld's
263
+ archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
264
+ module_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
265
+ hardcode_direct=no
266
+ hardcode_automatic=yes
267
+ hardcode_shlibpath_var=unsupported
268
+ link_all_deplibs=yes
269
+ ;;
270
+
271
+ dgux*)
272
+ case $cc_basename in
273
+ ec++)
274
+ # FIXME: insert proper C++ library support
275
+ ld_shlibs=no
276
+ ;;
277
+ ghcx)
278
+ # Green Hills C++ Compiler
279
+ # FIXME: insert proper C++ library support
280
+ ld_shlibs=no
281
+ ;;
282
+ *)
283
+ # FIXME: insert proper C++ library support
284
+ ld_shlibs=no
285
+ ;;
286
+ esac
287
+ ;;
288
+ freebsd[12]*)
289
+ # C++ shared libraries reported to be fairly broken before switch to ELF
290
+ ld_shlibs=no
291
+ ;;
292
+ freebsd* | kfreebsd*-gnu)
293
+ # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
294
+ # conventions
295
+ ld_shlibs=yes
296
+ ;;
297
+ gnu*)
298
+ ;;
299
+ hpux*)
300
+ if test $with_gnu_ld = no; then
301
+ case "$host_cpu" in
302
+ ia64*)
303
+ hardcode_libdir_flag_spec='-L$libdir'
304
+ hardcode_shlibpath_var=no ;;
305
+ *)
306
+ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' ;;
307
+ esac
308
+ hardcode_direct=yes
309
+ hardcode_libdir_separator=:
310
+ export_dynamic_flag_spec='${wl}-E'
311
+ fi
312
+ hardcode_minus_L=yes # Not in the search PATH, but as the default
313
+ # location of the library.
314
+
315
+ case $cc_basename in
316
+ CC)
317
+ # FIXME: insert proper C++ library support
318
+ ld_shlibs=no
319
+ ;;
320
+ aCC)
321
+ case $host_os in
322
+ hpux9*) archive_cmds='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' ;;
323
+ *) archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;;
324
+ esac
325
+ # Commands to make compiler produce verbose output that lists
326
+ # what "hidden" libraries, object files and flags are used when
327
+ # linking a shared library.
328
+ #
329
+ # There doesn't appear to be a way to prevent this compiler from
330
+ # explicitly linking system object files so we need to strip them
331
+ # from the output so that they don't get included in the library
332
+ # dependencies.
333
+ output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | egrep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
334
+ ;;
335
+ *)
336
+ if test $with_gcc = yes; then
337
+ if test $with_gnu_ld = no; then
338
+ case "$host_os" in
339
+ hpux9*) archive_cmds='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' ;;
340
+ *)
341
+ case "$host_cpu" in
342
+ ia64*)
343
+ archive_cmds='$LD -b +h $soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' ;;
344
+ *)
345
+ archive_cmds='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;;
346
+ esac
347
+ ;;
348
+ esac
349
+ fi
350
+ else
351
+ # FIXME: insert proper C++ library support
352
+ ld_shlibs=no
353
+ fi
354
+ ;;
355
+ esac
356
+ ;;
357
+ irix5* | irix6*)
358
+ case $cc_basename in
359
+ CC)
360
+ # SGI C++
361
+ archive_cmds='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib'
362
+
363
+ # Archives containing C++ object files must be created using
364
+ # "CC -ar", where "CC" is the IRIX C++ compiler. This is
365
+ # necessary to make sure instantiated templates are included
366
+ # in the archive.
367
+ old_archive_cmds='$CC -ar -WR,-u -o $oldlib $oldobjs'
368
+ ;;
369
+ *)
370
+ if test "$with_gcc" = yes; then
371
+ if test "$with_gnu_ld" = no; then
372
+ archive_cmds='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib'
373
+ else
374
+ archive_cmds='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo -set_version $verstring` -o $lib'
375
+ fi
376
+ fi
377
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
378
+ hardcode_libdir_separator=:
379
+ link_all_deplibs=yes
380
+ ;;
381
+ esac
382
+ ;;
383
+ linux*)
384
+ case $cc_basename in
385
+ KCC)
386
+ # Kuck and Associates, Inc. (KAI) C++ Compiler
387
+
388
+ # KCC will only create a shared library if the output file
389
+ # ends with ".so" (or ".sl" for HP-UX), so rename the library
390
+ # to its proper name (with version) after linking.
391
+ archive_cmds='templib=`echo $lib | sed -e "s/\.so\..*/\.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
392
+ archive_expsym_cmds='templib=`echo $lib | sed -e "s/\.so\..*/\.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
393
+
394
+ # Commands to make compiler produce verbose output that lists
395
+ # what "hidden" libraries, object files and flags are used when
396
+ # linking a shared library.
397
+ #
398
+ # There doesn't appear to be a way to prevent this compiler from
399
+ # explicitly linking system object files so we need to strip them
400
+ # from the output so that they don't get included in the library
401
+ # dependencies.
402
+ output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest.so 2>&1 | egrep "ld"`; rm -f libconftest.so; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
403
+
404
+ hardcode_libdir_flag_spec='${wl}--rpath,$libdir'
405
+ export_dynamic_flag_spec='${wl}--export-dynamic'
406
+
407
+ # Archives containing C++ object files must be created using
408
+ # "CC -Bstatic", where "CC" is the KAI C++ compiler.
409
+ old_archive_cmds='$CC -Bstatic -o $oldlib $oldobjs'
410
+ ;;
411
+ cxx)
412
+ # Compaq C++
413
+ archive_cmds='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
414
+ archive_expsym_cmds='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
415
+
416
+ runpath_var=LD_RUN_PATH
417
+ hardcode_libdir_flag_spec='-rpath $libdir'
418
+ hardcode_libdir_separator=:
419
+
420
+ # Commands to make compiler produce verbose output that lists
421
+ # what "hidden" libraries, object files and flags are used when
422
+ # linking a shared library.
423
+ #
424
+ # There doesn't appear to be a way to prevent this compiler from
425
+ # explicitly linking system object files so we need to strip them
426
+ # from the output so that they don't get included in the library
427
+ # dependencies.
428
+ output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | sed "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
429
+ ;;
430
+ esac
431
+ ;;
432
+ lynxos*)
433
+ # FIXME: insert proper C++ library support
434
+ ld_shlibs=no
435
+ ;;
436
+ m88k*)
437
+ # FIXME: insert proper C++ library support
438
+ ld_shlibs=no
439
+ ;;
440
+ mvs*)
441
+ case $cc_basename in
442
+ cxx)
443
+ # FIXME: insert proper C++ library support
444
+ ld_shlibs=no
445
+ ;;
446
+ *)
447
+ # FIXME: insert proper C++ library support
448
+ ld_shlibs=no
449
+ ;;
450
+ esac
451
+ ;;
452
+ netbsd* | knetbsd*-gnu)
453
+ # NetBSD uses g++ - do we need to do anything?
454
+ ;;
455
+ osf3*)
456
+ case $cc_basename in
457
+ KCC)
458
+ # Kuck and Associates, Inc. (KAI) C++ Compiler
459
+
460
+ # KCC will only create a shared library if the output file
461
+ # ends with ".so" (or ".sl" for HP-UX), so rename the library
462
+ # to its proper name (with version) after linking.
463
+ archive_cmds='templib=`echo $lib | sed -e "s/\.so\..*/\.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
464
+
465
+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
466
+ hardcode_libdir_separator=:
467
+
468
+ # Archives containing C++ object files must be created using
469
+ # "CC -Bstatic", where "CC" is the KAI C++ compiler.
470
+ old_archive_cmds='$CC -Bstatic -o $oldlib $oldobjs'
471
+
472
+ ;;
473
+ RCC)
474
+ # Rational C++ 2.4.1
475
+ # FIXME: insert proper C++ library support
476
+ ld_shlibs=no
477
+ ;;
478
+ cxx)
479
+ allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
480
+ archive_cmds='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${objdir}/so_locations -o $lib'
481
+
482
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
483
+ hardcode_libdir_separator=:
484
+
485
+ # Commands to make compiler produce verbose output that lists
486
+ # what "hidden" libraries, object files and flags are used when
487
+ # linking a shared library.
488
+ #
489
+ # There doesn't appear to be a way to prevent this compiler from
490
+ # explicitly linking system object files so we need to strip them
491
+ # from the output so that they don't get included in the library
492
+ # dependencies.
493
+ output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | sed "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
494
+ ;;
495
+ *)
496
+ if test "$with_gcc" = yes && test "$with_gnu_ld" = no; then
497
+ allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
498
+ archive_cmds='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib'
499
+
500
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
501
+ hardcode_libdir_separator=:
502
+
503
+ # Commands to make compiler produce verbose output that lists
504
+ # what "hidden" libraries, object files and flags are used when
505
+ # linking a shared library.
506
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | egrep "\-L"'
507
+ else
508
+ # FIXME: insert proper C++ library support
509
+ ld_shlibs=no
510
+ fi
511
+ ;;
512
+ esac
513
+ ;;
514
+ osf4* | osf5*)
515
+ case $cc_basename in
516
+ KCC)
517
+ # Kuck and Associates, Inc. (KAI) C++ Compiler
518
+
519
+ # KCC will only create a shared library if the output file
520
+ # ends with ".so" (or ".sl" for HP-UX), so rename the library
521
+ # to its proper name (with version) after linking.
522
+ archive_cmds='templib=`echo $lib | sed -e "s/\.so\..*/\.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
523
+
524
+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
525
+ hardcode_libdir_separator=:
526
+
527
+ # Archives containing C++ object files must be created using
528
+ # the KAI C++ compiler.
529
+ old_archive_cmds='$CC -o $oldlib $oldobjs'
530
+ ;;
531
+ RCC)
532
+ # Rational C++ 2.4.1
533
+ # FIXME: insert proper C++ library support
534
+ ld_shlibs=no
535
+ ;;
536
+ cxx)
537
+ allow_undefined_flag=' -expect_unresolved \*'
538
+ archive_cmds='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib'
539
+ archive_expsym_cmds='for i in `cat $export_symbols`; do printf "-exported_symbol " >> $lib.exp; echo "\$i" >> $lib.exp; done~
540
+ echo "-hidden">> $lib.exp~
541
+ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry $objdir/so_locations -o $lib~
542
+ $rm $lib.exp'
543
+
544
+ hardcode_libdir_flag_spec='-rpath $libdir'
545
+ hardcode_libdir_separator=:
546
+
547
+ # Commands to make compiler produce verbose output that lists
548
+ # what "hidden" libraries, object files and flags are used when
549
+ # linking a shared library.
550
+ #
551
+ # There doesn't appear to be a way to prevent this compiler from
552
+ # explicitly linking system object files so we need to strip them
553
+ # from the output so that they don't get included in the library
554
+ # dependencies.
555
+ output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | sed "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
556
+ ;;
557
+ *)
558
+ if test "$with_gcc" = yes && test "$with_gnu_ld" = no; then
559
+ allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
560
+ archive_cmds='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib'
561
+
562
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
563
+ hardcode_libdir_separator=:
564
+
565
+ # Commands to make compiler produce verbose output that lists
566
+ # what "hidden" libraries, object files and flags are used when
567
+ # linking a shared library.
568
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | egrep "\-L"'
569
+ else
570
+ # FIXME: insert proper C++ library support
571
+ ld_shlibs=no
572
+ fi
573
+ ;;
574
+ esac
575
+ ;;
576
+ psos*)
577
+ # FIXME: insert proper C++ library support
578
+ ld_shlibs=no
579
+ ;;
580
+ sco*)
581
+ case $cc_basename in
582
+ CC)
583
+ # FIXME: insert proper C++ library support
584
+ ld_shlibs=no
585
+ ;;
586
+ *)
587
+ # FIXME: insert proper C++ library support
588
+ ld_shlibs=no
589
+ ;;
590
+ esac
591
+ ;;
592
+ sunos4*)
593
+ case $cc_basename in
594
+ CC)
595
+ # Sun C++ 4.x
596
+ # FIXME: insert proper C++ library support
597
+ ld_shlibs=no
598
+ ;;
599
+ lcc)
600
+ # Lucid
601
+ # FIXME: insert proper C++ library support
602
+ ld_shlibs=no
603
+ ;;
604
+ *)
605
+ # FIXME: insert proper C++ library support
606
+ ld_shlibs=no
607
+ ;;
608
+ esac
609
+ ;;
610
+ solaris*)
611
+ case $cc_basename in
612
+ CC)
613
+ # Sun C++ 4.2, 5.x and Centerline C++
614
+ no_undefined_flag=' -zdefs'
615
+ archive_cmds='$CC -G${allow_undefined_flag} -nolib -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
616
+ archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
617
+ $CC -G${allow_undefined_flag} -nolib ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
618
+
619
+ hardcode_libdir_flag_spec='-R$libdir'
620
+ hardcode_shlibpath_var=no
621
+ case $host_os in
622
+ solaris2.[0-5] | solaris2.[0-5].*) ;;
623
+ *)
624
+ # The C++ compiler is used as linker so we must use $wl
625
+ # flag to pass the commands to the underlying system
626
+ # linker.
627
+ # Supported since Solaris 2.6 (maybe 2.5.1?)
628
+ whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
629
+ ;;
630
+ esac
631
+ link_all_deplibs=yes
632
+
633
+ # Commands to make compiler produce verbose output that lists
634
+ # what "hidden" libraries, object files and flags are used when
635
+ # linking a shared library.
636
+ #
637
+ # There doesn't appear to be a way to prevent this compiler from
638
+ # explicitly linking system object files so we need to strip them
639
+ # from the output so that they don't get included in the library
640
+ # dependencies.
641
+ output_verbose_link_cmd='templist=`$CC -G $CFLAGS -v conftest.$objext 2>&1 | egrep "\-R|\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
642
+
643
+ # Archives containing C++ object files must be created using
644
+ # "CC -xar", where "CC" is the Sun C++ compiler. This is
645
+ # necessary to make sure instantiated templates are included
646
+ # in the archive.
647
+ old_archive_cmds='$CC -xar -o $oldlib $oldobjs'
648
+ ;;
649
+ gcx)
650
+ # Green Hills C++ Compiler
651
+ archive_cmds='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
652
+
653
+ # The C++ compiler must be used to create the archive.
654
+ old_archive_cmds='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
655
+ ;;
656
+ *)
657
+ # GNU C++ compiler with Solaris linker
658
+ if test "$with_gcc" = yes && test "$with_gnu_ld" = no; then
659
+ no_undefined_flag=' ${wl}-z ${wl}defs'
660
+ if $CC --version | egrep -v '^2\.7' > /dev/null; then
661
+ archive_cmds='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
662
+ archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
663
+ $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
664
+
665
+ # Commands to make compiler produce verbose output that lists
666
+ # what "hidden" libraries, object files and flags are used when
667
+ # linking a shared library.
668
+ output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | egrep \"\-L\""
669
+ else
670
+ # g++ 2.7 appears to require `-G' NOT `-shared' on this
671
+ # platform.
672
+ archive_cmds='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
673
+ archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
674
+ $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
675
+
676
+ # Commands to make compiler produce verbose output that lists
677
+ # what "hidden" libraries, object files and flags are used when
678
+ # linking a shared library.
679
+ output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | egrep \"\-L\""
680
+ fi
681
+
682
+ hardcode_libdir_flag_spec='${wl}-R $wl$libdir'
683
+ fi
684
+ ;;
685
+ esac
686
+ ;;
687
+ tandem*)
688
+ case $cc_basename in
689
+ NCC)
690
+ # NonStop-UX NCC 3.20
691
+ # FIXME: insert proper C++ library support
692
+ ld_shlibs=no
693
+ ;;
694
+ *)
695
+ # FIXME: insert proper C++ library support
696
+ ld_shlibs=no
697
+ ;;
698
+ esac
699
+ ;;
700
+ tpf*)
701
+ ld_shlibs=yes
702
+ ;;
703
+ unixware*)
704
+ # FIXME: insert proper C++ library support
705
+ ld_shlibs=no
706
+ ;;
707
+ vxworks*)
708
+ # FIXME: insert proper C++ library support
709
+ ld_shlibs=no
710
+ ;;
711
+ *)
712
+ # FIXME: insert proper C++ library support
713
+ ld_shlibs=no
714
+ ;;
715
+ esac
716
+
717
+
718
+ ## Compiler Characteristics: PIC flags, static flags, etc
719
+
720
+ # We don't use cached values here since only the C compiler
721
+ # characteristics should be cached.
722
+ ac_cv_prog_cc_pic=
723
+ ac_cv_prog_cc_shlib=
724
+ ac_cv_prog_cc_wl=
725
+ ac_cv_prog_cc_static=
726
+ ac_cv_prog_cc_no_builtin=
727
+ ac_cv_prog_cc_can_build_shared=$can_build_shared
728
+
729
+ ac_cv_prog_cc_pic_works=
730
+ ac_cv_prog_cc_static_works=
731
+
732
+ if test "$with_gcc" = yes; then
733
+ ac_cv_prog_cc_wl='-Wl,'
734
+ ac_cv_prog_cc_static='-static'
735
+
736
+ case $host_os in
737
+ aix*)
738
+ # All AIX code is PIC.
739
+ if test "$host_cpu" = ia64; then
740
+ # AIX 5 now supports IA64 processor
741
+ lt_cv_prog_cc_static='-Bstatic'
742
+ else
743
+ lt_cv_prog_cc_static='-bnso -bI:/lib/syscalls.exp'
744
+ fi
745
+ ;;
746
+ amigaos*)
747
+ # FIXME: we need at least 68020 code to build shared libraries, but
748
+ # adding the `-m68020' flag to GCC prevents building anything better,
749
+ # like `-m68040'.
750
+ ac_cv_prog_cc_pic='-m68020 -resident32 -malways-restore-a4'
751
+ ;;
752
+ beos* | irix5* | irix6* | osf3* | osf4* | osf5*)
753
+ # PIC is the default for these OSes.
754
+ ;;
755
+ cygwin* | mingw* | os2*)
756
+ # This hack is so that the source file can tell whether it is being
757
+ # built for inclusion in a dll (and should export symbols for example).
758
+ ac_cv_prog_cc_pic='-DDLL_EXPORT'
759
+ ;;
760
+ darwin* | rhapsody*)
761
+ # PIC is the default on this platform
762
+ # Common symbols not allowed in MH_DYLIB files
763
+ ac_cv_prog_cc_pic='-fno-common'
764
+ ;;
765
+ *djgpp*)
766
+ # DJGPP does not support shared libraries at all
767
+ ac_cv_prog_cc_pic=
768
+ ;;
769
+ sysv4*MP*)
770
+ if test -d /usr/nec; then
771
+ ac_cv_prog_cc_pic=-Kconform_pic
772
+ fi
773
+ ;;
774
+ *)
775
+ ac_cv_prog_cc_pic='-fPIC'
776
+ ;;
777
+ esac
778
+ else
779
+ case $host_os in
780
+ aix4* | aix5*)
781
+ # All AIX code is PIC.
782
+ if test "$host_cpu" = ia64; then
783
+ # AIX 5 now supports IA64 processor
784
+ lt_cv_prog_cc_static='-Bstatic'
785
+ else
786
+ lt_cv_prog_cc_static='-bnso -bI:/lib/syscalls.exp'
787
+ fi
788
+ ;;
789
+ chorus*)
790
+ case $cc_basename in
791
+ cxch68)
792
+ # Green Hills C++ Compiler
793
+ # ac_cv_prog_cc_static="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
794
+ ;;
795
+ esac
796
+ ;;
797
+ dgux*)
798
+ case $cc_basename in
799
+ ec++)
800
+ ac_cv_prog_cc_pic='-KPIC'
801
+ ;;
802
+ ghcx)
803
+ # Green Hills C++ Compiler
804
+ ac_cv_prog_cc_pic='-pic'
805
+ ;;
806
+ *)
807
+ ;;
808
+ esac
809
+ ;;
810
+ freebsd* | kfreebsd*-gnu)
811
+ # FreeBSD uses GNU C++
812
+ ;;
813
+ gnu*)
814
+ ;;
815
+ hpux9* | hpux10* | hpux11*)
816
+ case $cc_basename in
817
+ CC)
818
+ ac_cv_prog_cc_wl='-Wl,'
819
+ ac_cv_prog_cc_static="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive"
820
+ ac_cv_prog_cc_pic='+Z'
821
+ ;;
822
+ aCC)
823
+ ac_cv_prog_cc_wl='-Wl,'
824
+ ac_cv_prog_cc_static="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive"
825
+ ac_cv_prog_cc_pic='+Z'
826
+ ;;
827
+ *)
828
+ ;;
829
+ esac
830
+ ;;
831
+ irix5* | irix6*)
832
+ case $cc_basename in
833
+ CC)
834
+ ac_cv_prog_cc_wl='-Wl,'
835
+ ac_cv_prog_cc_static='-non_shared'
836
+ ac_cv_prog_cc_pic='-KPIC'
837
+ ;;
838
+ *)
839
+ ;;
840
+ esac
841
+ ;;
842
+ linux*)
843
+ case $cc_basename in
844
+ KCC)
845
+ # KAI C++ Compiler
846
+ ac_cv_prog_cc_wl='--backend -Wl,'
847
+ ac_cv_prog_cc_pic='-fPIC'
848
+ ;;
849
+ cxx)
850
+ # Compaq C++
851
+ # Make sure the PIC flag is empty. It appears that all Alpha
852
+ # Linux and Compaq Tru64 Unix objects are PIC.
853
+ ac_cv_prog_cc_pic=
854
+ ac_cv_prog_cc_static='-non_shared'
855
+ ;;
856
+ *)
857
+ ;;
858
+ esac
859
+ ;;
860
+ lynxos*)
861
+ ;;
862
+ m88k*)
863
+ ;;
864
+ mvs*)
865
+ case $cc_basename in
866
+ cxx)
867
+ ac_cv_prog_cc_pic='-W c,exportall'
868
+ ;;
869
+ *)
870
+ ;;
871
+ esac
872
+ ;;
873
+ netbsd*)
874
+ ;;
875
+ osf3* | osf4* | osf5*)
876
+ case $cc_basename in
877
+ KCC)
878
+ ac_cv_prog_cc_wl='--backend -Wl,'
879
+ ;;
880
+ RCC)
881
+ # Rational C++ 2.4.1
882
+ ac_cv_prog_cc_pic='-pic'
883
+ ;;
884
+ cxx)
885
+ # Digital/Compaq C++
886
+ ac_cv_prog_cc_wl='-Wl,'
887
+ # Make sure the PIC flag is empty. It appears that all Alpha
888
+ # Linux and Compaq Tru64 Unix objects are PIC.
889
+ ac_cv_prog_cc_pic=
890
+ ac_cv_prog_cc_static='-non_shared'
891
+ ;;
892
+ *)
893
+ ;;
894
+ esac
895
+ ;;
896
+ psos*)
897
+ ;;
898
+ sco*)
899
+ case $cc_basename in
900
+ CC)
901
+ ac_cv_prog_cc_pic='-fPIC'
902
+ ;;
903
+ *)
904
+ ;;
905
+ esac
906
+ ;;
907
+ solaris*)
908
+ case $cc_basename in
909
+ CC)
910
+ # Sun C++ 4.2, 5.x and Centerline C++
911
+ ac_cv_prog_cc_pic='-KPIC'
912
+ ac_cv_prog_cc_static='-Bstatic'
913
+ ac_cv_prog_cc_wl='-Qoption ld '
914
+ ;;
915
+ gcx)
916
+ # Green Hills C++ Compiler
917
+ ac_cv_prog_cc_pic='-PIC'
918
+ ;;
919
+ *)
920
+ ;;
921
+ esac
922
+ ;;
923
+ sunos4*)
924
+ case $cc_basename in
925
+ CC)
926
+ # Sun C++ 4.x
927
+ ac_cv_prog_cc_pic='-pic'
928
+ ac_cv_prog_cc_static='-Bstatic'
929
+ ;;
930
+ lcc)
931
+ # Lucid
932
+ ac_cv_prog_cc_pic='-pic'
933
+ ;;
934
+ *)
935
+ ;;
936
+ esac
937
+ ;;
938
+ tandem*)
939
+ case $cc_basename in
940
+ NCC)
941
+ # NonStop-UX NCC 3.20
942
+ ac_cv_prog_cc_pic='-KPIC'
943
+ ;;
944
+ *)
945
+ ;;
946
+ esac
947
+ ;;
948
+ unixware*)
949
+ ;;
950
+ vxworks*)
951
+ ;;
952
+ *)
953
+ ac_cv_prog_cc_can_build_shared=no
954
+ ;;
955
+ esac
956
+ fi
957
+
958
+ case "$host_os" in
959
+ # Platforms which do not suport PIC and -DPIC is meaningless
960
+ # on them:
961
+ *djgpp*)
962
+ ac_cv_prog_cc_pic=
963
+ ;;
964
+ *)
965
+ ac_cv_prog_cc_pic="$ac_cv_prog_cc_pic -DPIC"
966
+ ;;
967
+ esac
968
+
969
+
970
+ # Figure out "hidden" C++ library dependencies from verbose
971
+ # compiler output whening linking a shared library.
972
+ cat > conftest.$ac_ext <<EOF
973
+ class Foo
974
+ {
975
+ public:
976
+ Foo (void) { a = 0; }
977
+ private:
978
+ int a;
979
+ };
980
+ EOF
981
+
982
+
983
+ if (eval $ac_compile) 2>&5; then
984
+ # Parse the compiler output and extract the necessary
985
+ # objects, libraries and library flags.
986
+
987
+ # Sentinel used to keep track of whether or not we are before
988
+ # the conftest object file.
989
+ pre_test_object_deps_done=no
990
+
991
+ for p in `eval $output_verbose_link_cmd`; do
992
+
993
+ case $p in
994
+
995
+ -L* | -R* | -l*)
996
+ # Some compilers place space between "-{L,R}" and the path.
997
+ # Remove the space.
998
+ if test $p = "-L" \
999
+ || test $p = "-R"; then
1000
+ prev=$p
1001
+ continue
1002
+ else
1003
+ prev=
1004
+ fi
1005
+
1006
+ if test "$pre_test_object_deps_done" = no; then
1007
+ case $p in
1008
+ -L* | -R*)
1009
+ # Internal compiler library paths should come after those
1010
+ # provided the user. The postdeps already come after the
1011
+ # user supplied libs so there is no need to process them.
1012
+ if test -z "$compiler_lib_search_path"; then
1013
+ compiler_lib_search_path="${prev}${p}"
1014
+ else
1015
+ compiler_lib_search_path="${compiler_lib_search_path} ${prev}${p}"
1016
+ fi
1017
+ ;;
1018
+ # The "-l" case would never come before the object being
1019
+ # linked, so don't bother handling this case.
1020
+ esac
1021
+ else
1022
+ if test -z "$postdeps"; then
1023
+ postdeps="${prev}${p}"
1024
+ else
1025
+ postdeps="${postdeps} ${prev}${p}"
1026
+ fi
1027
+ fi
1028
+ ;;
1029
+
1030
+ *.$objext)
1031
+ # This assumes that the test object file only shows up
1032
+ # once in the compiler output.
1033
+ if test "$p" = "conftest.$objext"; then
1034
+ pre_test_object_deps_done=yes
1035
+ continue
1036
+ fi
1037
+
1038
+ if test "$pre_test_object_deps_done" = no; then
1039
+ if test -z "$predep_objects"; then
1040
+ predep_objects="$p"
1041
+ else
1042
+ predep_objects="$predep_objects $p"
1043
+ fi
1044
+ else
1045
+ if test -z "$postdep_objects"; then
1046
+ postdep_objects="$p"
1047
+ else
1048
+ postdep_objects="$postdep_objects $p"
1049
+ fi
1050
+ fi
1051
+ ;;
1052
+
1053
+ *) ;; # Ignore the rest.
1054
+
1055
+ esac
1056
+ done
1057
+
1058
+ # Clean up.
1059
+ rm -f a.out
1060
+ else
1061
+ echo "ltcf-cxx.sh: error: problem compiling test program"
1062
+ fi
1063
+
1064
+ $rm -f confest.$objext
1065
+
1066
+ case " $postdeps " in
1067
+ *" -lc "*) need_lc=no ;;
1068
+ *) need_lc=yes ;;
1069
+ esac