Skip to content

Commit 5ce8a5f

Browse files
committed
Calculate Rust target from Misc/platform_triplet.c
1 parent 025f3fc commit 5ce8a5f

File tree

3 files changed

+112
-46
lines changed

3 files changed

+112
-46
lines changed

Misc/platform_triplet.c

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
/* Detect platform triplet from builtin defines
22
* cc -E Misc/platform_triplet.c | grep '^PLATFORM_TRIPLET=' | tr -d ' '
3+
*
4+
* Also detects the closest Rust target triple for cargo/rustc:
5+
* cc -E Misc/platform_triplet.c | grep '^RUST_TARGET=' | tr -d ' '
36
*/
47
#undef bfin
58
#undef cris
@@ -16,12 +19,16 @@
1619
#if defined(__ANDROID__)
1720
# if defined(__x86_64__)
1821
PLATFORM_TRIPLET=x86_64-linux-android
22+
RUST_TARGET=x86_64-linux-android
1923
# elif defined(__i386__)
2024
PLATFORM_TRIPLET=i686-linux-android
25+
RUST_TARGET=i686-linux-android
2126
# elif defined(__aarch64__)
2227
PLATFORM_TRIPLET=aarch64-linux-android
28+
RUST_TARGET=aarch64-linux-android
2329
# elif defined(__arm__)
2430
PLATFORM_TRIPLET=arm-linux-androideabi
31+
RUST_TARGET=arm-linux-androideabi
2532
# else
2633
# error unknown Android platform
2734
# endif
@@ -39,18 +46,25 @@ PLATFORM_TRIPLET=arm-linux-androideabi
3946
# elif defined(__GLIBC__)
4047
# define LIBC gnu
4148
# define LIBC_X32 gnux32
49+
# define RUST_LIBC gnu
50+
# define RUST_LIBC_X32 gnux32
4251
# if defined(__ARM_PCS_VFP)
4352
# define LIBC_ARM gnueabihf
53+
# define RUST_LIBC_ARM gnueabihf
4454
# else
4555
# define LIBC_ARM gnueabi
56+
# define RUST_LIBC_ARM gnueabi
4657
# endif
4758
# if defined(__loongarch__)
4859
# if defined(__loongarch_soft_float)
4960
# define LIBC_LA gnusf
61+
# define RUST_LIBC_LA unknown
5062
# elif defined(__loongarch_single_float)
5163
# define LIBC_LA gnuf32
64+
# define RUST_LIBC_LA unknown
5265
# elif defined(__loongarch_double_float)
5366
# define LIBC_LA gnu
67+
# define RUST_LIBC_LA gnu
5468
# else
5569
# error unknown loongarch floating-point base abi
5670
# endif
@@ -59,48 +73,63 @@ PLATFORM_TRIPLET=arm-linux-androideabi
5973
# if defined(__mips_hard_float)
6074
# if defined(_ABIO32) && _MIPS_SIM == _ABIO32
6175
# define LIBC_MIPS gnu
76+
# define RUST_LIBC_MIPS gnu
6277
# elif defined(_ABIN32) && _MIPS_SIM == _ABIN32
6378
# define LIBC_MIPS gnuabin32
79+
# define RUST_LIBC_MIPS unknown
6480
# elif defined(_ABI64) && _MIPS_SIM == _ABI64
6581
# define LIBC_MIPS gnuabi64
82+
# define RUST_LIBC_MIPS gnuabi64
6683
# else
6784
# error unknown mips sim value
6885
# endif
6986
# else
7087
# if defined(_ABIO32) && _MIPS_SIM == _ABIO32
7188
# define LIBC_MIPS gnusf
89+
# define RUST_LIBC_MIPS unknown
7290
# elif defined(_ABIN32) && _MIPS_SIM == _ABIN32
7391
# define LIBC_MIPS gnuabin32sf
92+
# define RUST_LIBC_MIPS unknown
7493
# elif defined(_ABI64) && _MIPS_SIM == _ABI64
7594
# define LIBC_MIPS gnuabi64sf
95+
# define RUST_LIBC_MIPS unknown
7696
# else
7797
# error unknown mips sim value
7898
# endif
7999
# endif
80100
# endif
81101
# if defined(__SPE__)
82102
# define LIBC_PPC gnuspe
103+
# define RUST_LIBC_PPC gnuspe
83104
# else
84105
# define LIBC_PPC gnu
106+
# define RUST_LIBC_PPC gnu
85107
# endif
86108
# else
87109
// Heuristic to detect musl libc
88110
# include <stdarg.h>
89111
# ifdef __DEFINED_va_list
90112
# define LIBC musl
91113
# define LIBC_X32 muslx32
114+
# define RUST_LIBC musl
115+
# define RUST_LIBC_X32 unknown
92116
# if defined(__ARM_PCS_VFP)
93117
# define LIBC_ARM musleabihf
118+
# define RUST_LIBC_ARM musleabihf
94119
# else
95120
# define LIBC_ARM musleabi
121+
# define RUST_LIBC_ARM musleabi
96122
# endif
97123
# if defined(__loongarch__)
98124
# if defined(__loongarch_soft_float)
99125
# define LIBC_LA muslsf
126+
# define RUST_LIBC_LA unknown
100127
# elif defined(__loongarch_single_float)
101128
# define LIBC_LA muslf32
129+
# define RUST_LIBC_LA unknown
102130
# elif defined(__loongarch_double_float)
103131
# define LIBC_LA musl
132+
# define RUST_LIBC_LA musl
104133
# else
105134
# error unknown loongarch floating-point base abi
106135
# endif
@@ -109,29 +138,37 @@ PLATFORM_TRIPLET=arm-linux-androideabi
109138
# if defined(__mips_hard_float)
110139
# if defined(_ABIO32) && _MIPS_SIM == _ABIO32
111140
# define LIBC_MIPS musl
141+
# define RUST_LIBC_MIPS musl
112142
# elif defined(_ABIN32) && _MIPS_SIM == _ABIN32
113143
# define LIBC_MIPS musln32
144+
# define RUST_LIBC_MIPS unknown
114145
# elif defined(_ABI64) && _MIPS_SIM == _ABI64
115146
# define LIBC_MIPS musl
147+
# define RUST_LIBC_MIPS muslabi64
116148
# else
117149
# error unknown mips sim value
118150
# endif
119151
# else
120152
# if defined(_ABIO32) && _MIPS_SIM == _ABIO32
121153
# define LIBC_MIPS muslsf
154+
# define RUST_LIBC_MIPS unknown
122155
# elif defined(_ABIN32) && _MIPS_SIM == _ABIN32
123156
# define LIBC_MIPS musln32sf
157+
# define RUST_LIBC_MIPS unknown
124158
# elif defined(_ABI64) && _MIPS_SIM == _ABI64
125159
# define LIBC_MIPS muslsf
160+
# define RUST_LIBC_MIPS unknown
126161
# else
127162
# error unknown mips sim value
128163
# endif
129164
# endif
130165
# endif
131166
# if defined(_SOFT_FLOAT) || defined(__NO_FPRS__)
132167
# define LIBC_PPC muslsf
168+
# define RUST_LIBC_PPC unknown
133169
# else
134170
# define LIBC_PPC musl
171+
# define RUST_LIBC_PPC musl
135172
# endif
136173
# else
137174
# error unknown libc
@@ -140,85 +177,118 @@ PLATFORM_TRIPLET=arm-linux-androideabi
140177

