ffi 1.1.2 → 1.17.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (706) hide show
  1. checksums.yaml +7 -0
  2. checksums.yaml.gz.sig +0 -0
  3. data/CHANGELOG.md +456 -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 +166 -156
  10. data/ext/ffi_c/AbstractMemory.c +240 -140
  11. data/ext/ffi_c/AbstractMemory.h +25 -15
  12. data/ext/ffi_c/ArrayType.c +78 -29
  13. data/ext/ffi_c/ArrayType.h +22 -12
  14. data/ext/ffi_c/Buffer.c +121 -60
  15. data/ext/ffi_c/Call.c +184 -137
  16. data/ext/ffi_c/Call.h +46 -22
  17. data/ext/ffi_c/ClosurePool.c +101 -43
  18. data/ext/ffi_c/ClosurePool.h +24 -13
  19. data/ext/ffi_c/DynamicLibrary.c +139 -57
  20. data/ext/ffi_c/DynamicLibrary.h +70 -12
  21. data/ext/ffi_c/Function.c +372 -273
  22. data/ext/ffi_c/Function.h +25 -20
  23. data/ext/ffi_c/FunctionInfo.c +135 -49
  24. data/ext/ffi_c/LastError.c +97 -30
  25. data/ext/ffi_c/LastError.h +21 -12
  26. data/ext/ffi_c/LongDouble.c +15 -9
  27. data/ext/ffi_c/LongDouble.h +21 -16
  28. data/ext/ffi_c/MappedType.c +88 -38
  29. data/ext/ffi_c/MappedType.h +21 -14
  30. data/ext/ffi_c/MemoryPointer.c +91 -38
  31. data/ext/ffi_c/MemoryPointer.h +22 -19
  32. data/ext/ffi_c/MethodHandle.c +52 -51
  33. data/ext/ffi_c/MethodHandle.h +24 -14
  34. data/ext/ffi_c/Platform.c +28 -62
  35. data/ext/ffi_c/Platform.h +21 -12
  36. data/ext/ffi_c/Pointer.c +145 -86
  37. data/ext/ffi_c/Pointer.h +23 -19
  38. data/ext/ffi_c/Struct.c +363 -163
  39. data/ext/ffi_c/Struct.h +39 -21
  40. data/ext/ffi_c/StructByValue.c +72 -37
  41. data/ext/ffi_c/StructByValue.h +21 -12
  42. data/ext/ffi_c/StructLayout.c +308 -94
  43. data/ext/ffi_c/Thread.c +73 -270
  44. data/ext/ffi_c/Thread.h +32 -35
  45. data/ext/ffi_c/Type.c +147 -84
  46. data/ext/ffi_c/Type.h +27 -11
  47. data/ext/ffi_c/Types.c +40 -24
  48. data/ext/ffi_c/Types.h +24 -21
  49. data/ext/ffi_c/Variadic.c +148 -64
  50. data/ext/ffi_c/compat.h +45 -37
  51. data/ext/ffi_c/extconf.rb +86 -32
  52. data/ext/ffi_c/ffi.c +32 -21
  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} +6366 -3559
  78. data/ext/ffi_c/libffi/LICENSE +1 -1
  79. data/ext/ffi_c/libffi/LICENSE-BUILDTOOLS +353 -0
  80. data/ext/ffi_c/libffi/Makefile.am +131 -170
  81. data/ext/ffi_c/libffi/Makefile.in +1317 -1010
  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 +222 -17
  86. data/ext/ffi_c/libffi/config.guess +1033 -780
  87. data/ext/ffi_c/libffi/config.sub +1393 -1206
  88. data/ext/ffi_c/libffi/configure +16340 -10740
  89. data/ext/ffi_c/libffi/configure.ac +226 -271
  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 +525 -79
  94. data/ext/ffi_c/libffi/doc/version.texi +4 -4
  95. data/ext/ffi_c/libffi/fficonfig.h.in +41 -52
  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 +201 -79
  99. data/ext/ffi_c/libffi/include/ffi.h.in +190 -99
  100. data/ext/ffi_c/libffi/include/ffi_cfi.h +76 -0
  101. data/ext/ffi_c/libffi/include/ffi_common.h +72 -14
  102. data/ext/ffi_c/libffi/include/tramp.h +45 -0
  103. data/ext/ffi_c/libffi/install-sh +231 -210
  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 +3868 -2068
  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 +47 -25
  113. data/ext/ffi_c/libffi/m4/ax_cflags_warn_all.m4 +110 -147
  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 +75 -19
  116. data/ext/ffi_c/libffi/m4/ax_configure_args.m4 +8 -29
  117. data/ext/ffi_c/libffi/m4/ax_enable_builddir.m4 +11 -9
  118. data/ext/ffi_c/libffi/m4/ax_gcc_archflag.m4 +104 -52
  119. data/ext/ffi_c/libffi/m4/ax_gcc_x86_cpuid.m4 +18 -8
  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 +156 -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 +153 -314
  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/{include/ffi.h.vc64 → msvc_build/aarch64/aarch64_include/ffi.h} +151 -67
  134. data/ext/ffi_c/libffi/msvc_build/aarch64/aarch64_include/fficonfig.h +219 -0
  135. data/ext/ffi_c/libffi/msvcc.sh +176 -20
  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 +161 -266
  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 +706 -513
  149. data/ext/ffi_c/libffi/src/arm/ffitarget.h +32 -8
  150. data/ext/ffi_c/libffi/src/arm/internal.h +17 -0
  151. data/ext/ffi_c/libffi/src/arm/sysv.S +372 -413
  152. data/ext/ffi_c/libffi/src/arm/sysv_msvc_arm32.S +311 -0
  153. data/ext/ffi_c/libffi/src/avr32/ffitarget.h +6 -1
  154. data/ext/ffi_c/libffi/src/bfin/ffi.c +196 -0
  155. data/ext/ffi_c/libffi/src/bfin/ffitarget.h +43 -0
  156. data/ext/ffi_c/libffi/src/bfin/sysv.S +179 -0
  157. data/ext/ffi_c/libffi/src/closures.c +565 -73
  158. data/ext/ffi_c/libffi/src/cris/ffi.c +10 -7
  159. data/ext/ffi_c/libffi/src/cris/ffitarget.h +6 -1
  160. data/ext/ffi_c/libffi/src/csky/ffi.c +395 -0
  161. data/ext/ffi_c/libffi/src/csky/ffitarget.h +63 -0
  162. data/ext/ffi_c/libffi/src/csky/sysv.S +371 -0
  163. data/ext/ffi_c/libffi/src/debug.c +8 -3
  164. data/ext/ffi_c/libffi/src/dlmalloc.c +23 -13
  165. data/ext/ffi_c/libffi/src/frv/ffi.c +2 -2
  166. data/ext/ffi_c/libffi/src/frv/ffitarget.h +6 -1
  167. data/ext/ffi_c/libffi/src/ia64/ffi.c +47 -13
  168. data/ext/ffi_c/libffi/src/ia64/ffitarget.h +8 -2
  169. data/ext/ffi_c/libffi/src/ia64/unix.S +28 -3
  170. data/ext/ffi_c/libffi/src/java_raw_api.c +23 -5
  171. data/ext/ffi_c/libffi/src/kvx/asm.h +5 -0
  172. data/ext/ffi_c/libffi/src/kvx/ffi.c +273 -0
  173. data/ext/ffi_c/libffi/src/kvx/ffitarget.h +75 -0
  174. data/ext/ffi_c/libffi/src/kvx/sysv.S +127 -0
  175. data/ext/ffi_c/libffi/src/loongarch64/ffi.c +624 -0
  176. data/ext/ffi_c/libffi/src/loongarch64/ffitarget.h +82 -0
  177. data/ext/ffi_c/libffi/src/loongarch64/sysv.S +327 -0
  178. data/ext/ffi_c/libffi/src/m32r/ffi.c +32 -15
  179. data/ext/ffi_c/libffi/src/m32r/ffitarget.h +6 -1
  180. data/ext/ffi_c/libffi/src/m68k/ffi.c +87 -13
  181. data/ext/ffi_c/libffi/src/m68k/ffitarget.h +6 -1
  182. data/ext/ffi_c/libffi/src/m68k/sysv.S +119 -32
  183. data/ext/ffi_c/libffi/src/m88k/ffi.c +400 -0
  184. data/ext/ffi_c/libffi/src/m88k/ffitarget.h +49 -0
  185. data/ext/ffi_c/libffi/src/m88k/obsd.S +209 -0
  186. data/ext/ffi_c/libffi/src/metag/ffi.c +330 -0
  187. data/ext/ffi_c/libffi/{fficonfig.hw → src/metag/ffitarget.h} +22 -26
  188. data/ext/ffi_c/libffi/src/metag/sysv.S +311 -0
  189. data/ext/ffi_c/libffi/src/microblaze/ffi.c +321 -0
  190. data/ext/ffi_c/libffi/src/microblaze/ffitarget.h +53 -0
  191. data/ext/ffi_c/libffi/src/microblaze/sysv.S +302 -0
  192. data/ext/ffi_c/libffi/src/mips/ffi.c +382 -101
  193. data/ext/ffi_c/libffi/src/mips/ffitarget.h +23 -14
  194. data/ext/ffi_c/libffi/src/mips/n32.S +321 -89
  195. data/ext/ffi_c/libffi/src/mips/o32.S +211 -31
  196. data/ext/ffi_c/libffi/src/moxie/eabi.S +55 -82
  197. data/ext/ffi_c/libffi/src/moxie/ffi.c +100 -66
  198. data/ext/ffi_c/libffi/src/moxie/ffitarget.h +52 -0
  199. data/ext/ffi_c/libffi/src/nios2/ffi.c +304 -0
  200. data/ext/ffi_c/libffi/src/nios2/ffitarget.h +52 -0
  201. data/ext/ffi_c/libffi/src/nios2/sysv.S +136 -0
  202. data/ext/ffi_c/libffi/src/or1k/ffi.c +341 -0
  203. data/ext/ffi_c/libffi/src/or1k/ffitarget.h +58 -0
  204. data/ext/ffi_c/libffi/src/or1k/sysv.S +107 -0
  205. data/ext/ffi_c/libffi/src/pa/ffi.c +62 -108
  206. data/ext/ffi_c/libffi/src/pa/ffi64.c +614 -0
  207. data/ext/ffi_c/libffi/src/pa/ffitarget.h +28 -12
  208. data/ext/ffi_c/libffi/src/pa/hpux32.S +87 -38
  209. data/ext/ffi_c/libffi/src/pa/hpux64.S +681 -0
  210. data/ext/ffi_c/libffi/src/pa/linux.S +109 -39
  211. data/ext/ffi_c/libffi/src/powerpc/aix.S +245 -7
  212. data/ext/ffi_c/libffi/src/powerpc/aix_closure.S +253 -4
  213. data/ext/ffi_c/libffi/src/powerpc/asm.h +2 -2
  214. data/ext/ffi_c/libffi/src/powerpc/darwin.S +2 -7
  215. data/ext/ffi_c/libffi/src/powerpc/darwin_closure.S +22 -26
  216. data/ext/ffi_c/libffi/src/powerpc/ffi.c +105 -1378
  217. data/ext/ffi_c/libffi/src/powerpc/ffi_darwin.c +157 -52
  218. data/ext/ffi_c/libffi/src/powerpc/ffi_linux64.c +1153 -0
  219. data/ext/ffi_c/libffi/src/powerpc/ffi_powerpc.h +105 -0
  220. data/ext/ffi_c/libffi/src/powerpc/ffi_sysv.c +923 -0
  221. data/ext/ffi_c/libffi/src/powerpc/ffitarget.h +110 -45
  222. data/ext/ffi_c/libffi/src/powerpc/linux64.S +191 -85
  223. data/ext/ffi_c/libffi/src/powerpc/linux64_closure.S +438 -108
  224. data/ext/ffi_c/libffi/src/powerpc/ppc_closure.S +138 -68
  225. data/ext/ffi_c/libffi/src/powerpc/sysv.S +73 -119
  226. data/ext/ffi_c/libffi/src/powerpc/t-aix +5 -0
  227. data/ext/ffi_c/libffi/src/prep_cif.c +131 -25
  228. data/ext/ffi_c/libffi/src/raw_api.c +18 -5
  229. data/ext/ffi_c/libffi/src/riscv/ffi.c +514 -0
  230. data/ext/ffi_c/libffi/src/riscv/ffitarget.h +69 -0
  231. data/ext/ffi_c/libffi/src/riscv/sysv.S +293 -0
  232. data/ext/ffi_c/libffi/src/s390/ffi.c +294 -318
  233. data/ext/ffi_c/libffi/src/s390/ffitarget.h +9 -1
  234. data/ext/ffi_c/libffi/src/s390/internal.h +11 -0
  235. data/ext/ffi_c/libffi/src/s390/sysv.S +257 -366
  236. data/ext/ffi_c/libffi/src/sh/ffi.c +4 -3
  237. data/ext/ffi_c/libffi/src/sh/ffitarget.h +6 -1
  238. data/ext/ffi_c/libffi/src/sh64/ffi.c +3 -2
  239. data/ext/ffi_c/libffi/src/sh64/ffitarget.h +6 -1
  240. data/ext/ffi_c/libffi/src/sparc/ffi.c +326 -527
  241. data/ext/ffi_c/libffi/src/sparc/ffi64.c +630 -0
  242. data/ext/ffi_c/libffi/src/sparc/ffitarget.h +20 -7
  243. data/ext/ffi_c/libffi/src/sparc/internal.h +26 -0
  244. data/ext/ffi_c/libffi/src/sparc/v8.S +364 -234
  245. data/ext/ffi_c/libffi/src/sparc/v9.S +340 -207
  246. data/ext/ffi_c/libffi/src/tile/ffi.c +355 -0
  247. data/ext/ffi_c/libffi/src/tile/ffitarget.h +65 -0
  248. data/ext/ffi_c/libffi/src/tile/tile.S +360 -0
  249. data/ext/ffi_c/libffi/src/tramp.c +716 -0
  250. data/ext/ffi_c/libffi/src/types.c +48 -19
  251. data/ext/ffi_c/libffi/src/vax/elfbsd.S +195 -0
  252. data/ext/ffi_c/libffi/src/vax/ffi.c +276 -0
  253. data/ext/ffi_c/libffi/src/vax/ffitarget.h +49 -0
  254. data/ext/ffi_c/libffi/src/wasm32/ffi.c +947 -0
  255. data/ext/ffi_c/libffi/src/wasm32/ffitarget.h +62 -0
  256. data/ext/ffi_c/libffi/src/x86/asmnames.h +30 -0
  257. data/ext/ffi_c/libffi/src/x86/ffi.c +686 -498
  258. data/ext/ffi_c/libffi/src/x86/ffi64.c +444 -129
  259. data/ext/ffi_c/libffi/src/x86/ffitarget.h +79 -36
  260. data/ext/ffi_c/libffi/src/x86/ffiw64.c +361 -0
  261. data/ext/ffi_c/libffi/src/x86/internal.h +43 -0
  262. data/ext/ffi_c/libffi/src/x86/internal64.h +36 -0
  263. data/ext/ffi_c/libffi/src/x86/sysv.S +1198 -394
  264. data/ext/ffi_c/libffi/src/x86/sysv_intel.S +998 -0
  265. data/ext/ffi_c/libffi/src/x86/unix64.S +585 -300
  266. data/ext/ffi_c/libffi/src/x86/win64.S +244 -458
  267. data/ext/ffi_c/libffi/src/x86/win64_intel.S +238 -0
  268. data/ext/ffi_c/libffi/src/xtensa/ffi.c +306 -0
  269. data/ext/ffi_c/libffi/src/xtensa/ffitarget.h +57 -0
  270. data/ext/ffi_c/libffi/src/xtensa/sysv.S +268 -0
  271. data/ext/ffi_c/libffi/stamp-h.in +1 -0
  272. data/ext/ffi_c/libffi/testsuite/Makefile.am +80 -73
  273. data/ext/ffi_c/libffi/testsuite/Makefile.in +233 -117
  274. data/ext/ffi_c/libffi/testsuite/emscripten/build-tests.sh +54 -0
  275. data/ext/ffi_c/libffi/testsuite/emscripten/build.sh +63 -0
  276. data/ext/ffi_c/libffi/testsuite/emscripten/conftest.py +86 -0
  277. data/ext/ffi_c/libffi/testsuite/emscripten/node-tests.sh +48 -0
  278. data/ext/ffi_c/libffi/testsuite/emscripten/test.html +7 -0
  279. data/ext/ffi_c/libffi/testsuite/emscripten/test_libffi.py +51 -0
  280. data/ext/ffi_c/libffi/testsuite/lib/libffi.exp +360 -28
  281. data/ext/ffi_c/libffi/testsuite/lib/target-libpath.exp +22 -2
  282. data/ext/ffi_c/libffi/testsuite/libffi.bhaible/Makefile +28 -0
  283. data/ext/ffi_c/libffi/testsuite/libffi.bhaible/README +78 -0
  284. data/ext/ffi_c/libffi/testsuite/libffi.bhaible/alignof.h +50 -0
  285. data/ext/ffi_c/libffi/testsuite/libffi.bhaible/bhaible.exp +63 -0
  286. data/ext/ffi_c/libffi/testsuite/libffi.bhaible/test-call.c +1746 -0
  287. data/ext/ffi_c/libffi/testsuite/libffi.bhaible/test-callback.c +2885 -0
  288. data/ext/ffi_c/libffi/testsuite/libffi.bhaible/testcases.c +747 -0
  289. data/ext/ffi_c/libffi/testsuite/libffi.call/align_mixed.c +46 -0
  290. data/ext/ffi_c/libffi/testsuite/libffi.call/align_stdcall.c +46 -0
  291. data/ext/ffi_c/libffi/testsuite/libffi.call/bpo_38748.c +41 -0
  292. data/ext/ffi_c/libffi/testsuite/libffi.call/call.exp +28 -6
  293. data/ext/ffi_c/libffi/testsuite/libffi.call/callback.c +99 -0
  294. data/ext/ffi_c/libffi/testsuite/libffi.call/callback2.c +108 -0
  295. data/ext/ffi_c/libffi/testsuite/libffi.call/callback3.c +114 -0
  296. data/ext/ffi_c/libffi/testsuite/libffi.call/callback4.c +119 -0
  297. data/ext/ffi_c/libffi/testsuite/libffi.call/err_bad_typedef.c +2 -2
  298. data/ext/ffi_c/libffi/testsuite/libffi.call/ffitest.h +52 -42
  299. data/ext/ffi_c/libffi/testsuite/libffi.call/float1.c +3 -1
  300. data/ext/ffi_c/libffi/testsuite/libffi.call/float2.c +15 -12
  301. data/ext/ffi_c/libffi/testsuite/libffi.call/float3.c +4 -2
  302. data/ext/ffi_c/libffi/testsuite/libffi.call/float_va.c +110 -0
  303. data/ext/ffi_c/libffi/testsuite/libffi.call/many.c +6 -16
  304. data/ext/ffi_c/libffi/testsuite/libffi.call/many2.c +57 -0
  305. data/ext/ffi_c/libffi/testsuite/libffi.call/many_double.c +70 -0
  306. data/ext/ffi_c/libffi/testsuite/libffi.call/many_mixed.c +78 -0
  307. data/ext/ffi_c/libffi/testsuite/libffi.call/negint.c +0 -1
  308. data/ext/ffi_c/libffi/testsuite/libffi.call/offsets.c +46 -0
  309. data/ext/ffi_c/libffi/testsuite/libffi.call/pr1172638.c +127 -0
  310. data/ext/ffi_c/libffi/testsuite/libffi.call/return_dbl.c +1 -0
  311. data/ext/ffi_c/libffi/testsuite/libffi.call/return_ldl.c +1 -1
  312. data/ext/ffi_c/libffi/testsuite/libffi.call/return_ll1.c +5 -0
  313. data/ext/ffi_c/libffi/testsuite/libffi.call/return_sc.c +1 -1
  314. data/ext/ffi_c/libffi/testsuite/libffi.call/return_sl.c +4 -0
  315. data/ext/ffi_c/libffi/testsuite/libffi.call/return_uc.c +1 -1
  316. data/ext/ffi_c/libffi/testsuite/libffi.call/return_ul.c +4 -0
  317. data/ext/ffi_c/libffi/testsuite/libffi.call/s55.c +60 -0
  318. data/ext/ffi_c/libffi/testsuite/libffi.call/strlen.c +9 -10
  319. data/ext/ffi_c/libffi/testsuite/libffi.call/strlen2.c +49 -0
  320. data/ext/ffi_c/libffi/testsuite/libffi.call/strlen3.c +49 -0
  321. data/ext/ffi_c/libffi/testsuite/libffi.call/strlen4.c +55 -0
  322. data/ext/ffi_c/libffi/testsuite/libffi.call/struct1.c +9 -7
  323. data/ext/ffi_c/libffi/testsuite/libffi.call/struct10.c +57 -0
  324. data/ext/ffi_c/libffi/testsuite/libffi.call/struct2.c +7 -7
  325. data/ext/ffi_c/libffi/testsuite/libffi.call/struct3.c +7 -6
  326. data/ext/ffi_c/libffi/testsuite/libffi.call/struct4.c +9 -8
  327. data/ext/ffi_c/libffi/testsuite/libffi.call/struct5.c +9 -8
  328. data/ext/ffi_c/libffi/testsuite/libffi.call/struct6.c +9 -9
  329. data/ext/ffi_c/libffi/testsuite/libffi.call/struct7.c +9 -9
  330. data/ext/ffi_c/libffi/testsuite/libffi.call/struct8.c +9 -8
  331. data/ext/ffi_c/libffi/testsuite/libffi.call/struct9.c +9 -8
  332. data/ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_2.c +63 -0
  333. data/ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_3.c +65 -0
  334. data/ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_3f.c +65 -0
  335. data/ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_4.c +67 -0
  336. data/ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_4f.c +67 -0
  337. data/ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_big.c +93 -0
  338. data/ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_small.c +61 -0
  339. data/ext/ffi_c/libffi/testsuite/libffi.call/struct_return_2H.c +63 -0
  340. data/ext/ffi_c/libffi/testsuite/libffi.call/struct_return_8H.c +90 -0
  341. data/ext/ffi_c/libffi/testsuite/libffi.call/uninitialized.c +61 -0
  342. data/ext/ffi_c/libffi/testsuite/libffi.call/va_1.c +78 -0
  343. data/ext/ffi_c/libffi/testsuite/libffi.call/va_2.c +220 -0
  344. data/ext/ffi_c/libffi/testsuite/libffi.call/va_3.c +154 -0
  345. data/ext/ffi_c/libffi/testsuite/libffi.call/va_struct1.c +134 -0
  346. data/ext/ffi_c/libffi/testsuite/libffi.call/va_struct2.c +134 -0
  347. data/ext/ffi_c/libffi/testsuite/libffi.call/va_struct3.c +140 -0
  348. data/ext/ffi_c/libffi/testsuite/libffi.closures/closure.exp +67 -0
  349. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/closure_fn0.c +3 -2
  350. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/closure_fn1.c +2 -0
  351. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/closure_fn2.c +2 -0
  352. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/closure_fn3.c +21 -1
  353. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/closure_fn4.c +2 -0
  354. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/closure_fn5.c +2 -0
  355. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/closure_fn6.c +2 -0
  356. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/closure_loc_fn0.c +7 -6
  357. data/ext/ffi_c/libffi/testsuite/{libffi.call/closure_stdcall.c → libffi.closures/closure_simple.c} +13 -16
  358. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_12byte.c +22 -4
  359. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_16byte.c +26 -4
  360. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_18byte.c +28 -4
  361. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_19byte.c +33 -4
  362. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_1_1byte.c +8 -4
  363. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_20byte.c +23 -5
  364. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_20byte1.c +25 -5
  365. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_24byte.c +40 -8
  366. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_2byte.c +17 -4
  367. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_3_1byte.c +23 -4
  368. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_3byte1.c +17 -4
  369. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_3byte2.c +17 -4
  370. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_3float.c +113 -0
  371. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_4_1byte.c +26 -4
  372. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_4byte.c +17 -4
  373. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_5_1_byte.c +33 -5
  374. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_5byte.c +23 -5
  375. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_64byte.c +29 -5
  376. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_6_1_byte.c +32 -5
  377. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_6byte.c +28 -6
  378. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_7_1_byte.c +43 -5
  379. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_7byte.c +29 -5
  380. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_8byte.c +18 -4
  381. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_9byte1.c +18 -5
  382. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_9byte2.c +18 -6
  383. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_align_double.c +23 -5
  384. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_align_float.c +23 -5
  385. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_align_longdouble.c +24 -5
  386. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_align_longdouble_split.c +44 -31
  387. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_align_longdouble_split2.c +44 -9
  388. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_align_pointer.c +23 -5
  389. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_align_sint16.c +22 -5
  390. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_align_sint32.c +22 -7
  391. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_align_sint64.c +22 -5
  392. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_align_uint16.c +22 -5
  393. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_align_uint32.c +23 -5
  394. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_align_uint64.c +23 -5
  395. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_dbls_struct.c +7 -5
  396. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_double_va.c +19 -10
  397. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_float.c +4 -0
  398. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_longdouble.c +14 -4
  399. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_longdouble_va.c +32 -12
  400. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_many_mixed_args.c +70 -0
  401. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_many_mixed_float_double.c +55 -0
  402. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_multi_schar.c +5 -1
  403. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_multi_sshort.c +6 -1
  404. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_multi_sshortchar.c +9 -1
  405. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_multi_uchar.c +9 -1
  406. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_multi_ushort.c +6 -2
  407. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_multi_ushortchar.c +9 -1
  408. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_pointer.c +6 -1
  409. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_pointer_stack.c +21 -9
  410. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_schar.c +3 -0
  411. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_sint.c +2 -0
  412. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_sshort.c +3 -0
  413. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_struct_va1.c +125 -0
  414. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_uchar.c +3 -0
  415. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_uint.c +4 -0
  416. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_uint_va.c +49 -0
  417. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_ulong_va.c +49 -0
  418. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_ulonglong.c +7 -5
  419. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_ushort.c +3 -0
  420. data/ext/ffi_c/libffi/testsuite/libffi.closures/ffitest.h +1 -0
  421. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/huge_struct.c +41 -40
  422. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/nested_struct.c +38 -15
  423. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/nested_struct1.c +9 -9
  424. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/nested_struct10.c +19 -6
  425. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct11.c +137 -0
  426. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct12.c +86 -0
  427. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct13.c +115 -0
  428. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/nested_struct2.c +15 -6
  429. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/nested_struct3.c +15 -6
  430. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/nested_struct4.c +14 -5
  431. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/nested_struct5.c +14 -5
  432. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/nested_struct6.c +17 -6
  433. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/nested_struct7.c +14 -5
  434. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/nested_struct8.c +17 -6
  435. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/nested_struct9.c +17 -6
  436. data/ext/ffi_c/libffi/testsuite/libffi.closures/single_entry_structs1.c +86 -0
  437. data/ext/ffi_c/libffi/testsuite/libffi.closures/single_entry_structs2.c +102 -0
  438. data/ext/ffi_c/libffi/testsuite/libffi.closures/single_entry_structs3.c +101 -0
  439. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/stret_large.c +7 -7
  440. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/stret_large2.c +7 -7
  441. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/stret_medium.c +6 -6
  442. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/stret_medium2.c +6 -6
  443. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/testclosure.c +8 -3
  444. data/ext/ffi_c/libffi/testsuite/{libffi.special → libffi.closures}/unwindtest.cc +4 -10
  445. data/ext/ffi_c/libffi/testsuite/{libffi.special → libffi.closures}/unwindtest_ffi_call.cc +4 -2
  446. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex.inc +91 -0
  447. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex_double.c +10 -0
  448. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex_float.c +10 -0
  449. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex_longdouble.c +10 -0
  450. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex.inc +42 -0
  451. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_double.c +10 -0
  452. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_float.c +10 -0
  453. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_longdouble.c +10 -0
  454. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct.inc +71 -0
  455. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct_double.c +10 -0
  456. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct_float.c +10 -0
  457. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct_longdouble.c +10 -0
  458. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va.inc +80 -0
  459. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va_double.c +10 -0
  460. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va_float.c +16 -0
  461. data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va_longdouble.c +10 -0
  462. data/ext/ffi_c/libffi/testsuite/{libffi.special/special.exp → libffi.complex/complex.exp} +9 -8
  463. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex.inc +51 -0
  464. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_defs_double.inc +7 -0
  465. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_defs_float.inc +7 -0
  466. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_defs_longdouble.inc +7 -0
  467. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_double.c +10 -0
  468. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_float.c +10 -0
  469. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_int.c +86 -0
  470. data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_longdouble.c +10 -0
  471. data/ext/ffi_c/libffi/testsuite/libffi.complex/ffitest.h +1 -0
  472. data/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex.inc +78 -0
  473. data/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex_double.c +10 -0
  474. data/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex_float.c +10 -0
  475. data/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex_longdouble.c +10 -0
  476. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex.inc +37 -0
  477. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1.inc +41 -0
  478. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1_double.c +10 -0
  479. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1_float.c +10 -0
  480. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1_longdouble.c +10 -0
  481. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2.inc +44 -0
  482. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2_double.c +10 -0
  483. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2_float.c +10 -0
  484. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2_longdouble.c +10 -0
  485. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex_double.c +10 -0
  486. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex_float.c +10 -0
  487. data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex_longdouble.c +10 -0
  488. data/ext/ffi_c/libffi/testsuite/libffi.go/aa-direct.c +34 -0
  489. data/ext/ffi_c/libffi/testsuite/libffi.go/closure1.c +28 -0
  490. data/ext/ffi_c/libffi/testsuite/libffi.go/ffitest.h +1 -0
  491. data/ext/ffi_c/libffi/testsuite/libffi.go/go.exp +36 -0
  492. data/ext/ffi_c/libffi/testsuite/libffi.go/static-chain.h +19 -0
  493. data/ext/ffi_c/libffi.bsd.mk +13 -7
  494. data/ext/ffi_c/libffi.darwin.mk +25 -13
  495. data/ext/ffi_c/libffi.gnu.mk +4 -3
  496. data/ext/ffi_c/libffi.mk +11 -6
  497. data/ext/ffi_c/libffi.vc.mk +1 -1
  498. data/ext/ffi_c/libffi.vc64.mk +1 -1
  499. data/ext/ffi_c/rbffi.h +23 -15
  500. data/ext/ffi_c/rbffi_endian.h +11 -2
  501. data/ffi.gemspec +42 -0
  502. data/lib/ffi/abstract_memory.rb +44 -0
  503. data/lib/ffi/autopointer.rb +65 -68
  504. data/lib/ffi/compat.rb +43 -0
  505. data/lib/ffi/data_converter.rb +67 -0
  506. data/lib/ffi/dynamic_library.rb +118 -0
  507. data/lib/ffi/enum.rb +166 -25
  508. data/lib/ffi/errno.rb +21 -11
  509. data/lib/ffi/ffi.rb +28 -11
  510. data/lib/ffi/function.rb +71 -0
  511. data/lib/ffi/io.rb +25 -15
  512. data/lib/ffi/library.rb +227 -136
  513. data/lib/ffi/library_path.rb +109 -0
  514. data/lib/ffi/managedstruct.rb +64 -35
  515. data/lib/ffi/platform/aarch64-darwin/types.conf +130 -0
  516. data/lib/ffi/platform/aarch64-freebsd/types.conf +128 -0
  517. data/lib/ffi/platform/aarch64-freebsd12/types.conf +181 -0
  518. data/lib/ffi/platform/aarch64-linux/types.conf +175 -0
  519. data/lib/ffi/platform/aarch64-openbsd/types.conf +134 -0
  520. data/lib/ffi/platform/aarch64-windows/types.conf +52 -0
  521. data/lib/ffi/platform/arm-freebsd/types.conf +152 -0
  522. data/lib/ffi/platform/arm-freebsd12/types.conf +152 -0
  523. data/lib/ffi/platform/arm-linux/types.conf +110 -82
  524. data/lib/ffi/platform/hppa1.1-linux/types.conf +178 -0
  525. data/lib/ffi/platform/hppa2.0-linux/types.conf +178 -0
  526. data/lib/ffi/platform/i386-cygwin/types.conf +3 -0
  527. data/lib/ffi/platform/i386-darwin/types.conf +63 -63
  528. data/lib/ffi/platform/i386-freebsd/types.conf +89 -89
  529. data/lib/ffi/platform/i386-freebsd12/types.conf +152 -0
  530. data/lib/ffi/platform/i386-linux/types.conf +77 -77
  531. data/lib/ffi/platform/i386-netbsd/types.conf +87 -87
  532. data/lib/ffi/platform/i386-openbsd/types.conf +89 -87
  533. data/lib/ffi/platform/i386-solaris/types.conf +96 -96
  534. data/lib/ffi/platform/i386-windows/types.conf +43 -96
  535. data/lib/ffi/platform/ia64-linux/types.conf +79 -79
  536. data/lib/ffi/platform/loongarch64-linux/types.conf +141 -0
  537. data/lib/ffi/platform/mips-linux/types.conf +79 -79
  538. data/lib/ffi/platform/mips64-linux/types.conf +104 -0
  539. data/lib/ffi/platform/mips64el-linux/types.conf +104 -0
  540. data/lib/ffi/platform/mipsel-linux/types.conf +79 -79
  541. data/lib/ffi/platform/mipsisa32r6-linux/types.conf +102 -0
  542. data/lib/ffi/platform/mipsisa32r6el-linux/types.conf +102 -0
  543. data/lib/ffi/platform/mipsisa64r6-linux/types.conf +104 -0
  544. data/lib/ffi/platform/mipsisa64r6el-linux/types.conf +104 -0
  545. data/lib/ffi/platform/powerpc-aix/types.conf +155 -155
  546. data/lib/ffi/platform/powerpc-darwin/types.conf +63 -63
  547. data/lib/ffi/platform/powerpc-linux/types.conf +108 -78
  548. data/lib/ffi/platform/powerpc-openbsd/types.conf +156 -0
  549. data/lib/ffi/platform/powerpc64-linux/types.conf +104 -0
  550. data/lib/ffi/platform/powerpc64le-linux/types.conf +100 -0
  551. data/lib/ffi/platform/riscv64-linux/types.conf +104 -0
  552. data/lib/ffi/platform/s390-linux/types.conf +79 -79
  553. data/lib/ffi/platform/s390x-linux/types.conf +79 -79
  554. data/lib/ffi/platform/sparc-linux/types.conf +79 -79
  555. data/lib/ffi/platform/sparc-solaris/types.conf +103 -103
  556. data/lib/ffi/platform/sparcv9-linux/types.conf +102 -0
  557. data/lib/ffi/platform/sparcv9-openbsd/types.conf +156 -0
  558. data/lib/ffi/platform/sparcv9-solaris/types.conf +103 -103
  559. data/lib/ffi/platform/sw_64-linux/types.conf +141 -0
  560. data/lib/ffi/platform/x86_64-cygwin/types.conf +3 -0
  561. data/lib/ffi/platform/x86_64-darwin/types.conf +93 -63
  562. data/lib/ffi/platform/x86_64-dragonflybsd/types.conf +130 -0
  563. data/lib/ffi/platform/x86_64-freebsd/types.conf +90 -88
  564. data/lib/ffi/platform/x86_64-freebsd12/types.conf +158 -0
  565. data/lib/ffi/platform/x86_64-haiku/types.conf +117 -0
  566. data/lib/ffi/platform/x86_64-linux/types.conf +107 -77
  567. data/lib/ffi/platform/x86_64-msys/types.conf +119 -0
  568. data/lib/ffi/platform/x86_64-netbsd/types.conf +89 -87
  569. data/lib/ffi/platform/x86_64-openbsd/types.conf +100 -92
  570. data/lib/ffi/platform/x86_64-solaris/types.conf +96 -96
  571. data/lib/ffi/platform/x86_64-windows/types.conf +52 -0
  572. data/lib/ffi/platform.rb +91 -34
  573. data/lib/ffi/pointer.rb +78 -33
  574. data/lib/ffi/struct.rb +100 -66
  575. data/lib/ffi/struct_by_reference.rb +72 -0
  576. data/lib/ffi/struct_layout.rb +96 -0
  577. data/lib/ffi/struct_layout_builder.rb +84 -19
  578. data/lib/ffi/tools/const_generator.rb +11 -8
  579. data/lib/ffi/tools/generator.rb +48 -1
  580. data/lib/ffi/tools/generator_task.rb +13 -16
  581. data/lib/ffi/tools/struct_generator.rb +6 -5
  582. data/lib/ffi/tools/types_generator.rb +14 -10
  583. data/lib/ffi/types.rb +96 -51
  584. data/lib/ffi/union.rb +23 -12
  585. data/lib/ffi/variadic.rb +44 -29
  586. data/lib/ffi/version.rb +3 -0
  587. data/lib/ffi.rb +20 -8
  588. data/rakelib/ffi_gem_helper.rb +65 -0
  589. data/samples/getlogin.rb +8 -0
  590. data/samples/getpid.rb +8 -0
  591. data/samples/gettimeofday.rb +18 -0
  592. data/samples/hello.rb +8 -0
  593. data/samples/hello_ractor.rb +11 -0
  594. data/samples/inotify.rb +60 -0
  595. data/samples/pty.rb +75 -0
  596. data/samples/qsort.rb +20 -0
  597. data/samples/qsort_ractor.rb +28 -0
  598. data/sig/ffi/abstract_memory.rbs +165 -0
  599. data/sig/ffi/auto_pointer.rbs +27 -0
  600. data/sig/ffi/buffer.rbs +18 -0
  601. data/sig/ffi/data_converter.rbs +10 -0
  602. data/sig/ffi/dynamic_library.rbs +9 -0
  603. data/sig/ffi/enum.rbs +38 -0
  604. data/sig/ffi/function.rbs +39 -0
  605. data/sig/ffi/library.rbs +42 -0
  606. data/sig/ffi/native_type.rbs +86 -0
  607. data/sig/ffi/pointer.rbs +42 -0
  608. data/sig/ffi/struct.rbs +76 -0
  609. data/sig/ffi/struct_by_reference.rbs +11 -0
  610. data/sig/ffi/struct_by_value.rbs +7 -0
  611. data/sig/ffi/struct_layout.rbs +9 -0
  612. data/sig/ffi/struct_layout_builder.rbs +5 -0
  613. data/sig/ffi/type.rbs +39 -0
  614. data/sig/ffi.rbs +26 -0
  615. data.tar.gz.sig +0 -0
  616. metadata +508 -268
  617. metadata.gz.sig +1 -0
  618. data/History.txt +0 -1
  619. data/README.rdoc +0 -102
  620. data/ext/ffi_c/DataConverter.c +0 -91
  621. data/ext/ffi_c/Ffi_c.iml +0 -12
  622. data/ext/ffi_c/StructByReference.c +0 -158
  623. data/ext/ffi_c/StructByReference.h +0 -50
  624. data/ext/ffi_c/libffi/ChangeLog.libffi +0 -584
  625. data/ext/ffi_c/libffi/ChangeLog.libgcj +0 -40
  626. data/ext/ffi_c/libffi/ChangeLog.v1 +0 -764
  627. data/ext/ffi_c/libffi/Makefile.vc +0 -141
  628. data/ext/ffi_c/libffi/Makefile.vc64 +0 -141
  629. data/ext/ffi_c/libffi/README +0 -342
  630. data/ext/ffi_c/libffi/aclocal.m4 +0 -1873
  631. data/ext/ffi_c/libffi/build-ios.sh +0 -67
  632. data/ext/ffi_c/libffi/depcomp +0 -630
  633. data/ext/ffi_c/libffi/doc/libffi.info +0 -593
  634. data/ext/ffi_c/libffi/doc/stamp-vti +0 -4
  635. data/ext/ffi_c/libffi/include/ffi.h.vc +0 -427
  636. data/ext/ffi_c/libffi/m4/ax_check_compiler_flags.m4 +0 -76
  637. data/ext/ffi_c/libffi/m4/libtool.m4 +0 -7831
  638. data/ext/ffi_c/libffi/m4/ltoptions.m4 +0 -369
  639. data/ext/ffi_c/libffi/m4/ltsugar.m4 +0 -123
  640. data/ext/ffi_c/libffi/m4/ltversion.m4 +0 -23
  641. data/ext/ffi_c/libffi/m4/lt~obsolete.m4 +0 -98
  642. data/ext/ffi_c/libffi/mdate-sh +0 -201
  643. data/ext/ffi_c/libffi/src/arm/gentramp.sh +0 -118
  644. data/ext/ffi_c/libffi/src/arm/trampoline.S +0 -4450
  645. data/ext/ffi_c/libffi/src/x86/darwin.S +0 -444
  646. data/ext/ffi_c/libffi/src/x86/darwin64.S +0 -416
  647. data/ext/ffi_c/libffi/src/x86/freebsd.S +0 -458
  648. data/ext/ffi_c/libffi/src/x86/win32.S +0 -1065
  649. data/ext/ffi_c/libffi/testsuite/lib/libffi-dg.exp +0 -300
  650. data/ext/ffi_c/libffi/testsuite/libffi.call/many_win32.c +0 -63
  651. data/ext/ffi_c/libffi/testsuite/libffi.call/strlen_win32.c +0 -44
  652. data/ext/ffi_c/libffi/testsuite/libffi.special/ffitestcxx.h +0 -96
  653. data/ext/ffi_c/libffi/texinfo.tex +0 -7210
  654. data/ext/ffi_c/win32/stdint.h +0 -199
  655. data/gen/Rakefile +0 -30
  656. data/lib/Lib.iml +0 -13
  657. data/spec/ffi/Ffi.iml +0 -12
  658. data/spec/ffi/async_callback_spec.rb +0 -46
  659. data/spec/ffi/bool_spec.rb +0 -40
  660. data/spec/ffi/buffer_spec.rb +0 -215
  661. data/spec/ffi/callback_spec.rb +0 -668
  662. data/spec/ffi/custom_param_type.rb +0 -47
  663. data/spec/ffi/custom_type_spec.rb +0 -85
  664. data/spec/ffi/dup_spec.rb +0 -65
  665. data/spec/ffi/enum_spec.rb +0 -227
  666. data/spec/ffi/errno_spec.rb +0 -29
  667. data/spec/ffi/ffi_spec.rb +0 -40
  668. data/spec/ffi/function_spec.rb +0 -87
  669. data/spec/ffi/library_spec.rb +0 -208
  670. data/spec/ffi/long_double.rb +0 -41
  671. data/spec/ffi/managed_struct_spec.rb +0 -72
  672. data/spec/ffi/number_spec.rb +0 -247
  673. data/spec/ffi/pointer_spec.rb +0 -214
  674. data/spec/ffi/rbx/attach_function_spec.rb +0 -28
  675. data/spec/ffi/rbx/memory_pointer_spec.rb +0 -111
  676. data/spec/ffi/rbx/spec_helper.rb +0 -1
  677. data/spec/ffi/rbx/struct_spec.rb +0 -13
  678. data/spec/ffi/spec_helper.rb +0 -35
  679. data/spec/ffi/string_spec.rb +0 -119
  680. data/spec/ffi/strptr_spec.rb +0 -61
  681. data/spec/ffi/struct_callback_spec.rb +0 -80
  682. data/spec/ffi/struct_initialize_spec.rb +0 -46
  683. data/spec/ffi/struct_packed_spec.rb +0 -62
  684. data/spec/ffi/struct_spec.rb +0 -719
  685. data/spec/ffi/typedef_spec.rb +0 -89
  686. data/spec/ffi/union_spec.rb +0 -76
  687. data/spec/ffi/variadic_spec.rb +0 -103
  688. data/spec/spec.opts +0 -4
  689. data/tasks/ann.rake +0 -80
  690. data/tasks/extension.rake +0 -32
  691. data/tasks/gem.rake +0 -199
  692. data/tasks/git.rake +0 -41
  693. data/tasks/notes.rake +0 -27
  694. data/tasks/post_load.rake +0 -34
  695. data/tasks/rdoc.rake +0 -50
  696. data/tasks/rubyforge.rake +0 -55
  697. data/tasks/setup.rb +0 -301
  698. data/tasks/spec.rake +0 -54
  699. data/tasks/svn.rake +0 -47
  700. data/tasks/test.rake +0 -40
  701. data/tasks/yard.rake +0 -11
  702. data/ext/ffi_c/libffi/testsuite/libffi.call/{pyobjc-tc.c → pyobjc_tc.c} +0 -0
  703. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_double.c +0 -0
  704. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/err_bad_abi.c +0 -0
  705. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/problem1.c +0 -0
  706. data/lib/ffi/platform/{i486-gnu → i386-gnu}/types.conf +84 -84
