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
1619#if defined(__ANDROID__ )
1720# if defined(__x86_64__ )
1821PLATFORM_TRIPLET = x86_64 - linux - android
22+ RUST_TARGET = x86_64 - linux - android
1923# elif defined(__i386__ )
2024PLATFORM_TRIPLET = i686 - linux - android
25+ RUST_TARGET = i686 - linux - android
2126# elif defined(__aarch64__ )
2227PLATFORM_TRIPLET = aarch64 - linux - android
28+ RUST_TARGET = aarch64 - linux - android
2329# elif defined(__arm__ )
2430PLATFORM_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__ )
142179PLATFORM_TRIPLET = x86_64 - linux - LIBC
180+ RUST_TARGET = x86_64 - unknown - linux - RUST_LIBC
143181# elif defined(__x86_64__ ) && defined(__ILP32__ )
144182PLATFORM_TRIPLET = x86_64 - linux - LIBC_X32
183+ RUST_TARGET = x86_64 - unknown - linux - RUST_LIBC_X32
145184# elif defined(__i386__ )
146185PLATFORM_TRIPLET = i386 - linux - LIBC
186+ RUST_TARGET = i686 - unknown - linux - RUST_LIBC
147187# elif defined(__aarch64__ ) && defined(__AARCH64EL__ )
148188# if defined(__ILP32__ )
149189PLATFORM_TRIPLET = aarch64_ilp32 - linux - LIBC
190+ RUST_TARGET = unknown
150191# else
151192PLATFORM_TRIPLET = aarch64 - linux - LIBC
193+ RUST_TARGET = aarch64 - unknown - linux - RUST_LIBC
152194# endif
153195# elif defined(__aarch64__ ) && defined (__AARCH64EB__ )
154196# if defined(__ILP32__ )
155197PLATFORM_TRIPLET = aarch64_be_ilp32 - linux - LIBC
198+ RUST_TARGET = unknown
156199# else
157200PLATFORM_TRIPLET = aarch64_be - linux - LIBC
201+ RUST_TARGET = aarch64_be - unknown - linux - RUST_LIBC
158202# endif
159203# elif defined(__alpha__ )
160204PLATFORM_TRIPLET = alpha - linux - LIBC
205+ RUST_TARGET = unknown
161206# elif defined(__ARM_EABI__ )
162207# if defined(__ARMEL__ )
163208PLATFORM_TRIPLET = arm - linux - LIBC_ARM
209+ RUST_TARGET = arm - unknown - linux - RUST_LIBC_ARM
164210# else
165211PLATFORM_TRIPLET = armeb - linux - LIBC_ARM
212+ RUST_TARGET = armeb - unknown - linux - RUST_LIBC_ARM
166213# endif
167214# elif defined(__hppa__ )
168215PLATFORM_TRIPLET = hppa - linux - LIBC
216+ RUST_TARGET = unknown
169217# elif defined(__ia64__ )
170218PLATFORM_TRIPLET = ia64 - linux - LIBC
219+ RUST_TARGET = unknown
171220# elif defined(__loongarch__ ) && defined (__loongarch_lp64 )
172221PLATFORM_TRIPLET = loongarch64 - linux - LIBC_LA
222+ RUST_TARGET = loongarch64 - unknown - linux - RUST_LIBC_LA
173223# elif defined(__m68k__ ) && !defined (__mcoldfire__ )
174224PLATFORM_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 )
178229PLATFORM_TRIPLET = mipsisa64r6el - linux - LIBC_MIPS
230+ RUST_TARGET = mipsisa64r6el - unknown - linux - RUST_LIBC_MIPS
179231# elif defined(_MIPSEL )
180232PLATFORM_TRIPLET = mipsisa32r6el - linux - LIBC_MIPS
233+ RUST_TARGET = mipsisa32r6el - unknown - linux - RUST_LIBC_MIPS
181234# elif defined(__mips64 )
182235PLATFORM_TRIPLET = mipsisa64r6 - linux - LIBC_MIPS
236+ RUST_TARGET = mipsisa64r6 - unknown - linux - RUST_LIBC_MIPS
183237# else
184238PLATFORM_TRIPLET = mipsisa32r6 - linux - LIBC_MIPS
239+ RUST_TARGET = mipsisa32r6 - unknown - linux - RUST_LIBC_MIPS
185240# endif
186241# else
187242# if defined(_MIPSEL ) && defined (__mips64 )
188243PLATFORM_TRIPLET = mips64el - linux - LIBC_MIPS
244+ RUST_TARGET = mips64el - unknown - linux - RUST_LIBC_MIPS
189245# elif defined(_MIPSEL )
190246PLATFORM_TRIPLET = mipsel - linux - LIBC_MIPS
247+ RUST_TARGET = mipsel - unknown - linux - RUST_LIBC_MIPS
191248# elif defined(__mips64 )
192249PLATFORM_TRIPLET = mips64 - linux - LIBC_MIPS
250+ RUST_TARGET = mips64 - unknown - linux - RUST_LIBC_MIPS
193251# else
194252PLATFORM_TRIPLET = mips - linux - LIBC_MIPS
253+ RUST_TARGET = mips - unknown - linux - RUST_LIBC_MIPS
195254# endif
196255# endif
197256# elif defined(__or1k__ )
198257PLATFORM_TRIPLET = or1k - linux - LIBC
258+ RUST_TARGET = unknown
199259# elif defined(__powerpc64__ )
200260# if defined(__LITTLE_ENDIAN__ )
201261PLATFORM_TRIPLET = powerpc64le - linux - LIBC
262+ RUST_TARGET = powerpc64le - unknown - linux - RUST_LIBC
202263# else
203264PLATFORM_TRIPLET = powerpc64 - linux - LIBC
265+ RUST_TARGET = powerpc64 - unknown - linux - RUST_LIBC
204266# endif
205267# elif defined(__powerpc__ )
206268PLATFORM_TRIPLET = powerpc - linux - LIBC_PPC
269+ RUST_TARGET = powerpc - unknown - linux - RUST_LIBC_PPC
207270# elif defined(__s390x__ )
208271PLATFORM_TRIPLET = s390x - linux - LIBC
272+ RUST_TARGET = s390x - unknown - linux - RUST_LIBC
209273# elif defined(__s390__ )
210274PLATFORM_TRIPLET = s390 - linux - LIBC
275+ RUST_TARGET = unknown
211276# elif defined(__sh__ ) && defined (__LITTLE_ENDIAN__ )
212277PLATFORM_TRIPLET = sh4 - linux - LIBC
278+ RUST_TARGET = unknown
213279# elif defined(__sparc__ ) && defined (__arch64__ )
214280PLATFORM_TRIPLET = sparc64 - linux - LIBC
281+ RUST_TARGET = sparc64 - unknown - linux - RUST_LIBC
215282# elif defined(__sparc__ )
216283PLATFORM_TRIPLET = sparc - linux - LIBC
284+ RUST_TARGET = sparc - unknown - linux - RUST_LIBC
217285# elif defined(__riscv )
218286# if __riscv_xlen == 32
219287PLATFORM_TRIPLET = riscv32 - linux - LIBC
288+ RUST_TARGET = riscv32gc - unknown - linux - RUST_LIBC
220289# elif __riscv_xlen == 64
221290PLATFORM_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__ )
233303PLATFORM_TRIPLET = x86_64 - kfreebsd - gnu
304+ RUST_TARGET = unknown
234305# elif defined(__i386__ )
235306PLATFORM_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__ )
241313PLATFORM_TRIPLET = x86_64 - gnu
314+ RUST_TARGET = x86_64 - unknown - hurd - gnu
242315# elif defined(__i386__ )
243316PLATFORM_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__
253327PLATFORM_TRIPLET = x86_64 - iphonesimulator
328+ RUST_TARGET = x86_64 - apple - ios
254329# else
255330PLATFORM_TRIPLET = arm64 - iphonesimulator
331+ RUST_TARGET = aarch64 - apple - ios - sim
256332# endif
257333# else
258334PLATFORM_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
262339PLATFORM_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__ )
267351PLATFORM_TRIPLET = vxworks
352+ RUST_TARGET = unknown
268353#elif defined(__wasm32__ )
269354# if defined(__EMSCRIPTEN__ )
270355PLATFORM_TRIPLET = wasm32 - emscripten
356+ RUST_TARGET = wasm32 - unknown - emscripten
271357# elif defined(__wasi__ )
272358# if defined(_REENTRANT )
273359PLATFORM_TRIPLET = wasm32 - wasi - threads
360+ RUST_TARGET = wasm32 - wasip1 - threads
274361# else
275362PLATFORM_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__ )
282370PLATFORM_TRIPLET = wasm64 - emscripten
371+ RUST_TARGET = unknown
283372# elif defined(__wasi__ )
284373PLATFORM_TRIPLET = wasm64 - wasi
374+ RUST_TARGET = unknown
285375# else
286376# error unknown wasm64 platform
287377# endif
0 commit comments