141178
# if defined(__x86_64__) && defined(__LP64__)
142179
PLATFORM_TRIPLET=x86_64-linux-LIBC
180+
RUST_TARGET=x86_64-unknown-linux-RUST_LIBC
143181
# elif defined(__x86_64__) && defined(__ILP32__)
144182
PLATFORM_TRIPLET=x86_64-linux-LIBC_X32
183+
RUST_TARGET=x86_64-unknown-linux-RUST_LIBC_X32
145184
# elif defined(__i386__)
146185
PLATFORM_TRIPLET=i386-linux-LIBC
186+
RUST_TARGET=i686-unknown-linux-RUST_LIBC
147187
# elif defined(__aarch64__) && defined(__AARCH64EL__)
148188
# if defined(__ILP32__)
149189
PLATFORM_TRIPLET=aarch64_ilp32-linux-LIBC
190+
RUST_TARGET=unknown
150191
# else
151192
PLATFORM_TRIPLET=aarch64-linux-LIBC
193+
RUST_TARGET=aarch64-unknown-linux-RUST_LIBC
152194
# endif
153195
# elif defined(__aarch64__) && defined(__AARCH64EB__)
154196
# if defined(__ILP32__)
155197
PLATFORM_TRIPLET=aarch64_be_ilp32-linux-LIBC
198+
RUST_TARGET=unknown
156199
# else
157200
PLATFORM_TRIPLET=aarch64_be-linux-LIBC
201+
RUST_TARGET=aarch64_be-unknown-linux-RUST_LIBC
158202
# endif
159203
# elif defined(__alpha__)
160204
PLATFORM_TRIPLET=alpha-linux-LIBC
205+
RUST_TARGET=unknown
161206
# elif defined(__ARM_EABI__)
162207
# if defined(__ARMEL__)
163208
PLATFORM_TRIPLET=arm-linux-LIBC_ARM
209+
RUST_TARGET=arm-unknown-linux-RUST_LIBC_ARM
164210
# else
165211
PLATFORM_TRIPLET=armeb-linux-LIBC_ARM
212+
RUST_TARGET=armeb-unknown-linux-RUST_LIBC_ARM
166213
# endif
167214
# elif defined(__hppa__)
168215
PLATFORM_TRIPLET=hppa-linux-LIBC
216+
RUST_TARGET=unknown
169217
# elif defined(__ia64__)
170218
PLATFORM_TRIPLET=ia64-linux-LIBC
219+
RUST_TARGET=unknown
171220
# elif defined(__loongarch__) && defined(__loongarch_lp64)
172221
PLATFORM_TRIPLET=loongarch64-linux-LIBC_LA
222+
RUST_TARGET=loongarch64-unknown-linux-RUST_LIBC_LA
173223
# elif defined(__m68k__) && !defined(__mcoldfire__)
174224
PLATFORM_TRIPLET=m68k-linux-LIBC
225+
RUST_TARGET=m68k-unknown-linux-RUST_LIBC
175226
# elif defined(__mips__)
176227
# if defined(__mips_isa_rev) && (__mips_isa_rev >=6)
177228
# if defined(_MIPSEL) && defined(__mips64)
178229
PLATFORM_TRIPLET=mipsisa64r6el-linux-LIBC_MIPS
230+
RUST_TARGET=mipsisa64r6el-unknown-linux-RUST_LIBC_MIPS
179231
# elif defined(_MIPSEL)
180232
PLATFORM_TRIPLET=mipsisa32r6el-linux-LIBC_MIPS
233+
RUST_TARGET=mipsisa32r6el-unknown-linux-RUST_LIBC_MIPS
181234
# elif defined(__mips64)
182235
PLATFORM_TRIPLET=mipsisa64r6-linux-LIBC_MIPS
236+
RUST_TARGET=mipsisa64r6-unknown-linux-RUST_LIBC_MIPS
183237
# else
184238
PLATFORM_TRIPLET=mipsisa32r6-linux-LIBC_MIPS
239+
RUST_TARGET=mipsisa32r6-unknown-linux-RUST_LIBC_MIPS
185240
# endif
186241
# else
187242
# if defined(_MIPSEL) && defined(__mips64)
188243
PLATFORM_TRIPLET=mips64el-linux-LIBC_MIPS
244+
RUST_TARGET=mips64el-unknown-linux-RUST_LIBC_MIPS
189245
# elif defined(_MIPSEL)
190246
PLATFORM_TRIPLET=mipsel-linux-LIBC_MIPS
247+
RUST_TARGET=mipsel-unknown-linux-RUST_LIBC_MIPS
191248
# elif defined(__mips64)
192249
PLATFORM_TRIPLET=mips64-linux-LIBC_MIPS
250+
RUST_TARGET=mips64-unknown-linux-RUST_LIBC_MIPS
193251
# else
194252
PLATFORM_TRIPLET=mips-linux-LIBC_MIPS
253+
RUST_TARGET=mips-unknown-linux-RUST_LIBC_MIPS
195254
# endif
196255
# endif
197256
# elif defined(__or1k__)
198257
PLATFORM_TRIPLET=or1k-linux-LIBC
258+
RUST_TARGET=unknown
199259
# elif defined(__powerpc64__)
200260
# if defined(__LITTLE_ENDIAN__)
201261
PLATFORM_TRIPLET=powerpc64le-linux-LIBC
262+
RUST_TARGET=powerpc64le-unknown-linux-RUST_LIBC
202263
# else
203264
PLATFORM_TRIPLET=powerpc64-linux-LIBC
265+
RUST_TARGET=powerpc64-unknown-linux-RUST_LIBC
204266
# endif
205267
# elif defined(__powerpc__)
206268
PLATFORM_TRIPLET=powerpc-linux-LIBC_PPC
269+
RUST_TARGET=powerpc-unknown-linux-RUST_LIBC_PPC
207270
# elif defined(__s390x__)
208271
PLATFORM_TRIPLET=s390x-linux-LIBC
272+
RUST_TARGET=s390x-unknown-linux-RUST_LIBC
209273
# elif defined(__s390__)
210274
PLATFORM_TRIPLET=s390-linux-LIBC
275+
RUST_TARGET=unknown
211276
# elif defined(__sh__) && defined(__LITTLE_ENDIAN__)
212277
PLATFORM_TRIPLET=sh4-linux-LIBC
278+
RUST_TARGET=unknown
213279
# elif defined(__sparc__) && defined(__arch64__)
214280
PLATFORM_TRIPLET=sparc64-linux-LIBC
281+
RUST_TARGET=sparc64-unknown-linux-RUST_LIBC
215282
# elif defined(__sparc__)
216283
PLATFORM_TRIPLET=sparc-linux-LIBC
284+
RUST_TARGET=sparc-unknown-linux-RUST_LIBC
217285
# elif defined(__riscv)
218286
# if __riscv_xlen == 32
219287
PLATFORM_TRIPLET=riscv32-linux-LIBC
288+
RUST_TARGET=riscv32gc-unknown-linux-RUST_LIBC
220289
# elif __riscv_xlen == 64
221290
PLATFORM_TRIPLET=riscv64-linux-LIBC
291+
RUST_TARGET=riscv64gc-unknown-linux-RUST_LIBC
222292
# else
223293
# error unknown platform triplet
224294
# endif
@@ -231,16 +301,20 @@ PLATFORM_TRIPLET=riscv64-linux-LIBC
231301
#elif defined(__FreeBSD_kernel__)
232302
# if defined(__LP64__)
233303
PLATFORM_TRIPLET=x86_64-kfreebsd-gnu
304+
RUST_TARGET=unknown
234305
# elif defined(__i386__)
235306
PLATFORM_TRIPLET=i386-kfreebsd-gnu
307+
RUST_TARGET=unknown
236308
# else
237309
# error unknown platform triplet
238310
# endif
239311
#elif defined(__gnu_hurd__)
240312
# if defined(__x86_64__) && defined(__LP64__)
241313
PLATFORM_TRIPLET=x86_64-gnu
314+
RUST_TARGET=x86_64-unknown-hurd-gnu
242315
# elif defined(__i386__)
243316
PLATFORM_TRIPLET=i386-gnu
317+
RUST_TARGET=i686-unknown-hurd-gnu
244318
# else
245319
# error unknown platform triplet
246320
# endif
@@ -251,37 +325,53 @@ PLATFORM_TRIPLET=i386-gnu
251325
# if defined(TARGET_OS_SIMULATOR) && TARGET_OS_SIMULATOR
252326
# if __x86_64__
253327
PLATFORM_TRIPLET=x86_64-iphonesimulator
328+
RUST_TARGET=x86_64-apple-ios
254329
# else
255330
PLATFORM_TRIPLET=arm64-iphonesimulator
331+
RUST_TARGET=aarch64-apple-ios-sim
256332
# endif
257333
# else
258334
PLATFORM_TRIPLET=arm64-iphoneos
335+
RUST_TARGET=aarch64-apple-ios
259336
# endif
260337
// Older macOS SDKs do not define TARGET_OS_OSX
261338
# elif !defined(TARGET_OS_OSX) || TARGET_OS_OSX
262339
PLATFORM_TRIPLET=darwin
340+
# if defined(__x86_64__)
341+
RUST_TARGET=x86_64-apple-darwin
342+
# elif defined(__aarch64__)
343+
RUST_TARGET=aarch64-apple-darwin
344+
# else
345+
RUST_TARGET=unknown
346+
# endif
263347
# else
264348
# error unknown Apple platform
265349
# endif
266350
#elif defined(__VXWORKS__)
267351
PLATFORM_TRIPLET=vxworks
352+
RUST_TARGET=unknown
268353
#elif defined(__wasm32__)
269354
# if defined(__EMSCRIPTEN__)
270355
PLATFORM_TRIPLET=wasm32-emscripten
356+
RUST_TARGET=wasm32-unknown-emscripten
271357
# elif defined(__wasi__)
272358
# if defined(_REENTRANT)
273359
PLATFORM_TRIPLET=wasm32-wasi-threads
360+
RUST_TARGET=wasm32-wasip1-threads
274361
# else
275362
PLATFORM_TRIPLET=wasm32-wasi
363+
RUST_TARGET=wasm32-wasip1
276364
# endif
277365
# else
278366
# error unknown wasm32 platform
279367
# endif
280368
#elif defined(__wasm64__)
281369
# if defined(__EMSCRIPTEN__)
282370
PLATFORM_TRIPLET=wasm64-emscripten
371+
RUST_TARGET=unknown
283372
# elif defined(__wasi__)
284373
PLATFORM_TRIPLET=wasm64-wasi
374+
RUST_TARGET=unknown
285375
# else
286376
# error unknown wasm64 platform
287377
# endif

configure

Lines changed: 11 additions & 23 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)