authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2019-03-19 15:04:29-04:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2019-03-19 15:04:29-04:00
log3c3692960328b82724560bf81ade0f72b651e969
tree24b796961b1c9b36120d7b787ceba52027043378
parentaf9ac0d548a331fad3a8226dc627ebb66b92b0fa
signaturelock-open Commit is signed but in an unrecognized format.

zig targets prints the available libcs


4 files changed, 70 insertions(+), 1 deletions(-)

doc/langref.html.in+44-1
...@@ -8649,7 +8649,50 @@ C ABIs:...@@ -8649,7 +8649,50 @@ C ABIs:
8649 itanium8649 itanium
8650 cygnus8650 cygnus
8651 coreclr8651 coreclr
8652 simulator</code></pre>8652 simulator
8653
8654Available libcs:
8655 aarch64_be-linux-gnu
8656 aarch64_be-linux-musl
8657 aarch64-linux-gnu
8658 aarch64-linux-musleabi
8659 armeb-linux-gnueabi
8660 armeb-linux-gnueabihf
8661 armeb-linux-musleabi
8662 armeb-linux-musleabihf
8663 arm-linux-gnueabi
8664 arm-linux-gnueabihf
8665 arm-linux-musleabi
8666 arm-linux-musleabihf
8667 i386-linux-gnu
8668 i386-linux-musl
8669 mips64el-linux-gnuabi64
8670 mips64el-linux-gnuabin32
8671 mips64el-linux-musl
8672 mips64-linux-gnuabi64
8673 mips64-linux-gnuabin32
8674 mips64-linux-musl
8675 mipsel-linux-gnu
8676 mipsel-linux-musl
8677 mips-linux-gnu
8678 mips-linux-musl
8679 nios2-linux-gnu
8680 powerpc64le-linux-gnu
8681 powerpc64le-linux-musl
8682 powerpc64-linux-gnu
8683 powerpc64-linux-musl
8684 powerpc-linux-gnu
8685 powerpc-linux-musl
8686 riscv32-linux-musl
8687 riscv64-linux-gnu
8688 riscv64-linux-musl
8689 s390x-linux-gnu
8690 s390x-linux-musl
8691 sparc-linux-gnu
8692 sparcv9-linux-gnu
8693 x86_64-linux-gnu
8694 x86_64-linux-gnux32
8695 x86_64-linux-musl</code></pre>
8653 <p>8696 <p>
8654 The Zig Standard Library ({#syntax#}@import("std"){#endsyntax#}) has architecture, environment, and operating system8697 The Zig Standard Library ({#syntax#}@import("std"){#endsyntax#}) has architecture, environment, and operating system
8655 abstractions, and thus takes additional work to support more platforms.8698 abstractions, and thus takes additional work to support more platforms.
src/main.cpp+9
...@@ -191,6 +191,15 @@ static int print_target_list(FILE *f) {...@@ -191,6 +191,15 @@ static int print_target_list(FILE *f) {
191 fprintf(f, " %s%s\n", target_abi_name(abi), native_str);191 fprintf(f, " %s%s\n", target_abi_name(abi), native_str);
192 }192 }
193193
194 fprintf(f, "\nAvailable libcs:\n");
195 size_t libc_count = target_libc_count();
196 for (size_t i = 0; i < libc_count; i += 1) {
197 ZigTarget libc_target;
198 target_libc_enum(i, &libc_target);
199 fprintf(f, " %s-%s-%s\n", target_arch_name(libc_target.arch),
200 target_os_name(libc_target.os), target_abi_name(libc_target.abi));
201 }
202
194 return EXIT_SUCCESS;203 return EXIT_SUCCESS;
195}204}
196205
src/target.cpp+14
...@@ -1498,3 +1498,17 @@ bool target_is_libc_lib_name(const ZigTarget *target, const char *name) {...@@ -1498,3 +1498,17 @@ bool target_is_libc_lib_name(const ZigTarget *target, const char *name) {
14981498
1499 return false;1499 return false;
1500}1500}
1501
1502size_t target_libc_count(void) {
1503 return array_length(libcs_available);
1504}
1505
1506void target_libc_enum(size_t index, ZigTarget *out_target) {
1507 assert(index < array_length(libcs_available));
1508 out_target->arch = libcs_available[index].arch;
1509 out_target->os = libcs_available[index].os;
1510 out_target->abi = libcs_available[index].abi;
1511 out_target->sub_arch = ZigLLVM_NoSubArch;
1512 out_target->vendor = ZigLLVM_UnknownVendor;
1513 out_target->is_native = false;
1514}
src/target.hpp+3
...@@ -169,4 +169,7 @@ bool target_is_musl(const ZigTarget *target);...@@ -169,4 +169,7 @@ bool target_is_musl(const ZigTarget *target);
169169
170uint32_t target_arch_pointer_bit_width(ZigLLVM_ArchType arch);170uint32_t target_arch_pointer_bit_width(ZigLLVM_ArchType arch);
171171
172size_t target_libc_count(void);
173void target_libc_enum(size_t index, ZigTarget *out_target);
174
172#endif175#endif