authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-02-04 03:39:20-05:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-02-04 03:39:40-05:00
loga9df637fb11713c41024e6f3b6a1f4f86c33b09e
treec2514bb948c46d998619ba8c5739dff733e4cfaa
parentd0b12d77267da601e69bd633fe3f56b8bf01c1cf
signaturelock-open Commit is signed but in an unrecognized format.

fix undef clang library symbols when linking self-hosted


4 files changed, 16 insertions(+), 4 deletions(-)

CMakeLists.txt+5-3
......@@ -364,6 +364,11 @@ add_library(zig_cpp STATIC ${ZIG_CPP_SOURCES})
364364set_target_properties(zig_cpp PROPERTIES
365365 COMPILE_FLAGS ${EXE_CFLAGS}
366366)
367target_link_libraries(zig_cpp LINK_PUBLIC
368 ${CLANG_LIBRARIES}
369 ${LLD_LIBRARIES}
370 ${LLVM_LIBRARIES}
371)
367372
368373add_library(opt_c_util STATIC ${OPTIMIZED_C_SOURCES})
369374set_target_properties(opt_c_util PROPERTIES
......@@ -379,9 +384,6 @@ target_link_libraries(compiler LINK_PUBLIC
379384 zig_cpp
380385 opt_c_util
381386 ${SOFTFLOAT_LIBRARIES}
382 ${CLANG_LIBRARIES}
383 ${LLD_LIBRARIES}
384 ${LLVM_LIBRARIES}
385387 ${CMAKE_THREAD_LIBS_INIT}
386388)
387389if(NOT MSVC)
build.zig+8
......@@ -47,6 +47,7 @@ pub fn build(b: *Builder) !void {
4747 .llvm_config_exe = nextValue(&index, build_info),
4848 .lld_include_dir = nextValue(&index, build_info),
4949 .lld_libraries = nextValue(&index, build_info),
50 .clang_libraries = nextValue(&index, build_info),
5051 .dia_guids_lib = nextValue(&index, build_info),
5152 .llvm = undefined,
5253 };
......@@ -299,6 +300,12 @@ fn configureStage2(b: *Builder, exe: var, ctx: Context) !void {
299300 addCppLib(b, exe, ctx.cmake_binary_dir, "embedded_lld_coff");
300301 addCppLib(b, exe, ctx.cmake_binary_dir, "embedded_lld_lib");
301302 }
303 {
304 var it = mem.tokenize(ctx.clang_libraries, ";");
305 while (it.next()) |lib| {
306 exe.addObjectFile(lib);
307 }
308 }
302309 dependOnLib(b, exe, ctx.llvm);
303310
304311 if (exe.target.getOs() == .linux) {
......@@ -364,6 +371,7 @@ const Context = struct {
364371 llvm_config_exe: []const u8,
365372 lld_include_dir: []const u8,
366373 lld_libraries: []const u8,
374 clang_libraries: []const u8,
367375 dia_guids_lib: []const u8,
368376 llvm: LibraryDep,
369377};
src/config.h.in+1
......@@ -18,6 +18,7 @@
1818#define ZIG_CXX_COMPILER "@CMAKE_CXX_COMPILER@"
1919#define ZIG_LLD_INCLUDE_PATH "@LLD_INCLUDE_DIRS@"
2020#define ZIG_LLD_LIBRARIES "@LLD_LIBRARIES@"
21#define ZIG_CLANG_LIBRARIES "@CLANG_LIBRARIES@"
2122#define ZIG_LLVM_CONFIG_EXE "@LLVM_CONFIG_EXE@"
2223#define ZIG_DIA_GUIDS_LIB "@ZIG_DIA_GUIDS_LIB_ESCAPED@"
2324
src/main.cpp+2-1
......@@ -261,12 +261,13 @@ int main(int argc, char **argv) {
261261 Error err;
262262
263263 if (argc == 2 && strcmp(argv[1], "BUILD_INFO") == 0) {
264 printf("%s\n%s\n%s\n%s\n%s\n%s\n",
264 printf("%s\n%s\n%s\n%s\n%s\n%s\n%s\n",
265265 ZIG_CMAKE_BINARY_DIR,
266266 ZIG_CXX_COMPILER,
267267 ZIG_LLVM_CONFIG_EXE,
268268 ZIG_LLD_INCLUDE_PATH,
269269 ZIG_LLD_LIBRARIES,
270 ZIG_CLANG_LIBRARIES,
270271 ZIG_DIA_GUIDS_LIB);
271272 return 0;
272273 }