mirror of
https://codeberg.org/andyscott/ziglings.git
synced 2024-11-09 19:40:48 -05:00
Merge pull request #132 from bracki/fix-async-exercises
Compile async exercise with stage 1 compiler
This commit is contained in:
commit
0dd14a7dc0
1 changed files with 17 additions and 1 deletions
18
build.zig
18
build.zig
|
@ -27,6 +27,10 @@ const Exercise = struct {
|
||||||
/// Set this to true to check stdout instead.
|
/// Set this to true to check stdout instead.
|
||||||
check_stdout: bool = false,
|
check_stdout: bool = false,
|
||||||
|
|
||||||
|
/// This exercise makes use of the async feature.
|
||||||
|
/// We need to keep track of this, so we compile without the self hosted compiler
|
||||||
|
@"async": bool = false,
|
||||||
|
|
||||||
/// Returns the name of the main file with .zig stripped.
|
/// Returns the name of the main file with .zig stripped.
|
||||||
pub fn baseName(self: Exercise) []const u8 {
|
pub fn baseName(self: Exercise) []const u8 {
|
||||||
assert(std.mem.endsWith(u8, self.main_file, ".zig"));
|
assert(std.mem.endsWith(u8, self.main_file, ".zig"));
|
||||||
|
@ -241,7 +245,6 @@ const exercises = [_]Exercise{
|
||||||
.{
|
.{
|
||||||
.main_file = "043_pointers5.zig",
|
.main_file = "043_pointers5.zig",
|
||||||
.output = "Wizard (G:10 H:100 XP:20)\n Mentor: Wizard (G:10000 H:100 XP:2340)",
|
.output = "Wizard (G:10 H:100 XP:20)\n Mentor: Wizard (G:10000 H:100 XP:2340)",
|
||||||
|
|
||||||
},
|
},
|
||||||
.{
|
.{
|
||||||
.main_file = "044_quiz5.zig",
|
.main_file = "044_quiz5.zig",
|
||||||
|
@ -419,34 +422,42 @@ const exercises = [_]Exercise{
|
||||||
.main_file = "084_async.zig",
|
.main_file = "084_async.zig",
|
||||||
.output = "foo() A",
|
.output = "foo() A",
|
||||||
.hint = "Read the facts. Use the facts.",
|
.hint = "Read the facts. Use the facts.",
|
||||||
|
.@"async" = true,
|
||||||
},
|
},
|
||||||
.{
|
.{
|
||||||
.main_file = "085_async2.zig",
|
.main_file = "085_async2.zig",
|
||||||
.output = "Hello async!",
|
.output = "Hello async!",
|
||||||
|
.@"async" = true,
|
||||||
},
|
},
|
||||||
.{
|
.{
|
||||||
.main_file = "086_async3.zig",
|
.main_file = "086_async3.zig",
|
||||||
.output = "5 4 3 2 1",
|
.output = "5 4 3 2 1",
|
||||||
|
.@"async" = true,
|
||||||
},
|
},
|
||||||
.{
|
.{
|
||||||
.main_file = "087_async4.zig",
|
.main_file = "087_async4.zig",
|
||||||
.output = "1 2 3 4 5",
|
.output = "1 2 3 4 5",
|
||||||
|
.@"async" = true,
|
||||||
},
|
},
|
||||||
.{
|
.{
|
||||||
.main_file = "088_async5.zig",
|
.main_file = "088_async5.zig",
|
||||||
.output = "Example Title.",
|
.output = "Example Title.",
|
||||||
|
.@"async" = true,
|
||||||
},
|
},
|
||||||
.{
|
.{
|
||||||
.main_file = "089_async6.zig",
|
.main_file = "089_async6.zig",
|
||||||
.output = ".com: Example Title, .org: Example Title.",
|
.output = ".com: Example Title, .org: Example Title.",
|
||||||
|
.@"async" = true,
|
||||||
},
|
},
|
||||||
.{
|
.{
|
||||||
.main_file = "090_async7.zig",
|
.main_file = "090_async7.zig",
|
||||||
.output = "beef? BEEF!",
|
.output = "beef? BEEF!",
|
||||||
|
.@"async" = true,
|
||||||
},
|
},
|
||||||
.{
|
.{
|
||||||
.main_file = "091_async8.zig",
|
.main_file = "091_async8.zig",
|
||||||
.output = "ABCDEF",
|
.output = "ABCDEF",
|
||||||
|
.@"async" = true,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -699,6 +710,11 @@ const ZiglingStep = struct {
|
||||||
zig_args.append(builder.zig_exe) catch unreachable;
|
zig_args.append(builder.zig_exe) catch unreachable;
|
||||||
zig_args.append("build-exe") catch unreachable;
|
zig_args.append("build-exe") catch unreachable;
|
||||||
|
|
||||||
|
// Enable the stage 1 compiler if using the async feature
|
||||||
|
if (self.exercise.@"async") {
|
||||||
|
zig_args.append("-fstage1") catch unreachable;
|
||||||
|
}
|
||||||
|
|
||||||
if (builder.color != .auto) {
|
if (builder.color != .auto) {
|
||||||
zig_args.append("--color") catch unreachable;
|
zig_args.append("--color") catch unreachable;
|
||||||
zig_args.append(@tagName(builder.color)) catch unreachable;
|
zig_args.append(@tagName(builder.color)) catch unreachable;
|
||||||
|
|
Loading…
Reference in a new issue