ffi 1.9.25 → 1.15.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (339) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +212 -0
  3. data/Gemfile +3 -4
  4. data/README.md +38 -18
  5. data/Rakefile +55 -146
  6. data/ext/ffi_c/AbstractMemory.c +29 -34
  7. data/ext/ffi_c/Buffer.c +4 -9
  8. data/ext/ffi_c/Call.c +16 -49
  9. data/ext/ffi_c/Call.h +4 -7
  10. data/ext/ffi_c/ClosurePool.c +75 -25
  11. data/ext/ffi_c/ClosurePool.h +3 -1
  12. data/ext/ffi_c/DynamicLibrary.c +2 -7
  13. data/ext/ffi_c/Function.c +47 -131
  14. data/ext/ffi_c/Function.h +0 -4
  15. data/ext/ffi_c/FunctionInfo.c +3 -8
  16. data/ext/ffi_c/LastError.c +49 -8
  17. data/ext/ffi_c/LongDouble.c +12 -10
  18. data/ext/ffi_c/LongDouble.h +0 -4
  19. data/ext/ffi_c/MemoryPointer.c +3 -8
  20. data/ext/ffi_c/MemoryPointer.h +0 -4
  21. data/ext/ffi_c/MethodHandle.c +21 -31
  22. data/ext/ffi_c/MethodHandle.h +3 -2
  23. data/ext/ffi_c/Platform.c +3 -54
  24. data/ext/ffi_c/Pointer.c +25 -26
  25. data/ext/ffi_c/Pointer.h +0 -4
  26. data/ext/ffi_c/Struct.c +49 -56
  27. data/ext/ffi_c/Struct.h +12 -6
  28. data/ext/ffi_c/StructByValue.c +2 -7
  29. data/ext/ffi_c/StructLayout.c +22 -20
  30. data/ext/ffi_c/Thread.c +4 -228
  31. data/ext/ffi_c/Thread.h +1 -20
  32. data/ext/ffi_c/Type.c +1 -19
  33. data/ext/ffi_c/Type.h +0 -1
  34. data/ext/ffi_c/Types.c +7 -8
  35. data/ext/ffi_c/Types.h +3 -4
  36. data/ext/ffi_c/Variadic.c +23 -24
  37. data/ext/ffi_c/compat.h +4 -0
  38. data/ext/ffi_c/extconf.rb +53 -30
  39. data/ext/ffi_c/ffi.c +3 -8
  40. data/ext/ffi_c/libffi.darwin.mk +1 -1
  41. data/ext/ffi_c/libffi/.appveyor.yml +29 -13
  42. data/ext/ffi_c/libffi/.gitattributes +4 -0
  43. data/ext/ffi_c/libffi/.travis.yml +51 -2
  44. data/ext/ffi_c/libffi/.travis/bfin-sim.exp +58 -0
  45. data/ext/ffi_c/libffi/.travis/build-cross-in-container.sh +14 -0
  46. data/ext/ffi_c/libffi/.travis/build-in-container.sh +12 -0
  47. data/ext/ffi_c/libffi/.travis/build.sh +116 -8
  48. data/ext/ffi_c/libffi/.travis/install.sh +65 -16
  49. data/ext/ffi_c/libffi/.travis/m32r-sim.exp +58 -0
  50. data/ext/ffi_c/libffi/.travis/moxie-sim.exp +1 -1
  51. data/ext/ffi_c/libffi/.travis/or1k-sim.exp +58 -0
  52. data/ext/ffi_c/libffi/.travis/powerpc-eabisim.exp +58 -0
  53. data/ext/ffi_c/libffi/.travis/site.exp +10 -1
  54. data/ext/ffi_c/libffi/.travis/wine-sim.exp +55 -0
  55. data/ext/ffi_c/libffi/{ChangeLog.libffi-3.1 → ChangeLog.old} +1407 -0
  56. data/ext/ffi_c/libffi/LICENSE +1 -1
  57. data/ext/ffi_c/libffi/LICENSE-BUILDTOOLS +5 -4
  58. data/ext/ffi_c/libffi/Makefile.am +56 -72
  59. data/ext/ffi_c/libffi/README.md +33 -8
  60. data/ext/ffi_c/libffi/config.guess +552 -331
  61. data/ext/ffi_c/libffi/config.sub +1321 -1306
  62. data/ext/ffi_c/libffi/configure.ac +37 -12
  63. data/ext/ffi_c/libffi/configure.host +56 -27
  64. data/ext/ffi_c/libffi/doc/Makefile.am +3 -0
  65. data/ext/ffi_c/libffi/doc/libffi.texi +997 -0
  66. data/ext/ffi_c/libffi/doc/version.texi +4 -0
  67. data/ext/ffi_c/libffi/generate-darwin-source-and-headers.py +2 -4
  68. data/ext/ffi_c/libffi/include/ffi.h.in +19 -7
  69. data/ext/ffi_c/libffi/include/ffi_common.h +5 -1
  70. data/ext/ffi_c/libffi/libffi.map.in +8 -12
  71. data/ext/ffi_c/libffi/libffi.xcodeproj/project.pbxproj +2 -48
  72. data/ext/ffi_c/libffi/libtool-version +1 -1
  73. data/ext/ffi_c/libffi/m4/asmcfi.m4 +1 -1
  74. data/ext/ffi_c/libffi/m4/ax_append_flag.m4 +5 -26
  75. data/ext/ffi_c/libffi/m4/ax_check_compile_flag.m4 +5 -26
  76. data/ext/ffi_c/libffi/m4/ax_compiler_vendor.m4 +2 -1
  77. data/ext/ffi_c/libffi/m4/ax_configure_args.m4 +5 -26
  78. data/ext/ffi_c/libffi/m4/ax_gcc_archflag.m4 +7 -3
  79. data/ext/ffi_c/libffi/make_sunver.pl +333 -0
  80. data/ext/ffi_c/libffi/msvc_build/aarch64/Ffi_staticLib.sln +33 -0
  81. data/ext/ffi_c/libffi/msvc_build/aarch64/Ffi_staticLib.vcxproj +130 -0
  82. data/ext/ffi_c/libffi/msvc_build/aarch64/Ffi_staticLib.vcxproj.filters +57 -0
  83. data/ext/ffi_c/libffi/msvc_build/aarch64/Ffi_staticLib.vcxproj.user +4 -0
  84. data/ext/ffi_c/libffi/msvc_build/aarch64/aarch64_include/ffi.h +511 -0
  85. data/ext/ffi_c/libffi/msvcc.sh +38 -13
  86. data/ext/ffi_c/libffi/src/aarch64/ffi.c +153 -69
  87. data/ext/ffi_c/libffi/src/aarch64/ffitarget.h +19 -3
  88. data/ext/ffi_c/libffi/src/aarch64/internal.h +1 -0
  89. data/ext/ffi_c/libffi/src/aarch64/sysv.S +22 -9
  90. data/ext/ffi_c/libffi/src/aarch64/win64_armasm.S +506 -0
  91. data/ext/ffi_c/libffi/src/arm/ffi.c +62 -5
  92. data/ext/ffi_c/libffi/src/arm/ffitarget.h +8 -1
  93. data/ext/ffi_c/libffi/src/arm/sysv.S +6 -4
  94. data/ext/ffi_c/libffi/src/arm/sysv_msvc_arm32.S +311 -0
  95. data/ext/ffi_c/libffi/src/closures.c +69 -14
  96. data/ext/ffi_c/libffi/src/csky/ffi.c +395 -0
  97. data/ext/ffi_c/libffi/src/csky/ffitarget.h +63 -0
  98. data/ext/ffi_c/libffi/src/csky/sysv.S +371 -0
  99. data/ext/ffi_c/libffi/src/dlmalloc.c +1 -1
  100. data/ext/ffi_c/libffi/src/frv/ffi.c +1 -1
  101. data/ext/ffi_c/libffi/src/kvx/asm.h +5 -0
  102. data/ext/ffi_c/libffi/src/kvx/ffi.c +273 -0
  103. data/ext/ffi_c/libffi/src/kvx/ffitarget.h +75 -0
  104. data/ext/ffi_c/libffi/src/kvx/sysv.S +127 -0
  105. data/ext/ffi_c/libffi/src/metag/ffi.c +1 -1
  106. data/ext/ffi_c/libffi/src/mips/ffi.c +5 -1
  107. data/ext/ffi_c/libffi/src/mips/ffitarget.h +1 -1
  108. data/ext/ffi_c/libffi/src/mips/o32.S +2 -0
  109. data/ext/ffi_c/libffi/src/moxie/ffi.c +1 -1
  110. data/ext/ffi_c/libffi/src/pa/ffi.c +46 -91
  111. data/ext/ffi_c/libffi/src/pa/ffitarget.h +1 -6
  112. data/ext/ffi_c/libffi/src/pa/hpux32.S +4 -2
  113. data/ext/ffi_c/libffi/src/pa/linux.S +27 -4
  114. data/ext/ffi_c/libffi/src/powerpc/ffi.c +6 -4
  115. data/ext/ffi_c/libffi/src/powerpc/ffi_darwin.c +13 -1
  116. data/ext/ffi_c/libffi/src/powerpc/ffi_linux64.c +211 -32
  117. data/ext/ffi_c/libffi/src/powerpc/ffi_powerpc.h +18 -7
  118. data/ext/ffi_c/libffi/src/powerpc/ffitarget.h +10 -4
  119. data/ext/ffi_c/libffi/src/powerpc/linux64.S +91 -28
  120. data/ext/ffi_c/libffi/src/powerpc/linux64_closure.S +81 -5
  121. data/ext/ffi_c/libffi/src/powerpc/sysv.S +5 -7
  122. data/ext/ffi_c/libffi/src/prep_cif.c +4 -2
  123. data/ext/ffi_c/libffi/src/riscv/ffi.c +42 -6
  124. data/ext/ffi_c/libffi/src/riscv/ffitarget.h +1 -0
  125. data/ext/ffi_c/libffi/src/riscv/sysv.S +86 -7
  126. data/ext/ffi_c/libffi/src/x86/ffi.c +29 -12
  127. data/ext/ffi_c/libffi/src/x86/ffi64.c +22 -11
  128. data/ext/ffi_c/libffi/src/x86/ffitarget.h +15 -2
  129. data/ext/ffi_c/libffi/src/x86/ffiw64.c +20 -10
  130. data/ext/ffi_c/libffi/src/x86/sysv.S +105 -10
  131. data/ext/ffi_c/libffi/src/x86/sysv_intel.S +995 -0
  132. data/ext/ffi_c/libffi/src/x86/unix64.S +100 -4
  133. data/ext/ffi_c/libffi/src/x86/win64.S +12 -3
  134. data/ext/ffi_c/libffi/src/x86/win64_intel.S +3 -2
  135. data/ext/ffi_c/libffi/testsuite/Makefile.am +114 -109
  136. data/ext/ffi_c/libffi/testsuite/lib/libffi.exp +32 -8
  137. data/ext/ffi_c/libffi/testsuite/libffi.bhaible/bhaible.exp +7 -2
  138. data/ext/ffi_c/libffi/testsuite/libffi.bhaible/test-call.c +4 -4
  139. data/ext/ffi_c/libffi/testsuite/libffi.bhaible/test-callback.c +2 -2
  140. data/ext/ffi_c/libffi/testsuite/libffi.call/call.exp +12 -1
  141. data/ext/ffi_c/libffi/testsuite/libffi.call/float2.c +9 -8
  142. data/ext/ffi_c/libffi/testsuite/libffi.call/va_1.c +1 -1
  143. data/ext/ffi_c/libffi/testsuite/libffi.closures/closure.exp +67 -0
  144. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/closure_fn0.c +0 -0
  145. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/closure_fn1.c +0 -0
  146. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/closure_fn2.c +0 -0
  147. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/closure_fn3.c +0 -0
  148. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/closure_fn4.c +0 -0
  149. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/closure_fn5.c +0 -0
  150. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/closure_fn6.c +0 -0
  151. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/closure_loc_fn0.c +0 -0
  152. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/closure_simple.c +0 -0
  153. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_12byte.c +0 -0
  154. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_16byte.c +0 -0
  155. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_18byte.c +0 -0
  156. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_19byte.c +0 -0
  157. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_1_1byte.c +0 -0
  158. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_20byte.c +0 -0
  159. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_20byte1.c +0 -0
  160. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_24byte.c +0 -0
  161. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_2byte.c +0 -0
  162. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_3_1byte.c +0 -0
  163. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_3byte1.c +0 -0
  164. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_3byte2.c +0 -0
  165. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_3float.c +0 -0
  166. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_4_1byte.c +0 -0
  167. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_4byte.c +0 -0
  168. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_5_1_byte.c +0 -0
  169. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_5byte.c +0 -0
  170. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_64byte.c +0 -0
  171. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_6_1_byte.c +0 -0
  172. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_6byte.c +0 -0
  173. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_7_1_byte.c +0 -0
  174. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_7byte.c +0 -0
  175. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_8byte.c +0 -0
  176. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_9byte1.c +0 -0
  177. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_9byte2.c +0 -0
  178. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_align_double.c +0 -0
  179. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_align_float.c +0 -0
  180. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_align_longdouble.c +0 -0
  181. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_align_longdouble_split.c +0 -0
  182. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_align_longdouble_split2.c +0 -0
  183. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_align_pointer.c +0 -0
  184. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_align_sint16.c +0 -0
  185. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_align_sint32.c +0 -0
  186. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_align_sint64.c +0 -0
  187. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_align_uint16.c +0 -0
  188. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_align_uint32.c +0 -0
  189. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_align_uint64.c +0 -0
  190. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_dbls_struct.c +0 -0
  191. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_double.c +0 -0
  192. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_double_va.c +0 -0
  193. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_float.c +0 -0
  194. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_longdouble.c +0 -0
  195. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_longdouble_va.c +0 -0
  196. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_many_mixed_args.c +0 -0
  197. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_many_mixed_float_double.c +0 -0
  198. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_multi_schar.c +0 -0
  199. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_multi_sshort.c +0 -0
  200. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_multi_sshortchar.c +0 -0
  201. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_multi_uchar.c +0 -0
  202. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_multi_ushort.c +0 -0
  203. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_multi_ushortchar.c +0 -0
  204. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_pointer.c +0 -0
  205. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_pointer_stack.c +0 -0
  206. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_schar.c +0 -0
  207. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_sint.c +0 -0
  208. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_sshort.c +0 -0
  209. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_struct_va1.c +0 -0
  210. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_uchar.c +0 -0
  211. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_uchar_va.c +0 -0
  212. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_uint.c +0 -0
  213. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_uint_va.c +0 -0
  214. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_ulong_va.c +0 -0
  215. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_ulonglong.c +0 -0
  216. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_ushort.c +0 -0
  217. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/cls_ushort_va.c +0 -0
  218. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/err_bad_abi.c +0 -0
  219. data/ext/ffi_c/libffi/testsuite/libffi.closures/ffitest.h +138 -0
  220. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/huge_struct.c +3 -1
  221. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/nested_struct.c +0 -0
  222. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/nested_struct1.c +0 -0
  223. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/nested_struct10.c +0 -0
  224. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/nested_struct11.c +0 -0
  225. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/nested_struct2.c +0 -0
  226. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/nested_struct3.c +0 -0
  227. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/nested_struct4.c +0 -0
  228. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/nested_struct5.c +0 -0
  229. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/nested_struct6.c +0 -0
  230. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/nested_struct7.c +0 -0
  231. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/nested_struct8.c +0 -0
  232. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/nested_struct9.c +0 -0
  233. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/problem1.c +0 -0
  234. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/stret_large.c +0 -0
  235. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/stret_large2.c +0 -0
  236. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/stret_medium.c +0 -0
  237. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/stret_medium2.c +0 -0
  238. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/testclosure.c +0 -0
  239. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/unwindtest.cc +0 -0
  240. data/ext/ffi_c/libffi/testsuite/{libffi.call → libffi.closures}/unwindtest_ffi_call.cc +0 -0
  241. data/ext/ffi_c/rbffi.h +0 -2
  242. data/ffi.gemspec +13 -6
  243. data/lib/ffi.rb +10 -2
  244. data/lib/ffi/abstract_memory.rb +44 -0
  245. data/lib/ffi/autopointer.rb +1 -1
  246. data/lib/ffi/data_converter.rb +67 -0
  247. data/lib/ffi/ffi.rb +3 -0
  248. data/lib/ffi/io.rb +3 -3
  249. data/lib/ffi/library.rb +12 -8
  250. data/lib/ffi/managedstruct.rb +2 -2
  251. data/lib/ffi/platform.rb +34 -10
  252. data/lib/ffi/platform/aarch64-darwin/types.conf +130 -0
  253. data/lib/ffi/platform/aarch64-freebsd/types.conf +128 -0
  254. data/lib/ffi/platform/aarch64-freebsd12/types.conf +128 -0
  255. data/lib/ffi/platform/aarch64-linux/types.conf +81 -81
  256. data/lib/ffi/platform/aarch64-openbsd/types.conf +134 -0
  257. data/lib/ffi/platform/arm-freebsd/types.conf +152 -0
  258. data/lib/ffi/platform/arm-freebsd12/types.conf +152 -0
  259. data/lib/ffi/platform/arm-linux/types.conf +110 -82
  260. data/lib/ffi/platform/i386-cygwin/types.conf +1 -1
  261. data/lib/ffi/platform/i386-darwin/types.conf +63 -63
  262. data/lib/ffi/platform/i386-freebsd/types.conf +89 -89
  263. data/lib/ffi/platform/i386-freebsd12/types.conf +152 -0
  264. data/lib/ffi/platform/i386-gnu/types.conf +84 -84
  265. data/lib/ffi/platform/i386-linux/types.conf +77 -77
  266. data/lib/ffi/platform/i386-netbsd/types.conf +87 -87
  267. data/lib/ffi/platform/i386-openbsd/types.conf +89 -89
  268. data/lib/ffi/platform/i386-solaris/types.conf +96 -96
  269. data/lib/ffi/platform/i386-windows/types.conf +43 -96
  270. data/lib/ffi/platform/ia64-linux/types.conf +79 -79
  271. data/lib/ffi/platform/mips-linux/types.conf +79 -79
  272. data/lib/ffi/platform/mips64-linux/types.conf +81 -81
  273. data/lib/ffi/platform/mips64el-linux/types.conf +81 -81
  274. data/lib/ffi/platform/mipsel-linux/types.conf +79 -79
  275. data/lib/ffi/platform/mipsisa32r6-linux/types.conf +79 -79
  276. data/lib/ffi/platform/mipsisa32r6el-linux/types.conf +79 -79
  277. data/lib/ffi/platform/mipsisa64r6-linux/types.conf +81 -81
  278. data/lib/ffi/platform/mipsisa64r6el-linux/types.conf +81 -81
  279. data/lib/ffi/platform/powerpc-aix/types.conf +155 -155
  280. data/lib/ffi/platform/powerpc-darwin/types.conf +63 -63
  281. data/lib/ffi/platform/powerpc-linux/types.conf +108 -78
  282. data/lib/ffi/platform/powerpc-openbsd/types.conf +156 -0
  283. data/lib/ffi/platform/powerpc64-linux/types.conf +81 -81
  284. data/lib/ffi/platform/powerpc64le-linux/types.conf +100 -0
  285. data/lib/ffi/platform/riscv64-linux/types.conf +104 -0
  286. data/lib/ffi/platform/s390-linux/types.conf +79 -79
  287. data/lib/ffi/platform/s390x-linux/types.conf +79 -79
  288. data/lib/ffi/platform/sparc-linux/types.conf +79 -79
  289. data/lib/ffi/platform/sparc-solaris/types.conf +103 -103
  290. data/lib/ffi/platform/sparc64-linux/types.conf +79 -79
  291. data/lib/ffi/platform/sparcv9-openbsd/types.conf +156 -0
  292. data/lib/ffi/platform/sparcv9-solaris/types.conf +103 -103
  293. data/lib/ffi/platform/x86_64-cygwin/types.conf +1 -1
  294. data/lib/ffi/platform/x86_64-darwin/types.conf +88 -84
  295. data/lib/ffi/platform/x86_64-dragonflybsd/types.conf +130 -0
  296. data/lib/ffi/platform/x86_64-freebsd/types.conf +90 -90
  297. data/lib/ffi/platform/x86_64-freebsd12/types.conf +158 -0
  298. data/lib/ffi/platform/x86_64-haiku/types.conf +117 -0
  299. data/lib/ffi/platform/x86_64-linux/types.conf +107 -77
  300. data/lib/ffi/platform/x86_64-msys/types.conf +119 -0
  301. data/lib/ffi/platform/x86_64-netbsd/types.conf +89 -89
  302. data/lib/ffi/platform/x86_64-openbsd/types.conf +86 -86
  303. data/lib/ffi/platform/x86_64-solaris/types.conf +96 -96
  304. data/lib/ffi/platform/x86_64-windows/types.conf +42 -110
  305. data/lib/ffi/pointer.rb +26 -20
  306. data/lib/ffi/struct.rb +13 -68
  307. data/lib/ffi/struct_by_reference.rb +72 -0
  308. data/lib/ffi/struct_layout.rb +96 -0
  309. data/lib/ffi/tools/const_generator.rb +5 -4
  310. data/lib/ffi/tools/generator.rb +47 -2
  311. data/lib/ffi/tools/generator_task.rb +13 -17
  312. data/lib/ffi/tools/struct_generator.rb +4 -4
  313. data/lib/ffi/tools/types_generator.rb +7 -4
  314. data/lib/ffi/types.rb +1 -1
  315. data/lib/ffi/variadic.rb +1 -10
  316. data/lib/ffi/version.rb +1 -1
  317. data/rakelib/ffi_gem_helper.rb +65 -0
  318. data/samples/getlogin.rb +1 -1
  319. data/samples/getpid.rb +1 -1
  320. data/samples/gettimeofday.rb +8 -8
  321. data/samples/hello.rb +2 -1
  322. data/samples/inotify.rb +1 -1
  323. data/samples/pty.rb +1 -2
  324. data/samples/qsort.rb +0 -1
  325. metadata +160 -122
  326. data/.gitignore +0 -22
  327. data/.gitmodules +0 -3
  328. data/.travis.yml +0 -52
  329. data/.yardopts +0 -5
  330. data/appveyor.yml +0 -22
  331. data/ext/ffi_c/DataConverter.c +0 -91
  332. data/ext/ffi_c/StructByReference.c +0 -190
  333. data/ext/ffi_c/StructByReference.h +0 -50
  334. data/ext/ffi_c/libffi/ChangeLog.libffi +0 -584
  335. data/ext/ffi_c/libffi/ChangeLog.libgcj +0 -40
  336. data/ext/ffi_c/libffi/ChangeLog.v1 +0 -764
  337. data/ext/ffi_c/win32/stdbool.h +0 -8
  338. data/ext/ffi_c/win32/stdint.h +0 -201
  339. data/samples/sample_helper.rb +0 -6
