aboutsummaryrefslogtreecommitdiff
path: root/src/Compilation.zig
diff options
context:
space:
mode:
Diffstat (limited to 'src/Compilation.zig')
-rw-r--r--src/Compilation.zig15
1 files changed, 9 insertions, 6 deletions
diff --git a/src/Compilation.zig b/src/Compilation.zig
index ba599d0207..81d150b03f 100644
--- a/src/Compilation.zig
+++ b/src/Compilation.zig
@@ -774,7 +774,7 @@ pub const Directories = struct {
/// `comp.debug_incremental`. It is inline so that comptime-known `false` propagates to the caller,
/// preventing debugging features from making it into release builds of the compiler.
pub inline fn debugIncremental(comp: *const Compilation) bool {
- if (!build_options.enable_debug_extensions) return false;
+ if (!build_options.enable_debug_extensions or builtin.single_threaded) return false;
return comp.debug_incremental;
}
@@ -7225,7 +7225,7 @@ fn buildOutputFromZig(
assert(out.* == null);
out.* = crt_file;
- comp.queueLinkTaskMode(crt_file.full_object_path, output_mode);
+ comp.queueLinkTaskMode(crt_file.full_object_path, &config);
}
pub const CrtFileOptions = struct {
@@ -7349,7 +7349,7 @@ pub fn build_crt_file(
try comp.updateSubCompilation(sub_compilation, misc_task_tag, prog_node);
const crt_file = try sub_compilation.toCrtFile();
- comp.queueLinkTaskMode(crt_file.full_object_path, output_mode);
+ comp.queueLinkTaskMode(crt_file.full_object_path, &config);
{
comp.mutex.lock();
@@ -7359,11 +7359,14 @@ pub fn build_crt_file(
}
}
-pub fn queueLinkTaskMode(comp: *Compilation, path: Cache.Path, output_mode: std.builtin.OutputMode) void {
- comp.queueLinkTasks(switch (output_mode) {
+pub fn queueLinkTaskMode(comp: *Compilation, path: Cache.Path, config: *const Compilation.Config) void {
+ comp.queueLinkTasks(switch (config.output_mode) {
.Exe => unreachable,
.Obj => &.{.{ .load_object = path }},
- .Lib => &.{.{ .load_archive = path }},
+ .Lib => &.{switch (config.link_mode) {
+ .static => .{ .load_archive = path },
+ .dynamic => .{ .load_dso = path },
+ }},
});
}