@@ -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-20'
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-20'
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,160 +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
+ ;;
336
429
  i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
337
- echo i386-pc-auroraux${UNAME_RELEASE}
338
- exit ;;
430
+ GUESS=i386-pc-auroraux$UNAME_RELEASE
431
+ ;;
339
432
  i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
340
- eval $set_cc_for_build
341
- SUN_ARCH="i386"
433
+ set_cc_for_build
434
+ SUN_ARCH=i386
342
435
  # If there is a compiler, see if it is configured for 64-bit objects.
343
436
  # Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
344
437
  # This test works for both compilers.
345
- if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
438
+ if test "$CC_FOR_BUILD" != no_compiler_found; then
346
439
  if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
347
- (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
440
+ (CCOPTS="" $CC_FOR_BUILD -m64 -E - 2>/dev/null) | \
348
441
  grep IS_64BIT_ARCH >/dev/null
349
442
  then
350
- SUN_ARCH="x86_64"
443
+ SUN_ARCH=x86_64
351
444
  fi
352
445
  fi
353
- echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
354
- exit ;;
446
+ SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`
447
+ GUESS=$SUN_ARCH-pc-solaris2$SUN_REL
448
+ ;;
355
449
  sun4*:SunOS:6*:*)
356
450
  # According to config.sub, this is the proper way to canonicalize
357
451
  # SunOS6. Hard to guess exactly what SunOS6 will be like, but
358
452
  # it's likely to be more like Solaris than SunOS4.
359
- echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
360
- exit ;;
453
+ SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`
454
+ GUESS=sparc-sun-solaris3$SUN_REL
455
+ ;;
361
456
  sun4*:SunOS:*:*)