@@ -1,8 +1,8 @@
1
1
  #! /bin/sh
2
2
  # Configuration validation subroutine script.
3
- # Copyright 1992-2017 Free Software Foundation, Inc.
3
+ # Copyright 1992-2020 Free Software Foundation, Inc.
4
4
 
5
- timestamp='2017-04-02'
5
+ timestamp='2020-08-05'
6
6
 
7
7
  # This file is free software; you can redistribute it and/or modify it
8
8
  # under the terms of the GNU General Public License as published by
@@ -15,7 +15,7 @@ timestamp='2017-04-02'
15
15
  # General Public License for more details.
16
16
  #
17
17
  # You should have received a copy of the GNU General Public License
18
- # along with this program; if not, see <http://www.gnu.org/licenses/>.
18
+ # along with this program; if not, see <https://www.gnu.org/licenses/>.
19
19
  #
20
20
  # As a special exception to the GNU General Public License, if you
21
21
  # distribute this file as part of a program that contains a
@@ -33,7 +33,7 @@ timestamp='2017-04-02'
33
33
  # Otherwise, we print the canonical config type on stdout and succeed.
34
34
 
35
35
  # You can get the latest version of this script from:
36
- # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
36
+ # https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
37
37
 
38
38
  # This file is supposed to be the same for all GNU packages
39
39
  # and recognize all the CPU types, system types and aliases
@@ -57,7 +57,7 @@ Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
57
57
 
58
58
  Canonicalize a configuration name.
59
59
 
60
- Operation modes:
60
+ Options:
61
61
  -h, --help print this help, then exit
62
62
  -t, --time-stamp print date of last modification, then exit
63
63
  -v, --version print version number, then exit
@@ -67,7 +67,7 @@ Report bugs and patches to <config-patches@gnu.org>."
67
67
  version="\
68
68
  GNU config.sub ($timestamp)
69
69
 
70
- Copyright 1992-2017 Free Software Foundation, Inc.
70
+ Copyright 1992-2020 Free Software Foundation, Inc.
71
71
 
72
72
  This is free software; see the source for copying conditions. There is NO
73
73
  warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -89,12 +89,12 @@ while test $# -gt 0 ; do
89
89
  - ) # Use stdin as input.
90
90
  break ;;
91
91
  -* )
92
- echo "$me: invalid option $1$help"
92
+ echo "$me: invalid option $1$help" >&2
93
93
  exit 1 ;;
94
94
 
95
95
  *local*)
96
96
  # First pass through any local machine types.
97
- echo $1
97
+ echo "$1"
98
98
  exit ;;
99
99
 
100
100
  * )
@@ -110,1252 +110,1167 @@ case $# in
110
110
  exit 1;;
111
111
  esac
112
112
 
113
- # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
114
- # Here we must recognize all the valid KERNEL-OS combinations.
115
- maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
116
- case $maybe_os in
117
- nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
118
- linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
119
- knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \
120
- kopensolaris*-gnu* | cloudabi*-eabi* | \
121
- storm-chaos* | os2-emx* | rtmk-nova*)
122
- os=-$maybe_os
123
- basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
124
- ;;
125
- android-linux)
126
- os=-linux-android
127
- basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown
128
- ;;
129
- *)
130
- basic_machine=`echo $1 | sed 's/-[^-]*$//'`
131
- if [ $basic_machine != $1 ]
132
- then os=`echo $1 | sed 's/.*-/-/'`
133
- else os=; fi
134
- ;;
135
- esac
113
+ # Split fields of configuration type
114
+ # shellcheck disable=SC2162
115
+ IFS="-" read field1 field2 field3 field4 <<EOF
116
+ $1
117
+ EOF
136
118
 
