ffi 1.0.0 → 1.17.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (694) hide show
  1. checksums.yaml +7 -0
  2. checksums.yaml.gz.sig +4 -0
  3. data/CHANGELOG.md +465 -0
  4. data/COPYING +49 -0
  5. data/Gemfile +21 -0
  6. data/LICENSE +21 -11
  7. data/LICENSE.SPECS +22 -0
  8. data/README.md +137 -0
  9. data/Rakefile +165 -148
  10. data/ext/ffi_c/AbstractMemory.c +716 -97
  11. data/ext/ffi_c/AbstractMemory.h +38 -17
  12. data/ext/ffi_c/ArrayType.c +102 -33
  13. data/ext/ffi_c/ArrayType.h +20 -18
  14. data/ext/ffi_c/Buffer.c +229 -54
  15. data/ext/ffi_c/Call.c +211 -100
  16. data/ext/ffi_c/Call.h +46 -28
  17. data/ext/ffi_c/ClosurePool.c +110 -81
  18. data/ext/ffi_c/ClosurePool.h +31 -1
  19. data/ext/ffi_c/DynamicLibrary.c +216 -54
  20. data/ext/ffi_c/DynamicLibrary.h +76 -0
  21. data/ext/ffi_c/Function.c +527 -164
  22. data/ext/ffi_c/Function.h +24 -20
  23. data/ext/ffi_c/FunctionInfo.c +151 -50
  24. data/ext/ffi_c/LastError.c +112 -28
  25. data/ext/ffi_c/LastError.h +29 -0
  26. data/ext/ffi_c/LongDouble.c +65 -0
  27. data/ext/ffi_c/LongDouble.h +47 -0
  28. data/ext/ffi_c/MappedType.c +107 -42
  29. data/ext/ffi_c/MappedType.h +20 -20
  30. data/ext/ffi_c/MemoryPointer.c +108 -46
  31. data/ext/ffi_c/MemoryPointer.h +33 -4
  32. data/ext/ffi_c/MethodHandle.c +71 -67
  33. data/ext/ffi_c/MethodHandle.h +26 -23
  34. data/ext/ffi_c/Platform.c +42 -25
  35. data/ext/ffi_c/Platform.h +32 -3
  36. data/ext/ffi_c/Pointer.c +324 -51
  37. data/ext/ffi_c/Pointer.h +29 -18
  38. data/ext/ffi_c/Struct.c +434 -161
  39. data/ext/ffi_c/Struct.h +47 -27
  40. data/ext/ffi_c/StructByValue.c +74 -37
  41. data/ext/ffi_c/StructByValue.h +20 -18
  42. data/ext/ffi_c/StructLayout.c +358 -87
  43. data/ext/ffi_c/Thread.c +129 -0
  44. data/ext/ffi_c/Thread.h +76 -0
  45. data/ext/ffi_c/Type.c +241 -76
  46. data/ext/ffi_c/Type.h +27 -11
  47. data/ext/ffi_c/Types.c +54 -34
  48. data/ext/ffi_c/Types.h +24 -24
  49. data/ext/ffi_c/Variadic.c +151 -55
  50. data/ext/ffi_c/compat.h +48 -38
  51. data/ext/ffi_c/extconf.rb +106 -34
  52. data/ext/ffi_c/ffi.c +35 -26
  53. data/ext/ffi_c/libffi/.allow-ai-service +0 -0
  54. data/ext/ffi_c/libffi/.appveyor/site.exp +16 -0
  55. data/ext/ffi_c/libffi/.appveyor/unix-noexec.exp +7 -0
  56. data/ext/ffi_c/libffi/.appveyor.yml +84 -0
  57. data/ext/ffi_c/libffi/.ci/ar-lib +270 -0
  58. data/ext/ffi_c/libffi/.ci/bfin-sim.exp +58 -0
  59. data/ext/ffi_c/libffi/.ci/build-cross-in-container.sh +18 -0
  60. data/ext/ffi_c/libffi/.ci/build-in-container.sh +10 -0
  61. data/ext/ffi_c/libffi/.ci/build.sh +124 -0
  62. data/ext/ffi_c/libffi/.ci/compile +351 -0
  63. data/ext/ffi_c/libffi/.ci/install.sh +78 -0
  64. data/ext/ffi_c/libffi/.ci/m32r-sim.exp +58 -0
  65. data/ext/ffi_c/libffi/.ci/moxie-sim.exp +60 -0
  66. data/ext/ffi_c/libffi/.ci/msvs-detect +1103 -0
  67. data/ext/ffi_c/libffi/.ci/or1k-sim.exp +58 -0
  68. data/ext/ffi_c/libffi/.ci/powerpc-eabisim.exp +58 -0
  69. data/ext/ffi_c/libffi/.ci/site.exp +29 -0
  70. data/ext/ffi_c/libffi/.ci/wine-sim.exp +55 -0
  71. data/ext/ffi_c/libffi/.circleci/config.yml +156 -0
  72. data/ext/ffi_c/libffi/.gitattributes +4 -0
  73. data/ext/ffi_c/libffi/.github/issue_template.md +10 -0
  74. data/ext/ffi_c/libffi/.github/workflows/build.yml +479 -0
  75. data/ext/ffi_c/libffi/.github/workflows/emscripten.yml +172 -0
  76. data/ext/ffi_c/libffi/.gitignore +46 -0
  77. data/ext/ffi_c/libffi/{ChangeLog → ChangeLog.old} +6528 -3180
  78. data/ext/ffi_c/libffi/LICENSE +3 -3
  79. data/ext/ffi_c/libffi/LICENSE-BUILDTOOLS +353 -0
  80. data/ext/ffi_c/libffi/Makefile.am +132 -162
  81. data/ext/ffi_c/libffi/Makefile.in +1339 -1003
  82. data/ext/ffi_c/libffi/README.md +531 -0
  83. data/ext/ffi_c/libffi/acinclude.m4 +289 -4
  84. data/ext/ffi_c/libffi/autogen.sh +2 -0
  85. data/ext/ffi_c/libffi/compile +227 -21
  86. data/ext/ffi_c/libffi/config.guess +1034 -778
  87. data/ext/ffi_c/libffi/config.sub +1394 -1204
  88. data/ext/ffi_c/libffi/configure +14327 -8503
  89. data/ext/ffi_c/libffi/configure.ac +294 -247
  90. data/ext/ffi_c/libffi/configure.host +330 -4
  91. data/ext/ffi_c/libffi/doc/Makefile.am +3 -0
  92. data/ext/ffi_c/libffi/doc/Makefile.in +818 -0
  93. data/ext/ffi_c/libffi/doc/libffi.texi +572 -67
  94. data/ext/ffi_c/libffi/doc/version.texi +4 -4
  95. data/ext/ffi_c/libffi/fficonfig.h.in +53 -46
  96. data/ext/ffi_c/libffi/generate-darwin-source-and-headers.py +312 -0
  97. data/ext/ffi_c/libffi/include/Makefile.am +3 -3
  98. data/ext/ffi_c/libffi/include/Makefile.in +219 -79
  99. data/ext/ffi_c/libffi/include/ffi.h.in +230 -111
  100. data/ext/ffi_c/libffi/include/ffi_cfi.h +76 -0
  101. data/ext/ffi_c/libffi/include/ffi_common.h +78 -16
  102. data/ext/ffi_c/libffi/include/tramp.h +45 -0
  103. data/ext/ffi_c/libffi/install-sh +402 -184
  104. data/ext/ffi_c/libffi/libffi.map.in +81 -0
  105. data/ext/ffi_c/libffi/libffi.pc.in +3 -2
  106. data/ext/ffi_c/libffi/libffi.xcodeproj/project.pbxproj +997 -0
  107. data/ext/ffi_c/libffi/libtool-ldflags +106 -0
  108. data/ext/ffi_c/libffi/libtool-version +2 -2
  109. data/ext/ffi_c/libffi/ltmain.sh +5752 -2722
  110. data/ext/ffi_c/libffi/m4/asmcfi.m4 +13 -0
  111. data/ext/ffi_c/libffi/m4/ax_append_flag.m4 +50 -0
  112. data/ext/ffi_c/libffi/m4/ax_cc_maxopt.m4 +198 -0
  113. data/ext/ffi_c/libffi/m4/ax_cflags_warn_all.m4 +158 -0
  114. data/ext/ffi_c/libffi/m4/ax_check_compile_flag.m4 +53 -0
  115. data/ext/ffi_c/libffi/m4/ax_compiler_vendor.m4 +119 -0
  116. data/ext/ffi_c/libffi/m4/ax_configure_args.m4 +49 -0
  117. data/ext/ffi_c/libffi/m4/ax_enable_builddir.m4 +302 -0
  118. data/ext/ffi_c/libffi/m4/ax_gcc_archflag.m4 +267 -0
  119. data/ext/ffi_c/libffi/m4/ax_gcc_x86_cpuid.m4 +89 -0
  120. data/ext/ffi_c/libffi/m4/ax_prepend_flag.m4 +51 -0
  121. data/ext/ffi_c/libffi/m4/ax_require_defined.m4 +37 -0
  122. data/ext/ffi_c/libffi/make_sunver.pl +333 -0
  123. data/ext/ffi_c/libffi/man/Makefile.am +2 -2
  124. data/ext/ffi_c/libffi/man/Makefile.in +174 -57
  125. data/ext/ffi_c/libffi/man/ffi.3 +10 -0
  126. data/ext/ffi_c/libffi/man/ffi_prep_cif.3 +6 -4
  127. data/ext/ffi_c/libffi/man/ffi_prep_cif_var.3 +73 -0
  128. data/ext/ffi_c/libffi/missing +155 -300
  129. data/ext/ffi_c/libffi/msvc_build/aarch64/Ffi_staticLib.sln +33 -0
  130. data/ext/ffi_c/libffi/msvc_build/aarch64/Ffi_staticLib.vcxproj +130 -0
  131. data/ext/ffi_c/libffi/msvc_build/aarch64/Ffi_staticLib.vcxproj.filters +57 -0
  132. data/ext/ffi_c/libffi/msvc_build/aarch64/Ffi_staticLib.vcxproj.user +4 -0
  133. data/ext/ffi_c/libffi/msvc_build/aarch64/aarch64_include/ffi.h +511 -0
  134. data/ext/ffi_c/libffi/msvc_build/aarch64/aarch64_include/fficonfig.h +219 -0
  135. data/ext/ffi_c/libffi/msvcc.sh +353 -0
  136. data/ext/ffi_c/libffi/src/aarch64/ffi.c +1142 -0
  137. data/ext/ffi_c/libffi/src/aarch64/ffitarget.h +97 -0
  138. data/ext/ffi_c/libffi/src/aarch64/internal.h +100 -0
  139. data/ext/ffi_c/libffi/src/aarch64/sysv.S +695 -0
  140. data/ext/ffi_c/libffi/src/aarch64/win64_armasm.S +506 -0
  141. data/ext/ffi_c/libffi/src/alpha/ffi.c +335 -98
  142. data/ext/ffi_c/libffi/src/alpha/ffitarget.h +10 -1
  143. data/ext/ffi_c/libffi/src/alpha/internal.h +23 -0
  144. data/ext/ffi_c/libffi/src/alpha/osf.S +162 -246
  145. data/ext/ffi_c/libffi/src/arc/arcompact.S +210 -0
  146. data/ext/ffi_c/libffi/src/arc/ffi.c +443 -0
  147. data/ext/ffi_c/libffi/src/arc/ffitarget.h +67 -0
  148. data/ext/ffi_c/libffi/src/arm/ffi.c +806 -194
  149. data/ext/ffi_c/libffi/src/arm/ffitarget.h +43 -3
  150. data/ext/ffi_c/libffi/src/arm/internal.h +17 -0
  151. data/ext/ffi_c/libffi/src/arm/sysv.S +381 -231
  152. data/ext/ffi_c/libffi/src/arm/sysv_msvc_arm32.S +311 -0
  153. data/ext/ffi_c/libffi/src/avr32/ffi.c +4 -2
  154. data/ext/ffi_c/libffi/src/avr32/ffitarget.h +8 -3
  155. data/ext/ffi_c/libffi/src/bfin/ffi.c +196 -0
  156. data/ext/ffi_c/libffi/src/bfin/ffitarget.h +43 -0
  157. data/ext/ffi_c/libffi/src/bfin/sysv.S +179 -0
  158. data/ext/ffi_c/libffi/src/closures.c +574 -100
  159. data/ext/ffi_c/libffi/src/cris/ffi.c +11 -8
  160. data/ext/ffi_c/libffi/src/cris/ffitarget.h +8 -3
  161. data/ext/ffi_c/libffi/src/csky/ffi.c +395 -0
  162. data/ext/ffi_c/libffi/src/csky/ffitarget.h +63 -0
  163. data/ext/ffi_c/libffi/src/csky/sysv.S +371 -0
  164. data/ext/ffi_c/libffi/src/debug.c +8 -3
  165. data/ext/ffi_c/libffi/src/dlmalloc.c +89 -17
  166. data/ext/ffi_c/libffi/src/frv/ffi.c +2 -2
  167. data/ext/ffi_c/libffi/src/frv/ffitarget.h +8 -7
  168. data/ext/ffi_c/libffi/src/ia64/ffi.c +48 -12
  169. data/ext/ffi_c/libffi/src/ia64/ffitarget.h +10 -4
  170. data/ext/ffi_c/libffi/src/ia64/unix.S +28 -3
  171. data/ext/ffi_c/libffi/src/java_raw_api.c +24 -6
  172. data/ext/ffi_c/libffi/src/kvx/asm.h +5 -0
  173. data/ext/ffi_c/libffi/src/kvx/ffi.c +273 -0
  174. data/ext/ffi_c/libffi/src/kvx/ffitarget.h +75 -0
  175. data/ext/ffi_c/libffi/src/kvx/sysv.S +127 -0
  176. data/ext/ffi_c/libffi/src/loongarch64/ffi.c +624 -0
  177. data/ext/ffi_c/libffi/src/loongarch64/ffitarget.h +82 -0
  178. data/ext/ffi_c/libffi/src/loongarch64/sysv.S +327 -0
  179. data/ext/ffi_c/libffi/src/m32r/ffi.c +32 -15
  180. data/ext/ffi_c/libffi/src/m32r/ffitarget.h +8 -3
  181. data/ext/ffi_c/libffi/src/m68k/ffi.c +97 -13
  182. data/ext/ffi_c/libffi/src/m68k/ffitarget.h +8 -3
  183. data/ext/ffi_c/libffi/src/m68k/sysv.S +148 -25
  184. data/ext/ffi_c/libffi/src/m88k/ffi.c +400 -0
  185. data/ext/ffi_c/libffi/src/m88k/ffitarget.h +49 -0
  186. data/ext/ffi_c/libffi/src/m88k/obsd.S +209 -0
  187. data/ext/ffi_c/libffi/src/metag/ffi.c +330 -0
  188. data/ext/ffi_c/libffi/src/metag/ffitarget.h +53 -0
  189. data/ext/ffi_c/libffi/src/metag/sysv.S +311 -0
  190. data/ext/ffi_c/libffi/src/microblaze/ffi.c +321 -0
  191. data/ext/ffi_c/libffi/src/microblaze/ffitarget.h +53 -0
  192. data/ext/ffi_c/libffi/src/microblaze/sysv.S +302 -0
  193. data/ext/ffi_c/libffi/src/mips/ffi.c +392 -104
  194. data/ext/ffi_c/libffi/src/mips/ffitarget.h +40 -24
  195. data/ext/ffi_c/libffi/src/mips/n32.S +325 -93
  196. data/ext/ffi_c/libffi/src/mips/o32.S +211 -31
  197. data/ext/ffi_c/libffi/src/moxie/eabi.S +101 -0
  198. data/ext/ffi_c/libffi/src/moxie/ffi.c +310 -0
  199. data/ext/ffi_c/libffi/src/moxie/ffitarget.h +52 -0
  200. data/ext/ffi_c/libffi/src/nios2/ffi.c +304 -0
  201. data/ext/ffi_c/libffi/src/nios2/ffitarget.h +52 -0
  202. data/ext/ffi_c/libffi/src/nios2/sysv.S +136 -0
  203. data/ext/ffi_c/libffi/src/or1k/ffi.c +341 -0
  204. data/ext/ffi_c/libffi/src/or1k/ffitarget.h +58 -0
  205. data/ext/ffi_c/libffi/src/or1k/sysv.S +107 -0
  206. data/ext/ffi_c/libffi/src/pa/ffi.c +68 -111
  207. data/ext/ffi_c/libffi/src/pa/ffi64.c +614 -0
  208. data/ext/ffi_c/libffi/src/pa/ffitarget.h +34 -17
  209. data/ext/ffi_c/libffi/src/pa/hpux32.S +87 -38
  210. data/ext/ffi_c/libffi/src/pa/hpux64.S +681 -0
  211. data/ext/ffi_c/libffi/src/pa/linux.S +109 -39
  212. data/ext/ffi_c/libffi/src/powerpc/aix.S +250 -8
  213. data/ext/ffi_c/libffi/src/powerpc/aix_closure.S +255 -4
  214. data/ext/ffi_c/libffi/src/powerpc/asm.h +3 -3
  215. data/ext/ffi_c/libffi/src/powerpc/darwin.S +211 -78
  216. data/ext/ffi_c/libffi/src/powerpc/darwin_closure.S +356 -102
  217. data/ext/ffi_c/libffi/src/powerpc/ffi.c +108 -1375
  218. data/ext/ffi_c/libffi/src/powerpc/ffi_darwin.c +746 -210
  219. data/ext/ffi_c/libffi/src/powerpc/ffi_linux64.c +1153 -0
  220. data/ext/ffi_c/libffi/src/powerpc/ffi_powerpc.h +105 -0
  221. data/ext/ffi_c/libffi/src/powerpc/ffi_sysv.c +923 -0
  222. data/ext/ffi_c/libffi/src/powerpc/ffitarget.h +126 -48
  223. data/ext/ffi_c/libffi/src/powerpc/linux64.S +191 -85
  224. data/ext/ffi_c/libffi/src/powerpc/linux64_closure.S +438 -108
  225. data/ext/ffi_c/libffi/src/powerpc/ppc_closure.S +138 -68
  226. data/ext/ffi_c/libffi/src/powerpc/sysv.S +73 -119
  227. data/ext/ffi_c/libffi/src/powerpc/t-aix +5 -0
  228. data/ext/ffi_c/libffi/src/prep_cif.c +141 -32
  229. data/ext/ffi_c/libffi/src/raw_api.c +18 -5
  230. data/ext/ffi_c/libffi/src/riscv/ffi.c +514 -0
  231. data/ext/ffi_c/libffi/src/riscv/ffitarget.h +69 -0
  232. data/ext/ffi_c/libffi/src/riscv/sysv.S +293 -0
  233. data/ext/ffi_c/libffi/src/s390/ffi.c +294 -318
  234. data/ext/ffi_c/libffi/src/s390/ffitarget.h +13 -3
  235. data/ext/ffi_c/libffi/src/s390/internal.h +11 -0
  236. data/ext/ffi_c/libffi/src/s390/sysv.S +257 -366
  237. data/ext/ffi_c/libffi/src/sh/ffi.c +4 -3
  238. data/ext/ffi_c/libffi/src/sh/ffitarget.h +8 -3
  239. data/ext/ffi_c/libffi/src/sh64/ffi.c +3 -2
  240. data/ext/ffi_c/libffi/src/sh64/ffitarget.h +8 -3
  241. data/ext/ffi_c/libffi/src/sparc/ffi.c +334 -491
  242. data/ext/ffi_c/libffi/src/sparc/ffi64.c +630 -0
  243. data/ext/ffi_c/libffi/src/sparc/ffitarget.h +20 -5
  244. data/ext/ffi_c/libffi/src/sparc/internal.h +26 -0
  245. data/ext/ffi_c/libffi/src/sparc/v8.S +364 -234
  246. data/ext/ffi_c/libffi/src/sparc/v9.S +340 -207
  247. data/ext/ffi_c/libffi/src/tile/ffi.c +355 -0
  248. data/ext/ffi_c/libffi/src/tile/ffitarget.h +65 -0
  249. data/ext/ffi_c/libffi/src/tile/tile.S +360 -0
  250. data/ext/ffi_c/libffi/src/tramp.c +716 -0
  251. data/ext/ffi_c/libffi/src/types.c +48 -19
  252. data/ext/ffi_c/libffi/src/vax/elfbsd.S +195 -0
  253. data/ext/ffi_c/libffi/src/vax/ffi.c +276 -0
  254. data/ext/ffi_c/libffi/src/vax/ffitarget.h +49 -0
  255. data/ext/ffi_c/libffi/src/wasm32/ffi.c +947 -0
  256. data/ext/ffi_c/libffi/src/wasm32/ffitarget.h +62 -0
  257. data/ext/ffi_c/libffi/src/x86/asmnames.h +30 -0
  258. data/ext/ffi_c/libffi/src/x86/ffi.c +690 -540
  259. data/ext/ffi_c/libffi/src/x86/ffi64.c +450 -126
  260. data/ext/ffi_c/libffi/src/x86/ffitarget.h +86 -42
  261. data/ext/ffi_c/libffi/src/x86/ffiw64.c +361 -0
  262. data/ext/ffi_c/libffi/src/x86/internal.h +43 -0
  263. data/ext/ffi_c/libffi/src/x86/internal64.h +36 -0
  264. data/ext/ffi_c/libffi/src/x86/sysv.S +1199 -381
  265. data/ext/ffi_c/libffi/src/x86/sysv_intel.S +998 -0
  266. data/ext/ffi_c/libffi/src/x86/unix64.S +587 -298
  267. data/ext/ffi_c/libffi/src/x86/win64.S +251 -457
  268. data/ext/ffi_c/libffi/src/x86/win64_intel.S +238 -0
  269. data/ext/ffi_c/libffi/src/xtensa/ffi.c +306 -0
  270. data/ext/ffi_c/libffi/src/xtensa/ffitarget.h +57 -0
  271. data/ext/ffi_c/libffi/src/xtensa/sysv.S +268 -0
  272. data/ext/ffi_c/libffi/stamp-h.in +1 -0
  273. data/ext/ffi_c/libffi/testsuite/Makefile.am +80 -73
  274. data/ext/ffi_c/libffi/testsuite/Makefile.in +251 -117
  275. data/ext/ffi_c/libffi/testsuite/emscripten/build-tests.sh +54 -0
  276. data/ext/ffi_c/libffi/testsuite/emscripten/build.sh +63 -0
  277. data/ext/ffi_c/libffi/testsuite/emscripten/conftest.py +86 -0
  278. data/ext/ffi_c/libffi/testsuite/emscripten/node-tests.sh +48 -0
  279. data/ext/ffi_c/libffi/testsuite/emscripten/test.html +7 -0
  280. data/ext/ffi_c/libffi/testsuite/emscripten/test_libffi.py +51 -0
  281. data/ext/ffi_c/libffi/testsuite/lib/libffi.exp +682 -0
  282. data/ext/ffi_c/libffi/testsuite/lib/target-libpath.exp +22 -2
  283. data/ext/ffi_c/libffi/testsuite/libffi.bhaible/Makefile +28 -0
  284. data/ext/ffi_c/libffi/testsuite/libffi.bhaible/README +78 -0
  285. data/ext/ffi_c/libffi/testsuite/libffi.bhaible/alignof.h +50 -0
  286. data/ext/ffi_c/libffi/testsuite/libffi.bhaible/bhaible.exp +63 -0
  287. data/ext/ffi_c/libffi/testsuite/libffi.bhaible/test-call.c +1746 -0
  288. data/ext/ffi_c/libffi/testsuite/libffi.bhaible/test-callback.c +2885 -0
  289. data/ext/ffi_c/libffi/testsuite/libffi.bhaible/testcases.c +747 -0
  290. data/ext/ffi_c/libffi/testsuite/libffi.call/align_mixed.c +46 -0
  291. data/ext/ffi_c/libffi/testsuite/libffi.call/align_stdcall.c +46 -0
  292. data/ext/ffi_c/libffi/testsuite/libffi.call/bpo_38748.c +41 -0
  293. data/ext/ffi_c/libffi/testsuite/libffi.call/call.exp +28 -10
  294. data/ext/ffi_c/libffi/testsuite/libffi.call/callback.c +99 -0
  295. data/ext/ffi_c/libffi/testsuite/libffi.call/callback2.c +108 -0
  296. data/ext/ffi_c/libffi/testsuite/libffi.call/callback3.c +114 -0
  297. data/ext/ffi_c/libffi/testsuite/libffi.call/callback4.c +119 -0
  298. data/ext/ffi_c/libffi/testsuite/libffi.call/err_bad_typedef.c +4 -3
  299. data/ext/ffi_c/libffi/testsuite/libffi.call/ffitest.h +88 -42
  300. data/ext/ffi_c/libffi/testsuite/libffi.call/float1.c +3 -1
  301. data/ext/ffi_c/libffi/testsuite/libffi.call/float2.c +15 -12
  302. data/ext/ffi_c/libffi/testsuite/libffi.call/float3.c +4 -2
  303. data/ext/ffi_c/libffi/testsuite/libffi.call/float_va.c +110 -0
  304. data/ext/ffi_c/libffi/testsuite/libffi.call/many.c +6 -16
  305. data/ext/ffi_c/libffi/testsuite/libffi.call/many2.c +57 -0
  306. data/ext/ffi_c/libffi/testsuite/libffi.call/many_double.c +70 -0
  307. data/ext/ffi_c/libffi/testsuite/libffi.call/many_mixed.c +78 -0
  308. data/ext/ffi_c/libffi/testsuite/libffi.call/negint.c +0 -1
  309. data/ext/ffi_c/libffi/testsuite/libffi.call/offsets.c +46 -0
  310. data/ext/ffi_c/libffi/testsuite/libffi.call/pr1172638.c +127 -0
  311. data/ext/ffi_c/libffi/testsuite/libffi.call/return_dbl.c +1 -0
  312. data/ext/ffi_c/libffi/testsuite/libffi.call/return_ldl.c +1 -1
  313. data/ext/ffi_c/libffi/testsuite/libffi.call/return_ll1.c +6 -0
  314. data/ext/ffi_c/libffi/testsuite/libffi.call/return_sc.c +1 -1
  315. data/ext/ffi_c/libffi/testsuite/libffi.call/return_sl.c +4 -0
  316. data/ext/ffi_c/libffi/testsuite/libffi.call/return_uc.c +1 -1
  317. data/ext/ffi_c/libffi/testsuite/libffi.call/return_ul.c +4 -0
  318. data/ext/ffi_c/libffi/testsuite/libffi.call/s55.c +60 -0
  319. data/ext/ffi_c/libffi/testsuite/libffi.call/strlen.c +9 -10
  320. data/ext/ffi_c/libffi/testsuite/libffi.call/strlen2.c +49 -0
  321. data/ext/ffi_c/libffi/testsuite/libffi.call/strlen3.c +49 -0
  322. data/ext/ffi_c/libffi/testsuite/libffi.call/strlen4.c +55 -0
  323. data/ext/ffi_c/libffi/testsuite/libffi.call/struct1.c +9 -7
  324. data/ext/ffi_c/libffi/testsuite/libffi.call/struct10.c +57 -0
  325. data/ext/ffi_c/libffi/testsuite/libffi.call/struct2.c +7 -7
  326. data/ext/ffi_c/libffi/testsuite/libffi.call/struct3.c +7 -6
  327. data/ext/ffi_c/libffi/testsuite/libffi.call/struct4.c +9 -8
  328. data/ext/ffi_c/libffi/testsuite/libffi.call/struct5.c +9 -8
  329. data/ext/ffi_c/libffi/testsuite/libffi.call/struct6.c +9 -9
  330. data/ext/ffi_c/libffi/testsuite/libffi.call/struct7.c +9 -9
  331. data/ext/ffi_c/libffi/testsuite/libffi.call/struct8.c +9 -8
  332. data/ext/ffi_c/libffi/testsuite/libffi.call/struct9.c +9 -8
  333. data/ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_2.c +63 -0
  334. data/ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_3.c +65 -0
  335. data/ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_3f.c +65 -0
  336. data/ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_4.c +67 -0
  337. data/ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_4f.c +67 -0
  338. data/ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_big.c +93 -0
  339. data/ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_small.c +61 -0
  340. data/ext/ffi_c/libffi/testsuite/libffi.call/struct_return_2H.c +63 -0
  341. data/ext/ffi_c/libffi/testsuite/libffi.call/struct_return_8H.c +90 -0
  342. data/ext/ffi_c/libffi/testsuite/libffi.call/uninitialized.c +61 -0
  343. data/ext/ffi_c/libffi/testsuite/libffi.call/va_1.c +78 -0
  344. data/ext/ffi_c/libffi/testsuite/libffi.call/va_2.c +220 -0
  345. data/ext/ffi_c/libffi/testsuite/libffi.call/va_3.c +154 -0
  346. data/ext/ffi_c/libffi/testsuite/libffi.call/va_struct1.c +134 -0
  347. data/ext/ffi_c/libffi/testsuite/libffi.call/va_struct2.c +134 -0
  348. data/ext/ffi_c/libffi/testsuite/libffi.call/va_struct3.c +140 -0
  349. data/ext/ffi_c/libffi/testsuite/libffi.closures/closure.exp +67 -0
  350. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/closure_fn0.c +3 -2
  351. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/closure_fn1.c +2 -0
  352. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/closure_fn2.c +2 -0
  353. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/closure_fn3.c +21 -1
  354. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/closure_fn4.c +2 -0
  355. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/closure_fn5.c +2 -0
  356. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/closure_fn6.c +2 -0
  357. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/closure_loc_fn0.c +7 -6
  358. data/ext/ffi_c/libffi/testsuite/{libffi.call/closure_stdcall.c → libffi.closures/closure_simple.c} +13 -16
  359. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_12byte.c +22 -4
  360. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_16byte.c +26 -4
  361. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_18byte.c +28 -4
  362. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_19byte.c +33 -4
  363. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_1_1byte.c +8 -4
  364. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_20byte.c +23 -5
  365. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_20byte1.c +25 -5
  366. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_24byte.c +40 -8
  367. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_2byte.c +17 -4
  368. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_3_1byte.c +23 -4
  369. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_3byte1.c +17 -4
  370. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_3byte2.c +17 -4
  371. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_3float.c +113 -0
  372. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_4_1byte.c +26 -4
  373. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_4byte.c +17 -4
  374. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_5_1_byte.c +33 -5
  375. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_5byte.c +23 -5
  376. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_64byte.c +29 -5
  377. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_6_1_byte.c +32 -5
  378. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_6byte.c +28 -6
  379. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_7_1_byte.c +43 -5
  380. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_7byte.c +29 -5
  381. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_8byte.c +18 -4
  382. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_9byte1.c +18 -5
  383. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_9byte2.c +18 -6
  384. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_align_double.c +23 -5
  385. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_align_float.c +23 -5
  386. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_align_longdouble.c +24 -5
  387. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_align_longdouble_split.c +44 -31
  388. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_align_longdouble_split2.c +44 -9
  389. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_align_pointer.c +23 -5
  390. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_align_sint16.c +22 -5
  391. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_align_sint32.c +22 -7
  392. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_align_sint64.c +23 -5
  393. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_align_uint16.c +22 -5
  394. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_align_uint32.c +23 -5
  395. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_align_uint64.c +24 -5
  396. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_dbls_struct.c +7 -5
  397. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_double_va.c +21 -9
  398. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_float.c +4 -0
  399. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_longdouble.c +13 -3
  400. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_longdouble_va.c +34 -11
  401. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_many_mixed_args.c +70 -0
  402. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_many_mixed_float_double.c +55 -0
  403. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_multi_schar.c +5 -1
  404. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_multi_sshort.c +6 -1
  405. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_multi_sshortchar.c +9 -1
  406. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_multi_uchar.c +9 -1
  407. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_multi_ushort.c +6 -2
  408. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_multi_ushortchar.c +9 -1
  409. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_pointer.c +7 -2
  410. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_pointer_stack.c +22 -10
  411. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_schar.c +3 -0
  412. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_sint.c +2 -0
  413. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_sshort.c +3 -0
  414. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_struct_va1.c +125 -0
  415. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_uchar.c +3 -0
  416. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_uint.c +4 -0
  417. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_uint_va.c +49 -0
  418. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_ulong_va.c +49 -0
  419. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_ulonglong.c +8 -5
  420. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_ushort.c +3 -0
  421. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/err_bad_abi.c +2 -3
  422. data/ext/ffi_c/libffi/testsuite/libffi.closures/ffitest.h +1 -0
  423. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/huge_struct.c +57 -56
  424. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/nested_struct.c +38 -15
  425. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/nested_struct1.c +9 -9
  426. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/nested_struct10.c +19 -6
  427. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct11.c +137 -0
  428. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct12.c +86 -0
  429. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct13.c +115 -0
  430. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/nested_struct2.c +15 -6
  431. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/nested_struct3.c +15 -6
  432. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/nested_struct4.c +14 -5
  433. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/nested_struct5.c +14 -5
  434. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/nested_struct6.c +17 -6
  435. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/nested_struct7.c +14 -5
  436. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/nested_struct8.c +17 -6
  437. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/nested_struct9.c +17 -6
  438. data/ext/ffi_c/libffi/testsuite/libffi.closures/single_entry_structs1.c +86 -0
  439. data/ext/ffi_c/libffi/testsuite/libffi.closures/single_entry_structs2.c +102 -0
  440. data/ext/ffi_c/libffi/testsuite/libffi.closures/single_entry_structs3.c +101 -0
  441. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/stret_large.c +7 -7
  442. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/stret_large2.c +7 -7
  443. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/stret_medium.c +6 -6
  444. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/stret_medium2.c +7 -6
  445. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/testclosure.c +8 -3
  446. data/ext/ffi_c/libffi/testsuite/{libffi.special → libffi.closures}/unwindtest.cc +4 -10
  447. data/ext/ffi_c/libffi/testsuite/{libffi.special → libffi.closures}/unwindtest_ffi_call.cc +4 -2
  448. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex.inc +91 -0
  449. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex_double.c +10 -0
  450. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex_float.c +10 -0
  451. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex_longdouble.c +10 -0
  452. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex.inc +42 -0
  453. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_double.c +10 -0
  454. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_float.c +10 -0
  455. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_longdouble.c +10 -0
  456. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct.inc +71 -0
  457. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct_double.c +10 -0
  458. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct_float.c +10 -0
  459. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct_longdouble.c +10 -0
  460. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va.inc +80 -0
  461. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va_double.c +10 -0
  462. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va_float.c +16 -0
  463. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va_longdouble.c +10 -0
  464. data/ext/ffi_c/libffi/testsuite/{libffi.special/special.exp → libffi.complex/complex.exp} +9 -10
  465. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex.inc +51 -0
  466. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_defs_double.inc +7 -0
  467. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_defs_float.inc +7 -0
  468. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_defs_longdouble.inc +7 -0
  469. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_double.c +10 -0
  470. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_float.c +10 -0
  471. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_int.c +86 -0
  472. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_longdouble.c +10 -0
  473. data/ext/ffi_c/libffi/testsuite/libffi.complex/ffitest.h +1 -0
  474. data/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex.inc +78 -0
  475. data/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex_double.c +10 -0
  476. data/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex_float.c +10 -0
  477. data/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex_longdouble.c +10 -0
  478. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex.inc +37 -0
  479. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1.inc +41 -0
  480. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1_double.c +10 -0
  481. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1_float.c +10 -0
  482. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1_longdouble.c +10 -0
  483. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2.inc +44 -0
  484. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2_double.c +10 -0
  485. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2_float.c +10 -0
  486. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2_longdouble.c +10 -0
  487. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex_double.c +10 -0
  488. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex_float.c +10 -0
  489. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex_longdouble.c +10 -0
  490. data/ext/ffi_c/libffi/testsuite/libffi.go/aa-direct.c +34 -0
  491. data/ext/ffi_c/libffi/testsuite/libffi.go/closure1.c +28 -0
  492. data/ext/ffi_c/libffi/testsuite/libffi.go/ffitest.h +1 -0
  493. data/ext/ffi_c/libffi/testsuite/libffi.go/go.exp +36 -0
  494. data/ext/ffi_c/libffi/testsuite/libffi.go/static-chain.h +19 -0
  495. data/ext/ffi_c/libffi.bsd.mk +14 -8
  496. data/ext/ffi_c/libffi.darwin.mk +56 -26
  497. data/ext/ffi_c/libffi.gnu.mk +9 -6
  498. data/ext/ffi_c/libffi.mk +13 -8
  499. data/ext/ffi_c/libffi.vc.mk +26 -0
  500. data/ext/ffi_c/libffi.vc64.mk +26 -0
  501. data/ext/ffi_c/rbffi.h +34 -6
  502. data/ext/ffi_c/{endian.h → rbffi_endian.h} +21 -2
  503. data/ffi.gemspec +42 -0
  504. data/lib/ffi/abstract_memory.rb +44 -0
  505. data/lib/ffi/autopointer.rb +111 -52
  506. data/lib/ffi/compat.rb +43 -0
  507. data/lib/ffi/data_converter.rb +67 -0
  508. data/lib/ffi/dynamic_library.rb +118 -0
  509. data/lib/ffi/enum.rb +203 -22
  510. data/lib/ffi/errno.rb +27 -12
  511. data/lib/ffi/ffi.rb +88 -11
  512. data/lib/ffi/function.rb +71 -0
  513. data/lib/ffi/io.rb +35 -14
  514. data/lib/ffi/library.rb +382 -96
  515. data/lib/ffi/library_path.rb +109 -0
  516. data/lib/ffi/managedstruct.rb +64 -35
  517. data/lib/ffi/memorypointer.rb +1 -33
  518. data/lib/ffi/platform/aarch64-darwin/types.conf +130 -0
  519. data/lib/ffi/platform/aarch64-freebsd/types.conf +128 -0
  520. data/lib/ffi/platform/aarch64-freebsd12/types.conf +181 -0
  521. data/lib/ffi/platform/aarch64-linux/types.conf +175 -0
  522. data/lib/ffi/platform/aarch64-openbsd/types.conf +134 -0
  523. data/lib/ffi/platform/aarch64-windows/types.conf +52 -0
  524. data/lib/ffi/platform/arm-freebsd/types.conf +152 -0
  525. data/lib/ffi/platform/arm-freebsd12/types.conf +152 -0
  526. data/lib/ffi/platform/arm-linux/types.conf +132 -0
  527. data/lib/ffi/platform/hppa1.1-linux/types.conf +178 -0
  528. data/lib/ffi/platform/hppa2.0-linux/types.conf +178 -0
  529. data/lib/ffi/platform/i386-cygwin/types.conf +3 -0
  530. data/lib/ffi/platform/i386-darwin/types.conf +100 -0
  531. data/lib/ffi/platform/i386-freebsd/types.conf +152 -0
  532. data/lib/ffi/platform/i386-freebsd12/types.conf +152 -0
  533. data/lib/ffi/platform/i386-gnu/types.conf +107 -0
  534. data/lib/ffi/platform/i386-linux/types.conf +103 -0
  535. data/lib/ffi/platform/i386-netbsd/types.conf +126 -0
  536. data/lib/ffi/platform/i386-openbsd/types.conf +128 -0
  537. data/lib/ffi/platform/i386-solaris/types.conf +122 -0
  538. data/lib/ffi/platform/i386-windows/types.conf +52 -0
  539. data/lib/ffi/platform/ia64-linux/types.conf +104 -0
  540. data/lib/ffi/platform/loongarch64-linux/types.conf +141 -0
  541. data/lib/ffi/platform/mips-linux/types.conf +102 -0
  542. data/lib/ffi/platform/mips64-linux/types.conf +104 -0
  543. data/lib/ffi/platform/mips64el-linux/types.conf +104 -0
  544. data/lib/ffi/platform/mipsel-linux/types.conf +102 -0
  545. data/lib/ffi/platform/mipsisa32r6-linux/types.conf +102 -0
  546. data/lib/ffi/platform/mipsisa32r6el-linux/types.conf +102 -0
  547. data/lib/ffi/platform/mipsisa64r6-linux/types.conf +104 -0
  548. data/lib/ffi/platform/mipsisa64r6el-linux/types.conf +104 -0
  549. data/lib/ffi/platform/powerpc-aix/types.conf +180 -0
  550. data/lib/ffi/platform/powerpc-darwin/types.conf +100 -0
  551. data/lib/ffi/platform/powerpc-linux/types.conf +130 -0
  552. data/lib/ffi/platform/powerpc-openbsd/types.conf +156 -0
  553. data/lib/ffi/platform/powerpc64-linux/types.conf +104 -0
  554. data/lib/ffi/platform/powerpc64le-linux/types.conf +100 -0
  555. data/lib/ffi/platform/riscv64-linux/types.conf +104 -0
  556. data/lib/ffi/platform/s390-linux/types.conf +102 -0
  557. data/lib/ffi/platform/s390x-linux/types.conf +102 -0
  558. data/lib/ffi/platform/sparc-linux/types.conf +102 -0
  559. data/lib/ffi/platform/sparc-solaris/types.conf +128 -0
  560. data/lib/ffi/platform/sparcv9-linux/types.conf +102 -0
  561. data/lib/ffi/platform/sparcv9-openbsd/types.conf +156 -0
  562. data/lib/ffi/platform/sparcv9-solaris/types.conf +128 -0
  563. data/lib/ffi/platform/sw_64-linux/types.conf +141 -0
  564. data/lib/ffi/platform/x86_64-cygwin/types.conf +3 -0
  565. data/lib/ffi/platform/x86_64-darwin/types.conf +130 -0
  566. data/lib/ffi/platform/x86_64-dragonflybsd/types.conf +130 -0
  567. data/lib/ffi/platform/x86_64-freebsd/types.conf +128 -0
  568. data/lib/ffi/platform/x86_64-freebsd12/types.conf +158 -0
  569. data/lib/ffi/platform/x86_64-haiku/types.conf +117 -0
  570. data/lib/ffi/platform/x86_64-linux/types.conf +132 -0
  571. data/lib/ffi/platform/x86_64-msys/types.conf +119 -0
  572. data/lib/ffi/platform/x86_64-netbsd/types.conf +128 -0
  573. data/lib/ffi/platform/x86_64-openbsd/types.conf +134 -0
  574. data/lib/ffi/platform/x86_64-solaris/types.conf +122 -0
  575. data/lib/ffi/platform/x86_64-windows/types.conf +52 -0
  576. data/lib/ffi/platform.rb +110 -34
  577. data/lib/ffi/pointer.rb +117 -90
  578. data/lib/ffi/struct.rb +101 -70
  579. data/lib/ffi/struct_by_reference.rb +72 -0
  580. data/lib/ffi/struct_layout.rb +96 -0
  581. data/lib/ffi/struct_layout_builder.rb +90 -21
  582. data/lib/ffi/tools/const_generator.rb +86 -31
  583. data/lib/ffi/tools/generator.rb +49 -2
  584. data/lib/ffi/tools/generator_task.rb +13 -16
  585. data/lib/ffi/tools/struct_generator.rb +6 -5
  586. data/lib/ffi/tools/types_generator.rb +25 -11
  587. data/lib/ffi/types.rb +105 -36
  588. data/lib/ffi/union.rb +23 -12
  589. data/lib/ffi/variadic.rb +44 -29
  590. data/lib/ffi/version.rb +3 -0
  591. data/lib/ffi.rb +25 -9
  592. data/rakelib/ffi_gem_helper.rb +65 -0
  593. data/samples/getlogin.rb +8 -0
  594. data/samples/getpid.rb +8 -0
  595. data/samples/gettimeofday.rb +18 -0
  596. data/samples/hello.rb +8 -0
  597. data/samples/hello_ractor.rb +11 -0
  598. data/samples/inotify.rb +60 -0
  599. data/samples/pty.rb +75 -0
  600. data/samples/qsort.rb +20 -0
  601. data/samples/qsort_ractor.rb +28 -0
  602. data/sig/ffi/abstract_memory.rbs +165 -0
  603. data/sig/ffi/auto_pointer.rbs +26 -0
  604. data/sig/ffi/buffer.rbs +18 -0
  605. data/sig/ffi/data_converter.rbs +10 -0
  606. data/sig/ffi/dynamic_library.rbs +9 -0
  607. data/sig/ffi/enum.rbs +38 -0
  608. data/sig/ffi/function.rbs +39 -0
  609. data/sig/ffi/library.rbs +42 -0
  610. data/sig/ffi/native_type.rbs +86 -0
  611. data/sig/ffi/pointer.rbs +42 -0
  612. data/sig/ffi/struct.rbs +76 -0
  613. data/sig/ffi/struct_by_reference.rbs +11 -0
  614. data/sig/ffi/struct_by_value.rbs +7 -0
  615. data/sig/ffi/struct_layout.rbs +9 -0
  616. data/sig/ffi/struct_layout_builder.rbs +5 -0
  617. data/sig/ffi/type.rbs +39 -0
  618. data/sig/ffi.rbs +26 -0
  619. data.tar.gz.sig +0 -0
  620. metadata +547 -248
  621. metadata.gz.sig +0 -0
  622. data/History.txt +0 -109
  623. data/README.rdoc +0 -70
  624. data/ext/ffi_c/DataConverter.c +0 -62
  625. data/ext/ffi_c/StructByReference.c +0 -150
  626. data/ext/ffi_c/StructByReference.h +0 -50
  627. data/ext/ffi_c/libffi/ChangeLog.libffi +0 -658
  628. data/ext/ffi_c/libffi/ChangeLog.libgcj +0 -40
  629. data/ext/ffi_c/libffi/ChangeLog.v1 +0 -764
  630. data/ext/ffi_c/libffi/README +0 -306
  631. data/ext/ffi_c/libffi/aclocal.m4 +0 -8998
  632. data/ext/ffi_c/libffi/depcomp +0 -584
  633. data/ext/ffi_c/libffi/doc/libffi.info +0 -533
  634. data/ext/ffi_c/libffi/doc/stamp-vti +0 -4
  635. data/ext/ffi_c/libffi/m4/libtool.m4 +0 -7360
  636. data/ext/ffi_c/libffi/m4/ltoptions.m4 +0 -368
  637. data/ext/ffi_c/libffi/m4/ltsugar.m4 +0 -123
  638. data/ext/ffi_c/libffi/m4/ltversion.m4 +0 -23
  639. data/ext/ffi_c/libffi/m4/lt~obsolete.m4 +0 -92
  640. data/ext/ffi_c/libffi/mdate-sh +0 -201
  641. data/ext/ffi_c/libffi/src/x86/darwin.S +0 -444
  642. data/ext/ffi_c/libffi/src/x86/darwin64.S +0 -416
  643. data/ext/ffi_c/libffi/src/x86/freebsd.S +0 -458
  644. data/ext/ffi_c/libffi/src/x86/win32.S +0 -877
  645. data/ext/ffi_c/libffi/testsuite/lib/libffi-dg.exp +0 -300
  646. data/ext/ffi_c/libffi/testsuite/libffi.call/many_win32.c +0 -63
  647. data/ext/ffi_c/libffi/testsuite/libffi.call/strlen_win32.c +0 -44
  648. data/ext/ffi_c/libffi/testsuite/libffi.special/ffitestcxx.h +0 -96
  649. data/ext/ffi_c/libffi/texinfo.tex +0 -7210
  650. data/gen/Rakefile +0 -14
  651. data/spec/ffi/async_callback_spec.rb +0 -23
  652. data/spec/ffi/bool_spec.rb +0 -24
  653. data/spec/ffi/buffer_spec.rb +0 -202
  654. data/spec/ffi/callback_spec.rb +0 -653
  655. data/spec/ffi/custom_param_type.rb +0 -31
  656. data/spec/ffi/custom_type_spec.rb +0 -73
  657. data/spec/ffi/enum_spec.rb +0 -183
  658. data/spec/ffi/errno_spec.rb +0 -13
  659. data/spec/ffi/ffi_spec.rb +0 -24
  660. data/spec/ffi/function_spec.rb +0 -73
  661. data/spec/ffi/library_spec.rb +0 -174
  662. data/spec/ffi/managed_struct_spec.rb +0 -56
  663. data/spec/ffi/number_spec.rb +0 -231
  664. data/spec/ffi/pointer_spec.rb +0 -210
  665. data/spec/ffi/rbx/attach_function_spec.rb +0 -28
  666. data/spec/ffi/rbx/memory_pointer_spec.rb +0 -109
  667. data/spec/ffi/rbx/spec_helper.rb +0 -1
  668. data/spec/ffi/rbx/struct_spec.rb +0 -13
  669. data/spec/ffi/spec_helper.rb +0 -21
  670. data/spec/ffi/string_spec.rb +0 -103
  671. data/spec/ffi/strptr_spec.rb +0 -36
  672. data/spec/ffi/struct_callback_spec.rb +0 -64
  673. data/spec/ffi/struct_initialize_spec.rb +0 -30
  674. data/spec/ffi/struct_packed_spec.rb +0 -46
  675. data/spec/ffi/struct_spec.rb +0 -638
  676. data/spec/ffi/typedef_spec.rb +0 -62
  677. data/spec/ffi/union_spec.rb +0 -60
  678. data/spec/ffi/variadic_spec.rb +0 -84
  679. data/spec/spec.opts +0 -4
  680. data/tasks/ann.rake +0 -80
  681. data/tasks/extension.rake +0 -25
  682. data/tasks/gem.rake +0 -200
  683. data/tasks/git.rake +0 -41
  684. data/tasks/notes.rake +0 -27
  685. data/tasks/post_load.rake +0 -34
  686. data/tasks/rdoc.rake +0 -50
  687. data/tasks/rubyforge.rake +0 -55
  688. data/tasks/setup.rb +0 -301
  689. data/tasks/spec.rake +0 -54
  690. data/tasks/svn.rake +0 -47
  691. data/tasks/test.rake +0 -40
  692. /data/ext/ffi_c/libffi/testsuite/libffi.call/{pyobjc-tc.c → pyobjc_tc.c} +0 -0
  693. /data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_double.c +0 -0
  694. /data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/problem1.c +0 -0
