Commit 350a88ddf4

Cody Tapscott <topolarity@tapscott.me>
2022-10-08 22:15:49
build.zig: Forward LLVM lib/include dirs from CMake
Previously, you might obtain `-lLLVM-15` from the CMake configuration, but we might not be able to locate the library if it's not in your system library path.
1 parent 7f50848
Changed files (2)
src/stage1/config.h.in
@@ -22,6 +22,8 @@
 #define ZIG_LLD_INCLUDE_PATH "@LLD_INCLUDE_DIRS@"
 #define ZIG_LLD_LIBRARIES "@LLD_LIBRARIES@"
 #define ZIG_CLANG_LIBRARIES "@CLANG_LIBRARIES@"
+#define ZIG_LLVM_INCLUDE_PATH "@LLVM_INCLUDE_DIRS@"
+#define ZIG_LLVM_LIB_PATH "@LLVM_LIBDIRS@"
 #define ZIG_LLVM_LIBRARIES "@LLVM_LIBRARIES@"
 #define ZIG_DIA_GUIDS_LIB "@ZIG_DIA_GUIDS_LIB_ESCAPED@"
 
build.zig
@@ -554,6 +554,8 @@ fn addCmakeCfgOptionsToExe(
     }) catch unreachable);
     assert(cfg.lld_include_dir.len != 0);
     exe.addIncludePath(cfg.lld_include_dir);
+    exe.addIncludePath(cfg.llvm_include_dir);
+    exe.addLibraryPath(cfg.llvm_lib_dir);
     addCMakeLibraryList(exe, cfg.clang_libraries);
     addCMakeLibraryList(exe, cfg.lld_libraries);
     addCMakeLibraryList(exe, cfg.llvm_libraries);
@@ -684,6 +686,8 @@ const CMakeConfig = struct {
     lld_include_dir: []const u8,
     lld_libraries: []const u8,
     clang_libraries: []const u8,
+    llvm_lib_dir: []const u8,
+    llvm_include_dir: []const u8,
     llvm_libraries: []const u8,
     dia_guids_lib: []const u8,
 };
@@ -745,6 +749,8 @@ fn parseConfigH(b: *Builder, config_h_text: []const u8) ?CMakeConfig {
         .lld_include_dir = undefined,
         .lld_libraries = undefined,
         .clang_libraries = undefined,
+        .llvm_lib_dir = undefined,
+        .llvm_include_dir = undefined,
         .llvm_libraries = undefined,
         .dia_guids_lib = undefined,
     };
@@ -782,6 +788,14 @@ fn parseConfigH(b: *Builder, config_h_text: []const u8) ?CMakeConfig {
             .prefix = "#define ZIG_DIA_GUIDS_LIB ",
             .field = "dia_guids_lib",
         },
+        .{
+            .prefix = "#define ZIG_LLVM_INCLUDE_PATH ",
+            .field = "llvm_include_dir",
+        },
+        .{
+            .prefix = "#define ZIG_LLVM_LIB_PATH ",
+            .field = "llvm_lib_dir",
+        },
         // .prefix = ZIG_LLVM_LINK_MODE parsed manually below
     };