authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2019-06-27 11:04:45-04:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2019-06-27 11:05:12-04:00
log516b5e649fa5f6c4043275b3dbe8e38273d79344
tree7b37a2cc9f9ab82bbd57f850910f3a5236922c9f
parent3c914c63a5bd060fa15cf73985097da779b7403e
signaturelock-open Commit is signed but in an unrecognized format.

better CLI error message for missing sub-architecture


2 files changed, 19 insertions(+), 7 deletions(-)

src/main.cpp+14-2
...@@ -913,8 +913,20 @@ int main(int argc, char **argv) {...@@ -913,8 +913,20 @@ int main(int argc, char **argv) {
913 get_native_target(&target);913 get_native_target(&target);
914 } else {914 } else {
915 if ((err = target_parse_triple(&target, target_string))) {915 if ((err = target_parse_triple(&target, target_string))) {
916 fprintf(stderr, "invalid target: %s\n", err_str(err));916 if (err == ErrorUnknownArchitecture && target.arch != ZigLLVM_UnknownArch) {
917 return print_error_usage(arg0);917 fprintf(stderr, "'%s' requires a sub-architecture. Try one of these:\n",
918 target_arch_name(target.arch));
919 SubArchList sub_arch_list = target_subarch_list(target.arch);
920 size_t subarch_count = target_subarch_count(sub_arch_list);
921 for (size_t sub_i = 0; sub_i < subarch_count; sub_i += 1) {
922 ZigLLVM_SubArchType sub = target_subarch_enum(sub_arch_list, sub_i);
923 fprintf(stderr, " %s%s\n", target_arch_name(target.arch), target_subarch_name(sub));
924 }
925 return print_error_usage(arg0);
926 } else {
927 fprintf(stderr, "invalid target: %s\n", err_str(err));
928 return print_error_usage(arg0);
929 }
918 }930 }
919 }931 }
920932
src/target.cpp+5-5
...@@ -486,17 +486,17 @@ void get_native_target(ZigTarget *target) {...@@ -486,17 +486,17 @@ void get_native_target(ZigTarget *target) {
486Error target_parse_archsub(ZigLLVM_ArchType *out_arch, ZigLLVM_SubArchType *out_sub,486Error target_parse_archsub(ZigLLVM_ArchType *out_arch, ZigLLVM_SubArchType *out_sub,
487 const char *archsub_ptr, size_t archsub_len)487 const char *archsub_ptr, size_t archsub_len)
488{488{
489 *out_arch = ZigLLVM_UnknownArch;
490 *out_sub = ZigLLVM_NoSubArch;
489 for (size_t arch_i = 0; arch_i < array_length(arch_list); arch_i += 1) {491 for (size_t arch_i = 0; arch_i < array_length(arch_list); arch_i += 1) {
490 ZigLLVM_ArchType arch = arch_list[arch_i];492 ZigLLVM_ArchType arch = arch_list[arch_i];
491 SubArchList sub_arch_list = target_subarch_list(arch);493 SubArchList sub_arch_list = target_subarch_list(arch);
492 size_t subarch_count = target_subarch_count(sub_arch_list);494 size_t subarch_count = target_subarch_count(sub_arch_list);
493 if (subarch_count == 0) {495 if (mem_eql_str(archsub_ptr, archsub_len, target_arch_name(arch))) {
494 if (mem_eql_str(archsub_ptr, archsub_len, target_arch_name(arch))) {496 *out_arch = arch;
495 *out_arch = arch;497 if (subarch_count == 0) {
496 *out_sub = ZigLLVM_NoSubArch;
497 return ErrorNone;498 return ErrorNone;
498 }499 }
499 continue;
500 }500 }
501 for (size_t sub_i = 0; sub_i < subarch_count; sub_i += 1) {501 for (size_t sub_i = 0; sub_i < subarch_count; sub_i += 1) {
502 ZigLLVM_SubArchType sub = target_subarch_enum(sub_arch_list, sub_i);502 ZigLLVM_SubArchType sub = target_subarch_enum(sub_arch_list, sub_i);