@@ -1,14 +1,14 @@
1
1
  #! /bin/sh
2
2
  # Attempt to guess a canonical system name.
3
- # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
4
- # 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
5
- # Free Software Foundation, Inc.
3
+ # Copyright 1992-2022 Free Software Foundation, Inc.
6
4
 
7
- timestamp='2009-11-19'
5
+ # shellcheck disable=SC2006,SC2268 # see below for rationale
6
+
7
+ timestamp='2022-01-09'
8
8
 
9
9
  # This file is free software; you can redistribute it and/or modify it
10
10
  # under the terms of the GNU General Public License as published by
11
- # the Free Software Foundation; either version 2 of the License, or
11
+ # the Free Software Foundation, either version 3 of the License, or
12
12
  # (at your option) any later version.
13
13
  #
14
14
  # This program is distributed in the hope that it will be useful, but
@@ -17,26 +17,30 @@ timestamp='2009-11-19'
17
17
  # General Public License for more details.
18
18
  #
19
19
  # You should have received a copy of the GNU General Public License
20
- # along with this program; if not, write to the Free Software
21
- # Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
22
- # 02110-1301, USA.
20
+ # along with this program; if not, see <https://www.gnu.org/licenses/>.
23
21
  #
24
22
  # As a special exception to the GNU General Public License, if you