137
- ### Let's recognize common machines as not being operating systems so
138
- ### that things like config.sub decstation-3100 work. We also
139
- ### recognize some manufacturers as not being operating systems, so we
140
- ### can provide default operating systems below.
141
- case $os in
142
- -sun*os*)
143
- # Prevent following clause from handling this invalid input.
144
- ;;
145
- -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
146
- -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
147
- -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
148
- -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
149
- -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
150
- -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
151
- -apple | -axis | -knuth | -cray | -microblaze*)
152
- os=
153
- basic_machine=$1
154
- ;;
155
- -bluegene*)
156
- os=-cnk
157
- ;;
158
- -sim | -cisco | -oki | -wec | -winbond)
159
- os=
160
- basic_machine=$1
161
- ;;
162
- -scout)
163
- ;;
164
- -wrs)
165
- os=-vxworks
166
- basic_machine=$1
167
- ;;
168
- -chorusos*)
169
- os=-chorusos
170
- basic_machine=$1
171
- ;;
172
- -chorusrdb)
173
- os=-chorusrdb
174
- basic_machine=$1
175
- ;;
176
- -hiux*)
177
- os=-hiuxwe2
178
- ;;
179
- -sco6)
180
- os=-sco5v6
181
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
182
- ;;
183
- -sco5)
184
- os=-sco3.2v5
185
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
186
- ;;
187
- -sco4)
188
- os=-sco3.2v4
189
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
190
- ;;
191
- -sco3.2.[4-9]*)
192
- os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
193
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
194
- ;;
195
- -sco3.2v[4-9]*)
196
- # Don't forget version if it is 3.2v4 or newer.
197
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
198
- ;;
199
- -sco5v6*)
200
- # Don't forget version if it is 3.2v4 or newer.
201
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
202
- ;;
203
- -sco*)
204
- os=-sco3.2v2
205
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
206
- ;;
207
- -udk*)
208
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
209
- ;;
210
- -isc)
211
- os=-isc2.2
212
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
213
- ;;
214
- -clix*)
215
- basic_machine=clipper-intergraph
216
- ;;
217
- -isc*)
218
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
219
- ;;
220
- -lynx*178)
221
- os=-lynxos178
222
- ;;
223
- -lynx*5)
224
- os=-lynxos5
225
- ;;
226
- -lynx*)
227
- os=-lynxos
119
+ # Separate into logical components for further validation
120
+ case $1 in
121
+ *-*-*-*-*)
122
+ echo Invalid configuration \`"$1"\': more than four components >&2
123
+ exit 1
228
124
  ;;
229
- -ptx*)
230
- basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
125
+ *-*-*-*)
126
+ basic_machine=$field1-$field2
127
+ basic_os=$field3-$field4
231
128
  ;;
232
- -windowsnt*)
233
- os=`echo $os | sed -e 's/windowsnt/winnt/'`
129
+ *-*-*)
130
+ # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two
131
+ # parts
132
+ maybe_os=$field2-$field3
133
+ case $maybe_os in
134
+ nto-qnx* | linux-* | uclinux-uclibc* \
135
+ | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \
136
+ | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \
137
+ | storm-chaos* | os2-emx* | rtmk-nova*)
138
+ basic_machine=$field1
139
+ basic_os=$maybe_os
140
+ ;;
141
+ android-linux)
142
+ basic_machine=$field1-unknown
143
+ basic_os=linux-android
144
+ ;;
145
+ *)
146
+ basic_machine=$field1-$field2
147
+ basic_os=$field3
148
+ ;;
149
+ esac
234
150
  ;;
235
- -psos*)
236
- os=-psos
151
+ *-*)
152
+ # A lone config we happen to match not fitting any pattern
153
+ case $field1-$field2 in
154
+ decstation-3100)
155
+ basic_machine=mips-dec
156
+ basic_os=
157
+ ;;
158
+ *-*)
159
+ # Second component is usually, but not always the OS
160
+ case $field2 in
161
+ # Prevent following clause from handling this valid os
162
+ sun*os*)
163
+ basic_machine=$field1
164
+ basic_os=$field2
165
+ ;;
166
+ # Manufacturers
167
+ dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \
168
+ | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \
169
+ | unicom* | ibm* | next | hp | isi* | apollo | altos* \
170
+ | convergent* | ncr* | news | 32* | 3600* | 3100* \
171
+ | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \
172
+ | ultra | tti* | harris | dolphin | highlevel | gould \
173
+ | cbm | ns | masscomp | apple | axis | knuth | cray \
174
+ | microblaze* | sim | cisco \
175
+ | oki | wec | wrs | winbond)
176
+ basic_machine=$field1-$field2
177
+ basic_os=
178
+ ;;
179
+ *)
180
+ basic_machine=$field1
181
+ basic_os=$field2
182
+ ;;
183
+ esac
184
+ ;;
185
+ esac
237
186
  ;;
238
- -mint | -mint[0-9]*)
239
- basic_machine=m68k-atari
240
- os=-mint
187
+ *)
188
+ # Convert single-component short-hands not valid as part of
189
+ # multi-component configurations.
190
+ case $field1 in
191
+ 386bsd)
192
+ basic_machine=i386-pc
193
+ basic_os=bsd
194
+ ;;
195
+ a29khif)
196
+ basic_machine=a29k-amd
197
+ basic_os=udi
198
+ ;;
199
+ adobe68k)
200
+ basic_machine=m68010-adobe
201
+ basic_os=scout
202
+ ;;
203
+ alliant)
204
+ basic_machine=fx80-alliant
205
+ basic_os=
206
+ ;;
207
+ altos | altos3068)
208
+ basic_machine=m68k-altos
209
+ basic_os=
210
+ ;;
211
+ am29k)
212
+ basic_machine=a29k-none
213
+ basic_os=bsd
214
+ ;;
215
+ amdahl)
216
+ basic_machine=580-amdahl
217
+ basic_os=sysv
218
+ ;;
219
+ amiga)
220
+ basic_machine=m68k-unknown
221
+ basic_os=
222
+ ;;
223
+ amigaos | amigados)
224
+ basic_machine=m68k-unknown
225
+ basic_os=amigaos
226
+ ;;
227
+ amigaunix | amix)
228
+ basic_machine=m68k-unknown
229
+ basic_os=sysv4
230
+ ;;
231
+ apollo68)
232
+ basic_machine=m68k-apollo
233
+ basic_os=sysv
234
+ ;;
235
+ apollo68bsd)
236
+ basic_machine=m68k-apollo
237
+ basic_os=bsd
238
+ ;;
239
+ aros)
240
+ basic_machine=i386-pc
241
+ basic_os=aros
242
+ ;;
243
+ aux)
244
+ basic_machine=m68k-apple
245
+ basic_os=aux
246
+ ;;
247
+ balance)
248
+ basic_machine=ns32k-sequent
249
+ basic_os=dynix
250
+ ;;
251
+ blackfin)
252
+ basic_machine=bfin-unknown
253
+ basic_os=linux
254
+ ;;
255
+ cegcc)
256
+ basic_machine=arm-unknown
257
+ basic_os=cegcc
258
+ ;;
259
+ convex-c1)
260
+ basic_machine=c1-convex
261
+ basic_os=bsd
262
+ ;;
263
+ convex-c2)
264
+ basic_machine=c2-convex
265
+ basic_os=bsd
266
+ ;;
267
+ convex-c32)
268
+ basic_machine=c32-convex
269
+ basic_os=bsd
270
+ ;;
271
+ convex-c34)
272
+ basic_machine=c34-convex
273
+ basic_os=bsd
274
+ ;;
275
+ convex-c38)
276
+ basic_machine=c38-convex
277
+ basic_os=bsd
278
+ ;;
279
+ cray)
280
+ basic_machine=j90-cray
281
+ basic_os=unicos
282
+ ;;
283
+ crds | unos)
284
+ basic_machine=m68k-crds
285
+ basic_os=
286
+ ;;
287
+ da30)
288
+ basic_machine=m68k-da30
289
+ basic_os=
290
+ ;;
291
+ decstation | pmax | pmin | dec3100 | decstatn)
292
+ basic_machine=mips-dec
293
+ basic_os=
294
+ ;;
295
+ delta88)
296
+ basic_machine=m88k-motorola
297
+ basic_os=sysv3
298
+ ;;
299
+ dicos)
300
+ basic_machine=i686-pc
301
+ basic_os=dicos
302
+ ;;
303
+ djgpp)
304
+ basic_machine=i586-pc
305
+ basic_os=msdosdjgpp
306
+ ;;
307
+ ebmon29k)
308
+ basic_machine=a29k-amd
309
+ basic_os=ebmon
310
+ ;;
311
+ es1800 | OSE68k | ose68k | ose | OSE)
312
+ basic_machine=m68k-ericsson
313
+ basic_os=ose
314
+ ;;
315
+ gmicro)
316
+ basic_machine=tron-gmicro
317
+ basic_os=sysv
318
+ ;;
319
+ go32)
320
+ basic_machine=i386-pc
321
+ basic_os=go32
322
+ ;;
323
+ h8300hms)
324
+ basic_machine=h8300-hitachi
325
+ basic_os=hms
326
+ ;;
327
+ h8300xray)
328
+ basic_machine=h8300-hitachi
329
+ basic_os=xray
330
+ ;;
331
+ h8500hms)
332
+ basic_machine=h8500-hitachi
333
+ basic_os=hms
334
+ ;;
335
+ harris)
336
+ basic_machine=m88k-harris
337
+ basic_os=sysv3
338
+ ;;
339
+ hp300 | hp300hpux)
340
+ basic_machine=m68k-hp
341
+ basic_os=hpux
342
+ ;;
343
+ hp300bsd)
344
+ basic_machine=m68k-hp
345
+ basic_os=bsd
346
+ ;;
347
+ hppaosf)
348
+ basic_machine=hppa1.1-hp
349
+ basic_os=osf
350
+ ;;
351
+ hppro)
352
+ basic_machine=hppa1.1-hp
353
+ basic_os=proelf
354
+ ;;
355
+ i386mach)
356
+ basic_machine=i386-mach
357
+ basic_os=mach
358
+ ;;
359
+ isi68 | isi)
360
+ basic_machine=m68k-isi
361
+ basic_os=sysv
362
+ ;;
363
+ m68knommu)
364
+ basic_machine=m68k-unknown
365
+ basic_os=linux
366
+ ;;
367
+ magnum | m3230)
368
+ basic_machine=mips-mips
369
+ basic_os=sysv
370
+ ;;
371
+ merlin)
372
+ basic_machine=ns32k-utek
373
+ basic_os=sysv
374
+ ;;
375
+ mingw64)
376
+ basic_machine=x86_64-pc
377
+ basic_os=mingw64
378
+ ;;
379
+ mingw32)
380
+ basic_machine=i686-pc
381
+ basic_os=mingw32
382
+ ;;
383
+ mingw32ce)
384
+ basic_machine=arm-unknown
385
+ basic_os=mingw32ce
386
+ ;;
387
+ monitor)
388
+ basic_machine=m68k-rom68k
389
+ basic_os=coff
390
+ ;;
391
+ morphos)
392
+ basic_machine=powerpc-unknown
393
+ basic_os=morphos
394
+ ;;
395
+ moxiebox)
396
+ basic_machine=moxie-unknown
397
+ basic_os=moxiebox
398
+ ;;
399
+ msdos)
400
+ basic_machine=i386-pc
401
+ basic_os=msdos
402
+ ;;
403
+ msys)
404
+ basic_machine=i686-pc
405
+ basic_os=msys
406
+ ;;
407
+ mvs)
408
+ basic_machine=i370-ibm
409
+ basic_os=mvs
410
+ ;;
411
+ nacl)
412
+ basic_machine=le32-unknown
413
+ basic_os=nacl
414
+ ;;
415
+ ncr3000)
416
+ basic_machine=i486-ncr
417
+ basic_os=sysv4
418
+ ;;
419
+ netbsd386)
420
+ basic_machine=i386-pc
421
+ basic_os=netbsd
422
+ ;;
423
+ netwinder)
424
+ basic_machine=armv4l-rebel
425
+ basic_os=linux
426
+ ;;
427
+ news | news700 | news800 | news900)
428
+ basic_machine=m68k-sony
429
+ basic_os=newsos
430
+ ;;
431
+ news1000)
432
+ basic_machine=m68030-sony
433
+ basic_os=newsos
434
+ ;;
435
+ necv70)
436
+ basic_machine=v70-nec
437
+ basic_os=sysv
438
+ ;;
439
+ nh3000)
440
+ basic_machine=m68k-harris
441
+ basic_os=cxux
442
+ ;;
443
+ nh[45]000)
444
+ basic_machine=m88k-harris
445
+ basic_os=cxux
446
+ ;;
447
+ nindy960)
448
+ basic_machine=i960-intel
449
+ basic_os=nindy
450
+ ;;
451
+ mon960)
452
+ basic_machine=i960-intel
453
+ basic_os=mon960
454
+ ;;
455
+ nonstopux)
456
+ basic_machine=mips-compaq
457
+ basic_os=nonstopux
458
+ ;;
459
+ os400)
460
+ basic_machine=powerpc-ibm
461
+ basic_os=os400
462
+ ;;
463
+ OSE68000 | ose68000)
464
+ basic_machine=m68000-ericsson
465
+ basic_os=ose
466
+ ;;
467
+ os68k)
468
+ basic_machine=m68k-none
469
+ basic_os=os68k
470
+ ;;
471
+ paragon)
472
+ basic_machine=i860-intel
473
+ basic_os=osf
474
+ ;;
475
+ parisc)
476
+ basic_machine=hppa-unknown
477
+ basic_os=linux
478
+ ;;
479
+ psp)
480
+ basic_machine=mipsallegrexel-sony
481
+ basic_os=psp
482
+ ;;
483
+ pw32)
484
+ basic_machine=i586-unknown
485
+ basic_os=pw32
486
+ ;;
487
+ rdos | rdos64)
488
+ basic_machine=x86_64-pc
489
+ basic_os=rdos
490
+ ;;
491
+ rdos32)
492
+ basic_machine=i386-pc
493
+ basic_os=rdos
494
+ ;;
495
+ rom68k)
496
+ basic_machine=m68k-rom68k
497
+ basic_os=coff
498
+ ;;
499
+ sa29200)
500
+ basic_machine=a29k-amd
501
+ basic_os=udi
502
+ ;;
503
+ sei)
504
+ basic_machine=mips-sei
505
+ basic_os=seiux
506
+ ;;
507
+ sequent)
508
+ basic_machine=i386-sequent
509
+ basic_os=
510
+ ;;
511
+ sps7)
512
+ basic_machine=m68k-bull
513
+ basic_os=sysv2
514
+ ;;
515
+ st2000)
516
+ basic_machine=m68k-tandem
517
+ basic_os=
518
+ ;;
519
+ stratus)
520
+ basic_machine=i860-stratus
521
+ basic_os=sysv4
522
+ ;;
523
+ sun2)
524
+ basic_machine=m68000-sun
525
+ basic_os=
526
+ ;;
527
+ sun2os3)
528
+ basic_machine=m68000-sun
529
+ basic_os=sunos3
530
+ ;;
531
+ sun2os4)
532
+ basic_machine=m68000-sun
533
+ basic_os=sunos4
534
+ ;;
535
+ sun3)
536
+ basic_machine=m68k-sun
537
+ basic_os=
538
+ ;;
539
+ sun3os3)
540
+ basic_machine=m68k-sun
541
+ basic_os=sunos3
542
+ ;;
543
+ sun3os4)
544
+ basic_machine=m68k-sun
545
+ basic_os=sunos4
546
+ ;;
547
+ sun4)
548
+ basic_machine=sparc-sun
549
+ basic_os=
550
+ ;;
551
+ sun4os3)
552
+ basic_machine=sparc-sun
553
+ basic_os=sunos3
554
+ ;;
555
+ sun4os4)
556
+ basic_machine=sparc-sun
557
+ basic_os=sunos4
558
+ ;;
559
+ sun4sol2)
560
+ basic_machine=sparc-sun
561
+ basic_os=solaris2
562
+ ;;
563
+ sun386 | sun386i | roadrunner)
564
+ basic_machine=i386-sun
565
+ basic_os=
566
+ ;;
567
+ sv1)
568
+ basic_machine=sv1-cray
569
+ basic_os=unicos
570
+ ;;
571
+ symmetry)
572
+ basic_machine=i386-sequent
573
+ basic_os=dynix
574
+ ;;
575
+ t3e)
576
+ basic_machine=alphaev5-cray
577
+ basic_os=unicos
578
+ ;;
579
+ t90)
580
+ basic_machine=t90-cray
581
+ basic_os=unicos
582
+ ;;
583
+ toad1)
584
+ basic_machine=pdp10-xkl
585
+ basic_os=tops20
586
+ ;;
587
+ tpf)
588
+ basic_machine=s390x-ibm
589
+ basic_os=tpf
590
+ ;;
591
+ udi29k)
592
+ basic_machine=a29k-amd
593
+ basic_os=udi
594
+ ;;
595
+ ultra3)
596
+ basic_machine=a29k-nyu
597
+ basic_os=sym1
598
+ ;;
599
+ v810 | necv810)
600
+ basic_machine=v810-nec
601
+ basic_os=none
602
+ ;;
603
+ vaxv)
604
+ basic_machine=vax-dec
605
+ basic_os=sysv
606
+ ;;
607
+ vms)
608
+ basic_machine=vax-dec
609
+ basic_os=vms
610
+ ;;
611
+ vsta)
612
+ basic_machine=i386-pc
613
+ basic_os=vsta
614
+ ;;
615
+ vxworks960)
616
+ basic_machine=i960-wrs
617
+ basic_os=vxworks
618
+ ;;
619
+ vxworks68)
620
+ basic_machine=m68k-wrs
621
+ basic_os=vxworks
622
+ ;;
623
+ vxworks29k)
624
+ basic_machine=a29k-wrs
625
+ basic_os=vxworks
626
+ ;;
627
+ xbox)
628
+ basic_machine=i686-pc
629
+ basic_os=mingw32
630
+ ;;
631
+ ymp)
632
+ basic_machine=ymp-cray
633
+ basic_os=unicos
634
+ ;;
635
+ *)
636
+ basic_machine=$1
637
+ basic_os=
638
+ ;;
639
+ esac
241
640
  ;;
242
641
  esac
243
642
 
244
- # Decode aliases for certain CPU-COMPANY combinations.
643
+ # Decode 1-component or ad-hoc basic machines
245
644
  case $basic_machine in
246
- # Recognize the basic CPU types without company name.
247
- # Some are omitted here because they have special meanings below.
248
- 1750a | 580 \
249
- | a29k \
250
- | aarch64 | aarch64_be \
251
- | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
252
- | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
253
- | am33_2.0 \
254
- | arc | arceb \
255
- | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \
256
- | avr | avr32 \
257
- | ba \
258
- | be32 | be64 \
259
- | bfin \
260
- | c4x | c8051 | clipper \
261
- | d10v | d30v | dlx | dsp16xx \
262
- | e2k | epiphany \
263
- | fido | fr30 | frv | ft32 \
264
- | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
265
- | hexagon \
266
- | i370 | i860 | i960 | ia16 | ia64 \
267
- | ip2k | iq2000 \
268
- | k1om \
269
- | le32 | le64 \
270
- | lm32 \
271
- | m32c | m32r | m32rle | m68000 | m68k | m88k \
272
- | maxq | mb | microblaze | microblazeel | mcore | mep | metag \
273
- | mips | mipsbe | mipseb | mipsel | mipsle \
274
- | mips16 \
275
- | mips64 | mips64el \
276
- | mips64octeon | mips64octeonel \
277
- | mips64orion | mips64orionel \
278
- | mips64r5900 | mips64r5900el \
279
- | mips64vr | mips64vrel \
280
- | mips64vr4100 | mips64vr4100el \
281
- | mips64vr4300 | mips64vr4300el \
282
- | mips64vr5000 | mips64vr5000el \
283
- | mips64vr5900 | mips64vr5900el \
284
- | mipsisa32 | mipsisa32el \
285
- | mipsisa32r2 | mipsisa32r2el \
286
- | mipsisa32r6 | mipsisa32r6el \
287
- | mipsisa64 | mipsisa64el \
288
- | mipsisa64r2 | mipsisa64r2el \
289
- | mipsisa64r6 | mipsisa64r6el \
290
- | mipsisa64sb1 | mipsisa64sb1el \
291
- | mipsisa64sr71k | mipsisa64sr71kel \
292
- | mipsr5900 | mipsr5900el \
293
- | mipstx39 | mipstx39el \
294
- | mn10200 | mn10300 \
295
- | moxie \
296
- | mt \
297
- | msp430 \
298
- | nds32 | nds32le | nds32be \
299
- | nios | nios2 | nios2eb | nios2el \
300
- | ns16k | ns32k \
301
- | open8 | or1k | or1knd | or32 \
302
- | pdp10 | pdp11 | pj | pjl \
303
- | powerpc | powerpc64 | powerpc64le | powerpcle \
304
- | pru \
305
- | pyramid \
306
- | riscv32 | riscv64 \
307
- | rl78 | rx \
308
- | score \
309
- | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[234]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
310
- | sh64 | sh64le \
311
- | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
312
- | sparcv8 | sparcv9 | sparcv9b | sparcv9v \
313
- | spu \
314
- | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
315
- | ubicom32 \
316
- | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
317
- | visium \
318
- | wasm32 \
319
- | we32k \
320
- | x86 | xc16x | xstormy16 | xtensa \
321
- | z8k | z80)
322
- basic_machine=$basic_machine-unknown
323
- ;;
324
- c54x)
325
- basic_machine=tic54x-unknown
326
- ;;
327
- c55x)
328
- basic_machine=tic55x-unknown
329
- ;;
330
- c6x)
331
- basic_machine=tic6x-unknown
332
- ;;
333
- leon|leon[3-9])
334
- basic_machine=sparc-$basic_machine
335
- ;;
336
- m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip)
337
- basic_machine=$basic_machine-unknown
338
- os=-none
645
+ # Here we handle the default manufacturer of certain CPU types. It is in
646
+ # some cases the only manufacturer, in others, it is the most popular.
647
+ w89k)
648
+ cpu=hppa1.1
649
+ vendor=winbond
339
650
  ;;
340
- m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
651
+ op50n)
652
+ cpu=hppa1.1
653
+ vendor=oki
341
654
  ;;
342
- ms1)
343
- basic_machine=mt-unknown
655
+ op60c)
656
+ cpu=hppa1.1
657
+ vendor=oki
344
658
  ;;
345
-
346
- strongarm | thumb | xscale)
347
- basic_machine=arm-unknown
659
+ ibm*)
660
+ cpu=i370
661
+ vendor=ibm
348
662
  ;;
349
- xgate)
350
- basic_machine=$basic_machine-unknown
351
- os=-none
663
+ orion105)
664
+ cpu=clipper
665
+ vendor=highlevel
352
666
  ;;
353
- xscaleeb)
354
- basic_machine=armeb-unknown
667
+ mac | mpw | mac-mpw)
668
+ cpu=m68k
669
+ vendor=apple
355
670
  ;;
356
-
357
- xscaleel)
358
- basic_machine=armel-unknown
671
+ pmac | pmac-mpw)
672
+ cpu=powerpc
673
+ vendor=apple
359
674
  ;;
360
675
 
361
- # We use `pc' rather than `unknown'
362
- # because (1) that's what they normally are, and
363
- # (2) the word "unknown" tends to confuse beginning users.
364
- i*86 | x86_64)
365
- basic_machine=$basic_machine-pc
366
- ;;
367
- # Object if more than one company name word.
368
- *-*-*)
369
- echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
370
- exit 1
371
- ;;
372
- # Recognize the basic CPU types with company name.
373
- 580-* \
374
- | a29k-* \
375
- | aarch64-* | aarch64_be-* \
376
- | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
377
- | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
378
- | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \
379
- | arm-* | armbe-* | armle-* | armeb-* | armv*-* \
380
- | avr-* | avr32-* \
381
- | ba-* \
382
- | be32-* | be64-* \
383
- | bfin-* | bs2000-* \
384
- | c[123]* | c30-* | [cjt]90-* | c4x-* \
385
- | c8051-* | clipper-* | craynv-* | cydra-* \
386
- | d10v-* | d30v-* | dlx-* \
387
- | e2k-* | elxsi-* \
388
- | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
389
- | h8300-* | h8500-* \
390
- | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
391
- | hexagon-* \
392
- | i*86-* | i860-* | i960-* | ia16-* | ia64-* \
393
- | ip2k-* | iq2000-* \
394
- | k1om-* \
395
- | le32-* | le64-* \
396
- | lm32-* \
397
- | m32c-* | m32r-* | m32rle-* \
398
- | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
399
- | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \
400
- | microblaze-* | microblazeel-* \
401
- | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
402
- | mips16-* \
403
- | mips64-* | mips64el-* \
404
- | mips64octeon-* | mips64octeonel-* \
405
- | mips64orion-* | mips64orionel-* \
406
- | mips64r5900-* | mips64r5900el-* \
407
- | mips64vr-* | mips64vrel-* \
408
- | mips64vr4100-* | mips64vr4100el-* \
409
- | mips64vr4300-* | mips64vr4300el-* \
410
- | mips64vr5000-* | mips64vr5000el-* \
411
- | mips64vr5900-* | mips64vr5900el-* \
412
- | mipsisa32-* | mipsisa32el-* \
413
- | mipsisa32r2-* | mipsisa32r2el-* \
414
- | mipsisa32r6-* | mipsisa32r6el-* \
415
- | mipsisa64-* | mipsisa64el-* \
416
- | mipsisa64r2-* | mipsisa64r2el-* \
417
- | mipsisa64r6-* | mipsisa64r6el-* \
418
- | mipsisa64sb1-* | mipsisa64sb1el-* \
419
- | mipsisa64sr71k-* | mipsisa64sr71kel-* \
420
- | mipsr5900-* | mipsr5900el-* \
421
- | mipstx39-* | mipstx39el-* \
422
- | mmix-* \
423
- | mt-* \
424
- | msp430-* \
425
- | nds32-* | nds32le-* | nds32be-* \
426
- | nios-* | nios2-* | nios2eb-* | nios2el-* \
427
- | none-* | np1-* | ns16k-* | ns32k-* \
428
- | open8-* \
429
- | or1k*-* \
430
- | orion-* \
431
- | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
432
- | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
433
- | pru-* \
434
- | pyramid-* \
435
- | riscv32-* | riscv64-* \
436
- | rl78-* | romp-* | rs6000-* | rx-* \
437
- | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
438
- | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
439
- | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
440
- | sparclite-* \
441
- | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx*-* \
442
- | tahoe-* \
443
- | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
444
- | tile*-* \
445
- | tron-* \
446
- | ubicom32-* \
447
- | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
448
- | vax-* \
449
- | visium-* \
450
- | wasm32-* \
451
- | we32k-* \
452
- | x86-* | x86_64-* | xc16x-* | xps100-* \
453
- | xstormy16-* | xtensa*-* \
454
- | ymp-* \
455
- | z8k-* | z80-*)
456
- ;;
457
- # Recognize the basic CPU types without company name, with glob match.
458
- xtensa*)
459
- basic_machine=$basic_machine-unknown
460
- ;;
461
676
  # Recognize the various machine names and aliases which stand