362
- case "`/usr/bin/arch -k`" in
457
+ case `/usr/bin/arch -k` in
363
458
  Series*|S4*)
364
459
  UNAME_RELEASE=`uname -v`
365
460
  ;;
366
461
  esac
367
462
  # Japanese Language versions have a version number like `4.1.3-JL'.
368
- echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
369
- exit ;;
463
+ SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/'`
464
+ GUESS=sparc-sun-sunos$SUN_REL
465
+ ;;
370
466
  sun3*:SunOS:*:*)
371
- echo m68k-sun-sunos${UNAME_RELEASE}
372
- exit ;;
467
+ GUESS=m68k-sun-sunos$UNAME_RELEASE
468
+ ;;
373
469
  sun*:*:4.2BSD:*)
374
470
  UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
375
- test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
376
- case "`/bin/arch`" in
471
+ test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3
472
+ case `/bin/arch` in
377
473
  sun3)
378
- echo m68k-sun-sunos${UNAME_RELEASE}
474
+ GUESS=m68k-sun-sunos$UNAME_RELEASE
379
475
  ;;
380
476
  sun4)
381
- echo sparc-sun-sunos${UNAME_RELEASE}
477
+ GUESS=sparc-sun-sunos$UNAME_RELEASE
382
478
  ;;
