cleanup target data organization
parent
b642604691
commit
54a8b6a110
25
src/main.cpp
25
src/main.cpp
|
@ -54,34 +54,29 @@ static int print_target_list(FILE *f) {
|
|||
|
||||
fprintf(f, "Architectures:\n");
|
||||
int arch_count = target_arch_count();
|
||||
int sub_arch_count = target_sub_arch_count();
|
||||
for (int arch_i = 0; arch_i < arch_count; arch_i += 1) {
|
||||
const ArchType *arch = get_target_arch(arch_i);
|
||||
const char *native_str = (native_arch_type == arch->llvm_arch) ? " (native)" : "";
|
||||
fprintf(f, " %s%s\n", ZigLLVMGetArchTypeName(arch->llvm_arch), native_str);
|
||||
for (int sub_arch_i = 0; sub_arch_i < sub_arch_count; sub_arch_i += 1) {
|
||||
const SubArchType *sub_arch = get_target_sub_arch(sub_arch_i);
|
||||
if (sub_arch->arch == arch->llvm_arch) {
|
||||
const char *native_str = (native_sub_arch_type == sub_arch->sub_arch) ? " (native)" : "";
|
||||
fprintf(f, " %s%s\n", sub_arch->name, native_str);
|
||||
}
|
||||
}
|
||||
const char *sub_arch_str = (arch->sub_arch == ZigLLVM_NoSubArch) ?
|
||||
"" : ZigLLVMGetSubArchTypeName(arch->sub_arch);
|
||||
const char *native_str = (native_arch_type == arch->arch && native_sub_arch_type == arch->sub_arch) ?
|
||||
" (native)" : "";
|
||||
fprintf(f, " %s%s%s\n", ZigLLVMGetArchTypeName(arch->arch), sub_arch_str, native_str);
|
||||
}
|
||||
|
||||
fprintf(f, "\nOperating Systems:\n");
|
||||
int os_count = target_os_count();
|
||||
for (int i = 0; i < os_count; i += 1) {
|
||||
const OsType *os_type = get_target_os(i);
|
||||
const char *native_str = (native_os_type == os_type->llvm_os) ? " (native)" : "";
|
||||
ZigLLVM_OSType os_type = get_target_os(i);
|
||||
const char *native_str = (native_os_type == os_type) ? " (native)" : "";
|
||||
fprintf(f, " %s%s\n", get_target_os_name(os_type), native_str);
|
||||
}
|
||||
|
||||
fprintf(f, "\nABIs:\n");
|
||||
int environ_count = target_environ_count();
|
||||
for (int i = 0; i < environ_count; i += 1) {
|
||||
const EnvironmentType *environ_type = get_target_environ(i);
|
||||
const char *native_str = (native_environ_type == environ_type->llvm_environment) ? " (native)" : "";
|
||||
fprintf(f, " %s%s\n", ZigLLVMGetEnvironmentTypeName(environ_type->llvm_environment), native_str);
|
||||
ZigLLVM_EnvironmentType environ_type = get_target_environ(i);
|
||||
const char *native_str = (native_environ_type == environ_type) ? " (native)" : "";
|
||||
fprintf(f, " %s%s\n", ZigLLVMGetEnvironmentTypeName(environ_type), native_str);
|
||||
}
|
||||
|
||||
return EXIT_SUCCESS;
|
||||
|
|
243
src/target.cpp
243
src/target.cpp
|
@ -9,123 +9,120 @@
|
|||
#include "util.hpp"
|
||||
|
||||
static const ArchType arch_list[] = {
|
||||
{ZigLLVM_arm},
|
||||
{ZigLLVM_armeb},
|
||||
{ZigLLVM_aarch64},
|
||||
{ZigLLVM_aarch64_be},
|
||||
{ZigLLVM_bpfel},
|
||||
{ZigLLVM_bpfeb},
|
||||
{ZigLLVM_hexagon},
|
||||
{ZigLLVM_mips},
|
||||
{ZigLLVM_mipsel},
|
||||
{ZigLLVM_mips64},
|
||||
{ZigLLVM_mips64el},
|
||||
{ZigLLVM_msp430},
|
||||
{ZigLLVM_ppc},
|
||||
{ZigLLVM_ppc64},
|
||||
{ZigLLVM_ppc64le},
|
||||
{ZigLLVM_r600},
|
||||
{ZigLLVM_amdgcn},
|
||||
{ZigLLVM_sparc},
|
||||
{ZigLLVM_sparcv9},
|
||||
{ZigLLVM_sparcel},
|
||||
{ZigLLVM_systemz},
|
||||
{ZigLLVM_tce},
|
||||
{ZigLLVM_thumb},
|
||||
{ZigLLVM_thumbeb},
|
||||
{ZigLLVM_x86},
|
||||
{ZigLLVM_x86_64},
|
||||
{ZigLLVM_xcore},
|
||||
{ZigLLVM_nvptx},
|
||||
{ZigLLVM_nvptx64},
|
||||
{ZigLLVM_le32},
|
||||
{ZigLLVM_le64},
|
||||
{ZigLLVM_amdil},
|
||||
{ZigLLVM_amdil64},
|
||||
{ZigLLVM_hsail},
|
||||
{ZigLLVM_hsail64},
|
||||
{ZigLLVM_spir},
|
||||
{ZigLLVM_spir64},
|
||||
{ZigLLVM_kalimba},
|
||||
{ZigLLVM_shave},
|
||||
{ZigLLVM_wasm32},
|
||||
{ZigLLVM_wasm64},
|
||||
{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},
|
||||
|
||||
{ZigLLVM_kalimba, ZigLLVM_KalimbaSubArch_v3},
|
||||
{ZigLLVM_kalimba, ZigLLVM_KalimbaSubArch_v4},
|
||||
{ZigLLVM_kalimba, ZigLLVM_KalimbaSubArch_v5},
|
||||
|
||||
{ZigLLVM_shave, ZigLLVM_NoSubArch},
|
||||
{ZigLLVM_wasm32, ZigLLVM_NoSubArch},
|
||||
{ZigLLVM_wasm64, ZigLLVM_NoSubArch},
|
||||
};
|
||||
|
||||
static const SubArchType sub_arch_list[] = {
|
||||
{ZigLLVM_arm, ZigLLVM_ARMSubArch_v8_1a, "v8_1a"},
|
||||
{ZigLLVM_arm, ZigLLVM_ARMSubArch_v8, "v8"},
|
||||
{ZigLLVM_arm, ZigLLVM_ARMSubArch_v7, "v7"},
|
||||
{ZigLLVM_arm, ZigLLVM_ARMSubArch_v7em, "v7em"},
|
||||
{ZigLLVM_arm, ZigLLVM_ARMSubArch_v7m, "v7m"},
|
||||
{ZigLLVM_arm, ZigLLVM_ARMSubArch_v7s, "v7s"},
|
||||
{ZigLLVM_arm, ZigLLVM_ARMSubArch_v6, "v6"},
|
||||
{ZigLLVM_arm, ZigLLVM_ARMSubArch_v6m, "v6m"},
|
||||
{ZigLLVM_arm, ZigLLVM_ARMSubArch_v6k, "v6k"},
|
||||
{ZigLLVM_arm, ZigLLVM_ARMSubArch_v6t2, "v6t2"},
|
||||
{ZigLLVM_arm, ZigLLVM_ARMSubArch_v5, "v5"},
|
||||
{ZigLLVM_arm, ZigLLVM_ARMSubArch_v5te, "v5te"},
|
||||
{ZigLLVM_arm, ZigLLVM_ARMSubArch_v4t, "v4t"},
|
||||
|
||||
{ZigLLVM_kalimba, ZigLLVM_KalimbaSubArch_v3, "v3"},
|
||||
{ZigLLVM_kalimba, ZigLLVM_KalimbaSubArch_v4, "v4"},
|
||||
{ZigLLVM_kalimba, ZigLLVM_KalimbaSubArch_v5, "v5"},
|
||||
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,
|
||||
};
|
||||
|
||||
static const 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},
|
||||
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,
|
||||
};
|
||||
|
||||
static const 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},
|
||||
};
|
||||
|
||||
static const 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},
|
||||
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,
|
||||
};
|
||||
|
||||
int target_arch_count(void) {
|
||||
|
@ -136,34 +133,28 @@ const ArchType *get_target_arch(int index) {
|
|||
return &arch_list[index];
|
||||
}
|
||||
|
||||
int target_sub_arch_count(void) {
|
||||
return array_length(sub_arch_list);
|
||||
}
|
||||
const SubArchType *get_target_sub_arch(int index) {
|
||||
return &sub_arch_list[index];
|
||||
}
|
||||
|
||||
int target_vendor_count(void) {
|
||||
return array_length(vendor_list);
|
||||
}
|
||||
|
||||
const VendorType *get_target_vendor(int index) {
|
||||
return &vendor_list[index];
|
||||
ZigLLVM_VendorType get_target_vendor(int index) {
|
||||
return vendor_list[index];
|
||||
}
|
||||
|
||||
int target_os_count(void) {
|
||||
return array_length(os_list);
|
||||
}
|
||||
const OsType *get_target_os(int index) {
|
||||
return &os_list[index];
|
||||
ZigLLVM_OSType get_target_os(int index) {
|
||||
return os_list[index];
|
||||
}
|
||||
const char *get_target_os_name(const OsType *os_type) {
|
||||
return (os_type->llvm_os == ZigLLVM_UnknownOS) ? "freestanding" : ZigLLVMGetOSTypeName(os_type->llvm_os);
|
||||
|
||||
const char *get_target_os_name(ZigLLVM_OSType os_type) {
|
||||
return (os_type == ZigLLVM_UnknownOS) ? "freestanding" : ZigLLVMGetOSTypeName(os_type);
|
||||
}
|
||||
|
||||
int target_environ_count(void) {
|
||||
return array_length(environ_list);
|
||||
}
|
||||
const EnvironmentType *get_target_environ(int index) {
|
||||
return &environ_list[index];
|
||||
ZigLLVM_EnvironmentType get_target_environ(int index) {
|
||||
return environ_list[index];
|
||||
}
|
||||
|
|
|
@ -11,41 +11,21 @@
|
|||
#include <zig_llvm.hpp>
|
||||
|
||||
struct ArchType {
|
||||
ZigLLVM_ArchType llvm_arch;
|
||||
};
|
||||
|
||||
struct SubArchType {
|
||||
ZigLLVM_ArchType arch; // which arch it applies to
|
||||
ZigLLVM_ArchType arch;
|
||||
ZigLLVM_SubArchType sub_arch;
|
||||
const char *name;
|
||||
};
|
||||
|
||||
struct VendorType {
|
||||
ZigLLVM_VendorType llvm_vendor;
|
||||
};
|
||||
|
||||
struct OsType {
|
||||
ZigLLVM_OSType llvm_os;
|
||||
};
|
||||
|
||||
struct EnvironmentType {
|
||||
ZigLLVM_EnvironmentType llvm_environment;
|
||||
};
|
||||
|
||||
int target_arch_count(void);
|
||||
const ArchType *get_target_arch(int index);
|
||||
|
||||
int target_sub_arch_count(void);
|
||||
const SubArchType *get_target_sub_arch(int index);
|
||||
|
||||
int target_vendor_count(void);
|
||||
const VendorType *get_target_vendor(int index);
|
||||
ZigLLVM_VendorType get_target_vendor(int index);
|
||||
|
||||
int target_os_count(void);
|
||||
const OsType *get_target_os(int index);
|
||||
const char *get_target_os_name(const OsType *os_type);
|
||||
ZigLLVM_OSType get_target_os(int index);
|
||||
const char *get_target_os_name(ZigLLVM_OSType os_type);
|
||||
|
||||
int target_environ_count(void);
|
||||
const EnvironmentType *get_target_environ(int index);
|
||||
ZigLLVM_EnvironmentType get_target_environ(int index);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -551,6 +551,45 @@ void ZigLLVMGetNativeTarget(ZigLLVM_ArchType *arch_type, ZigLLVM_SubArchType *su
|
|||
free(native_triple);
|
||||
}
|
||||
|
||||
const char *ZigLLVMGetSubArchTypeName(ZigLLVM_SubArchType sub_arch) {
|
||||
switch (sub_arch) {
|
||||
case ZigLLVM_NoSubArch:
|
||||
return "(none)";
|
||||
case ZigLLVM_ARMSubArch_v8_1a:
|
||||
return "v8_1a";
|
||||
case ZigLLVM_ARMSubArch_v8:
|
||||
return "v8";
|
||||
case ZigLLVM_ARMSubArch_v7:
|
||||
return "v7";
|
||||
case ZigLLVM_ARMSubArch_v7em:
|
||||
return "v7em";
|
||||
case ZigLLVM_ARMSubArch_v7m:
|
||||
return "v7m";
|
||||
case ZigLLVM_ARMSubArch_v7s:
|
||||
return "v7s";
|
||||
case ZigLLVM_ARMSubArch_v6:
|
||||
return "v6";
|
||||
case ZigLLVM_ARMSubArch_v6m:
|
||||
return "v6m";
|
||||
case ZigLLVM_ARMSubArch_v6k:
|
||||
return "v6k";
|
||||
case ZigLLVM_ARMSubArch_v6t2:
|
||||
return "v6t2";
|
||||
case ZigLLVM_ARMSubArch_v5:
|
||||
return "v5";
|
||||
case ZigLLVM_ARMSubArch_v5te:
|
||||
return "v5te";
|
||||
case ZigLLVM_ARMSubArch_v4t:
|
||||
return "v4t";
|
||||
case ZigLLVM_KalimbaSubArch_v3:
|
||||
return "v3";
|
||||
case ZigLLVM_KalimbaSubArch_v4:
|
||||
return "v4";
|
||||
case ZigLLVM_KalimbaSubArch_v5:
|
||||
return "v5";
|
||||
}
|
||||
}
|
||||
|
||||
//------------------------------------
|
||||
|
||||
#include "buffer.hpp"
|
||||
|
|
|
@ -284,6 +284,7 @@ enum ZigLLVM_ObjectFormatType {
|
|||
};
|
||||
|
||||
const char *ZigLLVMGetArchTypeName(ZigLLVM_ArchType arch);
|
||||
const char *ZigLLVMGetSubArchTypeName(ZigLLVM_SubArchType sub_arch);
|
||||
const char *ZigLLVMGetVendorTypeName(ZigLLVM_VendorType vendor);
|
||||
const char *ZigLLVMGetOSTypeName(ZigLLVM_OSType os);
|
||||
const char *ZigLLVMGetEnvironmentTypeName(ZigLLVM_EnvironmentType environ);
|
||||
|
|
Loading…
Reference in New Issue