25
23
  # distribute this file as part of a program that contains a
26
24
  # configuration script generated by Autoconf, you may include it under
27
- # the same distribution terms that you use for the rest of that program.
28
-
29
-
30
- # Originally written by Per Bothner. Please send patches (context
31
- # diff format) to <config-patches@gnu.org> and include a ChangeLog
32
- # entry.
25
+ # the same distribution terms that you use for the rest of that
26
+ # program. This Exception is an additional permission under section 7
27
+ # of the GNU General Public License, version 3 ("GPLv3").
33
28
  #
34
- # This script attempts to guess a canonical system name similar to
35
- # config.sub. If it succeeds, it prints the system name on stdout, and
36
- # exits with 0. Otherwise, it exits with 1.
29
+ # Originally written by Per Bothner; maintained since 2000 by Ben Elliston.
37
30
  #
38
31
  # You can get the latest version of this script from:
39
- # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
32
+ # https://git.savannah.gnu.org/cgit/config.git/plain/config.guess
33
+ #
34
+ # Please send patches to <config-patches@gnu.org>.
35
+
36
+
37
+ # The "shellcheck disable" line above the timestamp inhibits complaints
38
+ # about features and limitations of the classic Bourne shell that were
39
+ # superseded or lifted in POSIX. However, this script identifies a wide
40
+ # variety of pre-POSIX systems that do not have POSIX shells at all, and
41
+ # even some reasonably current systems (Solaris 10 as case-in-point) still
42
+ # have a pre-POSIX /bin/sh.
43
+
40
44
 
41
45
  me=`echo "$0" | sed -e 's,.*/,,'`
42
46
 
@@ -45,7 +49,7 @@ Usage: $0 [OPTION]
45
49
 
46
50
  Output the configuration name of the system \`$me' is run on.
47
51
 
48
- Operation modes:
52
+ Options:
49
53
  -h, --help print this help, then exit
50
54
  -t, --time-stamp print date of last modification, then exit
51
55
  -v, --version print version number, then exit
@@ -56,8 +60,7 @@ version="\
56
60
  GNU config.guess ($timestamp)
57
61
 
58
62
  Originally written by Per Bothner.
59
- Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
60
- 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
63
+ Copyright 1992-2022 Free Software Foundation, Inc.
61
64
 
62
65
  This is free software; see the source for copying conditions. There is NO
63
66
  warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -91,7 +94,8 @@ if test $# != 0; then
91
94
  exit 1
92
95
  fi
93
96
 
94
- trap 'exit 1' 1 2 15
97
+ # Just in case it came from the environment.
98
+ GUESS=
95
99
 
96
100
  # CC_FOR_BUILD -- compiler used by this script. Note that the use of a
97
101
  # compiler to aid in system detection is discouraged as it requires
@@ -103,48 +107,93 @@ trap 'exit 1' 1 2 15
103
107
 
104
108
  # Portable tmp directory creation inspired by the Autoconf team.
105
109
 
106
- set_cc_for_build='
107
- trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
108
- trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
109
- : ${TMPDIR=/tmp} ;
110
- { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
111
- { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
112
- { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
113
- { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
114
- dummy=$tmp/dummy ;
115
- tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
116
- case $CC_FOR_BUILD,$HOST_CC,$CC in
117
- ,,) echo "int x;" > $dummy.c ;
118
- for c in cc gcc c89 c99 ; do
119
- if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
120
- CC_FOR_BUILD="$c"; break ;
121
- fi ;
122
- done ;
123
- if test x"$CC_FOR_BUILD" = x ; then
124
- CC_FOR_BUILD=no_compiler_found ;
125
- fi
126
- ;;
127
- ,,*) CC_FOR_BUILD=$CC ;;
128
- ,*,*) CC_FOR_BUILD=$HOST_CC ;;
129
- esac ; set_cc_for_build= ;'
110
+ tmp=
111
+ # shellcheck disable=SC2172
112
+ trap 'test -z "$tmp" || rm -fr "$tmp"' 0 1 2 13 15
113
+
114
+ set_cc_for_build() {
115
+ # prevent multiple calls if $tmp is already set
116
+ test "$tmp" && return 0
117
+ : "${TMPDIR=/tmp}"
118
+ # shellcheck disable=SC2039,SC3028
119
+ { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
120
+ { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir "$tmp" 2>/dev/null) ; } ||
121
+ { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir "$tmp" 2>/dev/null) && echo "Warning: creating insecure temp directory" >&2 ; } ||
122
+ { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; }
123
+ dummy=$tmp/dummy
124
+ case ${CC_FOR_BUILD-},${HOST_CC-},${CC-} in
125
+ ,,) echo "int x;" > "$dummy.c"
126
+ for driver in cc gcc c89 c99 ; do
127
+ if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then
128
+ CC_FOR_BUILD=$driver
129
+ break
130
+ fi
131
+ done
132
+ if test x"$CC_FOR_BUILD" = x ; then
133
+ CC_FOR_BUILD=no_compiler_found
134
+ fi
135
+ ;;
136
+ ,,*) CC_FOR_BUILD=$CC ;;
137
+ ,*,*) CC_FOR_BUILD=$HOST_CC ;;
138
+ esac
139
+ }
130
140
 
131
141
  # This is needed to find uname on a Pyramid OSx when run in the BSD universe.
132
142
  # (ghazi@noc.rutgers.edu 1994-08-24)
133
- if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
143
+ if test -f /.attbin/uname ; then
134
144
  PATH=$PATH:/.attbin ; export PATH
135
145
  fi
136
146
 
137
147
  UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
138
148
  UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
139
- UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
149
+ UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
140
150
  UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
141
151
 
152
+ case $UNAME_SYSTEM in
153
+ Linux|GNU|GNU/*)
154
+ LIBC=unknown
155
+
156
+ set_cc_for_build
157
+ cat <<-EOF > "$dummy.c"
158
+ #include <features.h>
159
+ #if defined(__UCLIBC__)
160
+ LIBC=uclibc
161
+ #elif defined(__dietlibc__)
162
+ LIBC=dietlibc
163
+ #elif defined(__GLIBC__)
164
+ LIBC=gnu
165
+ #else
166
+ #include <stdarg.h>
167
+ /* First heuristic to detect musl libc. */
168
+ #ifdef __DEFINED_va_list
169
+ LIBC=musl
170
+ #endif
171
+ #endif
172
+ EOF
173
+ cc_set_libc=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`
174
+ eval "$cc_set_libc"
175
+
176
+ # Second heuristic to detect musl libc.
177
+ if [ "$LIBC" = unknown ] &&
178
+ command -v ldd >/dev/null &&
179
+ ldd --version 2>&1 | grep -q ^musl; then
180
+ LIBC=musl
181
+ fi
182
+
183
+ # If the system lacks a compiler, then just pick glibc.
184
+ # We could probably try harder.
185
+ if [ "$LIBC" = unknown ]; then
186
+ LIBC=gnu
187
+ fi
188
+ ;;
189
+ esac
190
+
142
191
  # Note: order is significant - the case branches are not exclusive.