383
479
  esac
384
- exit ;;
480
+ ;;
385
481
  aushp:SunOS:*:*)
386
- echo sparc-auspex-sunos${UNAME_RELEASE}
387
- exit ;;
482
+ GUESS=sparc-auspex-sunos$UNAME_RELEASE
483
+ ;;
388
484
  # The situation for MiNT is a little confusing. The machine name
389
485
  # can be virtually everything (everything which is not
390
486
  # "atarist" or "atariste" at least should have a processor
@@ -394,44 +490,44 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
394
490
  # MiNT. But MiNT is downward compatible to TOS, so this should
395
491
  # be no problem.
396
492
  atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
397
- echo m68k-atari-mint${UNAME_RELEASE}
398
- exit ;;
493
+ GUESS=m68k-atari-mint$UNAME_RELEASE
494
+ ;;
399
495
  atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
400
- echo m68k-atari-mint${UNAME_RELEASE}
401
- exit ;;
496
+ GUESS=m68k-atari-mint$UNAME_RELEASE
497
+ ;;
402
498
  *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
403
- echo m68k-atari-mint${UNAME_RELEASE}
404
- exit ;;
499
+ GUESS=m68k-atari-mint$UNAME_RELEASE
500
+ ;;
405
501
  milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
406
- echo m68k-milan-mint${UNAME_RELEASE}
407
- exit ;;
502
+ GUESS=m68k-milan-mint$UNAME_RELEASE
503
+ ;;
408
504
  hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
409
- echo m68k-hades-mint${UNAME_RELEASE}
410
- exit ;;
505
+ GUESS=m68k-hades-mint$UNAME_RELEASE
506
+ ;;
411
507
  *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
412
- echo m68k-unknown-mint${UNAME_RELEASE}
413
- exit ;;
508
+ GUESS=m68k-unknown-mint$UNAME_RELEASE
509
+ ;;
414
510
  m68k:machten:*:*)
415
- echo m68k-apple-machten${UNAME_RELEASE}
416
- exit ;;
511
+ GUESS=m68k-apple-machten$UNAME_RELEASE
512
+ ;;
417
513
  powerpc:machten:*:*)
418
- echo powerpc-apple-machten${UNAME_RELEASE}
419
- exit ;;
514
+ GUESS=powerpc-apple-machten$UNAME_RELEASE
515
+ ;;
420
516
  RISC*:Mach:*:*)
421
- echo mips-dec-mach_bsd4.3
422
- exit ;;
517
+ GUESS=mips-dec-mach_bsd4.3
518
+ ;;
423
519
  RISC*:ULTRIX:*:*)
424
- echo mips-dec-ultrix${UNAME_RELEASE}
425
- exit ;;
520
+ GUESS=mips-dec-ultrix$UNAME_RELEASE
521
+ ;;
426
522
  VAX*:ULTRIX*:*:*)
427
- echo vax-dec-ultrix${UNAME_RELEASE}
428
- exit ;;
523
+ GUESS=vax-dec-ultrix$UNAME_RELEASE
524
+ ;;
429
525
  2020:CLIX:*:* | 2430:CLIX:*:*)
430
- echo clipper-intergraph-clix${UNAME_RELEASE}
431
- exit ;;
526
+ GUESS=clipper-intergraph-clix$UNAME_RELEASE
527
+ ;;
432
528
  mips:*:*:UMIPS | mips:*:*:RISCos)
433
- eval $set_cc_for_build
434
- sed 's/^ //' << EOF >$dummy.c
529
+ set_cc_for_build
530
+ sed 's/^ //' << EOF > "$dummy.c"
435
531
  #ifdef __cplusplus
436
532
  #include <stdio.h> /* for printf() prototype */
437
533
  int main (int argc, char *argv[]) {
@@ -440,95 +536,96 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
440
536
  #endif
441
537
  #if defined (host_mips) && defined (MIPSEB)
442
538
  #if defined (SYSTYPE_SYSV)
443
- printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
539
+ printf ("mips-mips-riscos%ssysv\\n", argv[1]); exit (0);
444
540
  #endif
445
541
  #if defined (SYSTYPE_SVR4)
446
- printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
542
+ printf ("mips-mips-riscos%ssvr4\\n", argv[1]); exit (0);
447
543
  #endif
448
544
  #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
449
- printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
545
+ printf ("mips-mips-riscos%sbsd\\n", argv[1]); exit (0);
450
546
  #endif
451
547
  #endif
452
548
  exit (-1);
453
549
  }
454
550
  EOF
455
- $CC_FOR_BUILD -o $dummy $dummy.c &&
456
- dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&
457
- 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"` &&
458
554
  { echo "$SYSTEM_NAME"; exit; }
459
- echo mips-mips-riscos${UNAME_RELEASE}
460
- exit ;;
555
+ GUESS=mips-mips-riscos$UNAME_RELEASE
556
+ ;;
461
557
  Motorola:PowerMAX_OS:*:*)
