authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2019-07-07 17:55:25-04:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2019-07-07 17:56:43-04:00
log56d818565015b8213f6c070236658c8796c86d0a
treeaf651179db80c7dfed6b1310492de8c5f53e3131
parent3e36cad1c125145f249325cdf1eae8662a4a24c6
signaturelock-open Commit is signed but in an unrecognized format.

expose glibc version in builtin


3 files changed, 39 insertions(+), 3 deletions(-)

src/codegen.cpp+27
...@@ -7918,6 +7918,14 @@ Buf *codegen_generate_builtin_source(CodeGen *g) {...@@ -7918,6 +7918,14 @@ Buf *codegen_generate_builtin_source(CodeGen *g) {
7918 //assert(EndianBig == 0);7918 //assert(EndianBig == 0);
7919 //assert(EndianLittle == 1);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 buf_appendf(contents,7930 buf_appendf(contents,
7923 "pub const SubSystem = enum {\n"7931 "pub const SubSystem = enum {\n"
...@@ -7949,6 +7957,15 @@ Buf *codegen_generate_builtin_source(CodeGen *g) {...@@ -7949,6 +7957,15 @@ Buf *codegen_generate_builtin_source(CodeGen *g) {
7949 buf_appendf(contents, "pub const os = Os.%s;\n", cur_os);7957 buf_appendf(contents, "pub const os = Os.%s;\n", cur_os);
7950 buf_appendf(contents, "pub const arch = %s;\n", cur_arch);7958 buf_appendf(contents, "pub const arch = %s;\n", cur_arch);
7951 buf_appendf(contents, "pub const abi = Abi.%s;\n", cur_abi);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 buf_appendf(contents, "pub const object_format = ObjectFormat.%s;\n", cur_obj_fmt);7969 buf_appendf(contents, "pub const object_format = ObjectFormat.%s;\n", cur_obj_fmt);
7953 buf_appendf(contents, "pub const mode = %s;\n", build_mode_to_str(g->build_mode));7970 buf_appendf(contents, "pub const mode = %s;\n", build_mode_to_str(g->build_mode));
7954 buf_appendf(contents, "pub const link_libc = %s;\n", bool_to_str(g->libc_link_lib != nullptr));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,6 +8022,11 @@ static Error define_builtin_compile_vars(CodeGen *g) {
8005 cache_int(&cache_hash, g->zig_target->vendor);8022 cache_int(&cache_hash, g->zig_target->vendor);
8006 cache_int(&cache_hash, g->zig_target->os);8023 cache_int(&cache_hash, g->zig_target->os);
8007 cache_int(&cache_hash, g->zig_target->abi);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 cache_bool(&cache_hash, g->have_err_ret_tracing);8030 cache_bool(&cache_hash, g->have_err_ret_tracing);
8009 cache_bool(&cache_hash, g->libc_link_lib != nullptr);8031 cache_bool(&cache_hash, g->libc_link_lib != nullptr);
8010 cache_bool(&cache_hash, g->valgrind_support);8032 cache_bool(&cache_hash, g->valgrind_support);
...@@ -9465,6 +9487,11 @@ static Error check_cache(CodeGen *g, Buf *manifest_dir, Buf *digest) {...@@ -9465,6 +9487,11 @@ static Error check_cache(CodeGen *g, Buf *manifest_dir, Buf *digest) {
9465 cache_int(ch, g->zig_target->vendor);9487 cache_int(ch, g->zig_target->vendor);
9466 cache_int(ch, g->zig_target->os);9488 cache_int(ch, g->zig_target->os);
9467 cache_int(ch, g->zig_target->abi);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 cache_int(ch, detect_subsystem(g));9495 cache_int(ch, detect_subsystem(g));
9469 cache_bool(ch, g->strip_debug_symbols);9496 cache_bool(ch, g->strip_debug_symbols);
9470 cache_bool(ch, g->is_test_build);9497 cache_bool(ch, g->is_test_build);
src/main.cpp+4
...@@ -1015,6 +1015,10 @@ int main(int argc, char **argv) {...@@ -1015,6 +1015,10 @@ int main(int argc, char **argv) {
1015 CodeGen *g = codegen_create(main_pkg_path, nullptr, &target,1015 CodeGen *g = codegen_create(main_pkg_path, nullptr, &target,
1016 out_type, build_mode, override_lib_dir, override_std_dir, nullptr, nullptr);1016 out_type, build_mode, override_lib_dir, override_std_dir, nullptr, nullptr);
1017 codegen_set_strip(g, strip);1017 codegen_set_strip(g, strip);
1018 for (size_t i = 0; i < link_libs.length; i += 1) {
1019 LinkLib *link_lib = codegen_add_link_lib(g, buf_create_from_str(link_libs.at(i)));
1020 link_lib->provided_explicitly = true;
1021 }
1018 g->subsystem = subsystem;1022 g->subsystem = subsystem;
1019 g->valgrind_support = valgrind_support;1023 g->valgrind_support = valgrind_support;
1020 g->want_pic = want_pic;1024 g->want_pic = want_pic;
std/build.zig+8-3
...@@ -1011,7 +1011,8 @@ pub const LibExeObjStep = struct {...@@ -1011,7 +1011,8 @@ pub const LibExeObjStep = struct {
1011 builder: *Builder,1011 builder: *Builder,
1012 name: []const u8,1012 name: []const u8,
1013 target: Target,1013 target: Target,
1014 linker_script: ?[]const u8,1014 linker_script: ?[]const u8 = null,
1015 version_script: ?[]const u8 = null,
1015 out_filename: []const u8,1016 out_filename: []const u8,
1016 is_dynamic: bool,1017 is_dynamic: bool,
1017 version: Version,1018 version: Version,
...@@ -1118,7 +1119,6 @@ pub const LibExeObjStep = struct {...@@ -1118,7 +1119,6 @@ pub const LibExeObjStep = struct {
1118 .root_src = root_src,1119 .root_src = root_src,
1119 .name = name,1120 .name = name,
1120 .target = Target.Native,1121 .target = Target.Native,
1121 .linker_script = null,
1122 .frameworks = BufSet.init(builder.allocator),1122 .frameworks = BufSet.init(builder.allocator),
1123 .step = Step.init(name, builder.allocator, make),1123 .step = Step.init(name, builder.allocator, make),
1124 .version = ver,1124 .version = ver,
...@@ -1596,7 +1596,12 @@ pub const LibExeObjStep = struct {...@@ -1596,7 +1596,12 @@ pub const LibExeObjStep = struct {
15961596
1597 if (self.linker_script) |linker_script| {1597 if (self.linker_script) |linker_script| {
1598 zig_args.append("--linker-script") catch unreachable;1598 zig_args.append("--linker-script") catch unreachable;
1599 zig_args.append(linker_script) catch unreachable;1599 zig_args.append(builder.pathFromRoot(linker_script)) catch unreachable;
1600 }
1601
1602 if (self.version_script) |version_script| {
1603 try zig_args.append("--version-script");
1604 try zig_args.append(builder.pathFromRoot(version_script));
1600 }1605 }
16011606
1602 if (self.exec_cmd_args) |exec_cmd_args| {1607 if (self.exec_cmd_args) |exec_cmd_args| {