143
192
 
144
- case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
193
+ case $UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION in
145
194
  *:NetBSD:*:*)
146
195
  # NetBSD (nbsd) targets should (where applicable) match one or
147
- # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
196
+ # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,
148
197
  # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently
149
198
  # switched to ELF, *-*-netbsd* would select the old
150
199
  # object file format. This provides both forward
@@ -153,22 +202,32 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
153
202
  #
154
203
  # Note: NetBSD doesn't particularly care about the vendor
155
204
  # portion of the name. We always set it to "unknown".
156
- sysctl="sysctl -n hw.machine_arch"
157
- UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
158
- /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
159
- case "${UNAME_MACHINE_ARCH}" in
205
+ UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \
206
+ /sbin/sysctl -n hw.machine_arch 2>/dev/null || \
207
+ /usr/sbin/sysctl -n hw.machine_arch 2>/dev/null || \
208
+ echo unknown)`
209
+ case $UNAME_MACHINE_ARCH in
210
+ aarch64eb) machine=aarch64_be-unknown ;;
160
211
  armeb) machine=armeb-unknown ;;
161
212
  arm*) machine=arm-unknown ;;
162
213
  sh3el) machine=shl-unknown ;;
163
214
  sh3eb) machine=sh-unknown ;;
164
215
  sh5el) machine=sh5le-unknown ;;
165
- *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
216
+ earmv*)
217
+ arch=`echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,'`
218
+ endian=`echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p'`
219
+ machine=${arch}${endian}-unknown
220
+ ;;
221
+ *) machine=$UNAME_MACHINE_ARCH-unknown ;;
166
222
  esac
167
223
  # The Operating System including object format, if it has switched
168
- # to ELF recently, or will in the future.
169
- case "${UNAME_MACHINE_ARCH}" in
224
+ # to ELF recently (or will in the future) and ABI.
225
+ case $UNAME_MACHINE_ARCH in
226
+ earm*)
227
+ os=netbsdelf
228
+ ;;
170
229
  arm*|i386|m68k|ns32k|sh3*|sparc|vax)
171
- eval $set_cc_for_build
230
+ set_cc_for_build
172
231
  if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
173
232
  | grep -q __ELF__
174
233
  then
@@ -180,7 +239,14 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
180
239
  fi
181
240
  ;;
182
241
  *)
183
- os=netbsd
242
+ os=netbsd
243
+ ;;
244
+ esac
245
+ # Determine ABI tags.
246
+ case $UNAME_MACHINE_ARCH in
247
+ earm*)
248
+ expr='s/^earmv[0-9]/-eabi/;s/eb$//'
249
+ abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"`
184
250
  ;;
185
251
  esac
186
252
  # The OS release
@@ -188,42 +254,74 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
188
254
  # thus, need a distinct triplet. However, they do not need
189
255
  # kernel version information, so it can be replaced with a
190
256
  # suitable tag, in the style of linux-gnu.
191
- case "${UNAME_VERSION}" in
257
+ case $UNAME_VERSION in
192
258
  Debian*)
193
259
  release='-gnu'
194
260
  ;;
195
261
  *)
196
- release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
262
+ release=`echo "$UNAME_RELEASE" | sed -e 's/[-_].*//' | cut -d. -f1,2`
197
263
  ;;
198
264
  esac
199
265
  # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
200
266
  # contains redundant information, the shorter form:
201
267
  # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
202
- echo "${machine}-${os}${release}"
203
- exit ;;
268
+ GUESS=$machine-${os}${release}${abi-}
269
+ ;;
270
+ *:Bitrig:*:*)
271
+ UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
272
+ GUESS=$UNAME_MACHINE_ARCH-unknown-bitrig$UNAME_RELEASE
273
+ ;;
204
274
  *:OpenBSD:*:*)
205
275
  UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
206
- echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
207
- exit ;;
276
+ GUESS=$UNAME_MACHINE_ARCH-unknown-openbsd$UNAME_RELEASE
277
+ ;;
278
+ *:SecBSD:*:*)
279
+ UNAME_MACHINE_ARCH=`arch | sed 's/SecBSD.//'`
280
+ GUESS=$UNAME_MACHINE_ARCH-unknown-secbsd$UNAME_RELEASE
281
+ ;;
282
+ *:LibertyBSD:*:*)
283
+ UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'`
284
+ GUESS=$UNAME_MACHINE_ARCH-unknown-libertybsd$UNAME_RELEASE
285
+ ;;
286
+ *:MidnightBSD:*:*)
287
+ GUESS=$UNAME_MACHINE-unknown-midnightbsd$UNAME_RELEASE
288
+ ;;
208
289
  *:ekkoBSD:*:*)
209
- echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
210
- exit ;;
290
+ GUESS=$UNAME_MACHINE-unknown-ekkobsd$UNAME_RELEASE
291
+ ;;
211
292
  *:SolidBSD:*:*)
212
- echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE}
213
- exit ;;
293
+ GUESS=$UNAME_MACHINE-unknown-solidbsd$UNAME_RELEASE
294
+ ;;
295
+ *:OS108:*:*)
296
+ GUESS=$UNAME_MACHINE-unknown-os108_$UNAME_RELEASE
297
+ ;;
214
298
  macppc:MirBSD:*:*)
215
- echo powerpc-unknown-mirbsd${UNAME_RELEASE}
216
- exit ;;
299
+ GUESS=powerpc-unknown-mirbsd$UNAME_RELEASE
300
+ ;;
217
301
  *:MirBSD:*:*)
218
- echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
219
- exit ;;
302
+ GUESS=$UNAME_MACHINE-unknown-mirbsd$UNAME_RELEASE
303
+ ;;
304
+ *:Sortix:*:*)
305
+ GUESS=$UNAME_MACHINE-unknown-sortix
306
+ ;;
307
+ *:Twizzler:*:*)
308
+ GUESS=$UNAME_MACHINE-unknown-twizzler
309
+ ;;
310
+ *:Redox:*:*)
311
+ GUESS=$UNAME_MACHINE-unknown-redox
312
+ ;;
313
+ mips:OSF1:*.*)
314
+ GUESS=mips-dec-osf1
315
+ ;;
220
316
  alpha:OSF1:*:*)
317
+ # Reset EXIT trap before exiting to avoid spurious non-zero exit code.
318
+ trap '' 0
221
319
  case $UNAME_RELEASE in
222
320
  *4.0)
223
321
  UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
224
322
  ;;
225
323
  *5.*)
226
- UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
324
+ UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
227
325
  ;;
228
326
  esac
229
327
  # According to Compaq, /usr/sbin/psrinfo has been available on
@@ -231,157 +329,158 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
231
329
  # covers most systems running today. This code pipes the CPU
232
330
  # types through head -n 1, so we only detect the type of CPU 0.
233
331
  ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1`
234
- case "$ALPHA_CPU_TYPE" in
332
+ case $ALPHA_CPU_TYPE in
235
333
  "EV4 (21064)")
236
- UNAME_MACHINE="alpha" ;;
334
+ UNAME_MACHINE=alpha ;;
237
335
  "EV4.5 (21064)")
238
- UNAME_MACHINE="alpha" ;;
336
+ UNAME_MACHINE=alpha ;;
239
337
  "LCA4 (21066/21068)")
240
- UNAME_MACHINE="alpha" ;;
338
+ UNAME_MACHINE=alpha ;;
241
339
  "EV5 (21164)")
242
- UNAME_MACHINE="alphaev5" ;;
340
+ UNAME_MACHINE=alphaev5 ;;
243
341
  "EV5.6 (21164A)")
244
- UNAME_MACHINE="alphaev56" ;;
342
+ UNAME_MACHINE=alphaev56 ;;
245
343
  "EV5.6 (21164PC)")
246
- UNAME_MACHINE="alphapca56" ;;
344
+ UNAME_MACHINE=alphapca56 ;;
247
345
  "EV5.7 (21164PC)")
248
- UNAME_MACHINE="alphapca57" ;;
346
+ UNAME_MACHINE=alphapca57 ;;
249
347
  "EV6 (21264)")
250
- UNAME_MACHINE="alphaev6" ;;
348
+ UNAME_MACHINE=alphaev6 ;;
251
349
  "EV6.7 (21264A)")
252
- UNAME_MACHINE="alphaev67" ;;
350
+ UNAME_MACHINE=alphaev67 ;;
253
351
  "EV6.8CB (21264C)")
254
- UNAME_MACHINE="alphaev68" ;;
352
+ UNAME_MACHINE=alphaev68 ;;
255
353
  "EV6.8AL (21264B)")
256
- UNAME_MACHINE="alphaev68" ;;
354
+ UNAME_MACHINE=alphaev68 ;;
257
355
  "EV6.8CX (21264D)")
258
- UNAME_MACHINE="alphaev68" ;;
356
+ UNAME_MACHINE=alphaev68 ;;
259
357
  "EV6.9A (21264/EV69A)")
260
- UNAME_MACHINE="alphaev69" ;;
358
+ UNAME_MACHINE=alphaev69 ;;
261
359
  "EV7 (21364)")
262
- UNAME_MACHINE="alphaev7" ;;
360
+ UNAME_MACHINE=alphaev7 ;;
263
361
  "EV7.9 (21364A)")
264
- UNAME_MACHINE="alphaev79" ;;
362
+ UNAME_MACHINE=alphaev79 ;;
265
363
  esac
266
364
  # A Pn.n version is a patched version.
267
365
  # A Vn.n version is a released version.
268
366
  # A Tn.n version is a released field test version.
269
367
  # A Xn.n version is an unreleased experimental baselevel.
270
368
  # 1.2 uses "1.2" for uname -r.
271
- echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
272
- exit ;;
273
- Alpha\ *:Windows_NT*:*)
274
- # How do we know it's Interix rather than the generic POSIX subsystem?
275
- # Should we change UNAME_MACHINE based on the output of uname instead
276
- # of the specific Alpha model?
277
- echo alpha-pc-interix
278
- exit ;;
279
- 21064:Windows_NT:50:3)
280
- echo alpha-dec-winnt3.5
281
- exit ;;
369
+ OSF_REL=`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`
370
+ GUESS=$UNAME_MACHINE-dec-osf$OSF_REL
371
+ ;;
282
372
  Amiga*:UNIX_System_V:4.0:*)
283
- echo m68k-unknown-sysv4
284
- exit ;;
373
+ GUESS=m68k-unknown-sysv4
374
+ ;;
285
375
  *:[Aa]miga[Oo][Ss]:*:*)
286
- echo ${UNAME_MACHINE}-unknown-amigaos
287
- exit ;;
376
+ GUESS=$UNAME_MACHINE-unknown-amigaos
377
+ ;;
288
378
  *:[Mm]orph[Oo][Ss]:*:*)
289
- echo ${UNAME_MACHINE}-unknown-morphos
290
- exit ;;
379
+ GUESS=$UNAME_MACHINE-unknown-morphos
380
+ ;;
291
381
  *:OS/390:*:*)
292
- echo i370-ibm-openedition
293
- exit ;;
382
+ GUESS=i370-ibm-openedition
383
+ ;;
294
384
  *:z/VM:*:*)
295
- echo s390-ibm-zvmoe
296
- exit ;;
385
+ GUESS=s390-ibm-zvmoe
386
+ ;;
297
387
  *:OS400:*:*)
298
- echo powerpc-ibm-os400
299
- exit ;;
388
+ GUESS=powerpc-ibm-os400
389
+ ;;
300
390
  arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
301
- echo arm-acorn-riscix${UNAME_RELEASE}
302
- exit ;;
303
- arm:riscos:*:*|arm:RISCOS:*:*)
304
- echo arm-unknown-riscos
305
- exit ;;
391
+ GUESS=arm-acorn-riscix$UNAME_RELEASE
392
+ ;;
393
+ arm*:riscos:*:*|arm*:RISCOS:*:*)
394
+ GUESS=arm-unknown-riscos
395
+ ;;
306
396
  SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
307
- echo hppa1.1-hitachi-hiuxmpp
308
- exit ;;
397
+ GUESS=hppa1.1-hitachi-hiuxmpp
398
+ ;;
309
399
  Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
310
400
  # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
311
- if test "`(/bin/universe) 2>/dev/null`" = att ; then
312
- echo pyramid-pyramid-sysv3
313
- else
314
- echo pyramid-pyramid-bsd
315
- fi
316
- exit ;;
401
+ case `(/bin/universe) 2>/dev/null` in
402
+ att) GUESS=pyramid-pyramid-sysv3 ;;
403
+ *) GUESS=pyramid-pyramid-bsd ;;
404
+ esac
405
+ ;;
317
406
  NILE*:*:*:dcosx)
318
- echo pyramid-pyramid-svr4
319
- exit ;;
407
+ GUESS=pyramid-pyramid-svr4
408
+ ;;
320
409
  DRS?6000:unix:4.0:6*)
321
- echo sparc-icl-nx6
322
- exit ;;
410
+ GUESS=sparc-icl-nx6
411
+ ;;
323
412
  DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
324
413
  case `/usr/bin/uname -p` in
325
- sparc) echo sparc-icl-nx7; exit ;;
326
- esac ;;
414
+ sparc) GUESS=sparc-icl-nx7 ;;
415
+ esac
416
+ ;;
327
417
  s390x:SunOS:*:*)
328
- echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
329
- exit ;;
418
+ SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`
419
+ GUESS=$UNAME_MACHINE-ibm-solaris2$SUN_REL
420
+ ;;
330
421
  sun4H:SunOS:5.*:*)
331
- echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
332
- exit ;;
422
+ SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`
423
+ GUESS=sparc-hal-solaris2$SUN_REL
424
+ ;;
333
425
  sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
334
- echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
335
- exit ;;
426
+ SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`
427
+ GUESS=sparc-sun-solaris2$SUN_REL
428
+ ;;
429
+ i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
430
+ GUESS=i386-pc-auroraux$UNAME_RELEASE
431
+ ;;
336
432
  i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
337
- eval $set_cc_for_build
338
- SUN_ARCH="i386"
433
+ set_cc_for_build
434
+ SUN_ARCH=i386
339
435
  # If there is a compiler, see if it is configured for 64-bit objects.
340
436
  # Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
341
437
  # This test works for both compilers.
342
- if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
438
+ if test "$CC_FOR_BUILD" != no_compiler_found; then
343
439
  if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
344
- (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
440
+ (CCOPTS="" $CC_FOR_BUILD -m64 -E - 2>/dev/null) | \
345
441
  grep IS_64BIT_ARCH >/dev/null
346
442
  then
347
- SUN_ARCH="x86_64"
443
+ SUN_ARCH=x86_64
348
444
  fi
349
445
  fi
350
- echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
351
- exit ;;
446
+ SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`
447
+ GUESS=$SUN_ARCH-pc-solaris2$SUN_REL
448
+ ;;
352
449
  sun4*:SunOS:6*:*)
353
450
  # According to config.sub, this is the proper way to canonicalize
354
451
  # SunOS6. Hard to guess exactly what SunOS6 will be like, but
355
452
  # it's likely to be more like Solaris than SunOS4.
356
- echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
357
- exit ;;
453
+ SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`
454
+ GUESS=sparc-sun-solaris3$SUN_REL
455
+ ;;
358
456
  sun4*:SunOS:*:*)
359
- case "`/usr/bin/arch -k`" in
457
+ case `/usr/bin/arch -k` in
360
458
  Series*|S4*)
361
459
  UNAME_RELEASE=`uname -v`
362
460
  ;;
363
461
  esac
364
462
  # Japanese Language versions have a version number like `4.1.3-JL'.
365
- echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
366
- exit ;;
463
+ SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/'`
464
+ GUESS=sparc-sun-sunos$SUN_REL
465
+ ;;
367
466
  sun3*:SunOS:*:*)
368
- echo m68k-sun-sunos${UNAME_RELEASE}
369
- exit ;;
467
+ GUESS=m68k-sun-sunos$UNAME_RELEASE
468
+ ;;
370
469
  sun*:*:4.2BSD:*)
371
470
  UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
372
- test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
373
- case "`/bin/arch`" in
471
+ test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3
472
+ case `/bin/arch` in
374
473
  sun3)
375
- echo m68k-sun-sunos${UNAME_RELEASE}
474
+ GUESS=m68k-sun-sunos$UNAME_RELEASE
376
475
  ;;
