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");...@@ -860,7 +860,7 @@ pub const x86 = @import("target/x86.zig");
860860
861pub const Feature = struct {861pub const Feature = struct {
862 name: []const u8,862 name: []const u8,
863 llvm_name: []const u8,863 llvm_name: ?[]const u8,
864 description: []const u8,864 description: []const u8,
865865
866 dependencies: []*const Feature,866 dependencies: []*const Feature,
...@@ -868,7 +868,7 @@ pub const Feature = struct {...@@ -868,7 +868,7 @@ pub const Feature = struct {
868868
869pub const Cpu = struct {869pub const Cpu = struct {
870 name: []const u8,870 name: []const u8,
871 llvm_name: []const u8,871 llvm_name: ?[]const u8,
872872
873 dependencies: []*const Feature,873 dependencies: []*const Feature,
874};874};
src-self-hosted/stage1.zig+19-13
...@@ -649,12 +649,14 @@ const Stage2TargetDetails = struct {...@@ -649,12 +649,14 @@ const Stage2TargetDetails = struct {
649 try builtin_str_buffer.append(cpu.name);649 try builtin_str_buffer.append(cpu.name);
650 try builtin_str_buffer.append("};");650 try builtin_str_buffer.append("};");
651651
652 const cpu_string = cpu.llvm_name orelse "";
653
652 return Self{654 return Self{
653 .allocator = allocator,655 .allocator = allocator,
654 .target_details = .{656 .target_details = .{
655 .cpu = cpu,657 .cpu = cpu,
656 },658 },
657 .llvm_cpu_str = try toNullTerminatedStringAlloc(allocator, cpu.llvm_name),659 .llvm_cpu_str = try toNullTerminatedStringAlloc(allocator, cpu_string),
658 .llvm_features_str = null_terminated_empty_string,660 .llvm_features_str = null_terminated_empty_string,
659 .builtin_str = builtin_str_buffer.toSliceConst(),661 .builtin_str = builtin_str_buffer.toSliceConst(),
660 };662 };
...@@ -670,21 +672,25 @@ const Stage2TargetDetails = struct {...@@ -670,21 +672,25 @@ const Stage2TargetDetails = struct {
670 // First, disable all features.672 // First, disable all features.
671 // This way, we only get the ones the user requests.673 // This way, we only get the ones the user requests.
672 for (std.target.getFeaturesForArch(arch)) |feature| {674 for (std.target.getFeaturesForArch(arch)) |feature| {
673 try llvm_features_buffer.append("-");675 if (feature.llvm_name) |llvm_name| {
674 try llvm_features_buffer.append(feature.llvm_name);676 try llvm_features_buffer.append("-");
675 try llvm_features_buffer.append(",");677 try llvm_features_buffer.append(llvm_name);
678 try llvm_features_buffer.append(",");
679 }
676 }680 }
677681
678 for (features) |feature| {682 for (features) |feature| {
679 try llvm_features_buffer.append("+");683 if (feature.llvm_name) |llvm_name| {
680 try llvm_features_buffer.append(feature.llvm_name);684 try llvm_features_buffer.append("+");
681 try llvm_features_buffer.append(",");685 try llvm_features_buffer.append(llvm_name);
682 686 try llvm_features_buffer.append(",");
683 try builtin_str_buffer.append("&@import(\"std\").target.");687
684 try builtin_str_buffer.append(@tagName(arch));688 try builtin_str_buffer.append("&@import(\"std\").target.");
685 try builtin_str_buffer.append(".feature_");689 try builtin_str_buffer.append(@tagName(arch));
686 try builtin_str_buffer.append(feature.name);690 try builtin_str_buffer.append(".feature_");
687 try builtin_str_buffer.append(",");691 try builtin_str_buffer.append(feature.name);
692 try builtin_str_buffer.append(",");
693 }
688 }694 }
689695
690 try builtin_str_buffer.append("}};");696 try builtin_str_buffer.append("}};");