Skip to content

Commit c31a7af

Browse files
committed
Allow target details with no LLVM support
1 parent ee382f9 commit c31a7af

File tree

2 files changed

+21
-15
lines changed

2 files changed

+21
-15
lines changed

lib/std/target.zig

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -822,15 +822,15 @@ pub const x86 = @import("target/x86.zig");
822822

823823
pub const Feature = struct {
824824
name: []const u8,
825-
llvm_name: []const u8,
825+
llvm_name: ?[]const u8,
826826
description: []const u8,
827827

828828
dependencies: []*const Feature,
829829
};
830830

831831
pub const Cpu = struct {
832832
name: []const u8,
833-
llvm_name: []const u8,
833+
llvm_name: ?[]const u8,
834834

835835
dependencies: []*const Feature,
836836
};

src-self-hosted/stage1.zig

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -649,12 +649,14 @@ const Stage2TargetDetails = struct {
649649
try builtin_str_buffer.append(cpu.name);
650650
try builtin_str_buffer.append("};");
651651

652+
const cpu_string = cpu.llvm_name orelse "";
653+
652654
return Self{
653655
.allocator = allocator,
654656
.target_details = .{
655657
.cpu = cpu,
656658
},
657-
.llvm_cpu_str = try toNullTerminatedStringAlloc(allocator, cpu.llvm_name),
659+
.llvm_cpu_str = try toNullTerminatedStringAlloc(allocator, cpu_string),
658660
.llvm_features_str = null_terminated_empty_string,
659661
.builtin_str = builtin_str_buffer.toSliceConst(),
660662
};
@@ -670,21 +672,25 @@ const Stage2TargetDetails = struct {
670672
// First, disable all features.
671673
// This way, we only get the ones the user requests.
672674
for (std.target.getFeaturesForArch(arch)) |feature| {
673-
try llvm_features_buffer.append("-");
674-
try llvm_features_buffer.append(feature.llvm_name);
675-
try llvm_features_buffer.append(",");
675+
if (feature.llvm_name) |llvm_name| {
676+
try llvm_features_buffer.append("-");
677+
try llvm_features_buffer.append(llvm_name);
678+
try llvm_features_buffer.append(",");
679+
}
676680
}
677681

678682
for (features) |feature| {
679-
try llvm_features_buffer.append("+");
680-
try llvm_features_buffer.append(feature.llvm_name);
681-
try llvm_features_buffer.append(",");
682-
683-
try builtin_str_buffer.append("&@import(\"std\").target.");
684-
try builtin_str_buffer.append(@tagName(arch));
685-
try builtin_str_buffer.append(".feature_");
686-
try builtin_str_buffer.append(feature.name);
687-
try builtin_str_buffer.append(",");
683+
if (feature.llvm_name) |llvm_name| {
684+
try llvm_features_buffer.append("+");
685+
try llvm_features_buffer.append(llvm_name);
686+
try llvm_features_buffer.append(",");
687+
688+
try builtin_str_buffer.append("&@import(\"std\").target.");
689+
try builtin_str_buffer.append(@tagName(arch));
690+
try builtin_str_buffer.append(".feature_");
691+
try builtin_str_buffer.append(feature.name);
692+
try builtin_str_buffer.append(",");
693+
}
688694
}
689695

690696
try builtin_str_buffer.append("}};");

0 commit comments

Comments
 (0)