377
476
  sun4)
378
- echo sparc-sun-sunos${UNAME_RELEASE}
477
+ GUESS=sparc-sun-sunos$UNAME_RELEASE
379
478
  ;;
380
479
  esac
381
- exit ;;
480
+ ;;
382
481
  aushp:SunOS:*:*)
383
- echo sparc-auspex-sunos${UNAME_RELEASE}
384
- exit ;;
482
+ GUESS=sparc-auspex-sunos$UNAME_RELEASE
483
+ ;;
385
484
  # The situation for MiNT is a little confusing. The machine name
386
485
  # can be virtually everything (everything which is not
387
486
  # "atarist" or "atariste" at least should have a processor
@@ -391,44 +490,44 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
391
490
  # MiNT. But MiNT is downward compatible to TOS, so this should
392
491
  # be no problem.
393
492
  atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
394
- echo m68k-atari-mint${UNAME_RELEASE}
395
- exit ;;
493
+ GUESS=m68k-atari-mint$UNAME_RELEASE
494
+ ;;
396
495
  atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
397
- echo m68k-atari-mint${UNAME_RELEASE}
398
- exit ;;
496
+ GUESS=m68k-atari-mint$UNAME_RELEASE
497
+ ;;
399
498
  *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
400
- echo m68k-atari-mint${UNAME_RELEASE}
401
- exit ;;
499
+ GUESS=m68k-atari-mint$UNAME_RELEASE
500
+ ;;
402
501
  milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
403
- echo m68k-milan-mint${UNAME_RELEASE}
404
- exit ;;
502
+ GUESS=m68k-milan-mint$UNAME_RELEASE
503
+ ;;
405
504
  hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
406
- echo m68k-hades-mint${UNAME_RELEASE}
407
- exit ;;
505
+ GUESS=m68k-hades-mint$UNAME_RELEASE
506
+ ;;
408
507
  *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
409
- echo m68k-unknown-mint${UNAME_RELEASE}
410
- exit ;;
508
+ GUESS=m68k-unknown-mint$UNAME_RELEASE
509
+ ;;
411
510
  m68k:machten:*:*)
412
- echo m68k-apple-machten${UNAME_RELEASE}
413
- exit ;;
511
+ GUESS=m68k-apple-machten$UNAME_RELEASE
512
+ ;;
414
513
  powerpc:machten:*:*)
415
- echo powerpc-apple-machten${UNAME_RELEASE}
416
- exit ;;
514
+ GUESS=powerpc-apple-machten$UNAME_RELEASE
515
+ ;;
417
516
  RISC*:Mach:*:*)
418
- echo mips-dec-mach_bsd4.3
419
- exit ;;
517
+ GUESS=mips-dec-mach_bsd4.3
518
+ ;;
420
519
  RISC*:ULTRIX:*:*)
421
- echo mips-dec-ultrix${UNAME_RELEASE}
422
- exit ;;
520
+ GUESS=mips-dec-ultrix$UNAME_RELEASE
521
+ ;;
423
522
  VAX*:ULTRIX*:*:*)
424
- echo vax-dec-ultrix${UNAME_RELEASE}
425
- exit ;;
523
+ GUESS=vax-dec-ultrix$UNAME_RELEASE
524
+ ;;
426
525
  2020:CLIX:*:* | 2430:CLIX:*:*)
427
- echo clipper-intergraph-clix${UNAME_RELEASE}
428
- exit ;;
526
+ GUESS=clipper-intergraph-clix$UNAME_RELEASE
527
+ ;;
429
528
  mips:*:*:UMIPS | mips:*:*:RISCos)
430
- eval $set_cc_for_build
431
- sed 's/^ //' << EOF >$dummy.c
529
+ set_cc_for_build
530
+ sed 's/^ //' << EOF > "$dummy.c"
432
531
  #ifdef __cplusplus
433
532
  #include <stdio.h> /* for printf() prototype */
434
533
  int main (int argc, char *argv[]) {
@@ -437,95 +536,96 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
437
536
  #endif
438
537
  #if defined (host_mips) && defined (MIPSEB)
439
538
  #if defined (SYSTYPE_SYSV)
440
- printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
539
+ printf ("mips-mips-riscos%ssysv\\n", argv[1]); exit (0);
441
540
  #endif
442
541
  #if defined (SYSTYPE_SVR4)
443
- printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
542
+ printf ("mips-mips-riscos%ssvr4\\n", argv[1]); exit (0);
444
543
  #endif
445
544
  #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
446
- printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
545
+ printf ("mips-mips-riscos%sbsd\\n", argv[1]); exit (0);
447
546
  #endif
448
547
  #endif
449
548
  exit (-1);
450
549
  }
451
550
  EOF
452
- $CC_FOR_BUILD -o $dummy $dummy.c &&
453
- dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&
454
- SYSTEM_NAME=`$dummy $dummyarg` &&
551
+ $CC_FOR_BUILD -o "$dummy" "$dummy.c" &&
552
+ dummyarg=`echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p'` &&
553
+ SYSTEM_NAME=`"$dummy" "$dummyarg"` &&
455
554
  { echo "$SYSTEM_NAME"; exit; }
456
- echo mips-mips-riscos${UNAME_RELEASE}
457
- exit ;;
555
+ GUESS=mips-mips-riscos$UNAME_RELEASE
556
+ ;;
458
557
  Motorola:PowerMAX_OS:*:*)
459
- echo powerpc-motorola-powermax
460
- exit ;;
558
+ GUESS=powerpc-motorola-powermax
559
+ ;;
461
560
  Motorola:*:4.3:PL8-*)
462
- echo powerpc-harris-powermax
463
- exit ;;
561
+ GUESS=powerpc-harris-powermax
562
+ ;;
464
563
  Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
465
- echo powerpc-harris-powermax
466
- exit ;;
564
+ GUESS=powerpc-harris-powermax
565
+ ;;
467
566
  Night_Hawk:Power_UNIX:*:*)
468
- echo powerpc-harris-powerunix
469
- exit ;;
567
+ GUESS=powerpc-harris-powerunix
568
+ ;;
470
569
  m88k:CX/UX:7*:*)
471
- echo m88k-harris-cxux7
472
- exit ;;
570
+ GUESS=m88k-harris-cxux7
571
+ ;;
473
572
  m88k:*:4*:R4*)
474
- echo m88k-motorola-sysv4
475
- exit ;;
573
+ GUESS=m88k-motorola-sysv4
574
+ ;;
476
575
  m88k:*:3*:R3*)
477
- echo m88k-motorola-sysv3
478
- exit ;;
576
+ GUESS=m88k-motorola-sysv3
577
+ ;;
479
578
  AViiON:dgux:*:*)
480
- # DG/UX returns AViiON for all architectures
481
- UNAME_PROCESSOR=`/usr/bin/uname -p`
482
- if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
579
+ # DG/UX returns AViiON for all architectures
580
+ UNAME_PROCESSOR=`/usr/bin/uname -p`
581
+ if test "$UNAME_PROCESSOR" = mc88100 || test "$UNAME_PROCESSOR" = mc88110
483
582
  then
484
- if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
485
- [ ${TARGET_BINARY_INTERFACE}x = x ]
583
+ if test "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx || \
584
+ test "$TARGET_BINARY_INTERFACE"x = x
486
585
  then
487
- echo m88k-dg-dgux${UNAME_RELEASE}
586
+ GUESS=m88k-dg-dgux$UNAME_RELEASE
488
587
  else
489
- echo m88k-dg-dguxbcs${UNAME_RELEASE}
588
+ GUESS=m88k-dg-dguxbcs$UNAME_RELEASE
490
589
  fi
491
590
  else
492
- echo i586-dg-dgux${UNAME_RELEASE}
591
+ GUESS=i586-dg-dgux$UNAME_RELEASE
493
592
  fi
494
- exit ;;
593
+ ;;
495
594
  M88*:DolphinOS:*:*) # DolphinOS (SVR3)
496
- echo m88k-dolphin-sysv3
497
- exit ;;
595
+ GUESS=m88k-dolphin-sysv3
596
+ ;;
498
597
  M88*:*:R3*:*)
499
598
  # Delta 88k system running SVR3
500
- echo m88k-motorola-sysv3
501
- exit ;;
599
+ GUESS=m88k-motorola-sysv3
600
+ ;;
502
601
  XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
503
- echo m88k-tektronix-sysv3
504
- exit ;;
602
+ GUESS=m88k-tektronix-sysv3
603
+ ;;
505
604
  Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
506
- echo m68k-tektronix-bsd
507
- exit ;;
605
+ GUESS=m68k-tektronix-bsd
606
+ ;;
508
607
  *:IRIX*:*:*)
509
- echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
510
- exit ;;
608
+ IRIX_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/g'`
609
+ GUESS=mips-sgi-irix$IRIX_REL
610
+ ;;
511
611
  ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
512
- echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id
513
- exit ;; # Note that: echo "'`uname -s`'" gives 'AIX '
612
+ GUESS=romp-ibm-aix # uname -m gives an 8 hex-code CPU id
613
+ ;; # Note that: echo "'`uname -s`'" gives 'AIX '
514
614
  i*86:AIX:*:*)
515
- echo i386-ibm-aix
516
- exit ;;
615
+ GUESS=i386-ibm-aix
616
+ ;;
517
617
  ia64:AIX:*:*)
518
- if [ -x /usr/bin/oslevel ] ; then
618
+ if test -x /usr/bin/oslevel ; then
519
619
  IBM_REV=`/usr/bin/oslevel`
520
620
  else
521
- IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
621
+ IBM_REV=$UNAME_VERSION.$UNAME_RELEASE
522
622
  fi
523
- echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
524
- exit ;;
623
+ GUESS=$UNAME_MACHINE-ibm-aix$IBM_REV
624
+ ;;
525
625
  *:AIX:2:3)
526
626
  if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
527
- eval $set_cc_for_build
528
- sed 's/^ //' << EOF >$dummy.c
627
+ set_cc_for_build
628
+ sed 's/^ //' << EOF > "$dummy.c"
529
629
  #include <sys/systemcfg.h>
530
630
 
531
631
  main()
@@ -536,115 +636,116 @@ EOF
536
636
  exit(0);
537
637
  }
538
638
  EOF
539
- if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`
639
+ if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"`
540
640
  then
541
- echo "$SYSTEM_NAME"
641
+ GUESS=$SYSTEM_NAME
542
642
  else
543
- echo rs6000-ibm-aix3.2.5
643
+ GUESS=rs6000-ibm-aix3.2.5
544
644
  fi
545
645
  elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
546
- echo rs6000-ibm-aix3.2.4
646
+ GUESS=rs6000-ibm-aix3.2.4
547
647
  else
548
- echo rs6000-ibm-aix3.2
648
+ GUESS=rs6000-ibm-aix3.2
549
649
  fi
550
- exit ;;
551
- *:AIX:*:[456])
650
+ ;;
651
+ *:AIX:*:[4567])
552
652
  IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
553
- if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
653
+ if /usr/sbin/lsattr -El "$IBM_CPU_ID" | grep ' POWER' >/dev/null 2>&1; then
554
654
  IBM_ARCH=rs6000
555
655
  else
556
656
  IBM_ARCH=powerpc
557
657
  fi
558
- if [ -x /usr/bin/oslevel ] ; then
559
- IBM_REV=`/usr/bin/oslevel`
658
+ if test -x /usr/bin/lslpp ; then
659
+ IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | \
660
+ awk -F: '{ print $3 }' | sed s/[0-9]*$/0/`
560
661
  else
561
- IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
662
+ IBM_REV=$UNAME_VERSION.$UNAME_RELEASE
562
663
  fi
563
- echo ${IBM_ARCH}-ibm-aix${IBM_REV}
564
- exit ;;
664
+ GUESS=$IBM_ARCH-ibm-aix$IBM_REV
665
+ ;;
565
666
  *:AIX:*:*)
566
- echo rs6000-ibm-aix
567
- exit ;;
568
- ibmrt:4.4BSD:*|romp-ibm:BSD:*)
569
- echo romp-ibm-bsd4.4
570
- exit ;;
667
+ GUESS=rs6000-ibm-aix
668
+ ;;
669
+ ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*)
670
+ GUESS=romp-ibm-bsd4.4
671
+ ;;
571
672
  ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and
572
- echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to
573
- exit ;; # report: romp-ibm BSD 4.3
673
+ GUESS=romp-ibm-bsd$UNAME_RELEASE # 4.3 with uname added to
674
+ ;; # report: romp-ibm BSD 4.3
574
675
  *:BOSX:*:*)
575
- echo rs6000-bull-bosx
576
- exit ;;
676
+ GUESS=rs6000-bull-bosx
677
+ ;;
577
678
  DPX/2?00:B.O.S.:*:*)
578
- echo m68k-bull-sysv3
579
- exit ;;
679
+ GUESS=m68k-bull-sysv3
680
+ ;;
580
681
  9000/[34]??:4.3bsd:1.*:*)
581
- echo m68k-hp-bsd
582
- exit ;;
682
+ GUESS=m68k-hp-bsd
683
+ ;;
583
684
  hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
584
- echo m68k-hp-bsd4.4
585
- exit ;;
685
+ GUESS=m68k-hp-bsd4.4
686
+ ;;
586
687
  9000/[34678]??:HP-UX:*:*)
587
- HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
588
- case "${UNAME_MACHINE}" in
589
- 9000/31? ) HP_ARCH=m68000 ;;
590
- 9000/[34]?? ) HP_ARCH=m68k ;;
688
+ HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'`
689
+ case $UNAME_MACHINE in
690
+ 9000/31?) HP_ARCH=m68000 ;;
691
+ 9000/[34]??) HP_ARCH=m68k ;;
591
692
  9000/[678][0-9][0-9])
592
- if [ -x /usr/bin/getconf ]; then
693
+ if test -x /usr/bin/getconf; then
593
694
  sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
594
- sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
595
- case "${sc_cpu_version}" in
596
- 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
597
- 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
598
- 532) # CPU_PA_RISC2_0
599
- case "${sc_kernel_bits}" in
600
- 32) HP_ARCH="hppa2.0n" ;;
601
- 64) HP_ARCH="hppa2.0w" ;;
602
- '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20
603
- esac ;;
604
- esac
695
+ sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
696
+ case $sc_cpu_version in
697
+ 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0
698
+ 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1
699
+ 532) # CPU_PA_RISC2_0
700
+ case $sc_kernel_bits in
701
+ 32) HP_ARCH=hppa2.0n ;;
702
+ 64) HP_ARCH=hppa2.0w ;;
703
+ '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20
704
+ esac ;;
705
+ esac
605
706
  fi
606
- if [ "${HP_ARCH}" = "" ]; then
607
- eval $set_cc_for_build
608
- sed 's/^ //' << EOF >$dummy.c
609
-
610
- #define _HPUX_SOURCE
611
- #include <stdlib.h>
612
- #include <unistd.h>
613
-
614
- int main ()
615
- {
616
- #if defined(_SC_KERNEL_BITS)
617
- long bits = sysconf(_SC_KERNEL_BITS);
618
- #endif
619
- long cpu = sysconf (_SC_CPU_VERSION);
620
-
621
- switch (cpu)
622
- {
623
- case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
624
- case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
625
- case CPU_PA_RISC2_0:
626
- #if defined(_SC_KERNEL_BITS)
627
- switch (bits)
628
- {
629
- case 64: puts ("hppa2.0w"); break;
630
- case 32: puts ("hppa2.0n"); break;
631
- default: puts ("hppa2.0"); break;
632
- } break;
633
- #else /* !defined(_SC_KERNEL_BITS) */
634
- puts ("hppa2.0"); break;
635
- #endif
636
- default: puts ("hppa1.0"); break;
637
- }
638
- exit (0);
639
- }
707
+ if test "$HP_ARCH" = ""; then
708
+ set_cc_for_build
709
+ sed 's/^ //' << EOF > "$dummy.c"
710
+
711
+ #define _HPUX_SOURCE
712
+ #include <stdlib.h>
713
+ #include <unistd.h>
714
+
715
+ int main ()
716
+ {
717
+ #if defined(_SC_KERNEL_BITS)
718
+ long bits = sysconf(_SC_KERNEL_BITS);
719
+ #endif
720
+ long cpu = sysconf (_SC_CPU_VERSION);
721
+
722
+ switch (cpu)
723
+ {
724
+ case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
725
+ case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
726
+ case CPU_PA_RISC2_0:
727
+ #if defined(_SC_KERNEL_BITS)
728
+ switch (bits)
729
+ {
730
+ case 64: puts ("hppa2.0w"); break;
731
+ case 32: puts ("hppa2.0n"); break;
732
+ default: puts ("hppa2.0"); break;
733
+ } break;
734
+ #else /* !defined(_SC_KERNEL_BITS) */
735
+ puts ("hppa2.0"); break;
736
+ #endif
737
+ default: puts ("hppa1.0"); break;
738
+ }
739
+ exit (0);
740
+ }
640
741
  EOF
641
- (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
742
+ (CCOPTS="" $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null) && HP_ARCH=`"$dummy"`
642
743
  test -z "$HP_ARCH" && HP_ARCH=hppa
643
744
  fi ;;
644
745
  esac
645
- if [ ${HP_ARCH} = "hppa2.0w" ]
746
+ if test "$HP_ARCH" = hppa2.0w
646
747
  then
647
- eval $set_cc_for_build
748
+ set_cc_for_build
648
749
 
649
750
  # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
650
751
  # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler
@@ -655,23 +756,23 @@ EOF
655
756
  # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
656
757
  # => hppa64-hp-hpux11.23
657
758
 
658
- if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
759
+ if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) |
659
760
  grep -q __LP64__
660
761
  then
661
- HP_ARCH="hppa2.0w"
762
+ HP_ARCH=hppa2.0w
662
763
  else
663
- HP_ARCH="hppa64"
764
+ HP_ARCH=hppa64
664
765
  fi
665
766
  fi
666
- echo ${HP_ARCH}-hp-hpux${HPUX_REV}
667
- exit ;;
767
+ GUESS=$HP_ARCH-hp-hpux$HPUX_REV
768
+ ;;
668
769
  ia64:HP-UX:*:*)
669
- HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
670
- echo ia64-hp-hpux${HPUX_REV}
671
- exit ;;
770
+ HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'`
771
+ GUESS=ia64-hp-hpux$HPUX_REV
772
+ ;;
672
773
  3050*:HI-UX:*:*)
673
- eval $set_cc_for_build
674
- sed 's/^ //' << EOF >$dummy.c
774
+ set_cc_for_build
775
+ sed 's/^ //' << EOF > "$dummy.c"
675
776
  #include <unistd.h>
676
777
  int
677
778
  main ()
@@ -696,166 +797,187 @@ EOF
696
797
  exit (0);
