zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

commit 5337934bcd174987e813e192cb5ef173c13eff37 (tree)
parent 4113a790b0da56d7081aca52d0ca4e349d27a6a1
Author: Cody Tapscott <topolarity@tapscott.me>
Date:   Sat, 23 Jul 2022 09:02:51 -0700

CMake: Add ZIG_LLVM_LINK_MODE to config.h

This is currently unused, but it will be needed soon so that we can
avoid linking static libc++ if LLVM/Clang is configured as a shared
library.

Diffstat:
Mbuild.zig | 9+++++++++
Msrc/stage1/config.h.in | 1+
2 files changed, 10 insertions(+), 0 deletions(-)

diff --git a/build.zig b/build.zig @@ -660,6 +660,7 @@ fn addCMakeLibraryList(exe: *std.build.LibExeObjStep, list: []const u8) void { } const CMakeConfig = struct { + llvm_linkage: std.build.LibExeObjStep.Linkage, cmake_binary_dir: []const u8, cmake_prefix_path: []const u8, cxx_compiler: []const u8, @@ -698,6 +699,7 @@ fn findAndParseConfigH(b: *Builder, config_h_path_option: ?[]const u8) ?CMakeCon }; var ctx: CMakeConfig = .{ + .llvm_linkage = undefined, .cmake_binary_dir = undefined, .cmake_prefix_path = undefined, .cxx_compiler = undefined, @@ -741,6 +743,7 @@ fn findAndParseConfigH(b: *Builder, config_h_path_option: ?[]const u8) ?CMakeCon .prefix = "#define ZIG_DIA_GUIDS_LIB ", .field = "dia_guids_lib", }, + // .prefix = ZIG_LLVM_LINK_MODE parsed manually below }; var lines_it = mem.tokenize(u8, config_h_text, "\r\n"); @@ -753,6 +756,12 @@ fn findAndParseConfigH(b: *Builder, config_h_path_option: ?[]const u8) ?CMakeCon @field(ctx, mapping.field) = toNativePathSep(b, quoted); } } + if (mem.startsWith(u8, line, "#define ZIG_LLVM_LINK_MODE ")) { + var it = mem.split(u8, line, "\""); + _ = it.next().?; // skip the stuff before the quote + const quoted = it.next().?; // the stuff inside the quote + ctx.llvm_linkage = if (mem.eql(u8, quoted, "shared")) .dynamic else .static; + } } return ctx; } diff --git a/src/stage1/config.h.in b/src/stage1/config.h.in @@ -16,6 +16,7 @@ // Used by build.zig for communicating build information to self hosted build. #define ZIG_CMAKE_BINARY_DIR "@CMAKE_BINARY_DIR@" +#define ZIG_LLVM_LINK_MODE "@LLVM_LINK_MODE@" #define ZIG_CMAKE_PREFIX_PATH "@CMAKE_PREFIX_PATH@" #define ZIG_CXX_COMPILER "@CMAKE_CXX_COMPILER@" #define ZIG_LLD_INCLUDE_PATH "@LLD_INCLUDE_DIRS@"