/* Detect platform triplet from builtin defines * cc -E Misc/platform_triplet.c | grep '^PLATFORM_TRIPLET=' | tr -d ' ' */ #undef bfin #undef cris #undef fr30 #undef linux #undef hppa #undef hpux #undef i386 #undef mips #undef powerpc #undef sparc #undef unix #if defined(__ANDROID__) # Android is not a multiarch system. #elif defined(__linux__) /* * BEGIN of Linux block */ // Detect libc (based on config.guess) # include # if defined(__UCLIBC__) # error uclibc not supported # elif defined(__dietlibc__) # error dietlibc not supported # elif defined(__GLIBC__) # define LIBC gnu # define LIBC_X32 gnux32 # if defined(__ARM_PCS_VFP) # define LIBC_ARM gnueabihf # else # define LIBC_ARM gnueabi # endif # if defined(__loongarch__) # if defined(__loongarch_soft_float) # define LIBC_LA gnusf # elif defined(__loongarch_single_float) # define LIBC_LA gnuf32 # elif defined(__loongarch_double_float) # define LIBC_LA gnu # else # error unknown loongarch floating-point base abi # endif # endif # if defined(_MIPS_SIM) # if defined(__mips_hard_float) # if _MIPS_SIM == _ABIO32 # define LIBC_MIPS gnu # elif _MIPS_SIM == _ABIN32 # define LIBC_MIPS gnuabin32 # elif _MIPS_SIM == _ABI64 # define LIBC_MIPS gnuabi64 # else # error unknown mips sim value # endif # else # if _MIPS_SIM == _ABIO32 # define LIBC_MIPS gnusf # elif _MIPS_SIM == _ABIN32 # define LIBC_MIPS gnuabin32sf # elif _MIPS_SIM == _ABI64 # define LIBC_MIPS gnuabi64sf # else # error unknown mips sim value # endif # endif # endif # if defined(__SPE__) # define LIBC_PPC gnuspe # else # define LIBC_PPC gnu # endif # else // Heuristic to detect musl libc # include # ifdef __DEFINED_va_list # define LIBC musl # define LIBC_X32 muslx32 # if defined(__ARM_PCS_VFP) # define LIBC_ARM musleabihf # else # define LIBC_ARM musleabi # endif # if defined(__loongarch__) # if defined(__loongarch_soft_float) # define LIBC_LA muslsf # elif defined(__loongarch_single_float) # define LIBC_LA muslf32 # elif defined(__loongarch_double_float) # define LIBC_LA musl # else # error unknown loongarch floating-point base abi # endif # endif # if defined(_MIPS_SIM) # if defined(__mips_hard_float) # if _MIPS_SIM == _ABIO32 # define LIBC_MIPS musl # elif _MIPS_SIM == _ABIN32 # define LIBC_MIPS musln32 # elif _MIPS_SIM == _ABI64 # define LIBC_MIPS musl # else # error unknown mips sim value # endif # else # if _MIPS_SIM == _ABIO32 # define LIBC_MIPS muslsf # elif _MIPS_SIM == _ABIN32 # define LIBC_MIPS musln32sf # elif _MIPS_SIM == _ABI64 # define LIBC_MIPS muslsf # else # error unknown mips sim value # endif # endif # endif # if defined(_SOFT_FLOAT) || defined(__NO_FPRS__) # define LIBC_PPC muslsf # else # define LIBC_PPC musl # endif # else # error unknown libc # endif # endif # if defined(__x86_64__) && defined(__LP64__) PLATFORM_TRIPLET=x86_64-linux-LIBC # elif defined(__x86_64__) && defined(__ILP32__) PLATFORM_TRIPLET=x86_64-linux-LIBC_X32 # elif defined(__i386__) PLATFORM_TRIPLET=i386-linux-LIBC # elif defined(__aarch64__) && defined(__AARCH64EL__) # if defined(__ILP32__) PLATFORM_TRIPLET=aarch64_ilp32-linux-LIBC # else PLATFORM_TRIPLET=aarch64-linux-LIBC # endif # elif defined(__aarch64__) && defined(__AARCH64EB__) # if defined(__ILP32__) PLATFORM_TRIPLET=aarch64_be_ilp32-linux-LIBC # else PLATFORM_TRIPLET=aarch64_be-linux-LIBC # endif # elif defined(__alpha__) PLATFORM_TRIPLET=alpha-linux-LIBC # elif defined(__ARM_EABI__) # if defined(__ARMEL__) PLATFORM_TRIPLET=arm-linux-LIBC_ARM # else PLATFORM_TRIPLET=armeb-linux-LIBC_ARM # endif # elif defined(__hppa__) PLATFORM_TRIPLET=hppa-linux-LIBC # elif defined(__ia64__) PLATFORM_TRIPLET=ia64-linux-LIBC # elif defined(__loongarch__) && defined(__loongarch_lp64) PLATFORM_TRIPLET=loongarch64-linux-LIBC_LA # elif defined(__m68k__) && !defined(__mcoldfire__) PLATFORM_TRIPLET=m68k-linux-LIBC # elif defined(__mips__) # if defined(__mips_isa_rev) && (__mips_isa_rev >=6) # if defined(_MIPSEL) && defined(__mips64) PLATFORM_TRIPLET=mipsisa64r6el-linux-LIBC_MIPS # elif defined(_MIPSEL) PLATFORM_TRIPLET=mipsisa32r6el-linux-LIBC_MIPS # elif defined(__mips64) PLATFORM_TRIPLET=mipsisa64r6-linux-LIBC_MIPS # else PLATFORM_TRIPLET=mipsisa32r6-linux-LIBC_MIPS # endif # else # if defined(_MIPSEL) && defined(__mips64) PLATFORM_TRIPLET=mips64el-linux-LIBC_MIPS # elif defined(_MIPSEL) PLATFORM_TRIPLET=mipsel-linux-LIBC_MIPS # elif defined(__mips64) PLATFORM_TRIPLET=mips64-linux-LIBC_MIPS # else PLATFORM_TRIPLET=mips-linux-LIBC_MIPS # endif # endif # elif defined(__or1k__) PLATFORM_TRIPLET=or1k-linux-LIBC # elif defined(__powerpc64__) # if defined(__LITTLE_ENDIAN__) PLATFORM_TRIPLET=powerpc64le-linux-LIBC # else PLATFORM_TRIPLET=powerpc64-linux-LIBC # endif # elif defined(__powerpc__) PLATFORM_TRIPLET=powerpc-linux-LIBC_PPC # elif defined(__s390x__) PLATFORM_TRIPLET=s390x-linux-LIBC # elif defined(__s390__) PLATFORM_TRIPLET=s390-linux-LIBC # elif defined(__sh__) && defined(__LITTLE_ENDIAN__) PLATFORM_TRIPLET=sh4-linux-LIBC # elif defined(__sparc__) && defined(__arch64__) PLATFORM_TRIPLET=sparc64-linux-LIBC # elif defined(__sparc__) PLATFORM_TRIPLET=sparc-linux-LIBC # elif defined(__riscv) # if __riscv_xlen == 32 PLATFORM_TRIPLET=riscv32-linux-LIBC # elif __riscv_xlen == 64 PLATFORM_TRIPLET=riscv64-linux-LIBC # else # error unknown platform triplet # endif # else # error unknown platform triplet # endif /* * END of Linux block */ #elif defined(__FreeBSD_kernel__) # if defined(__LP64__) PLATFORM_TRIPLET=x86_64-kfreebsd-gnu # elif defined(__i386__) PLATFORM_TRIPLET=i386-kfreebsd-gnu # else # error unknown platform triplet # endif #elif defined(__gnu_hurd__) # if defined(__x86_64__) && defined(__LP64__) PLATFORM_TRIPLET=x86_64-gnu # elif defined(__i386__) PLATFORM_TRIPLET=i386-gnu # else # error unknown platform triplet # endif #elif defined(__APPLE__) PLATFORM_TRIPLET=darwin #elif defined(__VXWORKS__) PLATFORM_TRIPLET=vxworks #elif defined(__wasm32__) # if defined(__EMSCRIPTEN__) PLATFORM_TRIPLET=wasm32-emscripten # elif defined(__wasi__) # if defined(_REENTRANT) PLATFORM_TRIPLET=wasm32-wasi-threads # else PLATFORM_TRIPLET=wasm32-wasi # endif # else # error unknown wasm32 platform # endif #elif defined(__wasm64__) # if defined(__EMSCRIPTEN__) PLATFORM_TRIPLET=wasm64-emscripten # elif defined(__wasi__) PLATFORM_TRIPLET=wasm64-wasi # else # error unknown wasm64 platform # endif #else # error unknown platform triplet #endif