462
677
  # for a CPU type and a company and sometimes even an OS.
463
- 386bsd)
464
- basic_machine=i386-unknown
465
- os=-bsd
466
- ;;
467
678
  3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
468
- basic_machine=m68000-att
679
+ cpu=m68000
680
+ vendor=att
469
681
  ;;
470
682
  3b*)
471
- basic_machine=we32k-att
472
- ;;
473
- a29khif)
474
- basic_machine=a29k-amd
475
- os=-udi
476
- ;;
477
- abacus)
478
- basic_machine=abacus-unknown
479
- ;;
480
- adobe68k)
481
- basic_machine=m68010-adobe
482
- os=-scout
483
- ;;
484
- alliant | fx80)
485
- basic_machine=fx80-alliant
486
- ;;
487
- altos | altos3068)
488
- basic_machine=m68k-altos
489
- ;;
490
- am29k)
491
- basic_machine=a29k-none
492
- os=-bsd
493
- ;;
494
- amd64)
495
- basic_machine=x86_64-pc
496
- ;;
497
- amd64-*)
498
- basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
499
- ;;
500
- amdahl)
501
- basic_machine=580-amdahl
502
- os=-sysv
503
- ;;
504
- amiga | amiga-*)
505
- basic_machine=m68k-unknown
506
- ;;
507
- amigaos | amigados)
508
- basic_machine=m68k-unknown
509
- os=-amigaos
510
- ;;
511
- amigaunix | amix)
512
- basic_machine=m68k-unknown
513
- os=-sysv4
514
- ;;
515
- apollo68)
516
- basic_machine=m68k-apollo
517
- os=-sysv
518
- ;;
519
- apollo68bsd)
520
- basic_machine=m68k-apollo
521
- os=-bsd
522
- ;;
523
- aros)
524
- basic_machine=i386-pc
525
- os=-aros
526
- ;;
527
- asmjs)
528
- basic_machine=asmjs-unknown
529
- ;;
530
- aux)
531
- basic_machine=m68k-apple
532
- os=-aux
533
- ;;
534
- balance)
535
- basic_machine=ns32k-sequent
536
- os=-dynix
537
- ;;
538
- blackfin)
539
- basic_machine=bfin-unknown
540
- os=-linux
541
- ;;
542
- blackfin-*)
543
- basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
544
- os=-linux
683
+ cpu=we32k
684
+ vendor=att
545
685
  ;;
546
686
  bluegene*)
547
- basic_machine=powerpc-ibm
548
- os=-cnk
549
- ;;
550
- c54x-*)
551
- basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'`
552
- ;;
553
- c55x-*)
554
- basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'`
555
- ;;
556
- c6x-*)
557
- basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'`
558
- ;;
559
- c90)
560
- basic_machine=c90-cray
561
- os=-unicos
562
- ;;
563
- cegcc)
564
- basic_machine=arm-unknown
565
- os=-cegcc
566
- ;;
567
- convex-c1)
568
- basic_machine=c1-convex
569
- os=-bsd
570
- ;;
571
- convex-c2)
572
- basic_machine=c2-convex
573
- os=-bsd
574
- ;;
575
- convex-c32)
576
- basic_machine=c32-convex
577
- os=-bsd
578
- ;;
579
- convex-c34)
580
- basic_machine=c34-convex
581
- os=-bsd
582
- ;;
583
- convex-c38)
584
- basic_machine=c38-convex
585
- os=-bsd
586
- ;;
587
- cray | j90)
588
- basic_machine=j90-cray
589
- os=-unicos
590
- ;;
591
- craynv)
592
- basic_machine=craynv-cray
593
- os=-unicosmp
594
- ;;
595
- cr16 | cr16-*)
596
- basic_machine=cr16-unknown
597
- os=-elf
598
- ;;
599
- crds | unos)
600
- basic_machine=m68k-crds
601
- ;;
602
- crisv32 | crisv32-* | etraxfs*)
603
- basic_machine=crisv32-axis
604
- ;;
605
- cris | cris-* | etrax*)
606
- basic_machine=cris-axis
607
- ;;
608
- crx)
609
- basic_machine=crx-unknown
610
- os=-elf
611
- ;;
612
- da30 | da30-*)
613
- basic_machine=m68k-da30
614
- ;;
615
- decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
616
- basic_machine=mips-dec
687
+ cpu=powerpc
688
+ vendor=ibm
689
+ basic_os=cnk
617
690
  ;;
618
691
  decsystem10* | dec10*)
619
- basic_machine=pdp10-dec
620
- os=-tops10
692
+ cpu=pdp10
693
+ vendor=dec
694
+ basic_os=tops10
621
695
  ;;
622
696
  decsystem20* | dec20*)
623
- basic_machine=pdp10-dec
624
- os=-tops20
697
+ cpu=pdp10
698
+ vendor=dec
699
+ basic_os=tops20
625
700
  ;;
626
701
  delta | 3300 | motorola-3300 | motorola-delta \
627
702
  | 3300-motorola | delta-motorola)
628
- basic_machine=m68k-motorola
703
+ cpu=m68k
704
+ vendor=motorola
629
705
  ;;
630
- delta88)
631
- basic_machine=m88k-motorola
632
- os=-sysv3
633
- ;;
634
- dicos)
635
- basic_machine=i686-pc
636
- os=-dicos
637
- ;;
638
- djgpp)
639
- basic_machine=i586-pc
640
- os=-msdosdjgpp
641
- ;;
642
- dpx20 | dpx20-*)
643
- basic_machine=rs6000-bull
644
- os=-bosx
645
- ;;
646
- dpx2* | dpx2*-bull)
647
- basic_machine=m68k-bull
648
- os=-sysv3
649
- ;;
650
- e500v[12])
651
- basic_machine=powerpc-unknown
652
- os=$os"spe"
653
- ;;
654
- e500v[12]-*)
655
- basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
656
- os=$os"spe"
657
- ;;
658
- ebmon29k)
659
- basic_machine=a29k-amd
660
- os=-ebmon
661
- ;;
662
- elxsi)
663
- basic_machine=elxsi-elxsi
664
- os=-bsd
706
+ dpx2*)
707
+ cpu=m68k
708
+ vendor=bull
709
+ basic_os=sysv3
665
710
  ;;
666
711
  encore | umax | mmax)
667
- basic_machine=ns32k-encore
712
+ cpu=ns32k
713
+ vendor=encore
668
714
  ;;
669
- es1800 | OSE68k | ose68k | ose | OSE)
670
- basic_machine=m68k-ericsson
671
- os=-ose
715
+ elxsi)
716
+ cpu=elxsi
717
+ vendor=elxsi
718
+ basic_os=${basic_os:-bsd}
672
719
  ;;
673
720
  fx2800)
674
- basic_machine=i860-alliant
721
+ cpu=i860
722
+ vendor=alliant
675
723
  ;;
676
724
  genix)
