authorgravatar for lgustaf1@binghamton.eduLayne Gustafson <lgustaf1@binghamton.edu> 2020-01-16 15:39:20-05:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-01-19 20:53:20-05:00
log430077df1b1a723fab281c1472773be2cc2106e8
tree5a0013cad1352cf515ce446383f7fe7db6e2133a
parent62e4cc06feb704391abdd591c048c0678dedcf5e
signaturelock-open Commit is signed but in an unrecognized format.

Allow target details with no LLVM support


2 files changed, 21 insertions(+), 15 deletions(-)

lib/std/target.zig+2-2
......@@ -860,7 +860,7 @@ pub const x86 = @import("target/x86.zig");
860860
861861pub const Feature = struct {
862862 name: []const u8,
863 llvm_name: []const u8,
863 llvm_name: ?[]const u8,
864864 description: []const u8,
865865
866866 dependencies: []*const Feature,
......@@ -868,7 +868,7 @@ pub const Feature = struct {
868868
869869pub const Cpu = struct {
870870 name: []const u8,
871 llvm_name: []const u8,
871 llvm_name: ?[]const u8,
872872
873873 dependencies: []*const Feature,
874874};
src-self-hosted/stage1.zig+19-13
......@@ -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("}};");