2016-02-11 06:41:50 +08:00
|
|
|
/*
|
|
|
|
* Copyright (c) 2016 Andrew Kelley
|
|
|
|
*
|
|
|
|
* This file is part of zig, which is MIT licensed.
|
|
|
|
* See http://opensource.org/licenses/MIT
|
|
|
|
*/
|
|
|
|
|
|
|
|
#include "target.hpp"
|
|
|
|
#include "util.hpp"
|
|
|
|
|
|
|
|
static const ArchType arch_list[] = {
|
2016-02-11 07:58:15 +08:00
|
|
|
{ZigLLVM_arm, ZigLLVM_ARMSubArch_v8_1a},
|
|
|
|
{ZigLLVM_arm, ZigLLVM_ARMSubArch_v8},
|
|
|
|
{ZigLLVM_arm, ZigLLVM_ARMSubArch_v7},
|
|
|
|
{ZigLLVM_arm, ZigLLVM_ARMSubArch_v7em},
|
|
|
|
{ZigLLVM_arm, ZigLLVM_ARMSubArch_v7m},
|
|
|
|
{ZigLLVM_arm, ZigLLVM_ARMSubArch_v7s},
|
|
|
|
{ZigLLVM_arm, ZigLLVM_ARMSubArch_v6},
|
|
|
|
{ZigLLVM_arm, ZigLLVM_ARMSubArch_v6m},
|
|
|
|
{ZigLLVM_arm, ZigLLVM_ARMSubArch_v6k},
|
|
|
|
{ZigLLVM_arm, ZigLLVM_ARMSubArch_v6t2},
|
|
|
|
{ZigLLVM_arm, ZigLLVM_ARMSubArch_v5},
|
|
|
|
{ZigLLVM_arm, ZigLLVM_ARMSubArch_v5te},
|
|
|
|
{ZigLLVM_arm, ZigLLVM_ARMSubArch_v4t},
|
|
|
|
|
|
|
|
{ZigLLVM_armeb, ZigLLVM_NoSubArch},
|
|
|
|
{ZigLLVM_aarch64, ZigLLVM_NoSubArch},
|
|
|
|
{ZigLLVM_aarch64_be, ZigLLVM_NoSubArch},
|
|
|
|
{ZigLLVM_bpfel, ZigLLVM_NoSubArch},
|
|
|
|
{ZigLLVM_bpfeb, ZigLLVM_NoSubArch},
|
|
|
|
{ZigLLVM_hexagon, ZigLLVM_NoSubArch},
|
|
|
|
{ZigLLVM_mips, ZigLLVM_NoSubArch},
|
|
|
|
{ZigLLVM_mipsel, ZigLLVM_NoSubArch},
|
|
|
|
{ZigLLVM_mips64, ZigLLVM_NoSubArch},
|
|
|
|
{ZigLLVM_mips64el, ZigLLVM_NoSubArch},
|
|
|
|
{ZigLLVM_msp430, ZigLLVM_NoSubArch},
|
|
|
|
{ZigLLVM_ppc, ZigLLVM_NoSubArch},
|
|
|
|
{ZigLLVM_ppc64, ZigLLVM_NoSubArch},
|
|
|
|
{ZigLLVM_ppc64le, ZigLLVM_NoSubArch},
|
|
|
|
{ZigLLVM_r600, ZigLLVM_NoSubArch},
|
|
|
|
{ZigLLVM_amdgcn, ZigLLVM_NoSubArch},
|
|
|
|
{ZigLLVM_sparc, ZigLLVM_NoSubArch},
|
|
|
|
{ZigLLVM_sparcv9, ZigLLVM_NoSubArch},
|
|
|
|
{ZigLLVM_sparcel, ZigLLVM_NoSubArch},
|
|
|
|
{ZigLLVM_systemz, ZigLLVM_NoSubArch},
|
|
|
|
{ZigLLVM_tce, ZigLLVM_NoSubArch},
|
|
|
|
{ZigLLVM_thumb, ZigLLVM_NoSubArch},
|
|
|
|
{ZigLLVM_thumbeb, ZigLLVM_NoSubArch},
|
|
|
|
{ZigLLVM_x86, ZigLLVM_NoSubArch},
|
|
|
|
{ZigLLVM_x86_64, ZigLLVM_NoSubArch},
|
|
|
|
{ZigLLVM_xcore, ZigLLVM_NoSubArch},
|
|
|
|
{ZigLLVM_nvptx, ZigLLVM_NoSubArch},
|
|
|
|
{ZigLLVM_nvptx64, ZigLLVM_NoSubArch},
|
|
|
|
{ZigLLVM_le32, ZigLLVM_NoSubArch},
|
|
|
|
{ZigLLVM_le64, ZigLLVM_NoSubArch},
|
|
|
|
{ZigLLVM_amdil, ZigLLVM_NoSubArch},
|
|
|
|
{ZigLLVM_amdil64, ZigLLVM_NoSubArch},
|
|
|
|
{ZigLLVM_hsail, ZigLLVM_NoSubArch},
|
|
|
|
{ZigLLVM_hsail64, ZigLLVM_NoSubArch},
|
|
|
|
{ZigLLVM_spir, ZigLLVM_NoSubArch},
|
|
|
|
{ZigLLVM_spir64, ZigLLVM_NoSubArch},
|
2016-02-11 06:41:50 +08:00
|
|
|
|
2016-02-11 07:58:15 +08:00
|
|
|
{ZigLLVM_kalimba, ZigLLVM_KalimbaSubArch_v3},
|
|
|
|
{ZigLLVM_kalimba, ZigLLVM_KalimbaSubArch_v4},
|
|
|
|
{ZigLLVM_kalimba, ZigLLVM_KalimbaSubArch_v5},
|
2016-02-11 06:41:50 +08:00
|
|
|
|
2016-02-11 07:58:15 +08:00
|
|
|
{ZigLLVM_shave, ZigLLVM_NoSubArch},
|
|
|
|
{ZigLLVM_wasm32, ZigLLVM_NoSubArch},
|
|
|
|
{ZigLLVM_wasm64, ZigLLVM_NoSubArch},
|
2016-02-11 06:41:50 +08:00
|
|
|
};
|
|
|
|
|
2016-02-11 07:58:15 +08:00
|
|
|
static const ZigLLVM_VendorType vendor_list[] = {
|
|
|
|
ZigLLVM_Apple,
|
|
|
|
ZigLLVM_PC,
|
|
|
|
ZigLLVM_SCEI,
|
|
|
|
ZigLLVM_BGP,
|
|
|
|
ZigLLVM_BGQ,
|
|
|
|
ZigLLVM_Freescale,
|
|
|
|
ZigLLVM_IBM,
|
|
|
|
ZigLLVM_ImaginationTechnologies,
|
|
|
|
ZigLLVM_MipsTechnologies,
|
|
|
|
ZigLLVM_NVIDIA,
|
|
|
|
ZigLLVM_CSR,
|
2016-02-11 06:41:50 +08:00
|
|
|
};
|
|
|
|
|
2016-02-11 07:58:15 +08:00
|
|
|
static const ZigLLVM_OSType os_list[] = {
|
|
|
|
ZigLLVM_UnknownOS,
|
|
|
|
ZigLLVM_CloudABI,
|
|
|
|
ZigLLVM_Darwin,
|
|
|
|
ZigLLVM_DragonFly,
|
|
|
|
ZigLLVM_FreeBSD,
|
|
|
|
ZigLLVM_IOS,
|
|
|
|
ZigLLVM_KFreeBSD,
|
|
|
|
ZigLLVM_Linux,
|
|
|
|
ZigLLVM_Lv2,
|
|
|
|
ZigLLVM_MacOSX,
|
|
|
|
ZigLLVM_NetBSD,
|
|
|
|
ZigLLVM_OpenBSD,
|
|
|
|
ZigLLVM_Solaris,
|
|
|
|
ZigLLVM_Win32,
|
|
|
|
ZigLLVM_Haiku,
|
|
|
|
ZigLLVM_Minix,
|
|
|
|
ZigLLVM_RTEMS,
|
|
|
|
ZigLLVM_NaCl,
|
|
|
|
ZigLLVM_CNK,
|
|
|
|
ZigLLVM_Bitrig,
|
|
|
|
ZigLLVM_AIX,
|
|
|
|
ZigLLVM_CUDA,
|
|
|
|
ZigLLVM_NVCL,
|
|
|
|
ZigLLVM_AMDHSA,
|
|
|
|
ZigLLVM_PS4,
|
2016-02-11 06:41:50 +08:00
|
|
|
};
|
|
|
|
|
2016-02-11 07:58:15 +08:00
|
|
|
static const ZigLLVM_EnvironmentType environ_list[] = {
|
|
|
|
ZigLLVM_GNU,
|
|
|
|
ZigLLVM_GNUEABI,
|
|
|
|
ZigLLVM_GNUEABIHF,
|
|
|
|
ZigLLVM_GNUX32,
|
|
|
|
ZigLLVM_CODE16,
|
|
|
|
ZigLLVM_EABI,
|
|
|
|
ZigLLVM_EABIHF,
|
|
|
|
ZigLLVM_Android,
|
|
|
|
ZigLLVM_MSVC,
|
|
|
|
ZigLLVM_Itanium,
|
|
|
|
ZigLLVM_Cygnus,
|
2016-02-11 06:41:50 +08:00
|
|
|
};
|
|
|
|
|
|
|
|
int target_arch_count(void) {
|
|
|
|
return array_length(arch_list);
|
|
|
|
}
|
|
|
|
|
|
|
|
const ArchType *get_target_arch(int index) {
|
|
|
|
return &arch_list[index];
|
|
|
|
}
|
|
|
|
|
|
|
|
int target_vendor_count(void) {
|
|
|
|
return array_length(vendor_list);
|
|
|
|
}
|
|
|
|
|
2016-02-11 07:58:15 +08:00
|
|
|
ZigLLVM_VendorType get_target_vendor(int index) {
|
|
|
|
return vendor_list[index];
|
2016-02-11 06:41:50 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
int target_os_count(void) {
|
|
|
|
return array_length(os_list);
|
|
|
|
}
|
2016-02-11 07:58:15 +08:00
|
|
|
ZigLLVM_OSType get_target_os(int index) {
|
|
|
|
return os_list[index];
|
2016-02-11 06:41:50 +08:00
|
|
|
}
|
2016-02-11 07:58:15 +08:00
|
|
|
|
|
|
|
const char *get_target_os_name(ZigLLVM_OSType os_type) {
|
|
|
|
return (os_type == ZigLLVM_UnknownOS) ? "freestanding" : ZigLLVMGetOSTypeName(os_type);
|
2016-02-11 06:41:50 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
int target_environ_count(void) {
|
|
|
|
return array_length(environ_list);
|
|
|
|
}
|
2016-02-11 07:58:15 +08:00
|
|
|
ZigLLVM_EnvironmentType get_target_environ(int index) {
|
|
|
|
return environ_list[index];
|
2016-02-11 06:41:50 +08:00
|
|
|
}
|