462
- echo powerpc-motorola-powermax
463
- exit ;;
558
+ GUESS=powerpc-motorola-powermax
559
+ ;;
464
560
  Motorola:*:4.3:PL8-*)
465
- echo powerpc-harris-powermax
466
- exit ;;
561
+ GUESS=powerpc-harris-powermax
562
+ ;;
467
563
  Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
468
- echo powerpc-harris-powermax
469
- exit ;;
564
+ GUESS=powerpc-harris-powermax
565
+ ;;
470
566
  Night_Hawk:Power_UNIX:*:*)
471
- echo powerpc-harris-powerunix
472
- exit ;;
567
+ GUESS=powerpc-harris-powerunix
568
+ ;;
473
569
  m88k:CX/UX:7*:*)
474
- echo m88k-harris-cxux7
475
- exit ;;
570
+ GUESS=m88k-harris-cxux7
571
+ ;;
476
572
  m88k:*:4*:R4*)
477
- echo m88k-motorola-sysv4
478
- exit ;;
573
+ GUESS=m88k-motorola-sysv4
574
+ ;;
479
575
  m88k:*:3*:R3*)
480
- echo m88k-motorola-sysv3
481
- exit ;;
576
+ GUESS=m88k-motorola-sysv3
577
+ ;;
482
578
  AViiON:dgux:*:*)
483
- # DG/UX returns AViiON for all architectures
484
- UNAME_PROCESSOR=`/usr/bin/uname -p`
485
- 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
486
582
  then
487
- if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
488
- [ ${TARGET_BINARY_INTERFACE}x = x ]
583
+ if test "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx || \
584
+ test "$TARGET_BINARY_INTERFACE"x = x
489
585
  then
490
- echo m88k-dg-dgux${UNAME_RELEASE}
586
+ GUESS=m88k-dg-dgux$UNAME_RELEASE
491
587
  else
492
- echo m88k-dg-dguxbcs${UNAME_RELEASE}
588
+ GUESS=m88k-dg-dguxbcs$UNAME_RELEASE
493
589
  fi
494
590
  else
495
- echo i586-dg-dgux${UNAME_RELEASE}
591
+ GUESS=i586-dg-dgux$UNAME_RELEASE
496
592
  fi
497
- exit ;;
593
+ ;;
498
594
  M88*:DolphinOS:*:*) # DolphinOS (SVR3)
499
- echo m88k-dolphin-sysv3
500
- exit ;;
595
+ GUESS=m88k-dolphin-sysv3
596
+ ;;
501
597
  M88*:*:R3*:*)
502
598
  # Delta 88k system running SVR3
503
- echo m88k-motorola-sysv3
504
- exit ;;
599
+ GUESS=m88k-motorola-sysv3
600
+ ;;
505
601
  XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
506
- echo m88k-tektronix-sysv3
507
- exit ;;
602
+ GUESS=m88k-tektronix-sysv3
603
+ ;;
508
604
  Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
509
- echo m68k-tektronix-bsd
510
- exit ;;
605
+ GUESS=m68k-tektronix-bsd
606
+ ;;
511
607
  *:IRIX*:*:*)
512
- echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
513
- exit ;;
608
+ IRIX_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/g'`
609
+ GUESS=mips-sgi-irix$IRIX_REL
610
+ ;;
514
611
  ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
515
- echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id
516
- 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 '
517
614
  i*86:AIX:*:*)
518
- echo i386-ibm-aix
519
- exit ;;
615
+ GUESS=i386-ibm-aix
616
+ ;;
520
617
  ia64:AIX:*:*)
521
- if [ -x /usr/bin/oslevel ] ; then
618
+ if test -x /usr/bin/oslevel ; then
522
619
  IBM_REV=`/usr/bin/oslevel`
523
620
  else
524
- IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
621
+ IBM_REV=$UNAME_VERSION.$UNAME_RELEASE
525
622
  fi
526
- echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
527
- exit ;;
623
+ GUESS=$UNAME_MACHINE-ibm-aix$IBM_REV
624
+ ;;
528
625
  *:AIX:2:3)
529
626
  if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
530
- eval $set_cc_for_build
531
- sed 's/^ //' << EOF >$dummy.c
627
+ set_cc_for_build
628
+ sed 's/^ //' << EOF > "$dummy.c"
532
629
  #include <sys/systemcfg.h>
533
630
 
534
631
  main()
@@ -539,115 +636,116 @@ EOF
539
636
  exit(0);
540
637
  }
541
638
  EOF
542
- if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`
639
+ if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"`
543
640
  then
544
- echo "$SYSTEM_NAME"
641
+ GUESS=$SYSTEM_NAME
545
642
  else
546
- echo rs6000-ibm-aix3.2.5
643
+ GUESS=rs6000-ibm-aix3.2.5
547
644
  fi
548
645
  elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
549
- echo rs6000-ibm-aix3.2.4
646
+ GUESS=rs6000-ibm-aix3.2.4
550
647
  else
551
- echo rs6000-ibm-aix3.2
648
+ GUESS=rs6000-ibm-aix3.2
552
649
  fi
553
- exit ;;
554
- *:AIX:*:[456])
650
+ ;;
651
+ *:AIX:*:[4567])
555
652
  IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
556
- 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
557
654
  IBM_ARCH=rs6000
558
655
  else
559
656
  IBM_ARCH=powerpc
560
657
  fi
561
- if [ -x /usr/bin/oslevel ] ; then
562
- 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/`
563
661
  else
564
- IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
662
+ IBM_REV=$UNAME_VERSION.$UNAME_RELEASE
565
663
  fi
566
- echo ${IBM_ARCH}-ibm-aix${IBM_REV}
567
- exit ;;
664
+ GUESS=$IBM_ARCH-ibm-aix$IBM_REV
665
+ ;;
568
666
  *:AIX:*:*)
569
- echo rs6000-ibm-aix
570
- exit ;;
571
- ibmrt:4.4BSD:*|romp-ibm:BSD:*)
572
- echo romp-ibm-bsd4.4
573
- exit ;;
667
+ GUESS=rs6000-ibm-aix
668
+ ;;
669
+ ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*)
670
+ GUESS=romp-ibm-bsd4.4
671
+ ;;
574
672
  ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and
575
- echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to
576
- 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
577
675
  *:BOSX:*:*)
578
- echo rs6000-bull-bosx
579
- exit ;;
676
+ GUESS=rs6000-bull-bosx
677
+ ;;
580
678
  DPX/2?00:B.O.S.:*:*)
581
- echo m68k-bull-sysv3
582
- exit ;;
679
+ GUESS=m68k-bull-sysv3
680
+ ;;
583
681
  9000/[34]??:4.3bsd:1.*:*)
584
- echo m68k-hp-bsd
585
- exit ;;
682
+ GUESS=m68k-hp-bsd
683
+ ;;
586
684
  hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
587
- echo m68k-hp-bsd4.4
588
- exit ;;
685
+ GUESS=m68k-hp-bsd4.4
686
+ ;;
589
687
  9000/[34678]??:HP-UX:*:*)
590
- HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
591
- case "${UNAME_MACHINE}" in
592
- 9000/31? ) HP_ARCH=m68000 ;;
593
- 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 ;;
594
692
  9000/[678][0-9][0-9])
595
- if [ -x /usr/bin/getconf ]; then
693
+ if test -x /usr/bin/getconf; then
596
694
  sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
597
- sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
598
- case "${sc_cpu_version}" in
599
- 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
600
- 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
601
- 532) # CPU_PA_RISC2_0
602
- case "${sc_kernel_bits}" in
603
- 32) HP_ARCH="hppa2.0n" ;;
604
- 64) HP_ARCH="hppa2.0w" ;;
605
- '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20
606
- esac ;;
607
- 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
608
706
  fi
609
- if [ "${HP_ARCH}" = "" ]; then
610
- eval $set_cc_for_build
611
- sed 's/^ //' << EOF >$dummy.c
612
-
613
- #define _HPUX_SOURCE
614
- #include <stdlib.h>
615
- #include <unistd.h>
616
-
617
- int main ()
618
- {
619
- #if defined(_SC_KERNEL_BITS)
620
- long bits = sysconf(_SC_KERNEL_BITS);
621
- #endif
622
- long cpu = sysconf (_SC_CPU_VERSION);
623
-
624
- switch (cpu)
625
- {
626
- case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
627
- case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
628
- case CPU_PA_RISC2_0:
629
- #if defined(_SC_KERNEL_BITS)
630
- switch (bits)
631
- {
632
- case 64: puts ("hppa2.0w"); break;
633
- case 32: puts ("hppa2.0n"); break;
634
- default: puts ("hppa2.0"); break;
635
- } break;
636
- #else /* !defined(_SC_KERNEL_BITS) */
637
- puts ("hppa2.0"); break;
638
- #endif
639
- default: puts ("hppa1.0"); break;
640
- }
641
- exit (0);
642
- }
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
+ }
643
741
  EOF
644
- (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"`
645
743
  test -z "$HP_ARCH" && HP_ARCH=hppa
646
744
  fi ;;
647
745
  esac
648
- if [ ${HP_ARCH} = "hppa2.0w" ]
746
+ if test "$HP_ARCH" = hppa2.0w
649
747
  then
650
- eval $set_cc_for_build
748
+ set_cc_for_build
651
749
 
652
750
  # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
653
751
  # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler
@@ -658,23 +756,23 @@ EOF
658
756
  # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
659
757
  # => hppa64-hp-hpux11.23
660
758
 
661
- if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
759
+ if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) |
662
760
  grep -q __LP64__
663
761
  then
664
- HP_ARCH="hppa2.0w"
762
+ HP_ARCH=hppa2.0w
665
763
  else
666
- HP_ARCH="hppa64"
764
+ HP_ARCH=hppa64
667
765
  fi
668
766
  fi
669
- echo ${HP_ARCH}-hp-hpux${HPUX_REV}
670
- exit ;;
767
+ GUESS=$HP_ARCH-hp-hpux$HPUX_REV
768
+ ;;
671
769
  ia64:HP-UX:*:*)
672
- HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
673
- echo ia64-hp-hpux${HPUX_REV}
674
- exit ;;
770
+ HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'`
771
+ GUESS=ia64-hp-hpux$HPUX_REV
772
+ ;;
675
773
  3050*:HI-UX:*:*)
676
- eval $set_cc_for_build
677
- sed 's/^ //' << EOF >$dummy.c
774
+ set_cc_for_build
775
+ sed 's/^ //' << EOF > "$dummy.c"
678
776
  #include <unistd.h>
679
777
  int
680
778
  main ()
@@ -699,166 +797,187 @@ EOF
699
797
  exit (0);
700
798
  }
701
799
  EOF
702
- $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&
800
+ $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` &&
703
801
  { echo "$SYSTEM_NAME"; exit; }
704
- echo unknown-hitachi-hiuxwe2
705
- exit ;;
706
- 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
707
- echo hppa1.1-hp-bsd
708
- exit ;;
802
+ GUESS=unknown-hitachi-hiuxwe2
803
+ ;;
804
+ 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*)
805
+ GUESS=hppa1.1-hp-bsd
806
+ ;;
709
807
  9000/8??:4.3bsd:*:*)
710
- echo hppa1.0-hp-bsd
711
- exit ;;
808
+ GUESS=hppa1.0-hp-bsd
809
+ ;;
712
810
  *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
713
- echo hppa1.0-hp-mpeix
714
- exit ;;
715
- hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
716
- echo hppa1.1-hp-osf
717
- exit ;;
811
+ GUESS=hppa1.0-hp-mpeix
812
+ ;;
813
+ hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*)
814
+ GUESS=hppa1.1-hp-osf
815
+ ;;
718
816
  hp8??:OSF1:*:*)
719
- echo hppa1.0-hp-osf
720
- exit ;;
817
+ GUESS=hppa1.0-hp-osf
818
+ ;;
721
819
  i*86:OSF1:*:*)
722
- if [ -x /usr/sbin/sysversion ] ; then
723
- echo ${UNAME_MACHINE}-unknown-osf1mk
820
+ if test -x /usr/sbin/sysversion ; then
821
+ GUESS=$UNAME_MACHINE-unknown-osf1mk
724
822
  else
725
- echo ${UNAME_MACHINE}-unknown-osf1
823
+ GUESS=$UNAME_MACHINE-unknown-osf1
726
824
  fi
727
- exit ;;
825
+ ;;
728
826
  parisc*:Lites*:*:*)
729
- echo hppa1.1-hp-lites
730
- exit ;;
827
+ GUESS=hppa1.1-hp-lites
828
+ ;;
731
829
  C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
732
- echo c1-convex-bsd
733
- exit ;;
830
+ GUESS=c1-convex-bsd
831
+ ;;
734
832
  C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
735
833
  if getsysinfo -f scalar_acc
736
834
  then echo c32-convex-bsd
737
835
  else echo c2-convex-bsd
738
836
  fi
739
- exit ;;
837
+ exit ;;
740
838
  C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
741
- echo c34-convex-bsd
742
- exit ;;
839
+ GUESS=c34-convex-bsd
840
+ ;;
743
841
  C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
744
- echo c38-convex-bsd
745
- exit ;;
842
+ GUESS=c38-convex-bsd
843
+ ;;
746
844
  C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
747
- echo c4-convex-bsd
748
- exit ;;
845
+ GUESS=c4-convex-bsd
846
+ ;;
749
847
  CRAY*Y-MP:*:*:*)
750
- echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
751
- exit ;;
848
+ CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'`
849
+ GUESS=ymp-cray-unicos$CRAY_REL
850
+ ;;
752
851
  CRAY*[A-Z]90:*:*:*)