677
- basic_machine=ns32k-ns
678
- ;;
679
- gmicro)
680
- basic_machine=tron-gmicro
681
- os=-sysv
682
- ;;
683
- go32)
684
- basic_machine=i386-pc
685
- os=-go32
725
+ cpu=ns32k
726
+ vendor=ns
686
727
  ;;
687
728
  h3050r* | hiux*)
688
- basic_machine=hppa1.1-hitachi
689
- os=-hiuxwe2
690
- ;;
691
- h8300hms)
692
- basic_machine=h8300-hitachi
693
- os=-hms
694
- ;;
695
- h8300xray)
696
- basic_machine=h8300-hitachi
697
- os=-xray
698
- ;;
699
- h8500hms)
700
- basic_machine=h8500-hitachi
701
- os=-hms
702
- ;;
703
- harris)
704
- basic_machine=m88k-harris
705
- os=-sysv3
706
- ;;
707
- hp300-*)
708
- basic_machine=m68k-hp
709
- ;;
710
- hp300bsd)
711
- basic_machine=m68k-hp
712
- os=-bsd
713
- ;;
714
- hp300hpux)
715
- basic_machine=m68k-hp
716
- os=-hpux
729
+ cpu=hppa1.1
730
+ vendor=hitachi
731
+ basic_os=hiuxwe2
717
732
  ;;
718
733
  hp3k9[0-9][0-9] | hp9[0-9][0-9])
719
- basic_machine=hppa1.0-hp
734
+ cpu=hppa1.0
735
+ vendor=hp
720
736
  ;;
721
737
  hp9k2[0-9][0-9] | hp9k31[0-9])
722
- basic_machine=m68000-hp
738
+ cpu=m68000
739
+ vendor=hp
723
740
  ;;
724
741
  hp9k3[2-9][0-9])
725
- basic_machine=m68k-hp
742
+ cpu=m68k
743
+ vendor=hp
726
744
  ;;
727
745
  hp9k6[0-9][0-9] | hp6[0-9][0-9])
728
- basic_machine=hppa1.0-hp
746
+ cpu=hppa1.0
747
+ vendor=hp
729
748
  ;;
730
749
  hp9k7[0-79][0-9] | hp7[0-79][0-9])
731
- basic_machine=hppa1.1-hp
750
+ cpu=hppa1.1
751
+ vendor=hp
732
752
  ;;
733
753
  hp9k78[0-9] | hp78[0-9])
734
754
  # FIXME: really hppa2.0-hp
735
- basic_machine=hppa1.1-hp
755
+ cpu=hppa1.1
756
+ vendor=hp
736
757
  ;;
737
758
  hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
738
759
  # FIXME: really hppa2.0-hp
739
- basic_machine=hppa1.1-hp
760
+ cpu=hppa1.1
761
+ vendor=hp
740
762
  ;;
741
763
  hp9k8[0-9][13679] | hp8[0-9][13679])
742
- basic_machine=hppa1.1-hp
764
+ cpu=hppa1.1
765
+ vendor=hp
743
766
  ;;
744
767
  hp9k8[0-9][0-9] | hp8[0-9][0-9])
745
- basic_machine=hppa1.0-hp
746
- ;;
747
- hppa-next)
748
- os=-nextstep3
749
- ;;
750
- hppaosf)
751
- basic_machine=hppa1.1-hp
752
- os=-osf
753
- ;;
754
- hppro)
755
- basic_machine=hppa1.1-hp
756
- os=-proelf
757
- ;;
758
- i370-ibm* | ibm*)
759
- basic_machine=i370-ibm
768
+ cpu=hppa1.0
769
+ vendor=hp
760
770
  ;;
761
771
  i*86v32)
762
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
763
- os=-sysv32
772
+ cpu=`echo "$1" | sed -e 's/86.*/86/'`
773
+ vendor=pc
774
+ basic_os=sysv32
764
775
  ;;
765
776
  i*86v4*)
766
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
767
- os=-sysv4
777
+ cpu=`echo "$1" | sed -e 's/86.*/86/'`
778
+ vendor=pc
779
+ basic_os=sysv4
768
780
  ;;
769
781
  i*86v)
770
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
771
- os=-sysv
782
+ cpu=`echo "$1" | sed -e 's/86.*/86/'`
783
+ vendor=pc
784
+ basic_os=sysv
772
785
  ;;
773
786
  i*86sol2)
774
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
775
- os=-solaris2
787
+ cpu=`echo "$1" | sed -e 's/86.*/86/'`
788
+ vendor=pc
789
+ basic_os=solaris2
776
790
  ;;
777
- i386mach)
778
- basic_machine=i386-mach
779
- os=-mach
780
- ;;
781
- i386-vsta | vsta)
782
- basic_machine=i386-unknown
783
- os=-vsta
791
+ j90 | j90-cray)
792
+ cpu=j90
793
+ vendor=cray
794
+ basic_os=${basic_os:-unicos}
784
795
  ;;
785
796
  iris | iris4d)
786
- basic_machine=mips-sgi
787
- case $os in
788
- -irix*)
797
+ cpu=mips
798
+ vendor=sgi
799
+ case $basic_os in
800
+ irix*)
789
801
  ;;
790
802
  *)
791
- os=-irix4
803
+ basic_os=irix4
792
804
  ;;
793
805
  esac
794
806
  ;;
795
- isi68 | isi)
796
- basic_machine=m68k-isi
797
- os=-sysv
798
- ;;
799
- leon-*|leon[3-9]-*)
800
- basic_machine=sparc-`echo $basic_machine | sed 's/-.*//'`
801
- ;;
802
- m68knommu)
803
- basic_machine=m68k-unknown
804
- os=-linux
805
- ;;
806
- m68knommu-*)
807
- basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'`
808
- os=-linux
809
- ;;
810
- m88k-omron*)
811
- basic_machine=m88k-omron
812
- ;;
813
- magnum | m3230)
814
- basic_machine=mips-mips
815
- os=-sysv
816
- ;;
817
- merlin)
818
- basic_machine=ns32k-utek
819
- os=-sysv
820
- ;;
821
- microblaze*)
822
- basic_machine=microblaze-xilinx
823
- ;;
824
- mingw64)
825
- basic_machine=x86_64-pc
826
- os=-mingw64
827
- ;;
828
- mingw32)
829
- basic_machine=i686-pc
830
- os=-mingw32
831
- ;;
832
- mingw32ce)
833
- basic_machine=arm-unknown
834
- os=-mingw32ce
835
- ;;
836
807
  miniframe)
837
- basic_machine=m68000-convergent
838
- ;;
839
- *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
840
- basic_machine=m68k-atari
841
- os=-mint
842
- ;;
843
- mips3*-*)
844
- basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
845
- ;;
846
- mips3*)
847
- basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
808
+ cpu=m68000
809
+ vendor=convergent
848
810
  ;;
849
- monitor)
850
- basic_machine=m68k-rom68k
851
- os=-coff
852
- ;;
853
- morphos)
854
- basic_machine=powerpc-unknown
855
- os=-morphos
856
- ;;
857
- moxiebox)
858
- basic_machine=moxie-unknown
859
- os=-moxiebox
860
- ;;
861
- msdos)
862
- basic_machine=i386-pc
863
- os=-msdos
864
- ;;
865
- ms1-*)
866
- basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
867
- ;;
868
- msys)
869
- basic_machine=i686-pc
870
- os=-msys
871
- ;;
872
- mvs)
873
- basic_machine=i370-ibm
874
- os=-mvs
875
- ;;
876
- nacl)
877
- basic_machine=le32-unknown
878
- os=-nacl
879
- ;;
880
- ncr3000)
881
- basic_machine=i486-ncr
882
- os=-sysv4
883
- ;;
884
- netbsd386)
885
- basic_machine=i386-unknown
886
- os=-netbsd
887
- ;;
888
- netwinder)
889
- basic_machine=armv4l-rebel
890
- os=-linux
891
- ;;
892
- news | news700 | news800 | news900)
893
- basic_machine=m68k-sony
894
- os=-newsos
895
- ;;
896
- news1000)
897
- basic_machine=m68030-sony
898
- os=-newsos
811
+ *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*)
812
+ cpu=m68k
813
+ vendor=atari
814
+ basic_os=mint
899
815
  ;;
900
816
  news-3600 | risc-news)
901
- basic_machine=mips-sony
902
- os=-newsos
903
- ;;
904
- necv70)
905
- basic_machine=v70-nec
906
- os=-sysv
907
- ;;
908
- next | m*-next )
909
- basic_machine=m68k-next
910
- case $os in
911
- -nextstep* )
817
+ cpu=mips
818
+ vendor=sony
819
+ basic_os=newsos
820
+ ;;
821
+ next | m*-next)
822
+ cpu=m68k
823
+ vendor=next
824
+ case $basic_os in
825
+ openstep*)
826
+ ;;
827
+ nextstep*)
912
828
  ;;
913
- -ns2*)
914
- os=-nextstep2
829
+ ns2*)
830
+ basic_os=nextstep2
915
831
  ;;
916
832
  *)
917
- os=-nextstep3
833
+ basic_os=nextstep3
918
834
  ;;
919
835
  esac
920
836
  ;;
921
- nh3000)
922
- basic_machine=m68k-harris
923
- os=-cxux
924
- ;;
925
- nh[45]000)
926
- basic_machine=m88k-harris
927
- os=-cxux
928
- ;;
929
- nindy960)
930
- basic_machine=i960-intel
931
- os=-nindy
932
- ;;
933
- mon960)
934
- basic_machine=i960-intel
935
- os=-mon960
936
- ;;
937
- nonstopux)
938
- basic_machine=mips-compaq
939
- os=-nonstopux
940
- ;;
941
837
  np1)
942
- basic_machine=np1-gould
943
- ;;
944
- neo-tandem)
945
- basic_machine=neo-tandem
946
- ;;
947
- nse-tandem)
948
- basic_machine=nse-tandem
949
- ;;
950
- nsr-tandem)
951
- basic_machine=nsr-tandem
952
- ;;
953
- nsx-tandem)
954
- basic_machine=nsx-tandem
838
+ cpu=np1
839
+ vendor=gould
955
840
  ;;
956
841
  op50n-* | op60c-*)
957
- basic_machine=hppa1.1-oki
958
- os=-proelf
959
- ;;
960
- openrisc | openrisc-*)
961
- basic_machine=or32-unknown
962
- ;;
963
- os400)
964
- basic_machine=powerpc-ibm
965
- os=-os400
966
- ;;
967
- OSE68000 | ose68000)
968
- basic_machine=m68000-ericsson
969
- os=-ose
970
- ;;
971
- os68k)
972
- basic_machine=m68k-none
973
- os=-os68k
842
+ cpu=hppa1.1
843
+ vendor=oki
844
+ basic_os=proelf
974
845
  ;;
975
846
  pa-hitachi)
976
- basic_machine=hppa1.1-hitachi
977
- os=-hiuxwe2
978
- ;;
979
- paragon)
980
- basic_machine=i860-intel
981
- os=-osf
982
- ;;
983
- parisc)
984
- basic_machine=hppa-unknown
985
- os=-linux
986
- ;;
987
- parisc-*)
988
- basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'`
989
- os=-linux
847
+ cpu=hppa1.1
848
+ vendor=hitachi
849
+ basic_os=hiuxwe2
990
850
  ;;
991
851
  pbd)
992
- basic_machine=sparc-tti
852
+ cpu=sparc
853
+ vendor=tti
993
854
  ;;
994
855
  pbb)
995
- basic_machine=m68k-tti
996
- ;;
997
- pc532 | pc532-*)
998
- basic_machine=ns32k-pc532
999
- ;;
1000
- pc98)
1001
- basic_machine=i386-pc
1002
- ;;
1003
- pc98-*)
1004
- basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'`
1005
- ;;
1006
- pentium | p5 | k5 | k6 | nexgen | viac3)
1007
- basic_machine=i586-pc
1008
- ;;
1009
- pentiumpro | p6 | 6x86 | athlon | athlon_*)
1010
- basic_machine=i686-pc
1011
- ;;
1012
- pentiumii | pentium2 | pentiumiii | pentium3)
1013
- basic_machine=i686-pc
856
+ cpu=m68k
857
+ vendor=tti
1014
858
  ;;
1015
- pentium4)
1016
- basic_machine=i786-pc
1017
- ;;
1018
- pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
1019
- basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
1020
- ;;
1021
- pentiumpro-* | p6-* | 6x86-* | athlon-*)
1022
- basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
1023
- ;;
1024
- pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
1025
- basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
1026
- ;;
1027
- pentium4-*)
1028
- basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
859
+ pc532)
860
+ cpu=ns32k
861
+ vendor=pc532
1029
862
  ;;
1030
863
  pn)
1031
- basic_machine=pn-gould
1032
- ;;
1033
- power) basic_machine=power-ibm
1034
- ;;
1035
- ppc | ppcbe) basic_machine=powerpc-unknown
1036
- ;;
1037
- ppc-* | ppcbe-*)
1038
- basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
1039
- ;;
1040
- ppcle | powerpclittle)
1041
- basic_machine=powerpcle-unknown
1042
- ;;
1043
- ppcle-* | powerpclittle-*)
1044
- basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
864
+ cpu=pn
865
+ vendor=gould
1045
866
  ;;
1046
- ppc64) basic_machine=powerpc64-unknown
1047
- ;;
1048
- ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
1049
- ;;
1050
- ppc64le | powerpc64little)
1051
- basic_machine=powerpc64le-unknown
1052
- ;;
1053
- ppc64le-* | powerpc64little-*)
1054
- basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
867
+ power)
868
+ cpu=power
869
+ vendor=ibm
1055
870
  ;;
1056
871
  ps2)
1057
- basic_machine=i386-ibm
1058
- ;;
1059
- pw32)
1060
- basic_machine=i586-unknown
1061
- os=-pw32
1062
- ;;
1063
- rdos | rdos64)
1064
- basic_machine=x86_64-pc
1065
- os=-rdos
1066
- ;;
1067
- rdos32)
1068
- basic_machine=i386-pc
1069
- os=-rdos
1070
- ;;
1071
- rom68k)
1072
- basic_machine=m68k-rom68k
1073
- os=-coff
872
+ cpu=i386
873
+ vendor=ibm
1074
874
  ;;
1075
875
  rm[46]00)
1076
- basic_machine=mips-siemens
876
+ cpu=mips
877
+ vendor=siemens
1077
878
  ;;
1078
879
  rtpc | rtpc-*)
1079
- basic_machine=romp-ibm
1080
- ;;
1081
- s390 | s390-*)
1082
- basic_machine=s390-ibm
1083
- ;;
1084
- s390x | s390x-*)
1085
- basic_machine=s390x-ibm
1086
- ;;
1087
- sa29200)
1088
- basic_machine=a29k-amd
1089
- os=-udi
1090
- ;;
1091
- sb1)
1092
- basic_machine=mipsisa64sb1-unknown
1093
- ;;
1094
- sb1el)
1095
- basic_machine=mipsisa64sb1el-unknown
880
+ cpu=romp
881
+ vendor=ibm
1096
882
  ;;
1097
883
  sde)
1098
- basic_machine=mipsisa32-sde
1099
- os=-elf
884
+ cpu=mipsisa32
885
+ vendor=sde
886
+ basic_os=${basic_os:-elf}
887
+ ;;
888
+ simso-wrs)
889
+ cpu=sparclite
890
+ vendor=wrs
891
+ basic_os=vxworks
1100
892
  ;;