697
798
  }
698
799
  EOF
699
- $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&
800
+ $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` &&
700
801
  { echo "$SYSTEM_NAME"; exit; }
701
- echo unknown-hitachi-hiuxwe2
702
- exit ;;
703
- 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
704
- echo hppa1.1-hp-bsd
705
- exit ;;
802
+ GUESS=unknown-hitachi-hiuxwe2
803
+ ;;
804
+ 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*)
805
+ GUESS=hppa1.1-hp-bsd
806
+ ;;
706
807
  9000/8??:4.3bsd:*:*)
707
- echo hppa1.0-hp-bsd
708
- exit ;;
808
+ GUESS=hppa1.0-hp-bsd
809
+ ;;
709
810
  *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
710
- echo hppa1.0-hp-mpeix
711
- exit ;;
712
- hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
713
- echo hppa1.1-hp-osf
714
- exit ;;
811
+ GUESS=hppa1.0-hp-mpeix
812
+ ;;
813
+ hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*)
814
+ GUESS=hppa1.1-hp-osf
815
+ ;;
715
816
  hp8??:OSF1:*:*)
716
- echo hppa1.0-hp-osf
717
- exit ;;
817
+ GUESS=hppa1.0-hp-osf
818
+ ;;
718
819
  i*86:OSF1:*:*)
719
- if [ -x /usr/sbin/sysversion ] ; then
720
- echo ${UNAME_MACHINE}-unknown-osf1mk
820
+ if test -x /usr/sbin/sysversion ; then
821
+ GUESS=$UNAME_MACHINE-unknown-osf1mk
721
822
  else
722
- echo ${UNAME_MACHINE}-unknown-osf1
823
+ GUESS=$UNAME_MACHINE-unknown-osf1
723
824
  fi
724
- exit ;;
825
+ ;;
725
826
  parisc*:Lites*:*:*)
726
- echo hppa1.1-hp-lites
727
- exit ;;
827
+ GUESS=hppa1.1-hp-lites
828
+ ;;
728
829
  C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
729
- echo c1-convex-bsd
730
- exit ;;
830
+ GUESS=c1-convex-bsd
831
+ ;;
731
832
  C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
732
833
  if getsysinfo -f scalar_acc
733
834
  then echo c32-convex-bsd
734
835
  else echo c2-convex-bsd
735
836
  fi
736
- exit ;;
837
+ exit ;;
737
838
  C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
738
- echo c34-convex-bsd
739
- exit ;;
839
+ GUESS=c34-convex-bsd
840
+ ;;
740
841
  C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
741
- echo c38-convex-bsd
742
- exit ;;
842
+ GUESS=c38-convex-bsd
843
+ ;;
743
844
  C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
744
- echo c4-convex-bsd
745
- exit ;;
845
+ GUESS=c4-convex-bsd
846
+ ;;
746
847
  CRAY*Y-MP:*:*:*)
747
- echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
748
- exit ;;
848
+ CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'`
849
+ GUESS=ymp-cray-unicos$CRAY_REL
850
+ ;;
749
851
  CRAY*[A-Z]90:*:*:*)
750
- echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
852
+ echo "$UNAME_MACHINE"-cray-unicos"$UNAME_RELEASE" \
751
853
  | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
752
854
  -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
753
855
  -e 's/\.[^.]*$/.X/'
754
856
  exit ;;
755
857
  CRAY*TS:*:*:*)
756
- echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
757
- exit ;;
858
+ CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'`
859
+ GUESS=t90-cray-unicos$CRAY_REL
860
+ ;;
758
861
  CRAY*T3E:*:*:*)
759
- echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
760
- exit ;;
862
+ CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'`
863
+ GUESS=alphaev5-cray-unicosmk$CRAY_REL
864
+ ;;
761
865
  CRAY*SV1:*:*:*)
762
- echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
763
- exit ;;
866
+ CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'`
867
+ GUESS=sv1-cray-unicos$CRAY_REL
868
+ ;;
764
869
  *:UNICOS/mp:*:*)
765
- echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
766
- exit ;;
870
+ CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'`
871
+ GUESS=craynv-cray-unicosmp$CRAY_REL
872
+ ;;
767
873
  F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
768
- FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
769
- FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
770
- FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
771
- echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
772
- exit ;;
874
+ FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`
875
+ FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'`
876
+ FUJITSU_REL=`echo "$UNAME_RELEASE" | sed -e 's/ /_/'`
877
+ GUESS=${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}
878
+ ;;
773
879
  5000:UNIX_System_V:4.*:*)
774
- FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
775
- FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
776
- echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
777
- exit ;;
880
+ FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'`
881
+ FUJITSU_REL=`echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'`
882
+ GUESS=sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}
883
+ ;;
778
884
  i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
779
- echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
780
- exit ;;
885
+ GUESS=$UNAME_MACHINE-pc-bsdi$UNAME_RELEASE
886
+ ;;
781
887
  sparc*:BSD/OS:*:*)
782
- echo sparc-unknown-bsdi${UNAME_RELEASE}
783
- exit ;;
888
+ GUESS=sparc-unknown-bsdi$UNAME_RELEASE
889
+ ;;
784
890
  *:BSD/OS:*:*)
785
- echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
786
- exit ;;
891
+ GUESS=$UNAME_MACHINE-unknown-bsdi$UNAME_RELEASE
892
+ ;;
893
+ arm:FreeBSD:*:*)
894
+ UNAME_PROCESSOR=`uname -p`
895
+ set_cc_for_build
896
+ if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
897
+ | grep -q __ARM_PCS_VFP
898
+ then
899
+ FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'`
900
+ GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabi
901
+ else
902
+ FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'`
903
+ GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabihf
904
+ fi
905
+ ;;
787
906
  *:FreeBSD:*:*)
788
- case ${UNAME_MACHINE} in
789
- pc98)
790
- echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
907
+ UNAME_PROCESSOR=`/usr/bin/uname -p`
908
+ case $UNAME_PROCESSOR in
791
909
  amd64)
792
- echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
793
- *)
794
- echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
910
+ UNAME_PROCESSOR=x86_64 ;;
911
+ i386)
912
+ UNAME_PROCESSOR=i586 ;;
795
913
  esac
796
- exit ;;
914
+ FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'`
915
+ GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL
916
+ ;;
797
917
  i*:CYGWIN*:*)
798
- echo ${UNAME_MACHINE}-pc-cygwin
799
- exit ;;
918
+ GUESS=$UNAME_MACHINE-pc-cygwin
919
+ ;;
920
+ *:MINGW64*:*)
921
+ GUESS=$UNAME_MACHINE-pc-mingw64
922
+ ;;
800
923
  *:MINGW*:*)
801
- echo ${UNAME_MACHINE}-pc-mingw32
802
- exit ;;
803
- i*:windows32*:*)
804
- # uname -m includes "-pc" on this system.
805
- echo ${UNAME_MACHINE}-mingw32
806
- exit ;;
924
+ GUESS=$UNAME_MACHINE-pc-mingw32
925
+ ;;
926
+ *:MSYS*:*)
927
+ GUESS=$UNAME_MACHINE-pc-msys
928
+ ;;
807
929
  i*:PW*:*)
808
- echo ${UNAME_MACHINE}-pc-pw32
809
- exit ;;
930
+ GUESS=$UNAME_MACHINE-pc-pw32
931
+ ;;
932
+ *:SerenityOS:*:*)
933
+ GUESS=$UNAME_MACHINE-pc-serenity
934
+ ;;
810
935
  *:Interix*:*)
811
- case ${UNAME_MACHINE} in
936
+ case $UNAME_MACHINE in
812
937
  x86)
813
- echo i586-pc-interix${UNAME_RELEASE}
814
- exit ;;
938
+ GUESS=i586-pc-interix$UNAME_RELEASE
939
+ ;;
815
940
  authenticamd | genuineintel | EM64T)
816
- echo x86_64-unknown-interix${UNAME_RELEASE}
817
- exit ;;
941
+ GUESS=x86_64-unknown-interix$UNAME_RELEASE
942
+ ;;
818
943
  IA64)
819
- echo ia64-unknown-interix${UNAME_RELEASE}
820
- exit ;;
944
+ GUESS=ia64-unknown-interix$UNAME_RELEASE
945
+ ;;
821
946
  esac ;;
822
- [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
823
- echo i${UNAME_MACHINE}-pc-mks
824
- exit ;;
825
- 8664:Windows_NT:*)
826
- echo x86_64-pc-mks
827
- exit ;;
828
- i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
829
- # How do we know it's Interix rather than the generic POSIX subsystem?
830
- # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
831
- # UNAME_MACHINE based on the output of uname instead of i386?
832
- echo i586-pc-interix
833
- exit ;;
834
947
  i*:UWIN*:*)
835
- echo ${UNAME_MACHINE}-pc-uwin
836
- exit ;;
948
+ GUESS=$UNAME_MACHINE-pc-uwin
949
+ ;;
837
950
  amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
838
- echo x86_64-unknown-cygwin
839
- exit ;;
840
- p*:CYGWIN*:*)
841
- echo powerpcle-unknown-cygwin
842
- exit ;;
951
+ GUESS=x86_64-pc-cygwin
952
+ ;;
843
953
  prep*:SunOS:5.*:*)