753
- echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
852
+ echo "$UNAME_MACHINE"-cray-unicos"$UNAME_RELEASE" \
754
853
  | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
755
854
  -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
756
855
  -e 's/\.[^.]*$/.X/'
757
856
  exit ;;
758
857
  CRAY*TS:*:*:*)
759
- echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
760
- exit ;;
858
+ CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'`
859
+ GUESS=t90-cray-unicos$CRAY_REL
860
+ ;;
761
861
  CRAY*T3E:*:*:*)
762
- echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
763
- exit ;;
862
+ CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'`
863
+ GUESS=alphaev5-cray-unicosmk$CRAY_REL
864
+ ;;
764
865
  CRAY*SV1:*:*:*)
765
- echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
766
- exit ;;
866
+ CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'`
867
+ GUESS=sv1-cray-unicos$CRAY_REL
868
+ ;;
767
869
  *:UNICOS/mp:*:*)
768
- echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
769
- exit ;;
870
+ CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'`
871
+ GUESS=craynv-cray-unicosmp$CRAY_REL
872
+ ;;
770
873
  F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
771
- FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
772
- FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
773
- FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
774
- echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
775
- 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
+ ;;
776
879
  5000:UNIX_System_V:4.*:*)
777
- FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
778
- FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
779
- echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
780
- 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
+ ;;
781
884
  i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
782
- echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
783
- exit ;;
885
+ GUESS=$UNAME_MACHINE-pc-bsdi$UNAME_RELEASE
886
+ ;;
784
887
  sparc*:BSD/OS:*:*)
785
- echo sparc-unknown-bsdi${UNAME_RELEASE}
786
- exit ;;
888
+ GUESS=sparc-unknown-bsdi$UNAME_RELEASE
889
+ ;;
787
890
  *:BSD/OS:*:*)
788
- echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
789
- 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
+ ;;
790
906
  *:FreeBSD:*:*)
791
- case ${UNAME_MACHINE} in
792
- pc98)
793
- echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
907
+ UNAME_PROCESSOR=`/usr/bin/uname -p`
908
+ case $UNAME_PROCESSOR in
794
909
  amd64)
795
- echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
796
- *)
797
- echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
910
+ UNAME_PROCESSOR=x86_64 ;;
911
+ i386)
912
+ UNAME_PROCESSOR=i586 ;;
798
913
  esac
799
- exit ;;
914
+ FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'`
915
+ GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL
916
+ ;;
800
917
  i*:CYGWIN*:*)
801
- echo ${UNAME_MACHINE}-pc-cygwin
802
- exit ;;
918
+ GUESS=$UNAME_MACHINE-pc-cygwin
919
+ ;;
920
+ *:MINGW64*:*)
921
+ GUESS=$UNAME_MACHINE-pc-mingw64
922
+ ;;
803
923
  *:MINGW*:*)
804
- echo ${UNAME_MACHINE}-pc-mingw32
805
- exit ;;
806
- i*:windows32*:*)
807
- # uname -m includes "-pc" on this system.
808
- echo ${UNAME_MACHINE}-mingw32
809
- exit ;;
924
+ GUESS=$UNAME_MACHINE-pc-mingw32
925
+ ;;
926
+ *:MSYS*:*)
927
+ GUESS=$UNAME_MACHINE-pc-msys
928
+ ;;
810
929
  i*:PW*:*)
811
- echo ${UNAME_MACHINE}-pc-pw32
812
- exit ;;
930
+ GUESS=$UNAME_MACHINE-pc-pw32
931
+ ;;
932
+ *:SerenityOS:*:*)
933
+ GUESS=$UNAME_MACHINE-pc-serenity
934
+ ;;
813
935
  *:Interix*:*)
814
- case ${UNAME_MACHINE} in
936
+ case $UNAME_MACHINE in
815
937
  x86)
816
- echo i586-pc-interix${UNAME_RELEASE}
817
- exit ;;
938
+ GUESS=i586-pc-interix$UNAME_RELEASE
939
+ ;;
818
940
  authenticamd | genuineintel | EM64T)
819
- echo x86_64-unknown-interix${UNAME_RELEASE}
820
- exit ;;
941
+ GUESS=x86_64-unknown-interix$UNAME_RELEASE
942
+ ;;
821
943
  IA64)
822
- echo ia64-unknown-interix${UNAME_RELEASE}
823
- exit ;;
944
+ GUESS=ia64-unknown-interix$UNAME_RELEASE
945
+ ;;
824
946
  esac ;;
825
- [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
826
- echo i${UNAME_MACHINE}-pc-mks
827
- exit ;;
828
- 8664:Windows_NT:*)
829
- echo x86_64-pc-mks
830
- exit ;;
831
- i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
832
- # How do we know it's Interix rather than the generic POSIX subsystem?
833
- # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
834
- # UNAME_MACHINE based on the output of uname instead of i386?
835
- echo i586-pc-interix
836
- exit ;;
837
947
  i*:UWIN*:*)
838
- echo ${UNAME_MACHINE}-pc-uwin
839
- exit ;;
948
+ GUESS=$UNAME_MACHINE-pc-uwin
949
+ ;;
840
950
  amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
841
- echo x86_64-unknown-cygwin
842
- exit ;;
843
- p*:CYGWIN*:*)
844
- echo powerpcle-unknown-cygwin
845
- exit ;;
951
+ GUESS=x86_64-pc-cygwin
952
+ ;;
846
953
  prep*:SunOS:5.*:*)
847
- echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
848
- exit ;;
954
+ SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`
955
+ GUESS=powerpcle-unknown-solaris2$SUN_REL
956
+ ;;
849
957
  *:GNU:*:*)
850
958
  # the GNU system
851
- echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
852
- 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
+ ;;
853
963
  *:GNU/*:*:*)
854
964
  # other systems with GNU libc and userland
855
- echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
856
- exit ;;
857
- i*86:Minix:*:*)
858
- echo ${UNAME_MACHINE}-pc-minix
859
- 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
+ ;;
860
979
  alpha:Linux:*:*)
861
- 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
862
981
  EV5) UNAME_MACHINE=alphaev5 ;;
863
982
  EV56) UNAME_MACHINE=alphaev56 ;;
864
983
  PCA56) UNAME_MACHINE=alphapca56 ;;
@@ -866,171 +985,241 @@ EOF
866
985
  EV6) UNAME_MACHINE=alphaev6 ;;
867
986
  EV67) UNAME_MACHINE=alphaev67 ;;
868
987
  EV68*) UNAME_MACHINE=alphaev68 ;;
869
- esac
988
+ esac
870
989
  objdump --private-headers /bin/sh | grep -q ld.so.1
871
- if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
872
- echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
873
- 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
+ ;;
874
996
  arm*:Linux:*:*)
875
- eval $set_cc_for_build
997
+ set_cc_for_build
876
998
  if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
877
999
  | grep -q __ARM_EABI__
878
1000
  then
879
- echo ${UNAME_MACHINE}-unknown-linux-gnu
1001
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
880
1002
  else
881
- 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
882
1010
  fi
883
- exit ;;
1011
+ ;;
884
1012
  avr32*:Linux:*:*)
885
- echo ${UNAME_MACHINE}-unknown-linux-gnu
886
- exit ;;
1013
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
1014
+ ;;
887
1015
  cris:Linux:*:*)
888
- echo cris-axis-linux-gnu
889
- exit ;;
1016
+ GUESS=$UNAME_MACHINE-axis-linux-$LIBC
1017
+ ;;
890
1018
  crisv32:Linux:*:*)
891
- echo crisv32-axis-linux-gnu
892
- exit ;;
1019
+ GUESS=$UNAME_MACHINE-axis-linux-$LIBC
1020
+ ;;
1021
+ e2k:Linux:*:*)
1022
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
1023
+ ;;
893
1024
  frv:Linux:*:*)
894
- echo frv-unknown-linux-gnu
895
- exit ;;
1025
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
1026
+ ;;
1027
+ hexagon:Linux:*:*)
1028
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
1029
+ ;;
896
1030
  i*86:Linux:*:*)
897
- LIBC=gnu
898
- eval $set_cc_for_build
899
- sed 's/^ //' << EOF >$dummy.c
900
- #ifdef __dietlibc__
901
- LIBC=dietlibc
902
- #endif
903
- EOF
904
- eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
905
- echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
906
- exit ;;
1031
+ GUESS=$UNAME_MACHINE-pc-linux-$LIBC
1032
+ ;;
907
1033
  ia64:Linux:*:*)
908
- echo ${UNAME_MACHINE}-unknown-linux-gnu
909
- 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
+ ;;
910
1042
  m32r*:Linux:*:*)
911
- echo ${UNAME_MACHINE}-unknown-linux-gnu
912
- exit ;;
1043
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
1044
+ ;;
913
1045
  m68*:Linux:*:*)
914
- echo ${UNAME_MACHINE}-unknown-linux-gnu
915
- exit ;;
1046
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
1047
+ ;;
916
1048
  mips:Linux:*:* | mips64:Linux:*:*)
917
- eval $set_cc_for_build
918
- 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"
919
1053
  #undef CPU
920
- #undef ${UNAME_MACHINE}
921
- #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
+
922
1082
  #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
923
- CPU=${UNAME_MACHINE}el
1083
+ MIPS_ENDIAN=el
924
1084
  #else
925
1085
  #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
926
- CPU=${UNAME_MACHINE}
1086
+ MIPS_ENDIAN=
927
1087
  #else
928
- CPU=
1088
+ MIPS_ENDIAN=
929
1089
  #endif
930
1090
  #endif
931
1091
  EOF
932
- eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
933
- 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
934
1104
  ;;
935
- or32:Linux:*:*)
936
- echo or32-unknown-linux-gnu
937
- exit ;;
938
1105
  padre:Linux:*:*)
939
- echo sparc-unknown-linux-gnu
940
- exit ;;
1106
+ GUESS=sparc-unknown-linux-$LIBC
1107
+ ;;
941
1108
  parisc64:Linux:*:* | hppa64:Linux:*:*)
942
- echo hppa64-unknown-linux-gnu
943
- exit ;;
1109
+ GUESS=hppa64-unknown-linux-$LIBC
1110
+ ;;
944
1111
  parisc:Linux:*:* | hppa:Linux:*:*)
945
1112
  # Look for CPU level
946
1113
  case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
947
- PA7*) echo hppa1.1-unknown-linux-gnu ;;
948
- PA8*) echo hppa2.0-unknown-linux-gnu ;;
949
- *) 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 ;;
950
1117
  esac
951
- exit ;;
1118
+ ;;
952
1119
  ppc64:Linux:*:*)
953
- echo powerpc64-unknown-linux-gnu
954
- exit ;;
1120
+ GUESS=powerpc64-unknown-linux-$LIBC
1121
+ ;;
955
1122
  ppc:Linux:*:*)
956
- echo powerpc-unknown-linux-gnu
957
- 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
+ ;;
958
1134
  s390:Linux:*:* | s390x:Linux:*:*)
959
- echo ${UNAME_MACHINE}-ibm-linux
960
- exit ;;
1135
+ GUESS=$UNAME_MACHINE-ibm-linux-$LIBC
1136
+ ;;
961
1137
  sh64*:Linux:*:*)
962
- echo ${UNAME_MACHINE}-unknown-linux-gnu
963
- exit ;;
1138
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
1139
+ ;;
964
1140
  sh*:Linux:*:*)
965
- echo ${UNAME_MACHINE}-unknown-linux-gnu
966
- exit ;;
1141
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
1142
+ ;;
967
1143
  sparc:Linux:*:* | sparc64:Linux:*:*)
968
- echo ${UNAME_MACHINE}-unknown-linux-gnu
969
- exit ;;
1144
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
1145
+ ;;
1146
+ tile*:Linux:*:*)
1147
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
1148
+ ;;
970
1149
  vax:Linux:*:*)
971
- echo ${UNAME_MACHINE}-dec-linux-gnu
972
- exit ;;
1150
+ GUESS=$UNAME_MACHINE-dec-linux-$LIBC
1151
+ ;;
973
1152
  x86_64:Linux:*:*)
974
- echo x86_64-unknown-linux-gnu
975
- 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
+ ;;
976
1165
  xtensa*:Linux:*:*)
977
- echo ${UNAME_MACHINE}-unknown-linux-gnu
978
- exit ;;
1166
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
1167
+ ;;
979
1168
  i*86:DYNIX/ptx:4*:*)
980
1169
  # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
981
1170
  # earlier versions are messed up and put the nodename in both
982
1171
  # sysname and nodename.
983
- echo i386-sequent-sysv4
984
- exit ;;
1172
+ GUESS=i386-sequent-sysv4
1173
+ ;;
985
1174
  i*86:UNIX_SV:4.2MP:2.*)
986
- # Unixware is an offshoot of SVR4, but it has its own version
987
- # number series starting with 2...
988
- # 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,
989
1178
  # I just have to hope. -- rms.
990
- # Use sysv4.2uw... so that sysv4* matches it.
991
- echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
992
- exit ;;
1179
+ # Use sysv4.2uw... so that sysv4* matches it.
1180
+ GUESS=$UNAME_MACHINE-pc-sysv4.2uw$UNAME_VERSION
1181
+ ;;
993
1182
  i*86:OS/2:*:*)
994
1183
  # If we were able to find `uname', then EMX Unix compatibility