1101
- sei)
1102
- basic_machine=mips-sei
1103
- os=-seiux
893
+ tower | tower-32)
894
+ cpu=m68k
895
+ vendor=ncr
1104
896
  ;;
1105
- sequent)
1106
- basic_machine=i386-sequent
897
+ vpp*|vx|vx-*)
898
+ cpu=f301
899
+ vendor=fujitsu
1107
900
  ;;
1108
- sh)
1109
- basic_machine=sh-hitachi
1110
- os=-hms
901
+ w65)
902
+ cpu=w65
903
+ vendor=wdc
1111
904
  ;;
1112
- sh5el)
1113
- basic_machine=sh5le-unknown
905
+ w89k-*)
906
+ cpu=hppa1.1
907
+ vendor=winbond
908
+ basic_os=proelf
1114
909
  ;;
1115
- sh64)
1116
- basic_machine=sh64-unknown
910
+ none)
911
+ cpu=none
912
+ vendor=none
1117
913
  ;;
1118
- sparclite-wrs | simso-wrs)
1119
- basic_machine=sparclite-wrs
1120
- os=-vxworks
914
+ leon|leon[3-9])
915
+ cpu=sparc
916
+ vendor=$basic_machine
1121
917
  ;;
1122
- sps7)
1123
- basic_machine=m68k-bull
1124
- os=-sysv2
918
+ leon-*|leon[3-9]-*)
919
+ cpu=sparc
920
+ vendor=`echo "$basic_machine" | sed 's/-.*//'`
1125
921
  ;;
1126
- spur)
1127
- basic_machine=spur-unknown
922
+
923
+ *-*)
924
+ # shellcheck disable=SC2162
925
+ IFS="-" read cpu vendor <<EOF
926
+ $basic_machine
927
+ EOF
1128
928
  ;;
1129
- st2000)
1130
- basic_machine=m68k-tandem
929
+ # We use `pc' rather than `unknown'
930
+ # because (1) that's what they normally are, and
931
+ # (2) the word "unknown" tends to confuse beginning users.
932
+ i*86 | x86_64)
933
+ cpu=$basic_machine
934
+ vendor=pc
1131
935
  ;;
1132
- stratus)
1133
- basic_machine=i860-stratus
1134
- os=-sysv4
936
+ # These rules are duplicated from below for sake of the special case above;
937
+ # i.e. things that normalized to x86 arches should also default to "pc"
938
+ pc98)
939
+ cpu=i386
940
+ vendor=pc
1135
941
  ;;
1136
- strongarm-* | thumb-*)
1137
- basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'`
942
+ x64 | amd64)
943
+ cpu=x86_64
944
+ vendor=pc
1138
945
  ;;
1139
- sun2)
1140
- basic_machine=m68000-sun
946
+ # Recognize the basic CPU types without company name.
947
+ *)
948
+ cpu=$basic_machine
949
+ vendor=unknown
1141
950
  ;;
1142
- sun2os3)
1143
- basic_machine=m68000-sun
1144
- os=-sunos3
951
+ esac
952
+
953
+ unset -v basic_machine
954
+
955
+ # Decode basic machines in the full and proper CPU-Company form.
956
+ case $cpu-$vendor in
957
+ # Here we handle the default manufacturer of certain CPU types in canonical form. It is in
958
+ # some cases the only manufacturer, in others, it is the most popular.
959
+ craynv-unknown)
960
+ vendor=cray
961
+ basic_os=${basic_os:-unicosmp}
1145
962
  ;;
1146
- sun2os4)
1147
- basic_machine=m68000-sun
1148
- os=-sunos4
963
+ c90-unknown | c90-cray)
964
+ vendor=cray
965
+ basic_os=${Basic_os:-unicos}
1149
966
  ;;
1150
- sun3os3)
1151
- basic_machine=m68k-sun
1152
- os=-sunos3
967
+ fx80-unknown)
968
+ vendor=alliant
1153
969
  ;;
1154
- sun3os4)
1155
- basic_machine=m68k-sun
1156
- os=-sunos4
970
+ romp-unknown)
971
+ vendor=ibm
1157
972
  ;;
1158
- sun4os3)
1159
- basic_machine=sparc-sun
1160
- os=-sunos3
973
+ mmix-unknown)
974
+ vendor=knuth
1161
975
  ;;
1162
- sun4os4)
1163
- basic_machine=sparc-sun
1164
- os=-sunos4
976
+ microblaze-unknown | microblazeel-unknown)
977
+ vendor=xilinx
1165
978
  ;;
1166
- sun4sol2)
1167
- basic_machine=sparc-sun
1168
- os=-solaris2
979
+ rs6000-unknown)
980
+ vendor=ibm
1169
981
  ;;
1170
- sun3 | sun3-*)
1171
- basic_machine=m68k-sun
982
+ vax-unknown)
983
+ vendor=dec
1172
984
  ;;
1173
- sun4)
1174
- basic_machine=sparc-sun
985
+ pdp11-unknown)
986
+ vendor=dec
1175
987
  ;;
1176
- sun386 | sun386i | roadrunner)
1177
- basic_machine=i386-sun
988
+ we32k-unknown)
989
+ vendor=att
1178
990
  ;;
1179
- sv1)
1180
- basic_machine=sv1-cray
1181
- os=-unicos
991
+ cydra-unknown)
992
+ vendor=cydrome
1182
993
  ;;
1183
- symmetry)
1184
- basic_machine=i386-sequent
1185
- os=-dynix
994
+ i370-ibm*)
995
+ vendor=ibm
1186
996
  ;;
1187
- t3e)
1188
- basic_machine=alphaev5-cray
1189
- os=-unicos
997
+ orion-unknown)
998
+ vendor=highlevel
1190
999
  ;;
1191
- t90)
1192
- basic_machine=t90-cray
1193
- os=-unicos
1000
+ xps-unknown | xps100-unknown)
1001
+ cpu=xps100
1002
+ vendor=honeywell
1194
1003
  ;;
1195
- tile*)
1196
- basic_machine=$basic_machine-unknown
1197
- os=-linux-gnu
1004
+
1005
+ # Here we normalize CPU types with a missing or matching vendor
1006
+ dpx20-unknown | dpx20-bull)
1007
+ cpu=rs6000
1008
+ vendor=bull
1009
+ basic_os=${basic_os:-bosx}
1198
1010
  ;;
1199
- tx39)
1200
- basic_machine=mipstx39-unknown
1011
+
1012
+ # Here we normalize CPU types irrespective of the vendor
1013
+ amd64-*)
1014
+ cpu=x86_64
1201
1015
  ;;
1202
- tx39el)
1203
- basic_machine=mipstx39el-unknown
1016
+ blackfin-*)
1017
+ cpu=bfin
1018
+ basic_os=linux
1204
1019
  ;;
1205
- toad1)
1206
- basic_machine=pdp10-xkl
1207
- os=-tops20
1020
+ c54x-*)
1021
+ cpu=tic54x
1208
1022
  ;;
1209
- tower | tower-32)
1210
- basic_machine=m68k-ncr
1023
+ c55x-*)
1024
+ cpu=tic55x
1211
1025
  ;;
1212
- tpf)
1213
- basic_machine=s390x-ibm
1214
- os=-tpf
1026
+ c6x-*)
1027
+ cpu=tic6x
1215
1028
  ;;
1216
- udi29k)
1217
- basic_machine=a29k-amd
1218
- os=-udi
1029
+ e500v[12]-*)
1030
+ cpu=powerpc
1031
+ basic_os=${basic_os}"spe"
1219
1032
  ;;
1220
- ultra3)
1221
- basic_machine=a29k-nyu
1222
- os=-sym1
1033
+ mips3*-*)
1034
+ cpu=mips64
1223
1035
  ;;
1224
- v810 | necv810)
1225
- basic_machine=v810-nec
1226
- os=-none
1036
+ ms1-*)
1037
+ cpu=mt
1227
1038
  ;;
1228
- vaxv)
1229
- basic_machine=vax-dec
1230
- os=-sysv
1039
+ m68knommu-*)
1040
+ cpu=m68k
1041
+ basic_os=linux
1231
1042
  ;;
1232
- vms)
1233
- basic_machine=vax-dec
1234
- os=-vms
1043
+ m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*)
1044
+ cpu=s12z
1235
1045
  ;;
1236
- vpp*|vx|vx-*)
1237
- basic_machine=f301-fujitsu
1046
+ openrisc-*)
1047
+ cpu=or32
1238
1048
  ;;
1239
- vxworks960)
1240
- basic_machine=i960-wrs
1241
- os=-vxworks
1049
+ parisc-*)
1050
+ cpu=hppa
1051
+ basic_os=linux
1242
1052
  ;;
1243
- vxworks68)
1244
- basic_machine=m68k-wrs
1245
- os=-vxworks
1053
+ pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
1054
+ cpu=i586
1246
1055
  ;;
1247
- vxworks29k)
1248
- basic_machine=a29k-wrs
1249
- os=-vxworks
1056
+ pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*)
1057
+ cpu=i686
1250
1058
  ;;
1251
- wasm32)
1252
- basic_machine=wasm32-unknown
1059
+ pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
1060
+ cpu=i686
1253
1061
  ;;
1254
- w65*)
1255
- basic_machine=w65-wdc
1256
- os=-none
1062
+ pentium4-*)
1063
+ cpu=i786
1257
1064
  ;;
1258
- w89k-*)
1259
- basic_machine=hppa1.1-winbond
1260
- os=-proelf
1065
+ pc98-*)
1066
+ cpu=i386
1261
1067
  ;;
1262
- xbox)
1263
- basic_machine=i686-pc
1264
- os=-mingw32
1068
+ ppc-* | ppcbe-*)
1069
+ cpu=powerpc
1265
1070
  ;;
1266
- xps | xps100)
1267
- basic_machine=xps100-honeywell
1071
+ ppcle-* | powerpclittle-*)
1072
+ cpu=powerpcle
1268
1073
  ;;
1269
- xscale-* | xscalee[bl]-*)
1270
- basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'`
1074
+ ppc64-*)
1075
+ cpu=powerpc64
1271
1076
  ;;
1272
- ymp)
1273
- basic_machine=ymp-cray
1274
- os=-unicos
1077
+ ppc64le-* | powerpc64little-*)
1078
+ cpu=powerpc64le
1275
1079
  ;;
1276
- z8k-*-coff)
1277
- basic_machine=z8k-unknown
1278
- os=-sim
1080
+ sb1-*)
1081
+ cpu=mipsisa64sb1
1279
1082
  ;;
1280
- z80-*-coff)
1281
- basic_machine=z80-unknown
1282
- os=-sim
1083
+ sb1el-*)
1084
+ cpu=mipsisa64sb1el
1283
1085
  ;;
1284
- none)
1285
- basic_machine=none-none
1286
- os=-none
1086
+ sh5e[lb]-*)
1087
+ cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'`
1287
1088
  ;;
1288
-
1289
- # Here we handle the default manufacturer of certain CPU types. It is in
1290
- # some cases the only manufacturer, in others, it is the most popular.
1291
- w89k)
1292
- basic_machine=hppa1.1-winbond
1089
+ spur-*)
1090
+ cpu=spur
1293
1091
  ;;
1294
- op50n)
1295
- basic_machine=hppa1.1-oki
1092
+ strongarm-* | thumb-*)
1093
+ cpu=arm
1296
1094
  ;;
1297
- op60c)
1298
- basic_machine=hppa1.1-oki
1095
+ tx39-*)
1096
+ cpu=mipstx39
1299
1097
  ;;
1300
- romp)
1301
- basic_machine=romp-ibm
1098
+ tx39el-*)
1099
+ cpu=mipstx39el
1302
1100
  ;;
1303
- mmix)
1304
- basic_machine=mmix-knuth
1101
+ x64-*)
1102
+ cpu=x86_64
1305
1103
  ;;
1306
- rs6000)
1307
- basic_machine=rs6000-ibm
1104
+ xscale-* | xscalee[bl]-*)
1105
+ cpu=`echo "$cpu" | sed 's/^xscale/arm/'`
1308
1106
  ;;
1309
- vax)
1310
- basic_machine=vax-dec
1107
+ arm64-*)
1108
+ cpu=aarch64
1311
1109
  ;;
1312
- pdp10)
1313
- # there are many clones, so DEC is not a safe bet
1314
- basic_machine=pdp10-unknown
1110
+
1111
+ # Recognize the canonical CPU Types that limit and/or modify the
1112
+ # company names they are paired with.
1113
+ cr16-*)
1114
+ basic_os=${basic_os:-elf}
1315
1115
  ;;
1316
- pdp11)
1317
- basic_machine=pdp11-dec
1116
+ crisv32-* | etraxfs*-*)
1117
+ cpu=crisv32
1118
+ vendor=axis
1318
1119
  ;;
1319
- we32k)
1320
- basic_machine=we32k-att
1120
+ cris-* | etrax*-*)
1121
+ cpu=cris
1122
+ vendor=axis
1321
1123
  ;;
1322
- sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele)
1323
- basic_machine=sh-unknown
1124
+ crx-*)
1125
+ basic_os=${basic_os:-elf}
1324
1126
  ;;
1325
- sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
1326
- basic_machine=sparc-sun
1127
+ neo-tandem)
1128
+ cpu=neo
1129
+ vendor=tandem
1327
1130
  ;;
1328
- cydra)
1329
- basic_machine=cydra-cydrome
1131
+ nse-tandem)
1132
+ cpu=nse
1133
+ vendor=tandem
1330
1134
  ;;
1331
- orion)
1332
- basic_machine=orion-highlevel
1135
+ nsr-tandem)
1136
+ cpu=nsr
1137
+ vendor=tandem
1333
1138
  ;;
1334
- orion105)
1335
- basic_machine=clipper-highlevel
1139
+ nsv-tandem)
1140
+ cpu=nsv
1141
+ vendor=tandem
1336
1142
  ;;
1337
- mac | mpw | mac-mpw)
1338
- basic_machine=m68k-apple
1143
+ nsx-tandem)
1144
+ cpu=nsx
1145
+ vendor=tandem
1339
1146
  ;;
1340
- pmac | pmac-mpw)
1341
- basic_machine=powerpc-apple
1147
+ mipsallegrexel-sony)
1148
+ cpu=mipsallegrexel
1149
+ vendor=sony
1342
1150
  ;;
1343
- *-unknown)
1344
- # Make sure to match an already-canonicalized machine name.
1151
+ tile*-*)
1152
+ basic_os=${basic_os:-linux-gnu}
1345
1153
  ;;
1154
+
1346
1155
  *)
