@@ -7918,6 +7918,14 @@ Buf *codegen_generate_builtin_source(CodeGen *g) {
7918
7918
// assert(EndianBig == 0);
7919
7919
// assert(EndianLittle == 1);
7920
7920
}
7921
+ {
7922
+ buf_appendf (contents,
7923
+ " pub const Version = struct {\n "
7924
+ " major: u32,\n "
7925
+ " minor: u32,\n "
7926
+ " patch: u32,\n "
7927
+ " };\n\n " );
7928
+ }
7921
7929
{
7922
7930
buf_appendf (contents,
7923
7931
" pub const SubSystem = enum {\n "
@@ -7949,6 +7957,15 @@ Buf *codegen_generate_builtin_source(CodeGen *g) {
7949
7957
buf_appendf (contents, " pub const os = Os.%s;\n " , cur_os);
7950
7958
buf_appendf (contents, " pub const arch = %s;\n " , cur_arch);
7951
7959
buf_appendf (contents, " pub const abi = Abi.%s;\n " , cur_abi);
7960
+ if (g->libc_link_lib != nullptr && g->zig_target ->glibc_version != nullptr ) {
7961
+ buf_appendf (contents,
7962
+ " pub const glibc_version: ?Version = Version{.major = %d, .minor = %d, .patch = %d};\n " ,
7963
+ g->zig_target ->glibc_version ->major ,
7964
+ g->zig_target ->glibc_version ->minor ,
7965
+ g->zig_target ->glibc_version ->patch );
7966
+ } else {
7967
+ buf_appendf (contents, " pub const glibc_version: ?Version = null;\n " );
7968
+ }
7952
7969
buf_appendf (contents, " pub const object_format = ObjectFormat.%s;\n " , cur_obj_fmt);
7953
7970
buf_appendf (contents, " pub const mode = %s;\n " , build_mode_to_str (g->build_mode ));
7954
7971
buf_appendf (contents, " pub const link_libc = %s;\n " , bool_to_str (g->libc_link_lib != nullptr ));
@@ -8005,6 +8022,11 @@ static Error define_builtin_compile_vars(CodeGen *g) {
8005
8022
cache_int (&cache_hash, g->zig_target ->vendor );
8006
8023
cache_int (&cache_hash, g->zig_target ->os );
8007
8024
cache_int (&cache_hash, g->zig_target ->abi );
8025
+ if (g->zig_target ->glibc_version != nullptr ) {
8026
+ cache_int (&cache_hash, g->zig_target ->glibc_version ->major );
8027
+ cache_int (&cache_hash, g->zig_target ->glibc_version ->minor );
8028
+ cache_int (&cache_hash, g->zig_target ->glibc_version ->patch );
8029
+ }
8008
8030
cache_bool (&cache_hash, g->have_err_ret_tracing );
8009
8031
cache_bool (&cache_hash, g->libc_link_lib != nullptr );
8010
8032
cache_bool (&cache_hash, g->valgrind_support );
@@ -9465,6 +9487,11 @@ static Error check_cache(CodeGen *g, Buf *manifest_dir, Buf *digest) {
9465
9487
cache_int (ch, g->zig_target ->vendor );
9466
9488
cache_int (ch, g->zig_target ->os );
9467
9489
cache_int (ch, g->zig_target ->abi );
9490
+ if (g->zig_target ->glibc_version != nullptr ) {
9491
+ cache_int (ch, g->zig_target ->glibc_version ->major );
9492
+ cache_int (ch, g->zig_target ->glibc_version ->minor );
9493
+ cache_int (ch, g->zig_target ->glibc_version ->patch );
9494
+ }
9468
9495
cache_int (ch, detect_subsystem (g));
9469
9496
cache_bool (ch, g->strip_debug_symbols );
9470
9497
cache_bool (ch, g->is_test_build );
0 commit comments