995
1184
  # is probably installed.
996
- echo ${UNAME_MACHINE}-pc-os2-emx
997
- exit ;;
1185
+ GUESS=$UNAME_MACHINE-pc-os2-emx
1186
+ ;;
998
1187
  i*86:XTS-300:*:STOP)
999
- echo ${UNAME_MACHINE}-unknown-stop
1000
- exit ;;
1188
+ GUESS=$UNAME_MACHINE-unknown-stop
1189
+ ;;
1001
1190
  i*86:atheos:*:*)
1002
- echo ${UNAME_MACHINE}-unknown-atheos
1003
- exit ;;
1191
+ GUESS=$UNAME_MACHINE-unknown-atheos
1192
+ ;;
1004
1193
  i*86:syllable:*:*)
1005
- echo ${UNAME_MACHINE}-pc-syllable
1006
- exit ;;
1194
+ GUESS=$UNAME_MACHINE-pc-syllable
1195
+ ;;
1007
1196
  i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
1008
- echo i386-unknown-lynxos${UNAME_RELEASE}
1009
- exit ;;
1197
+ GUESS=i386-unknown-lynxos$UNAME_RELEASE
1198
+ ;;
1010
1199
  i*86:*DOS:*:*)
1011
- echo ${UNAME_MACHINE}-pc-msdosdjgpp
1012
- exit ;;
1013
- i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
1014
- 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$//'`
1015
1204
  if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
1016
- echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
1205
+ GUESS=$UNAME_MACHINE-univel-sysv$UNAME_REL
1017
1206
  else
1018
- echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
1207
+ GUESS=$UNAME_MACHINE-pc-sysv$UNAME_REL
1019
1208
  fi
1020
- exit ;;
1209
+ ;;
1021
1210
  i*86:*:5:[678]*)
1022
- # UnixWare 7.x, OpenUNIX and OpenServer 6.
1211
+ # UnixWare 7.x, OpenUNIX and OpenServer 6.
1023
1212
  case `/bin/uname -X | grep "^Machine"` in
1024
1213
  *486*) UNAME_MACHINE=i486 ;;
1025
1214
  *Pentium) UNAME_MACHINE=i586 ;;
1026
1215
  *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
1027
1216
  esac
1028
- echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
1029
- exit ;;
1217
+ GUESS=$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
1218
+ ;;
1030
1219
  i*86:*:3.2:*)
1031
1220
  if test -f /usr/options/cb.name; then
1032
1221
  UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
1033
- echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
1222
+ GUESS=$UNAME_MACHINE-pc-isc$UNAME_REL
1034
1223
  elif /bin/uname -X 2>/dev/null >/dev/null ; then
1035
1224
  UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
1036
1225
  (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
@@ -1040,43 +1229,43 @@ EOF
1040
1229
  && UNAME_MACHINE=i686
1041
1230
  (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
1042
1231
  && UNAME_MACHINE=i686
1043
- echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
1232
+ GUESS=$UNAME_MACHINE-pc-sco$UNAME_REL
1044
1233
  else
1045
- echo ${UNAME_MACHINE}-pc-sysv32
1234
+ GUESS=$UNAME_MACHINE-pc-sysv32
1046
1235
  fi
1047
- exit ;;
1236
+ ;;
1048
1237
  pc:*:*:*)
1049
1238
  # Left here for compatibility:
1050
- # uname -m prints for DJGPP always 'pc', but it prints nothing about
1051
- # 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.
1052
1241
  # Note: whatever this is, it MUST be the same as what config.sub
1053
- # 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
1054
1243
  # this is a cross-build.
1055
- echo i586-pc-msdosdjgpp
1056
- exit ;;
1244
+ GUESS=i586-pc-msdosdjgpp
1245
+ ;;
1057
1246
  Intel:Mach:3*:*)
1058
- echo i386-pc-mach3
1059
- exit ;;
1247
+ GUESS=i386-pc-mach3
1248
+ ;;
1060
1249
  paragon:*:*:*)
1061
- echo i860-intel-osf1
1062
- exit ;;
1250
+ GUESS=i860-intel-osf1
1251
+ ;;
1063
1252
  i860:*:4.*:*) # i860-SVR4
1064
1253
  if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
1065
- echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
1254
+ GUESS=i860-stardent-sysv$UNAME_RELEASE # Stardent Vistra i860-SVR4
1066
1255
  else # Add other i860-SVR4 vendors below as they are discovered.
1067
- echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4
1256
+ GUESS=i860-unknown-sysv$UNAME_RELEASE # Unknown i860-SVR4
1068
1257
  fi
1069
- exit ;;
1258
+ ;;
1070
1259
  mini*:CTIX:SYS*5:*)
1071
1260
  # "miniframe"
1072
- echo m68010-convergent-sysv
1073
- exit ;;
1261
+ GUESS=m68010-convergent-sysv
1262
+ ;;
1074
1263
  mc68k:UNIX:SYSTEM5:3.51m)
1075
- echo m68k-convergent-sysv
1076
- exit ;;
1264
+ GUESS=m68k-convergent-sysv
1265
+ ;;
1077
1266
  M680?0:D-NIX:5.3:*)
1078
- echo m68k-diab-dnix
1079
- exit ;;
1267
+ GUESS=m68k-diab-dnix
1268
+ ;;
1080
1269
  M68*:*:R3V[5678]*:*)
1081
1270
  test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
1082
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)
@@ -1084,231 +1273,295 @@ EOF
1084
1273
  test -r /etc/.relid \
1085
1274
  && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
1086
1275
  /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
1087
- && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
1276
+ && { echo i486-ncr-sysv4.3"$OS_REL"; exit; }
1088
1277
  /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
1089
- && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
1278
+ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;;
1090
1279
  3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
1091
- /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
1092
- && { echo i486-ncr-sysv4; exit; } ;;
1280
+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
1281
+ && { echo i486-ncr-sysv4; exit; } ;;
1093
1282
  NCR*:*:4.2:* | MPRAS*:*:4.2:*)
1094
1283
  OS_REL='.3'
1095
1284
  test -r /etc/.relid \
1096
1285
  && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
1097
1286
  /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
1098
- && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
1287
+ && { echo i486-ncr-sysv4.3"$OS_REL"; exit; }
1099
1288
  /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
1100
- && { echo i586-ncr-sysv4.3${OS_REL}; exit; }
1289
+ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; }
1101
1290
  /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
1102
- && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
1291
+ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;;
1103
1292
  m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
1104
- echo m68k-unknown-lynxos${UNAME_RELEASE}
1105
- exit ;;
1293
+ GUESS=m68k-unknown-lynxos$UNAME_RELEASE
1294
+ ;;
1106
1295
  mc68030:UNIX_System_V:4.*:*)
1107
- echo m68k-atari-sysv4
1108
- exit ;;
1296
+ GUESS=m68k-atari-sysv4
1297
+ ;;
1109
1298
  TSUNAMI:LynxOS:2.*:*)
1110
- echo sparc-unknown-lynxos${UNAME_RELEASE}
1111
- exit ;;
1299
+ GUESS=sparc-unknown-lynxos$UNAME_RELEASE
1300
+ ;;
1112
1301
  rs6000:LynxOS:2.*:*)
1113
- echo rs6000-unknown-lynxos${UNAME_RELEASE}
1114
- exit ;;
1302
+ GUESS=rs6000-unknown-lynxos$UNAME_RELEASE
1303
+ ;;
1115
1304
  PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
1116
- echo powerpc-unknown-lynxos${UNAME_RELEASE}
1117
- exit ;;
1305
+ GUESS=powerpc-unknown-lynxos$UNAME_RELEASE
1306
+ ;;
1118
1307
  SM[BE]S:UNIX_SV:*:*)
1119
- echo mips-dde-sysv${UNAME_RELEASE}
1120
- exit ;;
1308
+ GUESS=mips-dde-sysv$UNAME_RELEASE
1309
+ ;;
1121
1310
  RM*:ReliantUNIX-*:*:*)
1122
- echo mips-sni-sysv4
1123
- exit ;;
1311
+ GUESS=mips-sni-sysv4
1312
+ ;;
1124
1313
  RM*:SINIX-*:*:*)
1125
- echo mips-sni-sysv4
1126
- exit ;;
1314
+ GUESS=mips-sni-sysv4
1315
+ ;;
1127
1316
  *:SINIX-*:*:*)
1128
1317
  if uname -p 2>/dev/null >/dev/null ; then
1129
1318
  UNAME_MACHINE=`(uname -p) 2>/dev/null`
1130
- echo ${UNAME_MACHINE}-sni-sysv4
1319
+ GUESS=$UNAME_MACHINE-sni-sysv4
1131
1320
  else
1132
- echo ns32k-sni-sysv
1321
+ GUESS=ns32k-sni-sysv
1133
1322
  fi
1134
- exit ;;
1135
- PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
1136
- # says <Richard.M.Bartel@ccMail.Census.GOV>
1137
- echo i586-unisys-sysv4
1138
- 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
+ ;;
1139
1328
  *:UNIX_System_V:4*:FTX*)
1140
1329
  # From Gerald Hewes <hewes@openmarket.com>.
1141
1330
  # How about differentiating between stratus architectures? -djm
1142
- echo hppa1.1-stratus-sysv4
1143
- exit ;;
1331
+ GUESS=hppa1.1-stratus-sysv4
1332
+ ;;
1144
1333
  *:*:*:FTX*)
1145
1334
  # From seanf@swdc.stratus.com.
1146
- echo i860-stratus-sysv4
1147
- exit ;;
1335
+ GUESS=i860-stratus-sysv4
1336
+ ;;
1148
1337
  i*86:VOS:*:*)
1149
1338
  # From Paul.Green@stratus.com.
1150
- echo ${UNAME_MACHINE}-stratus-vos
1151
- exit ;;
1339
+ GUESS=$UNAME_MACHINE-stratus-vos
1340
+ ;;
1152
1341
  *:VOS:*:*)
1153
1342
  # From Paul.Green@stratus.com.
1154
- echo hppa1.1-stratus-vos
1155
- exit ;;
1343
+ GUESS=hppa1.1-stratus-vos
1344
+ ;;
1156
1345
  mc68*:A/UX:*:*)
1157
- echo m68k-apple-aux${UNAME_RELEASE}
1158
- exit ;;
1346
+ GUESS=m68k-apple-aux$UNAME_RELEASE
1347
+ ;;
1159
1348
  news*:NEWS-OS:6*:*)
1160
- echo mips-sony-newsos6
1161
- exit ;;
1349
+ GUESS=mips-sony-newsos6
1350
+ ;;
1162
1351
  R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
1163
- if [ -d /usr/nec ]; then
1164
- echo mips-nec-sysv${UNAME_RELEASE}
1352
+ if test -d /usr/nec; then
1353
+ GUESS=mips-nec-sysv$UNAME_RELEASE
1165
1354
  else
1166
- echo mips-unknown-sysv${UNAME_RELEASE}
1355
+ GUESS=mips-unknown-sysv$UNAME_RELEASE
1167
1356
  fi
1168
- exit ;;
1357
+ ;;
1169
1358
  BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only.
1170
- echo powerpc-be-beos
1171
- exit ;;
1359
+ GUESS=powerpc-be-beos
1360
+ ;;
1172
1361
  BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only.
1173
- echo powerpc-apple-beos
1174
- exit ;;
1362
+ GUESS=powerpc-apple-beos
1363
+ ;;
1175
1364
  BePC:BeOS:*:*) # BeOS running on Intel PC compatible.
1176
- echo i586-pc-beos
1177
- exit ;;
1365
+ GUESS=i586-pc-beos
1366
+ ;;
1178
1367
  BePC:Haiku:*:*) # Haiku running on Intel PC compatible.
1179
- echo i586-pc-haiku
1180
- exit ;;
1368
+ GUESS=i586-pc-haiku
1369
+ ;;
1370
+ x86_64:Haiku:*:*)
1371
+ GUESS=x86_64-unknown-haiku
1372
+ ;;
1181
1373
  SX-4:SUPER-UX:*:*)
1182
- echo sx4-nec-superux${UNAME_RELEASE}
1183
- exit ;;
1374
+ GUESS=sx4-nec-superux$UNAME_RELEASE
1375
+ ;;
1184
1376
  SX-5:SUPER-UX:*:*)
1185
- echo sx5-nec-superux${UNAME_RELEASE}
1186
- exit ;;
1377
+ GUESS=sx5-nec-superux$UNAME_RELEASE
1378
+ ;;
1187
1379
  SX-6:SUPER-UX:*:*)
1188
- echo sx6-nec-superux${UNAME_RELEASE}
1189
- exit ;;
1380
+ GUESS=sx6-nec-superux$UNAME_RELEASE
1381
+ ;;
1190
1382
  SX-7:SUPER-UX:*:*)