1347
- echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
1348
- exit 1
1156
+ # Recognize the canonical CPU types that are allowed with any
1157
+ # company name.
1158
+ case $cpu in
1159
+ 1750a | 580 \
1160
+ | a29k \
1161
+ | aarch64 | aarch64_be \
1162
+ | abacus \
1163
+ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \
1164
+ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \
1165
+ | alphapca5[67] | alpha64pca5[67] \
1166
+ | am33_2.0 \
1167
+ | amdgcn \
1168
+ | arc | arceb \
1169
+ | arm | arm[lb]e | arme[lb] | armv* \
1170
+ | avr | avr32 \
1171
+ | asmjs \
1172
+ | ba \
1173
+ | be32 | be64 \
1174
+ | bfin | bpf | bs2000 \
1175
+ | c[123]* | c30 | [cjt]90 | c4x \
1176
+ | c8051 | clipper | craynv | csky | cydra \
1177
+ | d10v | d30v | dlx | dsp16xx \
1178
+ | e2k | elxsi | epiphany \
1179
+ | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \
1180
+ | h8300 | h8500 \
1181
+ | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
1182
+ | hexagon \
1183
+ | i370 | i*86 | i860 | i960 | ia16 | ia64 \
1184
+ | ip2k | iq2000 \
1185
+ | k1om \
1186
+ | le32 | le64 \
1187
+ | lm32 \
1188
+ | m32c | m32r | m32rle \
1189
+ | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
1190
+ | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \
1191
+ | m88110 | m88k | maxq | mb | mcore | mep | metag \
1192
+ | microblaze | microblazeel \
1193
+ | mips | mipsbe | mipseb | mipsel | mipsle \
1194
+ | mips16 \
1195
+ | mips64 | mips64eb | mips64el \
1196
+ | mips64octeon | mips64octeonel \
1197
+ | mips64orion | mips64orionel \
1198
+ | mips64r5900 | mips64r5900el \
1199
+ | mips64vr | mips64vrel \
1200
+ | mips64vr4100 | mips64vr4100el \
1201
+ | mips64vr4300 | mips64vr4300el \
1202
+ | mips64vr5000 | mips64vr5000el \
1203
+ | mips64vr5900 | mips64vr5900el \
1204
+ | mipsisa32 | mipsisa32el \
1205
+ | mipsisa32r2 | mipsisa32r2el \
1206
+ | mipsisa32r6 | mipsisa32r6el \
1207
+ | mipsisa64 | mipsisa64el \
1208
+ | mipsisa64r2 | mipsisa64r2el \
1209
+ | mipsisa64r6 | mipsisa64r6el \
1210
+ | mipsisa64sb1 | mipsisa64sb1el \
1211
+ | mipsisa64sr71k | mipsisa64sr71kel \
1212
+ | mipsr5900 | mipsr5900el \
1213
+ | mipstx39 | mipstx39el \
1214
+ | mmix \
1215
+ | mn10200 | mn10300 \
1216
+ | moxie \
1217
+ | mt \
1218
+ | msp430 \
1219
+ | nds32 | nds32le | nds32be \
1220
+ | nfp \
1221
+ | nios | nios2 | nios2eb | nios2el \
1222
+ | none | np1 | ns16k | ns32k | nvptx \
1223
+ | open8 \
1224
+ | or1k* \
1225
+ | or32 \
1226
+ | orion \
1227
+ | picochip \
1228
+ | pdp10 | pdp11 | pj | pjl | pn | power \
1229
+ | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \
1230
+ | pru \
1231
+ | pyramid \
1232
+ | riscv | riscv32 | riscv64 \
1233
+ | rl78 | romp | rs6000 | rx \
1234
+ | s390 | s390x \
1235
+ | score \
1236
+ | sh | shl \
1237
+ | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \
1238
+ | sh[1234]e[lb] | sh[12345][lb]e | sh[23]ele | sh64 | sh64le \
1239
+ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \
1240
+ | sparclite \
1241
+ | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \
1242
+ | spu \
1243
+ | tahoe \
1244
+ | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \
1245
+ | tron \
1246
+ | ubicom32 \
1247
+ | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \
1248
+ | vax \
1249
+ | visium \
1250
+ | w65 \
1251
+ | wasm32 | wasm64 \
1252
+ | we32k \
1253
+ | x86 | x86_64 | xc16x | xgate | xps100 \
1254
+ | xstormy16 | xtensa* \
1255
+ | ymp \
1256
+ | z8k | z80)
1257
+ ;;
1258
+
1259
+ *)
1260
+ echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2
1261
+ exit 1
1262
+ ;;
1263
+ esac
1349
1264
  ;;
1350
1265
  esac
1351
1266
 
1352
1267
  # Here we canonicalize certain aliases for manufacturers.
1353
- case $basic_machine in
1354
- *-digital*)
1355
- basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
1268
+ case $vendor in
1269
+ digital*)
1270
+ vendor=dec
1356
1271
  ;;
1357
- *-commodore*)
1358
- basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
1272
+ commodore*)
1273
+ vendor=cbm
1359
1274
  ;;
1360
1275
  *)
1361
1276
  ;;
@@ -1363,203 +1278,215 @@ esac
1363
1278
 
1364
1279
  # Decode manufacturer-specific aliases for certain operating systems.
1365
1280
 
1366
- if [ x"$os" != x"" ]
1281
+ if [ x$basic_os != x ]
1367
1282
  then
1368
- case $os in
1369
- # First match some system type aliases
1370
- # that might get confused with valid system types.
1371
- # -solaris* is a basic system type, with this one exception.
1372
- -auroraux)
1373
- os=-auroraux
1283
+
1284
+ # First recognize some ad-hoc caes, or perhaps split kernel-os, or else just
1285
+ # set os.
1286
+ case $basic_os in
1287
+ gnu/linux*)
1288
+ kernel=linux
1289
+ os=`echo $basic_os | sed -e 's|gnu/linux|gnu|'`
1290
+ ;;
1291
+ nto-qnx*)
1292
+ kernel=nto
1293
+ os=`echo $basic_os | sed -e 's|nto-qnx|qnx|'`
1294
+ ;;
1295
+ *-*)
1296
+ # shellcheck disable=SC2162
1297
+ IFS="-" read kernel os <<EOF
1298
+ $basic_os
1299
+ EOF
1300
+ ;;
1301
+ # Default OS when just kernel was specified
1302
+ nto*)
1303
+ kernel=nto
1304
+ os=`echo $basic_os | sed -e 's|nto|qnx|'`
1305
+ ;;
1306
+ linux*)
1307
+ kernel=linux
1308
+ os=`echo $basic_os | sed -e 's|linux|gnu|'`
1374
1309
  ;;
1375
- -solaris1 | -solaris1.*)
1376
- os=`echo $os | sed -e 's|solaris1|sunos4|'`
1310
+ *)
1311
+ kernel=
1312
+ os=$basic_os
1377
1313
  ;;
1378
- -solaris)
1379
- os=-solaris2
1314
+ esac
1315
+
1316
+ # Now, normalize the OS (knowing we just have one component, it's not a kernel,
1317
+ # etc.)
1318
+ case $os in
1319
+ # First match some system type aliases that might get confused
1320
+ # with valid system types.
1321
+ # solaris* is a basic system type, with this one exception.
1322
+ auroraux)
1323
+ os=auroraux
1380
1324
  ;;
1381
- -svr4*)
1382
- os=-sysv4
1325
+ bluegene*)
1326
+ os=cnk
1383
1327
  ;;
1384
- -unixware*)
1385
- os=-sysv4.2uw
1328
+ solaris1 | solaris1.*)
1329
+ os=`echo $os | sed -e 's|solaris1|sunos4|'`
1386
1330
  ;;
1387
- -gnu/linux*)
1388
- os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
1331
+ solaris)
1332
+ os=solaris2
1389
1333
  ;;
1390
- # First accept the basic system types.
1391
- # The portable systems comes first.
1392
- # Each alternative MUST END IN A *, to match a version number.
1393
- # -sysv* is not here because it comes later, after sysvr4.
1394
- -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
1395
- | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
1396
- | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
1397
- | -sym* | -kopensolaris* | -plan9* \
1398
- | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
1399
- | -aos* | -aros* | -cloudabi* | -sortix* \
1400
- | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
1401
- | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
1402
- | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
1403
- | -bitrig* | -openbsd* | -solidbsd* | -libertybsd* \
1404
- | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
1405
- | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
1406
- | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
1407
- | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
1408
- | -chorusos* | -chorusrdb* | -cegcc* | -glidix* \
1409
- | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
1410
- | -midipix* | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
1411
- | -linux-newlib* | -linux-musl* | -linux-uclibc* \
1412
- | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \
1413
- | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
1414
- | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
1415
- | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
1416
- | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
1417
- | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
1418
- | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
1419
- | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* \
1420
- | -onefs* | -tirtos* | -phoenix* | -fuchsia* | -redox*)
1421
- # Remember, each alternative MUST END IN *, to match a version number.
1422
- ;;
1423
- -qnx*)
1424
- case $basic_machine in
1425
- x86-* | i*86-*)
1426
- ;;
1427
- *)
1428
- os=-nto$os
1429
- ;;
1430
- esac
1334
+ unixware*)
1335
+ os=sysv4.2uw
1431
1336
  ;;
1432
- -nto-qnx*)
1337
+ # es1800 is here to avoid being matched by es* (a different OS)
1338
+ es1800*)
1339
+ os=ose
1433
1340
  ;;
1434
- -nto*)
1435
- os=`echo $os | sed -e 's|nto|nto-qnx|'`
1341
+ # Some version numbers need modification
1342
+ chorusos*)
1343
+ os=chorusos
1436
1344
  ;;
1437
- -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
1438
- | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
1439
- | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
1345
+ isc)
1346
+ os=isc2.2
1440
1347
  ;;
1441
- -mac*)
1442
- os=`echo $os | sed -e 's|mac|macos|'`
1348
+ sco6)
1349
+ os=sco5v6
1443
1350
  ;;
1444
- -linux-dietlibc)
1445
- os=-linux-dietlibc
1351
+ sco5)
1352
+ os=sco3.2v5
1446
1353
  ;;
1447
- -linux*)
1448
- os=`echo $os | sed -e 's|linux|linux-gnu|'`
1354
+ sco4)
1355
+ os=sco3.2v4
1449
1356
  ;;
1450
- -sunos5*)
1451
- os=`echo $os | sed -e 's|sunos5|solaris2|'`
1357
+ sco3.2.[4-9]*)
1358
+ os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
1452
1359
  ;;
1453
- -sunos6*)
1454
- os=`echo $os | sed -e 's|sunos6|solaris3|'`
1360
+ sco*v* | scout)
1361
+ # Don't match below
1455
1362
  ;;
1456
- -opened*)
1457
- os=-openedition
1363
+ sco*)
1364
+ os=sco3.2v2
1458
1365
  ;;
1459
- -os400*)
1460
- os=-os400
1366
+ psos*)
1367
+ os=psos
1461
1368
  ;;
1462
- -wince*)
1463
- os=-wince
1369
+ qnx*)
1370
+ case $cpu in
1371
+ x86 | i*86)
1372
+ ;;
1373
+ *)
1374
+ os=nto-$os
1375
+ ;;
1376
+ esac
1464
1377
  ;;
1465
- -osfrose*)
1466
- os=-osfrose
1378
+ hiux*)
1379
+ os=hiuxwe2
1467
1380
  ;;
1468
- -osf*)
1469
- os=-osf
1381
+ lynx*178)
1382
+ os=lynxos178
1470
1383
  ;;
1471
- -utek*)
1472
- os=-bsd
1384
+ lynx*5)
1385
+ os=lynxos5
1473
1386
  ;;
1474
- -dynix*)
1475
- os=-bsd
1387
+ lynxos*)
1388
+ # don't get caught up in next wildcard
1476
1389
  ;;
1477
- -acis*)
1478
- os=-aos
1390
+ lynx*)
1391
+ os=lynxos
1479
1392
  ;;
1480
- -atheos*)
1481
- os=-atheos
1393
+ mac[0-9]*)
1394
+ os=`echo "$os" | sed -e 's|mac|macos|'`
1482
1395
  ;;
1483
- -syllable*)
1484
- os=-syllable
1396
+ opened*)
1397
+ os=openedition
1485
1398
  ;;
1486
- -386bsd)
1487
- os=-bsd
1399
+ os400*)
1400
+ os=os400
1488
1401
  ;;
1489
- -ctix* | -uts*)
1490
- os=-sysv
1402
+ sunos5*)
1403
+ os=`echo "$os" | sed -e 's|sunos5|solaris2|'`
1491
1404
  ;;
1492
- -nova*)
1493
- os=-rtmk-nova
1405
+ sunos6*)
1406
+ os=`echo "$os" | sed -e 's|sunos6|solaris3|'`
1494
1407
  ;;
1495
- -ns2 )
1496
- os=-nextstep2
1408
+ wince*)
1409
+ os=wince
1497
1410
  ;;
1498
- -nsk*)
1499
- os=-nsk
1411
+ utek*)
1412
+ os=bsd
1500
1413
  ;;
1501
- # Preserve the version number of sinix5.
1502
- -sinix5.*)
1503
- os=`echo $os | sed -e 's|sinix|sysv|'`
1414
+ dynix*)
1415
+ os=bsd
1504
1416
  ;;
1505
- -sinix*)
1506
- os=-sysv4
1417
+ acis*)
1418
+ os=aos
1507
1419
  ;;
1508
- -tpf*)
1509
- os=-tpf
1420
+ atheos*)
1421
+ os=atheos
1510
1422
  ;;
1511
- -triton*)
1512
- os=-sysv3
1423
+ syllable*)
1424
+ os=syllable
1513
1425
  ;;
1514
- -oss*)
1515
- os=-sysv3
1426
+ 386bsd)
1427
+ os=bsd
1516
1428
  ;;
1517
- -svr4)
1518
- os=-sysv4
1429
+ ctix* | uts*)
1430
+ os=sysv
1519
1431
  ;;
1520
- -svr3)
1521
- os=-sysv3
1432
+ nova*)
1433
+ os=rtmk-nova
1522
1434
  ;;
1523
- -sysvr4)
1524
- os=-sysv4
1435
+ ns2)
1436
+ os=nextstep2
1525
1437
  ;;
1526
- # This must come after -sysvr4.
1527
- -sysv*)
1438
+ # Preserve the version number of sinix5.
1439
+ sinix5.*)
1440
+ os=`echo $os | sed -e 's|sinix|sysv|'`
1528
1441
  ;;
1529
- -ose*)
1530
- os=-ose
1442
+ sinix*)
1443
+ os=sysv4
1531
1444
  ;;
1532
- -es1800*)
1533
- os=-ose
1445
+ tpf*)
1446
+ os=tpf
1534
1447
  ;;
1535
- -xenix)
1536
- os=-xenix
1448
+ triton*)
1449
+ os=sysv3
1537
1450
  ;;
1538
- -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
1539
- os=-mint
1451
+ oss*)
1452
+ os=sysv3
1540
1453
  ;;
1541
- -aros*)
1542
- os=-aros
1454
+ svr4*)
1455
+ os=sysv4
1543
1456
  ;;
1544
- -zvmoe)
1545
- os=-zvmoe
1457
+ svr3)
1458
+ os=sysv3
1546
1459
  ;;
1547
- -dicos*)
1548
- os=-dicos
1460
+ sysvr4)
1461
+ os=sysv4
1549
1462
  ;;
1550
- -nacl*)
1463
+ ose*)
1464
+ os=ose
1551
1465
  ;;
1552
- -ios)
1466
+ *mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
1467
+ os=mint
1553
1468
  ;;
