Commit 54a8b6a110
Changed files (5)
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;
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},
-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},
+ {ZigLLVM_kalimba, ZigLLVM_KalimbaSubArch_v4},
+ {ZigLLVM_kalimba, ZigLLVM_KalimbaSubArch_v5},
- {ZigLLVM_kalimba, ZigLLVM_KalimbaSubArch_v3, "v3"},
- {ZigLLVM_kalimba, ZigLLVM_KalimbaSubArch_v4, "v4"},
- {ZigLLVM_kalimba, ZigLLVM_KalimbaSubArch_v5, "v5"},
+ {ZigLLVM_shave, ZigLLVM_NoSubArch},
+ {ZigLLVM_wasm32, ZigLLVM_NoSubArch},
+ {ZigLLVM_wasm64, ZigLLVM_NoSubArch},
};
-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_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 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 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 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];
}
src/target.hpp
@@ -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
src/zig_llvm.cpp
@@ -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"
src/zig_llvm.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);