1191
- echo sx7-nec-superux${UNAME_RELEASE}
1192
- exit ;;
1383
+ GUESS=sx7-nec-superux$UNAME_RELEASE
1384
+ ;;
1193
1385
  SX-8:SUPER-UX:*:*)
1194
- echo sx8-nec-superux${UNAME_RELEASE}
1195
- exit ;;
1386
+ GUESS=sx8-nec-superux$UNAME_RELEASE
1387
+ ;;
1196
1388
  SX-8R:SUPER-UX:*:*)
1197
- echo sx8r-nec-superux${UNAME_RELEASE}
1198
- exit ;;
1389
+ GUESS=sx8r-nec-superux$UNAME_RELEASE
1390
+ ;;
1391
+ SX-ACE:SUPER-UX:*:*)
1392
+ GUESS=sxace-nec-superux$UNAME_RELEASE
1393
+ ;;
1199
1394
  Power*:Rhapsody:*:*)
1200
- echo powerpc-apple-rhapsody${UNAME_RELEASE}
1201
- exit ;;
1395
+ GUESS=powerpc-apple-rhapsody$UNAME_RELEASE
1396
+ ;;
1202
1397
  *:Rhapsody:*:*)
1203
- echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
1204
- exit ;;
1398
+ GUESS=$UNAME_MACHINE-apple-rhapsody$UNAME_RELEASE
1399
+ ;;
1400
+ arm64:Darwin:*:*)
1401
+ GUESS=aarch64-apple-darwin$UNAME_RELEASE
1402
+ ;;
1205
1403
  *:Darwin:*:*)
1206
- UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
1404
+ UNAME_PROCESSOR=`uname -p`
1207
1405
  case $UNAME_PROCESSOR in
1208
- i386)
1209
- eval $set_cc_for_build
1210
- if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
1211
- if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
1212
- (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
1213
- grep IS_64BIT_ARCH >/dev/null
1214
- then
1215
- UNAME_PROCESSOR="x86_64"
1216
- fi
1217
- fi ;;
1218
1406
  unknown) UNAME_PROCESSOR=powerpc ;;
1219
1407
  esac
1220
- echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
1221
- 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
+ ;;
1222
1440
  *:procnto*:*:* | *:QNX:[0123456789]*:*)
1223
1441
  UNAME_PROCESSOR=`uname -p`
1224
- if test "$UNAME_PROCESSOR" = "x86"; then
1442
+ if test "$UNAME_PROCESSOR" = x86; then
1225
1443
  UNAME_PROCESSOR=i386
1226
1444
  UNAME_MACHINE=pc
1227
1445
  fi
1228
- echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
1229
- exit ;;
1446
+ GUESS=$UNAME_PROCESSOR-$UNAME_MACHINE-nto-qnx$UNAME_RELEASE
1447
+ ;;
1230
1448
  *:QNX:*:4*)
1231
- echo i386-pc-qnx
1232
- exit ;;
1233
- NSE-?:NONSTOP_KERNEL:*:*)
1234
- echo nse-tandem-nsk${UNAME_RELEASE}
1235
- exit ;;
1236
- NSR-?:NONSTOP_KERNEL:*:*)
1237
- echo nsr-tandem-nsk${UNAME_RELEASE}
1238
- 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
+ ;;
1239
1466
  *:NonStop-UX:*:*)
1240
- echo mips-compaq-nonstopux
1241
- exit ;;
1467
+ GUESS=mips-compaq-nonstopux
1468
+ ;;
1242
1469
  BS2000:POSIX*:*:*)
1243
- echo bs2000-siemens-sysv
1244
- exit ;;
1470
+ GUESS=bs2000-siemens-sysv
1471
+ ;;
1245
1472
  DS/*:UNIX_System_V:*:*)
1246
- echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
1247
- exit ;;
1473
+ GUESS=$UNAME_MACHINE-$UNAME_SYSTEM-$UNAME_RELEASE
1474
+ ;;
1248
1475
  *:Plan9:*:*)
1249
1476
  # "uname -m" is not consistent, so use $cputype instead. 386
1250
1477
  # is converted to i386 for consistency with other x86
1251
1478
  # operating systems.
1252
- if test "$cputype" = "386"; then
1479
+ if test "${cputype-}" = 386; then
1253
1480
  UNAME_MACHINE=i386
1254
- else
1255
- UNAME_MACHINE="$cputype"
1481
+ elif test "x${cputype-}" != x; then
1482
+ UNAME_MACHINE=$cputype
1256
1483
  fi
1257
- echo ${UNAME_MACHINE}-unknown-plan9
1258
- exit ;;
1484
+ GUESS=$UNAME_MACHINE-unknown-plan9
1485
+ ;;
1259
1486
  *:TOPS-10:*:*)
1260
- echo pdp10-unknown-tops10
1261
- exit ;;
1487
+ GUESS=pdp10-unknown-tops10
1488
+ ;;
1262
1489
  *:TENEX:*:*)
1263
- echo pdp10-unknown-tenex
1264
- exit ;;
1490
+ GUESS=pdp10-unknown-tenex
1491
+ ;;
1265
1492
  KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
1266
- echo pdp10-dec-tops20
1267
- exit ;;
1493
+ GUESS=pdp10-dec-tops20
1494
+ ;;
1268
1495
  XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
1269
- echo pdp10-xkl-tops20
1270
- exit ;;
1496
+ GUESS=pdp10-xkl-tops20
1497
+ ;;
1271
1498
  *:TOPS-20:*:*)
1272
- echo pdp10-unknown-tops20
1273
- exit ;;
1499
+ GUESS=pdp10-unknown-tops20
1500
+ ;;
1274
1501
  *:ITS:*:*)
1275
- echo pdp10-unknown-its
1276
- exit ;;
1502
+ GUESS=pdp10-unknown-its
1503
+ ;;
1277
1504
  SEI:*:*:SEIUX)
1278
- echo mips-sei-seiux${UNAME_RELEASE}
1279
- exit ;;
1505
+ GUESS=mips-sei-seiux$UNAME_RELEASE
1506
+ ;;
1280
1507
  *:DragonFly:*:*)
1281
- echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
1282
- exit ;;
1508
+ DRAGONFLY_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'`
1509
+ GUESS=$UNAME_MACHINE-unknown-dragonfly$DRAGONFLY_REL
1510
+ ;;
1283
1511
  *:*VMS:*:*)
1284
- UNAME_MACHINE=`(uname -p) 2>/dev/null`
1285
- case "${UNAME_MACHINE}" in
1286
- A*) echo alpha-dec-vms ; exit ;;
1287
- I*) echo ia64-dec-vms ; exit ;;
1288
- 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 ;;
1289
1517
  esac ;;
1290
1518
  *:XENIX:*:SysV)
1291
- echo i386-pc-xenix
1292
- exit ;;
1519
+ GUESS=i386-pc-xenix
1520
+ ;;
1293
1521
  i*86:skyos:*:*)
1294
- echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
1295
- exit ;;
1522
+ SKYOS_REL=`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'`
1523
+ GUESS=$UNAME_MACHINE-pc-skyos$SKYOS_REL
1524
+ ;;
1296
1525
  i*86:rdos:*:*)
1297
- echo ${UNAME_MACHINE}-pc-rdos
1298
- exit ;;
1299
- i*86:AROS:*:*)
1300
- echo ${UNAME_MACHINE}-pc-aros
1301
- 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
+ ;;
1302
1543
  esac
1303
1544
 
1304
- #echo '(No uname command or uname output not recognized.)' 1>&2
1305
- #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
1306
1550
 
1307
- eval $set_cc_for_build
1308
- cat >$dummy.c <<EOF
1551
+ # No uname command or uname output not recognized.
1552
+ set_cc_for_build
1553
+ cat > "$dummy.c" <<EOF
1309
1554
  #ifdef _SEQUENT_
1310
- # include <sys/types.h>
1311
- # 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
1312
1565
  #endif
1313
1566
  main ()
1314
1567
  {
@@ -1321,20 +1574,12 @@ main ()
1321
1574
  #include <sys/param.h>
1322
1575
  printf ("m68k-sony-newsos%s\n",
1323
1576
  #ifdef NEWSOS4
1324
- "4"
1577
+ "4"
1325
1578
  #else
1326
- ""
1327
- #endif
1328
- ); exit (0);
1579
+ ""
1329
1580
  #endif
1581
+ ); exit (0);
1330
1582
  #endif
1331
-
1332
- #if defined (__arm) && defined (__acorn) && defined (__unix)
1333
- printf ("arm-acorn-riscix\n"); exit (0);
1334
- #endif
1335
-
1336
- #if defined (hp300) && !defined (hpux)
1337
- printf ("m68k-hp-bsd\n"); exit (0);
1338
1583
  #endif
1339
1584
 
1340
1585
  #if defined (NeXT)
@@ -1376,39 +1621,54 @@ main ()
1376
1621
  #endif
1377
1622
 
1378
1623
  #if defined (_SEQUENT_)
1379
- struct utsname un;
1380
-
1381
- uname(&un);
1382
-
1383
- if (strncmp(un.version, "V2", 2) == 0) {
1384
- printf ("i386-sequent-ptx2\n"); exit (0);
1385
- }
1386
- if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
1387
- printf ("i386-sequent-ptx1\n"); exit (0);
1388
- }
1389
- printf ("i386-sequent-ptx\n"); exit (0);
1624
+ struct utsname un;
1390
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);
1391
1634
  #endif
1392
1635
 
1393
1636
  #if defined (vax)
1394
- # if !defined (ultrix)
1395
- # include <sys/param.h>
1396
- # if defined (BSD)
1397
- # if BSD == 43
1398
- printf ("vax-dec-bsd4.3\n"); exit (0);
1399
- # else
1400
- # if BSD == 199006
1401
- printf ("vax-dec-bsd4.3reno\n"); exit (0);
1402
- # else
1403
- printf ("vax-dec-bsd\n"); exit (0);
1404
- # endif
1405
- # endif
1406
- # else
1407
- printf ("vax-dec-bsd\n"); exit (0);
1408
- # endif
1409
- # else
1410
- printf ("vax-dec-ultrix\n"); exit (0);
1411
- # 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
1412
1672
  #endif
1413
1673
 
1414
1674
  #if defined (alliant) && defined (i860)
@@ -1419,54 +1679,46 @@ main ()
1419
1679
  }
1420
1680
  EOF
1421
1681
 
1422
- $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"` &&
1423
1683
  { echo "$SYSTEM_NAME"; exit; }
1424
1684
 
1425
1685
  # Apollos put the system type in the environment.
1686
+ test -d /usr/apollo && { echo "$ISP-apollo-$SYSTYPE"; exit; }
1426
1687
 
1427
- test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }
1688
+ echo "$0: unable to guess system type" >&2
1428
1689
 
1429
- # 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
1430
1694
 
1431
- if [ -x /usr/convex/getsysinfo ]
1432
- then
1433
- case `getsysinfo -f cpu_type` in
1434
- c1*)
1435
- echo c1-convex-bsd
1436
- exit ;;
1437
- c2*)
1438
- if getsysinfo -f scalar_acc
1439
- then echo c32-convex-bsd
1440
- else echo c2-convex-bsd
1441
- fi
1442
- exit ;;
1443
- c34*)
1444
- echo c34-convex-bsd
1445
- exit ;;
1446
- c38*)
1447
- echo c38-convex-bsd
1448
- exit ;;
1449
- c4*)
1450
- echo c4-convex-bsd
1451
- exit ;;
1452
- esac
1453
- 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
1454
1700
 
1455
1701
  cat >&2 <<EOF
1456
- $0: unable to guess system type
1457
1702
 
1458
- This script, last modified $timestamp, has failed to recognize
1459
- the operating system you are using. It is advised that you
1460
- 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:
1461
1706
 
1462
- 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
1463
1708
  and
1464
- 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
1465
1711
 
1466
- If the version you run ($0) is already up to date, please
1467
- send the following data and any information you think might be
1468
- pertinent to <config-patches@gnu.org> in order to provide the needed
1469
- 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.
1470
1722
 
1471
1723
  config.guess timestamp = $timestamp
1472
1724
 
@@ -1485,16 +1737,17 @@ hostinfo = `(hostinfo) 2>/dev/null`
1485
1737
  /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null`
1486
1738
  /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
1487
1739
 
1488
- UNAME_MACHINE = ${UNAME_MACHINE}
1489
- UNAME_RELEASE = ${UNAME_RELEASE}
1490
- UNAME_SYSTEM = ${UNAME_SYSTEM}
1491
- UNAME_VERSION = ${UNAME_VERSION}
1740
+ UNAME_MACHINE = "$UNAME_MACHINE"
1741
+ UNAME_RELEASE = "$UNAME_RELEASE"
1742
+ UNAME_SYSTEM = "$UNAME_SYSTEM"
1743
+ UNAME_VERSION = "$UNAME_VERSION"
1492
1744
  EOF
1745
+ fi
1493
1746
 
1494
1747
  exit 1
1495
1748
 
1496
1749
  # Local variables:
1497
- # eval: (add-hook 'write-file-hooks 'time-stamp)
1750
+ # eval: (add-hook 'before-save-hook 'time-stamp)
1498
1751
  # time-stamp-start: "timestamp='"
1499
1752
  # time-stamp-format: "%:y-%02m-%02d"
1500
1753
  # time-stamp-end: "'"