1554
- -none)
1469
+ dicos*)
1470
+ os=dicos
1471
+ ;;
1472
+ pikeos*)
1473
+ # Until real need of OS specific support for
1474
+ # particular features comes up, bare metal
1475
+ # configurations are quite functional.
1476
+ case $cpu in
1477
+ arm*)
1478
+ os=eabi
1479
+ ;;
1480
+ *)
1481
+ os=elf
1482
+ ;;
1483
+ esac
1555
1484
  ;;
1556
1485
  *)
1557
- # Get rid of the `-' at the beginning of $os.
1558
- os=`echo $os | sed 's/[^-]*-//'`
1559
- echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
1560
- exit 1
1486
+ # No normalization, but not necessarily accepted, that comes below.
1561
1487
  ;;
1562
1488
  esac
1489
+
1563
1490
  else
1564
1491
 
1565
1492
  # Here we handle the default operating systems that come with various machines.
@@ -1572,264 +1499,352 @@ else
1572
1499
  # will signal an error saying that MANUFACTURER isn't an operating
1573
1500
  # system, and we'll never get to this point.
1574
1501
 
1575
- case $basic_machine in
1502
+ kernel=
1503
+ case $cpu-$vendor in
1576
1504
  score-*)
1577
- os=-elf
1505
+ os=elf
1578
1506
  ;;
1579
1507
  spu-*)
1580
- os=-elf
1508
+ os=elf
1581
1509
  ;;
1582
1510
  *-acorn)
1583
- os=-riscix1.2
1511
+ os=riscix1.2
1584
1512
  ;;
1585
1513
  arm*-rebel)
1586
- os=-linux
1514
+ kernel=linux
1515
+ os=gnu
1587
1516
  ;;
1588
1517
  arm*-semi)
1589
- os=-aout
1518
+ os=aout
1590
1519
  ;;
1591
1520
  c4x-* | tic4x-*)
1592
- os=-coff
1521
+ os=coff
1593
1522
  ;;
1594
1523
  c8051-*)
1595
- os=-elf
1524
+ os=elf
1525
+ ;;
1526
+ clipper-intergraph)
1527
+ os=clix
1596
1528
  ;;
1597
1529
  hexagon-*)
1598
- os=-elf
1530
+ os=elf
1599
1531
  ;;
1600
1532
  tic54x-*)
1601
- os=-coff
1533
+ os=coff
1602
1534
  ;;
1603
1535
  tic55x-*)
1604
- os=-coff
1536
+ os=coff
1605
1537
  ;;
1606
1538
  tic6x-*)
1607
- os=-coff
1539
+ os=coff
1608
1540
  ;;
1609
1541
  # This must come before the *-dec entry.
1610
1542
  pdp10-*)
1611
- os=-tops20
1543
+ os=tops20
1612
1544
  ;;
1613
1545
  pdp11-*)
1614
- os=-none
1546
+ os=none
1615
1547
  ;;
1616
1548
  *-dec | vax-*)
1617
- os=-ultrix4.2
1549
+ os=ultrix4.2
1618
1550
  ;;
1619
1551
  m68*-apollo)
1620
- os=-domain
1552
+ os=domain
1621
1553
  ;;
1622
1554
  i386-sun)
1623
- os=-sunos4.0.2
1555
+ os=sunos4.0.2
1624
1556
  ;;
1625
1557
  m68000-sun)
1626
- os=-sunos3
1558
+ os=sunos3
1627
1559
  ;;
1628
1560
  m68*-cisco)
1629
- os=-aout
1561
+ os=aout
1630
1562
  ;;
1631
1563
  mep-*)
1632
- os=-elf
1564
+ os=elf
1633
1565
  ;;
1634
1566
  mips*-cisco)
1635
- os=-elf
1567
+ os=elf
1636
1568
  ;;
1637
1569
  mips*-*)
1638
- os=-elf
1570
+ os=elf
1639
1571
  ;;
1640
1572
  or32-*)
1641
- os=-coff
1573
+ os=coff
1642
1574
  ;;
1643
1575
  *-tti) # must be before sparc entry or we get the wrong os.
1644
- os=-sysv3
1576
+ os=sysv3
1645
1577
  ;;
1646
1578
  sparc-* | *-sun)
1647
- os=-sunos4.1.1
1579
+ os=sunos4.1.1
1648
1580
  ;;
1649
1581
  pru-*)
1650
- os=-elf
1582
+ os=elf
1651
1583
  ;;
1652
1584
  *-be)
1653
- os=-beos
1654
- ;;
1655
- *-haiku)
1656
- os=-haiku
1585
+ os=beos
1657
1586
  ;;
1658
1587
  *-ibm)
1659
- os=-aix
1588
+ os=aix
1660
1589
  ;;
1661
1590
  *-knuth)
1662
- os=-mmixware
1591
+ os=mmixware
1663
1592
  ;;
1664
1593
  *-wec)
1665
- os=-proelf
1594
+ os=proelf
1666
1595
  ;;
1667
1596
  *-winbond)
1668
- os=-proelf
1597
+ os=proelf
1669
1598
  ;;
1670
1599
  *-oki)
1671
- os=-proelf
1600
+ os=proelf
1672
1601
  ;;
1673
1602
  *-hp)
1674
- os=-hpux
1603
+ os=hpux
1675
1604
  ;;
1676
1605
  *-hitachi)
1677
- os=-hiux
1606
+ os=hiux
1678
1607
  ;;
1679
1608
  i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
1680
- os=-sysv
1609
+ os=sysv
1681
1610
  ;;
1682
1611
  *-cbm)
1683
- os=-amigaos
1612
+ os=amigaos
1684
1613
  ;;
1685
1614
  *-dg)
1686
- os=-dgux
1615
+ os=dgux
1687
1616
  ;;
1688
1617
  *-dolphin)
1689
- os=-sysv3
1618
+ os=sysv3
1690
1619
  ;;
1691
1620
  m68k-ccur)
1692
- os=-rtu
1621
+ os=rtu
1693
1622
  ;;
1694
1623
  m88k-omron*)
1695
- os=-luna
1624
+ os=luna
1696
1625
  ;;
1697
- *-next )
1698
- os=-nextstep
1626
+ *-next)
1627
+ os=nextstep
1699
1628
  ;;
1700
1629
  *-sequent)
1701
- os=-ptx
1630
+ os=ptx
1702
1631
  ;;
1703
1632
  *-crds)
1704
- os=-unos
1633
+ os=unos
1705
1634
  ;;
1706
1635
  *-ns)
1707
- os=-genix
1636
+ os=genix
1708
1637
  ;;
1709
1638
  i370-*)
1710
- os=-mvs
1711
- ;;
1712
- *-next)
1713
- os=-nextstep3
1639
+ os=mvs
1714
1640
  ;;
1715
1641
  *-gould)
1716
- os=-sysv
1642
+ os=sysv
1717
1643
  ;;
1718
1644
  *-highlevel)
1719
- os=-bsd
1645
+ os=bsd
1720
1646
  ;;
1721
1647
  *-encore)
1722
- os=-bsd
1648
+ os=bsd
1723
1649
  ;;
1724
1650
  *-sgi)
1725
- os=-irix
1651
+ os=irix
1726
1652
  ;;
1727
1653
  *-siemens)
1728
- os=-sysv4
1654
+ os=sysv4
1729
1655
  ;;
1730
1656
  *-masscomp)
1731
- os=-rtu
1657
+ os=rtu
1732
1658
  ;;
1733
1659
  f30[01]-fujitsu | f700-fujitsu)
1734
- os=-uxpv
1660
+ os=uxpv
1735
1661
  ;;
1736
1662
  *-rom68k)
1737
- os=-coff
1663
+ os=coff
1738
1664
  ;;
1739
1665
  *-*bug)
1740
- os=-coff
1666
+ os=coff
1741
1667
  ;;
1742
1668
  *-apple)
1743
- os=-macos
1669
+ os=macos
1744
1670
  ;;
1745
1671
  *-atari*)
1746
- os=-mint
1672
+ os=mint
1673
+ ;;
1674
+ *-wrs)
1675
+ os=vxworks
1747
1676
  ;;
1748
1677
  *)
1749
- os=-none
1678
+ os=none
1750
1679
  ;;
1751
1680
  esac
1681
+
1752
1682
  fi
1753
1683
 
1684
+ # Now, validate our (potentially fixed-up) OS.
1685
+ case $os in
1686
+ # Sometimes we do "kernel-abi", so those need to count as OSes.
1687
+ musl* | newlib* | uclibc*)
1688
+ ;;
1689
+ # Likewise for "kernel-libc"
1690
+ eabi | eabisim | eabihf | gnueabi | gnueabihf)
1691
+ ;;
1692
+ # Now accept the basic system types.
1693
+ # The portable systems comes first.
1694
+ # Each alternative MUST end in a * to match a version number.
1695
+ gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \
1696
+ | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \
1697
+ | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \
1698
+ | sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \
1699
+ | hiux* | abug | nacl* | netware* | windows* \
1700
+ | os9* | macos* | osx* | ios* \
1701
+ | mpw* | magic* | mmixware* | mon960* | lnews* \
1702
+ | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
1703
+ | aos* | aros* | cloudabi* | sortix* | twizzler* \
1704
+ | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
1705
+ | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \
1706
+ | mirbsd* | netbsd* | dicos* | openedition* | ose* \
1707
+ | bitrig* | openbsd* | solidbsd* | libertybsd* | os108* \
1708
+ | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \
1709
+ | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \
1710
+ | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \
1711
+ | udi* | lites* | ieee* | go32* | aux* | hcos* \
1712
+ | chorusrdb* | cegcc* | glidix* \
1713
+ | cygwin* | msys* | pe* | moss* | proelf* | rtems* \
1714
+ | midipix* | mingw32* | mingw64* | mint* \
1715
+ | uxpv* | beos* | mpeix* | udk* | moxiebox* \
1716
+ | interix* | uwin* | mks* | rhapsody* | darwin* \
1717
+ | openstep* | oskit* | conix* | pw32* | nonstopux* \
1718
+ | storm-chaos* | tops10* | tenex* | tops20* | its* \
1719
+ | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \
1720
+ | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \
1721
+ | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \
1722
+ | skyos* | haiku* | rdos* | toppers* | drops* | es* \
1723
+ | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
1724
+ | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \
1725
+ | nsk* | powerunix* | genode* | zvmoe* )
1726
+ ;;
1727
+ # This one is extra strict with allowed versions
1728
+ sco3.2v2 | sco3.2v[4-9]* | sco5v6*)
1729
+ # Don't forget version if it is 3.2v4 or newer.
1730
+ ;;
1731
+ none)
1732
+ ;;
1733
+ *)
1734
+ echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2
1735
+ exit 1
1736
+ ;;
1737
+ esac
1738
+
1739
+ # As a final step for OS-related things, validate the OS-kernel combination
1740
+ # (given a valid OS), if there is a kernel.
1741
+ case $kernel-$os in
1742
+ linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* | linux-musl* | linux-uclibc* )
1743
+ ;;
1744
+ -dietlibc* | -newlib* | -musl* | -uclibc* )
1745
+ # These are just libc implementations, not actual OSes, and thus
1746
+ # require a kernel.
1747
+ echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2
1748
+ exit 1
1749
+ ;;
1750
+ kfreebsd*-gnu* | kopensolaris*-gnu*)
1751
+ ;;
1752
+ nto-qnx*)
1753
+ ;;
1754
+ *-eabi* | *-gnueabi*)
1755
+ ;;
1756
+ -*)
1757
+ # Blank kernel with real OS is always fine.
1758
+ ;;
1759
+ *-*)
1760
+ echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2
1761
+ exit 1
1762
+ ;;
1763
+ esac
1764
+
1754
1765
  # Here we handle the case where we know the os, and the CPU type, but not the
1755
1766
  # manufacturer. We pick the logical manufacturer.
1756
- vendor=unknown
1757
- case $basic_machine in
1758
- *-unknown)
1759
- case $os in
1760
- -riscix*)
1767
+ case $vendor in
1768
+ unknown)
1769
+ case $cpu-$os in
1770
+ *-riscix*)
1761
1771
  vendor=acorn
1762
1772
  ;;
1763
- -sunos*)
1773
+ *-sunos*)
1764
1774
  vendor=sun
1765
1775
  ;;
1766
- -cnk*|-aix*)
1776
+ *-cnk* | *-aix*)
1767
1777
  vendor=ibm
1768
1778
  ;;
1769
- -beos*)
1779
+ *-beos*)
1770
1780
  vendor=be
1771
1781
  ;;
1772
- -hpux*)
1782
+ *-hpux*)
1773
1783
  vendor=hp
1774
1784
  ;;
1775
- -mpeix*)
1785
+ *-mpeix*)
1776
1786
  vendor=hp
1777
1787
  ;;
1778
- -hiux*)
1788
+ *-hiux*)
1779
1789
  vendor=hitachi
1780
1790
  ;;
1781
- -unos*)
1791
+ *-unos*)
1782
1792
  vendor=crds
1783
1793
  ;;
1784
- -dgux*)
1794
+ *-dgux*)
1785
1795
  vendor=dg
1786
1796
  ;;
1787
- -luna*)
1797
+ *-luna*)
1788
1798
  vendor=omron
1789
1799
  ;;
1790
- -genix*)
1800
+ *-genix*)
1791
1801
  vendor=ns
1792
1802
  ;;
1793
- -mvs* | -opened*)
1803
+ *-clix*)
1804
+ vendor=intergraph
1805
+ ;;
1806
+ *-mvs* | *-opened*)
1807
+ vendor=ibm
1808
+ ;;
1809
+ *-os400*)
1794
1810
  vendor=ibm
1795
1811
  ;;
1796
- -os400*)
1812
+ s390-* | s390x-*)
1797
1813
  vendor=ibm
1798
1814
  ;;
1799
- -ptx*)
1815
+ *-ptx*)
1800
1816
  vendor=sequent
1801
1817
  ;;
1802
- -tpf*)
1818
+ *-tpf*)
1803
1819
  vendor=ibm
1804
1820
  ;;
1805
- -vxsim* | -vxworks* | -windiss*)
1821
+ *-vxsim* | *-vxworks* | *-windiss*)
1806
1822
  vendor=wrs
1807
1823
  ;;
1808
- -aux*)
1824
+ *-aux*)
1809
1825
  vendor=apple
1810
1826
  ;;
1811
- -hms*)
1827
+ *-hms*)
1812
1828
  vendor=hitachi
1813
1829
  ;;
1814
- -mpw* | -macos*)
1830
+ *-mpw* | *-macos*)
1815
1831
  vendor=apple
1816
1832
  ;;
1817
- -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
1833
+ *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*)
1818
1834
  vendor=atari
1819
1835
  ;;
1820
- -vos*)
1836
+ *-vos*)
1821
1837
  vendor=stratus
1822
1838
  ;;
1823
1839
  esac
1824
- basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
1825
1840
  ;;
1826
1841
  esac
1827
1842
 
1828
- echo $basic_machine$os
1843
+ echo "$cpu-$vendor-${kernel:+$kernel-}$os"
1829
1844
  exit
1830
1845
 
1831
1846
  # Local variables:
1832
- # eval: (add-hook 'write-file-hooks 'time-stamp)
1847
+ # eval: (add-hook 'before-save-hook 'time-stamp)
1833
1848
  # time-stamp-start: "timestamp='"
1834
1849
  # time-stamp-format: "%:y-%02m-%02d"
1835
1850
  # time-stamp-end: "'"