844
- echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
845
- exit ;;
954
+ SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`
955
+ GUESS=powerpcle-unknown-solaris2$SUN_REL
956
+ ;;
846
957
  *:GNU:*:*)
847
958
  # the GNU system
848
- echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
849
- exit ;;
959
+ GNU_ARCH=`echo "$UNAME_MACHINE" | sed -e 's,[-/].*$,,'`
960
+ GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's,/.*$,,'`
961
+ GUESS=$GNU_ARCH-unknown-$LIBC$GNU_REL
962
+ ;;
850
963
  *:GNU/*:*:*)
851
964
  # other systems with GNU libc and userland
852
- echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
853
- exit ;;
854
- i*86:Minix:*:*)
855
- echo ${UNAME_MACHINE}-pc-minix
856
- exit ;;
965
+ GNU_SYS=`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"`
966
+ GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'`
967
+ GUESS=$UNAME_MACHINE-unknown-$GNU_SYS$GNU_REL-$LIBC
968
+ ;;
969
+ *:Minix:*:*)
970
+ GUESS=$UNAME_MACHINE-unknown-minix
971
+ ;;
972
+ aarch64:Linux:*:*)
973
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
974
+ ;;
975
+ aarch64_be:Linux:*:*)
976
+ UNAME_MACHINE=aarch64_be
977
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
978
+ ;;
857
979
  alpha:Linux:*:*)
858
- case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
980
+ case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' /proc/cpuinfo 2>/dev/null` in
859
981
  EV5) UNAME_MACHINE=alphaev5 ;;
860
982
  EV56) UNAME_MACHINE=alphaev56 ;;
861
983
  PCA56) UNAME_MACHINE=alphapca56 ;;
@@ -863,171 +985,241 @@ EOF
863
985
  EV6) UNAME_MACHINE=alphaev6 ;;
864
986
  EV67) UNAME_MACHINE=alphaev67 ;;
865
987
  EV68*) UNAME_MACHINE=alphaev68 ;;
866
- esac
988
+ esac
867
989
  objdump --private-headers /bin/sh | grep -q ld.so.1
868
- if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
869
- echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
870
- exit ;;
990
+ if test "$?" = 0 ; then LIBC=gnulibc1 ; fi
991
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
992
+ ;;
993
+ arc:Linux:*:* | arceb:Linux:*:* | arc32:Linux:*:* | arc64:Linux:*:*)
994
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
995
+ ;;
871
996
  arm*:Linux:*:*)
872
- eval $set_cc_for_build
997
+ set_cc_for_build
873
998
  if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
874
999
  | grep -q __ARM_EABI__
875
1000
  then
876
- echo ${UNAME_MACHINE}-unknown-linux-gnu
1001
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
877
1002
  else
878
- echo ${UNAME_MACHINE}-unknown-linux-gnueabi
1003
+ if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
1004
+ | grep -q __ARM_PCS_VFP
1005
+ then
1006
+ GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabi
1007
+ else
1008
+ GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabihf
1009
+ fi
879
1010
  fi
880
- exit ;;
1011
+ ;;
881
1012
  avr32*:Linux:*:*)
882
- echo ${UNAME_MACHINE}-unknown-linux-gnu
883
- exit ;;
1013
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
1014
+ ;;
884
1015
  cris:Linux:*:*)
885
- echo cris-axis-linux-gnu
886
- exit ;;
1016
+ GUESS=$UNAME_MACHINE-axis-linux-$LIBC
1017
+ ;;
887
1018
  crisv32:Linux:*:*)
888
- echo crisv32-axis-linux-gnu
889
- exit ;;
1019
+ GUESS=$UNAME_MACHINE-axis-linux-$LIBC
1020
+ ;;
1021
+ e2k:Linux:*:*)
1022
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
1023
+ ;;
890
1024
  frv:Linux:*:*)
891
- echo frv-unknown-linux-gnu
892
- exit ;;
1025
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
1026
+ ;;
1027
+ hexagon:Linux:*:*)
1028
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
1029
+ ;;
893
1030
  i*86:Linux:*:*)
894
- LIBC=gnu
895
- eval $set_cc_for_build
896
- sed 's/^ //' << EOF >$dummy.c
897
- #ifdef __dietlibc__
898
- LIBC=dietlibc
899
- #endif
900
- EOF
901
- eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
902
- echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
903
- exit ;;
1031
+ GUESS=$UNAME_MACHINE-pc-linux-$LIBC
1032
+ ;;
904
1033
  ia64:Linux:*:*)
905
- echo ${UNAME_MACHINE}-unknown-linux-gnu
906
- exit ;;
1034
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
1035
+ ;;
1036
+ k1om:Linux:*:*)
1037
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
1038
+ ;;
1039
+ loongarch32:Linux:*:* | loongarch64:Linux:*:* | loongarchx32:Linux:*:*)
1040
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
1041
+ ;;
907
1042
  m32r*:Linux:*:*)
908
- echo ${UNAME_MACHINE}-unknown-linux-gnu
909
- exit ;;
1043
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
1044
+ ;;
910
1045
  m68*:Linux:*:*)
911
- echo ${UNAME_MACHINE}-unknown-linux-gnu
912
- exit ;;
1046
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
1047
+ ;;
913
1048
  mips:Linux:*:* | mips64:Linux:*:*)
914
- eval $set_cc_for_build
915
- sed 's/^ //' << EOF >$dummy.c
1049
+ set_cc_for_build
1050
+ IS_GLIBC=0
1051
+ test x"${LIBC}" = xgnu && IS_GLIBC=1
1052
+ sed 's/^ //' << EOF > "$dummy.c"
916
1053
  #undef CPU
917
- #undef ${UNAME_MACHINE}
918
- #undef ${UNAME_MACHINE}el
1054
+ #undef mips
1055
+ #undef mipsel
1056
+ #undef mips64
1057
+ #undef mips64el
1058
+ #if ${IS_GLIBC} && defined(_ABI64)
1059
+ LIBCABI=gnuabi64
1060
+ #else
1061
+ #if ${IS_GLIBC} && defined(_ABIN32)
1062
+ LIBCABI=gnuabin32
1063
+ #else
1064
+ LIBCABI=${LIBC}
1065
+ #endif
1066
+ #endif
1067
+
1068
+ #if ${IS_GLIBC} && defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6
1069
+ CPU=mipsisa64r6
1070
+ #else
1071
+ #if ${IS_GLIBC} && !defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6
1072
+ CPU=mipsisa32r6
1073
+ #else
1074
+ #if defined(__mips64)
1075
+ CPU=mips64
1076
+ #else
1077
+ CPU=mips
1078
+ #endif
1079
+ #endif
1080
+ #endif
1081
+
919
1082
  #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
920
- CPU=${UNAME_MACHINE}el
1083
+ MIPS_ENDIAN=el
921
1084
  #else
922
1085
  #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
923
- CPU=${UNAME_MACHINE}
1086
+ MIPS_ENDIAN=
924
1087
  #else
925
- CPU=
1088
+ MIPS_ENDIAN=
926
1089
  #endif
927
1090
  #endif
928
1091
  EOF
929
- eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
930
- test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
1092
+ cc_set_vars=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI'`
1093
+ eval "$cc_set_vars"
1094
+ test "x$CPU" != x && { echo "$CPU${MIPS_ENDIAN}-unknown-linux-$LIBCABI"; exit; }
1095
+ ;;
1096
+ mips64el:Linux:*:*)
1097
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
1098
+ ;;
1099
+ openrisc*:Linux:*:*)
1100
+ GUESS=or1k-unknown-linux-$LIBC
1101
+ ;;
1102
+ or32:Linux:*:* | or1k*:Linux:*:*)
1103
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
931
1104
  ;;
932
- or32:Linux:*:*)
933
- echo or32-unknown-linux-gnu
934
- exit ;;
935
1105
  padre:Linux:*:*)
936
- echo sparc-unknown-linux-gnu
937
- exit ;;
1106
+ GUESS=sparc-unknown-linux-$LIBC
1107
+ ;;
938
1108
  parisc64:Linux:*:* | hppa64:Linux:*:*)
939
- echo hppa64-unknown-linux-gnu
940
- exit ;;
1109
+ GUESS=hppa64-unknown-linux-$LIBC
1110
+ ;;
941
1111
  parisc:Linux:*:* | hppa:Linux:*:*)
942
1112
  # Look for CPU level
943
1113
  case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
944
- PA7*) echo hppa1.1-unknown-linux-gnu ;;
945
- PA8*) echo hppa2.0-unknown-linux-gnu ;;
946
- *) echo hppa-unknown-linux-gnu ;;
1114
+ PA7*) GUESS=hppa1.1-unknown-linux-$LIBC ;;
1115
+ PA8*) GUESS=hppa2.0-unknown-linux-$LIBC ;;
1116
+ *) GUESS=hppa-unknown-linux-$LIBC ;;
947
1117
  esac
948
- exit ;;
1118
+ ;;
949
1119
  ppc64:Linux:*:*)
950
- echo powerpc64-unknown-linux-gnu
951
- exit ;;
1120
+ GUESS=powerpc64-unknown-linux-$LIBC
1121
+ ;;
952
1122
  ppc:Linux:*:*)
953
- echo powerpc-unknown-linux-gnu
954
- exit ;;
1123
+ GUESS=powerpc-unknown-linux-$LIBC
1124
+ ;;
1125
+ ppc64le:Linux:*:*)
1126
+ GUESS=powerpc64le-unknown-linux-$LIBC
1127
+ ;;
1128
+ ppcle:Linux:*:*)
1129
+ GUESS=powerpcle-unknown-linux-$LIBC
1130
+ ;;
1131
+ riscv32:Linux:*:* | riscv32be:Linux:*:* | riscv64:Linux:*:* | riscv64be:Linux:*:*)
1132
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
1133
+ ;;
955
1134
  s390:Linux:*:* | s390x:Linux:*:*)
956
- echo ${UNAME_MACHINE}-ibm-linux
957
- exit ;;
1135
+ GUESS=$UNAME_MACHINE-ibm-linux-$LIBC
1136
+ ;;
958
1137
  sh64*:Linux:*:*)
959
- echo ${UNAME_MACHINE}-unknown-linux-gnu
960
- exit ;;
1138
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
1139
+ ;;
961
1140
  sh*:Linux:*:*)
962
- echo ${UNAME_MACHINE}-unknown-linux-gnu
963
- exit ;;
1141
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
1142
+ ;;
964
1143
  sparc:Linux:*:* | sparc64:Linux:*:*)
965
- echo ${UNAME_MACHINE}-unknown-linux-gnu
966
- exit ;;
1144
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
1145
+ ;;
1146
+ tile*:Linux:*:*)
1147
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
1148
+ ;;
967
1149
  vax:Linux:*:*)
968
- echo ${UNAME_MACHINE}-dec-linux-gnu
969
- exit ;;
1150
+ GUESS=$UNAME_MACHINE-dec-linux-$LIBC
1151
+ ;;
970
1152
  x86_64:Linux:*:*)
971
- echo x86_64-unknown-linux-gnu
972
- exit ;;
1153
+ set_cc_for_build
1154
+ LIBCABI=$LIBC
1155
+ if test "$CC_FOR_BUILD" != no_compiler_found; then
1156
+ if (echo '#ifdef __ILP32__'; echo IS_X32; echo '#endif') | \
1157
+ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
1158
+ grep IS_X32 >/dev/null
1159
+ then
1160
+ LIBCABI=${LIBC}x32
1161
+ fi
1162
+ fi
1163
+ GUESS=$UNAME_MACHINE-pc-linux-$LIBCABI
1164
+ ;;
973
1165
  xtensa*:Linux:*:*)
974
- echo ${UNAME_MACHINE}-unknown-linux-gnu
975
- exit ;;
1166
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
1167
+ ;;
976
1168
  i*86:DYNIX/ptx:4*:*)
977
1169
  # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
978
1170
  # earlier versions are messed up and put the nodename in both
979
1171
  # sysname and nodename.
980
- echo i386-sequent-sysv4
981
- exit ;;
1172
+ GUESS=i386-sequent-sysv4
1173
+ ;;
982
1174
  i*86:UNIX_SV:4.2MP:2.*)
983
- # Unixware is an offshoot of SVR4, but it has its own version
984
- # number series starting with 2...
985
- # I am not positive that other SVR4 systems won't match this,
1175
+ # Unixware is an offshoot of SVR4, but it has its own version
1176
+ # number series starting with 2...
1177
+ # I am not positive that other SVR4 systems won't match this,
986
1178
  # I just have to hope. -- rms.
987
- # Use sysv4.2uw... so that sysv4* matches it.
988
- echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
989
- exit ;;
1179
+ # Use sysv4.2uw... so that sysv4* matches it.
1180
+ GUESS=$UNAME_MACHINE-pc-sysv4.2uw$UNAME_VERSION
1181
+ ;;
990
1182
  i*86:OS/2:*:*)
991
1183
  # If we were able to find `uname', then EMX Unix compatibility
992
1184
  # is probably installed.
993
- echo ${UNAME_MACHINE}-pc-os2-emx
994
- exit ;;
1185
+ GUESS=$UNAME_MACHINE-pc-os2-emx
1186
+ ;;
995
1187
  i*86:XTS-300:*:STOP)
996
- echo ${UNAME_MACHINE}-unknown-stop
997
- exit ;;
1188
+ GUESS=$UNAME_MACHINE-unknown-stop
1189
+ ;;
998
1190
  i*86:atheos:*:*)
999
- echo ${UNAME_MACHINE}-unknown-atheos
1000
- exit ;;
1191
+ GUESS=$UNAME_MACHINE-unknown-atheos
1192
+ ;;
1001
1193
  i*86:syllable:*:*)
1002
- echo ${UNAME_MACHINE}-pc-syllable
1003
- exit ;;
1194
+ GUESS=$UNAME_MACHINE-pc-syllable
1195
+ ;;
1004
1196
  i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
1005
- echo i386-unknown-lynxos${UNAME_RELEASE}
1006
- exit ;;
1197
+ GUESS=i386-unknown-lynxos$UNAME_RELEASE
1198
+ ;;
1007
1199
  i*86:*DOS:*:*)
1008
- echo ${UNAME_MACHINE}-pc-msdosdjgpp
1009
- exit ;;
1010
- i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
1011
- UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
1200
+ GUESS=$UNAME_MACHINE-pc-msdosdjgpp
1201
+ ;;
1202
+ i*86:*:4.*:*)
1203
+ UNAME_REL=`echo "$UNAME_RELEASE" | sed 's/\/MP$//'`
1012
1204
  if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
1013
- echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
1205
+ GUESS=$UNAME_MACHINE-univel-sysv$UNAME_REL
1014
1206
  else
1015
- echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
1207
+ GUESS=$UNAME_MACHINE-pc-sysv$UNAME_REL
1016
1208
  fi
1017
- exit ;;
1209
+ ;;
1018
1210
  i*86:*:5:[678]*)
1019
- # UnixWare 7.x, OpenUNIX and OpenServer 6.
1211
+ # UnixWare 7.x, OpenUNIX and OpenServer 6.
1020
1212
  case `/bin/uname -X | grep "^Machine"` in
1021
1213
  *486*) UNAME_MACHINE=i486 ;;
1022
1214
  *Pentium) UNAME_MACHINE=i586 ;;
1023
1215
  *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
1024
1216
  esac
1025
- echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
1026
- exit ;;
1217
+ GUESS=$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
1218
+ ;;
1027
1219
  i*86:*:3.2:*)
1028
1220
  if test -f /usr/options/cb.name; then
1029
1221
  UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
1030
- echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
1222
+ GUESS=$UNAME_MACHINE-pc-isc$UNAME_REL
1031
1223
  elif /bin/uname -X 2>/dev/null >/dev/null ; then
1032
1224
  UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
1033
1225
  (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
@@ -1037,43 +1229,43 @@ EOF
1037
1229
  && UNAME_MACHINE=i686
1038
1230
  (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
1039
1231
  && UNAME_MACHINE=i686
1040
- echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
1232
+ GUESS=$UNAME_MACHINE-pc-sco$UNAME_REL
1041
1233
  else
1042
- echo ${UNAME_MACHINE}-pc-sysv32
1234
+ GUESS=$UNAME_MACHINE-pc-sysv32
1043
1235
  fi
1044
- exit ;;
1236
+ ;;
1045
1237
  pc:*:*:*)
1046
1238
  # Left here for compatibility:
1047
- # uname -m prints for DJGPP always 'pc', but it prints nothing about
1048
- # the processor, so we play safe by assuming i586.
1239
+ # uname -m prints for DJGPP always 'pc', but it prints nothing about
1240
+ # the processor, so we play safe by assuming i586.
1049
1241
  # Note: whatever this is, it MUST be the same as what config.sub
1050
- # prints for the "djgpp" host, or else GDB configury will decide that
1242
+ # prints for the "djgpp" host, or else GDB configure will decide that
1051
1243
  # this is a cross-build.
1052
- echo i586-pc-msdosdjgpp
1053
- exit ;;
1244
+ GUESS=i586-pc-msdosdjgpp
1245
+ ;;
1054
1246
  Intel:Mach:3*:*)
1055
- echo i386-pc-mach3
1056
- exit ;;
1247
+ GUESS=i386-pc-mach3
1248
+ ;;
1057
1249
  paragon:*:*:*)
1058
- echo i860-intel-osf1
1059
- exit ;;
1250
+ GUESS=i860-intel-osf1
1251
+ ;;
1060
1252
  i860:*:4.*:*) # i860-SVR4
1061
1253
  if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
1062
- echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
1254
+ GUESS=i860-stardent-sysv$UNAME_RELEASE # Stardent Vistra i860-SVR4
1063
1255
  else # Add other i860-SVR4 vendors below as they are discovered.
1064
- echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4
1256
+ GUESS=i860-unknown-sysv$UNAME_RELEASE # Unknown i860-SVR4
1065
1257
  fi
1066
- exit ;;
1258
+ ;;
1067
1259
  mini*:CTIX:SYS*5:*)
1068
1260
  # "miniframe"
1069
- echo m68010-convergent-sysv
1070
- exit ;;
1261
+ GUESS=m68010-convergent-sysv
1262
+ ;;
1071
1263
  mc68k:UNIX:SYSTEM5:3.51m)
1072
- echo m68k-convergent-sysv
1073
- exit ;;
1264
+ GUESS=m68k-convergent-sysv
1265
+ ;;
1074
1266
  M680?0:D-NIX:5.3:*)
1075
- echo m68k-diab-dnix
1076
- exit ;;
1267
+ GUESS=m68k-diab-dnix
1268
+ ;;
1077
1269
  M68*:*:R3V[5678]*:*)
1078
1270
  test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
1079
1271
  3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
@@ -1081,231 +1273,295 @@ EOF
1081
1273
  test -r /etc/.relid \
1082
1274
  && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
1083
1275
  /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
1084
- && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
1276
+ && { echo i486-ncr-sysv4.3"$OS_REL"; exit; }
1085
1277
  /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
1086
- && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
1278
+ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;;
1087
1279
  3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
1088
- /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
1089
- && { echo i486-ncr-sysv4; exit; } ;;
1280
+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
1281
+ && { echo i486-ncr-sysv4; exit; } ;;
1090
1282
  NCR*:*:4.2:* | MPRAS*:*:4.2:*)
1091
1283
  OS_REL='.3'
1092
1284
  test -r /etc/.relid \
1093
1285
  && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
1094
1286
  /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
1095
- && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
1287
+ && { echo i486-ncr-sysv4.3"$OS_REL"; exit; }
1096
1288
  /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
1097
- && { echo i586-ncr-sysv4.3${OS_REL}; exit; }
1289
+ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; }
1098
1290
  /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
1099
- && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
1291
+ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;;
1100
1292
  m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
1101
- echo m68k-unknown-lynxos${UNAME_RELEASE}
1102
- exit ;;
1293
+ GUESS=m68k-unknown-lynxos$UNAME_RELEASE
1294
+ ;;
1103
1295
  mc68030:UNIX_System_V:4.*:*)
1104
- echo m68k-atari-sysv4
1105
- exit ;;
1296
+ GUESS=m68k-atari-sysv4
1297
+ ;;
1106
1298
  TSUNAMI:LynxOS:2.*:*)
1107
- echo sparc-unknown-lynxos${UNAME_RELEASE}
1108
- exit ;;
1299
+ GUESS=sparc-unknown-lynxos$UNAME_RELEASE
1300
+ ;;
1109
1301
  rs6000:LynxOS:2.*:*)
1110
- echo rs6000-unknown-lynxos${UNAME_RELEASE}
1111
- exit ;;
1302
+ GUESS=rs6000-unknown-lynxos$UNAME_RELEASE
1303
+ ;;
1112
1304
  PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
1113
- echo powerpc-unknown-lynxos${UNAME_RELEASE}
1114
- exit ;;
1305
+ GUESS=powerpc-unknown-lynxos$UNAME_RELEASE
1306
+ ;;
1115
1307
  SM[BE]S:UNIX_SV:*:*)
1116
- echo mips-dde-sysv${UNAME_RELEASE}
1117
- exit ;;
1308
+ GUESS=mips-dde-sysv$UNAME_RELEASE
1309
+ ;;
1118
1310
  RM*:ReliantUNIX-*:*:*)
1119
- echo mips-sni-sysv4
1120
- exit ;;
1311
+ GUESS=mips-sni-sysv4
1312
+ ;;
1121
1313
  RM*:SINIX-*:*:*)
1122
- echo mips-sni-sysv4
1123
- exit ;;
1314
+ GUESS=mips-sni-sysv4
1315
+ ;;
1124
1316
  *:SINIX-*:*:*)
1125
1317
  if uname -p 2>/dev/null >/dev/null ; then
1126
1318
  UNAME_MACHINE=`(uname -p) 2>/dev/null`
1127
- echo ${UNAME_MACHINE}-sni-sysv4
1319
+ GUESS=$UNAME_MACHINE-sni-sysv4
1128
1320
  else
1129
- echo ns32k-sni-sysv
1321
+ GUESS=ns32k-sni-sysv
1130
1322
  fi
1131
- exit ;;
1132
- PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
1133
- # says <Richard.M.Bartel@ccMail.Census.GOV>
1134
- echo i586-unisys-sysv4
1135
- exit ;;
1323
+ ;;
1324
+ PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
1325
+ # says <Richard.M.Bartel@ccMail.Census.GOV>
1326
+ GUESS=i586-unisys-sysv4
1327
+ ;;
1136
1328
  *:UNIX_System_V:4*:FTX*)
1137
1329
  # From Gerald Hewes <hewes@openmarket.com>.
1138
1330
  # How about differentiating between stratus architectures? -djm
1139
- echo hppa1.1-stratus-sysv4
1140
- exit ;;
1331
+ GUESS=hppa1.1-stratus-sysv4
1332
+ ;;
1141
1333
  *:*:*:FTX*)
1142
1334
  # From seanf@swdc.stratus.com.
1143
- echo i860-stratus-sysv4
1144
- exit ;;
1335
+ GUESS=i860-stratus-sysv4
1336
+ ;;
1145
1337
  i*86:VOS:*:*)
1146
1338
  # From Paul.Green@stratus.com.
1147
- echo ${UNAME_MACHINE}-stratus-vos
1148
- exit ;;
1339
+ GUESS=$UNAME_MACHINE-stratus-vos
1340
+ ;;
1149
1341
  *:VOS:*:*)
1150
1342
  # From Paul.Green@stratus.com.
1151
- echo hppa1.1-stratus-vos
1152
- exit ;;
1343
+ GUESS=hppa1.1-stratus-vos
1344
+ ;;
1153
1345
  mc68*:A/UX:*:*)
1154
- echo m68k-apple-aux${UNAME_RELEASE}
1155
- exit ;;
1346
+ GUESS=m68k-apple-aux$UNAME_RELEASE
1347
+ ;;
1156
1348
  news*:NEWS-OS:6*:*)
1157
- echo mips-sony-newsos6
1158
- exit ;;
1349
+ GUESS=mips-sony-newsos6
1350
+ ;;
1159
1351
  R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
1160
- if [ -d /usr/nec ]; then
1161
- echo mips-nec-sysv${UNAME_RELEASE}
1352
+ if test -d /usr/nec; then
1353
+ GUESS=mips-nec-sysv$UNAME_RELEASE
1162
1354
  else
1163
- echo mips-unknown-sysv${UNAME_RELEASE}
1355
+ GUESS=mips-unknown-sysv$UNAME_RELEASE
1164
1356
  fi
1165
- exit ;;
1357
+ ;;
1166
1358
  BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only.
1167
- echo powerpc-be-beos
1168
- exit ;;
1359
+ GUESS=powerpc-be-beos
1360
+ ;;
1169
1361
  BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only.
1170
- echo powerpc-apple-beos
1171
- exit ;;
1362
+ GUESS=powerpc-apple-beos
1363
+ ;;
1172
1364
  BePC:BeOS:*:*) # BeOS running on Intel PC compatible.
1173
- echo i586-pc-beos
1174
- exit ;;
1365
+ GUESS=i586-pc-beos
1366
+ ;;
1175
1367
  BePC:Haiku:*:*) # Haiku running on Intel PC compatible.
1176
- echo i586-pc-haiku
1177
- exit ;;
1368
+ GUESS=i586-pc-haiku
1369
+ ;;
1370
+ x86_64:Haiku:*:*)
1371
+ GUESS=x86_64-unknown-haiku
1372
+ ;;
1178
1373
  SX-4:SUPER-UX:*:*)
1179
- echo sx4-nec-superux${UNAME_RELEASE}
1180
- exit ;;
1374
+ GUESS=sx4-nec-superux$UNAME_RELEASE
1375
+ ;;
1181
1376
  SX-5:SUPER-UX:*:*)
1182
- echo sx5-nec-superux${UNAME_RELEASE}
1183
- exit ;;
1377
+ GUESS=sx5-nec-superux$UNAME_RELEASE
1378
+ ;;
1184
1379
  SX-6:SUPER-UX:*:*)
1185
- echo sx6-nec-superux${UNAME_RELEASE}
1186
- exit ;;
1380
+ GUESS=sx6-nec-superux$UNAME_RELEASE
1381
+ ;;
1187
1382
  SX-7:SUPER-UX:*:*)
1188
- echo sx7-nec-superux${UNAME_RELEASE}
1189
- exit ;;
1383
+ GUESS=sx7-nec-superux$UNAME_RELEASE
1384
+ ;;
1190
1385
  SX-8:SUPER-UX:*:*)
1191
- echo sx8-nec-superux${UNAME_RELEASE}
1192
- exit ;;
1386
+ GUESS=sx8-nec-superux$UNAME_RELEASE
1387
+ ;;
1193
1388
  SX-8R:SUPER-UX:*:*)
1194
- echo sx8r-nec-superux${UNAME_RELEASE}
1195
- exit ;;
1389
+ GUESS=sx8r-nec-superux$UNAME_RELEASE
1390
+ ;;
1391
+ SX-ACE:SUPER-UX:*:*)
1392
+ GUESS=sxace-nec-superux$UNAME_RELEASE
1393
+ ;;
1196
1394
  Power*:Rhapsody:*:*)
1197
- echo powerpc-apple-rhapsody${UNAME_RELEASE}
1198
- exit ;;
1395
+ GUESS=powerpc-apple-rhapsody$UNAME_RELEASE
1396
+ ;;
1199
1397
  *:Rhapsody:*:*)
1200
- echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
1201
- exit ;;
1398
+ GUESS=$UNAME_MACHINE-apple-rhapsody$UNAME_RELEASE
1399
+ ;;
1400
+ arm64:Darwin:*:*)
1401
+ GUESS=aarch64-apple-darwin$UNAME_RELEASE
1402
+ ;;
1202
1403
  *:Darwin:*:*)
1203
- UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
1404
+ UNAME_PROCESSOR=`uname -p`
1204
1405
  case $UNAME_PROCESSOR in
1205
- i386)
1206
- eval $set_cc_for_build
1207
- if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
1208
- if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
1209
- (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
1210
- grep IS_64BIT_ARCH >/dev/null
1211
- then
1212
- UNAME_PROCESSOR="x86_64"
1213
- fi
1214
- fi ;;
1215
1406
  unknown) UNAME_PROCESSOR=powerpc ;;
1216
1407
  esac
1217
- echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
1218
- exit ;;
1408
+ if command -v xcode-select > /dev/null 2> /dev/null && \
1409
+ ! xcode-select --print-path > /dev/null 2> /dev/null ; then
1410
+ # Avoid executing cc if there is no toolchain installed as
1411
+ # cc will be a stub that puts up a graphical alert
1412
+ # prompting the user to install developer tools.
1413
+ CC_FOR_BUILD=no_compiler_found
1414
+ else
1415
+ set_cc_for_build
1416
+ fi
1417
+ if test "$CC_FOR_BUILD" != no_compiler_found; then
1418
+ if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
1419
+ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
1420
+ grep IS_64BIT_ARCH >/dev/null
1421
+ then
1422
+ case $UNAME_PROCESSOR in
1423
+ i386) UNAME_PROCESSOR=x86_64 ;;
1424
+ powerpc) UNAME_PROCESSOR=powerpc64 ;;
1425
+ esac
1426
+ fi
1427
+ # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc
1428
+ if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \
1429
+ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
1430
+ grep IS_PPC >/dev/null
1431
+ then
1432
+ UNAME_PROCESSOR=powerpc
1433
+ fi
1434
+ elif test "$UNAME_PROCESSOR" = i386 ; then
1435
+ # uname -m returns i386 or x86_64
1436
+ UNAME_PROCESSOR=$UNAME_MACHINE
1437
+ fi
1438
+ GUESS=$UNAME_PROCESSOR-apple-darwin$UNAME_RELEASE
1439
+ ;;
1219
1440
  *:procnto*:*:* | *:QNX:[0123456789]*:*)
1220
1441
  UNAME_PROCESSOR=`uname -p`
1221
- if test "$UNAME_PROCESSOR" = "x86"; then
1442
+ if test "$UNAME_PROCESSOR" = x86; then
1222
1443
  UNAME_PROCESSOR=i386
1223
1444
  UNAME_MACHINE=pc
1224
1445
  fi
1225
- echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
1226
- exit ;;
1446
+ GUESS=$UNAME_PROCESSOR-$UNAME_MACHINE-nto-qnx$UNAME_RELEASE
1447
+ ;;
1227
1448
  *:QNX:*:4*)
1228
- echo i386-pc-qnx
1229
- exit ;;
1230
- NSE-?:NONSTOP_KERNEL:*:*)
1231
- echo nse-tandem-nsk${UNAME_RELEASE}
1232
- exit ;;
1233
- NSR-?:NONSTOP_KERNEL:*:*)
1234
- echo nsr-tandem-nsk${UNAME_RELEASE}
1235
- exit ;;
1449
+ GUESS=i386-pc-qnx
1450
+ ;;
1451
+ NEO-*:NONSTOP_KERNEL:*:*)
1452
+ GUESS=neo-tandem-nsk$UNAME_RELEASE
1453
+ ;;
1454
+ NSE-*:NONSTOP_KERNEL:*:*)
1455
+ GUESS=nse-tandem-nsk$UNAME_RELEASE
1456
+ ;;
1457
+ NSR-*:NONSTOP_KERNEL:*:*)
1458
+ GUESS=nsr-tandem-nsk$UNAME_RELEASE
1459
+ ;;
1460
+ NSV-*:NONSTOP_KERNEL:*:*)
1461
+ GUESS=nsv-tandem-nsk$UNAME_RELEASE
1462
+ ;;
1463
+ NSX-*:NONSTOP_KERNEL:*:*)
1464
+ GUESS=nsx-tandem-nsk$UNAME_RELEASE
1465
+ ;;
1236
1466
  *:NonStop-UX:*:*)
1237
- echo mips-compaq-nonstopux
1238
- exit ;;
1467
+ GUESS=mips-compaq-nonstopux
1468
+ ;;
1239
1469
  BS2000:POSIX*:*:*)
1240
- echo bs2000-siemens-sysv
1241
- exit ;;
1470
+ GUESS=bs2000-siemens-sysv
1471
+ ;;
1242
1472
  DS/*:UNIX_System_V:*:*)
1243
- echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
1244
- exit ;;
1473
+ GUESS=$UNAME_MACHINE-$UNAME_SYSTEM-$UNAME_RELEASE
1474
+ ;;
1245
1475
  *:Plan9:*:*)
1246
1476
  # "uname -m" is not consistent, so use $cputype instead. 386
1247
1477
  # is converted to i386 for consistency with other x86
1248
1478
  # operating systems.
1249
- if test "$cputype" = "386"; then
1479
+ if test "${cputype-}" = 386; then
1250
1480
  UNAME_MACHINE=i386
1251
- else
1252
- UNAME_MACHINE="$cputype"
1481
+ elif test "x${cputype-}" != x; then
1482
+ UNAME_MACHINE=$cputype
1253
1483
  fi
1254
- echo ${UNAME_MACHINE}-unknown-plan9
1255
- exit ;;
1484
+ GUESS=$UNAME_MACHINE-unknown-plan9
1485
+ ;;
1256
1486
  *:TOPS-10:*:*)
1257
- echo pdp10-unknown-tops10
1258
- exit ;;
1487
+ GUESS=pdp10-unknown-tops10
1488
+ ;;
1259
1489
  *:TENEX:*:*)
1260
- echo pdp10-unknown-tenex
1261
- exit ;;
1490
+ GUESS=pdp10-unknown-tenex
1491
+ ;;
1262
1492
  KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
1263
- echo pdp10-dec-tops20
1264
- exit ;;
1493
+ GUESS=pdp10-dec-tops20
1494
+ ;;
1265
1495
  XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
1266
- echo pdp10-xkl-tops20
1267
- exit ;;
1496
+ GUESS=pdp10-xkl-tops20
1497
+ ;;
1268
1498
  *:TOPS-20:*:*)
1269
- echo pdp10-unknown-tops20
1270
- exit ;;
1499
+ GUESS=pdp10-unknown-tops20
1500
+ ;;
1271
1501
  *:ITS:*:*)
1272
- echo pdp10-unknown-its
1273
- exit ;;
1502
+ GUESS=pdp10-unknown-its
1503
+ ;;
1274
1504
  SEI:*:*:SEIUX)
1275
- echo mips-sei-seiux${UNAME_RELEASE}
1276
- exit ;;
1505
+ GUESS=mips-sei-seiux$UNAME_RELEASE
1506
+ ;;
1277
1507
  *:DragonFly:*:*)
1278
- echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
1279
- exit ;;
1508
+ DRAGONFLY_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'`
1509
+ GUESS=$UNAME_MACHINE-unknown-dragonfly$DRAGONFLY_REL
1510
+ ;;
1280
1511
  *:*VMS:*:*)
1281
- UNAME_MACHINE=`(uname -p) 2>/dev/null`
1282
- case "${UNAME_MACHINE}" in
1283
- A*) echo alpha-dec-vms ; exit ;;
1284
- I*) echo ia64-dec-vms ; exit ;;
1285
- V*) echo vax-dec-vms ; exit ;;
1512
+ UNAME_MACHINE=`(uname -p) 2>/dev/null`
1513
+ case $UNAME_MACHINE in
1514
+ A*) GUESS=alpha-dec-vms ;;
1515
+ I*) GUESS=ia64-dec-vms ;;
1516
+ V*) GUESS=vax-dec-vms ;;
1286
1517
  esac ;;
1287
1518
  *:XENIX:*:SysV)
1288
- echo i386-pc-xenix
1289
- exit ;;
1519
+ GUESS=i386-pc-xenix
1520
+ ;;
1290
1521
  i*86:skyos:*:*)
1291
- echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
1292
- exit ;;
1522
+ SKYOS_REL=`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'`
1523
+ GUESS=$UNAME_MACHINE-pc-skyos$SKYOS_REL
1524
+ ;;
1293
1525
  i*86:rdos:*:*)
1294
- echo ${UNAME_MACHINE}-pc-rdos
1295
- exit ;;
1296
- i*86:AROS:*:*)
1297
- echo ${UNAME_MACHINE}-pc-aros
1298
- exit ;;
1526
+ GUESS=$UNAME_MACHINE-pc-rdos
1527
+ ;;
1528
+ i*86:Fiwix:*:*)
1529
+ GUESS=$UNAME_MACHINE-pc-fiwix
1530
+ ;;
1531
+ *:AROS:*:*)
1532
+ GUESS=$UNAME_MACHINE-unknown-aros
1533
+ ;;
1534
+ x86_64:VMkernel:*:*)
1535
+ GUESS=$UNAME_MACHINE-unknown-esx
1536
+ ;;
1537
+ amd64:Isilon\ OneFS:*:*)
1538
+ GUESS=x86_64-unknown-onefs
1539
+ ;;
1540
+ *:Unleashed:*:*)
1541
+ GUESS=$UNAME_MACHINE-unknown-unleashed$UNAME_RELEASE
1542
+ ;;
1299
1543
  esac
1300
1544
 
1301
- #echo '(No uname command or uname output not recognized.)' 1>&2
1302
- #echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
1545
+ # Do we have a guess based on uname results?
1546
+ if test "x$GUESS" != x; then
1547
+ echo "$GUESS"
1548
+ exit
1549
+ fi
1303
1550
 
1304
- eval $set_cc_for_build
1305
- cat >$dummy.c <<EOF
1551
+ # No uname command or uname output not recognized.
1552
+ set_cc_for_build
1553
+ cat > "$dummy.c" <<EOF
1306
1554
  #ifdef _SEQUENT_
1307
- # include <sys/types.h>
1308
- # include <sys/utsname.h>
1555
+ #include <sys/types.h>
1556
+ #include <sys/utsname.h>
1557
+ #endif
1558
+ #if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__)
1559
+ #if defined (vax) || defined (__vax) || defined (__vax__) || defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__)
1560
+ #include <signal.h>
1561
+ #if defined(_SIZE_T_) || defined(SIGLOST)
1562
+ #include <sys/utsname.h>
1563
+ #endif
1564
+ #endif
1309
1565
  #endif
1310
1566
  main ()
1311
1567
  {
@@ -1318,20 +1574,12 @@ main ()
1318
1574
  #include <sys/param.h>
1319
1575
  printf ("m68k-sony-newsos%s\n",
1320
1576
  #ifdef NEWSOS4
1321
- "4"
1577
+ "4"
1322
1578
  #else
1323
- ""
1324
- #endif
1325
- ); exit (0);
1579
+ ""
1326
1580
  #endif
1581
+ ); exit (0);
1327
1582
  #endif
1328
-
1329
- #if defined (__arm) && defined (__acorn) && defined (__unix)
1330
- printf ("arm-acorn-riscix\n"); exit (0);
1331
- #endif
1332
-
1333
- #if defined (hp300) && !defined (hpux)
1334
- printf ("m68k-hp-bsd\n"); exit (0);
1335
1583
  #endif
1336
1584
 
1337
1585
  #if defined (NeXT)
@@ -1373,39 +1621,54 @@ main ()
1373
1621
  #endif
1374
1622
 
1375
1623
  #if defined (_SEQUENT_)
1376
- struct utsname un;
1377
-
1378
- uname(&un);
1379
-
1380
- if (strncmp(un.version, "V2", 2) == 0) {
1381
- printf ("i386-sequent-ptx2\n"); exit (0);
1382
- }
1383
- if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
1384
- printf ("i386-sequent-ptx1\n"); exit (0);
1385
- }
1386
- printf ("i386-sequent-ptx\n"); exit (0);
1624
+ struct utsname un;
1387
1625
 
1626
+ uname(&un);
1627
+ if (strncmp(un.version, "V2", 2) == 0) {
1628
+ printf ("i386-sequent-ptx2\n"); exit (0);
1629
+ }
1630
+ if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
1631
+ printf ("i386-sequent-ptx1\n"); exit (0);
1632
+ }
1633
+ printf ("i386-sequent-ptx\n"); exit (0);
1388
1634
  #endif
1389
1635
 
1390
1636
  #if defined (vax)
1391
- # if !defined (ultrix)
1392
- # include <sys/param.h>
1393
- # if defined (BSD)
1394
- # if BSD == 43
1395
- printf ("vax-dec-bsd4.3\n"); exit (0);
1396
- # else
1397
- # if BSD == 199006
1398
- printf ("vax-dec-bsd4.3reno\n"); exit (0);
1399
- # else
1400
- printf ("vax-dec-bsd\n"); exit (0);
1401
- # endif
1402
- # endif
1403
- # else
1404
- printf ("vax-dec-bsd\n"); exit (0);
1405
- # endif
1406
- # else
1407
- printf ("vax-dec-ultrix\n"); exit (0);
1408
- # endif
1637
+ #if !defined (ultrix)
1638
+ #include <sys/param.h>
1639
+ #if defined (BSD)
1640
+ #if BSD == 43
1641
+ printf ("vax-dec-bsd4.3\n"); exit (0);
1642
+ #else
1643
+ #if BSD == 199006
1644
+ printf ("vax-dec-bsd4.3reno\n"); exit (0);
1645
+ #else
1646
+ printf ("vax-dec-bsd\n"); exit (0);
1647
+ #endif
1648
+ #endif
1649
+ #else
1650
+ printf ("vax-dec-bsd\n"); exit (0);
1651
+ #endif
1652
+ #else
1653
+ #if defined(_SIZE_T_) || defined(SIGLOST)
1654
+ struct utsname un;
1655
+ uname (&un);
1656
+ printf ("vax-dec-ultrix%s\n", un.release); exit (0);
1657
+ #else
1658
+ printf ("vax-dec-ultrix\n"); exit (0);
1659
+ #endif
1660
+ #endif
1661
+ #endif
1662
+ #if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__)
1663
+ #if defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__)
1664
+ #if defined(_SIZE_T_) || defined(SIGLOST)
1665
+ struct utsname *un;
1666
+ uname (&un);
1667
+ printf ("mips-dec-ultrix%s\n", un.release); exit (0);
1668
+ #else
1669
+ printf ("mips-dec-ultrix\n"); exit (0);
1670
+ #endif
1671
+ #endif
1409
1672
  #endif
1410
1673
 
1411
1674
  #if defined (alliant) && defined (i860)
@@ -1416,54 +1679,46 @@ main ()
1416
1679
  }
1417
1680
  EOF
1418
1681
 
1419
- $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` &&
1682
+ $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null && SYSTEM_NAME=`"$dummy"` &&
1420
1683
  { echo "$SYSTEM_NAME"; exit; }
1421
1684
 
1422
1685
  # Apollos put the system type in the environment.
1686
+ test -d /usr/apollo && { echo "$ISP-apollo-$SYSTYPE"; exit; }
1423
1687
 
1424
- test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }
1688
+ echo "$0: unable to guess system type" >&2
1425
1689
 
1426
- # Convex versions that predate uname can use getsysinfo(1)
1690
+ case $UNAME_MACHINE:$UNAME_SYSTEM in
1691
+ mips:Linux | mips64:Linux)
1692
+ # If we got here on MIPS GNU/Linux, output extra information.
1693
+ cat >&2 <<EOF
1427
1694
 
1428
- if [ -x /usr/convex/getsysinfo ]
1429
- then
1430
- case `getsysinfo -f cpu_type` in
1431
- c1*)
1432
- echo c1-convex-bsd
1433
- exit ;;
1434
- c2*)
1435
- if getsysinfo -f scalar_acc
1436
- then echo c32-convex-bsd
1437
- else echo c2-convex-bsd
1438
- fi
1439
- exit ;;
1440
- c34*)
1441
- echo c34-convex-bsd
1442
- exit ;;
1443
- c38*)
1444
- echo c38-convex-bsd
1445
- exit ;;
1446
- c4*)
1447
- echo c4-convex-bsd
1448
- exit ;;
1449
- esac
1450
- fi
1695
+ NOTE: MIPS GNU/Linux systems require a C compiler to fully recognize
1696
+ the system type. Please install a C compiler and try again.
1697
+ EOF
1698
+ ;;
1699
+ esac
1451
1700
 
1452
1701
  cat >&2 <<EOF
1453
- $0: unable to guess system type
1454
1702
 
1455
- This script, last modified $timestamp, has failed to recognize
1456
- the operating system you are using. It is advised that you
1457
- download the most up to date version of the config scripts from
1703
+ This script (version $timestamp), has failed to recognize the
1704
+ operating system you are using. If your script is old, overwrite *all*
1705
+ copies of config.guess and config.sub with the latest versions from:
1458
1706
 
1459
- http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
1707
+ https://git.savannah.gnu.org/cgit/config.git/plain/config.guess
1460
1708
  and
1461
- http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
1709
+ https://git.savannah.gnu.org/cgit/config.git/plain/config.sub
1710
+ EOF
1462
1711
 
1463
- If the version you run ($0) is already up to date, please
1464
- send the following data and any information you think might be
1465
- pertinent to <config-patches@gnu.org> in order to provide the needed
1466
- information to handle your system.
1712
+ our_year=`echo $timestamp | sed 's,-.*,,'`
1713
+ thisyear=`date +%Y`
1714
+ # shellcheck disable=SC2003
1715
+ script_age=`expr "$thisyear" - "$our_year"`
1716
+ if test "$script_age" -lt 3 ; then
1717
+ cat >&2 <<EOF
1718
+
1719
+ If $0 has already been updated, send the following data and any
1720
+ information you think might be pertinent to config-patches@gnu.org to
1721
+ provide the necessary information to handle your system.
1467
1722
 
1468
1723
  config.guess timestamp = $timestamp
1469
1724
 
@@ -1482,16 +1737,17 @@ hostinfo = `(hostinfo) 2>/dev/null`
1482
1737
  /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null`
1483
1738
  /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
1484
1739
 
1485
- UNAME_MACHINE = ${UNAME_MACHINE}
1486
- UNAME_RELEASE = ${UNAME_RELEASE}
1487
- UNAME_SYSTEM = ${UNAME_SYSTEM}
1488
- UNAME_VERSION = ${UNAME_VERSION}
1740
+ UNAME_MACHINE = "$UNAME_MACHINE"
1741
+ UNAME_RELEASE = "$UNAME_RELEASE"
1742
+ UNAME_SYSTEM = "$UNAME_SYSTEM"
1743
+ UNAME_VERSION = "$UNAME_VERSION"
1489
1744
  EOF
1745
+ fi
1490
1746
 
1491
1747
  exit 1
1492
1748
 
1493
1749
  # Local variables:
1494
- # eval: (add-hook 'write-file-hooks 'time-stamp)
1750
+ # eval: (add-hook 'before-save-hook 'time-stamp)
1495
1751
  # time-stamp-start: "timestamp='"
1496
1752
  # time-stamp-format: "%:y-%02m-%02d"
1497
1753
  # time-stamp-end: "'"